@malloydata/malloy-tag 0.0.350 → 0.0.352

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './tags';
2
2
  export { parseTag, TagParser } from './parser';
3
+ export type { SourceOrigin } from './parser';
3
4
  export * as ParseUtil from './util';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,yCAAuB;AACvB,mCAA6C;AAArC,kGAAA,QAAQ,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC3B,oDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,yCAAuB;AACvB,mCAA6C;AAArC,kGAAA,QAAQ,OAAA;AAAE,mGAAA,SAAS,OAAA;AAE3B,oDAAoC"}
package/dist/parser.d.ts CHANGED
@@ -1,13 +1,23 @@
1
1
  import { Tag } from './tags';
2
2
  import type { TagParse } from './tags';
3
+ /**
4
+ * Where a MOTLY fragment came from in the host source.
5
+ * Used to resolve MOTLY-relative positions to absolute source locations.
6
+ */
7
+ export interface SourceOrigin {
8
+ url: string;
9
+ startLine: number;
10
+ startColumn: number;
11
+ }
3
12
  /**
4
13
  * Session-based parser for Malloy tag language. Create an instance,
5
14
  * call parse() for each line, then finish() to get the final Tag.
6
15
  */
7
16
  export declare class TagParser {
8
17
  private session;
18
+ private origins;
9
19
  constructor();
10
- parse(source: string): TagParse;
20
+ parse(source: string, origin?: SourceOrigin): TagParse;
11
21
  finish(): Tag;
12
22
  }
13
23
  /**
package/dist/parser.js CHANGED
@@ -33,85 +33,45 @@ function mapMOTLYError(error) {
33
33
  };
34
34
  }
35
35
  /**
36
- * Parse a reference string like "$^^path.to[0].thing" back into
37
- * structured form {ups, refPath}.
36
+ * Resolve a MOTLYLocation to a TagLocation using the source origin map.
38
37
  */
