@liendev/parser 0.39.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 (153) hide show
  1. package/dist/ast/chunker.d.ts +30 -0
  2. package/dist/ast/chunker.d.ts.map +1 -0
  3. package/dist/ast/chunker.js +310 -0
  4. package/dist/ast/chunker.js.map +1 -0
  5. package/dist/ast/complexity/cognitive.d.ts +16 -0
  6. package/dist/ast/complexity/cognitive.d.ts.map +1 -0
  7. package/dist/ast/complexity/cognitive.js +137 -0
  8. package/dist/ast/complexity/cognitive.js.map +1 -0
  9. package/dist/ast/complexity/cyclomatic.d.ts +12 -0
  10. package/dist/ast/complexity/cyclomatic.d.ts.map +1 -0
  11. package/dist/ast/complexity/cyclomatic.js +54 -0
  12. package/dist/ast/complexity/cyclomatic.js.map +1 -0
  13. package/dist/ast/complexity/halstead.d.ts +56 -0
  14. package/dist/ast/complexity/halstead.d.ts.map +1 -0
  15. package/dist/ast/complexity/halstead.js +196 -0
  16. package/dist/ast/complexity/halstead.js.map +1 -0
  17. package/dist/ast/complexity/index.d.ts +13 -0
  18. package/dist/ast/complexity/index.d.ts.map +1 -0
  19. package/dist/ast/complexity/index.js +12 -0
  20. package/dist/ast/complexity/index.js.map +1 -0
  21. package/dist/ast/extractors/index.d.ts +35 -0
  22. package/dist/ast/extractors/index.d.ts.map +1 -0
  23. package/dist/ast/extractors/index.js +41 -0
  24. package/dist/ast/extractors/index.js.map +1 -0
  25. package/dist/ast/extractors/symbol-helpers.d.ts +20 -0
  26. package/dist/ast/extractors/symbol-helpers.d.ts.map +1 -0
  27. package/dist/ast/extractors/symbol-helpers.js +58 -0
  28. package/dist/ast/extractors/symbol-helpers.js.map +1 -0
  29. package/dist/ast/extractors/types.d.ts +108 -0
  30. package/dist/ast/extractors/types.d.ts.map +1 -0
  31. package/dist/ast/extractors/types.js +2 -0
  32. package/dist/ast/extractors/types.js.map +1 -0
  33. package/dist/ast/languages/javascript.d.ts +134 -0
  34. package/dist/ast/languages/javascript.d.ts.map +1 -0
  35. package/dist/ast/languages/javascript.js +787 -0
  36. package/dist/ast/languages/javascript.js.map +1 -0
  37. package/dist/ast/languages/php.d.ts +84 -0
  38. package/dist/ast/languages/php.d.ts.map +1 -0
  39. package/dist/ast/languages/php.js +452 -0
  40. package/dist/ast/languages/php.js.map +1 -0
  41. package/dist/ast/languages/python.d.ts +96 -0
  42. package/dist/ast/languages/python.d.ts.map +1 -0
  43. package/dist/ast/languages/python.js +448 -0
  44. package/dist/ast/languages/python.js.map +1 -0
  45. package/dist/ast/languages/registry.d.ts +30 -0
  46. package/dist/ast/languages/registry.d.ts.map +1 -0
  47. package/dist/ast/languages/registry.js +95 -0
  48. package/dist/ast/languages/registry.js.map +1 -0
  49. package/dist/ast/languages/rust.d.ts +113 -0
  50. package/dist/ast/languages/rust.d.ts.map +1 -0
  51. package/dist/ast/languages/rust.js +614 -0
  52. package/dist/ast/languages/rust.js.map +1 -0
  53. package/dist/ast/languages/types.d.ts +52 -0
  54. package/dist/ast/languages/types.d.ts.map +1 -0
  55. package/dist/ast/languages/types.js +2 -0
  56. package/dist/ast/languages/types.js.map +1 -0
  57. package/dist/ast/languages/typescript.d.ts +3 -0
  58. package/dist/ast/languages/typescript.d.ts.map +1 -0
  59. package/dist/ast/languages/typescript.js +134 -0
  60. package/dist/ast/languages/typescript.js.map +1 -0
  61. package/dist/ast/parser.d.ts +29 -0
  62. package/dist/ast/parser.d.ts.map +1 -0
  63. package/dist/ast/parser.js +67 -0
  64. package/dist/ast/parser.js.map +1 -0
  65. package/dist/ast/symbols.d.ts +74 -0
  66. package/dist/ast/symbols.d.ts.map +1 -0
  67. package/dist/ast/symbols.js +171 -0
  68. package/dist/ast/symbols.js.map +1 -0
  69. package/dist/ast/traversers/index.d.ts +19 -0
  70. package/dist/ast/traversers/index.d.ts.map +1 -0
  71. package/dist/ast/traversers/index.js +21 -0
  72. package/dist/ast/traversers/index.js.map +1 -0
  73. package/dist/ast/traversers/types.d.ts +98 -0
  74. package/dist/ast/traversers/types.d.ts.map +1 -0
  75. package/dist/ast/traversers/types.js +2 -0
  76. package/dist/ast/traversers/types.js.map +1 -0
  77. package/dist/ast/types.d.ts +54 -0
  78. package/dist/ast/types.d.ts.map +1 -0
  79. package/dist/ast/types.js +2 -0
  80. package/dist/ast/types.js.map +1 -0
  81. package/dist/chunk-only-index.d.ts +25 -0
  82. package/dist/chunk-only-index.d.ts.map +1 -0
  83. package/dist/chunk-only-index.js +107 -0
  84. package/dist/chunk-only-index.js.map +1 -0
  85. package/dist/chunker.d.ts +12 -0
  86. package/dist/chunker.d.ts.map +1 -0
  87. package/dist/chunker.js +98 -0
  88. package/dist/chunker.js.map +1 -0
  89. package/dist/constants.d.ts +8 -0
  90. package/dist/constants.d.ts.map +1 -0
  91. package/dist/constants.js +11 -0
  92. package/dist/constants.js.map +1 -0
  93. package/dist/content-hash.d.ts +20 -0
  94. package/dist/content-hash.d.ts.map +1 -0
  95. package/dist/content-hash.js +91 -0
  96. package/dist/content-hash.js.map +1 -0
  97. package/dist/dependency-analyzer.d.ts +79 -0
  98. package/dist/dependency-analyzer.d.ts.map +1 -0
  99. package/dist/dependency-analyzer.js +408 -0
  100. package/dist/dependency-analyzer.js.map +1 -0
  101. package/dist/ecosystem-presets.d.ts +32 -0
  102. package/dist/ecosystem-presets.d.ts.map +1 -0
  103. package/dist/ecosystem-presets.js +325 -0
  104. package/dist/ecosystem-presets.js.map +1 -0
  105. package/dist/gitignore.d.ts +22 -0
  106. package/dist/gitignore.d.ts.map +1 -0
  107. package/dist/gitignore.js +128 -0
  108. package/dist/gitignore.js.map +1 -0
  109. package/dist/index.d.ts +32 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +68 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/insights/chunk-complexity.d.ts +89 -0
  114. package/dist/insights/chunk-complexity.d.ts.map +1 -0
  115. package/dist/insights/chunk-complexity.js +332 -0
  116. package/dist/insights/chunk-complexity.js.map +1 -0
  117. package/dist/insights/types.d.ts +73 -0
  118. package/dist/insights/types.d.ts.map +1 -0
  119. package/dist/insights/types.js +9 -0
  120. package/dist/insights/types.js.map +1 -0
  121. package/dist/json-template-chunker.d.ts +12 -0
  122. package/dist/json-template-chunker.d.ts.map +1 -0
  123. package/dist/json-template-chunker.js +87 -0
  124. package/dist/json-template-chunker.js.map +1 -0
  125. package/dist/liquid-chunker.d.ts +16 -0
  126. package/dist/liquid-chunker.d.ts.map +1 -0
  127. package/dist/liquid-chunker.js +274 -0
  128. package/dist/liquid-chunker.js.map +1 -0
  129. package/dist/scanner.d.ts +16 -0
  130. package/dist/scanner.d.ts.map +1 -0
  131. package/dist/scanner.js +95 -0
  132. package/dist/scanner.js.map +1 -0
  133. package/dist/symbol-extractor.d.ts +18 -0
  134. package/dist/symbol-extractor.d.ts.map +1 -0
  135. package/dist/symbol-extractor.js +343 -0
  136. package/dist/symbol-extractor.js.map +1 -0
  137. package/dist/test-associations.d.ts +16 -0
  138. package/dist/test-associations.d.ts.map +1 -0
  139. package/dist/test-associations.js +43 -0
  140. package/dist/test-associations.js.map +1 -0
  141. package/dist/types.d.ts +75 -0
  142. package/dist/types.d.ts.map +1 -0
  143. package/dist/types.js +2 -0
  144. package/dist/types.js.map +1 -0
  145. package/dist/utils/path-matching.d.ts +71 -0
  146. package/dist/utils/path-matching.d.ts.map +1 -0
  147. package/dist/utils/path-matching.js +258 -0
  148. package/dist/utils/path-matching.js.map +1 -0
  149. package/dist/utils/repo-id.d.ts +6 -0
  150. package/dist/utils/repo-id.d.ts.map +1 -0
  151. package/dist/utils/repo-id.js +12 -0
  152. package/dist/utils/repo-id.js.map +1 -0
  153. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ast/languages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;GAGG;AAEH,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,EAAE,EAAE,iBAAiB,CAAC;IAEtB,yDAAyD;IACzD,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,6CAA6C;IAC7C,OAAO,EAAE,kBAAkB,CAAC;IAE5B,+CAA+C;IAC/C,SAAS,EAAE,iBAAiB,CAAC;IAE7B,kDAAkD;IAClD,eAAe,EAAE,uBAAuB,CAAC;IAEzC,yFAAyF;IACzF,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAE1C,yFAAyF;IACzF,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAE1C,sCAAsC;IACtC,UAAU,EAAE;QACV,gEAAgE;QAChE,cAAc,EAAE,MAAM,EAAE,CAAC;QAEzB,2EAA2E;QAC3E,YAAY,EAAE,MAAM,EAAE,CAAC;QAEvB,+DAA+D;QAC/D,eAAe,EAAE,MAAM,EAAE,CAAC;QAE1B,sEAAsE;QACtE,WAAW,EAAE,MAAM,EAAE,CAAC;QAEtB,4DAA4D;QAC5D,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAE7B,4DAA4D;QAC5D,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;KAC/B,CAAC;IAEF,sCAAsC;IACtC,OAAO,EAAE;QACP,wDAAwD;QACxD,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ast/languages/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { LanguageDefinition } from './types.js';
