@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.
Files changed (61) hide show
  1. package/dist/ast/chunker.d.ts.map +1 -1
  2. package/dist/ast/chunker.js +30 -8
  3. package/dist/ast/chunker.js.map +1 -1
  4. package/dist/ast/complexity/cognitive.d.ts.map +1 -1
  5. package/dist/ast/complexity/cognitive.js +6 -11
  6. package/dist/ast/complexity/cognitive.js.map +1 -1
  7. package/dist/ast/complexity/cyclomatic.d.ts.map +1 -1
  8. package/dist/ast/complexity/cyclomatic.js +2 -4
  9. package/dist/ast/complexity/cyclomatic.js.map +1 -1
  10. package/dist/ast/extractors/symbol-helpers.d.ts.map +1 -1
  11. package/dist/ast/extractors/symbol-helpers.js +2 -3
  12. package/dist/ast/extractors/symbol-helpers.js.map +1 -1
  13. package/dist/ast/languages/csharp.d.ts +106 -0
  14. package/dist/ast/languages/csharp.d.ts.map +1 -0
  15. package/dist/ast/languages/csharp.js +588 -0
  16. package/dist/ast/languages/csharp.js.map +1 -0
  17. package/dist/ast/languages/go.d.ts.map +1 -1
  18. package/dist/ast/languages/go.js +17 -40
  19. package/dist/ast/languages/go.js.map +1 -1
  20. package/dist/ast/languages/java.d.ts.map +1 -1
  21. package/dist/ast/languages/java.js +20 -50
  22. package/dist/ast/languages/java.js.map +1 -1
  23. package/dist/ast/languages/javascript.d.ts.map +1 -1
  24. package/dist/ast/languages/javascript.js +53 -88
  25. package/dist/ast/languages/javascript.js.map +1 -1
  26. package/dist/ast/languages/php.d.ts.map +1 -1
  27. package/dist/ast/languages/php.js +25 -54
  28. package/dist/ast/languages/php.js.map +1 -1
  29. package/dist/ast/languages/python.d.ts.map +1 -1
  30. package/dist/ast/languages/python.js +18 -36
  31. package/dist/ast/languages/python.js.map +1 -1
  32. package/dist/ast/languages/registry.d.ts +1 -1
  33. package/dist/ast/languages/registry.d.ts.map +1 -1
  34. package/dist/ast/languages/registry.js +3 -0
  35. package/dist/ast/languages/registry.js.map +1 -1
  36. package/dist/ast/languages/rust.d.ts.map +1 -1
  37. package/dist/ast/languages/rust.js +32 -75
  38. package/dist/ast/languages/rust.js.map +1 -1
  39. package/dist/ast/symbols.d.ts +12 -5
  40. package/dist/ast/symbols.d.ts.map +1 -1
  41. package/dist/ast/symbols.js +72 -22
  42. package/dist/ast/symbols.js.map +1 -1
  43. package/dist/dependency-analyzer.d.ts +12 -2
  44. package/dist/dependency-analyzer.d.ts.map +1 -1
  45. package/dist/dependency-analyzer.js +59 -17
  46. package/dist/dependency-analyzer.js.map +1 -1
  47. package/dist/index.d.ts +2 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +4 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/risk/blast-radius-risk.d.ts +41 -0
  52. package/dist/risk/blast-radius-risk.d.ts.map +1 -0
  53. package/dist/risk/blast-radius-risk.js +54 -0
  54. package/dist/risk/blast-radius-risk.js.map +1 -0
  55. package/dist/types.d.ts +1 -0
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/utils/path-matching.d.ts +17 -0
  58. package/dist/utils/path-matching.d.ts.map +1 -1
  59. package/dist/utils/path-matching.js +24 -0
  60. package/dist/utils/path-matching.js.map +1 -1
  61. package/package.json +2 -1
@@ -95,14 +95,9 @@ export class RustExportExtractor {
95
95
  exports.push(name);
96
96
  }
97
97
  };
98
- for (let i = 0; i < rootNode.namedChildCount; i++) {
99
- const child = rootNode.namedChild(i);
100
- if (!child)
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
- for (let i = 0; i < node.childCount; i++) {
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
- for (let i = 0; i < node.namedChildCount; i++) {
148
- const child = node.namedChild(i);
149
- if (child?.type === 'use_list') {
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
- for (let j = node.namedChildCount - 1; j >= 0; j--) {
201
- const child = node.namedChild(j);
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
- const symbols = [];
230
- for (let i = 0; i < useList.namedChildCount; i++) {
231
- const item = useList.namedChild(i);
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
- let useList = null;
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
- let pathChild = null;
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
- for (let i = 0; i < node.namedChildCount; i++) {
355
- const child = node.namedChild(i);
356
- if (child?.type === 'scoped_identifier') {
357
- const modulePath = convertRustModulePath(child.text);
358
- if (!modulePath)
359
- return null;
360
- return { importPath: modulePath, symbols: ['*'] };
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
- for (let i = 0; i < node.namedChildCount; i++) {
380
- const child = node.namedChild(i);
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
- for (let i = 0; i < node.namedChildCount; i++) {
389
- const child = node.namedChild(i);
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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"}
@@ -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: { './validate': ['validateEmail', 'validatePhone'] }
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
- * When a language is provided, uses the language-specific import extractor.
26
- * Falls back to legacy behavior for backwards compatibility.
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;AAKhE;;;;;;;;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;AAyBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAC3B,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,MAAM,EAAE,CAGV;AA2CD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAC3B,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,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,CAAA;CAAE,CAAC,CAazC"}
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"}
@@ -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 (let i = 0; i < rootNode.namedChildCount; i++) {
30
- const child = rootNode.namedChild(i);
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 (let i = 0; i < rootNode.namedChildCount; i++) {
71
- const node = rootNode.namedChild(i);
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
- addSymbolsToMap(importedSymbols, result.importPath, result.symbols);
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: { './validate': ['validateEmail', 'validatePhone'] }
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
- * When a language is provided, uses the language-specific import extractor.
87
- * Falls back to legacy behavior for backwards compatibility.
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({ symbol: callSite.symbol, line: callSite.line });
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 (let i = 0; i < node.namedChildCount; i++) {
166
- const child = node.namedChild(i);
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
@@ -1 +1 @@
1
- {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/ast/symbols.ts"],"names":[],"mappings":"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"}
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) is a re-exporter from a source path.
62
- * A re-exporter has both imports from the source and exports.
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;AASD;;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;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC5C,OAAO,CAaT;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"}
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
- * Check if a file (given its chunks) is a re-exporter from a source path.
272
- * A re-exporter has both imports from the source and exports.
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
- export function fileIsReExporter(chunks, sourcePath, normalizePathCached) {
275
- let importsFromSource = false;
276
- let hasExports = false;
273
+ function collectImportedSymbolsFromSource(chunks, sourcePath, normalizePathCached) {
274
+ const symbols = new Set();
277
275
  for (const chunk of chunks) {
278
- if (!importsFromSource && chunkImportsFrom(chunk, sourcePath, normalizePathCached)) {
279
- importsFromSource = true;
280
- }
281
- if (!hasExports && chunkHasExports(chunk)) {
282
- hasExports = true;
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
- if (importsFromSource && hasExports)
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;