@edgedev/template-engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,351 @@
1
+ // TODO: ADD AS SEPERATE FILE/ FUNCTION THE QUERYING OF DATA FROM FROM EITHER THE API OR THE KV STORE... BUT IT WOUDLN'T BE CALLED SEPERATELY
2
+ // IT WOULD BE CALLED AS PART OF THE RENDERING PROCESS... IF API OR KV IS SPECIFIED IN THE META OR TEMPLATE CONFIG,
3
+ // THIS, WOULD GET THE VALUES THEN PASS THEM TO THE RENDER FUNCTION BELOW
4
+ // ALSO HAVE HELPER FUNCTIONS THIS USES AND WE CAN USE ELSEWHERE TO DO GET KV DATA AND QUERY KV DATA BASED ON OUR INDEX STRUCTURE
5
+ // ALSO TAKE A LOOK AT OUR BLOCKS WE ARE GETTING... ALSO MAKE SURE THAT THE META WE PASS IN AS A VAR IS AN OVERRIDE OF THE TEMPLATE META...
6
+ // MAKE SURE THE META IN THE TEMPLATE IS BEING USED. MAKE SURE SAME
7
+ import { ARRAY_BLOCK_RE, parseConfig } from './templateConfig';
8
+ import { hydrateValues } from './hydrateValues';
9
+ import { unoCssFromHtml } from './unoSsr';
10
+ export { hydrateValues };
11
+ export { createKvIndexClient, } from './kvIndexClient';
12
+ export { normalizeTheme, buildCssVarsBlock, } from './unoSsr';
13
+ export { unoCssFromHtml };
14
+ const PLACEHOLDER_RE = /(?<!\{)\{\{\s*({[\s\S]*?})\s*\}\}(?!\})/g;
15
+ const SUBARRAY_BLOCK_RE = /\{\{\{\s*#subarray(?::([A-Za-z_][A-Za-z0-9_-]*))?\s*(?:({[\s\S]*?}))?\s*\}\}\}([\s\S]*?)\{\{\{\s*\/subarray\s*\}\}\}/g;
16
+ const SIMPLE_BLOCK_RE = /\{\{\{\s*#(text|image|textarea|richtext)\s*({[\s\S]*?})\s*\}\}\}/g;
17
+ const IF_BLOCK_RE = /\{\{\{\s*#if\s*({[\s\S]*?})\s*\}\}\}([\s\S]*?)(?:\{\{\{\s*#else\s*\}\}\}([\s\S]*?))?\{\{\{\s*\/if\s*\}\}\}/g;
18
+ const getByPath = (obj, path) => {
19
+ if (!path || typeof path !== 'string')
20
+ return obj;
21
+ return path.split('.').reduce((acc, key) => {
22
+ if (acc && typeof acc === 'object' && key in acc)
23
+ return acc[key];
24
+ return undefined;
25
+ }, obj);
26
+ };
27
+ const escapeHtml = (value) => {
28
+ return String(value ?? '')
29
+ .replace(/&/g, '&amp;')
30
+ .replace(/</g, '&lt;')
31
+ .replace(/>/g, '&gt;')
32
+ .replace(/"/g, '&quot;');
33
+ };
34
+ const normalizeNumber = (value) => {
35
+ if (value == null || value === '')
36
+ return null;
37
+ const n = Number(value);
38
+ return Number.isFinite(n) ? n : null;
39
+ };
40
+ const formatters = {
41
+ text: v => (v == null ? '' : String(v)),
42
+ textarea: v => (v == null ? '' : String(v)),
43
+ number: (v) => {
44
+ const n = normalizeNumber(v);
45
+ return typeof n === 'number' ? n.toLocaleString('en-US') : (v == null ? '' : String(v));
46
+ },
47
+ integer: (v) => {
48
+ const n = normalizeNumber(v);
49
+ return typeof n === 'number' ? String(Math.trunc(n)) : (v == null ? '' : String(v));
50
+ },
51
+ money: (v) => {
52
+ const n = normalizeNumber(v);
53
+ return typeof n === 'number'
54
+ ? n.toLocaleString('en-US', { style: 'currency', currency: 'USD', maximumFractionDigits: 0 })
55
+ : (v == null ? '' : String(v));
56
+ },
57
+ richtext: v => (v == null ? '' : String(v)),
58
+ };
59
+ const getFieldType = (schemaMap, fieldKey) => {
60
+ if (!schemaMap || !fieldKey)
61
+ return undefined;
62
+ const baseKey = String(fieldKey).split('.')[0];
63
+ if (Array.isArray(schemaMap)) {
64
+ const hit = schemaMap.find(entry => entry?.field === baseKey);
65
+ return hit?.type ?? hit?.value;
66
+ }
67
+ return schemaMap[baseKey];
68
+ };
69
+ const applySchemaFormat = (fieldKey, value, schemaMap) => {
70
+ if (!schemaMap || !fieldKey)
71
+ return value == null ? '' : String(value);
72
+ const type = getFieldType(schemaMap, fieldKey);
73
+ const formatter = type ? formatters[type] : undefined;
74
+ return formatter ? formatter(value) : (value == null ? '' : String(value));
75
+ };
76
+ const coerceList = (input) => {
77
+ return Array.isArray(input) ? input : [];
78
+ };
79
+ const sliceWithLimit = (list, limit) => {
80
+ const n = Number(limit);
81
+ return Number.isFinite(n) && n > 0 ? list.slice(0, n) : list;
82
+ };
83
+ const getCommonList = (source) => {
84
+ for (const key of ['agents', 'items', 'children']) {
85
+ const candidate = source[key];
86
+ if (Array.isArray(candidate))
87
+ return candidate;
88
+ }
89
+ return undefined;
90
+ };
91
+ const hasOwn = (obj, key) => {
92
+ return Object.prototype.hasOwnProperty.call(obj, key);
93
+ };
94
+ const aliasRegex = (alias) => {
95
+ const esc = alias.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
96
+ return new RegExp(`\\{\\{\\s*${esc}\\.([a-zA-Z0-9_.$]+)\\s*\\}\\}`, 'g');
97
+ };
98
+ export const renderTemplate = (content, values = {}, meta = {}) => {
99
+ if (!content || typeof content !== 'string')
100
+ return '';
101
+ const renderSection = (template, data, alias, schemaCtx) => {
102
+ if (!template)
103
+ return '';
104
+ const scopedValues = typeof data === 'object' && data !== null
105
+ ? data
106
+ : {};
107
+ let expanded = template.replace(SUBARRAY_BLOCK_RE, (_match, tagAlias, json, innerTpl) => {
108
+ const cfg = parseConfig(json || '{}') ?? {};
109
+ const fieldRaw = typeof cfg.field === 'string' ? cfg.field.trim() : '';
110
+ let list;
111
+ if (fieldRaw) {
112
+ if (fieldRaw.startsWith('item.')) {
113
+ list = getByPath(scopedValues, fieldRaw.slice(5));
114
+ }
115
+ else {
116
+ list = scopedValues[fieldRaw] ?? getByPath(scopedValues, fieldRaw);
117
+ if (!Array.isArray(list))
118
+ list = getByPath(values, fieldRaw);
119
+ }
120
+ }
121
+ else if (Array.isArray(cfg.value)) {
122
+ list = cfg.value;
123
+ }
124
+ if (!Array.isArray(list)) {
125
+ const fallback = getCommonList(scopedValues);
126
+ if (Array.isArray(fallback))
127
+ list = fallback;
128
+ }
129
+ let normalized = coerceList(list);
130
+ normalized = sliceWithLimit(normalized, cfg.limit);
131
+ const childAlias = typeof cfg.as === 'string' && cfg.as.trim()
132
+ ? cfg.as.trim()
133
+ : (tagAlias?.trim() || undefined);
134
+ const childSchema = typeof cfg.schema === 'object' ? cfg.schema : schemaCtx;
135
+ return normalized.map(entry => renderSection(innerTpl, entry, childAlias, childSchema)).join('');
136
+ });
137
+ expanded = expanded.replace(ARRAY_BLOCK_RE, (_m, json, innerTpl) => {
138
+ const cfg = parseConfig(json || '{}') ?? {};
139
+ const fieldRaw = typeof cfg.field === 'string' ? cfg.field.trim() : '';
140
+ let list;
141
+ if (fieldRaw) {
142
+ if (fieldRaw.startsWith('item.')) {
143
+ list = getByPath(scopedValues, fieldRaw.slice(5));
144
+ }
145
+ else {
146
+ list = scopedValues[fieldRaw] ?? getByPath(scopedValues, fieldRaw);
147
+ if (!Array.isArray(list))
148
+ list = getByPath(values, fieldRaw);
149
+ }
150
+ }
151
+ else if (Array.isArray(cfg.value)) {
152
+ list = cfg.value;
153
+ }
154
+ if (!Array.isArray(list)) {
155
+ const fallback = getCommonList(scopedValues);
156
+ if (Array.isArray(fallback))
157
+ list = fallback;
158
+ }
159
+ let normalized = coerceList(list);
160
+ normalized = sliceWithLimit(normalized, cfg.limit);
161
+ const childAlias = typeof cfg.as === 'string' && cfg.as.trim() ? cfg.as.trim() : undefined;
162
+ const childSchema = typeof cfg.schema === 'object' ? cfg.schema : schemaCtx;
163
+ return normalized.map(entry => renderSection(innerTpl, entry, childAlias, childSchema)).join('');
164
+ });
165
+ if (alias && typeof alias === 'string') {
166
+ expanded = expanded.replace(aliasRegex(alias), (_match, path) => {
167
+ const value = getByPath(scopedValues, path);
168
+ const type = getFieldType(schemaCtx, path);
169
+ const formatted = applySchemaFormat(path, value, schemaCtx);
170
+ return type === 'richtext'
171
+ ? (formatted ?? '')
172
+ : escapeHtml(formatted);
173
+ });
174
+ expanded = expanded.replace(new RegExp(`\\{\\{\\s*${alias}\\s*\\}\\}`, 'g'), () => {
175
+ return data == null ? '' : escapeHtml(String(data));
176
+ });
177
+ }
178
+ expanded = expanded.replace(/\{\{\s*item\.([a-zA-Z0-9_.$]+)\s*\}\}/g, (_match, path) => {
179
+ const value = getByPath(scopedValues, path);
180
+ const type = getFieldType(schemaCtx, path);
181
+ const formatted = applySchemaFormat(path, value, schemaCtx);
182
+ if (type === 'richtext')
183
+ return formatted ?? '';
184
+ return formatted === '' ? '' : escapeHtml(formatted);
185
+ });
186
+ expanded = expanded.replace(/\{\{\s*item\s*\}\}/g, () => {
187
+ return data == null ? '' : escapeHtml(String(data));
188
+ });
189
+ expanded = expanded.replace(IF_BLOCK_RE, (_match, json, trueTpl, falseTpl) => {
190
+ const cfg = parseConfig(json || '{}') ?? {};
191
+ const cond = typeof cfg.cond === 'string' ? cfg.cond.trim() : '';
192
+ const comparison = cond.match(/^item\.([a-zA-Z0-9_.$]+)\s*(==|!=|>|<|>=|<=)\s*['"]?([^'"]+)['"]?$/);
193
+ let result = false;
194
+ if (comparison) {
195
+ const [, path, op, valueRaw] = comparison;
196
+ const leftValue = getByPath(scopedValues, path);
197
+ const normalize = (input) => {
198
+ const num = Number(input);
199
+ if (Number.isFinite(num) && `${input}`.trim() !== '')
200
+ return num;
201
+ return String(input ?? '');
202
+ };
203
+ const left = normalize(leftValue);
204
+ const right = normalize(valueRaw);
205
+ switch (op) {
206
+ case '==':
207
+ result = left === right;
208
+ break;
209
+ case '!=':
210
+ result = left !== right;
211
+ break;
212
+ case '>':
213
+ result = left > right;
214
+ break;
215
+ case '<':
216
+ result = left < right;
217
+ break;
218
+ case '>=':
219
+ result = left >= right;
220
+ break;
221
+ case '<=':
222
+ result = left <= right;
223
+ break;
224
+ }
225
+ }
226
+ return result
227
+ ? renderSection(trueTpl, data, alias, schemaCtx)
228
+ : renderSection(falseTpl ?? '', data, alias, schemaCtx);
229
+ });
230
+ return expanded;
231
+ };
232
+ let output = content;
233
+ output = output.replace(SIMPLE_BLOCK_RE, (_match, kind, json) => {
234
+ const cfg = parseConfig(json) ?? {};
235
+ const field = typeof cfg.field === 'string' ? cfg.field : undefined;
236
+ const fallback = cfg.value;
237
+ const raw = field && hasOwn(values, field)
238
+ ? values[field]
239
+ : fallback;
240
+ const value = raw == null ? '' : raw;
241
+ if (kind === 'text' || kind === 'textarea')
242
+ return escapeHtml(String(value));
243
+ if (kind === 'richtext')
244
+ return String(value);
245
+ return String(value);
246
+ });
247
+ output = output.replace(ARRAY_BLOCK_RE, (full, json, innerTpl) => {
248
+ const cfg = parseConfig(json) ?? {};
249
+ const field = typeof cfg.field === 'string' ? cfg.field : undefined;
250
+ if (field?.startsWith('item.'))
251
+ return full;
252
+ let list = field ? values[field] : undefined;
253
+ if (!Array.isArray(list) && Array.isArray(cfg.value))
254
+ list = cfg.value;
255
+ let normalized = coerceList(list);
256
+ normalized = sliceWithLimit(normalized, cfg.limit);
257
+ const alias = typeof cfg.as === 'string' && cfg.as.trim() ? cfg.as.trim() : undefined;
258
+ const schemaContext = field && meta[field]?.schema
259
+ ? meta[field]?.schema
260
+ : (typeof cfg.schema === 'object' ? cfg.schema : undefined);
261
+ return normalized.map(entry => renderSection(innerTpl, entry, alias, schemaContext)).join('');
262
+ });
263
+ output = output.replace(PLACEHOLDER_RE, (_match, json) => {
264
+ const cfg = parseConfig(json) ?? {};
265
+ const field = typeof cfg.field === 'string' ? cfg.field : undefined;
266
+ const type = typeof cfg.type === 'string' ? cfg.type : undefined;
267
+ const raw = field && hasOwn(values, field)
268
+ ? values[field]
269
+ : cfg.value;
270
+ const value = raw == null ? '' : raw;
271
+ if (type === 'text')
272
+ return escapeHtml(String(value));
273
+ if (type === 'richtext')
274
+ return String(value);
275
+ return String(value);
276
+ });
277
+ output = output.replace(/\{\{\s*loading\s*\}\}/g, 'loading');
278
+ output = output.replace(/\{\{\s*loaded\s*\}\}/g, 'loaded');
279
+ return output;
280
+ };
281
+ const isPlainObject = (value) => {
282
+ return !!value && typeof value === 'object' && !Array.isArray(value);
283
+ };
284
+ const coerceTemplateValues = (input) => {
285
+ return isPlainObject(input) ? input : undefined;
286
+ };
287
+ const coerceTemplateMeta = (input) => {
288
+ return isPlainObject(input) ? input : undefined;
289
+ };
290
+ const buildHydrateOptions = (input) => {
291
+ const fallbackFetch = typeof globalThis.fetch === 'function'
292
+ ? globalThis.fetch.bind(globalThis)
293
+ : undefined;
294
+ const safeUniqueKey = typeof input?.uniqueKey === 'string' ? input.uniqueKey : '';
295
+ const providedClientOptions = input?.clientOptions;
296
+ const safeClientOptions = providedClientOptions && typeof providedClientOptions === 'object'
297
+ ? {
298
+ ...providedClientOptions,
299
+ fetch: providedClientOptions.fetch ?? fallbackFetch,
300
+ }
301
+ : {
302
+ binding: null,
303
+ accountId: '',
304
+ namespaceId: '',
305
+ apiToken: '',
306
+ fetch: fallbackFetch,
307
+ };
308
+ if (!safeClientOptions.fetch)
309
+ throw new Error('pageRender requires a fetch implementation (globalThis.fetch or clientOptions.fetch)');
310
+ return {
311
+ uniqueKey: safeUniqueKey,
312
+ clientOptions: safeClientOptions,
313
+ };
314
+ };
315
+ export const pageRender = async (blocks, theme, extraHtml = '', hydrateOptions) => {
316
+ const renderedBlocks = [];
317
+ const htmlFragments = [];
318
+ const hydrationConfig = buildHydrateOptions(hydrateOptions);
319
+ for (const block of blocks) {
320
+ if (!block?.content) {
321
+ const blockName = typeof block?.name === 'string' ? block.name : undefined;
322
+ renderedBlocks.push({ name: blockName, html: '' });
323
+ continue;
324
+ }
325
+ const meta = coerceTemplateMeta(block.meta);
326
+ const initialValues = coerceTemplateValues(block.values);
327
+ const resolvedValues = await hydrateValues({
328
+ content: block.content,
329
+ values: initialValues,
330
+ meta,
331
+ uniqueKey: hydrationConfig.uniqueKey,
332
+ clientOptions: hydrationConfig.clientOptions,
333
+ });
334
+ const html = renderTemplate(block.content, resolvedValues ?? undefined, meta);
335
+ const blockName = typeof block.name === 'string' ? block.name : undefined;
336
+ renderedBlocks.push({ name: blockName, html });
337
+ if (html)
338
+ htmlFragments.push(html);
339
+ }
340
+ if (extraHtml && typeof extraHtml === 'string')
341
+ htmlFragments.push(extraHtml);
342
+ const combinedHtml = htmlFragments.join('\n');
343
+ const safeTheme = theme && typeof theme === 'object' ? theme : {};
344
+ const { css } = await unoCssFromHtml(combinedHtml, safeTheme);
345
+ return {
346
+ blocks: renderedBlocks,
347
+ css,
348
+ };
349
+ };
350
+ export default renderTemplate;
351
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8IAA8I;AAC9I,oHAAoH;AACpH,yEAAyE;AACzE,iIAAiI;AACjI,2IAA2I;AAC3I,oEAAoE;AAEpE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAGzC,OAAO,EAAE,aAAa,EAAE,CAAA;AAexB,OAAO,EACL,mBAAmB,GAMpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,cAAc,EAAE,CAAA;AAIzB,MAAM,cAAc,GAAG,0CAA0C,CAAA;AACjE,MAAM,iBAAiB,GAAG,uHAAuH,CAAA;AACjJ,MAAM,eAAe,GAAG,mEAAmE,CAAA;AAC3F,MAAM,WAAW,GAAG,6GAA6G,CAAA;AAEjI,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,IAAY,EAAW,EAAE;IACxD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QACnC,OAAO,GAAG,CAAA;IACZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClD,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAK,GAA+B;YAC3E,OAAQ,GAA+B,CAAC,GAAG,CAAC,CAAA;QAC9C,OAAO,SAAS,CAAA;IAClB,CAAC,EAAE,GAAG,CAAC,CAAA;AACT,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAU,EAAE;IAC9C,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,KAAc,EAAiB,EAAE;IACxD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAC/B,OAAO,IAAI,CAAA;IACb,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,UAAU,GAA+C;IAC7D,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;QACZ,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACzF,CAAC;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACb,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACrF,CAAC;IACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;QACX,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ;YAC1B,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;YAC7F,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC;IACD,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,SAAgC,EAAE,QAA4B,EAAsB,EAAE;IAC1G,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;QACzB,OAAO,SAAS,CAAA;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAE9C,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAA;QAC7D,OAAO,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,CAAA;IAChC,CAAC;IAED,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,QAA4B,EAAE,KAAc,EAAE,SAAgC,EAAU,EAAE;IACnH,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;QACzB,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3C,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACrD,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,KAAc,EAAa,EAAE;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,IAAe,EAAE,KAAc,EAAa,EAAE;IACpE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,MAA+B,EAAW,EAAE;IACjE,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAC1B,OAAO,SAAS,CAAA;IACpB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,GAA4B,EAAE,GAAW,EAAW,EAAE;IACpE,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;IAC1D,OAAO,IAAI,MAAM,CAAC,aAAa,GAAG,gCAAgC,EAAE,GAAG,CAAC,CAAA;AAC1E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAe,EACf,SAAyB,EAAE,EAC3B,OAAqB,EAAE,EACf,EAAE;IACV,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QACzC,OAAO,EAAE,CAAA;IACX,MAAM,aAAa,GAAG,CACpB,QAAgB,EAChB,IAAa,EACb,KAAc,EACd,SAAqB,EACb,EAAE;QACV,IAAI,CAAC,QAAQ;YACX,OAAO,EAAE,CAAA;QAEX,MAAM,YAAY,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YAC5D,CAAC,CAAE,IAAgC;YACnC,CAAC,CAAC,EAAE,CAAA;QAEN,IAAI,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACtF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;YAC3C,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACtE,IAAI,IAAa,CAAA;YAEjB,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjC,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBACnD,CAAC;qBACI,CAAC;oBACJ,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;oBAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBACtB,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;gBACtC,CAAC;YACH,CAAC;iBACI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAA;YAClB,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;gBAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACzB,IAAI,GAAG,QAAQ,CAAA;YACnB,CAAC;YAED,IAAI,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YACjC,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;YAElD,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;gBAC5D,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;gBACf,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAA;YAEnC,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,MAAoB,CAAC,CAAC,CAAC,SAAS,CAAA;YAC1F,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClG,CAAC,CAAC,CAAA;QAEF,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACjE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;YAC3C,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACtE,IAAI,IAAa,CAAA;YAEjB,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjC,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBACnD,CAAC;qBACI,CAAC;oBACJ,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;oBAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBACtB,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;gBACtC,CAAC;YACH,CAAC;iBACI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAA;YAClB,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;gBAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACzB,IAAI,GAAG,QAAQ,CAAA;YACnB,CAAC;YAED,IAAI,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YACjC,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;YAElD,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;YAC1F,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,MAAoB,CAAC,CAAC,CAAC,SAAS,CAAA;YAC1F,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClG,CAAC,CAAC,CAAA;QAEF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAC1C,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;gBAC3D,OAAO,IAAI,KAAK,UAAU;oBACxB,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;oBACnB,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,aAAa,KAAK,YAAY,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE;gBAChF,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACrD,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,wCAAwC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACrF,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;YAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC1C,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;YAC3D,IAAI,IAAI,KAAK,UAAU;gBACrB,OAAO,SAAS,IAAI,EAAE,CAAA;YACxB,OAAO,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;QAEF,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACtD,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;YAC3E,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;YAC3C,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAA;YACnG,IAAI,MAAM,GAAG,KAAK,CAAA;YAElB,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAA;gBACzC,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBAC/C,MAAM,SAAS,GAAG,CAAC,KAAc,EAAmB,EAAE;oBACpD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;wBAClD,OAAO,GAAG,CAAA;oBACZ,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;gBAC5B,CAAC,CAAA;gBAED,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;gBACjC,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;gBAEjC,QAAQ,EAAE,EAAE,CAAC;oBACX,KAAK,IAAI;wBACP,MAAM,GAAG,IAAI,KAAK,KAAK,CAAA;wBACvB,MAAK;oBACP,KAAK,IAAI;wBACP,MAAM,GAAG,IAAI,KAAK,KAAK,CAAA;wBACvB,MAAK;oBACP,KAAK,GAAG;wBACN,MAAM,GAAG,IAAI,GAAG,KAAK,CAAA;wBACrB,MAAK;oBACP,KAAK,GAAG;wBACN,MAAM,GAAG,IAAI,GAAG,KAAK,CAAA;wBACrB,MAAK;oBACP,KAAK,IAAI;wBACP,MAAM,GAAG,IAAI,IAAI,KAAK,CAAA;wBACtB,MAAK;oBACP,KAAK,IAAI;wBACP,MAAM,GAAG,IAAI,IAAI,KAAK,CAAA;wBACtB,MAAK;gBACT,CAAC;YACH,CAAC;YAED,OAAO,MAAM;gBACX,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;gBAChD,CAAC,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;IAED,IAAI,MAAM,GAAG,OAAO,CAAA;IAEpB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC9D,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAA;QAC1B,MAAM,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACf,CAAC,CAAC,QAAQ,CAAA;QACZ,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QACpC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU;YACxC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAClC,IAAI,IAAI,KAAK,UAAU;YACrB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC/D,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAEnE,IAAI,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;YAC5B,OAAO,IAAI,CAAA;QAEb,IAAI,IAAI,GAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAClD,IAAI,GAAG,GAAG,CAAC,KAAK,CAAA;QAElB,IAAI,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QACjC,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAElD,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACrF,MAAM,aAAa,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM;YAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM;YACrB,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,MAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAE5E,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/F,CAAC,CAAC,CAAA;IAEF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACvD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QACnE,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,MAAM,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACf,CAAC,CAAC,GAAG,CAAC,KAAK,CAAA;QACb,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QAEpC,IAAI,IAAI,KAAK,MAAM;YACjB,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAClC,IAAI,IAAI,KAAK,UAAU;YACrB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA;IAC5D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAA;IAE1D,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAqBD,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE;IACzE,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,KAAwC,EAA8B,EAAE;IACpG,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAwB,CAAC,CAAC,CAAC,SAAS,CAAA;AACrE,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAsC,EAA4B,EAAE;IAC9F,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAsB,CAAC,CAAC,CAAC,SAAS,CAAA;AACnE,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAC1B,KAAuC,EACb,EAAE;IAC5B,MAAM,aAAa,GAAG,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU;QAC1D,CAAC,CAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAoD;QACvF,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,aAAa,GAAG,OAAO,KAAK,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IACjF,MAAM,qBAAqB,GAAG,KAAK,EAAE,aAAa,CAAA;IAElD,MAAM,iBAAiB,GAAG,qBAAqB,IAAI,OAAO,qBAAqB,KAAK,QAAQ;QAC1F,CAAC,CAAC;YACE,GAAG,qBAAqB;YACxB,KAAK,EAAE,qBAAqB,CAAC,KAAK,IAAI,aAAa;SACpD;QACH,CAAC,CAAC;YACE,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,aAAa;SACrB,CAAA;IAEL,IAAI,CAAC,iBAAiB,CAAC,KAAK;QAC1B,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAA;IAEzG,OAAO;QACL,SAAS,EAAE,aAAa;QACxB,aAAa,EAAE,iBAAiB;KACjC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,MAAyB,EACzB,KAAiD,EACjD,YAAuC,EAAE,EACzC,cAAgD,EACrB,EAAE;IAC7B,MAAM,cAAc,GAA4B,EAAE,CAAA;IAClD,MAAM,aAAa,GAAa,EAAE,CAAA;IAClC,MAAM,eAAe,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAA;IAE3D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;YAC1E,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;YAClD,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACxD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC;YACzC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,aAAa;YACrB,IAAI;YACJ,SAAS,EAAE,eAAe,CAAC,SAAS;YACpC,aAAa,EAAE,eAAe,CAAC,aAAa;SAC7C,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,cAAc,CACzB,KAAK,CAAC,OAAO,EACb,cAAc,IAAI,SAAS,EAC3B,IAAI,CACL,CAAA;QAED,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QACzE,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,IAAI,IAAI;YACN,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;QAC5C,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAE/B,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IACjE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IAE7D,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,GAAG;KACJ,CAAA;AACH,CAAC,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,49 @@
1
+ type FetchInput = string | URL;
2
+ interface FetchRequestInit {
3
+ headers?: Record<string, string>;
4
+ }
5
+ interface FetchResponse {
6
+ ok: boolean;
7
+ status: number;
8
+ json(): Promise<unknown>;
9
+ text(): Promise<string>;
10
+ }
11
+ type FetchLike = (input: FetchInput, init?: FetchRequestInit) => Promise<FetchResponse>;
12
+ export interface KVNamespaceLike {
13
+ get(key: string): Promise<string | null>;
14
+ list(options?: {
15
+ prefix?: string;
16
+ limit?: number;
17
+ cursor?: string;
18
+ }): Promise<{
19
+ keys: Array<{
20
+ name: string;
21
+ metadata?: unknown;
22
+ expiration?: number;
23
+ }>;
24
+ cursor?: string | null;
25
+ list_complete?: boolean;
26
+ }>;
27
+ }
28
+ export interface KvIndexClientOptions {
29
+ binding?: KVNamespaceLike | null;
30
+ accountId: string;
31
+ namespaceId: string;
32
+ apiToken: string;
33
+ fetch?: FetchLike;
34
+ maxKeys?: number;
35
+ }
36
+ export interface KvIndexQueryParams {
37
+ baseKey: string;
38
+ uniqueKey?: string;
39
+ searchKey?: string;
40
+ searchValue?: string | string[];
41
+ }
42
+ export type KvIndexRecord = Record<string, unknown>;
43
+ export interface KvIndexClient {
44
+ queryIndex(params: KvIndexQueryParams): Promise<KvIndexRecord[]>;
45
+ getKey(key: string): Promise<KvIndexRecord | null>;
46
+ }
47
+ export declare const createKvIndexClient: (options: KvIndexClientOptions) => KvIndexClient;
48
+ export {};
49
+ //# sourceMappingURL=kvIndexClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvIndexClient.d.ts","sourceRoot":"","sources":["../src/kvIndexClient.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG,MAAM,GAAG,GAAG,CAAA;AAE9B,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAEvF,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC5E,IAAI,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACtE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,CAAC,CAAA;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAChC;AAiDD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEnD,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAChE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;CACnD;AAOD,eAAO,MAAM,mBAAmB,GAAI,SAAS,oBAAoB,KAAG,aAkRnE,CAAA"}