@liendev/parser 0.42.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ast/chunker.d.ts.map +1 -1
- package/dist/ast/chunker.js +30 -8
- package/dist/ast/chunker.js.map +1 -1
- package/dist/ast/complexity/cognitive.d.ts.map +1 -1
- package/dist/ast/complexity/cognitive.js +6 -11
- package/dist/ast/complexity/cognitive.js.map +1 -1
- package/dist/ast/complexity/cyclomatic.d.ts.map +1 -1
- package/dist/ast/complexity/cyclomatic.js +2 -4
- package/dist/ast/complexity/cyclomatic.js.map +1 -1
- package/dist/ast/extractors/symbol-helpers.d.ts.map +1 -1
- package/dist/ast/extractors/symbol-helpers.js +2 -3
- package/dist/ast/extractors/symbol-helpers.js.map +1 -1
- package/dist/ast/languages/csharp.d.ts +106 -0
- package/dist/ast/languages/csharp.d.ts.map +1 -0
- package/dist/ast/languages/csharp.js +588 -0
- package/dist/ast/languages/csharp.js.map +1 -0
- package/dist/ast/languages/go.d.ts.map +1 -1
- package/dist/ast/languages/go.js +17 -40
- package/dist/ast/languages/go.js.map +1 -1
- package/dist/ast/languages/java.d.ts.map +1 -1
- package/dist/ast/languages/java.js +20 -50
- package/dist/ast/languages/java.js.map +1 -1
- package/dist/ast/languages/javascript.d.ts.map +1 -1
- package/dist/ast/languages/javascript.js +53 -88
- package/dist/ast/languages/javascript.js.map +1 -1
- package/dist/ast/languages/php.d.ts.map +1 -1
- package/dist/ast/languages/php.js +25 -54
- package/dist/ast/languages/php.js.map +1 -1
- package/dist/ast/languages/python.d.ts.map +1 -1
- package/dist/ast/languages/python.js +18 -36
- package/dist/ast/languages/python.js.map +1 -1
- package/dist/ast/languages/registry.d.ts +1 -1
- package/dist/ast/languages/registry.d.ts.map +1 -1
- package/dist/ast/languages/registry.js +3 -0
- package/dist/ast/languages/registry.js.map +1 -1
- package/dist/ast/languages/rust.d.ts.map +1 -1
- package/dist/ast/languages/rust.js +32 -75
- package/dist/ast/languages/rust.js.map +1 -1
- package/dist/ast/symbols.d.ts +12 -5
- package/dist/ast/symbols.d.ts.map +1 -1
- package/dist/ast/symbols.js +72 -22
- package/dist/ast/symbols.js.map +1 -1
- package/dist/dependency-analyzer.d.ts +12 -2
- package/dist/dependency-analyzer.d.ts.map +1 -1
- package/dist/dependency-analyzer.js +59 -17
- package/dist/dependency-analyzer.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/risk/blast-radius-risk.d.ts +41 -0
- package/dist/risk/blast-radius-risk.d.ts.map +1 -0
- package/dist/risk/blast-radius-risk.js +54 -0
- package/dist/risk/blast-radius-risk.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/path-matching.d.ts +17 -0
- package/dist/utils/path-matching.d.ts.map +1 -1
- package/dist/utils/path-matching.js +24 -0
- package/dist/utils/path-matching.js.map +1 -1
- package/package.json +2 -1
|
@@ -95,14 +95,9 @@ export class RustExportExtractor {
|
|
|
95
95
|
exports.push(name);
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
continue;
|
|
102
|
-
if (!this.hasVisibilityModifier(child))
|
|
103
|
-
continue;
|
|
104
|
-
this.extractExportName(child, addExport);
|
|
105
|
-
}
|
|
98
|
+
rootNode.namedChildren
|
|
99
|
+
.filter(child => this.hasVisibilityModifier(child))
|
|
100
|
+
.forEach(child => this.extractExportName(child, addExport));
|
|
106
101
|
return exports;
|
|
107
102
|
}
|
|
108
103
|
extractExportName(node, addExport) {
|
|
@@ -121,12 +116,7 @@ export class RustExportExtractor {
|
|
|
121
116
|
}
|
|
122
117
|
}
|
|
123
118
|
hasVisibilityModifier(node) {
|
|
124
|
-
|
|
125
|
-
const child = node.child(i);
|
|
126
|
-
if (child?.type === 'visibility_modifier')
|
|
127
|
-
return true;
|
|
128
|
-
}
|
|
129
|
-
return false;
|
|
119
|
+
return node.children.some(child => child.type === 'visibility_modifier');
|
|
130
120
|
}
|
|
131
121
|
/**
|
|
132
122
|
* Extract exported names from a use declaration argument.
|
|
@@ -144,12 +134,9 @@ export class RustExportExtractor {
|
|
|
144
134
|
}
|
|
145
135
|
if (node.type === 'scoped_use_list') {
|
|
146
136
|
// Find the use_list child and extract symbols
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return extractUseListSymbols(child);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
137
|
+
const useList = node.namedChildren.find(child => child.type === 'use_list');
|
|
138
|
+
if (useList)
|
|
139
|
+
return extractUseListSymbols(useList);
|
|
153
140
|
}
|
|
154
141
|
return [];
|
|
155
142
|
}
|
|
@@ -197,12 +184,8 @@ function extractUseAsClauseSymbol(node) {
|
|
|
197
184
|
if (alias)
|
|
198
185
|
return alias.text;
|
|
199
186
|
// Fallback: take the last identifier
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
if (child?.type === 'identifier')
|
|
203
|
-
return child.text;
|
|
204
|
-
}
|
|
205
|
-
return null;
|
|
187
|
+
const identifiers = node.namedChildren.filter(child => child.type === 'identifier');
|
|
188
|
+
return identifiers.length > 0 ? identifiers[identifiers.length - 1].text : null;
|
|
206
189
|
}
|
|
207
190
|
/**
|
|
208
191
|
* Extract the symbol name from a single use_list item.
|
|
@@ -226,16 +209,9 @@ function extractUseListItemSymbol(item) {
|
|
|
226
209
|
* Handles: identifier, scoped_identifier, use_as_clause, use_wildcard
|
|
227
210
|
*/
|
|
228
211
|
function extractUseListSymbols(useList) {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (!item)
|
|
233
|
-
continue;
|
|
234
|
-
const symbol = extractUseListItemSymbol(item);
|
|
235
|
-
if (symbol)
|
|
236
|
-
symbols.push(symbol);
|
|
237
|
-
}
|
|
238
|
-
return symbols;
|
|
212
|
+
return useList.namedChildren
|
|
213
|
+
.map(item => extractUseListItemSymbol(item))
|
|
214
|
+
.filter((symbol) => symbol !== null);
|
|
239
215
|
}
|
|
240
216
|
/**
|
|
241
217
|
* Rust import extractor
|
|
@@ -307,14 +283,7 @@ export class RustImportExtractor {
|
|
|
307
283
|
if (!modulePath)
|
|
308
284
|
return null;
|
|
309
285
|
// Find the use_list child
|
|
310
|
-
|
|
311
|
-
for (let i = 0; i < node.namedChildCount; i++) {
|
|
312
|
-
const child = node.namedChild(i);
|
|
313
|
-
if (child?.type === 'use_list') {
|
|
314
|
-
useList = child;
|
|
315
|
-
break;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
286
|
+
const useList = node.namedChildren.find(child => child.type === 'use_list');
|
|
318
287
|
if (!useList)
|
|
319
288
|
return null;
|
|
320
289
|
const symbols = extractUseListSymbols(useList);
|
|
@@ -324,14 +293,7 @@ export class RustImportExtractor {
|
|
|
324
293
|
// `use crate::auth::Service as Auth;`
|
|
325
294
|
// The first child is the path (scoped_identifier), alias field has the alias
|
|
326
295
|
const aliasNode = node.childForFieldName('alias');
|
|
327
|
-
|
|
328
|
-
for (let i = 0; i < node.namedChildCount; i++) {
|
|
329
|
-
const child = node.namedChild(i);
|
|
330
|
-
if (child?.type === 'scoped_identifier') {
|
|
331
|
-
pathChild = child;
|
|
332
|
-
break;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
296
|
+
const pathChild = node.namedChildren.find(child => child.type === 'scoped_identifier');
|
|
335
297
|
if (!pathChild)
|
|
336
298
|
return null;
|
|
337
299
|
const scopePathNode = pathChild.childForFieldName('path');
|
|
@@ -351,16 +313,13 @@ export class RustImportExtractor {
|
|
|
351
313
|
// scoped_identifier (crate::models)
|
|
352
314
|
// *
|
|
353
315
|
// Find the scoped_identifier child to get the path
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
return null;
|
|
316
|
+
const scopedId = node.namedChildren.find(child => child.type === 'scoped_identifier');
|
|
317
|
+
if (!scopedId)
|
|
318
|
+
return null;
|
|
319
|
+
const modulePath = convertRustModulePath(scopedId.text);
|
|
320
|
+
if (!modulePath)
|
|
321
|
+
return null;
|
|
322
|
+
return { importPath: modulePath, symbols: ['*'] };
|
|
364
323
|
}
|
|
365
324
|
/**
|
|
366
325
|
* Resolve the full path of a use argument for the imports list.
|
|
@@ -376,22 +335,13 @@ export class RustImportExtractor {
|
|
|
376
335
|
}
|
|
377
336
|
if (node.type === 'use_as_clause') {
|
|
378
337
|
// Find the scoped_identifier inside
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
if (child?.type === 'scoped_identifier') {
|
|
382
|
-
return child.text;
|
|
383
|
-
}
|
|
384
|
-
}
|
|
338
|
+
const scopedId = node.namedChildren.find(child => child.type === 'scoped_identifier');
|
|
339
|
+
return scopedId?.text ?? null;
|
|
385
340
|
}
|
|
386
341
|
if (node.type === 'use_wildcard') {
|
|
387
342
|
// use_wildcard contains a scoped_identifier child, not a 'path' field
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
if (child?.type === 'scoped_identifier') {
|
|
391
|
-
return child.text;
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
return null;
|
|
343
|
+
const scopedId = node.namedChildren.find(child => child.type === 'scoped_identifier');
|
|
344
|
+
return scopedId?.text ?? null;
|
|
395
345
|
}
|
|
396
346
|
return null;
|
|
397
347
|
}
|
|
@@ -447,6 +397,13 @@ export class RustSymbolExtractor {
|
|
|
447
397
|
return { symbol: fieldNode.text, line, key: `${fieldNode.text}:${line}` };
|
|
448
398
|
}
|
|
449
399
|
}
|
|
400
|
+
// scoped_identifier: module::function(), Type::method()
|
|
401
|
+
if (funcNode.type === 'scoped_identifier') {
|
|
402
|
+
const nameNode = funcNode.childForFieldName('name');
|
|
403
|
+
if (nameNode) {
|
|
404
|
+
return { symbol: nameNode.text, line, key: `${nameNode.text}:${line}` };
|
|
405
|
+
}
|
|
406
|
+
}
|
|
450
407
|
return null;
|
|
451
408
|
}
|
|
452
409
|
// macro_invocation: println!(), vec![]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/ast/languages/rust.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/ast/languages/rust.ts"],"names":[],"mappings":"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"}
|
package/dist/ast/symbols.d.ts
CHANGED
|
@@ -15,17 +15,23 @@ export declare function extractSymbolInfo(node: Parser.SyntaxNode, content: stri
|
|
|
15
15
|
*
|
|
16
16
|
* When a language is provided, uses the language-specific import extractor.
|
|
17
17
|
* Falls back to legacy behavior for backwards compatibility.
|
|
18
|
+
*
|
|
19
|
+
* @param filepath - Optional path of the file being chunked. Enables resolution
|
|
20
|
+
* of `./` / `../` specifiers so they store workspace-relative paths instead
|
|
21
|
+
* of bare basenames.
|
|
18
22
|
*/
|
|
19
|
-
export declare function extractImports(rootNode: Parser.SyntaxNode, language?: SupportedLanguage): string[];
|
|
23
|
+
export declare function extractImports(rootNode: Parser.SyntaxNode, language?: SupportedLanguage, filepath?: string): string[];
|
|
20
24
|
/**
|
|
21
25
|
* Extract imported symbols mapped to their source paths.
|
|
22
26
|
*
|
|
23
|
-
* Returns a map like: { '
|
|
27
|
+
* Returns a map like: { 'packages/parser/src/validate': ['validateEmail'] }
|
|
28
|
+
* when `filepath` is provided, or { './validate': ['validateEmail'] } for
|
|
29
|
+
* legacy callers that don't pass it.
|
|
24
30
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
31
|
+
* @param filepath - Optional path of the file being chunked. Enables resolution
|
|
32
|
+
* of `./` / `../` specifiers into workspace-relative keys.
|
|
27
33
|
*/
|
|
28
|
-
export declare function extractImportedSymbols(rootNode: Parser.SyntaxNode, language?: SupportedLanguage): Record<string, string[]>;
|
|
34
|
+
export declare function extractImportedSymbols(rootNode: Parser.SyntaxNode, language?: SupportedLanguage, filepath?: string): Record<string, string[]>;
|
|
29
35
|
/**
|
|
30
36
|
* Extract exported symbols from a file.
|
|
31
37
|
*
|
|
@@ -70,5 +76,6 @@ export declare function extractExports(rootNode: Parser.SyntaxNode, language?: S
|
|
|
70
76
|
export declare function extractCallSites(node: Parser.SyntaxNode, language?: SupportedLanguage): Array<{
|
|
71
77
|
symbol: string;
|
|
72
78
|
line: number;
|
|
79
|
+
isResultCaptured?: boolean;
|
|
73
80
|
}>;
|
|
74
81
|
//# sourceMappingURL=symbols.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../src/ast/symbols.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../src/ast/symbols.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOhE;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB,UAAU,GAAG,IAAI,CAQnB;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAC3B,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAGV;AA+CD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAC3B,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAG1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAC3B,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,MAAM,EAAE,CAKV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAarE"}
|
package/dist/ast/symbols.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getExtractor, getImportExtractor, getSymbolExtractor } from './extractors/index.js';
|
|
2
2
|
import { getLanguage } from './languages/registry.js';
|
|
3
|
+
import { resolveRelativeImport } from '../utils/path-matching.js';
|
|
3
4
|
/**
|
|
4
5
|
* Extract symbol information from an AST node using language-specific extractors.
|
|
5
6
|
*
|
|
@@ -20,19 +21,23 @@ export function extractSymbolInfo(node, content, parentClass, language) {
|
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
22
23
|
* Extract import paths using the language-specific extractor.
|
|
24
|
+
*
|
|
25
|
+
* When `filepath` is provided, relative specifiers (`./foo`, `../bar`) are
|
|
26
|
+
* resolved against the importer's directory so that cross-package files with
|
|
27
|
+
* the same basename don't collide downstream. Non-relative specifiers pass
|
|
28
|
+
* through unchanged.
|
|
23
29
|
*/
|
|
24
|
-
function extractImportPaths(rootNode, importExtractor) {
|
|
30
|
+
function extractImportPaths(rootNode, importExtractor, filepath) {
|
|
25
31
|
if (!importExtractor)
|
|
26
32
|
return [];
|
|
27
33
|
const imports = [];
|
|
28
34
|
const nodeTypeSet = new Set(importExtractor.importNodeTypes);
|
|
29
|
-
for (
|
|
30
|
-
|
|
31
|
-
if (!child || !nodeTypeSet.has(child.type))
|
|
35
|
+
for (const child of rootNode.namedChildren) {
|
|
36
|
+
if (!nodeTypeSet.has(child.type))
|
|
32
37
|
continue;
|
|
33
38
|
const result = importExtractor.extractImportPath(child);
|
|
34
39
|
if (result)
|
|
35
|
-
imports.push(result);
|
|
40
|
+
imports.push(filepath ? resolveRelativeImport(filepath, result) : result);
|
|
36
41
|
}
|
|
37
42
|
return imports;
|
|
38
43
|
}
|
|
@@ -41,11 +46,15 @@ function extractImportPaths(rootNode, importExtractor) {
|
|
|
41
46
|
*
|
|
42
47
|
* When a language is provided, uses the language-specific import extractor.
|
|
43
48
|
* Falls back to legacy behavior for backwards compatibility.
|
|
49
|
+
*
|
|
50
|
+
* @param filepath - Optional path of the file being chunked. Enables resolution
|
|
51
|
+
* of `./` / `../` specifiers so they store workspace-relative paths instead
|
|
52
|
+
* of bare basenames.
|
|
44
53
|
*/
|
|
45
|
-
export function extractImports(rootNode, language) {
|
|
54
|
+
export function extractImports(rootNode, language, filepath) {
|
|
46
55
|
if (!language)
|
|
47
56
|
return [];
|
|
48
|
-
return extractImportPaths(rootNode, getImportExtractor(language));
|
|
57
|
+
return extractImportPaths(rootNode, getImportExtractor(language), filepath);
|
|
49
58
|
}
|
|
50
59
|
/**
|
|
51
60
|
* Add symbols to the import map, merging with existing entries.
|
|
@@ -61,19 +70,22 @@ function addSymbolsToMap(map, importPath, symbols) {
|
|
|
61
70
|
}
|
|
62
71
|
/**
|
|
63
72
|
* Extract symbols using the language-specific extractor.
|
|
73
|
+
*
|
|
74
|
+
* When `filepath` is provided, relative import paths in the returned map's
|
|
75
|
+
* keys are resolved to workspace-relative paths via `resolveRelativeImport`.
|
|
64
76
|
*/
|
|
65
|
-
function extractSymbolsWithExtractor(rootNode, importExtractor) {
|
|
77
|
+
function extractSymbolsWithExtractor(rootNode, importExtractor, filepath) {
|
|
66
78
|
if (!importExtractor)
|
|
67
79
|
return {};
|
|
68
80
|
const importedSymbols = {};
|
|
69
81
|
const nodeTypeSet = new Set(importExtractor.importNodeTypes);
|
|
70
|
-
for (
|
|
71
|
-
|
|
72
|
-
if (!node || !nodeTypeSet.has(node.type))
|
|
82
|
+
for (const node of rootNode.namedChildren) {
|
|
83
|
+
if (!nodeTypeSet.has(node.type))
|
|
73
84
|
continue;
|
|
74
85
|
const result = importExtractor.processImportSymbols(node);
|
|
75
86
|
if (result) {
|
|
76
|
-
|
|
87
|
+
const key = filepath ? resolveRelativeImport(filepath, result.importPath) : result.importPath;
|
|
88
|
+
addSymbolsToMap(importedSymbols, key, result.symbols);
|
|
77
89
|
}
|
|
78
90
|
}
|
|
79
91
|
return importedSymbols;
|
|
@@ -81,15 +93,17 @@ function extractSymbolsWithExtractor(rootNode, importExtractor) {
|
|
|
81
93
|
/**
|
|
82
94
|
* Extract imported symbols mapped to their source paths.
|
|
83
95
|
*
|
|
84
|
-
* Returns a map like: { '
|
|
96
|
+
* Returns a map like: { 'packages/parser/src/validate': ['validateEmail'] }
|
|
97
|
+
* when `filepath` is provided, or { './validate': ['validateEmail'] } for
|
|
98
|
+
* legacy callers that don't pass it.
|
|
85
99
|
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
100
|
+
* @param filepath - Optional path of the file being chunked. Enables resolution
|
|
101
|
+
* of `./` / `../` specifiers into workspace-relative keys.
|
|
88
102
|
*/
|
|
89
|
-
export function extractImportedSymbols(rootNode, language) {
|
|
103
|
+
export function extractImportedSymbols(rootNode, language, filepath) {
|
|
90
104
|
if (!language)
|
|
91
105
|
return {};
|
|
92
|
-
return extractSymbolsWithExtractor(rootNode, getImportExtractor(language));
|
|
106
|
+
return extractSymbolsWithExtractor(rootNode, getImportExtractor(language), filepath);
|
|
93
107
|
}
|
|
94
108
|
/**
|
|
95
109
|
* Extract exported symbols from a file.
|
|
@@ -150,6 +164,40 @@ export function extractCallSites(node, language) {
|
|
|
150
164
|
traverseForCallSites(node, callSites, seen, callExprTypes, extractor);
|
|
151
165
|
return callSites;
|
|
152
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Determine whether a call expression's return value is captured (assigned/used).
|
|
169
|
+
*
|
|
170
|
+
* In tree-sitter, a standalone call like `doSomething();` parses as:
|
|
171
|
+
* expression_statement > call_expression
|
|
172
|
+
*
|
|
173
|
+
* If the call is assigned (`const x = doSomething()`), it appears inside
|
|
174
|
+
* `variable_declarator` or similar — NOT `expression_statement`.
|
|
175
|
+
*
|
|
176
|
+
* Edge case: `await doSomething();` parses as:
|
|
177
|
+
* expression_statement > await_expression > call_expression (TS/JS)
|
|
178
|
+
* expression_statement > await > call (Python)
|
|
179
|
+
* We walk up through transparent wrappers to handle this.
|
|
180
|
+
*/
|
|
181
|
+
const TRANSPARENT_WRAPPER_TYPES = new Set([
|
|
182
|
+
'await_expression', // TypeScript/JavaScript
|
|
183
|
+
'await', // Python
|
|
184
|
+
'parenthesized_expression', // All languages
|
|
185
|
+
]);
|
|
186
|
+
function isCallResultCaptured(callNode) {
|
|
187
|
+
let current = callNode;
|
|
188
|
+
while (current.parent) {
|
|
189
|
+
const parentType = current.parent.type;
|
|
190
|
+
if (parentType === 'expression_statement')
|
|
191
|
+
return false;
|
|
192
|
+
// Walk up through transparent wrappers that don't consume the value
|
|
193
|
+
if (TRANSPARENT_WRAPPER_TYPES.has(parentType)) {
|
|
194
|
+
current = current.parent;
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
153
201
|
/**
|
|
154
202
|
* Recursively traverse AST to find call expressions.
|
|
155
203
|
*/
|
|
@@ -158,14 +206,16 @@ function traverseForCallSites(node, callSites, seen, callExprTypes, extractor) {
|
|
|
158
206
|
const callSite = extractor.extractCallSite(node);
|
|
159
207
|
if (callSite && !seen.has(callSite.key)) {
|
|
160
208
|
seen.add(callSite.key);
|
|
161
|
-
callSites.push({
|
|
209
|
+
callSites.push({
|
|
210
|
+
symbol: callSite.symbol,
|
|
211
|
+
line: callSite.line,
|
|
212
|
+
isResultCaptured: isCallResultCaptured(node),
|
|
213
|
+
});
|
|
162
214
|
}
|
|
163
215
|
}
|
|
164
216
|
// Recurse into named children to skip punctuation and other non-semantic nodes
|
|
165
|
-
for (
|
|
166
|
-
|
|
167
|
-
if (child)
|
|
168
|
-
traverseForCallSites(child, callSites, seen, callExprTypes, extractor);
|
|
217
|
+
for (const child of node.namedChildren) {
|
|
218
|
+
traverseForCallSites(child, callSites, seen, callExprTypes, extractor);
|
|
169
219
|
}
|
|
170
220
|
}
|
|
171
221
|
//# sourceMappingURL=symbols.js.map
|
package/dist/ast/symbols.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/ast/symbols.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAuB,EACvB,OAAe,EACf,WAAoB,EACpB,QAAiB;IAEjB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAA6B,CAAC,CAAC;QACpE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/ast/symbols.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,8 +58,18 @@ export declare function chunkImportsFrom(chunk: CodeChunk, sourcePath: string, n
|
|
|
58
58
|
*/
|
|
59
59
|
export declare function groupChunksByNormalizedPath(chunks: CodeChunk[], normalizePathCached: (path: string) => string): Map<string, CodeChunk[]>;
|
|
60
60
|
/**
|
|
61
|
-
* Check if a file (given its chunks)
|
|
62
|
-
*
|
|
61
|
+
* Check if a file (given its chunks) genuinely re-exports symbols from a
|
|
62
|
+
* source path.
|
|
63
|
+
*
|
|
64
|
+
* Requires a non-empty intersection between (a) symbols the file imports from
|
|
65
|
+
* the source and (b) symbols the file exports. A plain named import (`import
|
|
66
|
+
* { x } from './a'`) paired with an unrelated own export (`export function y`)
|
|
67
|
+
* is no longer a re-exporter — closing the #526 false positive.
|
|
68
|
+
*
|
|
69
|
+
* Wildcard markers (`'*'` from Rust `use foo::*`, `'* as x'` from JS
|
|
70
|
+
* namespace imports) still trigger re-export detection: both mean "we pulled
|
|
71
|
+
* in everything the source exports," so intersection against the file's own
|
|
72
|
+
* export list is the right signal.
|
|
63
73
|
*/
|
|
64
74
|
export declare function fileIsReExporter(chunks: CodeChunk[], sourcePath: string, normalizePathCached: (path: string) => string): boolean;
|
|
65
75
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-analyzer.d.ts","sourceRoot":"","sources":["../src/dependency-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;CAI7B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;CAQxB,CAAC;AAEX,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE;QAClB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,uBAAuB,EAAE,MAAM,CAAC;QAChC,wBAAwB,EAAE,KAAK,CAAC;YAC9B,QAAQ,EAAE,MAAM,CAAC;YACjB,aAAa,EAAE,MAAM,CAAC;YACtB,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;QACH,mBAAmB,EAAE,SAAS,CAAC;KAChC,CAAC;CACH;AAoPD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC5C,OAAO,CAcT;
|
|
1
|
+
{"version":3,"file":"dependency-analyzer.d.ts","sourceRoot":"","sources":["../src/dependency-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;CAI7B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;CAQxB,CAAC;AAEX,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE;QAClB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,uBAAuB,EAAE,MAAM,CAAC;QAChC,wBAAwB,EAAE,KAAK,CAAC;YAC9B,QAAQ,EAAE,MAAM,CAAC;YACjB,aAAa,EAAE,MAAM,CAAC;YACtB,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;QACH,mBAAmB,EAAE,SAAS,CAAC;KAChC,CAAC;CACH;AAoPD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC5C,OAAO,CAcT;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,EAAE,EACnB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC5C,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAY1B;AAwCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC5C,OAAO,CAkBT;AAsDD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,MAAM,EAAE,EACzB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EACrC,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAC7C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EACzC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,SAAS,EAAE,CA+Bb;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,SAAS,EAAE,EACtB,aAAa,EAAE,MAAM,GACpB,wBAAwB,CAqE1B"}
|
|
@@ -245,12 +245,6 @@ export function chunkImportsFrom(chunk, sourcePath, normalizePathCached) {
|
|
|
245
245
|
}
|
|
246
246
|
return false;
|
|
247
247
|
}
|
|
248
|
-
/**
|
|
249
|
-
* Check if a chunk has any exports.
|
|
250
|
-
*/
|
|
251
|
-
function chunkHasExports(chunk) {
|
|
252
|
-
return chunk.metadata.exports != null && chunk.metadata.exports.length > 0;
|
|
253
|
-
}
|
|
254
248
|
/**
|
|
255
249
|
* Group chunks by their normalized file path.
|
|
256
250
|
*/
|
|
@@ -268,20 +262,68 @@ export function groupChunksByNormalizedPath(chunks, normalizePathCached) {
|
|
|
268
262
|
return grouped;
|
|
269
263
|
}
|
|
270
264
|
/**
|
|
271
|
-
*
|
|
272
|
-
*
|
|
265
|
+
* Collect the symbols a file imports from a given source path, sourced
|
|
266
|
+
* exclusively from `importedSymbols`. Mirrors the CLI-side approach in
|
|
267
|
+
* `packages/cli/src/mcp/handlers/dependency-analyzer.ts`.
|
|
268
|
+
*
|
|
269
|
+
* Deliberately ignores the raw `imports` array — a raw-only match means the
|
|
270
|
+
* file imports for side effect or does `export * from`, neither of which
|
|
271
|
+
* should qualify it as a re-exporter on its own (#526).
|
|
273
272
|
*/
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
let hasExports = false;
|
|
273
|
+
function collectImportedSymbolsFromSource(chunks, sourcePath, normalizePathCached) {
|
|
274
|
+
const symbols = new Set();
|
|
277
275
|
for (const chunk of chunks) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
276
|
+
const importedSymbols = chunk.metadata.importedSymbols;
|
|
277
|
+
if (!importedSymbols || typeof importedSymbols !== 'object')
|
|
278
|
+
continue;
|
|
279
|
+
for (const [importPath, syms] of Object.entries(importedSymbols)) {
|
|
280
|
+
if (matchesFile(normalizePathCached(importPath), sourcePath)) {
|
|
281
|
+
for (const sym of syms)
|
|
282
|
+
symbols.add(sym);
|
|
283
|
+
}
|
|
283
284
|
}
|
|
284
|
-
|
|
285
|
+
}
|
|
286
|
+
return symbols;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Collect all symbols the file exports across its chunks.
|
|
290
|
+
*/
|
|
291
|
+
function collectExportsFromChunks(chunks) {
|
|
292
|
+
const allExports = new Set();
|
|
293
|
+
for (const chunk of chunks) {
|
|
294
|
+
for (const exp of chunk.metadata.exports || [])
|
|
295
|
+
allExports.add(exp);
|
|
296
|
+
}
|
|
297
|
+
return allExports;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Check if a file (given its chunks) genuinely re-exports symbols from a
|
|
301
|
+
* source path.
|
|
302
|
+
*
|
|
303
|
+
* Requires a non-empty intersection between (a) symbols the file imports from
|
|
304
|
+
* the source and (b) symbols the file exports. A plain named import (`import
|
|
305
|
+
* { x } from './a'`) paired with an unrelated own export (`export function y`)
|
|
306
|
+
* is no longer a re-exporter — closing the #526 false positive.
|
|
307
|
+
*
|
|
308
|
+
* Wildcard markers (`'*'` from Rust `use foo::*`, `'* as x'` from JS
|
|
309
|
+
* namespace imports) still trigger re-export detection: both mean "we pulled
|
|
310
|
+
* in everything the source exports," so intersection against the file's own
|
|
311
|
+
* export list is the right signal.
|
|
312
|
+
*/
|
|
313
|
+
export function fileIsReExporter(chunks, sourcePath, normalizePathCached) {
|
|
314
|
+
const importsFromSource = collectImportedSymbolsFromSource(chunks, sourcePath, normalizePathCached);
|
|
315
|
+
if (importsFromSource.size === 0)
|
|
316
|
+
return false;
|
|
317
|
+
const allExports = collectExportsFromChunks(chunks);
|
|
318
|
+
if (allExports.size === 0)
|
|
319
|
+
return false;
|
|
320
|
+
// Wildcards mean "imported everything"; any own export then counts.
|
|
321
|
+
if (importsFromSource.has('*'))
|
|
322
|
+
return true;
|
|
323
|
+
for (const sym of importsFromSource) {
|
|
324
|
+
if (sym.startsWith('* as '))
|
|
325
|
+
return true;
|
|
326
|
+
if (allExports.has(sym))
|
|
285
327
|
return true;
|
|
286
328
|
}
|
|
287
329
|
return false;
|