@reactra/babel-plugin 0.1.0-alpha.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.
- package/LICENSE +21 -0
- package/README.md +17 -0
- package/dist/ast/index.d.ts +2 -0
- package/dist/ast/index.d.ts.map +1 -0
- package/dist/ast/index.js +3 -0
- package/dist/ast/index.js.map +1 -0
- package/dist/ast/nodes.d.ts +437 -0
- package/dist/ast/nodes.d.ts.map +1 -0
- package/dist/ast/nodes.js +35 -0
- package/dist/ast/nodes.js.map +1 -0
- package/dist/behaviours/index.d.ts +18 -0
- package/dist/behaviours/index.d.ts.map +1 -0
- package/dist/behaviours/index.js +36 -0
- package/dist/behaviours/index.js.map +1 -0
- package/dist/behaviours/plugin.d.ts +22 -0
- package/dist/behaviours/plugin.d.ts.map +1 -0
- package/dist/behaviours/plugin.js +70 -0
- package/dist/behaviours/plugin.js.map +1 -0
- package/dist/behaviours/replayable.d.ts +10 -0
- package/dist/behaviours/replayable.d.ts.map +1 -0
- package/dist/behaviours/replayable.js +86 -0
- package/dist/behaviours/replayable.js.map +1 -0
- package/dist/behaviours/types.d.ts +77 -0
- package/dist/behaviours/types.d.ts.map +1 -0
- package/dist/behaviours/types.js +10 -0
- package/dist/behaviours/types.js.map +1 -0
- package/dist/behaviours/undoable.d.ts +10 -0
- package/dist/behaviours/undoable.d.ts.map +1 -0
- package/dist/behaviours/undoable.js +62 -0
- package/dist/behaviours/undoable.js.map +1 -0
- package/dist/compile.d.ts +69 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +75 -0
- package/dist/compile.js.map +1 -0
- package/dist/conventions/index.d.ts +110 -0
- package/dist/conventions/index.d.ts.map +1 -0
- package/dist/conventions/index.js +193 -0
- package/dist/conventions/index.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -0
- package/dist/passes/index.d.ts +5 -0
- package/dist/passes/index.d.ts.map +1 -0
- package/dist/passes/index.js +6 -0
- package/dist/passes/index.js.map +1 -0
- package/dist/passes/pass-1-parse.d.ts +3 -0
- package/dist/passes/pass-1-parse.d.ts.map +1 -0
- package/dist/passes/pass-1-parse.js +21 -0
- package/dist/passes/pass-1-parse.js.map +1 -0
- package/dist/passes/pass-2-extract.d.ts +4 -0
- package/dist/passes/pass-2-extract.d.ts.map +1 -0
- package/dist/passes/pass-2-extract.js +762 -0
- package/dist/passes/pass-2-extract.js.map +1 -0
- package/dist/passes/pass-3-readset.d.ts +11 -0
- package/dist/passes/pass-3-readset.d.ts.map +1 -0
- package/dist/passes/pass-3-readset.js +338 -0
- package/dist/passes/pass-3-readset.js.map +1 -0
- package/dist/passes/pass-9-codegen.d.ts +27 -0
- package/dist/passes/pass-9-codegen.d.ts.map +1 -0
- package/dist/passes/pass-9-codegen.js +2755 -0
- package/dist/passes/pass-9-codegen.js.map +1 -0
- package/dist/preprocess/helpers.d.ts +71 -0
- package/dist/preprocess/helpers.d.ts.map +1 -0
- package/dist/preprocess/helpers.js +342 -0
- package/dist/preprocess/helpers.js.map +1 -0
- package/dist/preprocess/index.d.ts +6 -0
- package/dist/preprocess/index.d.ts.map +1 -0
- package/dist/preprocess/index.js +11 -0
- package/dist/preprocess/index.js.map +1 -0
- package/dist/preprocess/keywords.d.ts +28 -0
- package/dist/preprocess/keywords.d.ts.map +1 -0
- package/dist/preprocess/keywords.js +99 -0
- package/dist/preprocess/keywords.js.map +1 -0
- package/dist/preprocess/lexer.d.ts +8 -0
- package/dist/preprocess/lexer.d.ts.map +1 -0
- package/dist/preprocess/lexer.js +143 -0
- package/dist/preprocess/lexer.js.map +1 -0
- package/dist/preprocess/preprocess.d.ts +3 -0
- package/dist/preprocess/preprocess.d.ts.map +1 -0
- package/dist/preprocess/preprocess.js +568 -0
- package/dist/preprocess/preprocess.js.map +1 -0
- package/dist/preprocess/rewriters.d.ts +35 -0
- package/dist/preprocess/rewriters.d.ts.map +1 -0
- package/dist/preprocess/rewriters.js +1391 -0
- package/dist/preprocess/rewriters.js.map +1 -0
- package/dist/preprocess/source-map.d.ts +70 -0
- package/dist/preprocess/source-map.d.ts.map +1 -0
- package/dist/preprocess/source-map.js +253 -0
- package/dist/preprocess/source-map.js.map +1 -0
- package/dist/preprocess/types.d.ts +57 -0
- package/dist/preprocess/types.d.ts.map +1 -0
- package/dist/preprocess/types.js +7 -0
- package/dist/preprocess/types.js.map +1 -0
- package/dist/sidecar.d.ts +137 -0
- package/dist/sidecar.d.ts.map +1 -0
- package/dist/sidecar.js +172 -0
- package/dist/sidecar.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass-2-extract.js","sourceRoot":"","sources":["../../src/passes/pass-2-extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as t from "@babel/types";
|
|
2
|
+
import type { FileGraph } from "../ast/nodes.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Populate `deps` on every component `DerivedNode` / `ActionNode` in the graph.
|
|
5
|
+
* Mutates the nodes in place; safe to run between Pass 2 (extract) and Pass 9
|
|
6
|
+
* (codegen). Store containers are skipped — their derived/action emit through
|
|
7
|
+
* the factory closure (mutable `let`), not `useMemo`/`useCallback`, so they
|
|
8
|
+
* have no React dependency array.
|
|
9
|
+
*/
|
|
10
|
+
export declare const analyzeReadSets: (ast: t.File, graph: FileGraph) => void;
|
|
11
|
+
//# sourceMappingURL=pass-3-readset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass-3-readset.d.ts","sourceRoot":"","sources":["../../src/passes/pass-3-readset.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAEjC,OAAO,KAAK,EAA0C,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAaxF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,SAAS,KAAG,IAoC/D,CAAA"}
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
// Pass 3 — Read-set analysis.
|
|
2
|
+
//
|
|
3
|
+
// Spec: reactra-compiler-spec.md §4 Pass 3. Populates `DerivedNode.deps` and
|
|
4
|
+
// `ActionNode.deps` (component containers only) — the dependency arrays that
|
|
5
|
+
// Pass 9 emits for `useMemo` (derived) and `useCallback` (action).
|
|
6
|
+
//
|
|
7
|
+
// Why this exists: without it, Pass 9 emitted `useMemo(fn, [])` / `useCallback(
|
|
8
|
+
// fn, [])` with EMPTY deps, so any read of reactive state was frozen at the
|
|
9
|
+
// first render (a counter stuck at 1; `derived` of changing state never updated).
|
|
10
|
+
// See backlogs/component-action-stale-closure.md.
|
|
11
|
+
//
|
|
12
|
+
// The rule (architect-reviewed): an identifier read inside a `derived` thunk or
|
|
13
|
+
// `action` arrow is a dependency IFF its name is in the container's *reactive
|
|
14
|
+
// set* AND it is not bound locally inside the arrow. Everything else — state
|
|
15
|
+
// setters (`setX`), `action`/`ref`/`inject service` names, imports, globals,
|
|
16
|
+
// arrow params, locals — is excluded by the whitelist default.
|
|
17
|
+
//
|
|
18
|
+
// Reactive set (all from Pass 2 `ContainerNode`): `state`, `derived`, `param`,
|
|
19
|
+
// `query`, `resource` names, plus store bindings — field-selection
|
|
20
|
+
// `inject store X { a, b }` contributes the fields `a`,`b`; namespace
|
|
21
|
+
// `inject store X` contributes `X` (member reads `X.field` collect `X`).
|
|
22
|
+
//
|
|
23
|
+
// Note: this runs on the PREPROCESSED AST, where `state`/`derived`/… are marker
|
|
24
|
+
// calls, not `useState` bindings — so reactive names appear as FREE identifiers
|
|
25
|
+
// (no Babel binding), while locals/params have bindings inside the arrow. That
|
|
26
|
+
// makes the local-vs-reactive split a simple "is there a binding inside the
|
|
27
|
+
// arrow?" check.
|
|
28
|
+
import _traverse from "@babel/traverse";
|
|
29
|
+
import * as t from "@babel/types";
|
|
30
|
+
import { fieldLocal } from "../ast/nodes.js";
|
|
31
|
+
// CJS/ESM interop: under NodeNext the default import is the module namespace (not
|
|
32
|
+
// callable). The runtime `.default` unwrap recovers it. Dev typecheck validates types.
|
|
33
|
+
const traverse = (_traverse.default ?? _traverse);
|
|
34
|
+
/**
|
|
35
|
+
* Populate `deps` on every component `DerivedNode` / `ActionNode` in the graph.
|
|
36
|
+
* Mutates the nodes in place; safe to run between Pass 2 (extract) and Pass 9
|
|
37
|
+
* (codegen). Store containers are skipped — their derived/action emit through
|
|
38
|
+
* the factory closure (mutable `let`), not `useMemo`/`useCallback`, so they
|
|
39
|
+
* have no React dependency array.
|
|
40
|
+
*/
|
|
41
|
+
export const analyzeReadSets = (ast, graph) => {
|
|
42
|
+
// Map each target arrow node to its (node, reactive-set) so the single AST
|
|
43
|
+
// walk can dispatch by node identity.
|
|
44
|
+
const byArrow = new Map();
|
|
45
|
+
for (const c of graph.containers) {
|
|
46
|
+
if (c.kind !== "component")
|
|
47
|
+
continue;
|
|
48
|
+
analyzeUnstableResourceDeps(c); // R028 (advisory) — see below
|
|
49
|
+
analyzeKeylessMaps(c); // R029 (advisory) — see below
|
|
50
|
+
const reactive = reactiveSetOf(c);
|
|
51
|
+
// `derived` thunks see only the reactive set. They emit BEFORE actions, so
|
|
52
|
+
// listing an action would TDZ; a pure `derived` referencing an action is
|
|
53
|
+
// also degenerate. Action arrows additionally see the *callback set* (other
|
|
54
|
+
// actions + the undoable `undo`/`redo`/`clearHistory`) so an action that
|
|
55
|
+
// calls another action lists it as a dep and never captures it stale (BUG-2
|
|
56
|
+
// Direction A). The callee's identity changes with its own deps; without the
|
|
57
|
+
// dep the caller would freeze the first-render callee.
|
|
58
|
+
for (const d of c.deriveds)
|
|
59
|
+
byArrow.set(d.thunk, { node: d, reactive });
|
|
60
|
+
const callbacks = callbackSetOf(c);
|
|
61
|
+
for (const a of c.actions) {
|
|
62
|
+
// Exclude the action's OWN name — self-recursion uses the same closure and
|
|
63
|
+
// listing yourself in your own dep array is a TDZ reference.
|
|
64
|
+
const own = new Set([...reactive, ...callbacks]);
|
|
65
|
+
own.delete(a.name);
|
|
66
|
+
byArrow.set(a.arrow, { node: a, reactive: own });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (byArrow.size === 0)
|
|
70
|
+
return;
|
|
71
|
+
traverse(ast, {
|
|
72
|
+
ArrowFunctionExpression(path) {
|
|
73
|
+
const target = byArrow.get(path.node);
|
|
74
|
+
if (target === undefined)
|
|
75
|
+
return;
|
|
76
|
+
target.node.deps = collectDeps(path, target.reactive);
|
|
77
|
+
path.skip(); // the target's interior is fully handled; don't re-descend
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* The in-component *callback* names an `action` body may reference and must list
|
|
83
|
+
* as deps so it calls the current version (BUG-2 Direction A): every other
|
|
84
|
+
* `action`, plus the `undoable`-emitted `undo`/`redo`/`clearHistory` (each a
|
|
85
|
+
* `useCallback` whose identity changes with state). Excludes nothing here — the
|
|
86
|
+
* caller filters out its own name (self-recursion). The undoable callbacks are
|
|
87
|
+
* emitted before the action loop, so they carry no ordering constraint; only
|
|
88
|
+
* action→action edges drive the Pass-9 topological emit.
|
|
89
|
+
*/
|
|
90
|
+
const callbackSetOf = (c) => {
|
|
91
|
+
const set = new Set(c.actions.map((a) => a.name));
|
|
92
|
+
if (c.uses?.names.includes("undoable")) {
|
|
93
|
+
set.add("undo");
|
|
94
|
+
set.add("redo");
|
|
95
|
+
set.add("clearHistory");
|
|
96
|
+
}
|
|
97
|
+
return set;
|
|
98
|
+
};
|
|
99
|
+
/** The reactive names a component's derived/action reads can depend on. */
|
|
100
|
+
const reactiveSetOf = (c) => {
|
|
101
|
+
const reactive = new Set();
|
|
102
|
+
for (const s of c.states)
|
|
103
|
+
reactive.add(s.name);
|
|
104
|
+
for (const d of c.deriveds)
|
|
105
|
+
reactive.add(d.name);
|
|
106
|
+
for (const p of c.params)
|
|
107
|
+
reactive.add(p.name);
|
|
108
|
+
for (const q of c.queries)
|
|
109
|
+
reactive.add(q.name);
|
|
110
|
+
for (const r of c.resources)
|
|
111
|
+
reactive.add(r.name);
|
|
112
|
+
for (const cmd of c.commands)
|
|
113
|
+
reactive.add(cmd.name); // command handle (.pending/.result/.error)
|
|
114
|
+
for (const su of c.storeUses) {
|
|
115
|
+
if (su.fields && su.fields.length > 0) {
|
|
116
|
+
for (const f of su.fields)
|
|
117
|
+
reactive.add(fieldLocal(f)); // local name (rename-aware)
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// namespace binding — `X.field` (or the alias `Y.field`) reads collect the binding
|
|
121
|
+
reactive.add(su.alias ?? su.storeName);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// §1.1 — component props: destructured binding names are individual reactive
|
|
125
|
+
// reads; the bag identifier `props` absorbs `props.x` member reads (so a
|
|
126
|
+
// `derived` over the bag deps on the whole object — the §1.1 rule-4 caveat).
|
|
127
|
+
if (c.propNames)
|
|
128
|
+
for (const n of c.propNames)
|
|
129
|
+
reactive.add(n);
|
|
130
|
+
return reactive;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Walk an arrow body, returning the reactive reads in first-encounter (stable,
|
|
134
|
+
* deterministic) order, deduplicated.
|
|
135
|
+
*/
|
|
136
|
+
const collectDeps = (arrowPath, reactive) => {
|
|
137
|
+
const arrowScope = arrowPath.scope;
|
|
138
|
+
const deps = [];
|
|
139
|
+
const seen = new Set();
|
|
140
|
+
arrowPath.traverse({
|
|
141
|
+
Identifier(idPath) {
|
|
142
|
+
const name = idPath.node.name;
|
|
143
|
+
if (seen.has(name) || !reactive.has(name))
|
|
144
|
+
return;
|
|
145
|
+
const parent = idPath.parent;
|
|
146
|
+
// The LHS of a plain `x = …` assignment is a write target, not a read —
|
|
147
|
+
// Pass 9 lowers it to `setX(…)`, so `x` never appears in the callback.
|
|
148
|
+
// Compound assignments (`x += …`) read AND write, so they are NOT skipped.
|
|
149
|
+
if (t.isAssignmentExpression(parent) && parent.left === idPath.node && parent.operator === "=") {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
// `obj.NAME` — the property is not a read (only `obj` is).
|
|
153
|
+
if (t.isMemberExpression(parent) && parent.property === idPath.node && !parent.computed)
|
|
154
|
+
return;
|
|
155
|
+
// `{ NAME: … }` object key — not a read (but `{ NAME }` shorthand IS).
|
|
156
|
+
if (t.isObjectProperty(parent) &&
|
|
157
|
+
parent.key === idPath.node &&
|
|
158
|
+
!parent.computed &&
|
|
159
|
+
!parent.shorthand) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// Locally bound inside the arrow (param / local / nested) — shadows the
|
|
163
|
+
// reactive name; not a dependency.
|
|
164
|
+
if (isBoundInArrow(idPath, name, arrowScope))
|
|
165
|
+
return;
|
|
166
|
+
seen.add(name);
|
|
167
|
+
deps.push(name);
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
return deps;
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* True when `name` resolves to a binding at or inside the arrow's scope (an
|
|
174
|
+
* arrow param, a local `const`/`let`, or a nested-scope local). Reactive names
|
|
175
|
+
* have no binding in the preprocessed AST (they're free identifiers), so this
|
|
176
|
+
* returns false for them.
|
|
177
|
+
*/
|
|
178
|
+
const isBoundInArrow = (idPath, name, arrowScope) => {
|
|
179
|
+
const binding = idPath.scope.getBinding(name);
|
|
180
|
+
if (binding === undefined)
|
|
181
|
+
return false;
|
|
182
|
+
let s = binding.scope;
|
|
183
|
+
while (s) {
|
|
184
|
+
if (s === arrowScope)
|
|
185
|
+
return true;
|
|
186
|
+
s = s.parent;
|
|
187
|
+
}
|
|
188
|
+
return false;
|
|
189
|
+
};
|
|
190
|
+
// ---------------------------------------------------------------------------
|
|
191
|
+
// R028 — resource dep is a non-identity-stable value (Component DSL §2.4 / §2.2).
|
|
192
|
+
//
|
|
193
|
+
// A `resource r(dep)` whose dep mints a fresh object/array reference per render
|
|
194
|
+
// never key-equals across renders: the resource layer keys object/array deps by
|
|
195
|
+
// a WeakMap identity id (resource/src/index.ts), so a fresh reference is a
|
|
196
|
+
// permanent `depsToKey` cache miss + unbounded id growth. Two shapes are caught:
|
|
197
|
+
// (a) an inline `{ … }` / `[ … ]` literal dep, and
|
|
198
|
+
// (b) an identifier naming a same-container `derived` whose (unwrapped) thunk
|
|
199
|
+
// RHS is an object/array literal (the documented A6/C2 footgun — e.g.
|
|
200
|
+
// `derived f = { q, page }` then `resource r(f)`).
|
|
201
|
+
// Detection reuses ONLY existing graph data (`ResourceNode.depsThunk`,
|
|
202
|
+
// `DerivedNode.thunk`) — no new AST plumbing (C4). Pass 9 emits the warning.
|
|
203
|
+
const analyzeUnstableResourceDeps = (c) => {
|
|
204
|
+
// Same-container derived name -> its (unwrapped) thunk body, for case (b).
|
|
205
|
+
const derivedByName = new Map();
|
|
206
|
+
for (const d of c.deriveds)
|
|
207
|
+
derivedByName.set(d.name, unwrapThunkBody(d.thunk.body));
|
|
208
|
+
for (const r of c.resources) {
|
|
209
|
+
const body = r.depsThunk.body;
|
|
210
|
+
const offenders = [];
|
|
211
|
+
// The deps thunk body is the verbatim `(deps)` text the user wrote between
|
|
212
|
+
// the resource parens. One dep -> the expression itself; `r(a, b)` -> a
|
|
213
|
+
// SequenceExpression; `r([a, b])` -> an ArrayExpression of identifiers.
|
|
214
|
+
for (const dep of depExpressions(body)) {
|
|
215
|
+
const name = unstableDepName(dep, derivedByName);
|
|
216
|
+
if (name !== null)
|
|
217
|
+
offenders.push(name);
|
|
218
|
+
}
|
|
219
|
+
if (offenders.length > 0)
|
|
220
|
+
r.unstableDeps = offenders;
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* The individual dep expressions inside a resource deps-thunk body. A
|
|
225
|
+
* `SequenceExpression` (`r(a, b)` -> `(a, b)`) is split into its members;
|
|
226
|
+
* anything else is a single dep. An inline array literal is left whole — it is
|
|
227
|
+
* itself the (fresh-each-render) dep value, not a list of deps.
|
|
228
|
+
*/
|
|
229
|
+
const depExpressions = (body) => {
|
|
230
|
+
if (t.isSequenceExpression(body))
|
|
231
|
+
return body.expressions;
|
|
232
|
+
return t.isExpression(body) ? [body] : [];
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* Returns the offending dep name when `dep` is non-identity-stable, else null.
|
|
236
|
+
* An inline object/array literal reports a synthetic marker (it has no name);
|
|
237
|
+
* an identifier naming a fresh-object/array `derived` reports the derived name.
|
|
238
|
+
*/
|
|
239
|
+
const unstableDepName = (dep, derivedByName) => {
|
|
240
|
+
if (t.isObjectExpression(dep))
|
|
241
|
+
return "(inline object literal)";
|
|
242
|
+
if (t.isArrayExpression(dep))
|
|
243
|
+
return "(inline array literal)";
|
|
244
|
+
if (t.isIdentifier(dep)) {
|
|
245
|
+
const rhs = derivedByName.get(dep.name);
|
|
246
|
+
if (rhs && (t.isObjectExpression(rhs) || t.isArrayExpression(rhs)))
|
|
247
|
+
return dep.name;
|
|
248
|
+
}
|
|
249
|
+
return null;
|
|
250
|
+
};
|
|
251
|
+
/**
|
|
252
|
+
* Strip a derived thunk body down to the value it ultimately produces:
|
|
253
|
+
* a parenthesized expression is already unwrapped by the parser, and the
|
|
254
|
+
* `{ … return v }` block form lowers to an IIFE (`(() => { … return v })()`),
|
|
255
|
+
* so unwrap to that final `return` argument. Anything else is returned as-is.
|
|
256
|
+
*/
|
|
257
|
+
const unwrapThunkBody = (body) => {
|
|
258
|
+
if (!t.isCallExpression(body))
|
|
259
|
+
return body;
|
|
260
|
+
const callee = body.callee;
|
|
261
|
+
if (!t.isArrowFunctionExpression(callee) && !t.isFunctionExpression(callee))
|
|
262
|
+
return body;
|
|
263
|
+
if (!t.isBlockStatement(callee.body))
|
|
264
|
+
return callee.body;
|
|
265
|
+
const last = callee.body.body[callee.body.body.length - 1];
|
|
266
|
+
if (last && t.isReturnStatement(last) && last.argument)
|
|
267
|
+
return last.argument;
|
|
268
|
+
return body;
|
|
269
|
+
};
|
|
270
|
+
// ---------------------------------------------------------------------------
|
|
271
|
+
// R029 — `.map()` in a view returning keyless JSX (Component DSL §7).
|
|
272
|
+
//
|
|
273
|
+
// The classic React reconciliation footgun: a list-rendering `X.map(cb)` whose
|
|
274
|
+
// callback returns a `JSXElement` without a `key` attribute. We flag ONLY when
|
|
275
|
+
// the returned element has no `key` AND no `JSXSpreadAttribute` (a spread may
|
|
276
|
+
// carry `key`); fragment shorthand `<>…</>` (`JSXFragment`) is skipped — it
|
|
277
|
+
// cannot take a key. A manual recursive walk over the view arrow body (no scope
|
|
278
|
+
// rebuild, `@babel/types` only — Node-portable). Pass 9 emits the warning.
|
|
279
|
+
const analyzeKeylessMaps = (c) => {
|
|
280
|
+
if (!c.view)
|
|
281
|
+
return;
|
|
282
|
+
let count = 0;
|
|
283
|
+
walkForKeylessMaps(c.view.body.body, () => count++);
|
|
284
|
+
if (count > 0)
|
|
285
|
+
c.view.keylessMaps = count;
|
|
286
|
+
};
|
|
287
|
+
/** True when `node` is a `X.map(…)` member call (non-computed `.map`). */
|
|
288
|
+
const isMapCall = (node) => t.isCallExpression(node) &&
|
|
289
|
+
t.isMemberExpression(node.callee) &&
|
|
290
|
+
!node.callee.computed &&
|
|
291
|
+
t.isIdentifier(node.callee.property, { name: "map" });
|
|
292
|
+
/** The expression a map callback returns, unwrapping a `{ … return v }` body. */
|
|
293
|
+
const mapCallbackReturn = (call) => {
|
|
294
|
+
const cb = call.arguments[0];
|
|
295
|
+
if (!cb || (!t.isArrowFunctionExpression(cb) && !t.isFunctionExpression(cb)))
|
|
296
|
+
return null;
|
|
297
|
+
if (!t.isBlockStatement(cb.body))
|
|
298
|
+
return cb.body;
|
|
299
|
+
const last = cb.body.body[cb.body.body.length - 1];
|
|
300
|
+
return last && t.isReturnStatement(last) ? (last.argument ?? null) : null;
|
|
301
|
+
};
|
|
302
|
+
/** A `JSXElement` with neither a `key` attribute nor a spread (which may carry one). */
|
|
303
|
+
const isKeylessElement = (node) => {
|
|
304
|
+
if (!t.isJSXElement(node))
|
|
305
|
+
return false; // JSXFragment shorthand can't take a key
|
|
306
|
+
for (const attr of node.openingElement.attributes) {
|
|
307
|
+
if (t.isJSXSpreadAttribute(attr))
|
|
308
|
+
return false; // a spread may carry `key`
|
|
309
|
+
if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name, { name: "key" }))
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
return true;
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Manual recursive AST walk reporting each `.map()` whose callback returns a
|
|
316
|
+
* keyless JSX element. Visits child nodes via `@babel/types`' VISITOR_KEYS so
|
|
317
|
+
* nested maps inside other expressions are reached. No Babel scope is built.
|
|
318
|
+
*/
|
|
319
|
+
const walkForKeylessMaps = (node, onHit) => {
|
|
320
|
+
if (!node || typeof node.type !== "string")
|
|
321
|
+
return;
|
|
322
|
+
if (isMapCall(node)) {
|
|
323
|
+
const ret = mapCallbackReturn(node);
|
|
324
|
+
if (ret && isKeylessElement(ret))
|
|
325
|
+
onHit();
|
|
326
|
+
}
|
|
327
|
+
for (const key of t.VISITOR_KEYS[node.type] ?? []) {
|
|
328
|
+
const child = node[key];
|
|
329
|
+
if (Array.isArray(child)) {
|
|
330
|
+
for (const el of child)
|
|
331
|
+
walkForKeylessMaps(el, onHit);
|
|
332
|
+
}
|
|
333
|
+
else if (child && typeof child === "object") {
|
|
334
|
+
walkForKeylessMaps(child, onHit);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
//# sourceMappingURL=pass-3-readset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass-3-readset.js","sourceRoot":"","sources":["../../src/passes/pass-3-readset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { FileGraph } from "../ast/nodes.ts";
|
|
2
|
+
/** A mapped slice: `at` is a char offset into the owning `Emitted.text`. */
|
|
3
|
+
export interface CodegenMark {
|
|
4
|
+
readonly at: number;
|
|
5
|
+
/** byte offset of the slice's origin in the preprocessed source */
|
|
6
|
+
readonly ppOffset: number;
|
|
7
|
+
}
|
|
8
|
+
/** Emitted text plus the origins of any user-code slices inside it. */
|
|
9
|
+
export interface Emitted {
|
|
10
|
+
readonly text: string;
|
|
11
|
+
readonly marks: readonly CodegenMark[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Top-level codegen: imports + every container's emission.
|
|
15
|
+
*
|
|
16
|
+
* Backlog 1a: store-name resolution no longer consults the `.reactra.json`
|
|
17
|
+
* sidecar — `inject store X` binds via `import type { X }` (cross-file) or a
|
|
18
|
+
* same-file declaration, so codegen needs no project-wide index.
|
|
19
|
+
*/
|
|
20
|
+
/** Codegen result: the compiled text plus the user-code source marks (#10-followup). */
|
|
21
|
+
export interface CodegenResult {
|
|
22
|
+
readonly code: string;
|
|
23
|
+
/** Each mark: a char offset into `code` → its origin byte offset in the preprocessed source. */
|
|
24
|
+
readonly marks: readonly CodegenMark[];
|
|
25
|
+
}
|
|
26
|
+
export declare const codegen: (graph: FileGraph) => CodegenResult;
|
|
27
|
+
//# sourceMappingURL=pass-9-codegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass-9-codegen.d.ts","sourceRoot":"","sources":["../../src/passes/pass-9-codegen.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAMV,SAAS,EAOV,MAAM,iBAAiB,CAAA;AAqCxB,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,uEAAuE;AACvE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;CACvC;AAm2FD;;;;;;GAMG;AACH,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,gGAAgG;IAChG,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;CACvC;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,SAAS,KAAG,aA0H1C,CAAA"}
|