@velarscript/web 0.28.1 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,143 @@
1
+ /**
2
+ * D114 W: the reactive places a watch is about — the subject it watches, the
3
+ * places a body statement writes, and the one-hop `action`/`async def` writers
4
+ * of this module. Everything here is a question about *paths and statements*;
5
+ * nothing needs a type, which is why it reads as free functions and why, under
6
+ * D115 §三's `web/analysis/`, it is its own module rather than 280 lines in the
7
+ * middle of the Web analyzer.
8
+ *
9
+ * What a path *means* — whether the type at a depth is a collection, which of
10
+ * its calls mutate — stays with the analyzer and arrives as `ReactiveSubjectWrite`.
11
+ */
12
+ import { type Expression, type Program, type Statement, type ValueType } from "@velarscript/compiler/extension";
13
+ /**
14
+ * D114 W: one step a reactive path takes below its root — a named field, or an
15
+ * element under a key that names the same element on two evaluations. The steps
16
+ * are kept beside the rendered text because two questions are asked of a path:
17
+ * "is this the same place" answers on the text, and "is this place inside that
18
+ * one" has to walk, both to compare step by step and to descend the subject's
19
+ * type to the value the write lands on.
20
+ */
21
+ export type ReactivePathStep = {
22
+ readonly kind: "field";
23
+ readonly name: string;
24
+ } | {
25
+ readonly kind: "index";
26
+ readonly key: string;
27
+ };
28
+ export interface ReactivePath {
29
+ readonly root: string;
30
+ readonly steps: readonly ReactivePathStep[];
31
+ /** The place as one comparable key, e.g. `items[0].done`. */
32
+ readonly text: string;
33
+ }
34
+ /**
35
+ * D114 W: a reactive place written as one comparable key, so "the write and the
36
+ * subject name the same place" is one string equality.
37
+ *
38
+ * It is deliberately narrower than `renderWatchSubject`, which reconstructs any
39
+ * expression for a message. A key has to *decide*, so only the parts that name
40
+ * the same place on two evaluations are allowed into one: names, fields, and an
41
+ * index that is either a literal or another such path. `items[next()]` renders
42
+ * perfectly well and answers a different element every call, so it has no key
43
+ * and the shapes below stay silent on it — which is the right answer for a
44
+ * refusal that has to be right every time.
45
+ */
46
+ export declare function reactivePathOf(expression: Expression): ReactivePath | null;
47
+ /**
48
+ * D114 0.28.0 H-D1: the steps a written place takes *below* the watch subject,
49
+ * `[]` when the write is the subject itself, and null when it is neither. §15
50
+ * says a watch fires on a deep change of its subject, so a write of a part of
51
+ * the subject is the same ring as a write of the subject — and a sibling
52
+ * (`watch form.name:` writing `form.email`) or a different root is not.
53
+ */
54
+ export declare function reactiveStepsBelow(subject: ReactivePath, written: ReactivePath): readonly ReactivePathStep[] | null;
55
+ /**
56
+ * D114 W: the calls that mutate the value at one place, or null where the place
57
+ * holds no collection. One reading of the compiler's own roster, asked of the
58
+ * subject and of any place below it alike, so a deep mutating call and a direct
59
+ * one can never disagree about which methods write.
60
+ */
61
+ export declare function collectionMutators(place: ValueType): ReadonlySet<string> | null;
62
+ /** The root name a reactive path starts from, which is the binding it resolves through. */
63
+ export declare function reactivePathRoot(expression: Expression): string | null;
64
+ /**
65
+ * D114 W: whether a body statement introduces its own binding of `name`. From
66
+ * that statement on, the spelling names something else, and a write through it
67
+ * is not a write of the watched place. The scan stops there rather than
68
+ * guessing which of the two a later line meant.
69
+ */
70
+ export declare function statementBindsName(statement: Statement, name: string): boolean;
71
+ /**
72
+ * D114 W: the call a body statement makes when the statement is nothing but
73
+ * that call. `detach` is included because it is how a synchronous watch body
74
+ * starts asynchronous work — the tour and four charter fences spell the reload
75
+ * that way — so a refusal that only saw the bare call would miss the shape it
76
+ * exists for. Everything else (a call inside an `if`, an argument, an assigned
77
+ * result) is not a plain top-level call and is not offered here.
78
+ */
79
+ export declare function topLevelCall(statement: Statement): Extract<Expression, {
80
+ readonly kind: "CallExpression";
81
+ }> | null;
82
+ /**
83
+ * D114 W: the reactive place one plain body statement writes, and how. An
84
+ * assignment or a compound assignment names its target and no method; a call
85
+ * names its receiver and the method called on it, and the caller decides
86
+ * whether that method mutates — the roster depends on the kind of value at the
87
+ * receiver, which only the caller holds a type for.
88
+ */
89
+ export interface ReactiveWriteCandidate {
90
+ readonly place: ReactivePath;
91
+ /** The method called on `place`, or null when the statement is an assignment. */
92
+ readonly method: string | null;
93
+ }
94
+ export declare function reactiveWriteCandidate(statement: Statement): ReactiveWriteCandidate | null;
95
+ /**
96
+ * D114 W: whether one plain body statement writes the watched place — the
97
+ * subject itself, or any place below it. An assignment or a compound
98
+ * assignment to it is one; so is a call of a mutating collection method on it,
99
+ * because a watch on a collection fires on its deep mutation and `mutators`
100
+ * answers the compiler's own roster of the calls that mutate whatever sits at
101
+ * that depth.
102
+ *
103
+ * D114 0.28.0 H-D1's other half: `watch form: rename()` where `rename` writes
104
+ * `form.name` is the same ring as `watch form: form.name = …`, which F1 already
105
+ * refuses. The subject and the writer question read one comparison —
106
+ * `reactiveStepsBelow` — so a deep write cannot be a cycle at one of them and
107
+ * not at the other.
108
+ */
109
+ export declare function reactiveWriteOf(statement: Statement, subject: ReactivePath, writes: ReactiveSubjectWrite): ReactivePath | null;
110
+ /**
111
+ * Whether a write `steps` below the watched subject, made the given way, is a
112
+ * write of the subject. Only the analyzer can answer it — the roster of
113
+ * mutating calls depends on the type at that depth — so both the body scan and
114
+ * the one-hop writer scan are handed the same closure rather than each deciding
115
+ * what counts as a write.
116
+ */
117
+ export type ReactiveSubjectWrite = (steps: readonly ReactivePathStep[], method: string | null) => boolean;
118
+ /**
119
+ * D114 W A2(b): whether an `action` or `async def` writes `path` at its own top
120
+ * level, unconditionally. One hop: what the callee itself calls is not
121
+ * followed. A parameter of the callee's own that is spelled like the path's
122
+ * root, or a binding it declares before the write, means the write is not of
123
+ * the watched place and the answer is no.
124
+ */
125
+ export declare function writerWritesPath(writer: ReactiveWriterDeclaration, subject: ReactivePath, writes: ReactiveSubjectWrite): ReactivePath | null;
126
+ /**
127
+ * D114 W A2(b): the `action` and `async def` declarations of one module, by
128
+ * name. A name declared twice — or once as an ordinary `def` — answers `null`,
129
+ * because the refusal must know exactly which body a call reaches and two
130
+ * candidates mean it does not.
131
+ *
132
+ * The walk is `collectModuleFunctions`'s: module body, component bodies, and
133
+ * the bodies of the functions themselves, so a nested declaration of a name
134
+ * makes that name ambiguous here rather than silently resolving to the outer
135
+ * one.
136
+ */
137
+ export interface ReactiveWriterDeclaration {
138
+ readonly spelling: "action" | "async def";
139
+ readonly parameters: readonly string[];
140
+ readonly body: readonly Statement[];
141
+ }
142
+ export declare function collectReactiveWriters(program: Program): ReadonlyMap<string, ReactiveWriterDeclaration | null>;
143
+ //# sourceMappingURL=watch-cycles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-cycles.d.ts","sourceRoot":"","sources":["../../src/analysis/watch-cycles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,iCAAiC,CAAC;AAGzC;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CA+B1E;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,gBAAgB,EAAE,GAAG,IAAI,CASnH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAI/E;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAUtE;AAkBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAW9E;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAAG,IAAI,CAKlH;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,sBAAsB,GAAG,IAAI,CAW1F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,GAAG,YAAY,GAAG,IAAI,CAM9H;AAED;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC;AAE1G;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,GAAG,YAAY,GAAG,IAAI,CAQ5I;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CACrC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI,CAAC,CA6B9G"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * D114 W: the reactive places a watch is about — the subject it watches, the
3
+ * places a body statement writes, and the one-hop `action`/`async def` writers
4
+ * of this module. Everything here is a question about *paths and statements*;
5
+ * nothing needs a type, which is why it reads as free functions and why, under
6
+ * D115 §三's `web/analysis/`, it is its own module rather than 280 lines in the
7
+ * middle of the Web analyzer.
8
+ *
9
+ * What a path *means* — whether the type at a depth is a collection, which of
10
+ * its calls mutate — stays with the analyzer and arrives as `ReactiveSubjectWrite`.
11
+ */
12
+ import { mutatingCollectionMethods, } from "@velarscript/compiler/extension";
13
+ import { isWebStatement } from "../ast.js";
14
+ /**
15
+ * D114 W: a reactive place written as one comparable key, so "the write and the
16
+ * subject name the same place" is one string equality.
17
+ *
18
+ * It is deliberately narrower than `renderWatchSubject`, which reconstructs any
19
+ * expression for a message. A key has to *decide*, so only the parts that name
20
+ * the same place on two evaluations are allowed into one: names, fields, and an
21
+ * index that is either a literal or another such path. `items[next()]` renders
22
+ * perfectly well and answers a different element every call, so it has no key
23
+ * and the shapes below stay silent on it — which is the right answer for a
24
+ * refusal that has to be right every time.
25
+ */
26
+ export function reactivePathOf(expression) {
27
+ switch (expression.kind) {
28
+ case "IdentifierExpression":
29
+ return { root: expression.name, steps: [], text: expression.name };
30
+ case "MemberExpression": {
31
+ if (expression.optional)
32
+ return null;
33
+ const object = reactivePathOf(expression.object);
34
+ if (object === null)
35
+ return null;
36
+ return {
37
+ root: object.root,
38
+ steps: [...object.steps, { kind: "field", name: expression.property }],
39
+ text: `${object.text}.${expression.property}`,
40
+ };
41
+ }
42
+ case "IndexExpression": {
43
+ if (expression.optional)
44
+ return null;
45
+ const object = reactivePathOf(expression.object);
46
+ if (object === null)
47
+ return null;
48
+ const index = expression.index.kind === "LiteralExpression"
49
+ ? (typeof expression.index.value === "string" ? JSON.stringify(expression.index.value) : expression.index.raw)
50
+ : reactiveWritePath(expression.index);
51
+ if (index === null)
52
+ return null;
53
+ return {
54
+ root: object.root,
55
+ steps: [...object.steps, { kind: "index", key: index }],
56
+ text: `${object.text}[${index}]`,
57
+ };
58
+ }
59
+ default:
60
+ return null;
61
+ }
62
+ }
63
+ function reactiveWritePath(expression) {
64
+ return reactivePathOf(expression)?.text ?? null;
65
+ }
66
+ /**
67
+ * D114 0.28.0 H-D1: the steps a written place takes *below* the watch subject,
68
+ * `[]` when the write is the subject itself, and null when it is neither. §15
69
+ * says a watch fires on a deep change of its subject, so a write of a part of
70
+ * the subject is the same ring as a write of the subject — and a sibling
71
+ * (`watch form.name:` writing `form.email`) or a different root is not.
72
+ */
73
+ export function reactiveStepsBelow(subject, written) {
74
+ if (written.root !== subject.root || written.steps.length < subject.steps.length)
75
+ return null;
76
+ for (const [index, step] of subject.steps.entries()) {
77
+ const other = written.steps[index];
78
+ if (step.kind !== other.kind)
79
+ return null;
80
+ if (step.kind === "field" ? step.name !== other.name
81
+ : step.key !== other.key)
82
+ return null;
83
+ }
84
+ return written.steps.slice(subject.steps.length);
85
+ }
86
+ /**
87
+ * D114 W: the calls that mutate the value at one place, or null where the place
88
+ * holds no collection. One reading of the compiler's own roster, asked of the
89
+ * subject and of any place below it alike, so a deep mutating call and a direct
90
+ * one can never disagree about which methods write.
91
+ */
92
+ export function collectionMutators(place) {
93
+ return place.kind === "list" || place.kind === "map" || place.kind === "set" || place.kind === "record"
94
+ ? mutatingCollectionMethods(place.kind)
95
+ : null;
96
+ }
97
+ /** The root name a reactive path starts from, which is the binding it resolves through. */
98
+ export function reactivePathRoot(expression) {
99
+ switch (expression.kind) {
100
+ case "IdentifierExpression":
101
+ return expression.name;
102
+ case "MemberExpression":
103
+ case "IndexExpression":
104
+ return reactivePathRoot(expression.object);
105
+ default:
106
+ return null;
107
+ }
108
+ }
109
+ function bindingPatternBinds(pattern, name) {
110
+ switch (pattern.kind) {
111
+ case "NameBindingPattern":
112
+ return pattern.name === name;
113
+ case "ObjectBindingPattern":
114
+ return pattern.rest?.name === name || pattern.entries.some((entry) => bindingPatternBinds(entry.pattern, name));
115
+ case "ListBindingPattern":
116
+ return pattern.rest?.name === name
117
+ || pattern.elements.some((element) => element !== null && bindingPatternBinds(element, name));
118
+ default:
119
+ return false;
120
+ }
121
+ }
122
+ /**
123
+ * D114 W: whether a body statement introduces its own binding of `name`. From
124
+ * that statement on, the spelling names something else, and a write through it
125
+ * is not a write of the watched place. The scan stops there rather than
126
+ * guessing which of the two a later line meant.
127
+ */
128
+ export function statementBindsName(statement, name) {
129
+ switch (statement.kind) {
130
+ case "VariableDeclaration":
131
+ return bindingPatternBinds(statement.pattern, name);
132
+ case "UsingDeclaration":
133
+ case "FunctionDeclaration":
134
+ case "ClassDeclaration":
135
+ return statement.name === name;
136
+ default:
137
+ return false;
138
+ }
139
+ }
140
+ /**
141
+ * D114 W: the call a body statement makes when the statement is nothing but
142
+ * that call. `detach` is included because it is how a synchronous watch body
143
+ * starts asynchronous work — the tour and four charter fences spell the reload
144
+ * that way — so a refusal that only saw the bare call would miss the shape it
145
+ * exists for. Everything else (a call inside an `if`, an argument, an assigned
146
+ * result) is not a plain top-level call and is not offered here.
147
+ */
148
+ export function topLevelCall(statement) {
149
+ const expression = statement.kind === "ExpressionStatement" ? statement.expression
150
+ : statement.kind === "DetachStatement" ? statement.expression
151
+ : null;
152
+ return expression !== null && expression.kind === "CallExpression" ? expression : null;
153
+ }
154
+ export function reactiveWriteCandidate(statement) {
155
+ if (statement.kind === "AssignmentStatement") {
156
+ const place = reactivePathOf(statement.target);
157
+ return place === null ? null : { place, method: null };
158
+ }
159
+ const call = statement.kind === "ExpressionStatement" && statement.expression.kind === "CallExpression"
160
+ ? statement.expression
161
+ : null;
162
+ if (call === null || call.callee.kind !== "MemberExpression" || call.callee.optional)
163
+ return null;
164
+ const place = reactivePathOf(call.callee.object);
165
+ return place === null ? null : { place, method: call.callee.property };
166
+ }
167
+ /**
168
+ * D114 W: whether one plain body statement writes the watched place — the
169
+ * subject itself, or any place below it. An assignment or a compound
170
+ * assignment to it is one; so is a call of a mutating collection method on it,
171
+ * because a watch on a collection fires on its deep mutation and `mutators`
172
+ * answers the compiler's own roster of the calls that mutate whatever sits at
173
+ * that depth.
174
+ *
175
+ * D114 0.28.0 H-D1's other half: `watch form: rename()` where `rename` writes
176
+ * `form.name` is the same ring as `watch form: form.name = …`, which F1 already
177
+ * refuses. The subject and the writer question read one comparison —
178
+ * `reactiveStepsBelow` — so a deep write cannot be a cycle at one of them and
179
+ * not at the other.
180
+ */
181
+ export function reactiveWriteOf(statement, subject, writes) {
182
+ const write = reactiveWriteCandidate(statement);
183
+ if (write === null)
184
+ return null;
185
+ const steps = reactiveStepsBelow(subject, write.place);
186
+ if (steps === null)
187
+ return null;
188
+ return writes(steps, write.method) ? write.place : null;
189
+ }
190
+ /**
191
+ * D114 W A2(b): whether an `action` or `async def` writes `path` at its own top
192
+ * level, unconditionally. One hop: what the callee itself calls is not
193
+ * followed. A parameter of the callee's own that is spelled like the path's
194
+ * root, or a binding it declares before the write, means the write is not of
195
+ * the watched place and the answer is no.
196
+ */
197
+ export function writerWritesPath(writer, subject, writes) {
198
+ if (writer.parameters.includes(subject.root))
199
+ return null;
200
+ for (const statement of writer.body) {
201
+ if (statementBindsName(statement, subject.root))
202
+ return null;
203
+ const written = reactiveWriteOf(statement, subject, writes);
204
+ if (written !== null)
205
+ return written;
206
+ }
207
+ return null;
208
+ }
209
+ export function collectReactiveWriters(program) {
210
+ const writers = new Map();
211
+ const claim = (name, declaration) => {
212
+ writers.set(name, writers.has(name) ? null : declaration);
213
+ };
214
+ const record = (statements) => {
215
+ for (const statement of statements) {
216
+ if (statement.kind === "FunctionDeclaration") {
217
+ claim(statement.name, statement.asynchronous
218
+ ? { spelling: "async def", parameters: statement.parameters.map((parameter) => parameter.name), body: statement.body }
219
+ : null);
220
+ record(statement.body);
221
+ continue;
222
+ }
223
+ if (!isWebStatement(statement))
224
+ continue;
225
+ if (statement.kind === "ExtensionStatement:web:action") {
226
+ claim(statement.name, {
227
+ spelling: "action",
228
+ parameters: statement.parameters.map((parameter) => parameter.name),
229
+ body: statement.body,
230
+ });
231
+ record(statement.body);
232
+ continue;
233
+ }
234
+ if (statement.kind === "ExtensionStatement:web:component")
235
+ record(statement.body);
236
+ }
237
+ };
238
+ record(program.body);
239
+ return writers;
240
+ }
241
+ //# sourceMappingURL=watch-cycles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-cycles.js","sourceRoot":"","sources":["../../src/analysis/watch-cycles.ts"],"names":[],"mappings":"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"}
@@ -98,6 +98,13 @@ export declare class VelarWebAnalyzer extends Analyzer {
98
98
  * `builtinTypeNameDeclarationMessage` in packages/compiler/src/analyzer.ts,
99
99
  * reported as VEL3007. The rosters differ; the wording is meant to read
100
100
  * alike, so a change to either sentence belongs in both.
101
+ *
102
+ * `Duration` is on both rosters — Core owns it as a primitive and
103
+ * `velar/look` republishes it — so a Web module used to report it twice. This
104
+ * refusal is the more specific of the two, because it names the surface the
105
+ * author is writing against, so it marks the name refused and Core's stays
106
+ * unsaid. The mark is Core's own hook, which is what lets this pass take
107
+ * precedence without either side learning the other's roster.
101
108
  */
102
109
  private rejectWebOwnedTypeNames;
103
110
  /**
@@ -249,6 +256,44 @@ export declare class VelarWebAnalyzer extends Analyzer {
249
256
  * fixed, exactly as two errors on one line are.
250
257
  */
251
258
  private rejectWatchCycle;
259
+ /**
260
+ * D114 0.28.0 H-D1: the VEL5077 message one plain body statement earns, or
261
+ * null when it earns none.
262
+ *
263
+ * §15 says a watch fires on a *deep* change of its subject, so `watch form:
264
+ * form.name = …` and `watch items: items[0].done = …` are the same ring
265
+ * `items.append(…)` already is — decided at the top of the body, with no
266
+ * condition to end it — and were silent until the runtime's 100-round cap
267
+ * stopped them. The rule is therefore stated on the path rather than on the
268
+ * spelling: a write whose place is the subject, or any place below it, in an
269
+ * assignment, a compound assignment, or a mutating call.
270
+ *
271
+ * Every existing exclusion stands, because each is answered somewhere else: a
272
+ * conditional or nested write is not a plain body statement, a rebinding
273
+ * stops the scan in `rejectWatchCycle`, and a sibling path (`watch form.name:`
274
+ * writing `form.email`) or a different root fails the step comparison here.
275
+ */
276
+ private watchSelfWrite;
277
+ /**
278
+ * D114 0.28.0 H-D1: the type of the place `steps` below the watched subject,
279
+ * or null when the walk cannot reach one.
280
+ *
281
+ * Only the steps the reactive graph publishes as part of the subject are
282
+ * walked — a record field and a collection element — because those are the
283
+ * writes a watch on the containing value is woken by. A step that leaves them
284
+ * (a class instance, a capability handle, a field the record does not declare)
285
+ * is not provably part of the subject, and a refusal that must be right every
286
+ * time answers no there rather than guessing.
287
+ */
288
+ /**
289
+ * Whether a write `steps` below the watched subject, made the given way, is a
290
+ * write of the subject — the one definition both the body scan (VEL5077) and
291
+ * the one-hop writer scan (VEL5079) read. An assignment to a place the walk
292
+ * can reach is a write; a call is one only when the type at that depth is a
293
+ * collection and the call is on its own mutating roster.
294
+ */
295
+ private watchSubjectWrite;
296
+ private reactivePlaceType;
252
297
  /**
253
298
  * D89 A4: records `list = list.map(item => {…})`, React's immutable update,
254
299
  * where the callback builds a new record rather than changing a field.
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}