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.
Files changed (173) hide show
  1. package/dist/cli-handlers/api-key.d.ts +1 -1
  2. package/dist/cli-handlers/api-key.js +1 -1
  3. package/dist/cli-handlers/api-key.js.map +1 -1
  4. package/dist/cli-handlers/initialization-flow.d.ts +1 -0
  5. package/dist/cli-handlers/initialization-flow.js +24 -0
  6. package/dist/cli-handlers/initialization-flow.js.map +1 -0
  7. package/dist/cli-modules/command-processor.d.ts +12 -0
  8. package/dist/cli-modules/command-processor.js +129 -0
  9. package/dist/cli-modules/command-processor.js.map +1 -0
  10. package/dist/cli-modules/input-handler.d.ts +20 -0
  11. package/dist/cli-modules/input-handler.js +98 -0
  12. package/dist/cli-modules/input-handler.js.map +1 -0
  13. package/dist/cli-modules/readline-handler.d.ts +17 -0
  14. package/dist/cli-modules/readline-handler.js +134 -0
  15. package/dist/cli-modules/readline-handler.js.map +1 -0
  16. package/dist/cli-modules/signal-handler.d.ts +13 -0
  17. package/dist/cli-modules/signal-handler.js +69 -0
  18. package/dist/cli-modules/signal-handler.js.map +1 -0
  19. package/dist/cli-modules/types.d.ts +51 -0
  20. package/dist/cli-modules/types.js +3 -0
  21. package/dist/cli-modules/types.js.map +1 -0
  22. package/dist/cli-modules/websocket-handler.d.ts +16 -0
  23. package/dist/cli-modules/websocket-handler.js +53 -0
  24. package/dist/cli-modules/websocket-handler.js.map +1 -0
  25. package/dist/cli.d.ts +6 -1
  26. package/dist/cli.js +60 -7
  27. package/dist/cli.js.map +1 -1
  28. package/dist/client.d.ts +1 -0
  29. package/dist/client.js +3 -0
  30. package/dist/client.js.map +1 -1
  31. package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts +12 -0
  32. package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts.map +1 -0
  33. package/dist/code-map/__mocks__/tree-sitter-typescript.js +14 -0
  34. package/dist/code-map/__mocks__/tree-sitter-typescript.js.map +1 -0
  35. package/dist/code-map/__mocks__/wasm-mock.d.ts +2 -0
  36. package/dist/code-map/__mocks__/wasm-mock.d.ts.map +1 -0
  37. package/dist/code-map/__mocks__/wasm-mock.js +3 -0
  38. package/dist/code-map/__mocks__/wasm-mock.js.map +1 -0
  39. package/dist/code-map/__tests__/parse.test.d.ts +2 -0
  40. package/dist/code-map/__tests__/parse.test.d.ts.map +1 -0
  41. package/dist/code-map/__tests__/parse.test.js +231 -0
  42. package/dist/code-map/__tests__/parse.test.js.map +1 -0
  43. package/dist/code-map/__tests__/test-langs/consumer.d.ts +2 -0
  44. package/dist/code-map/__tests__/test-langs/consumer.d.ts.map +1 -0
  45. package/dist/code-map/__tests__/test-langs/consumer.js +6 -0
  46. package/dist/code-map/__tests__/test-langs/consumer.js.map +1 -0
  47. package/dist/code-map/__tests__/test-langs/empty.d.ts +1 -0
  48. package/dist/code-map/__tests__/test-langs/empty.d.ts.map +1 -0
  49. package/dist/code-map/__tests__/test-langs/empty.js +2 -0
  50. package/dist/code-map/__tests__/test-langs/empty.js.map +1 -0
  51. package/dist/code-map/__tests__/test-langs/test.d.ts +12 -0
  52. package/dist/code-map/__tests__/test-langs/test.d.ts.map +1 -0
  53. package/dist/code-map/__tests__/test-langs/test.js +23 -0
  54. package/dist/code-map/__tests__/test-langs/test.js.map +1 -0
  55. package/dist/code-map/__tests__/test-langs/unused.d.ts +2 -0
  56. package/dist/code-map/__tests__/test-langs/unused.d.ts.map +1 -0
  57. package/dist/code-map/__tests__/test-langs/unused.js +7 -0
  58. package/dist/code-map/__tests__/test-langs/unused.js.map +1 -0
  59. package/dist/code-map/__tests__/test-langs/utils1.d.ts +2 -0
  60. package/dist/code-map/__tests__/test-langs/utils1.d.ts.map +1 -0
  61. package/dist/code-map/__tests__/test-langs/utils1.js +7 -0
  62. package/dist/code-map/__tests__/test-langs/utils1.js.map +1 -0
  63. package/dist/code-map/__tests__/test-langs/utils2.d.ts +2 -0
  64. package/dist/code-map/__tests__/test-langs/utils2.d.ts.map +1 -0
  65. package/dist/code-map/__tests__/test-langs/utils2.js +8 -0
  66. package/dist/code-map/__tests__/test-langs/utils2.js.map +1 -0
  67. package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts +2 -0
  68. package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts.map +1 -0
  69. package/dist/code-map/__tests__/tree-sitter-minimal.test.js +79 -0
  70. package/dist/code-map/__tests__/tree-sitter-minimal.test.js.map +1 -0
  71. package/dist/code-map/jest.config.d.ts +4 -0
  72. package/dist/code-map/jest.config.d.ts.map +1 -0
  73. package/dist/code-map/jest.config.js +18 -0
  74. package/dist/code-map/jest.config.js.map +1 -0
  75. package/dist/code-map/languages.d.ts +1 -2
  76. package/dist/code-map/languages.d.ts.map +1 -1
  77. package/dist/code-map/languages.js +2 -1
  78. package/dist/code-map/languages.js.map +1 -1
  79. package/dist/code-map/parse.d.ts +14 -4
  80. package/dist/code-map/parse.d.ts.map +1 -1
  81. package/dist/code-map/parse.js +91 -38
  82. package/dist/code-map/parse.js.map +1 -1
  83. package/dist/code-map/parse.test.d.ts +2 -0
  84. package/dist/code-map/parse.test.d.ts.map +1 -0
  85. package/dist/code-map/parse.test.js +218 -0
  86. package/dist/code-map/parse.test.js.map +1 -0
  87. package/dist/code-map/scripts/tree-sitter-test.cjs +27 -0
  88. package/dist/code-map/scripts/tree-sitter-test.cjs.map +1 -0
  89. package/dist/code-map/scripts/tree-sitter-test.d.cts +2 -0
  90. package/dist/code-map/scripts/tree-sitter-test.d.cts.map +1 -0
  91. package/dist/code-map/scripts/tree-sitter-test.d.ts +2 -0
  92. package/dist/code-map/scripts/tree-sitter-test.d.ts.map +1 -0
  93. package/dist/code-map/scripts/tree-sitter-test.js +54 -0
  94. package/dist/code-map/scripts/tree-sitter-test.js.map +1 -0
  95. package/dist/code-map/test-parser.d.ts +2 -0
  96. package/dist/code-map/test-parser.d.ts.map +1 -0
  97. package/dist/code-map/test-parser.js +42 -0
  98. package/dist/code-map/test-parser.js.map +1 -0
  99. package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +6 -1
  100. package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +11 -1
  101. package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +13 -1
  102. package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +1 -0
  103. package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +5 -8
  104. package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +5 -2
  105. package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +7 -0
  106. package/dist/code-map/tsconfig.tsbuildinfo +1 -1
  107. package/dist/common/actions.d.ts +58 -32
  108. package/dist/common/bigquery/client.d.ts +15 -0
  109. package/dist/common/bigquery/client.js +265 -0
  110. package/dist/common/bigquery/client.js.map +1 -0
  111. package/dist/common/bigquery/schema.d.ts +55 -0
  112. package/dist/common/bigquery/schema.js +24 -0
  113. package/dist/common/bigquery/schema.js.map +1 -0
  114. package/dist/common/constants/tools.d.ts +1 -0
  115. package/dist/common/constants/tools.js +1 -0
  116. package/dist/common/constants/tools.js.map +1 -1
  117. package/dist/common/constants.d.ts +1 -1
  118. package/dist/common/constants.js +18 -7
  119. package/dist/common/constants.js.map +1 -1
  120. package/dist/common/project-file-tree.js +12 -0
  121. package/dist/common/project-file-tree.js.map +1 -1
  122. package/dist/common/types/agent-state.d.ts +13 -8
  123. package/dist/common/types/message.d.ts +6 -6
  124. package/dist/common/util/__tests__/saxy.test.js +140 -21
  125. package/dist/common/util/__tests__/saxy.test.js.map +1 -1
  126. package/dist/common/util/credentials.d.ts +2 -2
  127. package/dist/common/util/file-metadata.d.ts +9 -0
  128. package/dist/common/util/file-metadata.js +24 -0
  129. package/dist/common/util/file-metadata.js.map +1 -0
  130. package/dist/common/util/file.d.ts +3 -0
  131. package/dist/common/util/file.js +3 -0
  132. package/dist/common/util/file.js.map +1 -1
  133. package/dist/common/util/promise.js +1 -1
  134. package/dist/common/util/promise.js.map +1 -1
  135. package/dist/common/util/saxy.d.ts +2 -1
  136. package/dist/common/util/saxy.js +51 -18
  137. package/dist/common/util/saxy.js.map +1 -1
  138. package/dist/common/websockets/websocket-schema.d.ts +118 -68
  139. package/dist/display.d.ts +2 -0
  140. package/dist/display.js +8 -0
  141. package/dist/display.js.map +1 -1
  142. package/dist/index.js +4 -80
  143. package/dist/index.js.map +1 -1
  144. package/dist/menu.js +35 -110
  145. package/dist/menu.js.map +1 -1
  146. package/dist/project-files.d.ts +2 -0
  147. package/dist/project-files.js +3 -2
  148. package/dist/project-files.js.map +1 -1
  149. package/dist/tool-handlers.js +3 -0
  150. package/dist/tool-handlers.js.map +1 -1
  151. package/dist/utils/__tests__/tool-renderers.test.js +27 -1
  152. package/dist/utils/__tests__/tool-renderers.test.js.map +1 -1
  153. package/dist/utils/__tests__/xml-stream-parser.test.js +26 -0
  154. package/dist/utils/__tests__/xml-stream-parser.test.js.map +1 -1
  155. package/dist/utils/detect-shell.js +1 -1
  156. package/dist/utils/detect-shell.js.map +1 -1
  157. package/dist/utils/logger.d.ts +1 -1
  158. package/dist/utils/logger.js +3 -6
  159. package/dist/utils/logger.js.map +1 -1
  160. package/dist/utils/spinner.d.ts +1 -0
  161. package/dist/utils/spinner.js +8 -1
  162. package/dist/utils/spinner.js.map +1 -1
  163. package/dist/utils/system-info.js +2 -2
  164. package/dist/utils/system-info.js.map +1 -1
  165. package/dist/utils/terminal.d.ts +2 -2
  166. package/dist/utils/terminal.js +46 -34
  167. package/dist/utils/terminal.js.map +1 -1
  168. package/dist/utils/tool-renderers.js +25 -5
  169. package/dist/utils/tool-renderers.js.map +1 -1
  170. package/dist/utils/xml-stream-parser.js.map +1 -1
  171. package/dist/workers/project-context.js +4 -1
  172. package/dist/workers/project-context.js.map +1 -1
  173. package/package.json +3 -1
