@colbymchenry/codegraph 0.7.3 → 0.7.6

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 (176) hide show
  1. package/README.md +57 -0
  2. package/dist/bin/codegraph.js +39 -4
  3. package/dist/bin/codegraph.js.map +1 -1
  4. package/dist/bin/node-version-check.d.ts +17 -0
  5. package/dist/bin/node-version-check.d.ts.map +1 -0
  6. package/dist/bin/node-version-check.js +39 -0
  7. package/dist/bin/node-version-check.js.map +1 -0
  8. package/dist/db/index.d.ts +9 -2
  9. package/dist/db/index.d.ts.map +1 -1
  10. package/dist/db/index.js +17 -7
  11. package/dist/db/index.js.map +1 -1
  12. package/dist/db/migrations.d.ts +1 -1
  13. package/dist/db/migrations.d.ts.map +1 -1
  14. package/dist/db/migrations.js +11 -1
  15. package/dist/db/migrations.js.map +1 -1
  16. package/dist/db/queries.d.ts +16 -0
  17. package/dist/db/queries.d.ts.map +1 -1
  18. package/dist/db/queries.js +144 -7
  19. package/dist/db/queries.js.map +1 -1
  20. package/dist/db/schema.sql +6 -3
  21. package/dist/db/sqlite-adapter.d.ts +23 -4
  22. package/dist/db/sqlite-adapter.d.ts.map +1 -1
  23. package/dist/db/sqlite-adapter.js +51 -11
  24. package/dist/db/sqlite-adapter.js.map +1 -1
  25. package/dist/extraction/grammars.d.ts +1 -1
  26. package/dist/extraction/grammars.d.ts.map +1 -1
  27. package/dist/extraction/grammars.js +12 -4
  28. package/dist/extraction/grammars.js.map +1 -1
  29. package/dist/extraction/index.d.ts +20 -0
  30. package/dist/extraction/index.d.ts.map +1 -1
  31. package/dist/extraction/index.js +111 -7
  32. package/dist/extraction/index.js.map +1 -1
  33. package/dist/extraction/languages/index.d.ts.map +1 -1
  34. package/dist/extraction/languages/index.js +2 -0
  35. package/dist/extraction/languages/index.js.map +1 -1
  36. package/dist/extraction/languages/scala.d.ts +3 -0
  37. package/dist/extraction/languages/scala.d.ts.map +1 -0
  38. package/dist/extraction/languages/scala.js +139 -0
  39. package/dist/extraction/languages/scala.js.map +1 -0
  40. package/dist/extraction/parse-worker.js +39 -2
  41. package/dist/extraction/parse-worker.js.map +1 -1
  42. package/dist/extraction/tree-sitter.d.ts +32 -16
  43. package/dist/extraction/tree-sitter.d.ts.map +1 -1
  44. package/dist/extraction/tree-sitter.js +266 -67
  45. package/dist/extraction/tree-sitter.js.map +1 -1
  46. package/dist/extraction/vue-extractor.d.ts +36 -0
  47. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  48. package/dist/extraction/vue-extractor.js +163 -0
  49. package/dist/extraction/vue-extractor.js.map +1 -0
  50. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  51. package/dist/index.d.ts +7 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +9 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/mcp/index.d.ts.map +1 -1
  56. package/dist/mcp/index.js +6 -1
  57. package/dist/mcp/index.js.map +1 -1
  58. package/dist/mcp/server-instructions.d.ts +19 -0
  59. package/dist/mcp/server-instructions.d.ts.map +1 -0
  60. package/dist/mcp/server-instructions.js +59 -0
  61. package/dist/mcp/server-instructions.js.map +1 -0
  62. package/dist/mcp/tools.d.ts.map +1 -1
  63. package/dist/mcp/tools.js +13 -2
  64. package/dist/mcp/tools.js.map +1 -1
  65. package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  66. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  67. package/dist/resolution/frameworks/cargo-workspace.js +225 -0
  68. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  69. package/dist/resolution/frameworks/csharp.d.ts.map +1 -1
  70. package/dist/resolution/frameworks/csharp.js +72 -78
  71. package/dist/resolution/frameworks/csharp.js.map +1 -1
  72. package/dist/resolution/frameworks/express.d.ts.map +1 -1
  73. package/dist/resolution/frameworks/express.js +47 -26
  74. package/dist/resolution/frameworks/express.js.map +1 -1
  75. package/dist/resolution/frameworks/go.d.ts.map +1 -1
  76. package/dist/resolution/frameworks/go.js +41 -72
  77. package/dist/resolution/frameworks/go.js.map +1 -1
  78. package/dist/resolution/frameworks/index.d.ts +7 -0
  79. package/dist/resolution/frameworks/index.d.ts.map +1 -1
  80. package/dist/resolution/frameworks/index.js +13 -1
  81. package/dist/resolution/frameworks/index.js.map +1 -1
  82. package/dist/resolution/frameworks/java.d.ts.map +1 -1
  83. package/dist/resolution/frameworks/java.js +36 -40
  84. package/dist/resolution/frameworks/java.js.map +1 -1
  85. package/dist/resolution/frameworks/laravel.d.ts.map +1 -1
  86. package/dist/resolution/frameworks/laravel.js +94 -44
  87. package/dist/resolution/frameworks/laravel.js.map +1 -1
  88. package/dist/resolution/frameworks/python.d.ts.map +1 -1
  89. package/dist/resolution/frameworks/python.js +163 -151
  90. package/dist/resolution/frameworks/python.js.map +1 -1
  91. package/dist/resolution/frameworks/react.d.ts.map +1 -1
  92. package/dist/resolution/frameworks/react.js +3 -2
  93. package/dist/resolution/frameworks/react.js.map +1 -1
  94. package/dist/resolution/frameworks/ruby.d.ts.map +1 -1
  95. package/dist/resolution/frameworks/ruby.js +39 -91
  96. package/dist/resolution/frameworks/ruby.js.map +1 -1
  97. package/dist/resolution/frameworks/rust.d.ts.map +1 -1
  98. package/dist/resolution/frameworks/rust.js +85 -60
  99. package/dist/resolution/frameworks/rust.js.map +1 -1
  100. package/dist/resolution/frameworks/svelte.d.ts.map +1 -1
  101. package/dist/resolution/frameworks/svelte.js +3 -2
  102. package/dist/resolution/frameworks/svelte.js.map +1 -1
  103. package/dist/resolution/frameworks/swift.d.ts.map +1 -1
  104. package/dist/resolution/frameworks/swift.js +54 -46
  105. package/dist/resolution/frameworks/swift.js.map +1 -1
  106. package/dist/resolution/frameworks/vue.d.ts +9 -0
  107. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  108. package/dist/resolution/frameworks/vue.js +306 -0
  109. package/dist/resolution/frameworks/vue.js.map +1 -0
  110. package/dist/resolution/import-resolver.d.ts +17 -1
  111. package/dist/resolution/import-resolver.d.ts.map +1 -1
  112. package/dist/resolution/import-resolver.js +256 -46
  113. package/dist/resolution/import-resolver.js.map +1 -1
  114. package/dist/resolution/index.d.ts +8 -0
  115. package/dist/resolution/index.d.ts.map +1 -1
  116. package/dist/resolution/index.js +78 -1
  117. package/dist/resolution/index.js.map +1 -1
  118. package/dist/resolution/name-matcher.d.ts.map +1 -1
  119. package/dist/resolution/name-matcher.js +21 -0
  120. package/dist/resolution/name-matcher.js.map +1 -1
  121. package/dist/resolution/path-aliases.d.ts +68 -0
  122. package/dist/resolution/path-aliases.d.ts.map +1 -0
  123. package/dist/resolution/path-aliases.js +238 -0
  124. package/dist/resolution/path-aliases.js.map +1 -0
  125. package/dist/resolution/strip-comments.d.ts +27 -0
  126. package/dist/resolution/strip-comments.d.ts.map +1 -0
  127. package/dist/resolution/strip-comments.js +441 -0
  128. package/dist/resolution/strip-comments.js.map +1 -0
  129. package/dist/resolution/types.d.ts +63 -3
  130. package/dist/resolution/types.d.ts.map +1 -1
  131. package/dist/search/query-parser.d.ts +57 -0
  132. package/dist/search/query-parser.d.ts.map +1 -0
  133. package/dist/search/query-parser.js +177 -0
  134. package/dist/search/query-parser.js.map +1 -0
  135. package/dist/types.d.ts +11 -4
  136. package/dist/types.d.ts.map +1 -1
  137. package/dist/types.js +68 -1
  138. package/dist/types.js.map +1 -1
  139. package/package.json +6 -3
  140. package/dist/installer/banner.d.ts +0 -40
  141. package/dist/installer/banner.d.ts.map +0 -1
  142. package/dist/installer/banner.js +0 -165
  143. package/dist/installer/banner.js.map +0 -1
  144. package/dist/installer/prompts.d.ts +0 -18
  145. package/dist/installer/prompts.d.ts.map +0 -1
  146. package/dist/installer/prompts.js +0 -113
  147. package/dist/installer/prompts.js.map +0 -1
  148. package/dist/sentry.d.ts +0 -24
  149. package/dist/sentry.d.ts.map +0 -1
  150. package/dist/sentry.js +0 -166
  151. package/dist/sentry.js.map +0 -1
  152. package/dist/sync/git-hooks.d.ts +0 -66
  153. package/dist/sync/git-hooks.d.ts.map +0 -1
  154. package/dist/sync/git-hooks.js +0 -281
  155. package/dist/sync/git-hooks.js.map +0 -1
  156. package/dist/vectors/embedder.d.ts +0 -140
  157. package/dist/vectors/embedder.d.ts.map +0 -1
  158. package/dist/vectors/embedder.js +0 -338
  159. package/dist/vectors/embedder.js.map +0 -1
  160. package/dist/vectors/index.d.ts +0 -9
  161. package/dist/vectors/index.d.ts.map +0 -1
  162. package/dist/vectors/index.js +0 -20
  163. package/dist/vectors/index.js.map +0 -1
  164. package/dist/vectors/manager.d.ts +0 -119
  165. package/dist/vectors/manager.d.ts.map +0 -1
  166. package/dist/vectors/manager.js +0 -274
  167. package/dist/vectors/manager.js.map +0 -1
  168. package/dist/vectors/search.d.ts +0 -134
  169. package/dist/vectors/search.d.ts.map +0 -1
  170. package/dist/vectors/search.js +0 -411
  171. package/dist/vectors/search.js.map +0 -1
  172. package/dist/visualizer/public/index.html +0 -1994
  173. package/dist/visualizer/server.d.ts +0 -46
  174. package/dist/visualizer/server.d.ts.map +0 -1
  175. package/dist/visualizer/server.js +0 -491
  176. package/dist/visualizer/server.js.map +0 -1
