@component-compass/reference-graph 0.1.17 → 0.1.19

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.
Files changed (42) hide show
  1. package/dist/builder.d.ts +7 -1
  2. package/dist/builder.js +9 -3
  3. package/dist/builder.js.map +1 -1
  4. package/dist/engine/argument-map.d.ts +4 -0
  5. package/dist/engine/argument-map.js +7 -4
  6. package/dist/engine/argument-map.js.map +1 -1
  7. package/dist/engine/assert-never.d.ts +7 -0
  8. package/dist/engine/assert-never.js +10 -0
  9. package/dist/engine/assert-never.js.map +1 -0
  10. package/dist/engine/component-shape.d.ts +38 -0
  11. package/dist/engine/component-shape.js +177 -0
  12. package/dist/engine/component-shape.js.map +1 -0
  13. package/dist/engine/helper-callers.d.ts +43 -28
  14. package/dist/engine/helper-callers.js +94 -96
  15. package/dist/engine/helper-callers.js.map +1 -1
  16. package/dist/engine/host-element.d.ts +37 -0
  17. package/dist/engine/host-element.js +55 -0
  18. package/dist/engine/host-element.js.map +1 -0
  19. package/dist/engine/index.d.ts +4 -0
  20. package/dist/engine/index.js +312 -99
  21. package/dist/engine/index.js.map +1 -1
  22. package/dist/engine/library-stubs.d.ts +2 -0
  23. package/dist/engine/library-stubs.js +42 -0
  24. package/dist/engine/library-stubs.js.map +1 -0
  25. package/dist/engine/member-identity.d.ts +24 -4
  26. package/dist/engine/member-identity.js +28 -4
  27. package/dist/engine/member-identity.js.map +1 -1
  28. package/dist/engine/registry.d.ts +100 -0
  29. package/dist/engine/registry.js +242 -0
  30. package/dist/engine/registry.js.map +1 -0
  31. package/dist/engine/resolve-reference.js +7 -0
  32. package/dist/engine/resolve-reference.js.map +1 -1
  33. package/dist/engine/resolve-type.js +54 -1
  34. package/dist/engine/resolve-type.js.map +1 -1
  35. package/dist/engine/wrapper-folding.d.ts +21 -3
  36. package/dist/engine/wrapper-folding.js +386 -91
  37. package/dist/engine/wrapper-folding.js.map +1 -1
  38. package/dist/index.d.ts +6 -1
  39. package/dist/index.js +4 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/types/file-graph.d.ts +21 -10
  42. package/package.json +2 -2
@@ -1,82 +1,61 @@
1
1
  import { MODULE_SCOPE } from "../index.js";
2
- import { resolveReference } from "./resolve-reference.js";
3
- import { createCycleGuard } from "./cycle-detection.js";
4
2
  import { followReExportChain } from "./re-export-chain.js";
5
3
  /**
6
- * Structural component-vs-helper classification. Mirrors Omlet's `is_component`
7
- * at `cli/crates/core/src/analyzer/mod.rs:1498`. A Function is a component iff
8
- * any of its return types satisfies `hasJsx` i.e. returns JSX directly or
9
- * through `Union`/`ReturnTypeOf`. Non-Function values get `unknown` so the
10
- * caller preserves today's behavior (no helper reassignment).
11
- *
12
- * NOTE: an `originFile` argument is required when the decl's value contains
13
- * cross-module type refs (TypeOf / ReturnTypeOf with refs), so that
14
- * `resolveReference` knows which FileGraph to look up scope chains against.
4
+ * Walk the scope chain for `ref.symbol` in `fileGraph.declarations` and
5
+ * return the first matching BindingDecl, or null if not found. THE
6
+ * scope-chain walk (I4) `registry.ts`'s `resolveUsageTarget` calls this
7
+ * seam instead of re-deriving it.
15
8
  */