@@ -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
- if (!!(0, languages_1.getLanguageConfig)(fullPath)) {
41
- const { identifiers, calls, numLines } = await parseTokens(fullPath);
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
- console.log('externalCalls', externalCalls);
71
- // Save exportedTokens to a file
72
- const exportedTokensFilePath = path.join(projectRoot, 'exported-tokens.json');
73
- try {
74
- fs.writeFileSync(exportedTokensFilePath, JSON.stringify(tokenScores, null, 2));
75
- console.log(`Exported tokens saved to ${exportedTokensFilePath}`);
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 languageConfig = await (0, languages_1.getLanguageConfig)(filePath);
85
- if (languageConfig) {
86
- const { parser, query } = languageConfig;
87
- try {
88
- const sourceCode = fs.readFileSync(filePath, 'utf8');
89
- const numLines = sourceCode.match(/\n/g)?.length ?? 0 + 1;
90
- const parseResults = parseFile(parser, query, sourceCode);
91
- const identifiers = parseResults.identifier;
92
- const calls = parseResults['call.identifier'];
93
- return {
94
- numLines,
95
- identifiers: identifiers ?? [],
96
- calls: calls ?? [],
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
- catch (e) {
100
- if (exports.DEBUG_PARSING) {
101
- console.error(`Error parsing query: ${e}`);
102
- console.log(filePath);
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AASA,gDA8DC;AAED,kCA4BC;AArGD,uCAAwB;AACxB,2CAA4B;AAG5B,2CAA+C;AAElC,QAAA,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;AAEvE,KAAK,UAAU,kBAAkB,CAAC,WAAmB,EAAE,SAAmB;IAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC5B,MAAM,WAAW,GAAwD,EAAE,CAAA;IAC3E,MAAM,aAAa,GAAgC,EAAE,CAAA;IAErD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACjD,IAAI,CAAC,CAAC,IAAA,6BAAiB,EAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAA;YAEpE,MAAM,kBAAkB,GAAgC,EAAE,CAAA;YAC1D,WAAW,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAA;YAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;YACzB,MAAM,cAAc,GAClB,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YAE/D,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACxC,kBAAkB,CAAC,UAAU,CAAC,GAAG,cAAc,CAAA;gBACjD,CAAC;YACH,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC1C,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,SAAQ;YAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,IAAI,qBAAa,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC1B,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,CAAC,MAAM,aAAa,OAAO,GAAG,SAAS,IAAI,CAAC,CAAA;QAE3E,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;QAE3C,gCAAgC;QAChC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACtC,WAAW,EACX,sBAAsB,CACvB,CAAA;QACD,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CACd,sBAAsB,EACtB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CACrC,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,sBAAsB,EAAE,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,KAAK,EAAE,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,MAAM,cAAc,GAAG,MAAM,IAAA,6BAAiB,EAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAA;QAExC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAA;YACzD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;YACzD,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAA;YAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAA;YAC7C,OAAO;gBACL,QAAQ;gBACR,WAAW,EAAE,WAAW,IAAI,EAAE;gBAC9B,KAAK,EAAE,KAAK,IAAI,EAAE;aACnB,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,qBAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAA;gBAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,EAAc;QAC3B,KAAK,EAAE,EAAc;KACtB,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAChB,MAAc,EACd,KAAmB,EACnB,UAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE;QAC/C,UAAU,EAAE,IAAI,GAAG,IAAI;KACxB,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAgC,EAAE,CAAA;IAE9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QACnB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parse.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tree-sitter-test.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-sitter-test.d.cts","sourceRoot":"","sources":["../../scripts/tree-sitter-test.cjs"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tree-sitter-test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test-parser.d.ts.map
@@ -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"}
@@ -8,4 +8,9 @@
8
8
 
9
9
  (enum_specifier name: (type_identifier) @identifier)
10
10
 
11
- ; TODO add calls
11
+ ; Function calls
12
+ (call_expression
13
+ function: (identifier) @call.identifier)
14
+
15
+ (call_expression
16
+ function: (field_expression field: (field_identifier) @call.identifier))
@@ -10,4 +10,14 @@
10
10
  name: (identifier) @identifier
11
11
  )
12
12
 
13
- ; TODO add calls
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)