@@ -0,0 +1,441 @@
1
+ "use strict";
2
+ /**
3
+ * Per-language comment stripper for framework route extractors.
4
+ *
5
+ * Replaces comment characters and string-literal contents that hide
6
+ * routing-shaped text with spaces (NOT removal) so that source offsets
7
+ * are preserved. This means `match.index` from a regex run on the
8
+ * stripped output still maps to the same line in the original source.
9
+ *
10
+ * Example:
11
+ * Input: "x = 1 # path('/fake/', V)\n real = 2"
12
+ * Output: "x = 1 \n real = 2"
13
+ *
14
+ * Why strip strings/docstrings as well as comments? Python module/class
15
+ * docstrings are a common source of false positives — they often contain
16
+ * `path('/example/', View)` examples in usage docs. We treat triple-quoted
17
+ * strings the same as comments. Single-line strings stay intact (a `#`
18
+ * inside a Python string is NOT a comment).
19
+ *
20
+ * Scope: this is a pragmatic, regex-supporting helper, not a full parser.
21
+ * It does NOT try to detect JS regex literals, Python f-string expressions,
22
+ * or shell-style heredocs. Those edge cases are not load-bearing for the
23
+ * `path(...)`, `Route::get(...)`, `app.get(...)` style patterns that
24
+ * framework extractors scan for.
25
+ */
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.stripCommentsForRegex = stripCommentsForRegex;
28
+ function stripCommentsForRegex(content, lang) {
29
+ switch (lang) {
30
+ case 'python':
31
+ return stripPython(content);
32
+ case 'ruby':
33
+ return stripRuby(content);
34
+ case 'rust':
35
+ return stripRust(content);
36
+ case 'php':
37
+ return stripPhp(content);
38
+ case 'go':
39
+ return stripGo(content);
40
+ case 'javascript':
41
+ case 'typescript':
42
+ case 'java':
43
+ case 'csharp':
44
+ case 'swift':
45
+ return stripCStyle(content, /* allowSingleQuoteStrings */ lang === 'javascript' || lang === 'typescript');
46
+ default:
47
+ return content;
48
+ }
49
+ }
50
+ /**
51
+ * Replace every char in a slice with spaces, but keep newlines so line
52
+ * numbers computed downstream remain valid.
53
+ */
54
+ function blankRange(buf, start, end, src) {
55
+ for (let i = start; i < end; i++) {
56
+ buf[i] = src[i] === '\n' ? '\n' : ' ';
57
+ }
58
+ }
59
+ // ---------- Python ----------
60
+ function stripPython(src) {
61
+ const out = src.split('');
62
+ let i = 0;
63
+ const n = src.length;
64
+ while (i < n) {
65
+ const c = src[i];
66
+ const c2 = src[i + 1] ?? '';
67
+ const c3 = src[i + 2] ?? '';
68
+ // Triple-quoted string: """...""" or '''...'''
69
+ if ((c === '"' || c === "'") && c2 === c && c3 === c) {
70
+ const quote = c;
71
+ const start = i;
72
+ i += 3;
73
+ while (i < n) {
74
+ if (src[i] === '\\' && i + 1 < n) {
75
+ i += 2;
76
+ continue;
77
+ }
78
+ if (src[i] === quote && src[i + 1] === quote && src[i + 2] === quote) {
79
+ i += 3;
80
+ break;
81
+ }
82
+ i++;
83
+ }
84
+ blankRange(out, start, i, src);
85
+ continue;
86
+ }
87
+ // Single-line string: '...' or "..."
88
+ if (c === '"' || c === "'") {
89
+ const quote = c;
90
+ i++;
91
+ while (i < n && src[i] !== quote) {
92
+ if (src[i] === '\\' && i + 1 < n) {
93
+ i += 2;
94
+ continue;
95
+ }
96
+ if (src[i] === '\n')
97
+ break; // unterminated
98
+ i++;
99
+ }
100
+ if (i < n && src[i] === quote)
101
+ i++;
102
+ continue;
103
+ }
104
+ // Line comment
105
+ if (c === '#') {
106
+ const start = i;
107
+ while (i < n && src[i] !== '\n')
108
+ i++;
109
+ blankRange(out, start, i, src);
110
+ continue;
111
+ }
112
+ i++;
113
+ }
114
+ return out.join('');
115
+ }
116
+ // ---------- Ruby ----------
117
+ function stripRuby(src) {
118
+ const out = src.split('');
119
+ let i = 0;
120
+ const n = src.length;
121
+ let atLineStart = true;
122
+ while (i < n) {
123
+ const c = src[i];
124
+ // =begin / =end block comments must be at start of line (after optional whitespace)
125
+ if (atLineStart && c === '=' && src.startsWith('=begin', i)) {
126
+ const start = i;
127
+ // consume to matching =end at line start
128
+ i += '=begin'.length;
129
+ while (i < n) {
130
+ if (src[i] === '\n') {
131
+ // check next line for =end
132
+ let j = i + 1;
133
+ while (j < n && (src[j] === ' ' || src[j] === '\t'))
134
+ j++;
135
+ if (src.startsWith('=end', j)) {
136
+ i = j + '=end'.length;
137
+ // consume rest of that line
138
+ while (i < n && src[i] !== '\n')
139
+ i++;
140
+ break;
141
+ }
142
+ }
143
+ i++;
144
+ }
145
+ blankRange(out, start, i, src);
146
+ atLineStart = i > 0 && src[i - 1] === '\n';
147
+ continue;
148
+ }
149
+ // String literals
150
+ if (c === '"' || c === "'") {
151
+ const quote = c;
152
+ i++;
153
+ while (i < n && src[i] !== quote) {
154
+ if (src[i] === '\\' && i + 1 < n) {
155
+ i += 2;
156
+ continue;
157
+ }
158
+ if (src[i] === '\n')
159
+ break;
160
+ i++;
161
+ }
162
+ if (i < n && src[i] === quote)
163
+ i++;
164
+ atLineStart = false;
165
+ continue;
166
+ }
167
+ // Line comment
168
+ if (c === '#') {
169
+ const start = i;
170
+ while (i < n && src[i] !== '\n')
171
+ i++;
172
+ blankRange(out, start, i, src);
173
+ atLineStart = false;
174
+ continue;
175
+ }
176
+ if (c === '\n') {
177
+ atLineStart = true;
178
+ i++;
179
+ continue;
180
+ }
181
+ if (c === ' ' || c === '\t') {
182
+ // whitespace doesn't change atLineStart
183
+ i++;
184
+ continue;
185
+ }
186
+ atLineStart = false;
187
+ i++;
188
+ }
189
+ return out.join('');
190
+ }
191
+ // ---------- C-style (JS/TS/Java/C#/Swift) ----------
192
+ function stripCStyle(src, allowSingleQuoteStrings) {
193
+ const out = src.split('');
194
+ let i = 0;
195
+ const n = src.length;
196
+ while (i < n) {
197
+ const c = src[i];
198
+ const c2 = src[i + 1] ?? '';
199
+ // Block comment
200
+ if (c === '/' && c2 === '*') {
201
+ const start = i;
202
+ i += 2;
203
+ while (i < n && !(src[i] === '*' && src[i + 1] === '/'))
204
+ i++;
205
+ if (i < n)
206
+ i += 2;
207
+ blankRange(out, start, i, src);
208
+ continue;
209
+ }
210
+ // Line comment
211
+ if (c === '/' && c2 === '/') {
212
+ const start = i;
213
+ while (i < n && src[i] !== '\n')
214
+ i++;
215
+ blankRange(out, start, i, src);
216
+ continue;
217
+ }
218
+ // String literals
219
+ if (c === '"' || (allowSingleQuoteStrings && c === "'") || c === '`') {
220
+ const quote = c;
221
+ i++;
222
+ while (i < n && src[i] !== quote) {
223
+ if (src[i] === '\\' && i + 1 < n) {
224
+ i += 2;
225
+ continue;
226
+ }
227
+ // Template literal can span lines; regular strings break on newline (treat as unterminated)
228
+ if (quote !== '`' && src[i] === '\n')
229
+ break;
230
+ i++;
231
+ }
232
+ if (i < n && src[i] === quote)
233
+ i++;
234
+ continue;
235
+ }
236
+ i++;
237
+ }
238
+ return out.join('');
239
+ }
240
+ // ---------- PHP ----------
241
+ function stripPhp(src) {
242
+ const out = src.split('');
243
+ let i = 0;
244
+ const n = src.length;
245
+ while (i < n) {
246
+ const c = src[i];
247
+ const c2 = src[i + 1] ?? '';
248
+ // Block comment
249
+ if (c === '/' && c2 === '*') {
250
+ const start = i;
251
+ i += 2;
252
+ while (i < n && !(src[i] === '*' && src[i + 1] === '/'))
253
+ i++;
254
+ if (i < n)
255
+ i += 2;
256
+ blankRange(out, start, i, src);
257
+ continue;
258
+ }
259
+ // // line comment
260
+ if (c === '/' && c2 === '/') {
261
+ const start = i;
262
+ while (i < n && src[i] !== '\n')
263
+ i++;
264
+ blankRange(out, start, i, src);
265
+ continue;
266
+ }
267
+ // # line comment (PHP supports both)
268
+ if (c === '#') {
269
+ const start = i;
270
+ while (i < n && src[i] !== '\n')
271
+ i++;
272
+ blankRange(out, start, i, src);
273
+ continue;
274
+ }
275
+ // String literals: ', ", ` (PHP doesn't really use backticks for strings,
276
+ // but it does have shell-exec backticks; treating as a string is fine here)
277
+ if (c === '"' || c === "'" || c === '`') {
278
+ const quote = c;
279
+ i++;
280
+ while (i < n && src[i] !== quote) {
281
+ if (src[i] === '\\' && i + 1 < n) {
282
+ i += 2;
283
+ continue;
284
+ }
285
+ if (src[i] === '\n')
286
+ break;
287
+ i++;
288
+ }
289
+ if (i < n && src[i] === quote)
290
+ i++;
291
+ continue;
292
+ }
293
+ i++;
294
+ }
295
+ return out.join('');
296
+ }
297
+ // ---------- Go ----------
298
+ function stripGo(src) {
299
+ const out = src.split('');
300
+ let i = 0;
301
+ const n = src.length;
302
+ while (i < n) {
303
+ const c = src[i];
304
+ const c2 = src[i + 1] ?? '';
305
+ // Block comment
306
+ if (c === '/' && c2 === '*') {
307
+ const start = i;
308
+ i += 2;
309
+ while (i < n && !(src[i] === '*' && src[i + 1] === '/'))
310
+ i++;
311
+ if (i < n)
312
+ i += 2;
313
+ blankRange(out, start, i, src);
314
+ continue;
315
+ }
316
+ // Line comment
317
+ if (c === '/' && c2 === '/') {
318
+ const start = i;
319
+ while (i < n && src[i] !== '\n')
320
+ i++;
321
+ blankRange(out, start, i, src);
322
+ continue;
323
+ }
324
+ // Raw string with backticks (no escapes, can span lines)
325
+ if (c === '`') {
326
+ i++;
327
+ while (i < n && src[i] !== '`')
328
+ i++;
329
+ if (i < n)
330
+ i++;
331
+ continue;
332
+ }
333
+ // Interpreted string with double quotes
334
+ if (c === '"') {
335
+ i++;
336
+ while (i < n && src[i] !== '"') {
337
+ if (src[i] === '\\' && i + 1 < n) {
338
+ i += 2;
339
+ continue;
340
+ }
341
+ if (src[i] === '\n')
342
+ break;
343
+ i++;
344
+ }
345
+ if (i < n && src[i] === '"')
346
+ i++;
347
+ continue;
348
+ }
349
+ // Rune literal with single quotes (handle as a tiny string)
350
+ if (c === "'") {
351
+ i++;
352
+ while (i < n && src[i] !== "'") {
353
+ if (src[i] === '\\' && i + 1 < n) {
354
+ i += 2;
355
+ continue;
356
+ }
357
+ if (src[i] === '\n')
358
+ break;
359
+ i++;
360
+ }
361
+ if (i < n && src[i] === "'")
362
+ i++;
363
+ continue;
364
+ }
365
+ i++;
366
+ }
367
+ return out.join('');
368
+ }
369
+ // ---------- Rust ----------
370
+ function stripRust(src) {
371
+ const out = src.split('');
372
+ let i = 0;
373
+ const n = src.length;
374
+ while (i < n) {
375
+ const c = src[i];
376
+ const c2 = src[i + 1] ?? '';
377
+ // Nested block comment /* ... /* ... */ ... */
378
+ if (c === '/' && c2 === '*') {
379
+ const start = i;
380
+ i += 2;
381
+ let depth = 1;
382
+ while (i < n && depth > 0) {
383
+ if (src[i] === '/' && src[i + 1] === '*') {
384
+ depth++;
385
+ i += 2;
386
+ }
387
+ else if (src[i] === '*' && src[i + 1] === '/') {
388
+ depth--;
389
+ i += 2;
390
+ }
391
+ else {
392
+ i++;
393
+ }
394
+ }
395
+ blankRange(out, start, i, src);
396
+ continue;
397
+ }
398
+ // Line comment
399
+ if (c === '/' && c2 === '/') {
400
+ const start = i;
401
+ while (i < n && src[i] !== '\n')
402
+ i++;
403
+ blankRange(out, start, i, src);
404
+ continue;
405
+ }
406
+ // String literals
407
+ if (c === '"') {
408
+ i++;
409
+ while (i < n && src[i] !== '"') {
410
+ if (src[i] === '\\' && i + 1 < n) {
411
+ i += 2;
412
+ continue;
413
+ }
414
+ i++;
415
+ }
416
+ if (i < n && src[i] === '"')
417
+ i++;
418
+ continue;
419
+ }
420
+ // Char literal — keep simple: skip 'x' or '\x'
421
+ if (c === "'") {
422
+ // Could be a lifetime, e.g. 'a, but those don't contain routing text
423
+ i++;
424
+ while (i < n && src[i] !== "'") {
425
+ if (src[i] === '\\' && i + 1 < n) {
426
+ i += 2;
427
+ continue;
428
+ }
429
+ if (src[i] === '\n')
430
+ break;
431
+ i++;
432
+ }
433
+ if (i < n && src[i] === "'")
434
+ i++;
435
+ continue;
436
+ }
437
+ i++;
438
+ }
439
+ return out.join('');
440
+ }
441
+ //# sourceMappingURL=strip-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip-comments.js","sourceRoot":"","sources":["../../src/resolution/strip-comments.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,39 @@ export interface ResolutionContext {
78
78
  getNodesByLowerName(lowerName: string): Node[];
