@arkadia/data 0.1.9 → 0.1.11
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/README.md +54 -10
- package/dist/core/Decoder.d.ts +6 -1
- package/dist/core/Decoder.d.ts.map +1 -1
- package/dist/core/Decoder.js +51 -31
- package/dist/core/Decoder.js.map +1 -1
- package/dist/core/Encoder.d.ts +5 -2
- package/dist/core/Encoder.d.ts.map +1 -1
- package/dist/core/Encoder.js +114 -53
- package/dist/core/Encoder.js.map +1 -1
- package/dist/models/Meta.d.ts +2 -2
- package/dist/models/Meta.js +3 -3
- package/dist/models/Schema.js +1 -1
- package/package.json +1 -1
- package/src/core/Decoder.ts +58 -30
- package/src/core/Encoder.ts +120 -60
- package/src/models/Meta.ts +3 -3
- package/src/models/Schema.ts +1 -1
- package/tests/00.meta.test.ts +2 -2
- package/tests/00.primitive.test.ts +38 -0
- package/tests/00.schema.test.ts +2 -2
- package/tests/04.list.test.ts +25 -2
- package/tests/06.meta.test.ts +57 -251
- package/tests/07.prompt-output.test.ts +117 -0
package/dist/core/Encoder.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Encoder = void 0;
|
|
4
|
+
const Node_1 = require("../models/Node");
|
|
4
5
|
class Colors {
|
|
5
6
|
}
|
|
6
7
|
Colors.RESET = '\x1b[0m';
|
|
@@ -11,7 +12,7 @@ Colors.NULL = '\x1b[90m'; // gray
|
|
|
11
12
|
Colors.TYPE = '\x1b[96m'; // cyan
|
|
12
13
|
Colors.KEY = '\x1b[93m'; // yellow
|
|
13
14
|
Colors.SCHEMA = '\x1b[91m'; // red (for @TypeName)
|
|
14
|
-
Colors.TAG = '\x1b[
|
|
15
|
+
Colors.TAG = '\x1b[35m';
|
|
15
16
|
Colors.ATTR = '\x1b[93m';
|
|
16
17
|
class Encoder {
|
|
17
18
|
constructor(config) {
|
|
@@ -66,7 +67,8 @@ class Encoder {
|
|
|
66
67
|
const pad = this.config.compact ? '' : ' ';
|
|
67
68
|
// Avoid printing internal/default type names
|
|
68
69
|
if (schema.typeName && schema.isRecord && !schema.isAny) {
|
|
69
|
-
|
|
70
|
+
const escapedName = this.escapeIdent(schema.typeName);
|
|
71
|
+
prefix = this.c(`@${escapedName}`, Colors.SCHEMA);
|
|
70
72
|
}
|
|
71
73
|
// Przygotowanie meta (ale jeszcze nie użycie, bo w liście może się zmienić)
|
|
72
74
|
// W Pythonie: meta = self._meta_wrapped(schema) if include_meta else ""
|
|
@@ -76,7 +78,8 @@ class Encoder {
|
|
|
76
78
|
const metaPrefix = includeMeta ? this.metaInline(schema) : '';
|
|
77
79
|
// Python: return ind + ((meta_prefix + " ") if meta_prefix else "") + self._c(...)
|
|
78
80
|
const metaStr = metaPrefix ? metaPrefix + ' ' : '';
|
|
79
|
-
|
|
81
|
+
const escapedType = this.escapeIdent(schema.typeName);
|
|
82
|
+
return ind + metaStr + this.c(escapedType, Colors.TYPE);
|
|
80
83
|
}
|
|
81
84
|
// --- LIST ---
|
|
82
85
|
// --- DEBUG ---
|
|
@@ -129,7 +132,7 @@ class Encoder {
|
|
|
129
132
|
str += metaPrefix + ' ';
|
|
130
133
|
}
|
|
131
134
|
// 3. Field Name
|
|
132
|
-
str += this.c(field.name, Colors.KEY);
|
|
135
|
+
str += this.c(this.escapeIdent(field.name), Colors.KEY);
|
|
133
136
|
// 4. Field Type
|
|
134
137
|
const fieldType = this.encodeSchema(field, 0, false).trim();
|
|
135
138
|
// Logic to decide when to print the type signature
|
|
@@ -162,13 +165,13 @@ class Encoder {
|
|
|
162
165
|
}
|
|
163
166
|
getTypeLabel(schema) {
|
|
164
167
|
if (schema.isPrimitive)
|
|
165
|
-
return schema.typeName || 'any';
|
|
168
|
+
return this.escapeIdent(schema.typeName || 'any');
|
|
166
169
|
if (schema.isList) {
|
|
167
170
|
const inner = schema.element ? this.getTypeLabel(schema.element) : 'any';
|
|
168
171
|
return `[${inner}]`;
|
|
169
172
|
}
|
|
170
173
|
if (schema.isRecord && schema.typeName && schema.typeName !== 'any') {
|
|
171
|
-
return schema.typeName;
|
|
174
|
+
return this.escapeIdent(schema.typeName);
|
|
172
175
|
}
|
|
173
176
|
return 'any';
|
|
174
177
|
}
|
|
@@ -196,14 +199,20 @@ class Encoder {
|
|
|
196
199
|
}
|
|
197
200
|
// 2. Modifiers
|
|
198
201
|
if (obj.required) {
|
|
199
|
-
items.push(this.c('
|
|
202
|
+
items.push(this.c('$required', Colors.TAG));
|
|
200
203
|
}
|
|
201
204
|
// 3. Attributes & Tags
|
|
202
205
|
if (this.config.includeMeta) {
|
|
203
206
|
const currentAttr = obj.attr || {};
|
|
204
207
|
for (const [k, v] of Object.entries(currentAttr)) {
|
|
205
|
-
const
|
|
206
|
-
|
|
208
|
+
const escapedKey = this.escapeIdent(k);
|
|
209
|
+
if (typeof v === 'boolean' && v === true) {
|
|
210
|
+
items.push(this.c(`$${escapedKey}`, Colors.ATTR));
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
const valStr = this.primitiveValue(v);
|
|
214
|
+
items.push(this.c(`$${escapedKey}=`, Colors.ATTR) + valStr);
|
|
215
|
+
}
|
|
207
216
|
}
|
|
208
217
|
const currentTags = obj.tags || [];
|
|
209
218
|
for (const t of currentTags) {
|
|
@@ -215,7 +224,7 @@ class Encoder {
|
|
|
215
224
|
}
|
|
216
225
|
const content = items.join(' ');
|
|
217
226
|
if (wrapped) {
|
|
218
|
-
const wrappedContent = this.c(
|
|
227
|
+
const wrappedContent = this.c(`//${pad}`, Colors.SCHEMA) + content + this.c(`${pad}//`, Colors.SCHEMA);
|
|
219
228
|
return this.config.compact ? wrappedContent + ' ' : ' ' + wrappedContent + ' ';
|
|
220
229
|
}
|
|
221
230
|
// Inline: /* c1 */ !req $a=1
|
|
@@ -265,45 +274,65 @@ class Encoder {
|
|
|
265
274
|
// Wrap in quotes and colorize
|
|
266
275
|
return this.c(`"${content}"`, Colors.STRING);
|
|
267
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Wraps identifier in backticks if it contains spaces or special characters.
|
|
279
|
+
* Regex: [a-zA-Z_][a-zA-Z0-9_]*
|
|
280
|
+
*/
|
|
281
|
+
escapeIdent(name) {
|
|
282
|
+
if (!name)
|
|
283
|
+
return '';
|
|
284
|
+
// Standard identifier pattern
|
|
285
|
+
const pattern = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
286
|
+
if (pattern.test(name)) {
|
|
287
|
+
return name;
|
|
288
|
+
}
|
|
289
|
+
// If it doesn't match, wrap it in backticks
|
|
290
|
+
return `\`${name}\``;
|
|
291
|
+
}
|
|
268
292
|
// -------------------------------------------------------------
|
|
269
293
|
// LIST
|
|
270
294
|
// -------------------------------------------------------------
|
|
271
|
-
listHeader(node) {
|
|
272
|
-
let header = '[';
|
|
273
|
-
if (this.config.includeArraySize) {
|
|
274
|
-
const size = node.elements.length;
|
|
275
|
-
header += `${this.c('$size', Colors.KEY)}=${this.c(String(size), Colors.NUMBER)}${this.c(':', Colors.TYPE)}`;
|
|
276
|
-
}
|
|
277
|
-
return header;
|
|
278
|
-
}
|
|
279
|
-
joinLines(items, sep) {
|
|
280
|
-
if (this.config.compact)
|
|
281
|
-
return items.join(sep);
|
|
282
|
-
if (sep === '\n')
|
|
283
|
-
return items.join(sep);
|
|
284
|
-
return items.join(`${sep} `);
|
|
285
|
-
}
|
|
286
295
|
encodeList(node, indent, includeSchema = false) {
|
|
287
296
|
const ind = ' '.repeat(indent);
|
|
288
297
|
const childIndent = indent + this.config.indent;
|
|
298
|
+
const isPrompt = this.config.promptOutput;
|
|
299
|
+
if (this.config.includeArraySize) {
|
|
300
|
+
node.attr['size'] = node.elements.length;
|
|
301
|
+
}
|
|
289
302
|
const innerMeta = this.metaWrapped(node);
|
|
290
|
-
// 1. Generate Header Schema (
|
|
303
|
+
// 1. Generate Header Schema (Standard only)
|
|
291
304
|
let schemaHeader = '';
|
|
292
|
-
if (includeSchema && node.schema && node.schema.element) {
|
|
305
|
+
if (!isPrompt && includeSchema && node.schema && node.schema.element) {
|
|
293
306
|
schemaHeader = this.encodeSchema(node.schema.element, 0).trim();
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
schemaHeader = schemaHeader + ' ';
|
|
307
|
+
if (schemaHeader)
|
|
308
|
+
schemaHeader += ' ';
|
|
297
309
|
}
|
|
298
310
|
const expectedChild = node.schema ? node.schema.element : null;
|
|
311
|
+
// --- PROMPT MODE (Full Structural Expansion) ---
|
|
312
|
+
if (isPrompt) {
|
|
313
|
+
let res = ind + '[\n';
|
|
314
|
+
if (innerMeta) {
|
|
315
|
+
res += ' '.repeat(childIndent) + innerMeta.trim() + '\n';
|
|
316
|
+
}
|
|
317
|
+
if (node.schema && node.schema.element) {
|
|
318
|
+
// Force recursion into the element's structure using a Dummy Node
|
|
319
|
+
const dummy = new Node_1.Node(node.schema.element, { value: null });
|
|
320
|
+
// We trim() the blueprint because we manually handle child indentation
|
|
321
|
+
const blueprint = this.encode(dummy, childIndent, false).trim();
|
|
322
|
+
res += ' '.repeat(childIndent) + blueprint + ',\n';
|
|
323
|
+
res += ' '.repeat(childIndent) + '... /* repeat pattern for additional items */\n';
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
res += ' '.repeat(childIndent) + '/* any content */\n';
|
|
327
|
+
}
|
|
328
|
+
res += ind + ']';
|
|
329
|
+
return res;
|
|
330
|
+
}
|
|
299
331
|
// --- COMPACT MODE ---
|
|
300
332
|
if (this.config.compact) {
|
|
301
333
|
const items = [];
|
|
302
334
|
for (const el of node.elements) {
|
|
303
|
-
// IMPORTANT: We disable schema inclusion for elements to avoid duplication <...>
|
|
304
|
-
// unless types mismatch drastically.
|
|
305
335
|
let val = this.encode(el, 0, false).trim();
|
|
306
|
-
// Check compatibility & Inject override if needed
|
|
307
336
|
if (!this.schemasAreCompatible(el.schema, expectedChild)) {
|
|
308
337
|
const label = el.schema ? this.getTypeLabel(el.schema) : 'any';
|
|
309
338
|
const tag = this.c(`<${label}>`, Colors.SCHEMA);
|
|
@@ -314,27 +343,28 @@ class Encoder {
|
|
|
314
343
|
return ind + '[' + innerMeta + schemaHeader + items.join(',') + ']';
|
|
315
344
|
}
|
|
316
345
|
// --- PRETTY MODE ---
|
|
317
|
-
|
|
318
|
-
const out = [ind + header];
|
|
346
|
+
let res = ind + '[\n';
|
|
319
347
|
if (innerMeta) {
|
|
320
|
-
|
|
348
|
+
res += ' '.repeat(childIndent) + innerMeta.trim() + '\n';
|
|
321
349
|
}
|
|
322
350
|
if (schemaHeader) {
|
|
323
|
-
|
|
351
|
+
res += ' '.repeat(childIndent) + schemaHeader.trim() + '\n';
|
|
324
352
|
}
|
|
353
|
+
const elementLines = [];
|
|
325
354
|
for (const el of node.elements) {
|
|
326
|
-
|
|
327
|
-
let val = this.encode(el, childIndent - this.config.startIndent, false).trim();
|
|
328
|
-
// Check compatibility & Inject override if needed
|
|
355
|
+
let val = this.encode(el, 0, false).trim();
|
|
329
356
|
if (!this.schemasAreCompatible(el.schema, expectedChild)) {
|
|
330
357
|
const label = el.schema ? this.getTypeLabel(el.schema) : 'any';
|
|
331
358
|
const tag = this.c(`<${label}>`, Colors.SCHEMA);
|
|
332
359
|
val = `${tag} ${val}`;
|
|
333
360
|
}
|
|
334
|
-
|
|
361
|
+
elementLines.push(' '.repeat(childIndent) + val);
|
|
335
362
|
}
|
|
336
|
-
|
|
337
|
-
|
|
363
|
+
if (elementLines.length > 0) {
|
|
364
|
+
res += elementLines.join(',\n') + '\n';
|
|
365
|
+
}
|
|
366
|
+
res += ind + ']';
|
|
367
|
+
return res;
|
|
338
368
|
}
|
|
339
369
|
// -------------------------------------------------------------
|
|
340
370
|
// RECORD
|
|
@@ -342,24 +372,55 @@ class Encoder {
|
|
|
342
372
|
encodeRecord(node, indent) {
|
|
343
373
|
const innerMeta = this.metaWrapped(node);
|
|
344
374
|
const parts = [];
|
|
345
|
-
|
|
375
|
+
const isPrompt = this.config.promptOutput;
|
|
376
|
+
const baseInd = ' '.repeat(indent);
|
|
377
|
+
const childInd = ' '.repeat(indent + this.config.indent);
|
|
378
|
+
if (node.schema && node.schema.fields && node.schema.fields.length > 0) {
|
|
346
379
|
for (const fieldDef of node.schema.fields) {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
380
|
+
if (isPrompt) {
|
|
381
|
+
// --- PROMPT MODE: Type Label or Structural Expansion ---
|
|
382
|
+
const fieldName = this.escapeIdent(fieldDef.name);
|
|
383
|
+
let fieldValStructure;
|
|
384
|
+
if (fieldDef.isPrimitive) {
|
|
385
|
+
// For primitives, use the type name (e.g., "number")
|
|
386
|
+
fieldValStructure = this.c(this.getTypeLabel(fieldDef), Colors.TYPE);
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
// For structures (Records/Lists), recurse to get { } or [ ]
|
|
390
|
+
const dummyField = new Node_1.Node(fieldDef, { value: null });
|
|
391
|
+
fieldValStructure = this.encode(dummyField, indent + this.config.indent, false).trim();
|
|
392
|
+
}
|
|
393
|
+
let line = `${this.c(fieldName, Colors.KEY)}: ${fieldValStructure}`;
|
|
394
|
+
if (fieldDef.comments && fieldDef.comments.length > 0) {
|
|
395
|
+
const comment = fieldDef.comments[0].trim();
|
|
396
|
+
line += ` ${this.c(`/* ${comment} */`, Colors.NULL)}`;
|
|
397
|
+
}
|
|
398
|
+
parts.push(line);
|
|
352
399
|
}
|
|
353
400
|
else {
|
|
354
|
-
|
|
401
|
+
// --- STANDARD MODE (Data values) ---
|
|
402
|
+
const fieldNode = node.fields[fieldDef.name];
|
|
403
|
+
if (fieldNode) {
|
|
404
|
+
let val = this.encode(fieldNode, 0, false).trim();
|
|
405
|
+
val = this.applyTypeTag(val, fieldNode.schema, fieldDef);
|
|
406
|
+
parts.push(val);
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
parts.push(this.c('null', Colors.NULL));
|
|
410
|
+
}
|
|
355
411
|
}
|
|
356
412
|
}
|
|
357
|
-
const sep = this.config.compact ? ',' : ', ';
|
|
358
|
-
return '(' + innerMeta + parts.join(sep) + ')';
|
|
359
413
|
}
|
|
360
414
|
else {
|
|
361
|
-
|
|
415
|
+
parts.push(this.c('null', Colors.NULL));
|
|
416
|
+
}
|
|
417
|
+
if (isPrompt) {
|
|
418
|
+
const body = parts.join(',\n' + childInd);
|
|
419
|
+
const metaStr = innerMeta ? childInd + innerMeta.trim() + '\n' : '';
|
|
420
|
+
return '{\n' + metaStr + childInd + body + '\n' + baseInd + '}';
|
|
362
421
|
}
|
|
422
|
+
const sep = this.config.compact ? ',' : ', ';
|
|
423
|
+
return '(' + innerMeta + parts.join(sep) + ')';
|
|
363
424
|
}
|
|
364
425
|
}
|
|
365
426
|
exports.Encoder = Encoder;
|
package/dist/core/Encoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Encoder.js","sourceRoot":"","sources":["../../src/core/Encoder.ts"],"names":[],"mappings":";;;AAKA,MAAM,MAAM;;AACH,YAAK,GAAG,SAAS,CAAC;AAClB,aAAM,GAAG,UAAU,CAAC,CAAC,QAAQ;AAC7B,aAAM,GAAG,UAAU,CAAC,CAAC,OAAO;AAC5B,WAAI,GAAG,UAAU,CAAC,CAAC,UAAU;AAC7B,WAAI,GAAG,UAAU,CAAC,CAAC,OAAO;AAC1B,WAAI,GAAG,UAAU,CAAC,CAAC,OAAO;AAC1B,UAAG,GAAG,UAAU,CAAC,CAAC,SAAS;AAC3B,aAAM,GAAG,UAAU,CAAC,CAAC,sBAAsB;AAC3C,UAAG,GAAG,UAAU,CAAC;AACjB,WAAI,GAAG,UAAU,CAAC;AAG3B,MAAa,OAAO;IAGlB,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,gEAAgE;IAChE,eAAe;IACf,gEAAgE;IAEzD,MAAM,CAAC,IAAU,EAAE,cAAsB,CAAC,EAAE,gBAAyB,IAAI;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;QACzD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,iDAAiD;QACjD,MAAM,kBAAkB,GAAG,aAAa,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAE9F,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAO,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAE9D,6EAA6E;YAC7E,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC;YACrB,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxB,YAAY,GAAG,IAAI,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,uCAAuC;oBACvC,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,yCAAyC;QACzC,OAAO,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC;IAClC,CAAC;IAEM,YAAY,CAAC,MAAc,EAAE,MAAc,EAAE,cAAuB,IAAI;QAC7E,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAE3C,6CAA6C;QAC7C,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,4EAA4E;QAC5E,wEAAwE;QACxE,0FAA0F;QAE1F,oBAAoB;QACpB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,mFAAmF;YACnF,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;QAED,eAAe;QACf,gBAAgB;QAChB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7B,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7D,4CAA4C;YAC5C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC9C,0DAA0D;gBAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAE5D,2DAA2D;gBAC3D,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YACzF,CAAC;YAED,uBAAuB;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAClE,OAAO,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QACjE,CAAC;QAED,iBAAiB;QACjB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,kDAAkD;YAClD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE/D,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,wEAAwE;gBACxE,+EAA+E;gBAC/E,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC3C,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;YACnE,CAAC;YAED,gBAAgB;YAChB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAEpD,2DAA2D;YAC3D,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,WAAW,GAAG,GAAG,GAAG,GAAG,CAAC;QACzE,CAAC;QAED,iBAAiB;QACjB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC;IAC9B,CAAC;IAED,qDAAqD;IAC7C,kBAAkB,CAAC,MAAc;QACvC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAE3C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,GAAG,GAAG,EAAE,CAAC;YAEb,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,UAAU,EAAE,CAAC;gBACf,GAAG,IAAI,UAAU,GAAG,GAAG,CAAC;YAC1B,CAAC;YAED,gBAAgB;YAChB,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAEtC,gBAAgB;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAE5D,mDAAmD;YACnD,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;YACvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC;YAEhF,IAAI,SAAS,IAAI,CAAC,WAAW,IAAI,mBAAmB,CAAC,EAAE,CAAC;gBACtD,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,gEAAgE;IAChE,qCAAqC;IACrC,gEAAgE;IAExD,oBAAoB,CAAC,UAAyB,EAAE,cAA6B;QACnF,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACzD,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,qBAAqB;QACrB,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAE1D,0DAA0D;QAC1D,IAAI,UAAU,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;YACzD,OAAO,UAAU,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,MAAM,CAAC,WAAW;YAAE,OAAO,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACzE,OAAO,IAAI,KAAK,GAAG,CAAC;QACtB,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YACpE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,YAAY,CAClB,MAAc,EACd,UAAyB,EACzB,cAA6B;QAE7B,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,qCAAqC;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,gEAAgE;IAChE,oCAAoC;IACpC,gEAAgE;IAExD,eAAe,CAAC,GAAS,EAAE,UAAmB,KAAK;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAE3C,cAAc;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,OAAO,GAAG,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAK,GAAc,CAAC,QAAQ,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACnC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACnC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,cAAc,GAClB,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,cAAc,GAAG,GAAG,CAAC;QACjF,CAAC;QAED,6BAA6B;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,UAAU,CAAC,GAAS;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEO,WAAW,CAAC,GAAS;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,gEAAgE;IAChE,UAAU;IACV,gEAAgE;IACxD,CAAC,CAAC,IAAY,EAAE,KAAa;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAEO,mBAAmB,CAAC,IAAU;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAkB,CAAC,CAAC;QACzD,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAClD,CAAC;IAEO,cAAc,CAAC,CAAY;QACjC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAEO,YAAY,CAAC,CAAS;QAC5B,+CAA+C;QAC/C,oEAAoE;QACpE,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEvC,mBAAmB;QACnB,iBAAiB;QACjB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEvC,0DAA0D;QAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtF,CAAC;QAED,8BAA8B;QAC9B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,gEAAgE;IAChE,OAAO;IACP,gEAAgE;IAExD,UAAU,CAAC,IAAU;QAC3B,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/G,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,KAAe,EAAE,GAAW;QAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,IAAU,EAAE,MAAc,EAAE,gBAAyB,KAAK;QAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEhD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEzC,2CAA2C;QAC3C,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxD,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,GAAG,YAAY,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAE/D,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,KAAK,GAAa,EAAE,CAAC;YAE3B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,iFAAiF;gBACjF,qCAAqC;gBACrC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE3C,kDAAkD;gBAClD,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;oBACzD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAChD,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;gBACxB,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACtE,CAAC;QAED,sBAAsB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,GAAG,GAAa,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;QAErC,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,yCAAyC;YACzC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAE/E,kDAAkD;YAClD,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChD,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,gEAAgE;IAChE,SAAS;IACT,gEAAgE;IACxD,YAAY,CAAC,IAAU,EAAE,MAAc;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBACjF,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBACzD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,OAAO,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AAjaD,0BAiaC"}
|
|
1
|
+
{"version":3,"file":"Encoder.js","sourceRoot":"","sources":["../../src/core/Encoder.ts"],"names":[],"mappings":"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"}
|
package/dist/models/Meta.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare class Meta {
|
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
26
|
* A temporary container (DTO) holding parsed metadata from a / ... / block.
|
|
27
|
-
* It contains BOTH Schema constraints (
|
|
27
|
+
* It contains BOTH Schema constraints ($required) and Node attributes ($key=val).
|
|
28
28
|
*/
|
|
29
29
|
export declare class MetaInfo extends Meta {
|
|
30
30
|
required: boolean;
|
|
@@ -42,7 +42,7 @@ export declare class MetaInfo extends Meta {
|
|
|
42
42
|
isEmpty(): boolean;
|
|
43
43
|
/**
|
|
44
44
|
* Debug representation mimicking the actual ADF format style.
|
|
45
|
-
* Example: <MetaInfo
|
|
45
|
+
* Example: <MetaInfo $required #tag $key=val >
|
|
46
46
|
*/
|
|
47
47
|
toString(): string;
|
|
48
48
|
}
|
package/dist/models/Meta.js
CHANGED
|
@@ -40,7 +40,7 @@ class Meta {
|
|
|
40
40
|
exports.Meta = Meta;
|
|
41
41
|
/**
|
|
42
42
|
* A temporary container (DTO) holding parsed metadata from a / ... / block.
|
|
43
|
-
* It contains BOTH Schema constraints (
|
|
43
|
+
* It contains BOTH Schema constraints ($required) and Node attributes ($key=val).
|
|
44
44
|
*/
|
|
45
45
|
class MetaInfo extends Meta {
|
|
46
46
|
constructor(props = {}) {
|
|
@@ -70,13 +70,13 @@ class MetaInfo extends Meta {
|
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
72
|
* Debug representation mimicking the actual ADF format style.
|
|
73
|
-
* Example: <MetaInfo
|
|
73
|
+
* Example: <MetaInfo $required #tag $key=val >
|
|
74
74
|
*/
|
|
75
75
|
toString() {
|
|
76
76
|
const parts = [];
|
|
77
77
|
// 1. Flags
|
|
78
78
|
if (this.required) {
|
|
79
|
-
parts.push('
|
|
79
|
+
parts.push('$required');
|
|
80
80
|
}
|
|
81
81
|
// 2. Tags
|
|
82
82
|
for (const t of this.tags) {
|
package/dist/models/Schema.js
CHANGED
|
@@ -145,7 +145,7 @@ class Schema extends Meta_1.Meta {
|
|
|
145
145
|
// 3. Details
|
|
146
146
|
const details = [];
|
|
147
147
|
if (this.required)
|
|
148
|
-
details.push('
|
|
148
|
+
details.push('$required');
|
|
149
149
|
const attrKeys = Object.keys(this.attr);
|
|
150
150
|
if (attrKeys.length > 0)
|
|
151
151
|
details.push(`attr=[${attrKeys.map((a) => '"' + a + '"').join(', ')}]`);
|
package/package.json
CHANGED
package/src/core/Decoder.ts
CHANGED
|
@@ -635,7 +635,7 @@ export class Decoder {
|
|
|
635
635
|
continue;
|
|
636
636
|
}
|
|
637
637
|
|
|
638
|
-
if (ch === '/' && nextCh
|
|
638
|
+
if (ch === '/' && nextCh === '/') {
|
|
639
639
|
this.parseMetaBlock(obj);
|
|
640
640
|
continue;
|
|
641
641
|
}
|
|
@@ -689,15 +689,19 @@ export class Decoder {
|
|
|
689
689
|
const ch = this.peek();
|
|
690
690
|
if (ch === '$') this.parseMetaAttribute(this.pendingMeta);
|
|
691
691
|
else if (ch === '#') this.parseMetaTag(this.pendingMeta);
|
|
692
|
-
else if (ch === '!') this.parseMetaFlag(this.pendingMeta);
|
|
693
692
|
else this.advance(1);
|
|
694
693
|
}
|
|
695
694
|
|
|
696
695
|
private parseMetaBlock(obj: Node | Schema | null = null): MetaInfo {
|
|
697
|
-
this.expect('/');
|
|
698
|
-
this._dbg('START meta header /.../');
|
|
699
696
|
const meta = new MetaInfo();
|
|
700
697
|
|
|
698
|
+
if (!(this.peek() === '/' && this.peekNext() === '/')) {
|
|
699
|
+
this.addError("Expected '//' to start meta block");
|
|
700
|
+
return meta;
|
|
701
|
+
}
|
|
702
|
+
this.advance(2); // consume //
|
|
703
|
+
this._dbg('START meta header //...//');
|
|
704
|
+
|
|
701
705
|
while (!this.eof()) {
|
|
702
706
|
this.skipWhitespace();
|
|
703
707
|
const ch = this.peek();
|
|
@@ -708,8 +712,8 @@ export class Decoder {
|
|
|
708
712
|
continue;
|
|
709
713
|
}
|
|
710
714
|
|
|
711
|
-
if (ch === '/') {
|
|
712
|
-
this.advance(
|
|
715
|
+
if (ch === '/' && nextCh === '/') {
|
|
716
|
+
this.advance(2);
|
|
713
717
|
break;
|
|
714
718
|
}
|
|
715
719
|
|
|
@@ -721,13 +725,9 @@ export class Decoder {
|
|
|
721
725
|
this.parseMetaTag(meta);
|
|
722
726
|
continue;
|
|
723
727
|
}
|
|
724
|
-
if (ch === '!') {
|
|
725
|
-
this.parseMetaFlag(meta);
|
|
726
|
-
continue;
|
|
727
|
-
}
|
|
728
728
|
|
|
729
729
|
// Implicit Attribute (Legacy support: key=value without $)
|
|
730
|
-
if (/[a-zA-Z0-9_]/.test(ch || '')) {
|
|
730
|
+
if (/[a-zA-Z0-9_`]/.test(ch || '')) {
|
|
731
731
|
const key = this.parseIdent();
|
|
732
732
|
let val: Primitive = true;
|
|
733
733
|
|
|
@@ -766,7 +766,12 @@ export class Decoder {
|
|
|
766
766
|
this.advance(1);
|
|
767
767
|
val = this.parsePrimitiveValue();
|
|
768
768
|
}
|
|
769
|
-
|
|
769
|
+
if (key === 'required') {
|
|
770
|
+
meta.required = true;
|
|
771
|
+
this._dbg('Meta Flag: $required');
|
|
772
|
+
} else {
|
|
773
|
+
meta.attr[key] = val;
|
|
774
|
+
}
|
|
770
775
|
this._dbg(`Meta Attr: $${key}=${val}`);
|
|
771
776
|
}
|
|
772
777
|
|
|
@@ -777,36 +782,59 @@ export class Decoder {
|
|
|
777
782
|
this._dbg(`Meta Tag: #${tag}`);
|
|
778
783
|
}
|
|
779
784
|
|
|
780
|
-
private parseMetaFlag(meta: MetaInfo): void {
|
|
781
|
-
this.advance(1); // !
|
|
782
|
-
const flag = this.parseIdent();
|
|
783
|
-
if (flag === 'required') {
|
|
784
|
-
meta.required = true;
|
|
785
|
-
this._dbg('Meta Flag: !required');
|
|
786
|
-
} else {
|
|
787
|
-
this.addWarning(`Unknown flag: !${flag}`);
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
|
|
791
785
|
// =========================================================
|
|
792
786
|
// HELPERS & LOW-LEVEL PARSERS
|
|
793
787
|
// =========================================================
|
|
794
788
|
|
|
789
|
+
/**
|
|
790
|
+
* Parses an identifier.
|
|
791
|
+
* Supports:
|
|
792
|
+
* 1. Escaped identifiers: `Any characters here`
|
|
793
|
+
* 2. Standard identifiers: [a-zA-Z_][a-zA-Z0-9_]*
|
|
794
|
+
*/
|
|
795
795
|
private parseIdent(): string {
|
|
796
796
|
this.skipWhitespace();
|
|
797
|
-
const start = this.i;
|
|
798
797
|
if (this.eof()) return '';
|
|
799
798
|
|
|
800
|
-
|
|
801
|
-
if (
|
|
799
|
+
// 1. Escaped identifier logic (Backticks)
|
|
800
|
+
if (this.text[this.i] === '`') {
|
|
801
|
+
this.advance(1); // Skip opening backtick
|
|
802
|
+
const startIdx = this.i;
|
|
803
|
+
|
|
804
|
+
while (!this.eof()) {
|
|
805
|
+
if (this.text[this.i] === '`') {
|
|
806
|
+
const ident = this.text.substring(startIdx, this.i);
|
|
807
|
+
this.advance(1); // Skip closing backtick
|
|
808
|
+
return ident;
|
|
809
|
+
}
|
|
810
|
+
this.advance(1);
|
|
811
|
+
}
|
|
812
|
+
// If EOF is reached without closing backtick, return partial
|
|
813
|
+
return this.text.substring(startIdx, this.i);
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
// 2. Standard identifier logic
|
|
817
|
+
const startIdx = this.i;
|
|
818
|
+
const firstChar = this.text[this.i];
|
|
819
|
+
|
|
820
|
+
// Standard names must start with a letter or underscore
|
|
821
|
+
if (!/[a-zA-Z_]/.test(firstChar)) {
|
|
822
|
+
return '';
|
|
823
|
+
}
|
|
802
824
|
|
|
803
825
|
this.advance(1);
|
|
826
|
+
|
|
827
|
+
// Consume alphanumeric characters and underscores
|
|
804
828
|
while (!this.eof()) {
|
|
805
|
-
const
|
|
806
|
-
if (/[a-zA-Z0-9_]/.test(
|
|
807
|
-
|
|
829
|
+
const ch = this.text[this.i];
|
|
830
|
+
if (/[a-zA-Z0-9_]/.test(ch)) {
|
|
831
|
+
this.advance(1);
|
|
832
|
+
} else {
|
|
833
|
+
break;
|
|
834
|
+
}
|
|
808
835
|
}
|
|
809
|
-
|
|
836
|
+
|
|
837
|
+
return this.text.substring(startIdx, this.i);
|
|
810
838
|
}
|
|
811
839
|
|
|
812
840
|
private parseString(): Node {
|