skannr 0.1.5 → 0.2.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/languages/PythonAdapter.d.ts.map +1 -1
  2. package/dist/languages/PythonAdapter.js +27 -4
  3. package/dist/languages/PythonAdapter.js.map +1 -1
  4. package/dist/languages/TreeSitterAdapter.d.ts +30 -0
  5. package/dist/languages/TreeSitterAdapter.d.ts.map +1 -0
  6. package/dist/languages/TreeSitterAdapter.js +466 -0
  7. package/dist/languages/TreeSitterAdapter.js.map +1 -0
  8. package/dist/languages/grammars/tree-sitter-go.wasm +0 -0
  9. package/dist/languages/grammars/tree-sitter-java.wasm +0 -0
  10. package/dist/languages/grammars/tree-sitter-python.wasm +0 -0
  11. package/dist/languages/grammars/tree-sitter-rust.wasm +0 -0
  12. package/dist/languages/lang-config.d.ts +38 -0
  13. package/dist/languages/lang-config.d.ts.map +1 -0
  14. package/dist/languages/lang-config.js +85 -0
  15. package/dist/languages/lang-config.js.map +1 -0
  16. package/dist/languages/registry.d.ts +6 -0
  17. package/dist/languages/registry.d.ts.map +1 -1
  18. package/dist/languages/registry.js +18 -4
  19. package/dist/languages/registry.js.map +1 -1
  20. package/package.json +4 -5
  21. package/src/languages/TreeSitterAdapter.ts +431 -0
  22. package/src/languages/lang-config.ts +113 -0
  23. package/src/languages/registry.ts +65 -49
  24. package/src/languages/PythonAdapter.ts +0 -285
  25. package/tests/agent.tools.test.ts +0 -81
  26. package/tests/benchmark.test.ts +0 -31
  27. package/tests/blast-radius.test.ts +0 -290
  28. package/tests/fixtures/sample.py +0 -17
  29. package/tests/fixtures/sample.ts +0 -13
  30. package/tests/fixtures/src/api/routes.ts +0 -1
  31. package/tests/fixtures/src/auth/permission.ts +0 -3
  32. package/tests/python-adapter.test.ts +0 -31
  33. package/tests/ranker-enhanced.test.ts +0 -70
  34. package/tests/ranker.test.ts +0 -79
  35. package/tests/scanner.scope.test.ts +0 -67
  36. package/tests/setup-fixtures.js +0 -29
  37. package/tests/skeletonizer.test.ts +0 -149
  38. package/uca-landing/index.html +0 -17
  39. package/uca-landing/package.json +0 -23
  40. package/uca-landing/postcss.config.js +0 -6
  41. package/uca-landing/src/App.jsx +0 -45
  42. package/uca-landing/src/components/AgentMode.jsx +0 -45
  43. package/uca-landing/src/components/CliReference.jsx +0 -89
  44. package/uca-landing/src/components/Features.jsx +0 -88
  45. package/uca-landing/src/components/Footer.jsx +0 -35
  46. package/uca-landing/src/components/Hero.jsx +0 -125
  47. package/uca-landing/src/components/HowItWorks.jsx +0 -65
  48. package/uca-landing/src/components/Install.jsx +0 -103
  49. package/uca-landing/src/components/LanguageSupport.jsx +0 -63
  50. package/uca-landing/src/components/Navbar.jsx +0 -86
  51. package/uca-landing/src/components/Problem.jsx +0 -51
  52. package/uca-landing/src/components/Reveal.jsx +0 -40
  53. package/uca-landing/src/components/TokenSavings.jsx +0 -126
  54. package/uca-landing/src/components/WorksWith.jsx +0 -59
  55. package/uca-landing/src/hooks/useScrollNav.js +0 -13
  56. package/uca-landing/src/hooks/useTypewriter.js +0 -41
  57. package/uca-landing/src/index.css +0 -13
  58. package/uca-landing/src/main.jsx +0 -10
  59. package/uca-landing/tailwind.config.js +0 -68
  60. package/uca-landing/vercel.json +0 -4
  61. package/uca-landing/vite.config.js +0 -6