79
79
  /** Get cached import mappings for a file */
80
80
  getImportMappings(filePath: string, language: Language): ImportMapping[];
81
+ /**
82
+ * Project import-path aliases (tsconfig/jsconfig `paths`). Returns
83
+ * `null` when the project doesn't define any. Cached per resolver
84
+ * instance — safe to call from any resolver code path. Optional so
85
+ * existing test fixtures and external context implementations
86
+ * compile without modification; production resolver implements it.
87
+ */
88
+ getProjectAliases?(): import('./path-aliases').AliasMap | null;
89
+ /**
90
+ * Re-exports declared by a file (`export { x } from './other'`,
91
+ * `export * from './other'`). Empty array when the file has none.
92
+ * Optional so older callers compile; the import resolver follows
93
+ * re-export chains when this is provided.
94
+ */
95
+ getReExports?(filePath: string, language: Language): ReExport[];
96
+ /**
97
+ * List immediate subdirectories of `relativePath` (relative to the
98
+ * project root). Returns an empty array when the path doesn't exist
99
+ * or isn't a directory. Used by framework resolvers that need to
100
+ * walk build-system metadata (e.g. Cargo workspace globs). Optional
101
+ * so external context implementations and test fixtures compile
102
+ * without modification.
103
+ */
104
+ listDirectories?(relativePath: string): string[];
105
+ }
106
+ /**
107
+ * Result of framework-specific file extraction.
108
+ */
109
+ export interface FrameworkExtractionResult {
110
+ /** Framework-specific nodes (e.g. routes) */
111
+ nodes: Node[];
112
+ /** Framework-specific unresolved references (e.g. route -> handler) */
113
+ references: UnresolvedRef[];
81
114
  }