16
- export function classifyDeclaration(decl, graph, originFile) {
17
- if (decl.value.kind !== "Function")
18
- return "unknown";
19
- const guard = createCycleGuard();
20
- for (const t of decl.value.returns) {
21
- if (hasJsx(t, graph, originFile, guard))
22
- return "component";
9
+ export function findLocalDeclaration(fileGraph, ref) {
10
+ let scope = ref.scope;
11
+ while (true) {
12
+ const decl = fileGraph.declarations.get(`${scope}::${ref.symbol}`);
13
+ if (decl)
14
+ return decl;
15
+ if (scope === MODULE_SCOPE)
16
+ return null;
17
+ const parent = fileGraph.scopes.get(scope)?.parent;
18
+ if (parent === null || parent === undefined)
19
+ return null;
20
+ scope = parent;
23
21
  }
24
- return "helper";
25
22
  }
26
23
  /**
27
- * Strict JSX-bearing predicate. Mirrors Omlet's `has_jsx` at
28
- * `cli/crates/core/src/analyzer/mod.rs:1478`.
24
+ * Component-vs-helper classification for owner attribution (#559): owners
25
+ * are registry members, or they fan out. A Function- or call-valued
26
+ * declaration the registry admits is a "component" and owns its JSX; one it
27
+ * does not admit is a "helper", and the JSX inside it belongs to its callers
28
+ * (`resolveOwnerChain`). Plain values stay "unknown" so `resolveOwnerChain`
29
+ * treats them as it always has.
29
30
  *
30
- * JSX → true
31
- * Union<...JSX...> → true (any branch)
32
- * ReturnTypeOf<componentCallable> → true
33
- * MemberOf<obj, member> where resolved has JSX true (recursive)
34
- * TypeOf<ref> where resolved value has JSX → true (recursive, cross-file)
35
- * Object / Array / Str / Unknown / etc. → false
31
+ * No second shape test and no second naming rule live here: `registry` is
32
+ * the roster view (`excludeHostElementNames` applied), so a lowercase render
33
+ * helper (#540), a capitalised function only ever called (`ActionButtons({…})`),
34
+ * and a dead JSX-returning declaration are all helpers for the same reason —
35
+ * the registry did not admit them.
36
36
  *
37
- * The `Object{cta: JSX}` and `Array<{x: JSX}>` cases deliberately return false
38
- * that's what classifies data factories and JSX-in-container hooks as helpers.
37
+ * A Vue SFC the default-exported declaration of a vue-dialect file — is
38
+ * outside the registry by design (it is not typed by this algebra) and the
39
+ * engine admits its identity unconditionally; ownership follows the same
40
+ * rule, so an SFC always owns its template. Any other declaration in a Vue
41
+ * file (a `<script>` helper) is judged like a React one.
39
42
  */
40
- export function hasJsx(t, graph, originFile, guard) {
41
- switch (t.kind) {
42
- case "JSX":
43
- return true;
44
- case "Union":
45
- return t.types.some((u) => hasJsx(u, graph, originFile, guard));
46
- case "ReturnTypeOf":
47
- return hasJsx(t.callee, graph, originFile, guard);
48
- case "Function":
49
- return t.returns.some((r) => hasJsx(r, graph, originFile, guard));
50
- case "TypeOf": {
51
- const effectiveFile = t.ref.originFile ?? originFile;
52
- if (!effectiveFile)
53
- return false;
54
- const file = graph.files.get(effectiveFile);
55
- if (!file)
56
- return false;
57
- const gr = guard.push(effectiveFile, t.ref.symbol);
58
- if (gr !== "ok")
59
- return false;
60
- try {
61
- const resolved = resolveReference(graph, file, t.ref, guard);
62
- return hasJsx(resolved, graph, effectiveFile, guard);
63
- }
64
- finally {
65
- guard.pop(effectiveFile, t.ref.symbol);
66
- }
67
- }
68
- case "MemberOf":
69
- return hasJsx(t.obj, graph, originFile, guard);
70
- default:
71
- return false;
72
- }
43
+ export function classifyDeclaration(decl, registry, fileGraph) {
44
+ if (decl.value.kind !== "Function" && decl.value.kind !== "ReturnTypeOf")
45
+ return "unknown";
46
+ if (fileGraph.dialect === "vue" && isSfcDeclaration(fileGraph, decl))
47
+ return "component";
48
+ return registry.hasLocal(fileGraph.filePath, decl.symbol) ? "component" : "helper";
73
49
  }
50
+ const isSfcDeclaration = (fileGraph, decl) => fileGraph.exports.some((e) => e.kind === "default" && "local" in e && e.local === decl.symbol);
74
51
  /**
75
52
  * Three-phase build of the helper → component-callers reverse index plus
76
53
  * per-decl classification cache.
77
54
  *
78
- * Phase 1 (collect) walks every module-scope `Function`-valued BindingDecl
79
- * across the graph, collecting caller-side references from three sources:
55
+ * Phase 1 (collect) walks every module-scope `Function`- or
56
+ * `ReturnTypeOf`-valued BindingDecl across the graph (the latter is a
57
+ * factory's product, spec D13), collecting caller-side references from
58
+ * three sources:
80
59
  *
81
60
  * 1. `TypeOf` refs inside the decl's return-type expressions
82
61
  * (`decl.value.returns`) — captures `() => helper()` shapes where the
@@ -94,7 +73,7 @@ export function hasJsx(t, graph, originFile, guard) {
94
73
  * (the dominant React call shape) never appear as called by anyone.
95
74
  *
96
75
  * Phase 2 (classify) runs structural classification on every module-scope
97
- * Function decl, with a reclassification gate: a decl classified as
76
+ * Function- or ReturnTypeOf-valued decl, with a reclassification gate: a decl classified as
98
77
  * `"component"` but consumed only as a value (never JSX) is reclassified
99
78
  * as `"helper"`.
100
79
  *
@@ -106,14 +85,12 @@ export function hasJsx(t, graph, originFile, guard) {
106
85
  * Cost: O(declarations × refs-per-declaration + jsx-usages). Cross-file
107
86
  * resolution uses the existing module resolver — no new IO.
108
87
  */
109
- export function buildHelperCallers(graph) {
88
+ export function buildHelperCallers(graph, registry) {
110
89
  // ── Phase 1: collect ────────────────────────────────────────────────────
111
90
  // Per-target accumulators (file::symbol → ...). callerKeysByHelper dedupes
112
- // caller edges in O(1); valueConsumers mirrors the index but indexed by
113
- // target (used in phase 2 for the reclassification rule).
91
+ // caller edges in O(1).
114
92
  const index = new Map();
115
93
  const callerKeysByHelper = new Map();
116
- const valueConsumers = new Map();
117
94
  // Per-decl classification cache populated in phase 2.
118
95
  const classificationCache = new Map();
119
96
  const refResolutionCache = new Map();
@@ -131,11 +108,27 @@ export function buildHelperCallers(graph) {
131
108
  for (const decl of fileGraph.declarations.values()) {
132
109
  if (decl.scope !== MODULE_SCOPE)
133
110
  continue;
134
- if (decl.value.kind !== "Function")
135
- continue;
136
111
  const refs = [];
137
- for (const r of decl.value.returns)
138
- collectRefsInType(r, refs);
112
+ if (decl.value.kind === "Function") {
113
+ for (const r of decl.value.returns)
114
+ collectRefsInType(r, refs);
115
+ }
116
+ else if (decl.value.kind === "ReturnTypeOf") {
117
+ // A factory's product (`const Foo = withLoading(FooView)`) is a
118
+ // caller of the factory (spec D13), so JSX inside the factory's body
119
+ // fans out to each product. Only the CALLEE chain contributes — an
120
+ // argument is the thing being wrapped, not a value the product
121
+ // consumes, and must not feed the reclassification gate. Restricted
122
+ // to `ReturnTypeOf` specifically: D13 is about the PRODUCT OF A
123
+ // CALL. A bare alias (`const Item = RadioArea`, `TypeOf`) or a
124
+ // member alias (`const Root = Primitive.Root`, `MemberOf`) is not a
125
+ // call — running `collectCalleeRefs` on those would index the alias
126
+ // as a caller of what it aliases, flip the aliased declaration's
127
+ // classification to "helper" via the reclassification rule, and
128
+ // fan its JSX out to the alias instead of leaving it owned by the
129
+ // original declaration (found via the cal.diy real-consumer diff).
130
+ collectCalleeRefs(decl.value, refs);
131
+ }
139
132
  for (const bc of fileGraph.bodyCalls) {
140
133
  if (bc.ownerSymbol === decl.symbol)
141
134
  refs.push(bc.callee);
@@ -146,18 +139,10 @@ export function buildHelperCallers(graph) {
146
139
  if (!target)
147
140
  continue;
148
141
  pendingValueRefs.push({ target, caller: callerKey });
149
- const targetKey = `${target.file}::${target.decl.symbol}`;
150
- let consumerSet = valueConsumers.get(targetKey);
151
- if (!consumerSet) {
152
- consumerSet = new Set();
153
- valueConsumers.set(targetKey, consumerSet);
154
- }
155
- consumerSet.add(`${callerKey.file}::${callerKey.symbol}`);
156
142
  }
157
143
  }
158
144
  }
159
145
  const pendingJsxCalls = [];
160
- const jsxConsumerCount = new Map();
161
146
  for (const [file, fileGraph] of graph.files) {
162
147
  for (let i = 0; i < fileGraph.jsxUsages.length; i++) {
163
148
  const usage = fileGraph.jsxUsages[i];
@@ -166,8 +151,6 @@ export function buildHelperCallers(graph) {
166
151
  const target = resolveRefCached(usage.ref, file, fileGraph);
167
152
  if (!target)
168
153
  continue;
169
- const targetKey = `${target.file}::${target.decl.symbol}`;
170
- jsxConsumerCount.set(targetKey, (jsxConsumerCount.get(targetKey) ?? 0) + 1);
171
154
  const ownership = fileGraph.ownership[i];
172
155
  if (!ownership?.ownerSymbolRef)
173
156
  continue;
@@ -183,30 +166,27 @@ export function buildHelperCallers(graph) {
183
166
  }
184
167
  }
185
168
  // ── Phase 2: classify ───────────────────────────────────────────────────
186
- // Structural classification, then reclassification gate. (The gate kicks
187
- // in at task 3; today it's a no-op because we already cache the result.)
169
+ // One judge (#559): the registry. A member owns its JSX; anything else
170
+ // JSX-returning is a helper whose JSX fans out to its callers.
188
171
  function classifyKey(file, decl) {
189
172
  const key = `${file}::${decl.symbol}`;
190
173
  const hit = classificationCache.get(key);
191
174
  if (hit !== undefined)
192
175
  return hit;
193
- let result = classifyDeclaration(decl, graph, file);
194
- if (result === "component"
195
- && (jsxConsumerCount.get(key) ?? 0) === 0
196
- && (valueConsumers.get(key)?.size ?? 0) > 0) {
197
- result = "helper";
198
- }
176
+ const fileGraph = graph.files.get(file);
177
+ const result = fileGraph ? classifyDeclaration(decl, registry, fileGraph) : "unknown";
199
178
  classificationCache.set(key, result);
200
179
  return result;
201
180
  }
202
- // Walk every module-scope Function-valued decl so its classification lands
203
- // in the cache before resolveOwnerChain runs. Non-Function decls classify
204
- // lazily via the same path.
181
+ // Walk every module-scope Function- or ReturnTypeOf-valued decl so its
182
+ // classification lands in the cache before resolveOwnerChain runs (a
183
+ // factory's product is ReturnTypeOf-valued — spec D13). Other decls
184
+ // classify lazily via the same path.
205
185
  for (const [file, fileGraph] of graph.files) {
206
186
  for (const decl of fileGraph.declarations.values()) {
207
187
  if (decl.scope !== MODULE_SCOPE)
208
188
  continue;
209
- if (decl.value.kind !== "Function")
189
+ if (decl.value.kind !== "Function" && decl.value.kind !== "ReturnTypeOf")
210
190
  continue;
211
191
  classifyKey(file, decl);
212
192
  }
@@ -249,6 +229,24 @@ export function buildHelperCallers(graph) {
249
229
  },
250
230
  };
251
231
  }
232
+ /** Walk only the callee side of a value: `ReturnTypeOf.callee` chains and
233
+ * `MemberOf.obj`, collecting the `TypeOf` refs that name what is being
234
+ * called. Arguments are deliberately skipped (see Pass A). */
235
+ function collectCalleeRefs(t, out) {
236
+ switch (t.kind) {
237
+ case "ReturnTypeOf":
238
+ collectCalleeRefs(t.callee, out);
239
+ return;
240
+ case "MemberOf":
241
+ collectCalleeRefs(t.obj, out);
242
+ return;
243
+ case "TypeOf":
244
+ out.push(t.ref);
245
+ return;
246
+ default:
247
+ return;
248
+ }
249
+ }
252
250
  /** Walk an InferredType, collecting every `TypeOf` ref found at any depth. */
253
251
  function collectRefsInType(t, out) {
254
252
  switch (t.kind) {
@@ -295,7 +293,7 @@ function collectRefsInType(t, out) {
295
293
  *
296
294
  * Returns null for unresolved or external refs.
297
295
  */
298
- function resolveRefToDecl(ref, callerFile, callerGraph, graph) {
296
+ export function resolveRefToDecl(ref, callerFile, callerGraph, graph) {
299
297
  // 1. Try the local declaration first.
300
298
  const localKey = `${MODULE_SCOPE}::${ref.symbol}`;
301
299
  const localDecl = callerGraph.declarations.get(localKey);
@@ -1 +1 @@
1
- {"version":3,"file":"helper-callers.js","sourceRoot":"","sources":["../../src/engine/helper-callers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAmB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAI3D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAiB,EACjB,KAAY,EACZ,UAAmB;IAEnB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;YAAE,OAAO,WAAW,CAAC;IAC9D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,MAAM,CACpB,CAAe,EACf,KAAY,EACZ,UAA8B,EAC9B,KAAiB;IAEjB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACpD,KAAK,UAAU;YACb,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC;YACrD,IAAI,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7D,OAAO,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACjD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY;IAC7C,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEtD,sDAAsD;IACtD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAsD,CAAC;IAEzF,SAAS,gBAAgB,CACvB,GAAc,EACd,UAAkB,EAClB,WAAsB;QAEtB,MAAM,GAAG,GAAG,GAAG,UAAU,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACrE,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAE/C,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC7C,MAAM,IAAI,GAAgB,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/D,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBACrC,IAAI,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,SAAS,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAE3D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1D,IAAI,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;oBACxB,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC7C,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAWD,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEnD,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1D,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAE5E,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,cAAc;gBAAE,SAAS;YACzC,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACjF,IAAI,CAAC,YAAY;gBAAE,SAAS;YAC5B,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YACvD,eAAe,CAAC,IAAI,CAAC;gBACnB,MAAM;gBACN,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,SAAS,WAAW,CAAC,IAAY,EAAE,IAAiB;QAClD,MAAM,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClC,IAAI,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IACE,MAAM,KAAK,WAAW;eACnB,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;eACtC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAC3C,CAAC;YACD,MAAM,GAAG,QAAQ,CAAC;QACpB,CAAC;QACD,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,4BAA4B;IAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC7C,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,SAAS,gBAAgB,CACvB,MAA2C,EAC3C,SAAoB;QAEpB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QAC9D,IAAI,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACjB,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,OAAO;QACnC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,SAAS;QACjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,SAAS;QACjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,GAAG,CAAC,GAAG;YACL,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,cAAc,CAAC,IAAI,EAAE,MAAM;YACzB,OAAO,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM,EAAE,CAAC,IAAI,SAAS,CAAC;QACpE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,iBAAiB,CAAC,CAAe,EAAE,GAAgB;IAC1D,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO;QACT,KAAK,OAAO;YACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACnD,OAAO;QACT,KAAK,cAAc;YACjB,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,OAAO;QACT,KAAK,UAAU;YACb,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO;QACT,KAAK,QAAQ;YACX,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClE,OAAO;QACT,KAAK,OAAO;YACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtD,OAAO;QACT,KAAK,UAAU;YACb,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,aAAa;YAChB,kEAAkE;YAClE,OAAO;QACT;YACE,qDAAqD;YACrD,OAAO;IACX,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,GAAc,EACd,UAAkB,EAClB,WAAsB,EACtB,KAAY;IAEZ,sCAAsC;IACtC,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAE5D,sBAAsB;IACtB,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB;QACxC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC;QACvD,CAAC,CAAC,WAAW,CAAC;IAChB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,wEAAwE;IACxE,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IACxE,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACtF,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,sEAAsE;IACtE,4EAA4E;IAC5E,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9E,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3E,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3E,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"helper-callers.js","sourceRoot":"","sources":["../../src/engine/helper-callers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAoB,EAAE,GAAc;IACvE,IAAI,KAAK,GAAY,GAAG,CAAC,KAAK,CAAC;IAC/B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,KAAK,KAAK,YAAY;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACnD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACzD,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;AACH,CAAC;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAiB,EAAE,QAA2B,EAAE,SAAoB;IACtG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,SAAS,CAAC;IAC3F,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,IAAI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC;IACzF,OAAO,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrF,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,SAAoB,EAAE,IAAiB,EAAW,EAAE,CAC5E,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;AAYjG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,QAA2B;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,wBAAwB;IACxB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE1D,sDAAsD;IACtD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAsD,CAAC;IAEzF,SAAS,gBAAgB,CACvB,GAAc,EACd,UAAkB,EAClB,WAAsB;QAEtB,MAAM,GAAG,GAAG,GAAG,UAAU,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACrE,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAE/C,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YAC1C,MAAM,IAAI,GAAgB,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;oBAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC9C,gEAAgE;gBAChE,qEAAqE;gBACrE,mEAAmE;gBACnE,+DAA+D;gBAC/D,oEAAoE;gBACpE,gEAAgE;gBAChE,+DAA+D;gBAC/D,oEAAoE;gBACpE,oEAAoE;gBACpE,iEAAiE;gBACjE,gEAAgE;gBAChE,kEAAkE;gBAClE,mEAAmE;gBACnE,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBACrC,IAAI,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,SAAS,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAE3D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IASD,MAAM,eAAe,GAAqB,EAAE,CAAC;IAE7C,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,cAAc;gBAAE,SAAS;YACzC,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACjF,IAAI,CAAC,YAAY;gBAAE,SAAS;YAC5B,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YACvD,eAAe,CAAC,IAAI,CAAC;gBACnB,MAAM;gBACN,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,+DAA+D;IAC/D,SAAS,WAAW,CAAC,IAAY,EAAE,IAAiB;QAClD,MAAM,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uEAAuE;IACvE,qEAAqE;IACrE,oEAAoE;IACpE,qCAAqC;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc;gBAAE,SAAS;YACnF,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,SAAS,gBAAgB,CACvB,MAA2C,EAC3C,SAAoB;QAEpB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QAC9D,IAAI,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACjB,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,OAAO;QACnC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,SAAS;QACjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,SAAS;QACjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,GAAG,CAAC,GAAG;YACL,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,cAAc,CAAC,IAAI,EAAE,MAAM;YACzB,OAAO,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM,EAAE,CAAC,IAAI,SAAS,CAAC;QACpE,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;+DAE+D;AAC/D,SAAS,iBAAiB,CAAC,CAAe,EAAE,GAAgB;IAC1D,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,cAAc;YACjB,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjC,OAAO;QACT,KAAK,UAAU;YACb,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,QAAQ;YACX,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO;QACT;YACE,OAAO;IACX,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,iBAAiB,CAAC,CAAe,EAAE,GAAgB;IAC1D,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO;QACT,KAAK,OAAO;YACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACnD,OAAO;QACT,KAAK,cAAc;YACjB,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,OAAO;QACT,KAAK,UAAU;YACb,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO;QACT,KAAK,QAAQ;YACX,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClE,OAAO;QACT,KAAK,OAAO;YACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtD,OAAO;QACT,KAAK,UAAU;YACb,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,aAAa;YAChB,kEAAkE;YAClE,OAAO;QACT;YACE,qDAAqD;YACrD,OAAO;IACX,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAc,EACd,UAAkB,EAClB,WAAsB,EACtB,KAAY;IAEZ,sCAAsC;IACtC,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAE5D,sBAAsB;IACtB,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB;QACxC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC;QACvD,CAAC,CAAC,WAAW,CAAC;IAChB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,wEAAwE;IACxE,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IACxE,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACtF,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,sEAAsE;IACtE,4EAA4E;IAC5E,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9E,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3E,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3E,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { FileGraph } from "../index.js";
2
+ /**
3
+ * THE JSX host-element naming rule (#518 D7, #540). JSX compiles a bare,
4
+ * lowercase-initial element name to a string — `div`, `svg`, `web-button` —
5
+ * so such a name can never denote a component binding. `_Foo` and `$x` ARE
6
+ * component references: the rule is `/^[a-z]/`, not "is not PascalCase".
7
+ *
8
+ * Takes a BARE name. A member expression (`<foo.Bar/>`) is never an
9
+ * intrinsic, so a caller holding a reference checks `memberChain.length === 0`
10
+ * first (`isHostElementRoot`, `engine/index.ts`).
11
+ *
12
+ * `isPascalCase` in `ast-utils/src/find-owner.ts` and
13
+ * `cli/src/local-index/detect-react.ts` is a DIFFERENT predicate (`/^[A-Z]/`,
14
+ * which rejects `_Foo`). Do not fold them into this one.
15
+ */
16
+ export declare function isHostElementName(name: string): boolean;
17
+ /**
18
+ * THE "this declaration can never be rendered as a component" test (#540):
19
+ * every name it could be rendered under is a host-element name. Roster
20
+ * membership calls it (`excludeHostElementNames`, `registry.ts`); owner
21
+ * classification (`classifyDeclaration`, `helper-callers.ts`) consults that
22
+ * narrowed roster rather than this rule (#559), so it is stated once and
23
+ * judged once.
24
+ *
25
+ * Two exemptions, both about which name a renderer actually sees:
26
+ *
27
+ * - A **default export** — the importer picks the name, so the local one
28
+ * carries no information (`export default () => <div/>` declares the
29
+ * symbol `default`; `const view = …; export default view` declares `view`).
30
+ * - A **component-named export alias** — `export { helper as Button }` is
31
+ * rendered as `<Button/>` by every importer.
32
+ *
33
+ * The alias is read from the file's export records, not from
34
+ * `BindingDecl.exportedAs`: that field is declared on the type but no parser
35
+ * writes it.
36
+ */
37
+ export declare function hasOnlyHostElementNames(symbol: string, fileGraph: FileGraph | undefined): boolean;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * THE JSX host-element naming rule (#518 D7, #540). JSX compiles a bare,
3
+ * lowercase-initial element name to a string — `div`, `svg`, `web-button` —
4
+ * so such a name can never denote a component binding. `_Foo` and `$x` ARE
5
+ * component references: the rule is `/^[a-z]/`, not "is not PascalCase".
6
+ *
7
+ * Takes a BARE name. A member expression (`<foo.Bar/>`) is never an
8
+ * intrinsic, so a caller holding a reference checks `memberChain.length === 0`
9
+ * first (`isHostElementRoot`, `engine/index.ts`).
10
+ *
11
+ * `isPascalCase` in `ast-utils/src/find-owner.ts` and
12
+ * `cli/src/local-index/detect-react.ts` is a DIFFERENT predicate (`/^[A-Z]/`,
13
+ * which rejects `_Foo`). Do not fold them into this one.
14
+ */
15
+ export function isHostElementName(name) {
16
+ return /^[a-z]/.test(name);
17
+ }
18
+ /**
19
+ * THE "this declaration can never be rendered as a component" test (#540):
20
+ * every name it could be rendered under is a host-element name. Roster
21
+ * membership calls it (`excludeHostElementNames`, `registry.ts`); owner
22
+ * classification (`classifyDeclaration`, `helper-callers.ts`) consults that
23
+ * narrowed roster rather than this rule (#559), so it is stated once and
24
+ * judged once.
25
+ *
26
+ * Two exemptions, both about which name a renderer actually sees:
27
+ *
28
+ * - A **default export** — the importer picks the name, so the local one
29
+ * carries no information (`export default () => <div/>` declares the
30
+ * symbol `default`; `const view = …; export default view` declares `view`).
31
+ * - A **component-named export alias** — `export { helper as Button }` is
32
+ * rendered as `<Button/>` by every importer.
33
+ *
34
+ * The alias is read from the file's export records, not from
35
+ * `BindingDecl.exportedAs`: that field is declared on the type but no parser
36
+ * writes it.
37
+ */
38
+ export function hasOnlyHostElementNames(symbol, fileGraph) {
39
+ if (!isHostElementName(symbol))
40
+ return false;
41
+ if (symbol === "default")
42
+ return false;
43
+ if (fileGraph === undefined)
44
+ return true;
45
+ for (const exp of fileGraph.exports) {
46
+ if (!("local" in exp) || exp.local !== symbol)
47
+ continue;
48
+ if (exp.kind === "default")
49
+ return false;
50
+ if (!isHostElementName(exp.exportedAs))
51
+ return false;
52
+ }
53
+ return true;
54
+ }
55
+ //# sourceMappingURL=host-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-element.js","sourceRoot":"","sources":["../../src/engine/host-element.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,SAAgC;IACtF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;YAAE,SAAS;QACxD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Graph } from "../index.js";
2
2
  import type { OccurrenceVia, ComponentId, PropValueState, DiagnosticCollector } from "@component-compass/plugin-core";
3
+ import { type ComponentRegistry } from "./registry.js";
3
4
  /** Full occurrence shape produced by the engine.
4
5
  *
5
6
  * `rawComponentId` carries the structured `ComponentId` (same type as in
@@ -63,6 +64,9 @@ export type EngineOccurrence = {
63
64
  };
64
65
  export type ResolvedGraph = {
65
66
  occurrences: EngineOccurrence[];
67
+ /** The component registry this resolution admitted identities against
68
+ * (spec D1). The CLI's roster join (`buildComponentSeeds`) reads it. */
69
+ registry: ComponentRegistry;
66
70
  };
67
71
  /**
68
72
  * Project-wide tag → identity lookup. Supplied by the host so the engine can