@@ -1 +1 @@
1
- {"version":3,"file":"PythonAdapter.d.ts","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAmP5E,qBAAa,aAAc,YAAW,eAAe;IACnD,IAAI,SAAY;IAChB,UAAU,WAAmB;IAE7B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc;IAQvF,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAYzC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAW1C"}
1
+ {"version":3,"file":"PythonAdapter.d.ts","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAmQ5E,qBAAa,aAAc,YAAW,eAAe;IACnD,IAAI,SAAY;IAChB,UAAU,WAAmB;IAE7B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc;IAQvF,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAazC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAY1C"}
@@ -35,16 +35,33 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.PythonAdapter = void 0;
37
37
  const path = __importStar(require("path"));
38
- const Parser = require("tree-sitter");
38
+ let Parser;
39
39
  let pythonLanguage;
40
+ let treeSitterAvailable = true;
41
+ try {
42
+ Parser = require('tree-sitter');
43
+ }
44
+ catch {
45
+ treeSitterAvailable = false;
46
+ }
40
47
  function ensureParserLoaded() {
48
+ if (!treeSitterAvailable)
49
+ return false;
41
50
  if (!pythonLanguage) {
42
- // eslint-disable-next-line @typescript-eslint/no-require-imports
43
- pythonLanguage = require('tree-sitter-python');
51
+ try {
52
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
53
+ pythonLanguage = require('tree-sitter-python');
54
+ }
55
+ catch {
56
+ treeSitterAvailable = false;
57
+ return false;
58
+ }
44
59
  }
60
+ return true;
45
61
  }