82
115
  /**
83
116
  * Framework-specific resolver
@@ -85,12 +118,21 @@ export interface ResolutionContext {
85
118
  export interface FrameworkResolver {
86
119
  /** Framework name */
87
120
  name: string;
88
- /** Detect if project uses this framework */
121
+ /** Languages this framework applies to. If omitted, applies to all languages. */
122
+ languages?: Language[];
123
+ /** Detect if project uses this framework (project-level, called once at startup) */
89
124
  detect(context: ResolutionContext): boolean;
90
125
  /** Resolve a reference using framework-specific patterns */
91
126
  resolve(ref: UnresolvedRef, context: ResolutionContext): ResolvedRef | null;
92
- /** Extract additional nodes specific to this framework */
93
- extractNodes?(filePath: string, content: string): Node[];
127
+ /**
128
+ * Extract framework-specific nodes and references from a file.
129
+ *
130
+ * Returns route nodes, middleware nodes, etc., plus unresolved references
131
+ * that link those nodes to handlers (view classes, controller methods,
132
+ * included modules). Unresolved references flow into the normal resolution
133
+ * pipeline; the framework's own `resolve()` is one of the strategies tried.
134
+ */
135
+ extract?(filePath: string, content: string): FrameworkExtractionResult;
94
136
  }