2
+ export declare const typescriptDefinition: LanguageDefinition;
3
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/ast/languages/typescript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQrD,eAAO,MAAM,oBAAoB,EAAE,kBAoIlC,CAAC"}
@@ -0,0 +1,134 @@
1
+ import TypeScript from 'tree-sitter-typescript';
2
+ import { TypeScriptTraverser, TypeScriptExportExtractor, TypeScriptImportExtractor, TypeScriptSymbolExtractor, } from './javascript.js';
3
+ export const typescriptDefinition = {
4
+ id: 'typescript',
5
+ extensions: ['ts', 'tsx'],
6
+ grammar: TypeScript.typescript,
7
+ traverser: new TypeScriptTraverser(),
8
+ exportExtractor: new TypeScriptExportExtractor(),
9
+ importExtractor: new TypeScriptImportExtractor(),
10
+ symbolExtractor: new TypeScriptSymbolExtractor(),
11
+ complexity: {
12
+ decisionPoints: [
13
+ 'if_statement',
14
+ 'while_statement',
15
+ 'for_statement',
16
+ 'switch_case',
17
+ 'catch_clause',
18
+ 'ternary_expression',
19
+ 'binary_expression',
20
+ 'do_statement',
21
+ 'for_in_statement',
22
+ 'for_of_statement',
23
+ ],
24
+ nestingTypes: [
25
+ 'if_statement',
26
+ 'for_statement',
27
+ 'while_statement',
28
+ 'switch_statement',
29
+ 'catch_clause',
30
+ 'do_statement',
31
+ 'for_in_statement',
32
+ 'for_of_statement',
33
+ ],
34
+ nonNestingTypes: ['else_clause', 'ternary_expression'],
35
+ lambdaTypes: ['arrow_function', 'function_expression'],
36
+ operatorSymbols: new Set([
37
+ '+',
38
+ '-',
39
+ '*',
40
+ '/',
41
+ '%',
42
+ '**',
43
+ '==',
44
+ '===',
45
+ '!=',
46
+ '!==',
47
+ '<',
48
+ '>',
49
+ '<=',
50
+ '>=',
51
+ '&&',
52
+ '||',
53
+ '!',
54
+ '??',
55
+ '=',
56
+ '+=',
57
+ '-=',
58
+ '*=',
59
+ '/=',
60
+ '%=',
61
+ '**=',
62
+ '&&=',
63
+ '||=',
64
+ '??=',
65
+ '&',
66
+ '|',
67
+ '^',
68
+ '~',
69
+ '<<',
70
+ '>>',
71
+ '>>>',
72
+ '&=',
73
+ '|=',
74
+ '^=',
75
+ '<<=',
76
+ '>>=',
77
+ '>>>=',
78
+ '?',
79
+ ':',
80
+ '.',
81
+ '?.',
82
+ '++',
83
+ '--',
84
+ '...',
85
+ '=>',
86
+ '(',
87
+ ')',
88
+ '[',
89
+ ']',
90
+ '{',
91
+ '}',
92
+ ]),
93
+ operatorKeywords: new Set([
94
+ 'if',
95
+ 'else',
96
+ 'for',
97
+ 'while',
98
+ 'do',
99
+ 'switch',
100
+ 'case',
101
+ 'default',
102
+ 'return',
103
+ 'throw',
104
+ 'try',
105
+ 'catch',
106
+ 'finally',
107
+ 'new',
108
+ 'delete',
109
+ 'typeof',
110
+ 'instanceof',
111
+ 'in',
112
+ 'of',
113
+ 'await',
114
+ 'yield',
115
+ 'break',
116
+ 'continue',
117
+ 'const',
118
+ 'let',
119
+ 'var',
120
+ 'function',
121
+ 'class',
122
+ 'extends',
123
+ 'implements',
124
+ 'import',
125
+ 'export',
126
+ 'from',
127
+ 'as',
128
+ ]),
129
+ },
130
+ symbols: {
131
+ callExpressionTypes: ['call_expression', 'new_expression'],
132
+ },
133
+ };
134
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/ast/languages/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,oBAAoB,GAAuB;IACtD,EAAE,EAAE,YAAY;IAChB,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;IACzB,OAAO,EAAE,UAAU,CAAC,UAAU;IAC9B,SAAS,EAAE,IAAI,mBAAmB,EAAE;IACpC,eAAe,EAAE,IAAI,yBAAyB,EAAE;IAChD,eAAe,EAAE,IAAI,yBAAyB,EAAE;IAChD,eAAe,EAAE,IAAI,yBAAyB,EAAE;IAEhD,UAAU,EAAE;QACV,cAAc,EAAE;YACd,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,aAAa;YACb,cAAc;YACd,oBAAoB;YACpB,mBAAmB;YACnB,cAAc;YACd,kBAAkB;YAClB,kBAAkB;SACnB;QACD,YAAY,EAAE;YACZ,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,cAAc;YACd,kBAAkB;YAClB,kBAAkB;SACnB;QACD,eAAe,EAAE,CAAC,aAAa,EAAE,oBAAoB,CAAC;QACtD,WAAW,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;QACtD,eAAe,EAAE,IAAI,GAAG,CAAC;YACvB,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,KAAK;YACL,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,GAAG;YACH,IAAI;YACJ,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,KAAK;YACL,MAAM;YACN,GAAG;YACH,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACJ,CAAC;QACF,gBAAgB,EAAE,IAAI,GAAG,CAAC;YACxB,IAAI;YACJ,MAAM;YACN,KAAK;YACL,OAAO;YACP,IAAI;YACJ,QAAQ;YACR,MAAM;YACN,SAAS;YACT,QAAQ;YACR,OAAO;YACP,KAAK;YACL,OAAO;YACP,SAAS;YACT,KAAK;YACL,QAAQ;YACR,QAAQ;YACR,YAAY;YACZ,IAAI;YACJ,IAAI;YACJ,OAAO;YACP,OAAO;YACP,OAAO;YACP,UAAU;YACV,OAAO;YACP,KAAK;YACL,KAAK;YACL,UAAU;YACV,OAAO;YACP,SAAS;YACT,YAAY;YACZ,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,IAAI;SACL,CAAC;KACH;IAED,OAAO,EAAE;QACP,mBAAmB,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;KAC3D;CACF,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { detectLanguage as registryDetectLanguage } from './languages/registry.js';
2
+ import type { SupportedLanguage } from './languages/registry.js';
3
+ import type { ASTParseResult } from './types.js';
4
+ /**
5
+ * Detect language from file extension.
6
+ * Re-exported from the language registry for backwards compatibility.
7
+ */
8
+ export declare const detectLanguage: typeof registryDetectLanguage;
9
+ /**
10
+ * Check if a file is supported for AST parsing
11
+ */
12
+ export declare function isASTSupported(filePath: string): boolean;
13
+ /**
14
+ * Parse source code into an AST using Tree-sitter
15
+ *
16
+ * **Known Limitation:** Tree-sitter may throw "Invalid argument" errors on very large files
17
+ * (1000+ lines). This is a limitation of Tree-sitter's internal buffer handling. When this
18
+ * occurs, callers should fall back to line-based chunking (handled automatically by chunker.ts).
19
+ *
20
+ * @param content - Source code to parse
21
+ * @param language - Programming language
22
+ * @returns Parse result with tree or error
23
+ */
24
+ export declare function parseAST(content: string, language: SupportedLanguage): ASTParseResult;
25
+ /**
26
+ * Clear parser cache (useful for testing)
27
+ */
28
+ export declare function clearParserCache(): void;
29
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/ast/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,cAAc,IAAI,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAsBjD;;;GAGG;AACH,eAAO,MAAM,cAAc,+BAAyB,CAAC;AAErD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,cAAc,CAoBrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -0,0 +1,67 @@
1
+ import Parser from 'tree-sitter';
2
+ import { getLanguage, detectLanguage as registryDetectLanguage } from './languages/registry.js';
3
+ /**
4
+ * Cache for parser instances to avoid recreating them
5
+ */
6
+ const parserCache = new Map();
7
+ /**
8
+ * Get or create a cached parser instance for a language
9
+ */
10
+ function getParser(language) {
11
+ if (!parserCache.has(language)) {
12
+ const parser = new Parser();
13
+ const grammar = getLanguage(language).grammar;
14
+ parser.setLanguage(grammar);
15
+ parserCache.set(language, parser);
16
+ }
17
+ return parserCache.get(language);
18
+ }
19
+ /**
20
+ * Detect language from file extension.
21
+ * Re-exported from the language registry for backwards compatibility.
22
+ */
23
+ export const detectLanguage = registryDetectLanguage;
24
+ /**
25
+ * Check if a file is supported for AST parsing
26
+ */
27
+ export function isASTSupported(filePath) {
28
+ return detectLanguage(filePath) !== null;
29
+ }
30
+ /**
31
+ * Parse source code into an AST using Tree-sitter
32
+ *
33
+ * **Known Limitation:** Tree-sitter may throw "Invalid argument" errors on very large files
34
+ * (1000+ lines). This is a limitation of Tree-sitter's internal buffer handling. When this
35
+ * occurs, callers should fall back to line-based chunking (handled automatically by chunker.ts).
36
+ *
37
+ * @param content - Source code to parse
38
+ * @param language - Programming language
39
+ * @returns Parse result with tree or error
40
+ */
41
+ export function parseAST(content, language) {
42
+ try {
43
+ const parser = getParser(language);
44
+ const tree = parser.parse(content);
45
+ // Check for parse errors (hasError is a property, not a method)
46
+ if (tree.rootNode.hasError) {
47
+ return {
48
+ tree,
49
+ error: 'Parse completed with errors',
50
+ };
51
+ }
52
+ return { tree };
53
+ }
54
+ catch (error) {
55
+ return {
56
+ tree: null,
57
+ error: error instanceof Error ? error.message : 'Unknown parse error',
58
+ };
59
+ }
60
+ }
61
+ /**
62
+ * Clear parser cache (useful for testing)
63
+ */
64
+ export function clearParserCache() {
65
+ parserCache.clear();
66
+ }
67
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/ast/parser.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAIhG;;GAEG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEzD;;GAEG;AACH,SAAS,SAAS,CAAC,QAA2B;IAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAE9C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,QAA2B;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,gEAAgE;QAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO;gBACL,IAAI;gBACJ,KAAK,EAAE,6BAA6B;aACrC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;SACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type Parser from 'tree-sitter';
2
+ import type { SymbolInfo, SupportedLanguage } from './types.js';
3
+ /**
4
+ * Extract symbol information from an AST node using language-specific extractors.
5
+ *
6
+ * @param node - AST node to extract info from
7
+ * @param content - Source code content
8
+ * @param parentClass - Parent class name if this is a method
9
+ * @param language - Programming language
10
+ * @returns Symbol information or null
11
+ */
12
+ export declare function extractSymbolInfo(node: Parser.SyntaxNode, content: string, parentClass?: string, language?: string): SymbolInfo | null;
13
+ /**
14
+ * Extract import statements from a file.
15
+ *
16
+ * When a language is provided, uses the language-specific import extractor.
17
+ * Falls back to legacy behavior for backwards compatibility.
18
+ */
19
+ export declare function extractImports(rootNode: Parser.SyntaxNode, language?: SupportedLanguage): string[];
20
+ /**
21
+ * Extract imported symbols mapped to their source paths.
22
+ *
23
+ * Returns a map like: { './validate': ['validateEmail', 'validatePhone'] }
24
+ *
25
+ * When a language is provided, uses the language-specific import extractor.
26
+ * Falls back to legacy behavior for backwards compatibility.
27
+ */
28
+ export declare function extractImportedSymbols(rootNode: Parser.SyntaxNode, language?: SupportedLanguage): Record<string, string[]>;
29
+ /**
30
+ * Extract exported symbols from a file.
31
+ *
32
+ * Returns array of exported symbol names like: ['validateEmail', 'validatePhone', 'default']
33
+ *
34
+ * Language-specific behavior:
35
+ *
36
+ * **JavaScript/TypeScript:**
37
+ * - Named exports: export { foo, bar }
38
+ * - Declaration exports: export function foo() {}, export const bar = ...
39
+ * - Default exports: export default ...
40
+ * - Re-exports: export { foo } from './module'
41
+ *
42
+ * **PHP:**
43
+ * - All top-level classes, traits, interfaces, and functions are considered exported
44
+ * - PHP doesn't have explicit export syntax - all public declarations are accessible
45
+ *
46
+ * **Python:**
47
+ * - All module-level classes and functions are considered exported
48
+ * - Python doesn't have explicit export syntax - module-level names are importable
49
+ *
50
+ * Limitations:
51
+ * - Only static, top-level declarations are processed (direct children of the root node).
52
+ * - Dynamic or conditional exports/declarations are not detected.
53
+ *
54
+ * @param rootNode - AST root node
55
+ * @param language - Programming language (defaults to 'javascript' for backwards compatibility)
56
+ * @returns Array of exported symbol names
57
+ */
58
+ export declare function extractExports(rootNode: Parser.SyntaxNode, language?: SupportedLanguage): string[];
59
+ /**
60
+ * Extract call sites within a function/method body.
61
+ *
62
+ * Returns array of function calls made within the node.
63
+ *
64
+ * Supported languages:
65
+ * - TypeScript/JavaScript: call_expression (foo(), obj.method()), new_expression (new Foo())
66
+ * - PHP: function_call_expression, member_call_expression, scoped_call_expression
67
+ * - Python: call (similar to JS call_expression)
68
+ * - Rust: call_expression (foo(), obj.method()), macro_invocation (println!())
69
+ */
70
+ export declare function extractCallSites(node: Parser.SyntaxNode, language?: SupportedLanguage): Array<{
71
+ symbol: string;
72
+ line: number;
73
+ }>;
74
+ //# sourceMappingURL=symbols.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,171 @@
1
+ import { getExtractor, getImportExtractor, getSymbolExtractor } from './extractors/index.js';
2
+ import { getLanguage } from './languages/registry.js';
3
+ /**
4
+ * Extract symbol information from an AST node using language-specific extractors.
5
+ *
6
+ * @param node - AST node to extract info from
7
+ * @param content - Source code content
8
+ * @param parentClass - Parent class name if this is a method
9
+ * @param language - Programming language
10
+ * @returns Symbol information or null
11
+ */
12
+ export function extractSymbolInfo(node, content, parentClass, language) {
13
+ if (language) {
14
+ const extractor = getSymbolExtractor(language);
15
+ if (extractor) {
16
+ return extractor.extractSymbol(node, content, parentClass);
17
+ }
18
+ }
19
+ return null;
20
+ }
21
+ /**
22
+ * Extract import paths using the language-specific extractor.
23
+ */
24
+ function extractImportPaths(rootNode, importExtractor) {
25
+ if (!importExtractor)
26
+ return [];
27
+ const imports = [];
28
+ 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))
32
+ continue;
33
+ const result = importExtractor.extractImportPath(child);
34
+ if (result)
35
+ imports.push(result);
36
+ }
37
+ return imports;
38
+ }
39
+ /**
40
+ * Extract import statements from a file.
41
+ *
42
+ * When a language is provided, uses the language-specific import extractor.
43
+ * Falls back to legacy behavior for backwards compatibility.
44
+ */
45
+ export function extractImports(rootNode, language) {
46
+ if (!language)
47
+ return [];
48
+ return extractImportPaths(rootNode, getImportExtractor(language));
49
+ }
50
+ /**
51
+ * Add symbols to the import map, merging with existing entries.
52
+ */
53
+ function addSymbolsToMap(map, importPath, symbols) {
54
+ const existing = map[importPath];
55
+ if (existing) {
56
+ existing.push(...symbols);
57
+ }
58
+ else {
59
+ map[importPath] = symbols;
60
+ }
61
+ }
62
+ /**
63
+ * Extract symbols using the language-specific extractor.
64
+ */
65
+ function extractSymbolsWithExtractor(rootNode, importExtractor) {
66
+ if (!importExtractor)
67
+ return {};
68
+ const importedSymbols = {};
69
+ 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))
73
+ continue;
74
+ const result = importExtractor.processImportSymbols(node);
75
+ if (result) {
76
+ addSymbolsToMap(importedSymbols, result.importPath, result.symbols);
77
+ }
78
+ }
79
+ return importedSymbols;
80
+ }
81
+ /**
82
+ * Extract imported symbols mapped to their source paths.
83
+ *
84
+ * Returns a map like: { './validate': ['validateEmail', 'validatePhone'] }
85
+ *
86
+ * When a language is provided, uses the language-specific import extractor.
87
+ * Falls back to legacy behavior for backwards compatibility.
88
+ */
89
+ export function extractImportedSymbols(rootNode, language) {
90
+ if (!language)
91
+ return {};
92
+ return extractSymbolsWithExtractor(rootNode, getImportExtractor(language));
93
+ }
94
+ /**
95
+ * Extract exported symbols from a file.
96
+ *
97
+ * Returns array of exported symbol names like: ['validateEmail', 'validatePhone', 'default']
98
+ *
99
+ * Language-specific behavior:
100
+ *
101
+ * **JavaScript/TypeScript:**
102
+ * - Named exports: export { foo, bar }
103
+ * - Declaration exports: export function foo() {}, export const bar = ...
104
+ * - Default exports: export default ...
105
+ * - Re-exports: export { foo } from './module'
106
+ *
107
+ * **PHP:**
108
+ * - All top-level classes, traits, interfaces, and functions are considered exported
109
+ * - PHP doesn't have explicit export syntax - all public declarations are accessible
110
+ *
111
+ * **Python:**
112
+ * - All module-level classes and functions are considered exported
113
+ * - Python doesn't have explicit export syntax - module-level names are importable
114
+ *
115
+ * Limitations:
116
+ * - Only static, top-level declarations are processed (direct children of the root node).
117
+ * - Dynamic or conditional exports/declarations are not detected.
118
+ *
119
+ * @param rootNode - AST root node
120
+ * @param language - Programming language (defaults to 'javascript' for backwards compatibility)
121
+ * @returns Array of exported symbol names
122
+ */
123
+ export function extractExports(rootNode, language) {
124
+ // Default to JavaScript if no language specified (for backwards compatibility)
125
+ const lang = language ?? 'javascript';
126
+ const extractor = getExtractor(lang);
127
+ return extractor.extractExports(rootNode);
128
+ }
129
+ /**
130
+ * Extract call sites within a function/method body.
131
+ *
132
+ * Returns array of function calls made within the node.
133
+ *
134
+ * Supported languages:
135
+ * - TypeScript/JavaScript: call_expression (foo(), obj.method()), new_expression (new Foo())
136
+ * - PHP: function_call_expression, member_call_expression, scoped_call_expression
137
+ * - Python: call (similar to JS call_expression)
138
+ * - Rust: call_expression (foo(), obj.method()), macro_invocation (println!())
139
+ */
140
+ export function extractCallSites(node, language) {
141
+ if (!language)
142
+ return [];
143
+ const langDef = getLanguage(language);
144
+ const extractor = langDef.symbolExtractor;
145
+ if (!extractor)
146
+ return [];
147
+ const callExprTypes = new Set(langDef.symbols.callExpressionTypes);
148
+ const callSites = [];
149
+ const seen = new Set();
150
+ traverseForCallSites(node, callSites, seen, callExprTypes, extractor);
151
+ return callSites;
152
+ }
153
+ /**
154
+ * Recursively traverse AST to find call expressions.
155
+ */
156
+ function traverseForCallSites(node, callSites, seen, callExprTypes, extractor) {
157
+ if (callExprTypes.has(node.type)) {
158
+ const callSite = extractor.extractCallSite(node);
159
+ if (callSite && !seen.has(callSite.key)) {
160
+ seen.add(callSite.key);
161
+ callSites.push({ symbol: callSite.symbol, line: callSite.line });
162
+ }
163
+ }
164
+ // 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);
169
+ }
170
+ }
171
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/ast/symbols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { SupportedLanguage } from '../types.js';
2
+ import type { LanguageTraverser } from './types.js';
3
+ export type { LanguageTraverser, DeclarationFunctionInfo } from './types.js';
4
+ /**
5
+ * Get the traverser for a specific language.
6
+ * Delegates to the language registry.
7
+ *
8
+ * @param language - Programming language
9
+ * @returns Language-specific traverser
10
+ */
11
+ export declare function getTraverser(language: SupportedLanguage): LanguageTraverser;
12
+ /**
13
+ * Check if a language has a traverser implementation
14
+ *
15
+ * @param language - Programming language
16
+ * @returns True if traverser exists
17
+ */
18
+ export declare function hasTraverser(language: string): boolean;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ast/traversers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD"}
@@ -0,0 +1,21 @@
1
+ import { getLanguage, languageExists } from '../languages/registry.js';
2
+ /**
3
+ * Get the traverser for a specific language.
4
+ * Delegates to the language registry.
5
+ *
6
+ * @param language - Programming language
7
+ * @returns Language-specific traverser
8
+ */
9
+ export function getTraverser(language) {
10
+ return getLanguage(language).traverser;
11
+ }
12
+ /**
13
+ * Check if a language has a traverser implementation
14
+ *
15
+ * @param language - Programming language
16
+ * @returns True if traverser exists
17
+ */
18
+ export function hasTraverser(language) {
19
+ return languageExists(language);
20
+ }
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ast/traversers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAIvE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,QAA2B;IACtD,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC"}