39
- function parseRefString(linkTo) {
40
- let i = 1;
41
- let ups = 0;
42
- while (i < linkTo.length && linkTo[i] === '^') {
43
- ups++;
44
- i++;
45
- }
46
- const refPath = [];
47
- const rest = linkTo.slice(i);
48
- if (rest.length === 0) {
49
- return { ups, refPath };
50
- }
51
- let pos = 0;
52
- let needDot = false;
53
- while (pos < rest.length) {
54
- if (rest[pos] === '.') {
55
- pos++;
56
- needDot = false;
57
- continue;
58
- }
59
- if (rest[pos] === '[') {
60
- const close = rest.indexOf(']', pos);
61
- refPath.push(Number(rest.slice(pos + 1, close)));
62
- pos = close + 1;
63
- needDot = true;
64
- continue;
65
- }
66
- if (needDot) {
67
- // Expected a dot separator but didn't get one
68
- }
69
- if (rest[pos] === '`') {
70
- pos++;
71
- let seg = '';
72
- while (pos < rest.length && rest[pos] !== '`') {
73
- if (rest[pos] === '\\') {
74
- pos++;
75
- seg += rest[pos];
76
- }
77
- else {
78
- seg += rest[pos];
79
- }
80
- pos++;
81
- }
82
- pos++;
83
- refPath.push(seg);
84
- needDot = true;
85
- continue;
86
- }
87
- let seg = '';
88
- while (pos < rest.length &&
89
- rest[pos] !== '.' &&
90
- rest[pos] !== '[' &&
91
- rest[pos] !== '`') {
92
- seg += rest[pos];
93
- pos++;
94
- }
95
- if (seg.length > 0) {
96
- refPath.push(seg);
97
- needDot = true;
98
- }
99
- }
100
- return { ups, refPath };
38
+ function resolveLocation(loc, origins) {
39
+ const origin = origins.get(loc.parseId);
40
+ if (!origin)
41
+ return undefined;
42
+ return {
43
+ url: origin.url,
44
+ range: {
45
+ start: {
46
+ line: origin.startLine + loc.begin.line,
47
+ character: loc.begin.line === 0
48
+ ? origin.startColumn + loc.begin.column
49
+ : loc.begin.column,
50
+ },
51
+ end: {
52
+ line: origin.startLine + loc.end.line,
53
+ character: loc.end.line === 0
54
+ ? origin.startColumn + loc.end.column
55
+ : loc.end.column,
56
+ },
57
+ },
58
+ };
101
59
  }
102
60
  /**
103
61
  * Convert a MOTLYPropertyValue (node or ref) into a Tag tree with parent links.
104
62
  * Env references (@env.NAME) are resolved from process.env during hydration.
105
63
  */
106
- function hydrate(pv, parent) {
64
+ function hydrate(pv, parent, origins) {
107
65
  if ((0, motly_ts_parser_1.isRef)(pv)) {
108
- const { ups, refPath } = parseRefString(pv.linkTo);
109
- return new tags_1.RefTag(ups, refPath, parent);
66
+ return new tags_1.RefTag(pv.linkUps, pv.linkTo, parent);
110
67
  }
111
68
  const tag = new tags_1.Tag({}, parent);
69
+ if (pv.location && origins) {
70
+ tag.location = resolveLocation(pv.location, origins);
71
+ }
112
72
  if (pv.eq !== undefined) {
113
73
  if (Array.isArray(pv.eq)) {
114
- tag.eq = pv.eq.map(el => hydrate(el, tag));
74
+ tag.eq = pv.eq.map(el => hydrate(el, tag, origins));
115
75
  }
116
76
  else if ((0, motly_ts_parser_1.isEnvRef)(pv.eq)) {
117
77
  const envVal = process.env[pv.eq.env];
@@ -129,7 +89,7 @@ function hydrate(pv, parent) {
129
89
  if (pv.properties !== undefined) {
130
90
  tag.properties = {};
131
91
  for (const [key, val] of Object.entries(pv.properties)) {
132
- tag.properties[key] = hydrate(val, tag);
92
+ tag.properties[key] = hydrate(val, tag, origins);
133
93
  }
134
94
  }
135
95
  if (pv.deleted) {
@@ -143,19 +103,29 @@ function hydrate(pv, parent) {
143
103
  */
144
104
  class TagParser {
145
105
  constructor() {
106
+ this.origins = new Map();
146
107
  this.session = new motly_ts_parser_1.MOTLYSession();
147
108
  }
148
- parse(source) {
109
+ parse(source, origin) {
149
110
  const stripped = stripPrefix(source);
150
- const errors = this.session.parse(stripped);
111
+ const { parseId, errors } = this.session.parse(stripped);
112
+ if (origin) {
113
+ // Adjust column for the stripped prefix
114
+ const prefixLen = source.length - stripped.length;
115
+ this.origins.set(parseId, {
116
+ url: origin.url,
117
+ startLine: origin.startLine,
118
+ startColumn: origin.startColumn + prefixLen,
119
+ });
120
+ }
151
121
  const tagErrors = errors.map(mapMOTLYError);
152
122
  const value = this.session.getValue();
153
- return { tag: hydrate(value), log: tagErrors };
123
+ return { tag: hydrate(value, undefined, this.origins), log: tagErrors };
154
124
  }
155
125
  finish() {
156
126
  const value = this.session.getValue();
157
127
  this.session.dispose();
158
- return hydrate(value);
128
+ return hydrate(value, undefined, this.origins);
159
129
  }
160
130
  }
161
131
  exports.TagParser = TagParser;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/dist/tags.d.ts CHANGED
@@ -4,6 +4,23 @@ export interface TagError {
4
4
  offset: number;
5
5
  code: string;
6
6
  }
7
+ /**
8
+ * Source location for a Tag node. Structurally compatible with
9
+ * DocumentLocation from the malloy package.
10
+ */
11
+ export interface TagLocation {
12
+ url: string;
13
+ range: {
14
+ start: {
15
+ line: number;
16
+ character: number;
17
+ };
18
+ end: {
19
+ line: number;
20
+ character: number;
21
+ };
22
+ };
23
+ }
7
24
  export type TagDict = Record<string, TagInterface>;
8
25
  export type TagScalar = string | number | boolean | Date;
9
26
  type TagValue = TagScalar | Tag[];
@@ -56,7 +73,10 @@ export declare class Tag {
56
73
  properties?: Record<string, Tag>;
57
74
  prefix?: string;
58
75
  deleted?: boolean;
76
+ location?: TagLocation;
59
77
  private _parent?;
78
+ private _read;
79
+ protected _clonedFrom?: Tag;
60
80
  /**
61
81
  * Get the parent tag, if this tag is part of a tree.
62
82
  */
@@ -132,6 +152,25 @@ export declare class Tag {
132
152
  private static serializeScalar;
133
153
  toString(): string;
134
154
  find(path: Path): Tag | undefined;
155
+ /**
156
+ * Mark this tag as read, propagating to the original if this is a clone.
157
+ * Only propagates one level (clone→original). This is sufficient because
158
+ * set() is the only operation that creates clones, and it doesn't chain.
159
+ */
160
+ private markRead;
161
+ /**
162
+ * Returns true if this tag was accessed via find/has/text/etc.
163
+ */
164
+ get wasRead(): boolean;
165
+ /**
166
+ * Recursively reset read tracking on this tag and all descendants.
167
+ */
168
+ resetReadTracking(): void;
169
+ /**
170
+ * Collect all unread, non-deleted property names in this tag tree.
171
+ * Returns paths like ['viz', 'yy'] for nested unread properties.
172
+ */
173
+ getUnreadProperties(prefix?: string[]): string[][];
135
174
  has(...path: Path): boolean;
136
175
  set(path: Path, value?: TagSetValue): Tag;
137
176
  delete(...path: Path): Tag;
package/dist/tags.js CHANGED
@@ -102,6 +102,7 @@ class Tag {
102
102
  return str;
103
103
  }
104
104
  constructor(from = {}, parent) {
105
+ this._read = false;
105
106
  if (parent !== undefined) {
106
107
  this._parent = parent;
107
108
  }
@@ -297,6 +298,8 @@ class Tag {
297
298
  const cloned = new Tag({}, newParent);
298
299
  cloned.prefix = this.prefix;
299
300
  cloned.deleted = this.deleted;
301
+ cloned.location = this.location;
302
+ cloned._clonedFrom = this;
300
303
  if (this.eq !== undefined) {
301
304
  if (Array.isArray(this.eq)) {
302
305
  cloned.eq = this.eq.map(el => el.clone(cloned));
@@ -562,10 +565,66 @@ class Tag {
562
565
  if (next === undefined) {
563
566
  return undefined;
564
567
  }
568
+ next.markRead();
565
569
  currentTag = next;
566
570
  }
567
571
  return currentTag.deleted ? undefined : currentTag;
568
572
  }
573
+ /**
574
+ * Mark this tag as read, propagating to the original if this is a clone.
575
+ * Only propagates one level (clone→original). This is sufficient because
576
+ * set() is the only operation that creates clones, and it doesn't chain.
577
+ */
578
+ markRead() {
579
+ this._read = true;
580
+ if (this._clonedFrom) {
581
+ this._clonedFrom._read = true;
582
+ }
583
+ }
584
+ /**
585
+ * Returns true if this tag was accessed via find/has/text/etc.
586
+ */
587
+ get wasRead() {
588
+ return this._read;
589
+ }
590
+ /**
591
+ * Recursively reset read tracking on this tag and all descendants.
592
+ */
593
+ resetReadTracking() {
594
+ this._read = false;
595
+ if (this.properties) {
596
+ for (const prop of Object.values(this.properties)) {
597
+ prop.resetReadTracking();
598
+ }
599
+ }
600
+ if (Array.isArray(this.eq)) {
601
+ for (const el of this.eq) {
602
+ el.resetReadTracking();
603
+ }
604
+ }
605
+ }
606
+ /**
607
+ * Collect all unread, non-deleted property names in this tag tree.
608
+ * Returns paths like ['viz', 'yy'] for nested unread properties.
609
+ */
610
+ getUnreadProperties(prefix = []) {
611
+ const unread = [];
612
+ if (this.properties) {
613
+ for (const [key, prop] of Object.entries(this.properties)) {
614
+ if (prop.deleted)
615
+ continue;
616
+ const path = [...prefix, key];
617
+ if (!prop._read) {
618
+ unread.push(path);
619
+ }
620
+ else {
621
+ // Recurse into read tags to find unread sub-properties
622
+ unread.push(...prop.getUnreadProperties(path));
623
+ }
624
+ }
625
+ }
626
+ return unread;
627
+ }
569
628
  has(...path) {
570
629
  return this.find(path) !== undefined;
571
630
  }
@@ -827,7 +886,9 @@ class RefTag extends Tag {
827
886
  * Clone this RefTag, preserving the reference information.
828
887
  */
829
888
  clone(newParent) {
830
- return new RefTag(this.ups, [...this.refPath], newParent);
889
+ const cloned = new RefTag(this.ups, [...this.refPath], newParent);
890
+ cloned._clonedFrom = this;
891
+ return cloned;
831
892
  }
832
893
  }
833
894
  exports.RefTag = RefTag;
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.350",
3
+ "version": "0.0.352",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -22,13 +22,14 @@
22
22
  },
23
23
  "scripts": {
24
24
  "test": "jest --config=../../jest.config.js",
25
- "clean": "rm -rf dist && tsc --build --clean && rm -f tsconfig.tsbuildinfo && rimraf @flowtyped",
25
+ "clean": "rm -rf dist && tsc --build --clean && rm -f tsconfig.tsbuildinfo && node ../../scripts/femto-build.js --clean && rimraf @flowtyped",
26
+ "dev": "tsc --build",
26
27
  "build": "tsc --build && npm run generate-flow",
27
28
  "prepublishOnly": "npm run clean && npm run build",
28
- "generate-flow": "ts-node ../../scripts/gen-flow.ts"
29
+ "generate-flow": "node ../../scripts/femto-build.js flow"
29
30
  },
30
31
  "dependencies": {
31
- "@malloydata/motly-ts-parser": "^0.3.0",
32
+ "@malloydata/motly-ts-parser": "^0.6.0",
32
33
  "assert": "^2.0.0"
33
34
  },
34
35
  "devDependencies": {
package/src/index.ts CHANGED
@@ -6,4 +6,5 @@
6
6
  */
7
7
  export * from './tags';
8
8
  export {parseTag, TagParser} from './parser';
9
+ export type {SourceOrigin} from './parser';
9
10
  export * as ParseUtil from './util';
package/src/parser.ts CHANGED
@@ -3,10 +3,24 @@
3
3
  * SPDX-License-Identifier: MIT
4
4
  */
5
5
 
6
- import type {MOTLYError, MOTLYPropertyValue} from '@malloydata/motly-ts-parser';
6
+ import type {
7
+ MOTLYError,
8
+ MOTLYLocation,
9
+ MOTLYPropertyValue,
10
+ } from '@malloydata/motly-ts-parser';
7
11
  import {MOTLYSession, isRef, isEnvRef} from '@malloydata/motly-ts-parser';
8
12
  import {Tag, RefTag} from './tags';
9
- import type {TagParse, TagError, Path} from './tags';
13
+ import type {TagParse, TagError, TagLocation} from './tags';
14
+
15
+ /**
16
+ * Where a MOTLY fragment came from in the host source.
17
+ * Used to resolve MOTLY-relative positions to absolute source locations.
18
+ */
19
+ export interface SourceOrigin {
20
+ url: string;
21
+ startLine: number;
22
+ startColumn: number;
23
+ }
10
24
 
11
25
  /**
12
26
  * Strip the Malloy tag prefix (e.g., "# " or "#(docs) ") from source.
@@ -35,98 +49,58 @@ function mapMOTLYError(error: MOTLYError): TagError {
35
49
  }
36
50
 
37
51
  /**
38
- * Parse a reference string like "$^^path.to[0].thing" back into
39
- * structured form {ups, refPath}.
52
+ * Resolve a MOTLYLocation to a TagLocation using the source origin map.
40
53
  */
41
- function parseRefString(linkTo: string): {ups: number; refPath: Path} {
42
- let i = 1;
43
- let ups = 0;
44
- while (i < linkTo.length && linkTo[i] === '^') {
45
- ups++;
46
- i++;
47
- }
48
-
49
- const refPath: Path = [];
50
- const rest = linkTo.slice(i);
51
-
52
- if (rest.length === 0) {
53
- return {ups, refPath};
54
- }
55
-
56
- let pos = 0;
57
- let needDot = false;
58
-
59
- while (pos < rest.length) {
60
- if (rest[pos] === '.') {
61
- pos++;
62
- needDot = false;
63
- continue;
64
- }
54
+ function resolveLocation(
55
+ loc: MOTLYLocation,
56
+ origins: Map<number, SourceOrigin>
57
+ ): TagLocation | undefined {
58
+ const origin = origins.get(loc.parseId);
59
+ if (!origin) return undefined;
65
60
 
66
- if (rest[pos] === '[') {
67
- const close = rest.indexOf(']', pos);
68
- refPath.push(Number(rest.slice(pos + 1, close)));
69
- pos = close + 1;
70
- needDot = true;
71
- continue;
72
- }
73
-
74
- if (needDot) {
75
- // Expected a dot separator but didn't get one
76
- }
77
-
78
- if (rest[pos] === '`') {
79
- pos++;
80
- let seg = '';
81
- while (pos < rest.length && rest[pos] !== '`') {
82
- if (rest[pos] === '\\') {
83
- pos++;
84
- seg += rest[pos];
85
- } else {
86
- seg += rest[pos];
87
- }
88
- pos++;
89
- }
90
- pos++;
91
- refPath.push(seg);
92
- needDot = true;
93
- continue;
94
- }
95
-
96
- let seg = '';
97
- while (
98
- pos < rest.length &&
99
- rest[pos] !== '.' &&
100
- rest[pos] !== '[' &&
101
- rest[pos] !== '`'
102
- ) {
103
- seg += rest[pos];
104
- pos++;
105
- }
106
- if (seg.length > 0) {
107
- refPath.push(seg);
108
- needDot = true;
109
- }
110
- }
111
-
112
- return {ups, refPath};
61
+ return {
62
+ url: origin.url,
63
+ range: {
64
+ start: {
65
+ line: origin.startLine + loc.begin.line,
66
+ character:
67
+ loc.begin.line === 0
68
+ ? origin.startColumn + loc.begin.column
69
+ : loc.begin.column,
70
+ },
71
+ end: {
72
+ line: origin.startLine + loc.end.line,
73
+ character:
74
+ loc.end.line === 0
75
+ ? origin.startColumn + loc.end.column
76
+ : loc.end.column,
77
+ },
78
+ },
79
+ };
113
80
  }
114
81
 
115
82
  /**
116
83
  * Convert a MOTLYPropertyValue (node or ref) into a Tag tree with parent links.
117
84
  * Env references (@env.NAME) are resolved from process.env during hydration.
118
85
  */
119
- function hydrate(pv: MOTLYPropertyValue, parent?: Tag): Tag {
86
+ function hydrate(
87
+ pv: MOTLYPropertyValue,
88
+ parent?: Tag,
89
+ origins?: Map<number, SourceOrigin>
90
+ ): Tag {
120
91
  if (isRef(pv)) {
121
- const {ups, refPath} = parseRefString(pv.linkTo);
122
- return new RefTag(ups, refPath, parent);
92
+ return new RefTag(pv.linkUps, pv.linkTo, parent);
123
93
  }
124
94
 
125
95
  const tag = new Tag({}, parent);
126
96
 
97
+ if (pv.location && origins) {
98
+ tag.location = resolveLocation(pv.location, origins);
99
+ }
100
+
127
101
  if (pv.eq !== undefined) {
128
102
  if (Array.isArray(pv.eq)) {
129
- tag.eq = pv.eq.map(el => hydrate(el, tag));
103
+ tag.eq = pv.eq.map(el => hydrate(el, tag, origins));
130
104
  } else if (isEnvRef(pv.eq)) {
131
105
  const envVal = process.env[pv.eq.env];
132
106
  if (envVal !== undefined) {
@@ -142,7 +116,7 @@ function hydrate(pv: MOTLYPropertyValue, parent?: Tag): Tag {
142
116
  if (pv.properties !== undefined) {
143
117
  tag.properties = {};
144
118
  for (const [key, val] of Object.entries(pv.properties)) {
145
- tag.properties[key] = hydrate(val, tag);
119
+ tag.properties[key] = hydrate(val, tag, origins);
146
120
  }
147
121
  }
148
122
 
@@ -159,23 +133,33 @@ function hydrate(pv: MOTLYPropertyValue, parent?: Tag): Tag {
159
133
  */
160
134
  export class TagParser {
161
135
  private session: MOTLYSession;
136
+ private origins = new Map<number, SourceOrigin>();
162
137
 
163
138
  constructor() {
164
139
  this.session = new MOTLYSession();
165
140
  }
166
141
 
167
- parse(source: string): TagParse {
142
+ parse(source: string, origin?: SourceOrigin): TagParse {
168
143
  const stripped = stripPrefix(source);
169
- const errors = this.session.parse(stripped);
144
+ const {parseId, errors} = this.session.parse(stripped);
145
+ if (origin) {
146
+ // Adjust column for the stripped prefix
147
+ const prefixLen = source.length - stripped.length;
148
+ this.origins.set(parseId, {
149
+ url: origin.url,
150
+ startLine: origin.startLine,
151
+ startColumn: origin.startColumn + prefixLen,
152
+ });
153
+ }
170
154
  const tagErrors = errors.map(mapMOTLYError);
171
155
  const value = this.session.getValue();
172
- return {tag: hydrate(value), log: tagErrors};
156
+ return {tag: hydrate(value, undefined, this.origins), log: tagErrors};
173
157
  }
174
158
 
175
159
  finish(): Tag {
176
160
  const value = this.session.getValue();
177
161
  this.session.dispose();
178
- return hydrate(value);
162
+ return hydrate(value, undefined, this.origins);
179
163
  }
180
164
  }
181
165
 
package/src/tags.ts CHANGED
@@ -28,6 +28,18 @@ export interface TagError {
28
28
  code: string;
29
29
  }
30
30
 
31
+ /**
32
+ * Source location for a Tag node. Structurally compatible with
33
+ * DocumentLocation from the malloy package.
34
+ */
35
+ export interface TagLocation {
36
+ url: string;
37
+ range: {
38
+ start: {line: number; character: number};
39
+ end: {line: number; character: number};
40
+ };
41
+ }
42
+
31
43
  // TagInterface exists for tests and serialization only.
32
44
  // Internally, Tag uses Tag instances for properties and array elements.
33
45
  export type TagDict = Record<string, TagInterface>;
@@ -103,7 +115,10 @@ export class Tag {
103
115
  properties?: Record<string, Tag>;
104
116
  prefix?: string;
105
117
  deleted?: boolean;
118
+ location?: TagLocation;
106
119
  private _parent?: Tag;
120
+ private _read = false;
121
+ protected _clonedFrom?: Tag;
107
122
 
108
123
  /**
109
124
  * Get the parent tag, if this tag is part of a tree.
@@ -379,6 +394,8 @@ export class Tag {
379
394
  const cloned = new Tag({}, newParent);
380
395
  cloned.prefix = this.prefix;
381
396
  cloned.deleted = this.deleted;
397
+ cloned.location = this.location;
398
+ cloned._clonedFrom = this;
382
399
 
383
400
  if (this.eq !== undefined) {
384
401
  if (Array.isArray(this.eq)) {
@@ -660,11 +677,69 @@ export class Tag {
660
677
  if (next === undefined) {
661
678
  return undefined;
662
679
  }
680
+ next.markRead();
663
681
  currentTag = next;
664
682
  }
665
683
  return currentTag.deleted ? undefined : currentTag;
666
684
  }
667
685
 
686
+ /**
687
+ * Mark this tag as read, propagating to the original if this is a clone.
688
+ * Only propagates one level (clone→original). This is sufficient because
689
+ * set() is the only operation that creates clones, and it doesn't chain.
690
+ */
691
+ private markRead(): void {
692
+ this._read = true;
693
+ if (this._clonedFrom) {
694
+ this._clonedFrom._read = true;
695
+ }
696
+ }
697
+
698
+ /**
699
+ * Returns true if this tag was accessed via find/has/text/etc.
700
+ */
701
+ get wasRead(): boolean {
702
+ return this._read;
703
+ }
704
+
705
+ /**
706
+ * Recursively reset read tracking on this tag and all descendants.
707
+ */
708
+ resetReadTracking(): void {
709
+ this._read = false;
710
+ if (this.properties) {
711
+ for (const prop of Object.values(this.properties)) {
712
+ prop.resetReadTracking();
713
+ }
714
+ }
715
+ if (Array.isArray(this.eq)) {
716
+ for (const el of this.eq) {
717
+ el.resetReadTracking();
718
+ }
719
+ }
720
+ }
721
+
722
+ /**
723
+ * Collect all unread, non-deleted property names in this tag tree.
724
+ * Returns paths like ['viz', 'yy'] for nested unread properties.
725
+ */
726
+ getUnreadProperties(prefix: string[] = []): string[][] {
727
+ const unread: string[][] = [];
728
+ if (this.properties) {
729
+ for (const [key, prop] of Object.entries(this.properties)) {
730
+ if (prop.deleted) continue;
731
+ const path = [...prefix, key];
732
+ if (!prop._read) {
733
+ unread.push(path);
734
+ } else {
735
+ // Recurse into read tags to find unread sub-properties
736
+ unread.push(...prop.getUnreadProperties(path));
737
+ }
738
+ }
739
+ }
740
+ return unread;
741
+ }
742
+
668
743
  has(...path: Path): boolean {
669
744
  return this.find(path) !== undefined;
670
745
  }
@@ -934,7 +1009,9 @@ export class RefTag extends Tag {
934
1009
  * Clone this RefTag, preserving the reference information.
935
1010
  */
936
1011
  override clone(newParent?: Tag): RefTag {
937
- return new RefTag(this.ups, [...this.refPath], newParent);
1012
+ const cloned = new RefTag(this.ups, [...this.refPath], newParent);
1013
+ cloned._clonedFrom = this;
1014
+ return cloned;
938
1015
  }
939
1016
  }
940
1017