95
137
  /**
96
138
  * Import mapping from a file
@@ -109,4 +151,22 @@ export interface ImportMapping {
109
151
  /** Resolved file path (if local) */
110
152
  resolvedPath?: string;
111
153
  }
154
+ /**
155
+ * Re-export from a file: `export { x } from './other'` or
156
+ * `export * from './other'`. Used by the resolver to chase
157
+ * symbols through barrel files.
158
+ */
159
+ export type ReExport = {
160
+ kind: 'named';
161
+ /** Name as exported by THIS file. */
162
+ exportedName: string;
163
+ /** Name in the upstream module (differs when renamed: `as`). */
164
+ originalName: string;
165
+ /** Module specifier of the upstream module. */
166
+ source: string;
167
+ } | {
168
+ kind: 'wildcard';
169
+ /** Module specifier of the upstream module. */
170
+ source: string;
171
+ };
112
172
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Field-qualified search query parser.
3
+ *
4
+ * Splits a raw query like
5
+ *
6
+ * kind:function name:auth path:src/api authenticate
7
+ *
8
+ * into structured filters (kind=function, name="auth", path prefix
9
+ * "src/api") plus the free-text portion ("authenticate") that goes
10
+ * to FTS. Free-text and filters compose: filters narrow the result
11
+ * set, FTS scores within the narrowed set.
12
+ *
13
+ * Recognised fields (case-insensitive, value is the rest until
14
+ * whitespace):
15
+ *
16
+ * kind: one of function|method|class|interface|struct|...
17
+ * lang: one of typescript|python|go|... (alias: language:)
18
+ * path: case-insensitive substring of file_path
19
+ * name: case-insensitive substring of the symbol's name
20
+ *
21
+ * Unknown field prefixes (e.g. `foo:bar`) are passed through to FTS
22
+ * as plain text — that's how someone searching for `TODO:` gets a
23
+ * result instead of a parse error.
24
+ *
25
+ * Quoting:
26
+ * kind:function path:"src/some path/with spaces" → handled by stripping
27
+ * the surrounding double quotes from the value (single token only,
28
+ * no nested escapes).
29
+ */
30
+ import type { NodeKind, Language } from '../types';
31
+ export interface ParsedQuery {
32
+ /** Free-text portion to feed to FTS / LIKE. May be empty. */
33
+ text: string;
34
+ /** kind: filters (OR'd). Empty when none specified. */
35
+ kinds: NodeKind[];
36
+ /** lang:/language: filters (OR'd). Empty when none specified. */
37
+ languages: Language[];
38
+ /** path: filters (OR'd, case-insensitive substring of file_path). Empty when none. */
39
+ pathFilters: string[];
40
+ /** name: filters (OR'd, case-insensitive substring of node.name). */
41
+ nameFilters: string[];
42
+ }
43
+ /**
44
+ * Parse a raw query into structured filters + remaining text.
45
+ * Always returns a value; never throws.
46
+ */
47
+ export declare function parseQuery(raw: string): ParsedQuery;
48
+ /**
49
+ * Damerau-Levenshtein-ish bounded edit distance. Returns `maxDist + 1`
50
+ * as soon as the distance is known to exceed `maxDist`; that early-exit
51
+ * makes the fuzzy fallback cheap even over tens of thousands of names.
52
+ *
53
+ * Pure DP, O(min(len(a), len(b))) memory. Compares case-folded inputs;
54
+ * callers should pass `lowercase(name)` strings.
55
+ */
56
+ export declare function boundedEditDistance(a: string, b: string, maxDist: number): number;
57
+ //# sourceMappingURL=query-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-parser.d.ts","sourceRoot":"","sources":["../../src/search/query-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,iEAAiE;IACjE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,sFAAsF;IACtF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAiBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAiFnD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA2BjF"}