46
62
  function getParser() {
47
- ensureParserLoaded();
63
+ if (!ensureParserLoaded())
64
+ return null;
48
65
  const parser = new Parser();
49
66
  parser.setLanguage(pythonLanguage);
50
67
  return parser;
@@ -157,6 +174,8 @@ function processStatement(state, node) {
157
174
  }
158
175
  function buildSkeletonAst(content) {
159
176
  const parser = getParser();
177
+ if (!parser)
178
+ return content.split('\n').slice(0, 50).join('\n');
160
179
  const tree = parser.parse(content);
161
180
  const lines = content.split(/\r?\n/);
162
181
  const state = {
@@ -272,6 +291,8 @@ class PythonAdapter {
272
291
  extractSymbols(content) {
273
292
  try {
274
293
  const parser = getParser();
294
+ if (!parser)
295
+ return [];
275
296
  const tree = parser.parse(content);
276
297
  const symbols = [];
277
298
  walkSymbols(tree.rootNode, symbols);
@@ -284,6 +305,8 @@ class PythonAdapter {
284
305
  extractImports(content) {
285
306
  try {
286
307
  const parser = getParser();
308
+ if (!parser)
309
+ return [];
287
310
  const tree = parser.parse(content);
288
311
  const mods = new Set();
289
312
  walkImports(tree.rootNode, mods);
@@ -1 +1 @@
1
- {"version":3,"file":"PythonAdapter.js","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PythonAdapter.js","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Universal tree-sitter adapter using web-tree-sitter (WASM).
3
+ * Handles Python, Go, Rust, Java, and any future language by loading
4
+ * the appropriate grammar at runtime. No native compilation required.
5
+ */
6
+ import { LanguageAdapter, SkeletonResult, Symbol } from './LanguageAdapter';
7
+ import { LangConfig } from './lang-config';
8
+ export declare class TreeSitterAdapter implements LanguageAdapter {
9
+ name: string;
10
+ extensions: string[];
11
+ private configs;
12
+ private _initDone;
13
+ constructor(configs: LangConfig[]);
14
+ canHandle(filePath: string): boolean;
15
+ /** Ensure WASM parser is initialized. Call at the start of each public method. */
16
+ private ensureReady;
17
+ /** Async initialization — must be called once before using the adapter. */
18
+ initialize(): Promise<void>;
19
+ /** Synchronous initialization attempt (for compat with existing sync API). */
20
+ initializeSync(): void;
21
+ generateSkeleton(content: string, filePath: string): SkeletonResult;
22
+ extractSymbols(content: string): Symbol[];
23
+ extractImports(content: string): string[];
24
+ /** Extract symbols with a file path hint for correct config selection. */
25
+ extractSymbolsForFile(content: string, filePath: string): Symbol[];
26
+ /** Extract imports with a file path hint for correct config selection. */
27
+ extractImportsForFile(content: string, filePath: string): string[];
28
+ private walkSymbols;
29
+ }
30
+ //# sourceMappingURL=TreeSitterAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeSitterAdapter.d.ts","sourceRoot":"","sources":["../../src/languages/TreeSitterAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAuB,MAAM,eAAe,CAAC;AAkLhE,qBAAa,iBAAkB,YAAW,eAAe;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,UAAU,EAAE;IAMjC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKpC,kFAAkF;IAClF,OAAO,CAAC,WAAW;IAOnB,2EAA2E;IACrE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC,8EAA8E;IAC9E,cAAc,IAAI,IAAI;IAQtB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc;IA+CnE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAwBzC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IA4BzC,0EAA0E;IAC1E,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAuBlE,0EAA0E;IAC1E,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IA2BlE,OAAO,CAAC,WAAW;CAgDpB"}
@@ -0,0 +1,466 @@
1
+ "use strict";
2
+ /**
3
+ * Universal tree-sitter adapter using web-tree-sitter (WASM).
4
+ * Handles Python, Go, Rust, Java, and any future language by loading
5
+ * the appropriate grammar at runtime. No native compilation required.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.TreeSitterAdapter = void 0;
42
+ const path = __importStar(require("path"));
43
+ const lang_config_1 = require("./lang-config");
44
+ // web-tree-sitter types (loaded dynamically to avoid ESM/CJS issues)
45
+ let Parser = null;
46
+ let initPromise = null;
47
+ const loadedLanguages = new Map();
48
+ /** Resolve path to a bundled .wasm grammar file. */
49
+ function grammarPath(filename) {
50
+ return path.join(__dirname, 'grammars', filename);
51
+ }
52
+ /** Initialize the WASM parser (once). */
53
+ async function ensureInit() {
54
+ if (Parser)
55
+ return true;
56
+ if (initPromise) {
57
+ await initPromise;
58
+ return Parser !== null;
59
+ }
60
+ initPromise = (async () => {
61
+ try {
62
+ const mod = require('web-tree-sitter');
63
+ const P = mod.default ?? mod;
64
+ await P.init();
65
+ Parser = P;
66
+ }
67
+ catch {
68
+ Parser = null;
69
+ }
70
+ })();
71
+ await initPromise;
72
+ return Parser !== null;
73
+ }
74
+ /** Load a language grammar (cached). */
75
+ async function loadLanguage(config) {
76
+ if (loadedLanguages.has(config.id)) {
77
+ return loadedLanguages.get(config.id);
78
+ }
79
+ try {
80
+ const wasmPath = grammarPath(config.grammarFile);
81
+ const lang = await Parser.Language.load(wasmPath);
82
+ loadedLanguages.set(config.id, lang);
83
+ return lang;
84
+ }
85
+ catch {
86
+ return null;
87
+ }
88
+ }
89
+ /** Synchronous wrapper — uses cached state if already initialized. */
90
+ function getParserSync(config) {
91
+ if (!Parser)
92
+ return null;
93
+ const lang = loadedLanguages.get(config.id);
94
+ if (!lang)
95
+ return null;
96
+ const parser = new Parser();
97
+ parser.setLanguage(lang);
98
+ return { parser, language: lang };
99
+ }
100
+ /**
101
+ * Extract the text of a node's named field, or null if not present.
102
+ */
103
+ function fieldText(node, fieldName) {
104
+ const child = node.childForFieldName(fieldName);
105
+ return child ? child.text : null;
106
+ }
107
+ /**
108
+ * Get the signature of a function/method node (everything except the body).
109
+ */
110
+ function getSignature(node, lines, config) {
111
+ const bodyNode = node.childForFieldName(config.bodyField);
112
+ if (!bodyNode) {
113
+ // No body field — return the whole node text (might be a declaration)
114
+ return node.text;
115
+ }
116
+ const startRow = node.startPosition.row;
117
+ const bodyStartRow = bodyNode.startPosition.row;
118
+ // Return lines from node start to body start (exclusive of body content)
119
+ const sigLines = lines.slice(startRow, bodyStartRow);
120
+ if (sigLines.length === 0) {
121
+ // Body is on the same line as the signature
122
+ const fullLine = lines[startRow] || '';
123
+ const bodyCol = bodyNode.startPosition.column;
124
+ return fullLine.slice(0, bodyCol).trimEnd();
125
+ }
126
+ return sigLines.join('\n');
127
+ }
128
+ /**
129
+ * Get the indent level of a node based on its start column.
130
+ */
131
+ function indent(node) {
132
+ return ' '.repeat(node.startPosition.column);
133
+ }
134
+ /**
135
+ * Determine the body placeholder based on language.
136
+ */
137
+ function bodyPlaceholder(config) {
138
+ if (config.id === 'python')
139
+ return ' ...';
140
+ return ' /* trimmed */';
141
+ }
142
+ /**
143
+ * Generate skeleton for a class node.
144
+ */
145
+ function skeletonizeClass(node, lines, config) {
146
+ const out = [];
147
+ const name = fieldText(node, config.nameField) || 'Unknown';
148
+ const bodyNode = node.childForFieldName(config.classBodyField);
149
+ // Class signature
150
+ const sig = getSignature(node, lines, config);
151
+ out.push(sig);
152
+ if (!bodyNode) {
153
+ return out;
154
+ }
155
+ // For Python, add body placeholder for the class opening
156
+ if (config.id === 'python') {
157
+ // Walk methods inside the class body
158
+ for (const child of bodyNode.namedChildren) {
159
+ if (config.methodTypes.includes(child.type)) {
160
+ out.push('');
161
+ const methodSig = getSignature(child, lines, config);
162
+ out.push(methodSig);
163
+ out.push(indent(child) + ' ...');
164
+ }
165
+ }
166
+ }
167
+ else {
168
+ // For braced languages, output opening brace + method signatures
169
+ if (!sig.includes('{')) {
170
+ out.push(indent(node) + '{');
171
+ }
172
+ for (const child of bodyNode.namedChildren) {
173
+ if (config.methodTypes.includes(child.type)) {
174
+ const methodSig = getSignature(child, lines, config);
175
+ out.push(methodSig);
176
+ out.push(indent(child) + bodyPlaceholder(config));
177
+ if (!config.id.match(/python/)) {
178
+ out.push(indent(child) + '}');
179
+ }
180
+ out.push('');
181
+ }
182
+ else if (child.type === 'field_declaration' ||
183
+ child.type === 'field_definition' ||
184
+ child.type === 'annotation_type_element_declaration') {
185
+ // Keep field declarations as-is
186
+ out.push(child.text);
187
+ }
188
+ }
189
+ out.push(indent(node) + '}');
190
+ }
191
+ return out;
192
+ }
193
+ /**
194
+ * Generate skeleton for a function node.
195
+ */
196
+ function skeletonizeFunction(node, lines, config) {
197
+ const out = [];
198
+ const sig = getSignature(node, lines, config);
199
+ out.push(sig);
200
+ if (config.id === 'python') {
201
+ out.push(indent(node) + ' ...');
202
+ }
203
+ else {
204
+ if (!sig.trimEnd().endsWith('{')) {
205
+ out.push(indent(node) + '{');
206
+ }
207
+ out.push(indent(node) + bodyPlaceholder(config));
208
+ out.push(indent(node) + '}');
209
+ }
210
+ return out;
211
+ }
212
+ class TreeSitterAdapter {
213
+ name;
214
+ extensions;
215
+ configs;
216
+ _initDone = false;
217
+ constructor(configs) {
218
+ this.configs = configs;
219
+ this.name = 'tree-sitter';
220
+ this.extensions = configs.flatMap((c) => c.extensions);
221
+ }
222
+ canHandle(filePath) {
223
+ const ext = path.extname(filePath).toLowerCase();
224
+ return this.extensions.includes(ext);
225
+ }
226
+ /** Ensure WASM parser is initialized. Call at the start of each public method. */
227
+ ensureReady(ext) {
228
+ const config = (0, lang_config_1.getLangConfigForExt)(ext);
229
+ if (!config)
230
+ return null;
231
+ if (!Parser || !loadedLanguages.has(config.id))
232
+ return null;
233
+ return config;
234
+ }
235
+ /** Async initialization — must be called once before using the adapter. */
236
+ async initialize() {
237
+ if (this._initDone)
238
+ return;
239
+ const ok = await ensureInit();
240
+ if (!ok)
241
+ return;
242
+ for (const config of this.configs) {
243
+ await loadLanguage(config);
244
+ }
245
+ this._initDone = true;
246
+ }
247
+ /** Synchronous initialization attempt (for compat with existing sync API). */
248
+ initializeSync() {
249
+ // Trigger async init in background. Methods will return fallbacks
250
+ // until initialization completes.
251
+ if (!this._initDone) {
252
+ this.initialize().catch(() => { });
253
+ }
254
+ }
255
+ generateSkeleton(content, filePath) {
256
+ const ext = path.extname(filePath).toLowerCase();
257
+ const config = this.ensureReady(ext);
258
+ if (!config) {
259
+ return { skeleton: content.split('\n').slice(0, 50).join('\n') };
260
+ }
261
+ try {
262
+ const ctx = getParserSync(config);
263
+ if (!ctx)
264
+ return { skeleton: content.split('\n').slice(0, 50).join('\n') };
265
+ const tree = ctx.parser.parse(content);
266
+ if (!tree)
267
+ return { skeleton: content.split('\n').slice(0, 50).join('\n') };
268
+ const lines = content.split(/\r?\n/);
269
+ const skeletonLines = [];
270
+ skeletonLines.push(`/* Skeleton of ${path.basename(filePath)} */`);
271
+ skeletonLines.push('');
272
+ for (const child of tree.rootNode.namedChildren) {
273
+ if (config.importTypes.includes(child.type)) {
274
+ skeletonLines.push(child.text);
275
+ }
276
+ else if (config.classTypes.includes(child.type)) {
277
+ skeletonLines.push('');
278
+ skeletonLines.push(...skeletonizeClass(child, lines, config));
279
+ }
280
+ else if (config.functionTypes.includes(child.type)) {
281
+ skeletonLines.push('');
282
+ skeletonLines.push(...skeletonizeFunction(child, lines, config));
283
+ }
284
+ else if (config.interfaceTypes.includes(child.type)) {
285
+ skeletonLines.push('');
286
+ skeletonLines.push(child.text);
287
+ }
288
+ else if (config.typeTypes.includes(child.type)) {
289
+ skeletonLines.push('');
290
+ skeletonLines.push(child.text);
291
+ }
292
+ }
293
+ tree.delete();
294
+ ctx.parser.delete();
295
+ return { skeleton: skeletonLines.join('\n').trim() };
296
+ }
297
+ catch {
298
+ return { skeleton: content.split('\n').slice(0, 50).join('\n') };
299
+ }
300
+ }
301
+ extractSymbols(content) {
302
+ // Determine the config from context (we don't have filePath here,
303
+ // so try each config until one parses successfully)
304
+ for (const config of this.configs) {
305
+ const ctx = getParserSync(config);
306
+ if (!ctx)
307
+ continue;
308
+ try {
309
+ const tree = ctx.parser.parse(content);
310
+ if (!tree) {
311
+ ctx.parser.delete();
312
+ continue;
313
+ }
314
+ const symbols = [];
315
+ this.walkSymbols(tree.rootNode, symbols, config);
316
+ tree.delete();
317
+ ctx.parser.delete();
318
+ if (symbols.length > 0)
319
+ return symbols;
320
+ }
321
+ catch {
322
+ ctx.parser.delete();
323
+ }
324
+ }
325
+ return [];
326
+ }
327
+ extractImports(content) {
328
+ for (const config of this.configs) {
329
+ const ctx = getParserSync(config);
330
+ if (!ctx)
331
+ continue;
332
+ try {
333
+ const tree = ctx.parser.parse(content);
334
+ if (!tree) {
335
+ ctx.parser.delete();
336
+ continue;
337
+ }
338
+ const imports = [];
339
+ for (const child of tree.rootNode.namedChildren) {
340
+ if (config.importTypes.includes(child.type)) {
341
+ // Extract module name from import
342
+ const text = child.text;
343
+ imports.push(text);
344
+ }
345
+ }
346
+ tree.delete();
347
+ ctx.parser.delete();
348
+ if (imports.length > 0)
349
+ return imports;
350
+ }
351
+ catch {
352
+ ctx.parser.delete();
353
+ }
354
+ }
355
+ return [];
356
+ }
357
+ /** Extract symbols with a file path hint for correct config selection. */
358
+ extractSymbolsForFile(content, filePath) {
359
+ const ext = path.extname(filePath).toLowerCase();
360
+ const config = this.ensureReady(ext);
361
+ if (!config)
362
+ return [];
363
+ const ctx = getParserSync(config);
364
+ if (!ctx)
365
+ return [];
366
+ try {
367
+ const tree = ctx.parser.parse(content);
368
+ if (!tree) {
369
+ ctx.parser.delete();
370
+ return [];
371
+ }
372
+ const symbols = [];
373
+ this.walkSymbols(tree.rootNode, symbols, config);
374
+ tree.delete();
375
+ ctx.parser.delete();
376
+ return symbols;
377
+ }
378
+ catch {
379
+ ctx.parser.delete();
380
+ return [];
381
+ }
382
+ }
383
+ /** Extract imports with a file path hint for correct config selection. */
384
+ extractImportsForFile(content, filePath) {
385
+ const ext = path.extname(filePath).toLowerCase();
386
+ const config = this.ensureReady(ext);
387
+ if (!config)
388
+ return [];
389
+ const ctx = getParserSync(config);
390
+ if (!ctx)
391
+ return [];
392
+ try {
393
+ const tree = ctx.parser.parse(content);
394
+ if (!tree) {
395
+ ctx.parser.delete();
396
+ return [];
397
+ }
398
+ const imports = [];
399
+ for (const child of tree.rootNode.namedChildren) {
400
+ if (config.importTypes.includes(child.type)) {
401
+ imports.push(child.text);
402
+ }
403
+ }
404
+ tree.delete();
405
+ ctx.parser.delete();
406
+ return imports;
407
+ }
408
+ catch {
409
+ ctx.parser.delete();
410
+ return [];
411
+ }
412
+ }
413
+ walkSymbols(node, symbols, config) {
414
+ for (const child of node.namedChildren) {
415
+ const name = fieldText(child, config.nameField);
416
+ if (!name)
417
+ continue;
418
+ if (config.functionTypes.includes(child.type)) {
419
+ symbols.push({
420
+ name,
421
+ kind: 'function',
422
+ line: child.startPosition.row + 1,
423
+ });
424
+ }
425
+ else if (config.classTypes.includes(child.type)) {
426
+ symbols.push({
427
+ name,
428
+ kind: 'class',
429
+ line: child.startPosition.row + 1,
430
+ });
431
+ // Walk class body for methods
432
+ const body = child.childForFieldName(config.classBodyField);
433
+ if (body) {
434
+ for (const member of body.namedChildren) {
435
+ if (config.methodTypes.includes(member.type)) {
436
+ const methodName = fieldText(member, config.nameField);
437
+ if (methodName) {
438
+ symbols.push({
439
+ name: methodName,
440
+ kind: 'function',
441
+ line: member.startPosition.row + 1,
442
+ });
443
+ }
444
+ }
445
+ }
446
+ }
447
+ }
448
+ else if (config.interfaceTypes.includes(child.type)) {
449
+ symbols.push({
450
+ name,
451
+ kind: 'interface',
452
+ line: child.startPosition.row + 1,
453
+ });
454
+ }
455
+ else if (config.typeTypes.includes(child.type)) {
456
+ symbols.push({
457
+ name,
458
+ kind: 'type',
459
+ line: child.startPosition.row + 1,
460
+ });
461
+ }
462
+ }
463
+ }
464
+ }
465
+ exports.TreeSitterAdapter = TreeSitterAdapter;
466
+ //# sourceMappingURL=TreeSitterAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeSitterAdapter.js","sourceRoot":"","sources":["../../src/languages/TreeSitterAdapter.ts"],"names":[],"mappings":"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"}