gitnexus 1.6.4-rc.2 → 1.6.4-rc.4
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/_shared/scope-resolution/finalize-algorithm.d.ts +22 -14
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +298 -37
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +47 -3
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.js +10 -2
- package/dist/_shared/scope-resolution/types.js.map +1 -1
- package/dist/core/ingestion/call-processor.js +2 -2
- package/dist/core/ingestion/constants.d.ts +4 -3
- package/dist/core/ingestion/constants.js +8 -3
- package/dist/core/ingestion/finalize-orchestrator.js +5 -0
- package/dist/core/ingestion/heritage-processor.js +2 -2
- package/dist/core/ingestion/import-processor.js +1 -1
- package/dist/core/ingestion/languages/csharp/captures.js +4 -1
- package/dist/core/ingestion/languages/csharp/namespace-siblings.d.ts +14 -13
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +62 -50
- package/dist/core/ingestion/languages/python/captures.js +4 -1
- package/dist/core/ingestion/languages/typescript/arity-metadata.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/arity-metadata.js +103 -0
- package/dist/core/ingestion/languages/typescript/arity.d.ts +37 -0
- package/dist/core/ingestion/languages/typescript/arity.js +54 -0
- package/dist/core/ingestion/languages/typescript/cache-stats.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/cache-stats.js +28 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +28 -0
- package/dist/core/ingestion/languages/typescript/captures.js +451 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +49 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +371 -0
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +50 -0
- package/dist/core/ingestion/languages/typescript/import-target.js +61 -0
- package/dist/core/ingestion/languages/typescript/index.d.ts +94 -0
- package/dist/core/ingestion/languages/typescript/index.js +94 -0
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +35 -0
- package/dist/core/ingestion/languages/typescript/interpret.js +317 -0
- package/dist/core/ingestion/languages/typescript/merge-bindings.d.ts +62 -0
- package/dist/core/ingestion/languages/typescript/merge-bindings.js +158 -0
- package/dist/core/ingestion/languages/typescript/query.d.ts +77 -0
- package/dist/core/ingestion/languages/typescript/query.js +778 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +171 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.d.ts +16 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +113 -0
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +71 -0
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +131 -0
- package/dist/core/ingestion/languages/typescript.js +19 -0
- package/dist/core/ingestion/model/scope-resolution-indexes.d.ts +14 -1
- package/dist/core/ingestion/parsing-processor.js +3 -3
- package/dist/core/ingestion/registry-primary-flag.d.ts +3 -1
- package/dist/core/ingestion/registry-primary-flag.js +4 -1
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +73 -11
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +48 -10
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +283 -14
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.d.ts +23 -2
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.js +109 -37
- package/dist/core/ingestion/scope-resolution/passes/mro.js +3 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +13 -5
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +11 -2
- package/dist/core/ingestion/scope-resolution/pipeline/registry.js +2 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +8 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +21 -5
- package/dist/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.d.ts +39 -0
- package/dist/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +65 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +54 -11
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +105 -30
- package/dist/core/ingestion/utils/env.d.ts +10 -0
- package/dist/core/ingestion/utils/env.js +14 -0
- package/dist/core/ingestion/workers/parse-worker.js +3 -3
- package/package.json +1 -1
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
* (`resolveImportTarget`, `expandsWildcardTo`, `mergeBindings`) that
|
|
27
27
|
* match the LanguageProvider surface from #911.
|
|
28
28
|
*
|
|
29
|
-
* **
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* **Non-binding imports rule.** `dynamic-unresolved` passes through with
|
|
30
|
+
* `targetFile: null`; `dynamic-resolved` and `side-effect` resolve to
|
|
31
|
+
* file-level `ImportEdge`s. None of these materialize `BindingRef`s.
|
|
32
32
|
*/
|
|
33
33
|
import type { SymbolDefinition } from './symbol-definition.js';
|
|
34
34
|
import type { BindingRef, ImportEdge, ParsedImport, ScopeId, WorkspaceIndex } from './types.js';
|
|
@@ -41,20 +41,28 @@ export interface FinalizeFile {
|
|
|
41
41
|
/**
|
|
42
42
|
* Defs exported from this file — the "what other files can import by name"
|
|
43
43
|
* surface. Typically those with `isExported: true` (the module's own
|
|
44
|
-
* declarations)
|
|
45
|
-
*
|
|
44
|
+
* declarations); parsers MAY also surface re-exported names here as a
|
|
45
|
+
* shortcut, but it is no longer required for correctness.
|
|
46
46
|
*
|
|
47
47
|
* **Multi-hop re-export contract.** `finalize` resolves an edge
|
|
48
|
-
* `A → B (importedName: 'X')` by looking up `X` in `B.localDefs`.
|
|
49
|
-
* only has `export { X } from './C'` and
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
48
|
+
* `A → B (importedName: 'X')` by first looking up `X` in `B.localDefs`.
|
|
49
|
+
* If `B` only has `export { X } from './C'` and does NOT surface `X` in
|
|
50
|
+
* its own `localDefs`, `finalize` falls back to the precomputed
|
|
51
|
+
* per-file re-export closure (`buildReexportClosures`), which encodes
|
|
52
|
+
* every name reachable through `B`'s named and wildcard re-exports —
|
|
53
|
+
* including transitively through cyclic SCCs. The lookup is O(1) and
|
|
54
|
+
* inherits the upstream `targetDefId`, populating `transitiveVia` with
|
|
55
|
+
* the file paths traversed to reach the leaf def.
|
|
53
56
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
57
|
+
* Surfacing re-exported names in `localDefs` is still a valid (and
|
|
58
|
+
* slightly cheaper) optimization: the direct lookup short-circuits the
|
|
59
|
+
* closure consult. Parsers SHOULD prefer surfacing names they can resolve
|
|
60
|
+
* statically (e.g., `export { X } from './c'` when `c.ts` is parsed in
|
|
61
|
+
* the same workspace), and rely on the closure for the long tail of
|
|
62
|
+
* barrel patterns.
|
|
63
|
+
*
|
|
64
|
+
* The fixpoint does NOT mutate `localDefs` across iterations — it is
|
|
65
|
+
* static input.
|
|
58
66
|
*/
|
|
59
67
|
readonly localDefs: readonly SymbolDefinition[];
|
|
60
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize-algorithm.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/finalize-algorithm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIhG,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IAChD
|
|
1
|
+
{"version":3,"file":"finalize-algorithm.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/finalize-algorithm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIhG,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACjD;AAED,2BAA2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,4DAA4D;IAC5D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,GAC7B,MAAM,GAAG,IAAI,CAAC;IAEjB;;;;;OAKG;IACH,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,SAAS,MAAM,EAAE,CAAC;IAEjG;;;;;;OAMG;IACH,aAAa,CACX,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,KAAK,EAAE,OAAO,GACb,SAAS,UAAU,EAAE,CAAC;CAC1B;AAED,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IAC9D,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC;IACpF,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,cAAc,CA8InF"}
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
* (`resolveImportTarget`, `expandsWildcardTo`, `mergeBindings`) that
|
|
27
27
|
* match the LanguageProvider surface from #911.
|
|
28
28
|
*
|
|
29
|
-
* **
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* **Non-binding imports rule.** `dynamic-unresolved` passes through with
|
|
30
|
+
* `targetFile: null`; `dynamic-resolved` and `side-effect` resolve to
|
|
31
|
+
* file-level `ImportEdge`s. None of these materialize `BindingRef`s.
|
|
32
32
|
*/
|
|
33
33
|
// ─── Entry point ───────────────────────────────────────────────────────────
|
|
34
34
|
export function finalize(input, hooks) {
|
|
@@ -59,6 +59,8 @@ export function finalize(input, hooks) {
|
|
|
59
59
|
}
|
|
60
60
|
for (const [fromFile, drafts] of edgeIndex) {
|
|
61
61
|
const edges = graph.get(fromFile);
|
|
62
|
+
if (edges === undefined)
|
|
63
|
+
continue;
|
|
62
64
|
for (const d of drafts) {
|
|
63
65
|
if (d.targetFile !== null && byFilePath.has(d.targetFile)) {
|
|
64
66
|
edges.add(d.targetFile);
|
|
@@ -67,6 +69,11 @@ export function finalize(input, hooks) {
|
|
|
67
69
|
}
|
|
68
70
|
// ── Phase 2: Tarjan SCC → reverse-topological list of SCCs.
|
|
69
71
|
const sccs = tarjanSccs(graph);
|
|
72
|
+
// ── Phase 2.5: precompute the per-file re-export closure (iterative,
|
|
73
|
+
// SCC-condensed). Eliminates the recursive crawl that the per-edge
|
|
74
|
+
// `tryFinalize` call site used to do; lookups are O(1) afterwards.
|
|
75
|
+
// See `buildReexportClosures` for the algorithm.
|
|
76
|
+
const reexportClosures = buildReexportClosures(input.files, byFilePath, edgeIndex);
|
|
70
77
|
// ── Phase 3: process SCCs in reverse-topological order (leaves first).
|
|
71
78
|
// Within each SCC, run a bounded fixpoint that resolves intra-SCC edges.
|
|
72
79
|
// Edges leaving the SCC are already resolved (their target SCC is
|
|
@@ -86,10 +93,12 @@ export function finalize(input, hooks) {
|
|
|
86
93
|
iterations++;
|
|
87
94
|
for (const filePath of scc.files) {
|
|
88
95
|
const drafts = edgeIndex.get(filePath);
|
|
96
|
+
if (drafts === undefined)
|
|
97
|
+
continue;
|
|
89
98
|
for (const draft of drafts) {
|
|
90
99
|
if (draft.finalized !== null)
|
|
91
100
|
continue;
|
|
92
|
-
const finalized = tryFinalize(draft, byFilePath);
|
|
101
|
+
const finalized = tryFinalize(draft, byFilePath, reexportClosures);
|
|
93
102
|
if (finalized !== null) {
|
|
94
103
|
draft.finalized = finalized;
|
|
95
104
|
progressed = true;
|
|
@@ -100,6 +109,8 @@ export function finalize(input, hooks) {
|
|
|
100
109
|
// Any drafts still not finalized within this SCC hit the cap → unresolved.
|
|
101
110
|
for (const filePath of scc.files) {
|
|
102
111
|
const drafts = edgeIndex.get(filePath);
|
|
112
|
+
if (drafts === undefined)
|
|
113
|
+
continue;
|
|
103
114
|
for (const draft of drafts) {
|
|
104
115
|
if (draft.finalized !== null)
|
|
105
116
|
continue;
|
|
@@ -114,9 +125,14 @@ export function finalize(input, hooks) {
|
|
|
114
125
|
// input order within each file, and wildcard-expand where applicable.
|
|
115
126
|
for (const file of input.files) {
|
|
116
127
|
const drafts = edgeIndex.get(file.filePath);
|
|
128
|
+
if (drafts === undefined)
|
|
129
|
+
continue;
|
|
117
130
|
const finalized = [];
|
|
118
131
|
for (const d of drafts) {
|
|
119
132
|
const edge = d.finalized;
|
|
133
|
+
if (edge === null) {
|
|
134
|
+
throw new Error(`Invariant violated: import edge was not finalized for ${file.filePath}`);
|
|
135
|
+
}
|
|
120
136
|
if (d.source.kind === 'wildcard' && edge.linkStatus !== 'unresolved') {
|
|
121
137
|
// Produce one `wildcard-expanded` ImportEdge per exported name.
|
|
122
138
|
const expanded = expandWildcard(edge, byFilePath, hooks, input.workspaceIndex);
|
|
@@ -177,14 +193,11 @@ function makeEdgeDraft(parsed, file, hooks, workspace) {
|
|
|
177
193
|
const targetFile = hooks.resolveImportTarget(parsed.targetRaw ?? '', file.filePath, workspace);
|
|
178
194
|
// Edge is unresolvable at the file level — mark unresolved now.
|
|
179
195
|
if (targetFile === null) {
|
|
180
|
-
const edgeKind = parsed.kind === 'wildcard' ? 'wildcard-expanded' : parsed.kind;
|
|
181
|
-
const localName = parsed.kind === 'wildcard' ? '' : parsed.localName;
|
|
182
|
-
const targetExportedName = extractExportedName(parsed);
|
|
183
196
|
const base = {
|
|
184
|
-
localName,
|
|
197
|
+
localName: extractLocalName(parsed),
|
|
185
198
|
targetFile: null,
|
|
186
|
-
targetExportedName,
|
|
187
|
-
kind:
|
|
199
|
+
targetExportedName: extractExportedName(parsed),
|
|
200
|
+
kind: edgeKindFor(parsed),
|
|
188
201
|
linkStatus: 'unresolved',
|
|
189
202
|
};
|
|
190
203
|
return {
|
|
@@ -197,25 +210,41 @@ function makeEdgeDraft(parsed, file, hooks, workspace) {
|
|
|
197
210
|
};
|
|
198
211
|
}
|
|
199
212
|
// Resolvable at the file level; intra-SCC fixpoint may still fail to fill
|
|
200
|
-
// in `targetDefId` (e.g., symbol not exported from target).
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
213
|
+
// in `targetDefId` (e.g., symbol not exported from target). Side-effect
|
|
214
|
+
// and resolved-dynamic imports are terminal at the file level — no
|
|
215
|
+
// `targetDefId` needed since they materialize no `BindingRef`. Pre-
|
|
216
|
+
// finalize them here so the fixpoint loop skips them entirely.
|
|
204
217
|
const base = {
|
|
205
|
-
localName,
|
|
218
|
+
localName: extractLocalName(parsed),
|
|
206
219
|
targetFile,
|
|
207
|
-
targetExportedName,
|
|
208
|
-
kind:
|
|
220
|
+
targetExportedName: extractExportedName(parsed),
|
|
221
|
+
kind: edgeKindFor(parsed),
|
|
209
222
|
};
|
|
223
|
+
const isFileLevelTerminal = parsed.kind === 'side-effect' || parsed.kind === 'dynamic-resolved';
|
|
210
224
|
return {
|
|
211
225
|
source: parsed,
|
|
212
226
|
fromFile: file.filePath,
|
|
213
227
|
fromScope: file.moduleScope,
|
|
214
228
|
targetFile,
|
|
215
229
|
base,
|
|
216
|
-
finalized: null,
|
|
230
|
+
finalized: isFileLevelTerminal ? base : null,
|
|
217
231
|
};
|
|
218
232
|
}
|
|
233
|
+
function edgeKindFor(parsed) {
|
|
234
|
+
if (parsed.kind === 'wildcard')
|
|
235
|
+
return 'wildcard-expanded';
|
|
236
|
+
return parsed.kind;
|
|
237
|
+
}
|
|
238
|
+
function extractLocalName(parsed) {
|
|
239
|
+
switch (parsed.kind) {
|
|
240
|
+
case 'wildcard':
|
|
241
|
+
case 'side-effect':
|
|
242
|
+
case 'dynamic-resolved':
|
|
243
|
+
return '';
|
|
244
|
+
default:
|
|
245
|
+
return parsed.localName;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
219
248
|
function extractExportedName(parsed) {
|
|
220
249
|
switch (parsed.kind) {
|
|
221
250
|
case 'named':
|
|
@@ -225,11 +254,13 @@ function extractExportedName(parsed) {
|
|
|
225
254
|
return parsed.importedName;
|
|
226
255
|
case 'wildcard':
|
|
227
256
|
case 'dynamic-unresolved':
|
|
257
|
+
case 'dynamic-resolved':
|
|
258
|
+
case 'side-effect':
|
|
228
259
|
return '';
|
|
229
260
|
}
|
|
230
261
|
}
|
|
231
262
|
// ─── Internal: per-edge finalization (phase 3) ─────────────────────────────
|
|
232
|
-
function tryFinalize(draft, byFilePath) {
|
|
263
|
+
function tryFinalize(draft, byFilePath, reexportClosures) {
|
|
233
264
|
const targetFile = draft.targetFile;
|
|
234
265
|
if (targetFile === null)
|
|
235
266
|
return draft.base; // already terminal
|
|
@@ -263,19 +294,236 @@ function tryFinalize(draft, byFilePath) {
|
|
|
263
294
|
// resolves once its prior hop is finalized.
|
|
264
295
|
const importedName = extractExportedName(draft.source);
|
|
265
296
|
const exported = findExportByName(targetModule.localDefs, importedName);
|
|
266
|
-
if (exported
|
|
297
|
+
if (exported !== undefined) {
|
|
298
|
+
const transitiveVia = draft.source.kind === 'reexport' ? Object.freeze([targetFile]) : undefined;
|
|
299
|
+
return {
|
|
300
|
+
...draft.base,
|
|
301
|
+
targetModuleScope: targetModule.moduleScope,
|
|
302
|
+
targetDefId: exported.nodeId,
|
|
303
|
+
...(transitiveVia !== undefined ? { transitiveVia } : {}),
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
// Multi-hop re-export follow. Barrel modules like
|
|
307
|
+
// // models.ts
|
|
308
|
+
// export { User } from './base';
|
|
309
|
+
// emit no local def for `User`; the name surfaces only via their own
|
|
310
|
+
// `reexport` edge. The per-file re-export closure built in phase 2.5
|
|
311
|
+
// already encodes every name reachable through that file's named and
|
|
312
|
+
// wildcard re-exports — including transitively through cyclic SCCs —
|
|
313
|
+
// so the lookup is O(1) and never recurses.
|
|
314
|
+
const followed = lookupReexportedName(reexportClosures, targetFile, importedName);
|
|
315
|
+
if (followed === null) {
|
|
267
316
|
// Target resolvable but the name isn't exported — keep trying in case a
|
|
268
317
|
// re-export inside the target's SCC surfaces it in a later iteration.
|
|
269
318
|
return null;
|
|
270
319
|
}
|
|
271
|
-
const
|
|
320
|
+
const viaFiles = [targetFile, ...followed.via];
|
|
321
|
+
const transitiveVia = draft.source.kind === 'reexport' || viaFiles.length > 1 ? Object.freeze(viaFiles) : undefined;
|
|
272
322
|
return {
|
|
273
323
|
...draft.base,
|
|
274
324
|
targetModuleScope: targetModule.moduleScope,
|
|
275
|
-
targetDefId:
|
|
325
|
+
targetDefId: followed.def.nodeId,
|
|
276
326
|
...(transitiveVia !== undefined ? { transitiveVia } : {}),
|
|
277
327
|
};
|
|
278
328
|
}
|
|
329
|
+
/**
|
|
330
|
+
* Build per-file re-export closures.
|
|
331
|
+
*
|
|
332
|
+
* **Algorithm.** Iterative SCC-condensed reverse-topological propagation,
|
|
333
|
+
* structurally identical to how `finalize` itself processes the file-
|
|
334
|
+
* level import graph. Replaces the legacy recursive
|
|
335
|
+
* `followReexportChain` crawl with a bounded, stack-safe pass:
|
|
336
|
+
*
|
|
337
|
+
* 1. **Sub-graph.** Build a directed graph whose edges are
|
|
338
|
+
* `reexport` and `wildcard` drafts only (regular imports do not
|
|
339
|
+
* contribute to the export surface, and `namespace`/
|
|
340
|
+
* `reexport-namespace` are terminal — their target def lives in
|
|
341
|
+
* `localDefs`).
|
|
342
|
+
* 2. **SCC condensation.** Run the same iterative `tarjanSccs` over
|
|
343
|
+
* the sub-graph. Output is in reverse-topological order (leaves
|
|
344
|
+
* first), so when we process an SCC every out-of-SCC neighbor
|
|
345
|
+
* already has its closure populated.
|
|
346
|
+
* 3. **Per-SCC propagation.**
|
|
347
|
+
* * Acyclic singleton: one pass — read neighbors' (already
|
|
348
|
+
* fully populated) closures.
|
|
349
|
+
* * Cyclic SCC (cycle ≥ 2 files, or self-loop): bounded
|
|
350
|
+
* fixpoint inside the SCC, capped at `|SCC| + 1` iterations
|
|
351
|
+
* (each iteration propagates names one hop further around
|
|
352
|
+
* the cycle; first-wins precedence keeps the map monotone
|
|
353
|
+
* so the fixpoint converges in at most |SCC| hops).
|
|
354
|
+
*
|
|
355
|
+
* **Precedence semantics — preserved from the recursive crawl.**
|
|
356
|
+
* * Named re-exports take precedence over wildcards.
|
|
357
|
+
* * Within each kind, declaration order wins (first match for a
|
|
358
|
+
* given exported name is kept; later drafts skip).
|
|
359
|
+
*
|
|
360
|
+
* **Complexity.**
|
|
361
|
+
* * Pre-pass: O(V + E_re) for SCC, plus O(|SCC| × Σ drafts) per cyclic
|
|
362
|
+
* SCC. For tree-shaped barrel graphs (the common case) it
|
|
363
|
+
* collapses to O(E_re) total.
|
|
364
|
+
* * Per-edge lookup at finalize time: O(1).
|
|
365
|
+
* * `transitiveVia` preserves the exact file path chain for diagnostics
|
|
366
|
+
* and graph provenance. Building those arrays copies the inherited path,
|
|
367
|
+
* which is O(depth²) in a pathological single-name barrel chain; practical
|
|
368
|
+
* TypeScript barrel chains are shallow enough that we keep exact paths
|
|
369
|
+
* instead of capping or summarizing them.
|
|
370
|
+
* * Pathological deep chains that previously needed
|
|
371
|
+
* `MAX_REEXPORT_DEPTH=100` to bound stack growth now resolve
|
|
372
|
+
* in full and are bounded only by available memory — the
|
|
373
|
+
* iterative formulation has no call-stack ceiling.
|
|
374
|
+
*/
|
|
375
|
+
function buildReexportClosures(files, byFilePath, edgeIndex) {
|
|
376
|
+
const closures = new Map();
|
|
377
|
+
for (const file of files)
|
|
378
|
+
closures.set(file.filePath, new Map());
|
|
379
|
+
// ── Step 1: build the re-export sub-graph (only resolvable
|
|
380
|
+
// reexport/wildcard targets contribute edges).
|
|
381
|
+
const subGraph = new Map();
|
|
382
|
+
for (const file of files) {
|
|
383
|
+
const targets = new Set();
|
|
384
|
+
const drafts = edgeIndex.get(file.filePath);
|
|
385
|
+
if (drafts !== undefined) {
|
|
386
|
+
for (const d of drafts) {
|
|
387
|
+
if (d.source.kind !== 'reexport' && d.source.kind !== 'wildcard')
|
|
388
|
+
continue;
|
|
389
|
+
if (d.targetFile === null)
|
|
390
|
+
continue;
|
|
391
|
+
if (!byFilePath.has(d.targetFile))
|
|
392
|
+
continue;
|
|
393
|
+
targets.add(d.targetFile);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
subGraph.set(file.filePath, targets);
|
|
397
|
+
}
|
|
398
|
+
// ── Step 2: SCC over the sub-graph. Reuses the same iterative Tarjan
|
|
399
|
+
// implementation that drives the file-level finalize loop, so any
|
|
400
|
+
// call-stack-safety guarantees there transfer here unchanged.
|
|
401
|
+
const subSccs = tarjanSccs(subGraph);
|
|
402
|
+
// ── Step 3: process SCCs in reverse-topological order. Acyclic
|
|
403
|
+
// singletons settle in one pass; cyclic SCCs run a bounded fixpoint.
|
|
404
|
+
for (const scc of subSccs) {
|
|
405
|
+
if (!scc.isCycle) {
|
|
406
|
+
const filePath = scc.files[0];
|
|
407
|
+
if (filePath !== undefined) {
|
|
408
|
+
populateFileClosure(filePath, byFilePath, edgeIndex, closures);
|
|
409
|
+
}
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
// Cap = |SCC| + 1. With first-wins precedence each name needs at
|
|
413
|
+
// most |SCC| iterations to propagate fully around the cycle; the
|
|
414
|
+
// extra iteration confirms no progress and breaks the loop.
|
|
415
|
+
const cap = scc.files.length + 1;
|
|
416
|
+
let progressed = true;
|
|
417
|
+
let iter = 0;
|
|
418
|
+
while (progressed && iter < cap) {
|
|
419
|
+
progressed = false;
|
|
420
|
+
iter++;
|
|
421
|
+
for (const filePath of scc.files) {
|
|
422
|
+
if (populateFileClosure(filePath, byFilePath, edgeIndex, closures)) {
|
|
423
|
+
progressed = true;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return closures;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Populate one file's re-export closure for one pass. Returns `true`
|
|
432
|
+
* iff the closure grew (signalling fixpoint progress to the caller).
|
|
433
|
+
*
|
|
434
|
+
* Walks the file's drafts in declaration order, named re-exports first
|
|
435
|
+
* (precedence), then wildcards. For each draft, attempts:
|
|
436
|
+
* 1. **Direct hit** — name exists in the target file's `localDefs`.
|
|
437
|
+
* 2. **Inherited** — name exists in the target file's already-populated
|
|
438
|
+
* closure (which encodes the target's own re-export chain).
|
|
439
|
+
*
|
|
440
|
+
* `closures.get(targetFile)` may itself still be empty for in-SCC
|
|
441
|
+
* targets on the first iteration; the outer fixpoint loop handles
|
|
442
|
+
* that by re-invoking this function.
|
|
443
|
+
*/
|
|
444
|
+
function populateFileClosure(filePath, byFilePath, edgeIndex, closures) {
|
|
445
|
+
const myClosure = closures.get(filePath);
|
|
446
|
+
if (myClosure === undefined)
|
|
447
|
+
return false;
|
|
448
|
+
const before = myClosure.size;
|
|
449
|
+
const drafts = edgeIndex.get(filePath);
|
|
450
|
+
if (drafts === undefined)
|
|
451
|
+
return false;
|
|
452
|
+
// Named re-exports — precedence over wildcards, declaration order
|
|
453
|
+
// first-wins for duplicates of the same exported name.
|
|
454
|
+
for (const draft of drafts) {
|
|
455
|
+
if (draft.source.kind !== 'reexport')
|
|
456
|
+
continue;
|
|
457
|
+
const targetFile = draft.targetFile;
|
|
458
|
+
if (targetFile === null)
|
|
459
|
+
continue;
|
|
460
|
+
const targetModule = byFilePath.get(targetFile);
|
|
461
|
+
if (targetModule === undefined)
|
|
462
|
+
continue;
|
|
463
|
+
const localName = draft.source.localName;
|
|
464
|
+
if (myClosure.has(localName))
|
|
465
|
+
continue;
|
|
466
|
+
const importedName = draft.source.importedName;
|
|
467
|
+
const direct = findExportByName(targetModule.localDefs, importedName);
|
|
468
|
+
if (direct !== undefined) {
|
|
469
|
+
myClosure.set(localName, { def: direct, via: Object.freeze([targetFile]) });
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
const inherited = closures.get(targetFile)?.get(importedName);
|
|
473
|
+
if (inherited !== undefined) {
|
|
474
|
+
myClosure.set(localName, {
|
|
475
|
+
def: inherited.def,
|
|
476
|
+
via: Object.freeze([targetFile, ...inherited.via]),
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
// Else: target's closure is still empty (in-SCC, awaiting next
|
|
480
|
+
// iteration). Outer loop will revisit.
|
|
481
|
+
}
|
|
482
|
+
// Wildcard re-exports — fan out the target's own surface (localDefs
|
|
483
|
+
// + transitive closure). `myClosure.has(name)` checks below preserve
|
|
484
|
+
// the named-precedence and first-wins semantics from above.
|
|
485
|
+
for (const draft of drafts) {
|
|
486
|
+
if (draft.source.kind !== 'wildcard')
|
|
487
|
+
continue;
|
|
488
|
+
const targetFile = draft.targetFile;
|
|
489
|
+
if (targetFile === null)
|
|
490
|
+
continue;
|
|
491
|
+
const targetModule = byFilePath.get(targetFile);
|
|
492
|
+
if (targetModule === undefined)
|
|
493
|
+
continue;
|
|
494
|
+
for (const def of targetModule.localDefs) {
|
|
495
|
+
const name = deriveSimpleName(def);
|
|
496
|
+
if (name === null || myClosure.has(name))
|
|
497
|
+
continue;
|
|
498
|
+
myClosure.set(name, { def, via: Object.freeze([targetFile]) });
|
|
499
|
+
}
|
|
500
|
+
const targetClosure = closures.get(targetFile);
|
|
501
|
+
if (targetClosure !== undefined) {
|
|
502
|
+
for (const [name, entry] of targetClosure) {
|
|
503
|
+
if (myClosure.has(name))
|
|
504
|
+
continue;
|
|
505
|
+
myClosure.set(name, {
|
|
506
|
+
def: entry.def,
|
|
507
|
+
via: Object.freeze([targetFile, ...entry.via]),
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
return myClosure.size > before;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* O(1) lookup into a precomputed re-export closure. Replaces the legacy
|
|
516
|
+
* recursive `followReexportChain` traversal with a single map indexing.
|
|
517
|
+
*/
|
|
518
|
+
function lookupReexportedName(closures, filePath, name) {
|
|
519
|
+
const closure = closures.get(filePath);
|
|
520
|
+
if (closure === undefined)
|
|
521
|
+
return null;
|
|
522
|
+
const entry = closure.get(name);
|
|
523
|
+
if (entry === undefined)
|
|
524
|
+
return null;
|
|
525
|
+
return { def: entry.def, via: entry.via };
|
|
526
|
+
}
|
|
279
527
|
/**
|
|
280
528
|
* The "simple" (unqualified) name of a def, for import-name matching.
|
|
281
529
|
*
|
|
@@ -345,6 +593,17 @@ function expandWildcard(edge, byFilePath, hooks, workspace) {
|
|
|
345
593
|
// ─── Internal: bindings materialization (phase 5) ───────────────────────────
|
|
346
594
|
function materializeBindings(files, linkedByScope, hooks) {
|
|
347
595
|
const out = new Map();
|
|
596
|
+
// Build a `nodeId → SymbolDefinition` index once across all files
|
|
597
|
+
// (O(N_files × D_defs)) so the per-edge lookup below is O(1) instead
|
|
598
|
+
// of a full linear scan. At realistic TypeScript monorepo scale
|
|
599
|
+
// (~5k files × ~50 defs × ~100k linked import edges) this is the
|
|
600
|
+
// difference between ~25 s and a few ms inside finalize. The map
|
|
601
|
+
// is local to this pass — no cross-pass state leaks.
|
|
602
|
+
const defById = new Map();
|
|
603
|
+
for (const f of files) {
|
|
604
|
+
for (const d of f.localDefs)
|
|
605
|
+
defById.set(d.nodeId, d);
|
|
606
|
+
}
|
|
348
607
|
for (const file of files) {
|
|
349
608
|
const scopeBindings = new Map();
|
|
350
609
|
// Start with local defs as `origin: 'local'` bindings.
|
|
@@ -361,10 +620,7 @@ function materializeBindings(files, linkedByScope, hooks) {
|
|
|
361
620
|
for (const edge of imports) {
|
|
362
621
|
if (edge.targetDefId === undefined || edge.linkStatus === 'unresolved')
|
|
363
622
|
continue;
|
|
364
|
-
|
|
365
|
-
// `localDefs`; walk all files to find it. In practice we could index
|
|
366
|
-
// this, but at finalize-time N(files) is small per workspace pass.
|
|
367
|
-
const def = findDefById(files, edge.targetDefId);
|
|
623
|
+
const def = defById.get(edge.targetDefId);
|
|
368
624
|
if (def === undefined)
|
|
369
625
|
continue;
|
|
370
626
|
const origin = edge.kind === 'namespace'
|
|
@@ -391,15 +647,6 @@ function materializeBindings(files, linkedByScope, hooks) {
|
|
|
391
647
|
}
|
|
392
648
|
return out;
|
|
393
649
|
}
|
|
394
|
-
function findDefById(files, defId) {
|
|
395
|
-
for (const f of files) {
|
|
396
|
-
for (const d of f.localDefs) {
|
|
397
|
-
if (d.nodeId === defId)
|
|
398
|
-
return d;
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
return undefined;
|
|
402
|
-
}
|
|
403
650
|
// ─── Internal: Tarjan SCC ──────────────────────────────────────────────────
|
|
404
651
|
/**
|
|
405
652
|
* Iterative Tarjan SCC. Returns SCCs in **reverse-topological** order
|
|
@@ -426,6 +673,8 @@ function tarjanSccs(graph) {
|
|
|
426
673
|
});
|
|
427
674
|
while (iterStack.length > 0) {
|
|
428
675
|
const frame = iterStack[iterStack.length - 1];
|
|
676
|
+
if (frame === undefined)
|
|
677
|
+
break;
|
|
429
678
|
if (!frame.entered) {
|
|
430
679
|
frame.entered = true;
|
|
431
680
|
index.set(frame.node, idx);
|
|
@@ -442,6 +691,9 @@ function tarjanSccs(graph) {
|
|
|
442
691
|
let selfInCycle = false;
|
|
443
692
|
while (true) {
|
|
444
693
|
const w = stack.pop();
|
|
694
|
+
if (w === undefined) {
|
|
695
|
+
throw new Error(`Invariant violated: Tarjan stack exhausted at ${frame.node}`);
|
|
696
|
+
}
|
|
445
697
|
onStack.delete(w);
|
|
446
698
|
scc.push(w);
|
|
447
699
|
// A single-file self-loop counts as a cycle.
|
|
@@ -457,7 +709,9 @@ function tarjanSccs(graph) {
|
|
|
457
709
|
// Propagate lowlink to parent.
|
|
458
710
|
if (iterStack.length > 0) {
|
|
459
711
|
const parent = iterStack[iterStack.length - 1];
|
|
460
|
-
|
|
712
|
+
if (parent !== undefined) {
|
|
713
|
+
lowlink.set(parent.node, Math.min(requiredNumber(lowlink, parent.node, 'lowlink'), requiredNumber(lowlink, frame.node, 'lowlink')));
|
|
714
|
+
}
|
|
461
715
|
}
|
|
462
716
|
continue;
|
|
463
717
|
}
|
|
@@ -470,10 +724,17 @@ function tarjanSccs(graph) {
|
|
|
470
724
|
});
|
|
471
725
|
}
|
|
472
726
|
else if (onStack.has(child)) {
|
|
473
|
-
lowlink.set(frame.node, Math.min(lowlink
|
|
727
|
+
lowlink.set(frame.node, Math.min(requiredNumber(lowlink, frame.node, 'lowlink'), requiredNumber(index, child, 'index')));
|
|
474
728
|
}
|
|
475
729
|
}
|
|
476
730
|
}
|
|
477
731
|
return sccs;
|
|
478
732
|
}
|
|
733
|
+
function requiredNumber(map, key, label) {
|
|
734
|
+
const value = map.get(key);
|
|
735
|
+
if (value === undefined) {
|
|
736
|
+
throw new Error(`Invariant violated: missing Tarjan ${label} for ${key}`);
|
|
737
|
+
}
|
|
738
|
+
return value;
|
|
739
|
+
}
|
|
479
740
|
//# sourceMappingURL=finalize-algorithm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize-algorithm.js","sourceRoot":"","sources":["../../src/scope-resolution/finalize-algorithm.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"finalize-algorithm.js","sourceRoot":"","sources":["../../src/scope-resolution/finalize-algorithm.ts"],"names":[],"mappings":"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"}
|