@colbymchenry/codegraph 0.7.2 → 0.7.4
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/README.md +57 -0
- package/dist/bin/codegraph.js +39 -4
- package/dist/bin/codegraph.js.map +1 -1
- package/dist/bin/node-version-check.d.ts +17 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +39 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +46 -18
- package/dist/context/index.js.map +1 -1
- package/dist/db/index.d.ts +9 -2
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +17 -7
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +11 -1
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/queries.d.ts +16 -0
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +144 -7
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +6 -3
- package/dist/db/sqlite-adapter.d.ts +23 -4
- package/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/dist/db/sqlite-adapter.js +51 -11
- package/dist/db/sqlite-adapter.js.map +1 -1
- package/dist/extraction/grammars.d.ts +1 -1
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +12 -4
- package/dist/extraction/grammars.js.map +1 -1
- package/dist/extraction/index.d.ts +20 -0
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +111 -7
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/index.d.ts.map +1 -1
- package/dist/extraction/languages/index.js +2 -0
- package/dist/extraction/languages/index.js.map +1 -1
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +139 -0
- package/dist/extraction/languages/scala.js.map +1 -0
- package/dist/extraction/parse-worker.js +39 -2
- package/dist/extraction/parse-worker.js.map +1 -1
- package/dist/extraction/svelte-extractor.d.ts +9 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -1
- package/dist/extraction/svelte-extractor.js +42 -0
- package/dist/extraction/svelte-extractor.js.map +1 -1
- package/dist/extraction/tree-sitter.d.ts +32 -16
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +266 -67
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/vue-extractor.d.ts +36 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +163 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/graph/traversal.d.ts.map +1 -1
- package/dist/graph/traversal.js +7 -1
- package/dist/graph/traversal.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +6 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +19 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +59 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +46 -8
- package/dist/mcp/tools.js.map +1 -1
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -1
- package/dist/resolution/frameworks/csharp.js +72 -78
- package/dist/resolution/frameworks/csharp.js.map +1 -1
- package/dist/resolution/frameworks/express.d.ts.map +1 -1
- package/dist/resolution/frameworks/express.js +47 -26
- package/dist/resolution/frameworks/express.js.map +1 -1
- package/dist/resolution/frameworks/go.d.ts.map +1 -1
- package/dist/resolution/frameworks/go.js +41 -72
- package/dist/resolution/frameworks/go.js.map +1 -1
- package/dist/resolution/frameworks/index.d.ts +7 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/dist/resolution/frameworks/index.js +13 -1
- package/dist/resolution/frameworks/index.js.map +1 -1
- package/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/dist/resolution/frameworks/java.js +36 -40
- package/dist/resolution/frameworks/java.js.map +1 -1
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -1
- package/dist/resolution/frameworks/laravel.js +94 -44
- package/dist/resolution/frameworks/laravel.js.map +1 -1
- package/dist/resolution/frameworks/python.d.ts.map +1 -1
- package/dist/resolution/frameworks/python.js +163 -151
- package/dist/resolution/frameworks/python.js.map +1 -1
- package/dist/resolution/frameworks/react.d.ts.map +1 -1
- package/dist/resolution/frameworks/react.js +3 -2
- package/dist/resolution/frameworks/react.js.map +1 -1
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -1
- package/dist/resolution/frameworks/ruby.js +39 -91
- package/dist/resolution/frameworks/ruby.js.map +1 -1
- package/dist/resolution/frameworks/rust.d.ts.map +1 -1
- package/dist/resolution/frameworks/rust.js +50 -43
- package/dist/resolution/frameworks/rust.js.map +1 -1
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -1
- package/dist/resolution/frameworks/svelte.js +3 -2
- package/dist/resolution/frameworks/svelte.js.map +1 -1
- package/dist/resolution/frameworks/swift.d.ts.map +1 -1
- package/dist/resolution/frameworks/swift.js +54 -46
- package/dist/resolution/frameworks/swift.js.map +1 -1
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +306 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +17 -1
- package/dist/resolution/import-resolver.d.ts.map +1 -1
- package/dist/resolution/import-resolver.js +256 -46
- package/dist/resolution/import-resolver.js.map +1 -1
- package/dist/resolution/index.d.ts +8 -0
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +60 -1
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/name-matcher.d.ts.map +1 -1
- package/dist/resolution/name-matcher.js +21 -0
- package/dist/resolution/name-matcher.js.map +1 -1
- package/dist/resolution/path-aliases.d.ts +68 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +238 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +27 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +441 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/types.d.ts +54 -3
- package/dist/resolution/types.d.ts.map +1 -1
- package/dist/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/types.d.ts +11 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +68 -1
- package/dist/types.js.map +1 -1
- package/package.json +5 -2
- package/dist/installer/banner.d.ts +0 -40
- package/dist/installer/banner.d.ts.map +0 -1
- package/dist/installer/banner.js +0 -165
- package/dist/installer/banner.js.map +0 -1
- package/dist/installer/prompts.d.ts +0 -18
- package/dist/installer/prompts.d.ts.map +0 -1
- package/dist/installer/prompts.js +0 -113
- package/dist/installer/prompts.js.map +0 -1
- package/dist/sentry.d.ts +0 -24
- package/dist/sentry.d.ts.map +0 -1
- package/dist/sentry.js +0 -166
- package/dist/sentry.js.map +0 -1
- package/dist/sync/git-hooks.d.ts +0 -66
- package/dist/sync/git-hooks.d.ts.map +0 -1
- package/dist/sync/git-hooks.js +0 -281
- package/dist/sync/git-hooks.js.map +0 -1
- package/dist/vectors/embedder.d.ts +0 -140
- package/dist/vectors/embedder.d.ts.map +0 -1
- package/dist/vectors/embedder.js +0 -338
- package/dist/vectors/embedder.js.map +0 -1
- package/dist/vectors/index.d.ts +0 -9
- package/dist/vectors/index.d.ts.map +0 -1
- package/dist/vectors/index.js +0 -20
- package/dist/vectors/index.js.map +0 -1
- package/dist/vectors/manager.d.ts +0 -119
- package/dist/vectors/manager.d.ts.map +0 -1
- package/dist/vectors/manager.js +0 -274
- package/dist/vectors/manager.js.map +0 -1
- package/dist/vectors/search.d.ts +0 -134
- package/dist/vectors/search.d.ts.map +0 -1
- package/dist/vectors/search.js +0 -411
- package/dist/vectors/search.js.map +0 -1
- package/dist/visualizer/public/index.html +0 -1994
- package/dist/visualizer/server.d.ts +0 -46
- package/dist/visualizer/server.d.ts.map +0 -1
- package/dist/visualizer/server.js +0 -491
- 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,30 @@ 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
|
+
/**
|
|
98
|
+
* Result of framework-specific file extraction.
|
|
99
|
+
*/
|
|
100
|
+
export interface FrameworkExtractionResult {
|
|
101
|
+
/** Framework-specific nodes (e.g. routes) */
|
|
102
|
+
nodes: Node[];
|
|
103
|
+
/** Framework-specific unresolved references (e.g. route -> handler) */
|
|
104
|
+
references: UnresolvedRef[];
|
|
81
105
|
}
|
|
82
106
|
/**
|
|
83
107
|
* Framework-specific resolver
|
|
@@ -85,12 +109,21 @@ export interface ResolutionContext {
|
|
|
85
109
|
export interface FrameworkResolver {
|
|
86
110
|
/** Framework name */
|
|
87
111
|
name: string;
|
|
88
|
-
/**
|
|
112
|
+
/** Languages this framework applies to. If omitted, applies to all languages. */
|
|
113
|
+
languages?: Language[];
|
|
114
|
+
/** Detect if project uses this framework (project-level, called once at startup) */
|
|
89
115
|
detect(context: ResolutionContext): boolean;
|
|
90
116
|
/** Resolve a reference using framework-specific patterns */
|
|
91
117
|
resolve(ref: UnresolvedRef, context: ResolutionContext): ResolvedRef | null;
|
|
92
|
-
/**
|
|
93
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Extract framework-specific nodes and references from a file.
|
|
120
|
+
*
|
|
121
|
+
* Returns route nodes, middleware nodes, etc., plus unresolved references
|
|
122
|
+
* that link those nodes to handlers (view classes, controller methods,
|
|
123
|
+
* included modules). Unresolved references flow into the normal resolution
|
|
124
|
+
* pipeline; the framework's own `resolve()` is one of the strategies tried.
|
|
125
|
+
*/
|
|
126
|
+
extract?(filePath: string, content: string): FrameworkExtractionResult;
|
|
94
127
|
}
|
|
95
128
|
/**
|
|
96
129
|
* Import mapping from a file
|
|
@@ -109,4 +142,22 @@ export interface ImportMapping {
|
|
|
109
142
|
/** Resolved file path (if local) */
|
|
110
143
|
resolvedPath?: string;
|
|
111
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Re-export from a file: `export { x } from './other'` or
|
|
147
|
+
* `export * from './other'`. Used by the resolver to chase
|
|
148
|
+
* symbols through barrel files.
|
|
149
|
+
*/
|
|
150
|
+
export type ReExport = {
|
|
151
|
+
kind: 'named';
|
|
152
|
+
/** Name as exported by THIS file. */
|
|
153
|
+
exportedName: string;
|
|
154
|
+
/** Name in the upstream module (differs when renamed: `as`). */
|
|
155
|
+
originalName: string;
|
|
156
|
+
/** Module specifier of the upstream module. */
|
|
157
|
+
source: string;
|
|
158
|
+
} | {
|
|
159
|
+
kind: 'wildcard';
|
|
160
|
+
/** Module specifier of the upstream module. */
|
|
161
|
+
source: string;
|
|
162
|
+
};
|
|
112
163
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,aAAa,EAAE,QAAQ,CAAC;IACxB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,QAAQ,EAAE,aAAa,CAAC;IACxB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,UAAU,EAAE,aAAa,GAAG,QAAQ,GAAG,gBAAgB,GAAG,WAAW,GAAG,OAAO,GAAG,iBAAiB,GAAG,WAAW,CAAC;CACnH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,2CAA2C;IAC3C,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,iBAAiB;IACjB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;IACzC,4BAA4B;IAC5B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;IACrC,sCAAsC;IACtC,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;IACvD,8BAA8B;IAC9B,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IAC3C,6BAA6B;IAC7B,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,wBAAwB;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,uBAAuB;IACvB,cAAc,IAAI,MAAM,CAAC;IACzB,oBAAoB;IACpB,WAAW,IAAI,MAAM,EAAE,CAAC;IACxB,mEAAmE;IACnE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;IAC/C,4CAA4C;IAC5C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,aAAa,EAAE,CAAC;
|
|
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"}
|