@component-compass/reference-graph 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder.d.ts +32 -1
- package/dist/builder.js +62 -3
- package/dist/builder.js.map +1 -1
- package/dist/engine/helper-callers.d.ts +25 -9
- package/dist/engine/helper-callers.js +125 -40
- package/dist/engine/helper-callers.js.map +1 -1
- package/dist/engine/index.d.ts +69 -3
- package/dist/engine/index.js +248 -33
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/owner-resolution.d.ts +2 -2
- package/dist/engine/owner-resolution.js +1 -2
- package/dist/engine/owner-resolution.js.map +1 -1
- package/dist/engine/re-export-chain.d.ts +16 -11
- package/dist/engine/re-export-chain.js +59 -30
- package/dist/engine/re-export-chain.js.map +1 -1
- package/dist/engine/resolve-reference.js +46 -18
- package/dist/engine/resolve-reference.js.map +1 -1
- package/dist/engine/wrapper-folding.js +4 -2
- package/dist/engine/wrapper-folding.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js.map +1 -1
- package/dist/types/file-graph.d.ts +44 -1
- package/package.json +2 -2
package/dist/builder.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { OccurrenceVia, PropUsage, ResolveImport } from "@component-compass/plugin-core";
|
|
2
2
|
import type { BindingDecl, ExportRecord, Graph, ImportRecord, Reference, ScopeId } from "./index.js";
|
|
3
|
+
import type { Dialect } from "./types/file-graph.js";
|
|
3
4
|
export interface FileBuilder {
|
|
4
5
|
/** Repo-relative POSIX path of the file this builder is emitting into. */
|
|
5
6
|
readonly filePath: string;
|
|
@@ -23,9 +24,24 @@ export interface FileBuilder {
|
|
|
23
24
|
};
|
|
24
25
|
props: PropUsage[];
|
|
25
26
|
}): void;
|
|
27
|
+
/** Record a tag-based element reference (Vue auto-imports, future Lit/HTML
|
|
28
|
+
* elements). Pushes a parallel ownership entry with `kind: "tag"`. */
|
|
29
|
+
addTagUsage(usage: {
|
|
30
|
+
tagName: string;
|
|
31
|
+
loc: {
|
|
32
|
+
line: number;
|
|
33
|
+
column: number;
|
|
34
|
+
};
|
|
35
|
+
props: PropUsage[];
|
|
36
|
+
}): void;
|
|
26
37
|
/** Wire the owner of the last-emitted JsxUsage. Optionally override the
|
|
27
38
|
* `via` the engine emits for this occurrence (see FileGraph.ownership). */
|
|
28
39
|
setOwner(ownerSymbolRef: Reference | null, viaOverride?: OccurrenceVia): void;
|
|
40
|
+
/** Wire the owner of the most-recently-emitted TagUsage. Walks backward
|
|
41
|
+
* through `ownership` to find the latest `kind: "tag"` entry, so it
|
|
42
|
+
* remains correct when a TagUsage push is followed by a JsxUsage push
|
|
43
|
+
* (or vice versa). No-op when no tag-kind ownership entry exists. */
|
|
44
|
+
setTagOwner(ownerSymbolRef: Reference | null, viaOverride?: OccurrenceVia): void;
|
|
29
45
|
/** Same as setOwner but addresses a specific ownership entry by index.
|
|
30
46
|
* Used by parser-react's prop-forward finalize pass (#151) to re-attribute
|
|
31
47
|
* the original construction-site ownership entry without disturbing later
|
|
@@ -60,9 +76,24 @@ export interface FileBuilder {
|
|
|
60
76
|
scope?: ScopeId;
|
|
61
77
|
};
|
|
62
78
|
}): void;
|
|
79
|
+
/** Mark the most-recently-emitted usage as the lexical parent for any
|
|
80
|
+
* subsequent usages emitted before the matching `popUsageScope`. Parsers
|
|
81
|
+
* walking an element tree push when entering a child-bearing element and
|
|
82
|
+
* pop on exit; the builder stamps `parentUsageIdx` + `depth` on ownership
|
|
83
|
+
* entries while the stack is non-empty.
|
|
84
|
+
*
|
|
85
|
+
* Parent matching is intra-kind: a jsx usage's parent must also be jsx,
|
|
86
|
+
* a tag usage's parent must also be tag. When a mixed-kind boundary is
|
|
87
|
+
* crossed, depth still reflects the open scope but `parentUsageIdx`
|
|
88
|
+
* is omitted.
|
|
89
|
+
*
|
|
90
|
+
* No-op when there are no emitted usages yet. */
|
|
91
|
+
pushUsageScope(): void;
|
|
92
|
+
/** Pop the most-recent parent-stack frame. No-op when the stack is empty. */
|
|
93
|
+
popUsageScope(): void;
|
|
63
94
|
}
|
|
64
95
|
export interface GraphBuilder {
|
|
65
|
-
beginFile(filePath: string): FileBuilder;
|
|
96
|
+
beginFile(filePath: string, dialect?: Dialect): FileBuilder;
|
|
66
97
|
build(): Graph;
|
|
67
98
|
}
|
|
68
99
|
export type CreateGraphBuilderOptions = {
|
package/dist/builder.js
CHANGED
|
@@ -7,18 +7,24 @@ import { MODULE_SCOPE } from "./index.js";
|
|
|
7
7
|
export function createGraphBuilder(opts) {
|
|
8
8
|
const files = new Map();
|
|
9
9
|
return {
|
|
10
|
-
beginFile(filePath) {
|
|
10
|
+
beginFile(filePath, dialect = "react") {
|
|
11
11
|
const scopes = new Map([[MODULE_SCOPE, { parent: null }]]);
|
|
12
12
|
const declarations = new Map();
|
|
13
13
|
const imports = [];
|
|
14
14
|
const importsByLocal = new Map();
|
|
15
15
|
const exports = [];
|
|
16
16
|
const jsxUsages = [];
|
|
17
|
+
const tagUsages = [];
|
|
17
18
|
const ownership = [];
|
|
18
19
|
const bodyCalls = [];
|
|
19
20
|
const scopeStack = [MODULE_SCOPE];
|
|
20
21
|
let nextScopeId = 1;
|
|
21
|
-
|
|
22
|
+
// Lexical parent stack for composition tracking. Each frame records the
|
|
23
|
+
// usage-array index + kind of the most-recently-emitted usage when
|
|
24
|
+
// `pushUsageScope` was called. See FileGraph.ownership.parentUsageIdx /
|
|
25
|
+
// depth.
|
|
26
|
+
const parentStack = [];
|
|
27
|
+
const fg = { filePath, dialect, scopes, declarations, imports, importsByLocal, exports, jsxUsages, tagUsages, ownership, bodyCalls };
|
|
22
28
|
files.set(filePath, fg);
|
|
23
29
|
return {
|
|
24
30
|
filePath,
|
|
@@ -58,7 +64,29 @@ export function createGraphBuilder(opts) {
|
|
|
58
64
|
loc: usage.loc,
|
|
59
65
|
props: usage.props,
|
|
60
66
|
});
|
|
61
|
-
|
|
67
|
+
const top = parentStack[parentStack.length - 1];
|
|
68
|
+
const entry = {
|
|
69
|
+
usageIdx: jsxUsages.length - 1,
|
|
70
|
+
kind: "jsx",
|
|
71
|
+
ownerSymbolRef: null,
|
|
72
|
+
depth: parentStack.length,
|
|
73
|
+
};
|
|
74
|
+
if (top && top.kind === "jsx")
|
|
75
|
+
entry.parentUsageIdx = top.idx;
|
|
76
|
+
ownership.push(entry);
|
|
77
|
+
},
|
|
78
|
+
addTagUsage(usage) {
|
|
79
|
+
tagUsages.push({ tagName: usage.tagName, loc: usage.loc, props: usage.props });
|
|
80
|
+
const top = parentStack[parentStack.length - 1];
|
|
81
|
+
const entry = {
|
|
82
|
+
usageIdx: tagUsages.length - 1,
|
|
83
|
+
kind: "tag",
|
|
84
|
+
ownerSymbolRef: null,
|
|
85
|
+
depth: parentStack.length,
|
|
86
|
+
};
|
|
87
|
+
if (top && top.kind === "tag")
|
|
88
|
+
entry.parentUsageIdx = top.idx;
|
|
89
|
+
ownership.push(entry);
|
|
62
90
|
},
|
|
63
91
|
setOwner(ownerSymbolRef, viaOverride) {
|
|
64
92
|
if (ownership.length === 0)
|
|
@@ -71,6 +99,20 @@ export function createGraphBuilder(opts) {
|
|
|
71
99
|
}
|
|
72
100
|
}
|
|
73
101
|
},
|
|
102
|
+
setTagOwner(ownerSymbolRef, viaOverride) {
|
|
103
|
+
// Walk backward to find the latest "tag" entry — setTagOwner must
|
|
104
|
+
// remain correct when a TagUsage push is followed by a JsxUsage
|
|
105
|
+
// push (or vice versa). No-op when no tag entry exists.
|
|
106
|
+
for (let i = ownership.length - 1; i >= 0; i--) {
|
|
107
|
+
const entry = ownership[i];
|
|
108
|
+
if (entry?.kind === "tag") {
|
|
109
|
+
entry.ownerSymbolRef = ownerSymbolRef;
|
|
110
|
+
if (viaOverride !== undefined)
|
|
111
|
+
entry.viaOverride = viaOverride;
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
74
116
|
setOwnerAt(usageIdx, ownerSymbolRef, viaOverride) {
|
|
75
117
|
const entry = ownership[usageIdx];
|
|
76
118
|
if (!entry)
|
|
@@ -93,6 +135,23 @@ export function createGraphBuilder(opts) {
|
|
|
93
135
|
const scope = record.callee.scope ?? scopeStack[scopeStack.length - 1] ?? MODULE_SCOPE;
|
|
94
136
|
bodyCalls.push({ ownerSymbol: record.ownerSymbol, callee: { ...record.callee, scope } });
|
|
95
137
|
},
|
|
138
|
+
pushUsageScope() {
|
|
139
|
+
// Push the most-recently-emitted usage as the parent frame. No-op
|
|
140
|
+
// when there are no ownership entries yet — pushing before any
|
|
141
|
+
// usage has been emitted is meaningless.
|
|
142
|
+
if (ownership.length === 0)
|
|
143
|
+
return;
|
|
144
|
+
const last = ownership[ownership.length - 1];
|
|
145
|
+
if (!last)
|
|
146
|
+
return;
|
|
147
|
+
parentStack.push({ idx: last.usageIdx, kind: last.kind });
|
|
148
|
+
},
|
|
149
|
+
popUsageScope() {
|
|
150
|
+
// Pop is a no-op on empty stack — defensive against parser bugs
|
|
151
|
+
// emitting an unmatched pop. Throwing here would force every
|
|
152
|
+
// emitter to track stack depth.
|
|
153
|
+
parentStack.pop();
|
|
154
|
+
},
|
|
96
155
|
};
|
|
97
156
|
},
|
|
98
157
|
build() {
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kDAAkD;AAClD,wDAAwD;AACxD,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAYjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,11 +35,15 @@ export type SymbolKey = {
|
|
|
35
35
|
export type HelperCallerIndex = {
|
|
36
36
|
get(key: SymbolKey): Set<SymbolKey> | undefined;
|
|
37
37
|
};
|
|
38
|
+
export type ClassifiedHelperIndex = HelperCallerIndex & {
|
|
39
|
+
classification(file: string, symbol: string): Classification;
|
|
40
|
+
};
|
|
38
41
|
/**
|
|
39
|
-
*
|
|
42
|
+
* Three-phase build of the helper → component-callers reverse index plus
|
|
43
|
+
* per-decl classification cache.
|
|
40
44
|
*
|
|
41
|
-
*
|
|
42
|
-
* collecting caller-side references from
|
|
45
|
+
* Phase 1 (collect) walks every module-scope `Function`-valued BindingDecl
|
|
46
|
+
* across the graph, collecting caller-side references from three sources:
|
|
43
47
|
*
|
|
44
48
|
* 1. `TypeOf` refs inside the decl's return-type expressions
|
|
45
49
|
* (`decl.value.returns`) — captures `() => helper()` shapes where the
|
|
@@ -49,12 +53,24 @@ export type HelperCallerIndex = {
|
|
|
49
53
|
* the call is a body-level statement, invisible to the value-flow
|
|
50
54
|
* algebra. parser-react populates these; other parsers may emit an
|
|
51
55
|
* empty array.
|
|
56
|
+
* 3. `fileGraph.jsxUsages` whose target resolves to a helper-classified
|
|
57
|
+
* declaration — captures `<Helper/>` invocation, which is a call shape
|
|
58
|
+
* the value-flow + bodyCalls passes don't see. The JSX's enclosing
|
|
59
|
+
* scope (`fileGraph.ownership[i].ownerSymbolRef`) is the caller.
|
|
60
|
+
* Without this pass, helper-classified functions consumed via JSX
|
|
61
|
+
* (the dominant React call shape) never appear as called by anyone.
|
|
62
|
+
*
|
|
63
|
+
* Phase 2 (classify) runs structural classification on every module-scope
|
|
64
|
+
* Function decl, with a reclassification gate: a decl classified as
|
|
65
|
+
* `"component"` but consumed only as a value (never JSX) is reclassified
|
|
66
|
+
* as `"helper"`.
|
|
52
67
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
68
|
+
* Phase 3 (index) walks the pending value-refs and JSX-calls collected in
|
|
69
|
+
* phase 1, recording caller edges for targets classified as `"helper"`. Each
|
|
70
|
+
* collected ref resolves to its declaring file/symbol; external and
|
|
71
|
+
* unresolvable refs are skipped.
|
|
56
72
|
*
|
|
57
|
-
* Cost: O(declarations × refs-per-declaration). Cross-file
|
|
58
|
-
* the existing module resolver — no new IO.
|
|
73
|
+
* Cost: O(declarations × refs-per-declaration + jsx-usages). Cross-file
|
|
74
|
+
* resolution uses the existing module resolver — no new IO.
|
|
59
75
|
*/
|
|
60
|
-
export declare function buildHelperCallers(graph: Graph):
|
|
76
|
+
export declare function buildHelperCallers(graph: Graph): ClassifiedHelperIndex;
|
|
@@ -72,10 +72,11 @@ export function hasJsx(t, graph, originFile, guard) {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
|
-
*
|
|
75
|
+
* Three-phase build of the helper → component-callers reverse index plus
|
|
76
|
+
* per-decl classification cache.
|
|
76
77
|
*
|
|
77
|
-
*
|
|
78
|
-
* collecting caller-side references from
|
|
78
|
+
* Phase 1 (collect) walks every module-scope `Function`-valued BindingDecl
|
|
79
|
+
* across the graph, collecting caller-side references from three sources:
|
|
79
80
|
*
|
|
80
81
|
* 1. `TypeOf` refs inside the decl's return-type expressions
|
|
81
82
|
* (`decl.value.returns`) — captures `() => helper()` shapes where the
|
|
@@ -85,31 +86,37 @@ export function hasJsx(t, graph, originFile, guard) {
|
|
|
85
86
|
* the call is a body-level statement, invisible to the value-flow
|
|
86
87
|
* algebra. parser-react populates these; other parsers may emit an
|
|
87
88
|
* empty array.
|
|
89
|
+
* 3. `fileGraph.jsxUsages` whose target resolves to a helper-classified
|
|
90
|
+
* declaration — captures `<Helper/>` invocation, which is a call shape
|
|
91
|
+
* the value-flow + bodyCalls passes don't see. The JSX's enclosing
|
|
92
|
+
* scope (`fileGraph.ownership[i].ownerSymbolRef`) is the caller.
|
|
93
|
+
* Without this pass, helper-classified functions consumed via JSX
|
|
94
|
+
* (the dominant React call shape) never appear as called by anyone.
|
|
88
95
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
96
|
+
* Phase 2 (classify) runs structural classification on every module-scope
|
|
97
|
+
* Function decl, with a reclassification gate: a decl classified as
|
|
98
|
+
* `"component"` but consumed only as a value (never JSX) is reclassified
|
|
99
|
+
* as `"helper"`.
|
|
92
100
|
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
101
|
+
* Phase 3 (index) walks the pending value-refs and JSX-calls collected in
|
|
102
|
+
* phase 1, recording caller edges for targets classified as `"helper"`. Each
|
|
103
|
+
* collected ref resolves to its declaring file/symbol; external and
|
|
104
|
+
* unresolvable refs are skipped.
|
|
105
|
+
*
|
|
106
|
+
* Cost: O(declarations × refs-per-declaration + jsx-usages). Cross-file
|
|
107
|
+
* resolution uses the existing module resolver — no new IO.
|
|
95
108
|
*/
|
|
96
109
|
export function buildHelperCallers(graph) {
|
|
110
|
+
// ── Phase 1: collect ────────────────────────────────────────────────────
|
|
111
|
+
// 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).
|
|
97
114
|
const index = new Map();
|
|
98
|
-
// Parallel string-key sets so dedupe runs in O(1) instead of an O(n) linear
|
|
99
|
-
// scan of `Set<SymbolKey>` (whose entries are object-identity-keyed and so
|
|
100
|
-
// can't dedupe themselves on field equality).
|
|
101
115
|
const callerKeysByHelper = new Map();
|
|
116
|
+
const valueConsumers = new Map();
|
|
117
|
+
// Per-decl classification cache populated in phase 2.
|
|
102
118
|
const classificationCache = new Map();
|
|
103
119
|
const refResolutionCache = new Map();
|
|
104
|
-
function classifyCached(decl, file) {
|
|
105
|
-
const key = `${file}::${decl.symbol}`;
|
|
106
|
-
const hit = classificationCache.get(key);
|
|
107
|
-
if (hit !== undefined)
|
|
108
|
-
return hit;
|
|
109
|
-
const result = classifyDeclaration(decl, graph, file);
|
|
110
|
-
classificationCache.set(key, result);
|
|
111
|
-
return result;
|
|
112
|
-
}
|
|
113
120
|
function resolveRefCached(ref, callerFile, callerGraph) {
|
|
114
121
|
const key = `${callerFile}::${ref.symbol}`;
|
|
115
122
|
if (refResolutionCache.has(key)) {
|
|
@@ -119,6 +126,7 @@ export function buildHelperCallers(graph) {
|
|
|
119
126
|
refResolutionCache.set(key, result);
|
|
120
127
|
return result;
|
|
121
128
|
}
|
|
129
|
+
const pendingValueRefs = [];
|
|
122
130
|
for (const [file, fileGraph] of graph.files) {
|
|
123
131
|
for (const decl of fileGraph.declarations.values()) {
|
|
124
132
|
if (decl.scope !== MODULE_SCOPE)
|
|
@@ -133,36 +141,112 @@ export function buildHelperCallers(graph) {
|
|
|
133
141
|
refs.push(bc.callee);
|
|
134
142
|
}
|
|
135
143
|
const callerKey = { file, symbol: decl.symbol };
|
|
136
|
-
const callerKeyStr = `${file}::${decl.symbol}`;
|
|
137
144
|
for (const ref of refs) {
|
|
138
145
|
const target = resolveRefCached(ref, file, fileGraph);
|
|
139
146
|
if (!target)
|
|
140
147
|
continue;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
seen = new Set();
|
|
148
|
-
callerKeysByHelper.set(keyStr, seen);
|
|
149
|
-
}
|
|
150
|
-
if (seen.has(callerKeyStr))
|
|
151
|
-
continue;
|
|
152
|
-
seen.add(callerKeyStr);
|
|
153
|
-
let callers = index.get(keyStr);
|
|
154
|
-
if (!callers) {
|
|
155
|
-
callers = new Set();
|
|
156
|
-
index.set(keyStr, callers);
|
|
148
|
+
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);
|
|
157
154
|
}
|
|
158
|
-
|
|
155
|
+
consumerSet.add(`${callerKey.file}::${callerKey.symbol}`);
|
|
159
156
|
}
|
|
160
157
|
}
|
|
161
158
|
}
|
|
159
|
+
const pendingJsxCalls = [];
|
|
160
|
+
const jsxConsumerCount = new Map();
|
|
161
|
+
for (const [file, fileGraph] of graph.files) {
|
|
162
|
+
for (let i = 0; i < fileGraph.jsxUsages.length; i++) {
|
|
163
|
+
const usage = fileGraph.jsxUsages[i];
|
|
164
|
+
if (!usage)
|
|
165
|
+
continue;
|
|
166
|
+
const target = resolveRefCached(usage.ref, file, fileGraph);
|
|
167
|
+
if (!target)
|
|
168
|
+
continue;
|
|
169
|
+
const targetKey = `${target.file}::${target.decl.symbol}`;
|
|
170
|
+
jsxConsumerCount.set(targetKey, (jsxConsumerCount.get(targetKey) ?? 0) + 1);
|
|
171
|
+
const ownership = fileGraph.ownership[i];
|
|
172
|
+
if (!ownership?.ownerSymbolRef)
|
|
173
|
+
continue;
|
|
174
|
+
const callerTarget = resolveRefCached(ownership.ownerSymbolRef, file, fileGraph);
|
|
175
|
+
if (!callerTarget)
|
|
176
|
+
continue;
|
|
177
|
+
if (callerTarget.decl.scope !== MODULE_SCOPE)
|
|
178
|
+
continue;
|
|
179
|
+
pendingJsxCalls.push({
|
|
180
|
+
target,
|
|
181
|
+
caller: { file: callerTarget.file, symbol: callerTarget.decl.symbol },
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// ── 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.)
|
|
188
|
+
function classifyKey(file, decl) {
|
|
189
|
+
const key = `${file}::${decl.symbol}`;
|
|
190
|
+
const hit = classificationCache.get(key);
|
|
191
|
+
if (hit !== undefined)
|
|
192
|
+
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
|
+
}
|
|
199
|
+
classificationCache.set(key, result);
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
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.
|
|
205
|
+
for (const [file, fileGraph] of graph.files) {
|
|
206
|
+
for (const decl of fileGraph.declarations.values()) {
|
|
207
|
+
if (decl.scope !== MODULE_SCOPE)
|
|
208
|
+
continue;
|
|
209
|
+
if (decl.value.kind !== "Function")
|
|
210
|
+
continue;
|
|
211
|
+
classifyKey(file, decl);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// ── Phase 3: index ──────────────────────────────────────────────────────
|
|
215
|
+
function recordCallerEdge(target, callerKey) {
|
|
216
|
+
const keyStr = `${target.file}::${target.decl.symbol}`;
|
|
217
|
+
const callerKeyStr = `${callerKey.file}::${callerKey.symbol}`;
|
|
218
|
+
let seen = callerKeysByHelper.get(keyStr);
|
|
219
|
+
if (!seen) {
|
|
220
|
+
seen = new Set();
|
|
221
|
+
callerKeysByHelper.set(keyStr, seen);
|
|
222
|
+
}
|
|
223
|
+
if (seen.has(callerKeyStr))
|
|
224
|
+
return;
|
|
225
|
+
seen.add(callerKeyStr);
|
|
226
|
+
let callers = index.get(keyStr);
|
|
227
|
+
if (!callers) {
|
|
228
|
+
callers = new Set();
|
|
229
|
+
index.set(keyStr, callers);
|
|
230
|
+
}
|
|
231
|
+
callers.add(callerKey);
|
|
232
|
+
}
|
|
233
|
+
for (const { target, caller } of pendingValueRefs) {
|
|
234
|
+
if (classifyKey(target.file, target.decl) !== "helper")
|
|
235
|
+
continue;
|
|
236
|
+
recordCallerEdge(target, caller);
|
|
237
|
+
}
|
|
238
|
+
for (const { target, caller } of pendingJsxCalls) {
|
|
239
|
+
if (classifyKey(target.file, target.decl) !== "helper")
|
|
240
|
+
continue;
|
|
241
|
+
recordCallerEdge(target, caller);
|
|
242
|
+
}
|
|
162
243
|
return {
|
|
163
244
|
get(key) {
|
|
164
245
|
return index.get(`${key.file}::${key.symbol}`);
|
|
165
246
|
},
|
|
247
|
+
classification(file, symbol) {
|
|
248
|
+
return classificationCache.get(`${file}::${symbol}`) ?? "unknown";
|
|
249
|
+
},
|
|
166
250
|
};
|
|
167
251
|
}
|
|
168
252
|
/** Walk an InferredType, collecting every `TypeOf` ref found at any depth. */
|
|
@@ -246,8 +330,9 @@ function resolveRefToDecl(ref, callerFile, callerGraph, graph) {
|
|
|
246
330
|
}
|
|
247
331
|
}
|
|
248
332
|
// Fallback: locally-defined named/default exports at the resolved target.
|
|
249
|
-
//
|
|
250
|
-
//
|
|
333
|
+
// Reached when followReExportChain returned null but the target file's
|
|
334
|
+
// local exports may still match the imported symbol. Star entries are
|
|
335
|
+
// handled inside followReExportChain (#158); they don't need handling here.
|
|
251
336
|
for (const exp of targetGraph.exports) {
|
|
252
337
|
if (exp.kind === "named" && "local" in exp && exp.exportedAs === imp.imported) {
|
|
253
338
|
const decl = targetGraph.declarations.get(`${MODULE_SCOPE}::${exp.local}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper-callers.js","sourceRoot":"","sources":["../../src/engine/helper-callers.ts"],"names":[],"mappings":"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"}
|
|
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"}
|
package/dist/engine/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Graph } from "../index.js";
|
|
2
|
-
import type { OccurrenceVia, ComponentId, PropValueState } from "@component-compass/plugin-core";
|
|
2
|
+
import type { OccurrenceVia, ComponentId, PropValueState, DiagnosticCollector } from "@component-compass/plugin-core";
|
|
3
3
|
/** Full occurrence shape produced by the engine.
|
|
4
4
|
*
|
|
5
5
|
* `rawComponentId` carries the structured `ComponentId` (same type as in
|
|
@@ -25,8 +25,18 @@ export type EngineOccurrence = {
|
|
|
25
25
|
/** Provisional stable id (keyed on serialised componentId + location).
|
|
26
26
|
* Scan.ts re-derives using the final hashed componentId string. */
|
|
27
27
|
occurrenceId: string;
|
|
28
|
-
/** Composition depth —
|
|
28
|
+
/** Composition depth — count of tracked ancestors at emit time. Sourced from
|
|
29
|
+
* the per-file ownership entry's `depth`. Zero for root-level usages and
|
|
30
|
+
* for occurrences in files whose parser doesn't call
|
|
31
|
+
* `pushUsageScope`/`popUsageScope`. Helper-call fanout shares the same
|
|
32
|
+
* depth across every fanned-out occurrence (they share one lexical site). */
|
|
29
33
|
depth: number;
|
|
34
|
+
/** Index into the resolved `occurrences[]` array of the immediate-tracked
|
|
35
|
+
* lexical parent. Absent for root-level usages and when the parent's
|
|
36
|
+
* emission produced no occurrence. Computed by a second pass after the
|
|
37
|
+
* main emission loop. Parent tracking is intra-kind: a jsx usage's parent
|
|
38
|
+
* must also be jsx; a tag usage's parent must also be tag. */
|
|
39
|
+
parentRef?: number;
|
|
30
40
|
/** Declaration position for local-scope identities. */
|
|
31
41
|
definition?: {
|
|
32
42
|
line: number;
|
|
@@ -36,8 +46,64 @@ export type EngineOccurrence = {
|
|
|
36
46
|
rawOwnerComponentId?: ComponentId;
|
|
37
47
|
/** Stable id of enclosing component definition. Absent when deferred. */
|
|
38
48
|
ownerComponentId?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Cross-link to the underlying custom element this react-component wraps.
|
|
51
|
+
* Present only when `wrapCallback` was supplied to `resolve` and returned a
|
|
52
|
+
* hit for this occurrence's (packageName, exportName) pair.
|
|
53
|
+
* Does NOT participate in componentId hashing.
|
|
54
|
+
*/
|
|
55
|
+
wraps?: {
|
|
56
|
+
kind: "custom-element";
|
|
57
|
+
tagName: string;
|
|
58
|
+
packageName: string;
|
|
59
|
+
};
|
|
39
60
|
};
|
|
40
61
|
export type ResolvedGraph = {
|
|
41
62
|
occurrences: EngineOccurrence[];
|
|
42
63
|
};
|
|
43
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Project-wide tag → identity lookup. Supplied by the host so the engine can
|
|
66
|
+
* resolve tag-based usages (e.g. `<pie-button>` in Vue/HTML/Lit dialects) to
|
|
67
|
+
* either a CEM-known external custom element or a workspace-local web
|
|
68
|
+
* component. Both methods return `undefined` on miss; the engine never imports
|
|
69
|
+
* CEM types — it only consumes the return shapes here.
|
|
70
|
+
*/
|
|
71
|
+
export type TagResolverIndex = {
|
|
72
|
+
/** Tag → externally-declared custom element (CEM hit). */
|
|
73
|
+
externalByTag(tag: string): {
|
|
74
|
+
packageName: string;
|
|
75
|
+
modulePath?: string;
|
|
76
|
+
} | undefined;
|
|
77
|
+
/** Tag → locally-defined custom element (workspace WC). */
|
|
78
|
+
localByTag(tag: string): {
|
|
79
|
+
filePath: string;
|
|
80
|
+
exportName: string;
|
|
81
|
+
} | undefined;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Options for the `resolve` engine pass.
|
|
85
|
+
*/
|
|
86
|
+
export type ResolveOpts = {
|
|
87
|
+
/**
|
|
88
|
+
* Optional cross-link callback. Called at each external react-component
|
|
89
|
+
* emission with (packageName, exportName). When a hit is returned the engine
|
|
90
|
+
* attaches `wraps` to the emitted `EngineOccurrence`. No-op when omitted or
|
|
91
|
+
* returns null. Engine never imports CEM types — only consumes the return shape.
|
|
92
|
+
*/
|
|
93
|
+
wrapCallback?: (packageName: string, exportName: string) => {
|
|
94
|
+
tagName: string;
|
|
95
|
+
packageName: string;
|
|
96
|
+
} | null;
|
|
97
|
+
/**
|
|
98
|
+
* Optional project-wide tag resolver. Required for dialects that emit
|
|
99
|
+
* `TagUsage` entries (vue / html / lit); parser-react-only consumers can
|
|
100
|
+
* omit it.
|
|
101
|
+
*/
|
|
102
|
+
tagIndex?: TagResolverIndex;
|
|
103
|
+
/**
|
|
104
|
+
* Sink for engine-emitted diagnostics (currently: low-confidence-tag).
|
|
105
|
+
* Optional — when omitted, diagnostics are silently dropped.
|
|
106
|
+
*/
|
|
107
|
+
collector?: DiagnosticCollector;
|
|
108
|
+
};
|
|
109
|
+
export declare function resolve(graph: Graph, opts?: ResolveOpts): ResolvedGraph;
|