@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.
- package/dist/ast/chunker.d.ts +30 -0
- package/dist/ast/chunker.d.ts.map +1 -0
- package/dist/ast/chunker.js +310 -0
- package/dist/ast/chunker.js.map +1 -0
- package/dist/ast/complexity/cognitive.d.ts +16 -0
- package/dist/ast/complexity/cognitive.d.ts.map +1 -0
- package/dist/ast/complexity/cognitive.js +137 -0
- package/dist/ast/complexity/cognitive.js.map +1 -0
- package/dist/ast/complexity/cyclomatic.d.ts +12 -0
- package/dist/ast/complexity/cyclomatic.d.ts.map +1 -0
- package/dist/ast/complexity/cyclomatic.js +54 -0
- package/dist/ast/complexity/cyclomatic.js.map +1 -0
- package/dist/ast/complexity/halstead.d.ts +56 -0
- package/dist/ast/complexity/halstead.d.ts.map +1 -0
- package/dist/ast/complexity/halstead.js +196 -0
- package/dist/ast/complexity/halstead.js.map +1 -0
- package/dist/ast/complexity/index.d.ts +13 -0
- package/dist/ast/complexity/index.d.ts.map +1 -0
- package/dist/ast/complexity/index.js +12 -0
- package/dist/ast/complexity/index.js.map +1 -0
- package/dist/ast/extractors/index.d.ts +35 -0
- package/dist/ast/extractors/index.d.ts.map +1 -0
- package/dist/ast/extractors/index.js +41 -0
- package/dist/ast/extractors/index.js.map +1 -0
- package/dist/ast/extractors/symbol-helpers.d.ts +20 -0
- package/dist/ast/extractors/symbol-helpers.d.ts.map +1 -0
- package/dist/ast/extractors/symbol-helpers.js +58 -0
- package/dist/ast/extractors/symbol-helpers.js.map +1 -0
- package/dist/ast/extractors/types.d.ts +108 -0
- package/dist/ast/extractors/types.d.ts.map +1 -0
- package/dist/ast/extractors/types.js +2 -0
- package/dist/ast/extractors/types.js.map +1 -0
- package/dist/ast/languages/javascript.d.ts +134 -0
- package/dist/ast/languages/javascript.d.ts.map +1 -0
- package/dist/ast/languages/javascript.js +787 -0
- package/dist/ast/languages/javascript.js.map +1 -0
- package/dist/ast/languages/php.d.ts +84 -0
- package/dist/ast/languages/php.d.ts.map +1 -0
- package/dist/ast/languages/php.js +452 -0
- package/dist/ast/languages/php.js.map +1 -0
- package/dist/ast/languages/python.d.ts +96 -0
- package/dist/ast/languages/python.d.ts.map +1 -0
- package/dist/ast/languages/python.js +448 -0
- package/dist/ast/languages/python.js.map +1 -0
- package/dist/ast/languages/registry.d.ts +30 -0
- package/dist/ast/languages/registry.d.ts.map +1 -0
- package/dist/ast/languages/registry.js +95 -0
- package/dist/ast/languages/registry.js.map +1 -0
- package/dist/ast/languages/rust.d.ts +113 -0
- package/dist/ast/languages/rust.d.ts.map +1 -0
- package/dist/ast/languages/rust.js +614 -0
- package/dist/ast/languages/rust.js.map +1 -0
- package/dist/ast/languages/types.d.ts +52 -0
- package/dist/ast/languages/types.d.ts.map +1 -0
- package/dist/ast/languages/types.js +2 -0
- package/dist/ast/languages/types.js.map +1 -0
- package/dist/ast/languages/typescript.d.ts +3 -0
- package/dist/ast/languages/typescript.d.ts.map +1 -0
- package/dist/ast/languages/typescript.js +134 -0
- package/dist/ast/languages/typescript.js.map +1 -0
- package/dist/ast/parser.d.ts +29 -0
- package/dist/ast/parser.d.ts.map +1 -0
- package/dist/ast/parser.js +67 -0
- package/dist/ast/parser.js.map +1 -0
- package/dist/ast/symbols.d.ts +74 -0
- package/dist/ast/symbols.d.ts.map +1 -0
- package/dist/ast/symbols.js +171 -0
- package/dist/ast/symbols.js.map +1 -0
- package/dist/ast/traversers/index.d.ts +19 -0
- package/dist/ast/traversers/index.d.ts.map +1 -0
- package/dist/ast/traversers/index.js +21 -0
- package/dist/ast/traversers/index.js.map +1 -0
- package/dist/ast/traversers/types.d.ts +98 -0
- package/dist/ast/traversers/types.d.ts.map +1 -0
- package/dist/ast/traversers/types.js +2 -0
- package/dist/ast/traversers/types.js.map +1 -0
- package/dist/ast/types.d.ts +54 -0
- package/dist/ast/types.d.ts.map +1 -0
- package/dist/ast/types.js +2 -0
- package/dist/ast/types.js.map +1 -0
- package/dist/chunk-only-index.d.ts +25 -0
- package/dist/chunk-only-index.d.ts.map +1 -0
- package/dist/chunk-only-index.js +107 -0
- package/dist/chunk-only-index.js.map +1 -0
- package/dist/chunker.d.ts +12 -0
- package/dist/chunker.d.ts.map +1 -0
- package/dist/chunker.js +98 -0
- package/dist/chunker.js.map +1 -0
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +11 -0
- package/dist/constants.js.map +1 -0
- package/dist/content-hash.d.ts +20 -0
- package/dist/content-hash.d.ts.map +1 -0
- package/dist/content-hash.js +91 -0
- package/dist/content-hash.js.map +1 -0
- package/dist/dependency-analyzer.d.ts +79 -0
- package/dist/dependency-analyzer.d.ts.map +1 -0
- package/dist/dependency-analyzer.js +408 -0
- package/dist/dependency-analyzer.js.map +1 -0
- package/dist/ecosystem-presets.d.ts +32 -0
- package/dist/ecosystem-presets.d.ts.map +1 -0
- package/dist/ecosystem-presets.js +325 -0
- package/dist/ecosystem-presets.js.map +1 -0
- package/dist/gitignore.d.ts +22 -0
- package/dist/gitignore.d.ts.map +1 -0
- package/dist/gitignore.js +128 -0
- package/dist/gitignore.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/insights/chunk-complexity.d.ts +89 -0
- package/dist/insights/chunk-complexity.d.ts.map +1 -0
- package/dist/insights/chunk-complexity.js +332 -0
- package/dist/insights/chunk-complexity.js.map +1 -0
- package/dist/insights/types.d.ts +73 -0
- package/dist/insights/types.d.ts.map +1 -0
- package/dist/insights/types.js +9 -0
- package/dist/insights/types.js.map +1 -0
- package/dist/json-template-chunker.d.ts +12 -0
- package/dist/json-template-chunker.d.ts.map +1 -0
- package/dist/json-template-chunker.js +87 -0
- package/dist/json-template-chunker.js.map +1 -0
- package/dist/liquid-chunker.d.ts +16 -0
- package/dist/liquid-chunker.d.ts.map +1 -0
- package/dist/liquid-chunker.js +274 -0
- package/dist/liquid-chunker.js.map +1 -0
- package/dist/scanner.d.ts +16 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +95 -0
- package/dist/scanner.js.map +1 -0
- package/dist/symbol-extractor.d.ts +18 -0
- package/dist/symbol-extractor.d.ts.map +1 -0
- package/dist/symbol-extractor.js +343 -0
- package/dist/symbol-extractor.js.map +1 -0
- package/dist/test-associations.d.ts +16 -0
- package/dist/test-associations.d.ts.map +1 -0
- package/dist/test-associations.js +43 -0
- package/dist/test-associations.js.map +1 -0
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/path-matching.d.ts +71 -0
- package/dist/utils/path-matching.d.ts.map +1 -0
- package/dist/utils/path-matching.js +258 -0
- package/dist/utils/path-matching.js.map +1 -0
- package/dist/utils/repo-id.d.ts +6 -0
- package/dist/utils/repo-id.d.ts.map +1 -0
- package/dist/utils/repo-id.js +12 -0
- package/dist/utils/repo-id.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ast/languages/types.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|