codebuff 1.0.273 → 1.0.275
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/cli-handlers/api-key.d.ts +1 -1
- package/dist/cli-handlers/api-key.js +1 -1
- package/dist/cli-handlers/api-key.js.map +1 -1
- package/dist/cli-handlers/initialization-flow.d.ts +1 -0
- package/dist/cli-handlers/initialization-flow.js +24 -0
- package/dist/cli-handlers/initialization-flow.js.map +1 -0
- package/dist/cli-modules/command-processor.d.ts +12 -0
- package/dist/cli-modules/command-processor.js +129 -0
- package/dist/cli-modules/command-processor.js.map +1 -0
- package/dist/cli-modules/input-handler.d.ts +20 -0
- package/dist/cli-modules/input-handler.js +98 -0
- package/dist/cli-modules/input-handler.js.map +1 -0
- package/dist/cli-modules/readline-handler.d.ts +17 -0
- package/dist/cli-modules/readline-handler.js +134 -0
- package/dist/cli-modules/readline-handler.js.map +1 -0
- package/dist/cli-modules/signal-handler.d.ts +13 -0
- package/dist/cli-modules/signal-handler.js +69 -0
- package/dist/cli-modules/signal-handler.js.map +1 -0
- package/dist/cli-modules/types.d.ts +51 -0
- package/dist/cli-modules/types.js +3 -0
- package/dist/cli-modules/types.js.map +1 -0
- package/dist/cli-modules/websocket-handler.d.ts +16 -0
- package/dist/cli-modules/websocket-handler.js +53 -0
- package/dist/cli-modules/websocket-handler.js.map +1 -0
- package/dist/cli.d.ts +6 -1
- package/dist/cli.js +60 -7
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts +12 -0
- package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts.map +1 -0
- package/dist/code-map/__mocks__/tree-sitter-typescript.js +14 -0
- package/dist/code-map/__mocks__/tree-sitter-typescript.js.map +1 -0
- package/dist/code-map/__mocks__/wasm-mock.d.ts +2 -0
- package/dist/code-map/__mocks__/wasm-mock.d.ts.map +1 -0
- package/dist/code-map/__mocks__/wasm-mock.js +3 -0
- package/dist/code-map/__mocks__/wasm-mock.js.map +1 -0
- package/dist/code-map/__tests__/parse.test.d.ts +2 -0
- package/dist/code-map/__tests__/parse.test.d.ts.map +1 -0
- package/dist/code-map/__tests__/parse.test.js +231 -0
- package/dist/code-map/__tests__/parse.test.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/consumer.d.ts +2 -0
- package/dist/code-map/__tests__/test-langs/consumer.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/consumer.js +6 -0
- package/dist/code-map/__tests__/test-langs/consumer.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/empty.d.ts +1 -0
- package/dist/code-map/__tests__/test-langs/empty.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/empty.js +2 -0
- package/dist/code-map/__tests__/test-langs/empty.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/test.d.ts +12 -0
- package/dist/code-map/__tests__/test-langs/test.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/test.js +23 -0
- package/dist/code-map/__tests__/test-langs/test.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/unused.d.ts +2 -0
- package/dist/code-map/__tests__/test-langs/unused.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/unused.js +7 -0
- package/dist/code-map/__tests__/test-langs/unused.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/utils1.d.ts +2 -0
- package/dist/code-map/__tests__/test-langs/utils1.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/utils1.js +7 -0
- package/dist/code-map/__tests__/test-langs/utils1.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/utils2.d.ts +2 -0
- package/dist/code-map/__tests__/test-langs/utils2.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/utils2.js +8 -0
- package/dist/code-map/__tests__/test-langs/utils2.js.map +1 -0
- package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts +2 -0
- package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts.map +1 -0
- package/dist/code-map/__tests__/tree-sitter-minimal.test.js +79 -0
- package/dist/code-map/__tests__/tree-sitter-minimal.test.js.map +1 -0
- package/dist/code-map/jest.config.d.ts +4 -0
- package/dist/code-map/jest.config.d.ts.map +1 -0
- package/dist/code-map/jest.config.js +18 -0
- package/dist/code-map/jest.config.js.map +1 -0
- package/dist/code-map/languages.d.ts +1 -2
- package/dist/code-map/languages.d.ts.map +1 -1
- package/dist/code-map/languages.js +2 -1
- package/dist/code-map/languages.js.map +1 -1
- package/dist/code-map/parse.d.ts +14 -4
- package/dist/code-map/parse.d.ts.map +1 -1
- package/dist/code-map/parse.js +91 -38
- package/dist/code-map/parse.js.map +1 -1
- package/dist/code-map/parse.test.d.ts +2 -0
- package/dist/code-map/parse.test.d.ts.map +1 -0
- package/dist/code-map/parse.test.js +218 -0
- package/dist/code-map/parse.test.js.map +1 -0
- package/dist/code-map/scripts/tree-sitter-test.cjs +27 -0
- package/dist/code-map/scripts/tree-sitter-test.cjs.map +1 -0
- package/dist/code-map/scripts/tree-sitter-test.d.cts +2 -0
- package/dist/code-map/scripts/tree-sitter-test.d.cts.map +1 -0
- package/dist/code-map/scripts/tree-sitter-test.d.ts +2 -0
- package/dist/code-map/scripts/tree-sitter-test.d.ts.map +1 -0
- package/dist/code-map/scripts/tree-sitter-test.js +54 -0
- package/dist/code-map/scripts/tree-sitter-test.js.map +1 -0
- package/dist/code-map/test-parser.d.ts +2 -0
- package/dist/code-map/test-parser.d.ts.map +1 -0
- package/dist/code-map/test-parser.js +42 -0
- package/dist/code-map/test-parser.js.map +1 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +6 -1
- package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +11 -1
- package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +13 -1
- package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +1 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +5 -8
- package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +5 -2
- package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +7 -0
- package/dist/code-map/tsconfig.tsbuildinfo +1 -1
- package/dist/common/actions.d.ts +58 -32
- package/dist/common/bigquery/client.d.ts +15 -0
- package/dist/common/bigquery/client.js +265 -0
- package/dist/common/bigquery/client.js.map +1 -0
- package/dist/common/bigquery/schema.d.ts +55 -0
- package/dist/common/bigquery/schema.js +24 -0
- package/dist/common/bigquery/schema.js.map +1 -0
- package/dist/common/constants/tools.d.ts +1 -0
- package/dist/common/constants/tools.js +1 -0
- package/dist/common/constants/tools.js.map +1 -1
- package/dist/common/constants.d.ts +1 -1
- package/dist/common/constants.js +18 -7
- package/dist/common/constants.js.map +1 -1
- package/dist/common/project-file-tree.js +12 -0
- package/dist/common/project-file-tree.js.map +1 -1
- package/dist/common/types/agent-state.d.ts +13 -8
- package/dist/common/types/message.d.ts +6 -6
- package/dist/common/util/__tests__/saxy.test.js +140 -21
- package/dist/common/util/__tests__/saxy.test.js.map +1 -1
- package/dist/common/util/credentials.d.ts +2 -2
- package/dist/common/util/file-metadata.d.ts +9 -0
- package/dist/common/util/file-metadata.js +24 -0
- package/dist/common/util/file-metadata.js.map +1 -0
- package/dist/common/util/file.d.ts +3 -0
- package/dist/common/util/file.js +3 -0
- package/dist/common/util/file.js.map +1 -1
- package/dist/common/util/promise.js +1 -1
- package/dist/common/util/promise.js.map +1 -1
- package/dist/common/util/saxy.d.ts +2 -1
- package/dist/common/util/saxy.js +51 -18
- package/dist/common/util/saxy.js.map +1 -1
- package/dist/common/websockets/websocket-schema.d.ts +118 -68
- package/dist/display.d.ts +2 -0
- package/dist/display.js +8 -0
- package/dist/display.js.map +1 -1
- package/dist/index.js +4 -80
- package/dist/index.js.map +1 -1
- package/dist/menu.js +35 -110
- package/dist/menu.js.map +1 -1
- package/dist/project-files.d.ts +2 -0
- package/dist/project-files.js +3 -2
- package/dist/project-files.js.map +1 -1
- package/dist/tool-handlers.js +3 -0
- package/dist/tool-handlers.js.map +1 -1
- package/dist/utils/__tests__/tool-renderers.test.js +27 -1
- package/dist/utils/__tests__/tool-renderers.test.js.map +1 -1
- package/dist/utils/__tests__/xml-stream-parser.test.js +26 -0
- package/dist/utils/__tests__/xml-stream-parser.test.js.map +1 -1
- package/dist/utils/detect-shell.js +1 -1
- package/dist/utils/detect-shell.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +3 -6
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/spinner.d.ts +1 -0
- package/dist/utils/spinner.js +8 -1
- package/dist/utils/spinner.js.map +1 -1
- package/dist/utils/system-info.js +2 -2
- package/dist/utils/system-info.js.map +1 -1
- package/dist/utils/terminal.d.ts +2 -2
- package/dist/utils/terminal.js +46 -34
- package/dist/utils/terminal.js.map +1 -1
- package/dist/utils/tool-renderers.js +25 -5
- package/dist/utils/tool-renderers.js.map +1 -1
- package/dist/utils/xml-stream-parser.js.map +1 -1
- package/dist/workers/project-context.js +4 -1
- package/dist/workers/project-context.js.map +1 -1
- package/package.json +3 -1
package/dist/code-map/parse.js
CHANGED
|
@@ -28,27 +28,36 @@ exports.getFileTokenScores = getFileTokenScores;
|
|
|
28
28
|
exports.parseTokens = parseTokens;
|
|
29
29
|
const fs = __importStar(require("fs"));
|
|
30
30
|
const path = __importStar(require("path"));
|
|
31
|
+
const lodash_1 = require("lodash");
|
|
31
32
|
const languages_1 = require("./languages");
|
|
32
33
|
exports.DEBUG_PARSING = false;
|
|
33
34
|
const IGNORE_TOKENS = ['__init__', '__post_init__', '__call__', 'constructor'];
|
|
35
|
+
const MAX_CALLERS = 25;
|
|
34
36
|
async function getFileTokenScores(projectRoot, filePaths) {
|
|
35
37
|
const startTime = Date.now();
|
|
36
38
|
const tokenScores = {};
|
|
37
39
|
const externalCalls = {};
|
|
40
|
+
const fileCallsMap = new Map();
|
|
41
|
+
// First pass: collect all identifiers and calls
|
|
38
42
|
for (const filePath of filePaths) {
|
|
39
43
|
const fullPath = path.join(projectRoot, filePath);
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
const languageConfig = await (0, languages_1.getLanguageConfig)(fullPath);
|
|
45
|
+
if (languageConfig) {
|
|
46
|
+
const { identifiers, calls, numLines } = await parseTokens(fullPath, languageConfig);
|
|
42
47
|
const tokenScoresForFile = {};
|
|
43
48
|
tokenScores[filePath] = tokenScoresForFile;
|
|
44
49
|
const dirs = path.dirname(fullPath).split(path.sep);
|
|
45
50
|
const depth = dirs.length;
|
|
46
51
|
const tokenBaseScore = 0.8 ** depth * Math.sqrt(numLines / (identifiers.length + 1));
|
|
52
|
+
// Store defined tokens
|
|
47
53
|
for (const identifier of identifiers) {
|
|
48
54
|
if (!IGNORE_TOKENS.includes(identifier)) {
|
|
49
55
|
tokenScoresForFile[identifier] = tokenBaseScore;
|
|
50
56
|
}
|
|
51
57
|
}
|
|
58
|
+
// Store calls for this file
|
|
59
|
+
fileCallsMap.set(filePath, calls);
|
|
60
|
+
// Track external calls
|
|
52
61
|
for (const call of calls) {
|
|
53
62
|
if (!tokenScoresForFile[call]) {
|
|
54
63
|
externalCalls[call] = (externalCalls[call] ?? 0) + 1;
|
|
@@ -56,58 +65,99 @@ async function getFileTokenScores(projectRoot, filePaths) {
|
|
|
56
65
|
}
|
|
57
66
|
}
|
|
58
67
|
}
|
|
68
|
+
// Build a map of tokens to their defining files for O(1) lookup
|
|
69
|
+
const tokenDefinitionMap = new Map();
|
|
70
|
+
const highestScores = new Map();
|
|
71
|
+
for (const [filePath, scores] of Object.entries(tokenScores)) {
|
|
72
|
+
for (const [token, score] of Object.entries(scores)) {
|
|
73
|
+
const currentHighestScore = highestScores.get(token) ?? -Infinity;
|
|
74
|
+
// Keep the file with the higher score for this token
|
|
75
|
+
if (score > currentHighestScore) {
|
|
76
|
+
highestScores.set(token, score);
|
|
77
|
+
tokenDefinitionMap.set(token, filePath);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const tokenCallers = {};
|
|
82
|
+
// For each file's calls, add it as a caller to the defining file's tokens
|
|
83
|
+
for (const [callingFile, calls] of fileCallsMap.entries()) {
|
|
84
|
+
for (const call of calls) {
|
|
85
|
+
const definingFile = tokenDefinitionMap.get(call);
|
|
86
|
+
if (!definingFile || callingFile === definingFile) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
// Skip token names in default objects, e.g. toString, hasOwnProperty
|
|
90
|
+
if (call in {}) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (!tokenCallers[definingFile]) {
|
|
94
|
+
tokenCallers[definingFile] = {};
|
|
95
|
+
}
|
|
96
|
+
if (!tokenCallers[definingFile][call]) {
|
|
97
|
+
tokenCallers[definingFile][call] = [];
|
|
98
|
+
}
|
|
99
|
+
const callerFiles = tokenCallers[definingFile][call];
|
|
100
|
+
if (callerFiles.length < MAX_CALLERS &&
|
|
101
|
+
!callerFiles.includes(callingFile)) {
|
|
102
|
+
callerFiles.push(callingFile);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Apply call frequency boost to token scores
|
|
59
107
|
for (const scores of Object.values(tokenScores)) {
|
|
60
108
|
for (const token of Object.keys(scores)) {
|
|
61
109
|
const numCalls = externalCalls[token] ?? 0;
|
|
62
110
|
if (typeof numCalls !== 'number')
|
|
63
111
|
continue;
|
|
64
112
|
scores[token] *= 1 + Math.log(1 + numCalls);
|
|
113
|
+
// Round to 3 decimal places
|
|
114
|
+
scores[token] = Math.round(scores[token] * 1000) / 1000;
|
|
65
115
|
}
|
|
66
116
|
}
|
|
67
117
|
if (exports.DEBUG_PARSING) {
|
|
68
118
|
const endTime = Date.now();
|
|
69
119
|
console.log(`Parsed ${filePaths.length} files in ${endTime - startTime}ms`);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
console.error(`Failed to save exported tokens to file: ${error}`);
|
|
79
|
-
}
|
|
120
|
+
fs.writeFileSync('../debug/debug-parse.json', JSON.stringify({
|
|
121
|
+
tokenCallers,
|
|
122
|
+
tokenScores,
|
|
123
|
+
fileCallsMap,
|
|
124
|
+
externalCalls,
|
|
125
|
+
}));
|
|
80
126
|
}
|
|
81
|
-
return tokenScores;
|
|
127
|
+
return { tokenScores, tokenCallers };
|
|
82
128
|
}
|
|
83
|
-
async function parseTokens(filePath) {
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
};
|
|
129
|
+
async function parseTokens(filePath, languageConfig) {
|
|
130
|
+
const { parser, query } = languageConfig;
|
|
131
|
+
try {
|
|
132
|
+
const sourceCode = fs.readFileSync(filePath, 'utf8');
|
|
133
|
+
const numLines = sourceCode.match(/\n/g)?.length ?? 0 + 1;
|
|
134
|
+
const parseResults = parseFile(parser, query, sourceCode);
|
|
135
|
+
const identifiers = (0, lodash_1.uniq)(parseResults.identifier);
|
|
136
|
+
const calls = (0, lodash_1.uniq)(parseResults['call.identifier']);
|
|
137
|
+
if (exports.DEBUG_PARSING) {
|
|
138
|
+
console.log(`\nParsing ${filePath}:`);
|
|
139
|
+
console.log('Source:', sourceCode);
|
|
140
|
+
console.log('Parse results:', parseResults);
|
|
141
|
+
console.log('Identifiers:', identifiers);
|
|
142
|
+
console.log('Calls:', calls);
|
|
98
143
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
144
|
+
return {
|
|
145
|
+
numLines,
|
|
146
|
+
identifiers: identifiers ?? [],
|
|
147
|
+
calls: calls ?? [],
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
if (exports.DEBUG_PARSING) {
|
|
152
|
+
console.error(`Error parsing query: ${e}`);
|
|
153
|
+
console.log(filePath);
|
|
104
154
|
}
|
|
155
|
+
return {
|
|
156
|
+
numLines: 0,
|
|
157
|
+
identifiers: [],
|
|
158
|
+
calls: [],
|
|
159
|
+
};
|
|
105
160
|
}
|
|
106
|
-
return {
|
|
107
|
-
numLines: 0,
|
|
108
|
-
identifiers: [],
|
|
109
|
-
calls: [],
|
|
110
|
-
};
|
|
111
161
|
}
|
|
112
162
|
function parseFile(parser, query, sourceCode) {
|
|
113
163
|
const tree = parser.parse(sourceCode, undefined, {
|
|
@@ -115,6 +165,9 @@ function parseFile(parser, query, sourceCode) {
|
|
|
115
165
|
});
|
|
116
166
|
const captures = query.captures(tree.rootNode);
|
|
117
167
|
const result = {};
|
|
168
|
+
if (exports.DEBUG_PARSING) {
|
|
169
|
+
console.log('\nCaptures:', captures);
|
|
170
|
+
}
|
|
118
171
|
for (const capture of captures) {
|
|
119
172
|
const { name, node } = capture;
|
|
120
173
|
if (!result[name]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../parse.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.test.d.ts","sourceRoot":"","sources":["../parse.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const fs = __importStar(require("fs"));
|
|
27
|
+
const path = __importStar(require("path"));
|
|
28
|
+
const bun_test_1 = require("bun:test");
|
|
29
|
+
const parse_1 = require("./parse");
|
|
30
|
+
// Test data
|
|
31
|
+
const tsFile = `
|
|
32
|
+
interface Greeter {
|
|
33
|
+
greet(name: string): string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
class Greeting implements Greeter {
|
|
37
|
+
private prefix: string;
|
|
38
|
+
|
|
39
|
+
constructor(prefix: string) {
|
|
40
|
+
this.prefix = prefix;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
greet(name: string): string {
|
|
44
|
+
return \`\${this.prefix}, \${name}!\`;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static printGreeting(greeter: Greeter, name: string): void {
|
|
48
|
+
console.log(greeter.greet(name));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function createGreeter(prefix: string): Greeter {
|
|
53
|
+
return new Greeting(prefix);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const greeting = createGreeter('Hello');
|
|
57
|
+
Greeting.printGreeting(greeting, 'World');
|
|
58
|
+
`;
|
|
59
|
+
const pyFile = `
|
|
60
|
+
from abc import ABC, abstractmethod
|
|
61
|
+
|
|
62
|
+
class Greeter(ABC):
|
|
63
|
+
@abstractmethod
|
|
64
|
+
def greet(self, name: str) -> str:
|
|
65
|
+
pass
|
|
66
|
+
|
|
67
|
+
class Greeting(Greeter):
|
|
68
|
+
def __init__(self, prefix: str):
|
|
69
|
+
self.prefix = prefix
|
|
70
|
+
|
|
71
|
+
def greet(self, name: str) -> str:
|
|
72
|
+
return f'{self.prefix}, {name}!'
|
|
73
|
+
|
|
74
|
+
def print_greeting(greeter: Greeter, name: str):
|
|
75
|
+
print(greeter.greet(name))
|
|
76
|
+
|
|
77
|
+
if __name__ == "__main__":
|
|
78
|
+
greeting = Greeting("Hello")
|
|
79
|
+
print_greeting(greeting, "World")
|
|
80
|
+
`;
|
|
81
|
+
const multiDefFile1 = `
|
|
82
|
+
export function utils() {
|
|
83
|
+
console.log('utils from file 1');
|
|
84
|
+
}
|
|
85
|
+
`;
|
|
86
|
+
const multiDefFile2 = `
|
|
87
|
+
// This file is deeper in the directory structure, so it will have a lower base score
|
|
88
|
+
export function utils() {
|
|
89
|
+
console.log('utils from file 2');
|
|
90
|
+
}
|
|
91
|
+
`;
|
|
92
|
+
const noDefsOnlyCallsFile = `
|
|
93
|
+
import { utils } from './utils';
|
|
94
|
+
utils();
|
|
95
|
+
console.log('no definitions here');
|
|
96
|
+
`;
|
|
97
|
+
const noCallsOnlyDefsFile = `
|
|
98
|
+
export function unusedFunction() {
|
|
99
|
+
console.log('never called');
|
|
100
|
+
}
|
|
101
|
+
`;
|
|
102
|
+
const emptyFile = '';
|
|
103
|
+
// Pre-read query files
|
|
104
|
+
const tsQueryFile = fs.readFileSync(path.join(__dirname, 'tree-sitter-queries/tree-sitter-typescript-tags.scm'), 'utf8');
|
|
105
|
+
const pyQueryFile = fs.readFileSync(path.join(__dirname, 'tree-sitter-queries/tree-sitter-python-tags.scm'), 'utf8');
|
|
106
|
+
(0, bun_test_1.describe)('getFileTokenScores', () => {
|
|
107
|
+
const fsReadFileSyncSpy = (0, bun_test_1.spyOn)(fs, 'readFileSync');
|
|
108
|
+
(0, bun_test_1.beforeEach)(() => {
|
|
109
|
+
// Mock file system
|
|
110
|
+
fsReadFileSyncSpy.mockImplementation(((filePath, options) => {
|
|
111
|
+
const filePathStr = filePath.toString();
|
|
112
|
+
// Handle query files first
|
|
113
|
+
if (filePathStr.includes('tree-sitter-typescript-tags.scm')) {
|
|
114
|
+
return tsQueryFile;
|
|
115
|
+
}
|
|
116
|
+
if (filePathStr.includes('tree-sitter-python-tags.scm')) {
|
|
117
|
+
return pyQueryFile;
|
|
118
|
+
}
|
|
119
|
+
const fileName = path.basename(filePathStr);
|
|
120
|
+
let content;
|
|
121
|
+
switch (fileName) {
|
|
122
|
+
case 'test.ts':
|
|
123
|
+
content = tsFile;
|
|
124
|
+
break;
|
|
125
|
+
case 'test.py':
|
|
126
|
+
content = pyFile;
|
|
127
|
+
break;
|
|
128
|
+
case 'utils1.ts':
|
|
129
|
+
content = multiDefFile1;
|
|
130
|
+
break;
|
|
131
|
+
case 'utils2.ts':
|
|
132
|
+
content = multiDefFile2;
|
|
133
|
+
break;
|
|
134
|
+
case 'consumer.ts':
|
|
135
|
+
content = noDefsOnlyCallsFile;
|
|
136
|
+
break;
|
|
137
|
+
case 'unused.ts':
|
|
138
|
+
content = noCallsOnlyDefsFile;
|
|
139
|
+
break;
|
|
140
|
+
case 'empty.ts':
|
|
141
|
+
content = emptyFile;
|
|
142
|
+
break;
|
|
143
|
+
default:
|
|
144
|
+
throw new Error(`Unexpected file: ${filePath}`);
|
|
145
|
+
}
|
|
146
|
+
// Match fs.readFileSync's behavior:
|
|
147
|
+
// - Return string if encoding is specified
|
|
148
|
+
// - Return Buffer if no encoding or encoding is null
|
|
149
|
+
if (typeof options === 'string') {
|
|
150
|
+
return content;
|
|
151
|
+
}
|
|
152
|
+
if (options && typeof options === 'object' && options.encoding) {
|
|
153
|
+
return content;
|
|
154
|
+
}
|
|
155
|
+
return Buffer.from(content);
|
|
156
|
+
}));
|
|
157
|
+
});
|
|
158
|
+
(0, bun_test_1.afterEach)(() => {
|
|
159
|
+
fsReadFileSyncSpy.mockReset();
|
|
160
|
+
});
|
|
161
|
+
bun_test_1.it.skip('should correctly identify tokens and calls in TypeScript', async () => {
|
|
162
|
+
const result = await (0, parse_1.getFileTokenScores)('/root', ['test.ts']);
|
|
163
|
+
// Check token identification
|
|
164
|
+
(0, bun_test_1.expect)(result.tokenScores['test.ts']).toHaveProperty('Greeter');
|
|
165
|
+
(0, bun_test_1.expect)(result.tokenScores['test.ts']).toHaveProperty('Greeting');
|
|
166
|
+
(0, bun_test_1.expect)(result.tokenScores['test.ts']).toHaveProperty('createGreeter');
|
|
167
|
+
(0, bun_test_1.expect)(result.tokenScores['test.ts']).toHaveProperty('greet');
|
|
168
|
+
(0, bun_test_1.expect)(result.tokenScores['test.ts']).toHaveProperty('printGreeting');
|
|
169
|
+
// Check calls
|
|
170
|
+
(0, bun_test_1.expect)(result.tokenCallers['test.ts']['Greeting']).toContain('test.ts');
|
|
171
|
+
(0, bun_test_1.expect)(result.tokenCallers['test.ts']['createGreeter']).toContain('test.ts');
|
|
172
|
+
(0, bun_test_1.expect)(result.tokenCallers['test.ts']['printGreeting']).toContain('test.ts');
|
|
173
|
+
(0, bun_test_1.expect)(result.tokenCallers['test.ts']['greet']).toContain('test.ts');
|
|
174
|
+
});
|
|
175
|
+
bun_test_1.it.skip('should correctly identify tokens and calls in Python', async () => {
|
|
176
|
+
const result = await (0, parse_1.getFileTokenScores)('/root', ['test.py']);
|
|
177
|
+
// Check token identification
|
|
178
|
+
(0, bun_test_1.expect)(result.tokenScores['test.py']).toHaveProperty('Greeter');
|
|
179
|
+
(0, bun_test_1.expect)(result.tokenScores['test.py']).toHaveProperty('Greeting');
|
|
180
|
+
(0, bun_test_1.expect)(result.tokenScores['test.py']).toHaveProperty('print_greeting');
|
|
181
|
+
(0, bun_test_1.expect)(result.tokenScores['test.py']).toHaveProperty('greet');
|
|
182
|
+
// Check calls
|
|
183
|
+
(0, bun_test_1.expect)(result.tokenCallers['test.py']['Greeting']).toContain('test.py');
|
|
184
|
+
(0, bun_test_1.expect)(result.tokenCallers['test.py']['print_greeting']).toContain('test.py');
|
|
185
|
+
(0, bun_test_1.expect)(result.tokenCallers['test.py']['greet']).toContain('test.py');
|
|
186
|
+
});
|
|
187
|
+
bun_test_1.it.skip('should use highest scoring definition when token is defined in multiple files', async () => {
|
|
188
|
+
const result = await (0, parse_1.getFileTokenScores)('/root', [
|
|
189
|
+
'utils1.ts',
|
|
190
|
+
'deep/utils2.ts',
|
|
191
|
+
'consumer.ts',
|
|
192
|
+
]);
|
|
193
|
+
// utils1.ts has a higher score (shallower path)
|
|
194
|
+
(0, bun_test_1.expect)(result.tokenCallers['utils1.ts']['utils']).toContain('consumer.ts');
|
|
195
|
+
// utils2.ts should not be chosen as the defining file
|
|
196
|
+
(0, bun_test_1.expect)(result.tokenCallers['deep/utils2.ts']['utils']).toBeUndefined();
|
|
197
|
+
});
|
|
198
|
+
(0, bun_test_1.it)('should handle files with no definitions', async () => {
|
|
199
|
+
const result = await (0, parse_1.getFileTokenScores)('/root', ['consumer.ts']);
|
|
200
|
+
// No definitions, only calls
|
|
201
|
+
(0, bun_test_1.expect)(Object.keys(result.tokenScores['consumer.ts'])).toHaveLength(0);
|
|
202
|
+
// External calls are tracked but not mapped to callers since definition is unknown
|
|
203
|
+
(0, bun_test_1.expect)(Object.keys(result.tokenCallers)).toHaveLength(0);
|
|
204
|
+
});
|
|
205
|
+
bun_test_1.it.skip('should handle files with no calls', async () => {
|
|
206
|
+
const result = await (0, parse_1.getFileTokenScores)('/root', ['unused.ts']);
|
|
207
|
+
// Has definition but no calls
|
|
208
|
+
(0, bun_test_1.expect)(result.tokenScores['unused.ts']).toHaveProperty('unusedFunction');
|
|
209
|
+
(0, bun_test_1.expect)(result.tokenCallers['unused.ts']['unusedFunction']).toEqual([]);
|
|
210
|
+
});
|
|
211
|
+
(0, bun_test_1.it)('should handle empty files', async () => {
|
|
212
|
+
const result = await (0, parse_1.getFileTokenScores)('/root', ['empty.ts']);
|
|
213
|
+
// No definitions or calls
|
|
214
|
+
(0, bun_test_1.expect)(Object.keys(result.tokenScores['empty.ts'] || {})).toHaveLength(0);
|
|
215
|
+
(0, bun_test_1.expect)(Object.keys(result.tokenCallers)).toHaveLength(0);
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
//# sourceMappingURL=parse.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.test.js","sourceRoot":"","sources":["../parse.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,2CAA4B;AAC5B,uCAA6E;AAC7E,mCAA4C;AAG5C,YAAY;AACZ,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Bd,CAAA;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBd,CAAA;AAED,MAAM,aAAa,GAAG;;;;CAIrB,CAAA;AAED,MAAM,aAAa,GAAG;;;;;CAKrB,CAAA;AAED,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAA;AAED,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAA;AAED,MAAM,SAAS,GAAG,EAAE,CAAA;AAEpB,uBAAuB;AACvB,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qDAAqD,CAAC,EAC3E,MAAM,CACP,CAAA;AAED,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iDAAiD,CAAC,EACvE,MAAM,CACP,CAAA;AAED,IAAA,mBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,iBAAiB,GAAG,IAAA,gBAAK,EAAC,EAAE,EAAE,cAAc,CAAC,CAAA;IAEnD,IAAA,qBAAU,EAAC,GAAG,EAAE;QACd,mBAAmB;QACnB,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CACpC,QAA8B,EAC9B,OAGQ,EACS,EAAE;YACnB,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;YAEvC,2BAA2B;YAC3B,IAAI,WAAW,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC;gBAC5D,OAAO,WAAW,CAAA;YACpB,CAAC;YACD,IAAI,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;gBACxD,OAAO,WAAW,CAAA;YACpB,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;YAC3C,IAAI,OAAe,CAAA;YACnB,QAAQ,QAAQ,EAAE,CAAC;gBACjB,KAAK,SAAS;oBACZ,OAAO,GAAG,MAAM,CAAA;oBAChB,MAAK;gBACP,KAAK,SAAS;oBACZ,OAAO,GAAG,MAAM,CAAA;oBAChB,MAAK;gBACP,KAAK,WAAW;oBACd,OAAO,GAAG,aAAa,CAAA;oBACvB,MAAK;gBACP,KAAK,WAAW;oBACd,OAAO,GAAG,aAAa,CAAA;oBACvB,MAAK;gBACP,KAAK,aAAa;oBAChB,OAAO,GAAG,mBAAmB,CAAA;oBAC7B,MAAK;gBACP,KAAK,WAAW;oBACd,OAAO,GAAG,mBAAmB,CAAA;oBAC7B,MAAK;gBACP,KAAK,UAAU;oBACb,OAAO,GAAG,SAAS,CAAA;oBACnB,MAAK;gBACP;oBACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAA;YACnD,CAAC;YAED,oCAAoC;YACpC,2CAA2C;YAC3C,qDAAqD;YACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAA;YAChB,CAAC;YACD,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC/D,OAAO,OAAO,CAAA;YAChB,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7B,CAAC,CAA2B,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,IAAA,oBAAS,EAAC,GAAG,EAAE;QACb,iBAAiB,CAAC,SAAS,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,aAAE,CAAC,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;QAE7D,6BAA6B;QAC7B,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;QAC/D,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QAChE,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;QACrE,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC7D,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;QAErE,cAAc;QACd,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACvE,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC5E,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC5E,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,aAAE,CAAC,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;QAE7D,6BAA6B;QAC7B,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;QAC/D,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QAChE,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAA;QACtE,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE7D,cAAc;QACd,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACvE,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAChE,SAAS,CACV,CAAA;QACD,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,aAAE,CAAC,IAAI,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAClG,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,EAAE;YAC/C,WAAW;YACX,gBAAgB;YAChB,aAAa;SACd,CAAC,CAAA;QAEF,gDAAgD;QAChD,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAC1E,sDAAsD;QACtD,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;QAEjE,6BAA6B;QAC7B,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACtE,mFAAmF;QACnF,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,aAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;QAE/D,8BAA8B;QAC9B,IAAA,iBAAM,EAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAA;QACxE,IAAA,iBAAM,EAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;QAE9D,0BAA0B;QAC1B,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACzE,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// CommonJS version to avoid module system issues
|
|
3
|
+
const Parser = require('tree-sitter');
|
|
4
|
+
const { Query } = require('tree-sitter');
|
|
5
|
+
const treeSitterTypescript = require('tree-sitter-typescript');
|
|
6
|
+
async function main() {
|
|
7
|
+
const parser = new Parser();
|
|
8
|
+
const language = treeSitterTypescript.typescript;
|
|
9
|
+
parser.setLanguage(language);
|
|
10
|
+
// Simple TypeScript code
|
|
11
|
+
const sourceCode = `
|
|
12
|
+
interface Greeter {
|
|
13
|
+
greet(): string;
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
const tree = parser.parse(sourceCode);
|
|
17
|
+
// Simple query to find interface name
|
|
18
|
+
const queryString = '(interface_declaration name: (type_identifier) @interface_name)';
|
|
19
|
+
const query = new Query(parser.getLanguage(), queryString);
|
|
20
|
+
const captures = query.captures(tree.rootNode);
|
|
21
|
+
// Log for debugging
|
|
22
|
+
console.log('Tree:', tree.rootNode.toString());
|
|
23
|
+
console.log('Captures:', captures);
|
|
24
|
+
console.log('First capture text:', captures[0]?.node.text);
|
|
25
|
+
}
|
|
26
|
+
main().catch(console.error);
|
|
27
|
+
//# sourceMappingURL=tree-sitter-test.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-sitter-test.cjs","sourceRoot":"","sources":["../../scripts/tree-sitter-test.cjs"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AACrC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AACxC,MAAM,oBAAoB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAA;AAE9D,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAA;IAEhD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAE5B,yBAAyB;IACzB,MAAM,UAAU,GAAG;;;;CAIpB,CAAA;IACC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAErC,sCAAsC;IACtC,MAAM,WAAW,GAAG,iEAAiE,CAAA;IACrF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE9C,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-sitter-test.d.cts","sourceRoot":"","sources":["../../scripts/tree-sitter-test.cjs"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-sitter-test.d.ts","sourceRoot":"","sources":["../../scripts/tree-sitter-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const tree_sitter_1 = __importDefault(require("tree-sitter"));
|
|
30
|
+
const tree_sitter_2 = require("tree-sitter");
|
|
31
|
+
async function main() {
|
|
32
|
+
const parser = new tree_sitter_1.default();
|
|
33
|
+
const languageModule = await Promise.resolve().then(() => __importStar(require('tree-sitter-typescript')));
|
|
34
|
+
// Cast to any to avoid type mismatch between tree-sitter and tree-sitter-typescript
|
|
35
|
+
const language = languageModule.typescript;
|
|
36
|
+
parser.setLanguage(language);
|
|
37
|
+
// Simple TypeScript code
|
|
38
|
+
const sourceCode = `
|
|
39
|
+
interface Greeter {
|
|
40
|
+
greet(): string;
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
const tree = parser.parse(sourceCode);
|
|
44
|
+
// Simple query to find interface name
|
|
45
|
+
const queryString = '(interface_declaration name: (type_identifier) @interface_name)';
|
|
46
|
+
const query = new tree_sitter_2.Query(parser.getLanguage(), queryString);
|
|
47
|
+
const captures = query.captures(tree.rootNode);
|
|
48
|
+
// Log for debugging
|
|
49
|
+
console.log('Tree:', tree.rootNode.toString());
|
|
50
|
+
console.log('Captures:', captures);
|
|
51
|
+
console.log('First capture text:', captures[0]?.node.text);
|
|
52
|
+
}
|
|
53
|
+
main().catch(console.error);
|
|
54
|
+
//# sourceMappingURL=tree-sitter-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-sitter-test.js","sourceRoot":"","sources":["../../scripts/tree-sitter-test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgC;AAChC,6CAAmC;AAEnC,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,qBAAM,EAAE,CAAA;IAC3B,MAAM,cAAc,GAAG,wDAAa,wBAAwB,GAAC,CAAA;IAC7D,oFAAoF;IACpF,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAiB,CAAA;IAEjD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAE5B,yBAAyB;IACzB,MAAM,UAAU,GAAG;;;;CAIpB,CAAA;IACC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAErC,sCAAsC;IACtC,MAAM,WAAW,GAAG,iEAAiE,CAAA;IACrF,MAAM,KAAK,GAAG,IAAI,mBAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE9C,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-parser.d.ts","sourceRoot":"","sources":["../test-parser.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const Parser = require('tree-sitter');
|
|
3
|
+
const { typescript } = require('tree-sitter-typescript');
|
|
4
|
+
const { Query } = require('tree-sitter');
|
|
5
|
+
async function testParser() {
|
|
6
|
+
try {
|
|
7
|
+
const parser = new Parser();
|
|
8
|
+
console.log('Parser created');
|
|
9
|
+
parser.setLanguage(typescript);
|
|
10
|
+
console.log('Language set');
|
|
11
|
+
const sourceCode = `
|
|
12
|
+
interface Greeter {
|
|
13
|
+
greet(): string;
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
console.log('Source code:', sourceCode);
|
|
17
|
+
const tree = parser.parse(sourceCode);
|
|
18
|
+
console.log('Parse tree:', tree);
|
|
19
|
+
if (!tree) {
|
|
20
|
+
throw new Error('Parser returned undefined tree');
|
|
21
|
+
}
|
|
22
|
+
const queryString = '(interface_declaration name: (type_identifier) @interface_name)';
|
|
23
|
+
const query = new Query(parser.getLanguage(), queryString);
|
|
24
|
+
const captures = query.captures(tree.rootNode);
|
|
25
|
+
console.log('Tree:', tree.rootNode.toString());
|
|
26
|
+
console.log('Captures:', captures);
|
|
27
|
+
console.log('First capture text:', captures[0]?.node.text);
|
|
28
|
+
if (captures.length !== 1 || captures[0].node.text !== 'Greeter') {
|
|
29
|
+
throw new Error('Expected to find "Greeter" interface name');
|
|
30
|
+
}
|
|
31
|
+
console.log('Test passed!');
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
console.error('Error:', err);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
testParser().catch(err => {
|
|
39
|
+
console.error('Unhandled error:', err);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=test-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-parser.js","sourceRoot":"","sources":["../test-parser.js"],"names":[],"mappings":";AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACtC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACzD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEzC,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE9B,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE5B,MAAM,UAAU,GAAG;;;;CAItB,CAAC;QACE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,WAAW,GAAG,iEAAiE,CAAC;QACtF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -10,4 +10,14 @@
|
|
|
10
10
|
name: (identifier) @identifier
|
|
11
11
|
)
|
|
12
12
|
|
|
13
|
-
;
|
|
13
|
+
; Method calls
|
|
14
|
+
(invocation_expression
|
|
15
|
+
function: (identifier) @call.identifier)
|
|
16
|
+
|
|
17
|
+
(invocation_expression
|
|
18
|
+
function: (member_access_expression
|
|
19
|
+
name: (identifier) @call.identifier))
|
|
20
|
+
|
|
21
|
+
; Constructor calls
|
|
22
|
+
(object_creation_expression
|
|
23
|
+
type: (identifier) @call.identifier)
|