@malloydata/malloy-tag 0.0.353 → 0.0.355
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 +12 -74
- package/dist/tags.js +29 -235
- package/dist/tags.js.map +1 -1
- package/package.json +2 -2
- package/src/parser.ts +7 -6
- package/src/tags.ts +32 -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.
|
|
@@ -101,11 +97,8 @@ export declare class Tag {
|
|
|
101
97
|
isFalse(...at: Path): boolean;
|
|
102
98
|
date(...at: Path): Date | undefined;
|
|
103
99
|
bare(...at: Path): boolean | undefined;
|
|
104
|
-
/** Virtual accessor for eq - overridden in RefTag to resolve */
|
|
105
100
|
getEq(): TagValue | undefined;
|
|
106
|
-
/** Virtual accessor for a property - overridden in RefTag to resolve */
|
|
107
101
|
getProperty(name: string): Tag | undefined;
|
|
108
|
-
/** Virtual accessor for an array element - overridden in RefTag to resolve */
|
|
109
102
|
getArrayElement(index: number): Tag | undefined;
|
|
110
103
|
get dict(): Record<string, Tag>;
|
|
111
104
|
/** Iterate over [name, Tag] pairs for each property */
|
|
@@ -119,20 +112,6 @@ export declare class Tag {
|
|
|
119
112
|
numericArray(...at: Path): number[] | undefined;
|
|
120
113
|
getProperties(): Record<string, Tag>;
|
|
121
114
|
clone(newParent?: Tag): Tag;
|
|
122
|
-
private static scalarToObject;
|
|
123
|
-
private static tagToObject;
|
|
124
|
-
/**
|
|
125
|
-
* Convert to a plain JS object. References are resolved to actual
|
|
126
|
-
* object pointers (which may be circular in JS - that's fine).
|
|
127
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
128
|
-
*/
|
|
129
|
-
toObject(resolving?: Set<RefTag>): Record<string, unknown>;
|
|
130
|
-
/**
|
|
131
|
-
* Convert this tag's value to a plain JS object.
|
|
132
|
-
* Override in RefTag to resolve references.
|
|
133
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
134
|
-
*/
|
|
135
|
-
toObjectValue(resolving: Set<RefTag>): unknown;
|
|
136
115
|
/**
|
|
137
116
|
* Custom JSON serialization that excludes _parent to avoid circular references.
|
|
138
117
|
* This is called automatically by JSON.stringify().
|
|
@@ -163,6 +142,15 @@ export declare class Tag {
|
|
|
163
142
|
* Returns true if this tag was accessed via find/has/text/etc.
|
|
164
143
|
*/
|
|
165
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
|
+
}>;
|
|
166
154
|
/**
|
|
167
155
|
* Recursively reset read tracking on this tag and all descendants.
|
|
168
156
|
*/
|
|
@@ -178,56 +166,6 @@ export declare class Tag {
|
|
|
178
166
|
unset(...path: Path): Tag;
|
|
179
167
|
private remove;
|
|
180
168
|
}
|
|
181
|
-
/**
|
|
182
|
-
* A tag that references another location in the tag tree.
|
|
183
|
-
* When accessed, it dereferences to the target tag.
|
|
184
|
-
*
|
|
185
|
-
* Reference syntax:
|
|
186
|
-
* $path.to.thing - absolute from root
|
|
187
|
-
* $^thing - up one level, then 'thing'
|
|
188
|
-
* $^^thing - up two levels, then 'thing'
|
|
189
|
-
* $items[0].name - with array indexing
|
|
190
|
-
*/
|
|
191
|
-
export declare class RefTag extends Tag {
|
|
192
|
-
readonly ups: number;
|
|
193
|
-
readonly refPath: Path;
|
|
194
|
-
constructor(ups: number, refPath: Path, parent?: Tag);
|
|
195
|
-
/**
|
|
196
|
-
* Resolve this reference to the target tag.
|
|
197
|
-
* Returns undefined if the reference cannot be resolved.
|
|
198
|
-
*/
|
|
199
|
-
resolve(): Tag | undefined;
|
|
200
|
-
/**
|
|
201
|
-
* Quote an identifier if it contains special characters.
|
|
202
|
-
*/
|
|
203
|
-
private quoteSegment;
|
|
204
|
-
/**
|
|
205
|
-
* Convert this reference to its string representation.
|
|
206
|
-
*/
|
|
207
|
-
toRefString(): string;
|
|
208
|
-
getEq(): TagValue | undefined;
|
|
209
|
-
getProperty(name: string): Tag | undefined;
|
|
210
|
-
getArrayElement(index: number): Tag | undefined;
|
|
211
|
-
hasProperties(): boolean;
|
|
212
|
-
/**
|
|
213
|
-
* For toObject, resolve the reference and return the target's object value.
|
|
214
|
-
* This creates actual object pointers (circular references are allowed).
|
|
215
|
-
* Detects cycles in the reference chain to prevent infinite recursion.
|
|
216
|
-
*/
|
|
217
|
-
toObjectValue(resolving: Set<RefTag>): unknown;
|
|
218
|
-
/**
|
|
219
|
-
* For JSON serialization, return a marker object instead of resolving.
|
|
220
|
-
*/
|
|
221
|
-
toJSON(): TagJSON;
|
|
222
|
-
/**
|
|
223
|
-
* Check if this reference resolves, add error if not.
|
|
224
|
-
*/
|
|
225
|
-
collectReferenceErrors(errors: string[], path: string[]): void;
|
|
226
|
-
/**
|
|
227
|
-
* Clone this RefTag, preserving the reference information.
|
|
228
|
-
*/
|
|
229
|
-
clone(newParent?: Tag): RefTag;
|
|
230
|
-
}
|
|
231
169
|
/**
|
|
232
170
|
* Convert a Tag to a plain TagInterface without internal fields like _parent.
|
|
233
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 {
|
|
@@ -200,16 +199,13 @@ class Tag {
|
|
|
200
199
|
}
|
|
201
200
|
return !p.hasProperties();
|
|
202
201
|
}
|
|
203
|
-
/** Virtual accessor for eq - overridden in RefTag to resolve */
|
|
204
202
|
getEq() {
|
|
205
203
|
return this.eq;
|
|
206
204
|
}
|
|
207
|
-
/** Virtual accessor for a property - overridden in RefTag to resolve */
|
|
208
205
|
getProperty(name) {
|
|
209
206
|
var _a;
|
|
210
207
|
return (_a = this.properties) === null || _a === void 0 ? void 0 : _a[name];
|
|
211
208
|
}
|
|
212
|
-
/** Virtual accessor for an array element - overridden in RefTag to resolve */
|
|
213
209
|
getArrayElement(index) {
|
|
214
210
|
if (Array.isArray(this.eq) && index < this.eq.length) {
|
|
215
211
|
return this.eq[index];
|
|
@@ -304,6 +300,8 @@ class Tag {
|
|
|
304
300
|
return this.properties;
|
|
305
301
|
}
|
|
306
302
|
clone(newParent) {
|
|
303
|
+
// Mark the source as read — cloning consumes the original.
|
|
304
|
+
this._read = true;
|
|
307
305
|
const cloned = new Tag({}, newParent);
|
|
308
306
|
cloned.prefix = this.prefix;
|
|
309
307
|
cloned.deleted = this.deleted;
|
|
@@ -326,97 +324,6 @@ class Tag {
|
|
|
326
324
|
}
|
|
327
325
|
return cloned;
|
|
328
326
|
}
|
|
329
|
-
static scalarToObject(val) {
|
|
330
|
-
return val;
|
|
331
|
-
}
|
|
332
|
-
static tagToObject(tag) {
|
|
333
|
-
const hasProps = tag.properties !== undefined && Object.keys(tag.properties).length > 0;
|
|
334
|
-
const hasValue = tag.eq !== undefined;
|
|
335
|
-
// Bare tag (no value, no properties)
|
|
336
|
-
if (!hasValue && !hasProps) {
|
|
337
|
-
return true;
|
|
338
|
-
}
|
|
339
|
-
// Properties only
|
|
340
|
-
if (!hasValue && hasProps) {
|
|
341
|
-
const result = {};
|
|
342
|
-
for (const [key, val] of Object.entries(tag.properties)) {
|
|
343
|
-
if (!val.deleted) {
|
|
344
|
-
result[key] = Tag.tagToObject(val);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
return result;
|
|
348
|
-
}
|
|
349
|
-
// Value only
|
|
350
|
-
if (hasValue && !hasProps) {
|
|
351
|
-
if (Array.isArray(tag.eq)) {
|
|
352
|
-
return tag.eq.map(el => Tag.tagToObject(el));
|
|
353
|
-
}
|
|
354
|
-
return Tag.scalarToObject(tag.eq);
|
|
355
|
-
}
|
|
356
|
-
// Both value and properties
|
|
357
|
-
const result = {};
|
|
358
|
-
if (Array.isArray(tag.eq)) {
|
|
359
|
-
result['='] = tag.eq.map(el => Tag.tagToObject(el));
|
|
360
|
-
}
|
|
361
|
-
else {
|
|
362
|
-
result['='] = Tag.scalarToObject(tag.eq);
|
|
363
|
-
}
|
|
364
|
-
for (const [key, val] of Object.entries(tag.properties)) {
|
|
365
|
-
if (!val.deleted) {
|
|
366
|
-
result[key] = Tag.tagToObject(val);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
return result;
|
|
370
|
-
}
|
|
371
|
-
/**
|
|
372
|
-
* Convert to a plain JS object. References are resolved to actual
|
|
373
|
-
* object pointers (which may be circular in JS - that's fine).
|
|
374
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
375
|
-
*/
|
|
376
|
-
toObject(resolving = new Set()) {
|
|
377
|
-
const result = {};
|
|
378
|
-
if (this.properties) {
|
|
379
|
-
for (const [key, prop] of Object.entries(this.properties)) {
|
|
380
|
-
if (!prop.deleted) {
|
|
381
|
-
result[key] = prop.toObjectValue(resolving);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
return result;
|
|
386
|
-
}
|
|
387
|
-
/**
|
|
388
|
-
* Convert this tag's value to a plain JS object.
|
|
389
|
-
* Override in RefTag to resolve references.
|
|
390
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
391
|
-
*/
|
|
392
|
-
toObjectValue(resolving) {
|
|
393
|
-
const hasProps = this.properties !== undefined && Object.keys(this.properties).length > 0;
|
|
394
|
-
const hasValue = this.eq !== undefined;
|
|
395
|
-
// Bare tag (no value, no properties)
|
|
396
|
-
if (!hasValue && !hasProps) {
|
|
397
|
-
return true;
|
|
398
|
-
}
|
|
399
|
-
// Properties only
|
|
400
|
-
if (!hasValue && hasProps) {
|
|
401
|
-
return this.toObject(resolving);
|
|
402
|
-
}
|
|
403
|
-
// Value only
|
|
404
|
-
if (hasValue && !hasProps) {
|
|
405
|
-
if (Array.isArray(this.eq)) {
|
|
406
|
-
return this.eq.map(el => el.toObjectValue(resolving));
|
|
407
|
-
}
|
|
408
|
-
return this.eq;
|
|
409
|
-
}
|
|
410
|
-
// Both value and properties
|
|
411
|
-
const result = this.toObject(resolving);
|
|
412
|
-
if (Array.isArray(this.eq)) {
|
|
413
|
-
result['='] = this.eq.map(el => el.toObjectValue(resolving));
|
|
414
|
-
}
|
|
415
|
-
else {
|
|
416
|
-
result['='] = this.eq;
|
|
417
|
-
}
|
|
418
|
-
return result;
|
|
419
|
-
}
|
|
420
327
|
/**
|
|
421
328
|
* Custom JSON serialization that excludes _parent to avoid circular references.
|
|
422
329
|
* This is called automatically by JSON.stringify().
|
|
@@ -443,6 +350,9 @@ class Tag {
|
|
|
443
350
|
if (this.prefix) {
|
|
444
351
|
result.prefix = this.prefix;
|
|
445
352
|
}
|
|
353
|
+
if (this.location) {
|
|
354
|
+
result.location = this.location;
|
|
355
|
+
}
|
|
446
356
|
return result;
|
|
447
357
|
}
|
|
448
358
|
/**
|
|
@@ -597,21 +507,37 @@ class Tag {
|
|
|
597
507
|
return this._read;
|
|
598
508
|
}
|
|
599
509
|
/**
|
|
600
|
-
*
|
|
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.
|
|
601
513
|
*/
|
|
602
|
-
|
|
603
|
-
this._read = false;
|
|
514
|
+
*walk(prefix = []) {
|
|
604
515
|
if (this.properties) {
|
|
605
|
-
for (const prop of Object.
|
|
606
|
-
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);
|
|
607
522
|
}
|
|
608
523
|
}
|
|
609
524
|
if (Array.isArray(this.eq)) {
|
|
610
|
-
for (
|
|
611
|
-
|
|
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);
|
|
612
529
|
}
|
|
613
530
|
}
|
|
614
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
|
+
}
|
|
615
541
|
/**
|
|
616
542
|
* Collect all unread, non-deleted property names in this tag tree.
|
|
617
543
|
* Returns paths like ['viz', 'yy'] for nested unread properties.
|
|
@@ -769,138 +695,6 @@ exports.Tag = Tag;
|
|
|
769
695
|
// --- Just for debugging ---
|
|
770
696
|
Tag.ids = new Map();
|
|
771
697
|
Tag.nextTagId = 1000;
|
|
772
|
-
/**
|
|
773
|
-
* A tag that references another location in the tag tree.
|
|
774
|
-
* When accessed, it dereferences to the target tag.
|
|
775
|
-
*
|
|
776
|
-
* Reference syntax:
|
|
777
|
-
* $path.to.thing - absolute from root
|
|
778
|
-
* $^thing - up one level, then 'thing'
|
|
779
|
-
* $^^thing - up two levels, then 'thing'
|
|
780
|
-
* $items[0].name - with array indexing
|
|
781
|
-
*/
|
|
782
|
-
class RefTag extends Tag {
|
|
783
|
-
constructor(ups, refPath, parent) {
|
|
784
|
-
super({}, parent);
|
|
785
|
-
this.ups = ups;
|
|
786
|
-
this.refPath = refPath;
|
|
787
|
-
}
|
|
788
|
-
/**
|
|
789
|
-
* Resolve this reference to the target tag.
|
|
790
|
-
* Returns undefined if the reference cannot be resolved.
|
|
791
|
-
*/
|
|
792
|
-
resolve() {
|
|
793
|
-
// Start from the appropriate point based on ups
|
|
794
|
-
let current;
|
|
795
|
-
if (this.ups === 0) {
|
|
796
|
-
// Absolute reference from root
|
|
797
|
-
current = this.root;
|
|
798
|
-
}
|
|
799
|
-
else {
|
|
800
|
-
// Relative reference - go up 'ups' levels from parent
|
|
801
|
-
// $^ means go up 1 level from the containing scope
|
|
802
|
-
current = this.parent;
|
|
803
|
-
for (let i = 0; i < this.ups && current !== undefined; i++) {
|
|
804
|
-
current = current.parent;
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
if (current === undefined) {
|
|
808
|
-
return undefined;
|
|
809
|
-
}
|
|
810
|
-
// Follow the path
|
|
811
|
-
return current.find(this.refPath);
|
|
812
|
-
}
|
|
813
|
-
/**
|
|
814
|
-
* Quote an identifier if it contains special characters.
|
|
815
|
-
*/
|
|
816
|
-
quoteSegment(seg) {
|
|
817
|
-
// Match bareString from peggy grammar: [0-9A-Za-z_\u00C0-\u024F\u1E00-\u1EFF]+
|
|
818
|
-
if (/^[0-9A-Za-z_\u00C0-\u024F\u1E00-\u1EFF]+$/.test(seg)) {
|
|
819
|
-
return seg;
|
|
820
|
-
}
|
|
821
|
-
// Otherwise, backquote it (escaping backslashes and backquotes)
|
|
822
|
-
return '`' + seg.replace(/\\/g, '\\\\').replace(/`/g, '\\`') + '`';
|
|
823
|
-
}
|
|
824
|
-
/**
|
|
825
|
-
* Convert this reference to its string representation.
|
|
826
|
-
*/
|
|
827
|
-
toRefString() {
|
|
828
|
-
const prefix = '$' + '^'.repeat(this.ups);
|
|
829
|
-
const pathStr = this.refPath
|
|
830
|
-
.map((seg, i) => {
|
|
831
|
-
if (typeof seg === 'number') {
|
|
832
|
-
return `[${seg}]`;
|
|
833
|
-
}
|
|
834
|
-
const quoted = this.quoteSegment(seg);
|
|
835
|
-
return i === 0 ? quoted : `.${quoted}`;
|
|
836
|
-
})
|
|
837
|
-
.join('');
|
|
838
|
-
return prefix + pathStr;
|
|
839
|
-
}
|
|
840
|
-
// Override virtual accessors to resolve the reference
|
|
841
|
-
getEq() {
|
|
842
|
-
var _a;
|
|
843
|
-
return (_a = this.resolve()) === null || _a === void 0 ? void 0 : _a.getEq();
|
|
844
|
-
}
|
|
845
|
-
getProperty(name) {
|
|
846
|
-
var _a;
|
|
847
|
-
return (_a = this.resolve()) === null || _a === void 0 ? void 0 : _a.getProperty(name);
|
|
848
|
-
}
|
|
849
|
-
getArrayElement(index) {
|
|
850
|
-
var _a;
|
|
851
|
-
return (_a = this.resolve()) === null || _a === void 0 ? void 0 : _a.getArrayElement(index);
|
|
852
|
-
}
|
|
853
|
-
hasProperties() {
|
|
854
|
-
var _a, _b;
|
|
855
|
-
return (_b = (_a = this.resolve()) === null || _a === void 0 ? void 0 : _a.hasProperties()) !== null && _b !== void 0 ? _b : false;
|
|
856
|
-
}
|
|
857
|
-
/**
|
|
858
|
-
* For toObject, resolve the reference and return the target's object value.
|
|
859
|
-
* This creates actual object pointers (circular references are allowed).
|
|
860
|
-
* Detects cycles in the reference chain to prevent infinite recursion.
|
|
861
|
-
*/
|
|
862
|
-
toObjectValue(resolving) {
|
|
863
|
-
// Check for cycle in reference chain
|
|
864
|
-
if (resolving.has(this)) {
|
|
865
|
-
// We're in a cycle - return undefined to break it
|
|
866
|
-
// (The cycle will be completed when the outer resolution finishes)
|
|
867
|
-
return undefined;
|
|
868
|
-
}
|
|
869
|
-
const resolved = this.resolve();
|
|
870
|
-
if (resolved === undefined) {
|
|
871
|
-
return undefined;
|
|
872
|
-
}
|
|
873
|
-
// Track that we're resolving this RefTag
|
|
874
|
-
resolving.add(this);
|
|
875
|
-
const result = resolved.toObjectValue(resolving);
|
|
876
|
-
resolving.delete(this);
|
|
877
|
-
return result;
|
|
878
|
-
}
|
|
879
|
-
/**
|
|
880
|
-
* For JSON serialization, return a marker object instead of resolving.
|
|
881
|
-
*/
|
|
882
|
-
toJSON() {
|
|
883
|
-
return { linkTo: this.toRefString() };
|
|
884
|
-
}
|
|
885
|
-
/**
|
|
886
|
-
* Check if this reference resolves, add error if not.
|
|
887
|
-
*/
|
|
888
|
-
collectReferenceErrors(errors, path) {
|
|
889
|
-
if (this.resolve() === undefined) {
|
|
890
|
-
const location = path.length > 0 ? path.join('.') : 'root';
|
|
891
|
-
errors.push(`Unresolved reference at ${location}: ${this.toRefString()}`);
|
|
892
|
-
}
|
|
893
|
-
}
|
|
894
|
-
/**
|
|
895
|
-
* Clone this RefTag, preserving the reference information.
|
|
896
|
-
*/
|
|
897
|
-
clone(newParent) {
|
|
898
|
-
const cloned = new RefTag(this.ups, [...this.refPath], newParent);
|
|
899
|
-
cloned._clonedFrom = this;
|
|
900
|
-
return cloned;
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
exports.RefTag = RefTag;
|
|
904
698
|
/**
|
|
905
699
|
* Convert a Tag to a plain TagInterface without internal fields like _parent.
|
|
906
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloydata/malloy-tag",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.355",
|
|
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
|
/**
|
|
@@ -285,17 +276,14 @@ export class Tag {
|
|
|
285
276
|
return !p.hasProperties();
|
|
286
277
|
}
|
|
287
278
|
|
|
288
|
-
/** Virtual accessor for eq - overridden in RefTag to resolve */
|
|
289
279
|
getEq(): TagValue | undefined {
|
|
290
280
|
return this.eq;
|
|
291
281
|
}
|
|
292
282
|
|
|
293
|
-
/** Virtual accessor for a property - overridden in RefTag to resolve */
|
|
294
283
|
getProperty(name: string): Tag | undefined {
|
|
295
284
|
return this.properties?.[name];
|
|
296
285
|
}
|
|
297
286
|
|
|
298
|
-
/** Virtual accessor for an array element - overridden in RefTag to resolve */
|
|
299
287
|
getArrayElement(index: number): Tag | undefined {
|
|
300
288
|
if (Array.isArray(this.eq) && index < this.eq.length) {
|
|
301
289
|
return this.eq[index];
|
|
@@ -400,6 +388,8 @@ export class Tag {
|
|
|
400
388
|
}
|
|
401
389
|
|
|
402
390
|
clone(newParent?: Tag): Tag {
|
|
391
|
+
// Mark the source as read — cloning consumes the original.
|
|
392
|
+
this._read = true;
|
|
403
393
|
const cloned = new Tag({}, newParent);
|
|
404
394
|
cloned.prefix = this.prefix;
|
|
405
395
|
cloned.deleted = this.deleted;
|
|
@@ -425,117 +415,12 @@ export class Tag {
|
|
|
425
415
|
return cloned;
|
|
426
416
|
}
|
|
427
417
|
|
|
428
|
-
private static scalarToObject(
|
|
429
|
-
val: TagScalar
|
|
430
|
-
): string | number | boolean | Date {
|
|
431
|
-
return val;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
private static tagToObject(tag: TagInterface): unknown {
|
|
435
|
-
const hasProps =
|
|
436
|
-
tag.properties !== undefined && Object.keys(tag.properties).length > 0;
|
|
437
|
-
const hasValue = tag.eq !== undefined;
|
|
438
|
-
|
|
439
|
-
// Bare tag (no value, no properties)
|
|
440
|
-
if (!hasValue && !hasProps) {
|
|
441
|
-
return true;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
// Properties only
|
|
445
|
-
if (!hasValue && hasProps) {
|
|
446
|
-
const result: Record<string, unknown> = {};
|
|
447
|
-
for (const [key, val] of Object.entries(tag.properties!)) {
|
|
448
|
-
if (!val.deleted) {
|
|
449
|
-
result[key] = Tag.tagToObject(val);
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
return result;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
// Value only
|
|
456
|
-
if (hasValue && !hasProps) {
|
|
457
|
-
if (Array.isArray(tag.eq)) {
|
|
458
|
-
return tag.eq.map(el => Tag.tagToObject(el));
|
|
459
|
-
}
|
|
460
|
-
return Tag.scalarToObject(tag.eq!);
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
// Both value and properties
|
|
464
|
-
const result: Record<string, unknown> = {};
|
|
465
|
-
if (Array.isArray(tag.eq)) {
|
|
466
|
-
result['='] = tag.eq.map(el => Tag.tagToObject(el));
|
|
467
|
-
} else {
|
|
468
|
-
result['='] = Tag.scalarToObject(tag.eq!);
|
|
469
|
-
}
|
|
470
|
-
for (const [key, val] of Object.entries(tag.properties!)) {
|
|
471
|
-
if (!val.deleted) {
|
|
472
|
-
result[key] = Tag.tagToObject(val);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
return result;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
/**
|
|
479
|
-
* Convert to a plain JS object. References are resolved to actual
|
|
480
|
-
* object pointers (which may be circular in JS - that's fine).
|
|
481
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
482
|
-
*/
|
|
483
|
-
toObject(resolving: Set<RefTag> = new Set()): Record<string, unknown> {
|
|
484
|
-
const result: Record<string, unknown> = {};
|
|
485
|
-
if (this.properties) {
|
|
486
|
-
for (const [key, prop] of Object.entries(this.properties)) {
|
|
487
|
-
if (!prop.deleted) {
|
|
488
|
-
result[key] = prop.toObjectValue(resolving);
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
return result;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
/**
|
|
496
|
-
* Convert this tag's value to a plain JS object.
|
|
497
|
-
* Override in RefTag to resolve references.
|
|
498
|
-
* @param resolving - RefTags currently being resolved (for cycle detection)
|
|
499
|
-
*/
|
|
500
|
-
toObjectValue(resolving: Set<RefTag>): unknown {
|
|
501
|
-
const hasProps =
|
|
502
|
-
this.properties !== undefined && Object.keys(this.properties).length > 0;
|
|
503
|
-
const hasValue = this.eq !== undefined;
|
|
504
|
-
|
|
505
|
-
// Bare tag (no value, no properties)
|
|
506
|
-
if (!hasValue && !hasProps) {
|
|
507
|
-
return true;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
// Properties only
|
|
511
|
-
if (!hasValue && hasProps) {
|
|
512
|
-
return this.toObject(resolving);
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
// Value only
|
|
516
|
-
if (hasValue && !hasProps) {
|
|
517
|
-
if (Array.isArray(this.eq)) {
|
|
518
|
-
return this.eq.map(el => el.toObjectValue(resolving));
|
|
519
|
-
}
|
|
520
|
-
return this.eq;
|
|
521
|
-
}
|
|
522
|
-
|
|
523
|
-
// Both value and properties
|
|
524
|
-
const result: Record<string, unknown> = this.toObject(resolving);
|
|
525
|
-
if (Array.isArray(this.eq)) {
|
|
526
|
-
result['='] = this.eq.map(el => el.toObjectValue(resolving));
|
|
527
|
-
} else {
|
|
528
|
-
result['='] = this.eq;
|
|
529
|
-
}
|
|
530
|
-
return result;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
418
|
/**
|
|
534
419
|
* Custom JSON serialization that excludes _parent to avoid circular references.
|
|
535
420
|
* This is called automatically by JSON.stringify().
|
|
536
421
|
*/
|
|
537
422
|
toJSON(): TagJSON {
|
|
538
|
-
const result:
|
|
423
|
+
const result: TagJSON = {};
|
|
539
424
|
if (this.eq !== undefined) {
|
|
540
425
|
if (Array.isArray(this.eq)) {
|
|
541
426
|
result.eq = this.eq.map(el => el.toJSON());
|
|
@@ -555,6 +440,9 @@ export class Tag {
|
|
|
555
440
|
if (this.prefix) {
|
|
556
441
|
result.prefix = this.prefix;
|
|
557
442
|
}
|
|
443
|
+
if (this.location) {
|
|
444
|
+
result.location = this.location;
|
|
445
|
+
}
|
|
558
446
|
return result;
|
|
559
447
|
}
|
|
560
448
|
|
|
@@ -712,22 +600,38 @@ export class Tag {
|
|
|
712
600
|
}
|
|
713
601
|
|
|
714
602
|
/**
|
|
715
|
-
*
|
|
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.
|
|
716
606
|
*/
|
|
717
|
-
|
|
718
|
-
this._read = false;
|
|
607
|
+
*walk(prefix: string[] = []): Generator<{path: string[]; tag: Tag}> {
|
|
719
608
|
if (this.properties) {
|
|
720
|
-
for (const prop of Object.
|
|
721
|
-
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);
|
|
722
614
|
}
|
|
723
615
|
}
|
|
724
616
|
if (Array.isArray(this.eq)) {
|
|
725
|
-
for (
|
|
726
|
-
|
|
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);
|
|
727
621
|
}
|
|
728
622
|
}
|
|
729
623
|
}
|
|
730
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
|
+
|
|
731
635
|
/**
|
|
732
636
|
* Collect all unread, non-deleted property names in this tag tree.
|
|
733
637
|
* Returns paths like ['viz', 'yy'] for nested unread properties.
|
|
@@ -878,152 +782,6 @@ export class Tag {
|
|
|
878
782
|
}
|
|
879
783
|
}
|
|
880
784
|
|
|
881
|
-
/**
|
|
882
|
-
* A tag that references another location in the tag tree.
|
|
883
|
-
* When accessed, it dereferences to the target tag.
|
|
884
|
-
*
|
|
885
|
-
* Reference syntax:
|
|
886
|
-
* $path.to.thing - absolute from root
|
|
887
|
-
* $^thing - up one level, then 'thing'
|
|
888
|
-
* $^^thing - up two levels, then 'thing'
|
|
889
|
-
* $items[0].name - with array indexing
|
|
890
|
-
*/
|
|
891
|
-
export class RefTag extends Tag {
|
|
892
|
-
readonly ups: number;
|
|
893
|
-
readonly refPath: Path;
|
|
894
|
-
|
|
895
|
-
constructor(ups: number, refPath: Path, parent?: Tag) {
|
|
896
|
-
super({}, parent);
|
|
897
|
-
this.ups = ups;
|
|
898
|
-
this.refPath = refPath;
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
/**
|
|
902
|
-
* Resolve this reference to the target tag.
|
|
903
|
-
* Returns undefined if the reference cannot be resolved.
|
|
904
|
-
*/
|
|
905
|
-
resolve(): Tag | undefined {
|
|
906
|
-
// Start from the appropriate point based on ups
|
|
907
|
-
let current: Tag | undefined;
|
|
908
|
-
if (this.ups === 0) {
|
|
909
|
-
// Absolute reference from root
|
|
910
|
-
current = this.root;
|
|
911
|
-
} else {
|
|
912
|
-
// Relative reference - go up 'ups' levels from parent
|
|
913
|
-
// $^ means go up 1 level from the containing scope
|
|
914
|
-
current = this.parent;
|
|
915
|
-
for (let i = 0; i < this.ups && current !== undefined; i++) {
|
|
916
|
-
current = current.parent;
|
|
917
|
-
}
|
|
918
|
-
}
|
|
919
|
-
|
|
920
|
-
if (current === undefined) {
|
|
921
|
-
return undefined;
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
// Follow the path
|
|
925
|
-
return current.find(this.refPath);
|
|
926
|
-
}
|
|
927
|
-
|
|
928
|
-
/**
|
|
929
|
-
* Quote an identifier if it contains special characters.
|
|
930
|
-
*/
|
|
931
|
-
private quoteSegment(seg: string): string {
|
|
932
|
-
// Match bareString from peggy grammar: [0-9A-Za-z_\u00C0-\u024F\u1E00-\u1EFF]+
|
|
933
|
-
if (/^[0-9A-Za-z_\u00C0-\u024F\u1E00-\u1EFF]+$/.test(seg)) {
|
|
934
|
-
return seg;
|
|
935
|
-
}
|
|
936
|
-
// Otherwise, backquote it (escaping backslashes and backquotes)
|
|
937
|
-
return '`' + seg.replace(/\\/g, '\\\\').replace(/`/g, '\\`') + '`';
|
|
938
|
-
}
|
|
939
|
-
|
|
940
|
-
/**
|
|
941
|
-
* Convert this reference to its string representation.
|
|
942
|
-
*/
|
|
943
|
-
toRefString(): string {
|
|
944
|
-
const prefix = '$' + '^'.repeat(this.ups);
|
|
945
|
-
const pathStr = this.refPath
|
|
946
|
-
.map((seg, i) => {
|
|
947
|
-
if (typeof seg === 'number') {
|
|
948
|
-
return `[${seg}]`;
|
|
949
|
-
}
|
|
950
|
-
const quoted = this.quoteSegment(seg);
|
|
951
|
-
return i === 0 ? quoted : `.${quoted}`;
|
|
952
|
-
})
|
|
953
|
-
.join('');
|
|
954
|
-
return prefix + pathStr;
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
// Override virtual accessors to resolve the reference
|
|
958
|
-
override getEq(): TagValue | undefined {
|
|
959
|
-
return this.resolve()?.getEq();
|
|
960
|
-
}
|
|
961
|
-
|
|
962
|
-
override getProperty(name: string): Tag | undefined {
|
|
963
|
-
return this.resolve()?.getProperty(name);
|
|
964
|
-
}
|
|
965
|
-
|
|
966
|
-
override getArrayElement(index: number): Tag | undefined {
|
|
967
|
-
return this.resolve()?.getArrayElement(index);
|
|
968
|
-
}
|
|
969
|
-
|
|
970
|
-
override hasProperties(): boolean {
|
|
971
|
-
return this.resolve()?.hasProperties() ?? false;
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
/**
|
|
975
|
-
* For toObject, resolve the reference and return the target's object value.
|
|
976
|
-
* This creates actual object pointers (circular references are allowed).
|
|
977
|
-
* Detects cycles in the reference chain to prevent infinite recursion.
|
|
978
|
-
*/
|
|
979
|
-
override toObjectValue(resolving: Set<RefTag>): unknown {
|
|
980
|
-
// Check for cycle in reference chain
|
|
981
|
-
if (resolving.has(this)) {
|
|
982
|
-
// We're in a cycle - return undefined to break it
|
|
983
|
-
// (The cycle will be completed when the outer resolution finishes)
|
|
984
|
-
return undefined;
|
|
985
|
-
}
|
|
986
|
-
|
|
987
|
-
const resolved = this.resolve();
|
|
988
|
-
if (resolved === undefined) {
|
|
989
|
-
return undefined;
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
// Track that we're resolving this RefTag
|
|
993
|
-
resolving.add(this);
|
|
994
|
-
const result = resolved.toObjectValue(resolving);
|
|
995
|
-
resolving.delete(this);
|
|
996
|
-
|
|
997
|
-
return result;
|
|
998
|
-
}
|
|
999
|
-
|
|
1000
|
-
/**
|
|
1001
|
-
* For JSON serialization, return a marker object instead of resolving.
|
|
1002
|
-
*/
|
|
1003
|
-
override toJSON(): TagJSON {
|
|
1004
|
-
return {linkTo: this.toRefString()};
|
|
1005
|
-
}
|
|
1006
|
-
|
|
1007
|
-
/**
|
|
1008
|
-
* Check if this reference resolves, add error if not.
|
|
1009
|
-
*/
|
|
1010
|
-
override collectReferenceErrors(errors: string[], path: string[]): void {
|
|
1011
|
-
if (this.resolve() === undefined) {
|
|
1012
|
-
const location = path.length > 0 ? path.join('.') : 'root';
|
|
1013
|
-
errors.push(`Unresolved reference at ${location}: ${this.toRefString()}`);
|
|
1014
|
-
}
|
|
1015
|
-
}
|
|
1016
|
-
|
|
1017
|
-
/**
|
|
1018
|
-
* Clone this RefTag, preserving the reference information.
|
|
1019
|
-
*/
|
|
1020
|
-
override clone(newParent?: Tag): RefTag {
|
|
1021
|
-
const cloned = new RefTag(this.ups, [...this.refPath], newParent);
|
|
1022
|
-
cloned._clonedFrom = this;
|
|
1023
|
-
return cloned;
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
|
-
|
|
1027
785
|
/**
|
|
1028
786
|
* Convert a Tag to a plain TagInterface without internal fields like _parent.
|
|
1029
787
|
* Useful for test comparisons.
|