@malloydata/malloy-tag 0.0.352 → 0.0.354
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/parser.js +4 -3
- package/dist/parser.js.map +1 -1
- package/dist/tags.d.ts +13 -74
- package/dist/tags.js +38 -235
- package/dist/tags.js.map +1 -1
- package/package.json +2 -2
- package/src/parser.ts +7 -6
- package/src/tags.ts +41 -274
package/dist/parser.js
CHANGED
|
@@ -58,12 +58,13 @@ function resolveLocation(loc, origins) {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
|
-
* Convert a
|
|
62
|
-
* Env references (@env.NAME) are resolved
|
|
61
|
+
* Convert a MOTLYNode (node or ref) into a Tag tree with parent links.
|
|
62
|
+
* Refs are dropped (skipped). Env references (@env.NAME) are resolved
|
|
63
|
+
* from process.env during hydration.
|
|
63
64
|
*/
|
|
64
65
|
function hydrate(pv, parent, origins) {
|
|
65
66
|
if ((0, motly_ts_parser_1.isRef)(pv)) {
|
|
66
|
-
return new tags_1.
|
|
67
|
+
return new tags_1.Tag({ deleted: true }, parent);
|
|
67
68
|
}
|
|
68
69
|
const tag = new tags_1.Tag({}, parent);
|
|
69
70
|
if (pv.location && origins) {
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/tags.d.ts
CHANGED
|
@@ -30,16 +30,13 @@ export interface TagInterface {
|
|
|
30
30
|
deleted?: boolean;
|
|
31
31
|
prefix?: string;
|
|
32
32
|
}
|
|
33
|
-
export interface
|
|
34
|
-
linkTo: string;
|
|
35
|
-
}
|
|
36
|
-
export interface TagJSONInterface {
|
|
33
|
+
export interface TagJSON {
|
|
37
34
|
eq?: TagScalar | TagJSON[];
|
|
38
35
|
properties?: Record<string, TagJSON>;
|
|
39
36
|
deleted?: boolean;
|
|
40
37
|
prefix?: string;
|
|
38
|
+
location?: TagLocation;
|
|
41
39
|
}
|
|
42
|
-
export type TagJSON = TagJSONInterface | TagLink;
|
|
43
40
|
export interface TagParse {
|
|
44
41
|
tag: Tag;
|
|
45
42
|
log: TagError[];
|
|
@@ -65,7 +62,6 @@ export type TagSetValue = string | number | boolean | Date | string[] | number[]
|
|
|
65
62
|
* tag.has(p?) => boolean "tag contains tag.p"
|
|
66
63
|
* tag.bare(p?) => tag.p exists and has no properties
|
|
67
64
|
* tag.dict => Record<string,Tag> of tag properties
|
|
68
|
-
* tag.toObject() => Plain JS object representation
|
|
69
65
|
* ```
|
|
70
66
|
*/
|
|
71
67
|
export declare class Tag {
|
|
@@ -75,7 +71,7 @@ export declare class Tag {
|
|
|
75
71
|
deleted?: boolean;
|
|
76
72
|
location?: TagLocation;
|
|
77
73
|
private _parent?;
|
|
78
|
-
|
|
74
|
+
protected _read: boolean;
|
|
79
75
|
protected _clonedFrom?: Tag;
|
|
80
76
|
/**
|
|
81
77
|
* Get the parent tag, if this tag is part of a tree.
|
|
@@ -94,17 +90,15 @@ export declare class Tag {
|
|
|
94
90
|
static withPrefix(prefix: string): Tag;
|
|
95
91
|
tag(...at: Path): Tag | undefined;
|
|
96
92
|
text(...at: Path): string | undefined;
|
|
93
|
+
scalarType(...at: Path): 'string' | 'number' | 'boolean' | 'date' | undefined;
|
|
97
94
|
numeric(...at: Path): number | undefined;
|
|
98
95
|
boolean(...at: Path): boolean | undefined;
|
|
99
96
|
isTrue(...at: Path): boolean;
|
|
100
97
|
isFalse(...at: Path): boolean;
|
|
101
98
|
date(...at: Path): Date | undefined;
|
|
102
99
|
bare(...at: Path): boolean | undefined;
|
|
103
|
-
/** Virtual accessor for eq - overridden in RefTag to resolve */
|
|
104
100
|
getEq(): TagValue | undefined;
|
|
105
|
-
/** Virtual accessor for a property - overridden in RefTag to resolve */
|
|
106
101
|
getProperty(name: string): Tag | undefined;
|
|
107
|
-
/** Virtual accessor for an array element - overridden in RefTag to resolve */
|
|
108
102
|
getArrayElement(index: number): Tag | undefined;
|
|
109
103
|
get dict(): Record<string, Tag>;
|
|
110
104
|
/** Iterate over [name, Tag] pairs for each property */
|
|
@@ -118,20 +112,6 @@ export declare class Tag {
|
|
|
118
112
|
numericArray(...at: Path): number[] | undefined;
|
|
119
113
|
getProperties(): Record<string, Tag>;
|
|
120
114
|
clone(newParent?: Tag): Tag;
|
|
121
|
-
private static scalarToObject;
|
|
122
|
-
private static tagToObject;
|
|
123
|
-
/**
|
|
124
|
-
* Convert to a plain JS object. References are resolved to actual
|
|
125
|
-
* object pointers (which may be circular in JS - that's fine).
|
|
126
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
127
|
-
*/
|
|
128
|
-
toObject(resolving?: Set<RefTag>): Record<string, unknown>;
|
|
129
|
-
/**
|
|
130
|
-
* Convert this tag's value to a plain JS object.
|
|
131
|
-
* Override in RefTag to resolve references.
|
|
132
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
133
|
-
*/
|
|
134
|
-
toObjectValue(resolving: Set<RefTag>): unknown;
|
|
135
115
|
/**
|
|
136
116
|
* Custom JSON serialization that excludes _parent to avoid circular references.
|
|
137
117
|
* This is called automatically by JSON.stringify().
|
|
@@ -162,6 +142,15 @@ export declare class Tag {
|
|
|
162
142
|
* Returns true if this tag was accessed via find/has/text/etc.
|
|
163
143
|
*/
|
|
164
144
|
get wasRead(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Walk the tag tree, yielding each descendant tag with its path.
|
|
147
|
+
* Covers named properties and array element values. Pre-order traversal.
|
|
148
|
+
* Skips deleted properties.
|
|
149
|
+
*/
|
|
150
|
+
walk(prefix?: string[]): Generator<{
|
|
151
|
+
path: string[];
|
|
152
|
+
tag: Tag;
|
|
153
|
+
}>;
|
|
165
154
|
/**
|
|
166
155
|
* Recursively reset read tracking on this tag and all descendants.
|
|
167
156
|
*/
|
|
@@ -177,56 +166,6 @@ export declare class Tag {
|
|
|
177
166
|
unset(...path: Path): Tag;
|
|
178
167
|
private remove;
|
|
179
168
|
}
|
|
180
|
-
/**
|
|
181
|
-
* A tag that references another location in the tag tree.
|
|
182
|
-
* When accessed, it dereferences to the target tag.
|
|
183
|
-
*
|
|
184
|
-
* Reference syntax:
|
|
185
|
-
* $path.to.thing - absolute from root
|
|
186
|
-
* $^thing - up one level, then 'thing'
|
|
187
|
-
* $^^thing - up two levels, then 'thing'
|
|
188
|
-
* $items[0].name - with array indexing
|
|
189
|
-
*/
|
|
190
|
-
export declare class RefTag extends Tag {
|
|
191
|
-
readonly ups: number;
|
|
192
|
-
readonly refPath: Path;
|
|
193
|
-
constructor(ups: number, refPath: Path, parent?: Tag);
|
|
194
|
-
/**
|
|
195
|
-
* Resolve this reference to the target tag.
|
|
196
|
-
* Returns undefined if the reference cannot be resolved.
|
|
197
|
-
*/
|
|
198
|
-
resolve(): Tag | undefined;
|
|
199
|
-
/**
|
|
200
|
-
* Quote an identifier if it contains special characters.
|
|
201
|
-
*/
|
|
202
|
-
private quoteSegment;
|
|
203
|
-
/**
|
|
204
|
-
* Convert this reference to its string representation.
|
|
205
|
-
*/
|
|
206
|
-
toRefString(): string;
|
|
207
|
-
getEq(): TagValue | undefined;
|
|
208
|
-
getProperty(name: string): Tag | undefined;
|
|
209
|
-
getArrayElement(index: number): Tag | undefined;
|
|
210
|
-
hasProperties(): boolean;
|
|
211
|
-
/**
|
|
212
|
-
* For toObject, resolve the reference and return the target's object value.
|
|
213
|
-
* This creates actual object pointers (circular references are allowed).
|
|
214
|
-
* Detects cycles in the reference chain to prevent infinite recursion.
|
|
215
|
-
*/
|
|
216
|
-
toObjectValue(resolving: Set<RefTag>): unknown;
|
|
217
|
-
/**
|
|
218
|
-
* For JSON serialization, return a marker object instead of resolving.
|
|
219
|
-
*/
|
|
220
|
-
toJSON(): TagJSON;
|
|
221
|
-
/**
|
|
222
|
-
* Check if this reference resolves, add error if not.
|
|
223
|
-
*/
|
|
224
|
-
collectReferenceErrors(errors: string[], path: string[]): void;
|
|
225
|
-
/**
|
|
226
|
-
* Clone this RefTag, preserving the reference information.
|
|
227
|
-
*/
|
|
228
|
-
clone(newParent?: Tag): RefTag;
|
|
229
|
-
}
|
|
230
169
|
/**
|
|
231
170
|
* Convert a Tag to a plain TagInterface without internal fields like _parent.
|
|
232
171
|
* Useful for test comparisons.
|
package/dist/tags.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
23
23
|
*/
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.
|
|
25
|
+
exports.Tag = void 0;
|
|
26
26
|
exports.interfaceFromTag = interfaceFromTag;
|
|
27
27
|
exports.interfaceFromDict = interfaceFromDict;
|
|
28
28
|
/**
|
|
@@ -43,7 +43,6 @@ exports.interfaceFromDict = interfaceFromDict;
|
|
|
43
43
|
* tag.has(p?) => boolean "tag contains tag.p"
|
|
44
44
|
* tag.bare(p?) => tag.p exists and has no properties
|
|
45
45
|
* tag.dict => Record<string,Tag> of tag properties
|
|
46
|
-
* tag.toObject() => Plain JS object representation
|
|
47
46
|
* ```
|
|
48
47
|
*/
|
|
49
48
|
class Tag {
|
|
@@ -146,6 +145,15 @@ class Tag {
|
|
|
146
145
|
}
|
|
147
146
|
return String(val);
|
|
148
147
|
}
|
|
148
|
+
scalarType(...at) {
|
|
149
|
+
var _a;
|
|
150
|
+
const val = at.length > 0 ? (_a = this.find(at)) === null || _a === void 0 ? void 0 : _a.getEq() : this.getEq();
|
|
151
|
+
if (val === undefined || Array.isArray(val))
|
|
152
|
+
return undefined;
|
|
153
|
+
if (val instanceof Date)
|
|
154
|
+
return 'date';
|
|
155
|
+
return typeof val;
|
|
156
|
+
}
|
|
149
157
|
numeric(...at) {
|
|
150
158
|
var _a;
|
|
151
159
|
const val = (_a = this.find(at)) === null || _a === void 0 ? void 0 : _a.getEq();
|
|
@@ -191,16 +199,13 @@ class Tag {
|
|
|
191
199
|
}
|
|
192
200
|
return !p.hasProperties();
|
|
193
201
|
}
|
|
194
|
-
/** Virtual accessor for eq - overridden in RefTag to resolve */
|
|
195
202
|
getEq() {
|
|
196
203
|
return this.eq;
|
|
197
204
|
}
|
|
198
|
-
/** Virtual accessor for a property - overridden in RefTag to resolve */
|
|
199
205
|
getProperty(name) {
|
|
200
206
|
var _a;
|
|
201
207
|
return (_a = this.properties) === null || _a === void 0 ? void 0 : _a[name];
|
|
202
208
|
}
|
|
203
|
-
/** Virtual accessor for an array element - overridden in RefTag to resolve */
|
|
204
209
|
getArrayElement(index) {
|
|
205
210
|
if (Array.isArray(this.eq) && index < this.eq.length) {
|
|
206
211
|
return this.eq[index];
|
|
@@ -295,6 +300,8 @@ class Tag {
|
|
|
295
300
|
return this.properties;
|
|
296
301
|
}
|
|
297
302
|
clone(newParent) {
|
|
303
|
+
// Mark the source as read — cloning consumes the original.
|
|
304
|
+
this._read = true;
|
|
298
305
|
const cloned = new Tag({}, newParent);
|
|
299
306
|
cloned.prefix = this.prefix;
|
|
300
307
|
cloned.deleted = this.deleted;
|
|
@@ -317,97 +324,6 @@ class Tag {
|
|
|
317
324
|
}
|
|
318
325
|
return cloned;
|
|
319
326
|
}
|
|
320
|
-
static scalarToObject(val) {
|
|
321
|
-
return val;
|
|
322
|
-
}
|
|
323
|
-
static tagToObject(tag) {
|
|
324
|
-
const hasProps = tag.properties !== undefined && Object.keys(tag.properties).length > 0;
|
|
325
|
-
const hasValue = tag.eq !== undefined;
|
|
326
|
-
// Bare tag (no value, no properties)
|
|
327
|
-
if (!hasValue && !hasProps) {
|
|
328
|
-
return true;
|
|
329
|
-
}
|
|
330
|
-
// Properties only
|
|
331
|
-
if (!hasValue && hasProps) {
|
|
332
|
-
const result = {};
|
|
333
|
-
for (const [key, val] of Object.entries(tag.properties)) {
|
|
334
|
-
if (!val.deleted) {
|
|
335
|
-
result[key] = Tag.tagToObject(val);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
return result;
|
|
339
|
-
}
|
|
340
|
-
// Value only
|
|
341
|
-
if (hasValue && !hasProps) {
|
|
342
|
-
if (Array.isArray(tag.eq)) {
|
|
343
|
-
return tag.eq.map(el => Tag.tagToObject(el));
|
|
344
|
-
}
|
|
345
|
-
return Tag.scalarToObject(tag.eq);
|
|
346
|
-
}
|
|
347
|
-
// Both value and properties
|
|
348
|
-
const result = {};
|
|
349
|
-
if (Array.isArray(tag.eq)) {
|
|
350
|
-
result['='] = tag.eq.map(el => Tag.tagToObject(el));
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
result['='] = Tag.scalarToObject(tag.eq);
|
|
354
|
-
}
|
|
355
|
-
for (const [key, val] of Object.entries(tag.properties)) {
|
|
356
|
-
if (!val.deleted) {
|
|
357
|
-
result[key] = Tag.tagToObject(val);
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
return result;
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Convert to a plain JS object. References are resolved to actual
|
|
364
|
-
* object pointers (which may be circular in JS - that's fine).
|
|
365
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
366
|
-
*/
|
|
367
|
-
toObject(resolving = new Set()) {
|
|
368
|
-
const result = {};
|
|
369
|
-
if (this.properties) {
|
|
370
|
-
for (const [key, prop] of Object.entries(this.properties)) {
|
|
371
|
-
if (!prop.deleted) {
|
|
372
|
-
result[key] = prop.toObjectValue(resolving);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
return result;
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Convert this tag's value to a plain JS object.
|
|
380
|
-
* Override in RefTag to resolve references.
|
|
381
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
382
|
-
*/
|
|
383
|
-
toObjectValue(resolving) {
|
|
384
|
-
const hasProps = this.properties !== undefined && Object.keys(this.properties).length > 0;
|
|
385
|
-
const hasValue = this.eq !== undefined;
|
|
386
|
-
// Bare tag (no value, no properties)
|
|
387
|
-
if (!hasValue && !hasProps) {
|
|
388
|
-
return true;
|
|
389
|
-
}
|
|
390
|
-
// Properties only
|
|
391
|
-
if (!hasValue && hasProps) {
|
|
392
|
-
return this.toObject(resolving);
|
|
393
|
-
}
|
|
394
|
-
// Value only
|
|
395
|
-
if (hasValue && !hasProps) {
|
|
396
|
-
if (Array.isArray(this.eq)) {
|
|
397
|
-
return this.eq.map(el => el.toObjectValue(resolving));
|
|
398
|
-
}
|
|
399
|
-
return this.eq;
|
|
400
|
-
}
|
|
401
|
-
// Both value and properties
|
|
402
|
-
const result = this.toObject(resolving);
|
|
403
|
-
if (Array.isArray(this.eq)) {
|
|
404
|
-
result['='] = this.eq.map(el => el.toObjectValue(resolving));
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
result['='] = this.eq;
|
|
408
|
-
}
|
|
409
|
-
return result;
|
|
410
|
-
}
|
|
411
327
|
/**
|
|
412
328
|
* Custom JSON serialization that excludes _parent to avoid circular references.
|
|
413
329
|
* This is called automatically by JSON.stringify().
|
|
@@ -434,6 +350,9 @@ class Tag {
|
|
|
434
350
|
if (this.prefix) {
|
|
435
351
|
result.prefix = this.prefix;
|
|
436
352
|
}
|
|
353
|
+
if (this.location) {
|
|
354
|
+
result.location = this.location;
|
|
355
|
+
}
|
|
437
356
|
return result;
|
|
438
357
|
}
|
|
439
358
|
/**
|
|
@@ -588,21 +507,37 @@ class Tag {
|
|
|
588
507
|
return this._read;
|
|
589
508
|
}
|
|
590
509
|
/**
|
|
591
|
-
*
|
|
510
|
+
* Walk the tag tree, yielding each descendant tag with its path.
|
|
511
|
+
* Covers named properties and array element values. Pre-order traversal.
|
|
512
|
+
* Skips deleted properties.
|
|
592
513
|
*/
|
|
593
|
-
|
|
594
|
-
this._read = false;
|
|
514
|
+
*walk(prefix = []) {
|
|
595
515
|
if (this.properties) {
|
|
596
|
-
for (const prop of Object.
|
|
597
|
-
prop.
|
|
516
|
+
for (const [key, prop] of Object.entries(this.properties)) {
|
|
517
|
+
if (prop.deleted)
|
|
518
|
+
continue;
|
|
519
|
+
const path = [...prefix, key];
|
|
520
|
+
yield { path, tag: prop };
|
|
521
|
+
yield* prop.walk(path);
|
|
598
522
|
}
|
|
599
523
|
}
|
|
600
524
|
if (Array.isArray(this.eq)) {
|
|
601
|
-
for (
|
|
602
|
-
|
|
525
|
+
for (let i = 0; i < this.eq.length; i++) {
|
|
526
|
+
const path = [...prefix, i.toString()];
|
|
527
|
+
yield { path, tag: this.eq[i] };
|
|
528
|
+
yield* this.eq[i].walk(path);
|
|
603
529
|
}
|
|
604
530
|
}
|
|
605
531
|
}
|
|
532
|
+
/**
|
|
533
|
+
* Recursively reset read tracking on this tag and all descendants.
|
|
534
|
+
*/
|
|
535
|
+
resetReadTracking() {
|
|
536
|
+
this._read = false;
|
|
537
|
+
for (const { tag } of this.walk()) {
|
|
538
|
+
tag._read = false;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
606
541
|
/**
|
|
607
542
|
* Collect all unread, non-deleted property names in this tag tree.
|
|
608
543
|
* Returns paths like ['viz', 'yy'] for nested unread properties.
|
|
@@ -760,138 +695,6 @@ exports.Tag = Tag;
|
|
|
760
695
|
// --- Just for debugging ---
|
|
761
696
|
Tag.ids = new Map();
|
|
762
697
|
Tag.nextTagId = 1000;
|
|
763
|
-
/**
|
|
764
|
-
* A tag that references another location in the tag tree.
|
|
765
|
-
* When accessed, it dereferences to the target tag.
|
|
766
|
-
*
|
|
767
|
-
* Reference syntax:
|
|
768
|
-
* $path.to.thing - absolute from root
|
|
769
|
-
* $^thing - up one level, then 'thing'
|
|
770
|
-
* $^^thing - up two levels, then 'thing'
|
|
771
|
-
* $items[0].name - with array indexing
|
|
772
|
-
*/
|
|
773
|
-
class RefTag extends Tag {
|
|
774
|
-
constructor(ups, refPath, parent) {
|
|
775
|
-
super({}, parent);
|
|
776
|
-
this.ups = ups;
|
|
777
|
-
this.refPath = refPath;
|
|
778
|
-
}
|
|
779
|
-
/**
|
|
780
|
-
* Resolve this reference to the target tag.
|
|
781
|
-
* Returns undefined if the reference cannot be resolved.
|
|
782
|
-
*/
|
|
783
|
-
resolve() {
|
|
784
|
-
// Start from the appropriate point based on ups
|
|
785
|
-
let current;
|
|
786
|
-
if (this.ups === 0) {
|
|
787
|
-
// Absolute reference from root
|
|
788
|
-
current = this.root;
|
|
789
|
-
}
|
|
790
|
-
else {
|
|
791
|
-
// Relative reference - go up 'ups' levels from parent
|
|
792
|
-
// $^ means go up 1 level from the containing scope
|
|
793
|
-
current = this.parent;
|
|
794
|
-
for (let i = 0; i < this.ups && current !== undefined; i++) {
|
|
795
|
-
current = current.parent;
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
if (current === undefined) {
|
|
799
|
-
return undefined;
|
|
800
|
-
}
|
|
801
|
-
// Follow the path
|
|
802
|
-
return current.find(this.refPath);
|
|
803
|
-
}
|
|
804
|
-
/**
|
|
805
|
-
* Quote an identifier if it contains special characters.
|
|
806
|
-
*/
|
|
807
|
-
quoteSegment(seg) {
|
|
808
|
-
// Match bareString from peggy grammar: [0-9A-Za-z_\u00C0-\u024F\u1E00-\u1EFF]+
|
|
809
|
-
if (/^[0-9A-Za-z_\u00C0-\u024F\u1E00-\u1EFF]+$/.test(seg)) {
|
|
810
|
-
return seg;
|
|
811
|
-
}
|
|
812
|
-
// Otherwise, backquote it (escaping backslashes and backquotes)
|
|
813
|
-
return '`' + seg.replace(/\\/g, '\\\\').replace(/`/g, '\\`') + '`';
|
|
814
|
-
}
|
|
815
|
-
/**
|
|
816
|
-
* Convert this reference to its string representation.
|
|
817
|
-
*/
|
|
818
|
-
toRefString() {
|
|
819
|
-
const prefix = '$' + '^'.repeat(this.ups);
|
|
820
|
-
const pathStr = this.refPath
|
|
821
|
-
.map((seg, i) => {
|
|
822
|
-
if (typeof seg === 'number') {
|
|
823
|
-
return `[${seg}]`;
|
|
824
|
-
}
|
|
825
|
-
const quoted = this.quoteSegment(seg);
|
|
826
|
-
return i === 0 ? quoted : `.${quoted}`;
|
|
827
|
-
})
|
|
828
|
-
.join('');
|
|
829
|
-
return prefix + pathStr;
|
|
830
|
-
}
|
|
831
|
-
// Override virtual accessors to resolve the reference
|
|
832
|
-
getEq() {
|
|
833
|
-
var _a;
|
|
834
|
-
return (_a = this.resolve()) === null || _a === void 0 ? void 0 : _a.getEq();
|
|
835
|
-
}
|
|
836
|
-
getProperty(name) {
|
|
837
|
-
var _a;
|
|
838
|
-
return (_a = this.resolve()) === null || _a === void 0 ? void 0 : _a.getProperty(name);
|
|
839
|
-
}
|
|
840
|
-
getArrayElement(index) {
|
|
841
|
-
var _a;
|
|
842
|
-
return (_a = this.resolve()) === null || _a === void 0 ? void 0 : _a.getArrayElement(index);
|
|
843
|
-
}
|
|
844
|
-
hasProperties() {
|
|
845
|
-
var _a, _b;
|
|
846
|
-
return (_b = (_a = this.resolve()) === null || _a === void 0 ? void 0 : _a.hasProperties()) !== null && _b !== void 0 ? _b : false;
|
|
847
|
-
}
|
|
848
|
-
/**
|
|
849
|
-
* For toObject, resolve the reference and return the target's object value.
|
|
850
|
-
* This creates actual object pointers (circular references are allowed).
|
|
851
|
-
* Detects cycles in the reference chain to prevent infinite recursion.
|
|
852
|
-
*/
|
|
853
|
-
toObjectValue(resolving) {
|
|
854
|
-
// Check for cycle in reference chain
|
|
855
|
-
if (resolving.has(this)) {
|
|
856
|
-
// We're in a cycle - return undefined to break it
|
|
857
|
-
// (The cycle will be completed when the outer resolution finishes)
|
|
858
|
-
return undefined;
|
|
859
|
-
}
|
|
860
|
-
const resolved = this.resolve();
|
|
861
|
-
if (resolved === undefined) {
|
|
862
|
-
return undefined;
|
|
863
|
-
}
|
|
864
|
-
// Track that we're resolving this RefTag
|
|
865
|
-
resolving.add(this);
|
|
866
|
-
const result = resolved.toObjectValue(resolving);
|
|
867
|
-
resolving.delete(this);
|
|
868
|
-
return result;
|
|
869
|
-
}
|
|
870
|
-
/**
|
|
871
|
-
* For JSON serialization, return a marker object instead of resolving.
|
|
872
|
-
*/
|
|
873
|
-
toJSON() {
|
|
874
|
-
return { linkTo: this.toRefString() };
|
|
875
|
-
}
|
|
876
|
-
/**
|
|
877
|
-
* Check if this reference resolves, add error if not.
|
|
878
|
-
*/
|
|
879
|
-
collectReferenceErrors(errors, path) {
|
|
880
|
-
if (this.resolve() === undefined) {
|
|
881
|
-
const location = path.length > 0 ? path.join('.') : 'root';
|
|
882
|
-
errors.push(`Unresolved reference at ${location}: ${this.toRefString()}`);
|
|
883
|
-
}
|
|
884
|
-
}
|
|
885
|
-
/**
|
|
886
|
-
* Clone this RefTag, preserving the reference information.
|
|
887
|
-
*/
|
|
888
|
-
clone(newParent) {
|
|
889
|
-
const cloned = new RefTag(this.ups, [...this.refPath], newParent);
|
|
890
|
-
cloned._clonedFrom = this;
|
|
891
|
-
return cloned;
|
|
892
|
-
}
|
|
893
|
-
}
|
|
894
|
-
exports.RefTag = RefTag;
|
|
895
698
|
/**
|
|
896
699
|
* Convert a Tag to a plain TagInterface without internal fields like _parent.
|
|
897
700
|
* Useful for test comparisons.
|
package/dist/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AA+vBH,4CAoBC;AAKD,8CAMC;AAhuBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAa,GAAG;IAUd;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,4DAA4D;QAC5D,IAAI,OAAO,GAAQ,IAAI,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAKD,MAAM,CAAC,EAAE,CAAC,CAAM;QACd,IAAI,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC1B,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,MAAM,GAAG,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,IACE,IAAI,CAAC,UAAU,KAAK,SAAS;YAC7B,IAAI,CAAC,EAAE;YACP,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAC3B,CAAC;YACD,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,CAAC;QACD,GAAG,IAAI,IAAI,CAAC;QACZ,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,GAAG,IAAI,KAAK,MAAM,WAAW,MAAM,OAAO,IAAI,CAAC,EAAE;qBAC9C,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;qBAC9B,IAAI,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,MAAM,KAAK,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,GAAG,IAAI,KAAK,MAAM,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChC,GAAG,IAAI,KAAK,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YACrE,CAAC;QACH,CAAC;QACD,GAAG,IAAI,KAAK,MAAM,GAAG,CAAC;QACtB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,YAAY,OAAqB,EAAE,EAAE,MAAY;QAjEvC,UAAK,GAAG,KAAK,CAAC;QAkEtB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,iCAAiC;gBACjC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CACzB,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAC3C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,kCAAkC;YAClC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAc;QAC9B,OAAO,IAAI,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAG,EAAQ;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,GAAG,EAAQ;;QACd,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,KAAK,EAAE,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,UAAU,CACR,GAAG,EAAQ;;QAEX,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClE,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9D,IAAI,GAAG,YAAY,IAAI;YAAE,OAAO,MAAM,CAAC;QACvC,OAAO,OAAO,GAAsC,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,GAAG,EAAQ;;QACjB,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,KAAK,EAAE,CAAC;QACnC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,GAAG,EAAQ;;QACjB,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,KAAK,EAAE,CAAC;QACnC,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,GAAG,EAAQ;;QAChB,OAAO,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,KAAK,EAAE,MAAK,IAAI,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,GAAG,EAAQ;;QACjB,OAAO,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,KAAK,EAAE,MAAK,KAAK,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,GAAG,EAAQ;;QACd,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,KAAK,EAAE,CAAC;QACnC,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,GAAG,EAAQ;QACd,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,IAAY;;QACtB,OAAO,MAAA,IAAI,CAAC,UAAU,0CAAG,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI;;QACN,OAAO,MAAA,IAAI,CAAC,UAAU,mCAAI,EAAE,CAAC;IAC/B,CAAC;IAED,uDAAuD;IACvD,CAAC,OAAO;QACN,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,CAAC,IAAI;QACH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,aAAa;QACX,OAAO,CACL,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CACzE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,EAAQ;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC,CAAC;IACtD,CAAC;IAED,SAAS,CAAC,GAAG,EAAQ;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,KAAK,EAAE,CAAC;YACxB,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,YAAY,CAAC,GAAG,EAAQ;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,KAAK,EAAE,CAAC;YACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,qEAAqE;IACrE,aAAa;QACX,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,SAAe;QACnB,2DAA2D;QAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QAE1B,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,MAAgB,EAAE,IAAc;QACrD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;gBACxB,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,GAAW;QACrC,OAAO,GAAG;aACP,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;aACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,GAAW;QACnC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,GAAW,EAAE,MAAM,GAAG,KAAK;QACvD,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAAE,OAAO,GAAG,CAAC;QAC7C,IAAI,MAAM;YAAE,OAAO,KAAK,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QAChD,wFAAwF;QACxF,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,GAAc;QAC3C,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClC,CAAC;QACD,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;;QACN,IAAI,UAAU,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC;QACrC,SAAS,WAAW,CAAC,GAAiB;;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC;YAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,UAAU,IAAI,GAAG,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QACD,SAAS,MAAM,CAAC,KAAmB,EAAE,SAAS,GAAG,KAAK;YACpD,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,SAAS;oBAAE,UAAU,IAAI,KAAK,CAAC;gBACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC5B,UAAU,IAAI,GAAG,CAAC;oBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACzC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC1B,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;4BAAE,UAAU,IAAI,IAAI,CAAC;oBACpD,CAAC;oBACD,UAAU,IAAI,GAAG,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,UAAU,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC5C,IACE,CAAC,SAAS;oBACV,KAAK,CAAC,MAAM,KAAK,CAAC;oBAClB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAC,MAAA,KAAK,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA,EAAA,CAAC;oBACrD,KAAK,CAAC,EAAE,KAAK,SAAS,EACtB,CAAC;oBACD,UAAU,IAAI,GAAG,CAAC;oBAClB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;wBAAE,UAAU,IAAI,GAAG,CAAC;oBAC5D,UAAU,IAAI,IAAI,CAAC;oBACnB,WAAW,CAAC,KAAK,CAAC,CAAC;oBACnB,UAAU,IAAI,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QACD,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAmB;YACjD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,UAAU,IAAI,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,UAAU,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,UAAU,IAAI,IAAI,CAAC;QACnB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,IAAU;QACb,4DAA4D;QAC5D,IAAI,UAAU,GAAQ,IAAI,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,IAAI,IAAqB,CAAC;YAC1B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACK,QAAQ;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,CAAC,IAAI,CAAC,SAAmB,EAAE;QACzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,IAAI,IAAI,CAAC,OAAO;oBAAE,SAAS;gBAC3B,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC9B,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC,CAAC;gBACxB,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvC,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC;gBAC9B,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,EAAC,GAAG,EAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,SAAmB,EAAE;QACvC,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,IAAI,IAAI,CAAC,OAAO;oBAAE,SAAS;gBAC3B,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,uDAAuD;oBACvD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,GAAG,IAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,IAAU,EAAE,QAAqB,IAAI;QACvC,4DAA4D;QAC5D,IAAI,UAAU,GAAQ,IAAI,CAAC;QAC3B,IAAI,SAA0B,CAAC;QAC/B,IAAI,WAAoC,CAAC;QAEzC,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,SAAS,GAAG,UAAU,CAAC;YACvB,WAAW,GAAG,OAAO,CAAC;YACtB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,IAAI,UAAU,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjE,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAC,CAAC,CAAC,GAAG,CACnD,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAC9B,CAAC;gBACJ,CAAC;qBAAM,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5D,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CACxD,CAAC;oBACF,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC;gBACzB,CAAC;gBACD,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;gBACzC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,UAAU,CAAC,UAAU,GAAG,EAAC,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,EAAC,CAAC;oBAC7D,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC9C,CAAC;qBAAM,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;oBACjC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;oBACjC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;wBACvB,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;oBAC7B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBAC9C,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,UAAU,CAAC,EAAE,GAAG,SAAS,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;YAChC,iEAAiE;YACjE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC3C,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnE,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;gBACrC,CAAC;qBAAM,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBACnE,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IACL,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,SAAS;YAC1B,KAAK,YAAY,IAAI,EACrB,CAAC;YACD,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE;gBAC/C,OAAO,IAAI,GAAG,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,UAAU,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,GAAG,IAAU;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,GAAG,IAAU;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,MAAM,CAAC,IAAU,EAAE,IAAI,GAAG,KAAK;;QACrC,4DAA4D;QAC5D,IAAI,UAAU,GAAQ,IAAI,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,IAAI,UAAU,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjE,IAAI,CAAC,IAAI;wBAAE,OAAO,IAAI,CAAC;oBACvB,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC,GAAG,CAC/C,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAC9B,CAAC;gBACJ,CAAC;qBAAM,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC3C,IAAI,CAAC,IAAI;wBAAE,OAAO,IAAI,CAAC;oBACvB,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxD,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CACxD,CAAC;oBACF,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC;gBACzB,CAAC;gBACD,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;gBACzC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC,IAAI;wBAAE,OAAO,IAAI,CAAC;oBACvB,UAAU,CAAC,UAAU,GAAG,EAAC,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,EAAC,CAAC;oBAC7D,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC9C,CAAC;qBAAM,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;oBACjC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI;wBAAE,OAAO,IAAI,CAAC;oBACvB,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBAC9C,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,UAAU,CAAC,UAAU,IAAI,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC9D,OAAO,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,IAAI,EAAE,CAAC;gBAChB,MAAA,UAAU,CAAC,UAAU,oCAArB,UAAU,CAAC,UAAU,GAAK,EAAE,EAAC;gBAC7B,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,UAAU,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AAtqBH,kBAuqBC;AAzoBC,6BAA6B;AACtB,OAAG,GAAG,IAAI,GAAG,EAAe,AAAzB,CAA0B;AAC7B,aAAS,GAAG,IAAI,AAAP,CAAQ;AAyoB1B;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,GAAiB;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAa;IAC7C,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloydata/malloy-tag",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.354",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"generate-flow": "node ../../scripts/femto-build.js flow"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@malloydata/motly-ts-parser": "^0.
|
|
32
|
+
"@malloydata/motly-ts-parser": "^0.7.1",
|
|
33
33
|
"assert": "^2.0.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
package/src/parser.ts
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
import type {
|
|
7
7
|
MOTLYError,
|
|
8
8
|
MOTLYLocation,
|
|
9
|
-
|
|
9
|
+
MOTLYNode,
|
|
10
10
|
} from '@malloydata/motly-ts-parser';
|
|
11
11
|
import {MOTLYSession, isRef, isEnvRef} from '@malloydata/motly-ts-parser';
|
|
12
|
-
import {Tag
|
|
12
|
+
import {Tag} from './tags';
|
|
13
13
|
import type {TagParse, TagError, TagLocation} from './tags';
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -80,16 +80,17 @@ function resolveLocation(
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
/**
|
|
83
|
-
* Convert a
|
|
84
|
-
* Env references (@env.NAME) are resolved
|
|
83
|
+
* Convert a MOTLYNode (node or ref) into a Tag tree with parent links.
|
|
84
|
+
* Refs are dropped (skipped). Env references (@env.NAME) are resolved
|
|
85
|
+
* from process.env during hydration.
|
|
85
86
|
*/
|
|
86
87
|
function hydrate(
|
|
87
|
-
pv:
|
|
88
|
+
pv: MOTLYNode,
|
|
88
89
|
parent?: Tag,
|
|
89
90
|
origins?: Map<number, SourceOrigin>
|
|
90
91
|
): Tag {
|
|
91
92
|
if (isRef(pv)) {
|
|
92
|
-
return new
|
|
93
|
+
return new Tag({deleted: true}, parent);
|
|
93
94
|
}
|
|
94
95
|
|
|
95
96
|
const tag = new Tag({}, parent);
|
package/src/tags.ts
CHANGED
|
@@ -55,22 +55,14 @@ export interface TagInterface {
|
|
|
55
55
|
prefix?: string;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
// This format is round-trippable: a Tag.fromJSON(TagJSON) could reconstruct
|
|
60
|
-
// the original Tag tree, including RefTags from TagLink.linkTo strings.
|
|
61
|
-
export interface TagLink {
|
|
62
|
-
linkTo: string;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export interface TagJSONInterface {
|
|
58
|
+
export interface TagJSON {
|
|
66
59
|
eq?: TagScalar | TagJSON[];
|
|
67
60
|
properties?: Record<string, TagJSON>;
|
|
68
61
|
deleted?: boolean;
|
|
69
62
|
prefix?: string;
|
|
63
|
+
location?: TagLocation;
|
|
70
64
|
}
|
|
71
65
|
|
|
72
|
-
export type TagJSON = TagJSONInterface | TagLink;
|
|
73
|
-
|
|
74
66
|
export interface TagParse {
|
|
75
67
|
tag: Tag;
|
|
76
68
|
log: TagError[];
|
|
@@ -107,7 +99,6 @@ export type TagSetValue =
|
|
|
107
99
|
* tag.has(p?) => boolean "tag contains tag.p"
|
|
108
100
|
* tag.bare(p?) => tag.p exists and has no properties
|
|
109
101
|
* tag.dict => Record<string,Tag> of tag properties
|
|
110
|
-
* tag.toObject() => Plain JS object representation
|
|
111
102
|
* ```
|
|
112
103
|
*/
|
|
113
104
|
export class Tag {
|
|
@@ -117,7 +108,7 @@ export class Tag {
|
|
|
117
108
|
deleted?: boolean;
|
|
118
109
|
location?: TagLocation;
|
|
119
110
|
private _parent?: Tag;
|
|
120
|
-
|
|
111
|
+
protected _read = false;
|
|
121
112
|
protected _clonedFrom?: Tag;
|
|
122
113
|
|
|
123
114
|
/**
|
|
@@ -230,6 +221,15 @@ export class Tag {
|
|
|
230
221
|
return String(val);
|
|
231
222
|
}
|
|
232
223
|
|
|
224
|
+
scalarType(
|
|
225
|
+
...at: Path
|
|
226
|
+
): 'string' | 'number' | 'boolean' | 'date' | undefined {
|
|
227
|
+
const val = at.length > 0 ? this.find(at)?.getEq() : this.getEq();
|
|
228
|
+
if (val === undefined || Array.isArray(val)) return undefined;
|
|
229
|
+
if (val instanceof Date) return 'date';
|
|
230
|
+
return typeof val as 'string' | 'number' | 'boolean';
|
|
231
|
+
}
|
|
232
|
+
|
|
233
233
|
numeric(...at: Path): number | undefined {
|
|
234
234
|
const val = this.find(at)?.getEq();
|
|
235
235
|
if (typeof val === 'number') {
|
|
@@ -276,17 +276,14 @@ export class Tag {
|
|
|
276
276
|
return !p.hasProperties();
|
|
277
277
|
}
|
|
278
278
|
|
|
279
|
-
/** Virtual accessor for eq - overridden in RefTag to resolve */
|
|
280
279
|
getEq(): TagValue | undefined {
|
|
281
280
|
return this.eq;
|
|
282
281
|
}
|
|
283
282
|
|
|
284
|
-
/** Virtual accessor for a property - overridden in RefTag to resolve */
|
|
285
283
|
getProperty(name: string): Tag | undefined {
|
|
286
284
|
return this.properties?.[name];
|
|
287
285
|
}
|
|
288
286
|
|
|
289
|
-
/** Virtual accessor for an array element - overridden in RefTag to resolve */
|
|
290
287
|
getArrayElement(index: number): Tag | undefined {
|
|
291
288
|
if (Array.isArray(this.eq) && index < this.eq.length) {
|
|
292
289
|
return this.eq[index];
|
|
@@ -391,6 +388,8 @@ export class Tag {
|
|
|
391
388
|
}
|
|
392
389
|
|
|
393
390
|
clone(newParent?: Tag): Tag {
|
|
391
|
+
// Mark the source as read — cloning consumes the original.
|
|
392
|
+
this._read = true;
|
|
394
393
|
const cloned = new Tag({}, newParent);
|
|
395
394
|
cloned.prefix = this.prefix;
|
|
396
395
|
cloned.deleted = this.deleted;
|
|
@@ -416,117 +415,12 @@ export class Tag {
|
|
|
416
415
|
return cloned;
|
|
417
416
|
}
|
|
418
417
|
|
|
419
|
-
private static scalarToObject(
|
|
420
|
-
val: TagScalar
|
|
421
|
-
): string | number | boolean | Date {
|
|
422
|
-
return val;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
private static tagToObject(tag: TagInterface): unknown {
|
|
426
|
-
const hasProps =
|
|
427
|
-
tag.properties !== undefined && Object.keys(tag.properties).length > 0;
|
|
428
|
-
const hasValue = tag.eq !== undefined;
|
|
429
|
-
|
|
430
|
-
// Bare tag (no value, no properties)
|
|
431
|
-
if (!hasValue && !hasProps) {
|
|
432
|
-
return true;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
// Properties only
|
|
436
|
-
if (!hasValue && hasProps) {
|
|
437
|
-
const result: Record<string, unknown> = {};
|
|
438
|
-
for (const [key, val] of Object.entries(tag.properties!)) {
|
|
439
|
-
if (!val.deleted) {
|
|
440
|
-
result[key] = Tag.tagToObject(val);
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
return result;
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
// Value only
|
|
447
|
-
if (hasValue && !hasProps) {
|
|
448
|
-
if (Array.isArray(tag.eq)) {
|
|
449
|
-
return tag.eq.map(el => Tag.tagToObject(el));
|
|
450
|
-
}
|
|
451
|
-
return Tag.scalarToObject(tag.eq!);
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
// Both value and properties
|
|
455
|
-
const result: Record<string, unknown> = {};
|
|
456
|
-
if (Array.isArray(tag.eq)) {
|
|
457
|
-
result['='] = tag.eq.map(el => Tag.tagToObject(el));
|
|
458
|
-
} else {
|
|
459
|
-
result['='] = Tag.scalarToObject(tag.eq!);
|
|
460
|
-
}
|
|
461
|
-
for (const [key, val] of Object.entries(tag.properties!)) {
|
|
462
|
-
if (!val.deleted) {
|
|
463
|
-
result[key] = Tag.tagToObject(val);
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
return result;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
/**
|
|
470
|
-
* Convert to a plain JS object. References are resolved to actual
|
|
471
|
-
* object pointers (which may be circular in JS - that's fine).
|
|
472
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
473
|
-
*/
|
|
474
|
-
toObject(resolving: Set<RefTag> = new Set()): Record<string, unknown> {
|
|
475
|
-
const result: Record<string, unknown> = {};
|
|
476
|
-
if (this.properties) {
|
|
477
|
-
for (const [key, prop] of Object.entries(this.properties)) {
|
|
478
|
-
if (!prop.deleted) {
|
|
479
|
-
result[key] = prop.toObjectValue(resolving);
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
return result;
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
/**
|
|
487
|
-
* Convert this tag's value to a plain JS object.
|
|
488
|
-
* Override in RefTag to resolve references.
|
|
489
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
490
|
-
*/
|
|
491
|
-
toObjectValue(resolving: Set<RefTag>): unknown {
|
|
492
|
-
const hasProps =
|
|
493
|
-
this.properties !== undefined && Object.keys(this.properties).length > 0;
|
|
494
|
-
const hasValue = this.eq !== undefined;
|
|
495
|
-
|
|
496
|
-
// Bare tag (no value, no properties)
|
|
497
|
-
if (!hasValue && !hasProps) {
|
|
498
|
-
return true;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
// Properties only
|
|
502
|
-
if (!hasValue && hasProps) {
|
|
503
|
-
return this.toObject(resolving);
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
// Value only
|
|
507
|
-
if (hasValue && !hasProps) {
|
|
508
|
-
if (Array.isArray(this.eq)) {
|
|
509
|
-
return this.eq.map(el => el.toObjectValue(resolving));
|
|
510
|
-
}
|
|
511
|
-
return this.eq;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
// Both value and properties
|
|
515
|
-
const result: Record<string, unknown> = this.toObject(resolving);
|
|
516
|
-
if (Array.isArray(this.eq)) {
|
|
517
|
-
result['='] = this.eq.map(el => el.toObjectValue(resolving));
|
|
518
|
-
} else {
|
|
519
|
-
result['='] = this.eq;
|
|
520
|
-
}
|
|
521
|
-
return result;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
418
|
/**
|
|
525
419
|
* Custom JSON serialization that excludes _parent to avoid circular references.
|
|
526
420
|
* This is called automatically by JSON.stringify().
|
|
527
421
|
*/
|
|
528
422
|
toJSON(): TagJSON {
|
|
529
|
-
const result:
|
|
423
|
+
const result: TagJSON = {};
|
|
530
424
|
if (this.eq !== undefined) {
|
|
531
425
|
if (Array.isArray(this.eq)) {
|
|
532
426
|
result.eq = this.eq.map(el => el.toJSON());
|
|
@@ -546,6 +440,9 @@ export class Tag {
|
|
|
546
440
|
if (this.prefix) {
|
|
547
441
|
result.prefix = this.prefix;
|
|
548
442
|
}
|
|
443
|
+
if (this.location) {
|
|
444
|
+
result.location = this.location;
|
|
445
|
+
}
|
|
549
446
|
return result;
|
|
550
447
|
}
|
|
551
448
|
|
|
@@ -703,22 +600,38 @@ export class Tag {
|
|
|
703
600
|
}
|
|
704
601
|
|
|
705
602
|
/**
|
|
706
|
-
*
|
|
603
|
+
* Walk the tag tree, yielding each descendant tag with its path.
|
|
604
|
+
* Covers named properties and array element values. Pre-order traversal.
|
|
605
|
+
* Skips deleted properties.
|
|
707
606
|
*/
|
|
708
|
-
|
|
709
|
-
this._read = false;
|
|
607
|
+
*walk(prefix: string[] = []): Generator<{path: string[]; tag: Tag}> {
|
|
710
608
|
if (this.properties) {
|
|
711
|
-
for (const prop of Object.
|
|
712
|
-
prop.
|
|
609
|
+
for (const [key, prop] of Object.entries(this.properties)) {
|
|
610
|
+
if (prop.deleted) continue;
|
|
611
|
+
const path = [...prefix, key];
|
|
612
|
+
yield {path, tag: prop};
|
|
613
|
+
yield* prop.walk(path);
|
|
713
614
|
}
|
|
714
615
|
}
|
|
715
616
|
if (Array.isArray(this.eq)) {
|
|
716
|
-
for (
|
|
717
|
-
|
|
617
|
+
for (let i = 0; i < this.eq.length; i++) {
|
|
618
|
+
const path = [...prefix, i.toString()];
|
|
619
|
+
yield {path, tag: this.eq[i]};
|
|
620
|
+
yield* this.eq[i].walk(path);
|
|
718
621
|
}
|
|
719
622
|
}
|
|
720
623
|
}
|
|
721
624
|
|
|
625
|
+
/**
|
|
626
|
+
* Recursively reset read tracking on this tag and all descendants.
|
|
627
|
+
*/
|
|
628
|
+
resetReadTracking(): void {
|
|
629
|
+
this._read = false;
|
|
630
|
+
for (const {tag} of this.walk()) {
|
|
631
|
+
tag._read = false;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
|
|
722
635
|
/**
|
|
723
636
|
* Collect all unread, non-deleted property names in this tag tree.
|
|
724
637
|
* Returns paths like ['viz', 'yy'] for nested unread properties.
|
|
@@ -869,152 +782,6 @@ export class Tag {
|
|
|
869
782
|
}
|
|
870
783
|
}
|
|
871
784
|
|
|
872
|
-
/**
|
|
873
|
-
* A tag that references another location in the tag tree.
|
|
874
|
-
* When accessed, it dereferences to the target tag.
|
|
875
|
-
*
|
|
876
|
-
* Reference syntax:
|
|
877
|
-
* $path.to.thing - absolute from root
|
|
878
|
-
* $^thing - up one level, then 'thing'
|
|
879
|
-
* $^^thing - up two levels, then 'thing'
|
|
880
|
-
* $items[0].name - with array indexing
|
|
881
|
-
*/
|
|
882
|
-
export class RefTag extends Tag {
|
|
883
|
-
readonly ups: number;
|
|
884
|
-
readonly refPath: Path;
|
|
885
|
-
|
|
886
|
-
constructor(ups: number, refPath: Path, parent?: Tag) {
|
|
887
|
-
super({}, parent);
|
|
888
|
-
this.ups = ups;
|
|
889
|
-
this.refPath = refPath;
|
|
890
|
-
}
|
|
891
|
-
|
|
892
|
-
/**
|
|
893
|
-
* Resolve this reference to the target tag.
|
|
894
|
-
* Returns undefined if the reference cannot be resolved.
|
|
895
|
-
*/
|
|
896
|
-
resolve(): Tag | undefined {
|
|
897
|
-
// Start from the appropriate point based on ups
|
|
898
|
-
let current: Tag | undefined;
|
|
899
|
-
if (this.ups === 0) {
|
|
900
|
-
// Absolute reference from root
|
|
901
|
-
current = this.root;
|
|
902
|
-
} else {
|
|
903
|
-
// Relative reference - go up 'ups' levels from parent
|
|
904
|
-
// $^ means go up 1 level from the containing scope
|
|
905
|
-
current = this.parent;
|
|
906
|
-
for (let i = 0; i < this.ups && current !== undefined; i++) {
|
|
907
|
-
current = current.parent;
|
|
908
|
-
}
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
if (current === undefined) {
|
|
912
|
-
return undefined;
|
|
913
|
-
}
|
|
914
|
-
|
|
915
|
-
// Follow the path
|
|
916
|
-
return current.find(this.refPath);
|
|
917
|
-
}
|
|
918
|
-
|
|
919
|
-
/**
|
|
920
|
-
* Quote an identifier if it contains special characters.
|
|
921
|
-
*/
|
|
922
|
-
private quoteSegment(seg: string): string {
|
|
923
|
-
// Match bareString from peggy grammar: [0-9A-Za-z_\u00C0-\u024F\u1E00-\u1EFF]+
|
|
924
|
-
if (/^[0-9A-Za-z_\u00C0-\u024F\u1E00-\u1EFF]+$/.test(seg)) {
|
|
925
|
-
return seg;
|
|
926
|
-
}
|
|
927
|
-
// Otherwise, backquote it (escaping backslashes and backquotes)
|
|
928
|
-
return '`' + seg.replace(/\\/g, '\\\\').replace(/`/g, '\\`') + '`';
|
|
929
|
-
}
|
|
930
|
-
|
|
931
|
-
/**
|
|
932
|
-
* Convert this reference to its string representation.
|
|
933
|
-
*/
|
|
934
|
-
toRefString(): string {
|
|
935
|
-
const prefix = '$' + '^'.repeat(this.ups);
|
|
936
|
-
const pathStr = this.refPath
|
|
937
|
-
.map((seg, i) => {
|
|
938
|
-
if (typeof seg === 'number') {
|
|
939
|
-
return `[${seg}]`;
|
|
940
|
-
}
|
|
941
|
-
const quoted = this.quoteSegment(seg);
|
|
942
|
-
return i === 0 ? quoted : `.${quoted}`;
|
|
943
|
-
})
|
|
944
|
-
.join('');
|
|
945
|
-
return prefix + pathStr;
|
|
946
|
-
}
|
|
947
|
-
|
|
948
|
-
// Override virtual accessors to resolve the reference
|
|
949
|
-
override getEq(): TagValue | undefined {
|
|
950
|
-
return this.resolve()?.getEq();
|
|
951
|
-
}
|
|
952
|
-
|
|
953
|
-
override getProperty(name: string): Tag | undefined {
|
|
954
|
-
return this.resolve()?.getProperty(name);
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
override getArrayElement(index: number): Tag | undefined {
|
|
958
|
-
return this.resolve()?.getArrayElement(index);
|
|
959
|
-
}
|
|
960
|
-
|
|
961
|
-
override hasProperties(): boolean {
|
|
962
|
-
return this.resolve()?.hasProperties() ?? false;
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
/**
|
|
966
|
-
* For toObject, resolve the reference and return the target's object value.
|
|
967
|
-
* This creates actual object pointers (circular references are allowed).
|
|
968
|
-
* Detects cycles in the reference chain to prevent infinite recursion.
|
|
969
|
-
*/
|
|
970
|
-
override toObjectValue(resolving: Set<RefTag>): unknown {
|
|
971
|
-
// Check for cycle in reference chain
|
|
972
|
-
if (resolving.has(this)) {
|
|
973
|
-
// We're in a cycle - return undefined to break it
|
|
974
|
-
// (The cycle will be completed when the outer resolution finishes)
|
|
975
|
-
return undefined;
|
|
976
|
-
}
|
|
977
|
-
|
|
978
|
-
const resolved = this.resolve();
|
|
979
|
-
if (resolved === undefined) {
|
|
980
|
-
return undefined;
|
|
981
|
-
}
|
|
982
|
-
|
|
983
|
-
// Track that we're resolving this RefTag
|
|
984
|
-
resolving.add(this);
|
|
985
|
-
const result = resolved.toObjectValue(resolving);
|
|
986
|
-
resolving.delete(this);
|
|
987
|
-
|
|
988
|
-
return result;
|
|
989
|
-
}
|
|
990
|
-
|
|
991
|
-
/**
|
|
992
|
-
* For JSON serialization, return a marker object instead of resolving.
|
|
993
|
-
*/
|
|
994
|
-
override toJSON(): TagJSON {
|
|
995
|
-
return {linkTo: this.toRefString()};
|
|
996
|
-
}
|
|
997
|
-
|
|
998
|
-
/**
|
|
999
|
-
* Check if this reference resolves, add error if not.
|
|
1000
|
-
*/
|
|
1001
|
-
override collectReferenceErrors(errors: string[], path: string[]): void {
|
|
1002
|
-
if (this.resolve() === undefined) {
|
|
1003
|
-
const location = path.length > 0 ? path.join('.') : 'root';
|
|
1004
|
-
errors.push(`Unresolved reference at ${location}: ${this.toRefString()}`);
|
|
1005
|
-
}
|
|
1006
|
-
}
|
|
1007
|
-
|
|
1008
|
-
/**
|
|
1009
|
-
* Clone this RefTag, preserving the reference information.
|
|
1010
|
-
*/
|
|
1011
|
-
override clone(newParent?: Tag): RefTag {
|
|
1012
|
-
const cloned = new RefTag(this.ups, [...this.refPath], newParent);
|
|
1013
|
-
cloned._clonedFrom = this;
|
|
1014
|
-
return cloned;
|
|
1015
|
-
}
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
785
|
/**
|
|
1019
786
|
* Convert a Tag to a plain TagInterface without internal fields like _parent.
|
|
1020
787
|
* Useful for test comparisons.
|