codesift-mcp 0.8.10 → 0.8.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +2 -1
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +52 -9
- package/dist/cli/setup.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +126 -1
- package/dist/register-tools.js.map +1 -1
- package/dist/search/model2vec-tokenize.d.ts +22 -0
- package/dist/search/model2vec-tokenize.d.ts.map +1 -0
- package/dist/search/model2vec-tokenize.js +140 -0
- package/dist/search/model2vec-tokenize.js.map +1 -0
- package/dist/search/semantic.d.ts.map +1 -1
- package/dist/search/semantic.js +7 -0
- package/dist/search/semantic.js.map +1 -1
- package/dist/search/static-embedding-provider.d.ts +24 -0
- package/dist/search/static-embedding-provider.d.ts.map +1 -0
- package/dist/search/static-embedding-provider.js +157 -0
- package/dist/search/static-embedding-provider.js.map +1 -0
- package/dist/storage/_shared.d.ts.map +1 -1
- package/dist/storage/_shared.js +4 -1
- package/dist/storage/_shared.js.map +1 -1
- package/dist/storage/group-registry.d.ts +51 -0
- package/dist/storage/group-registry.d.ts.map +1 -0
- package/dist/storage/group-registry.js +263 -0
- package/dist/storage/group-registry.js.map +1 -0
- package/dist/storage/hash-snapshot.d.ts +36 -0
- package/dist/storage/hash-snapshot.d.ts.map +1 -0
- package/dist/storage/hash-snapshot.js +101 -0
- package/dist/storage/hash-snapshot.js.map +1 -0
- package/dist/storage/usage-stats.d.ts +8 -0
- package/dist/storage/usage-stats.d.ts.map +1 -1
- package/dist/storage/usage-stats.js +74 -24
- package/dist/storage/usage-stats.js.map +1 -1
- package/dist/storage/usage-tracker.d.ts +16 -0
- package/dist/storage/usage-tracker.d.ts.map +1 -1
- package/dist/storage/usage-tracker.js +23 -3
- package/dist/storage/usage-tracker.js.map +1 -1
- package/dist/tools/cross-repo-contract-tools.d.ts +137 -0
- package/dist/tools/cross-repo-contract-tools.d.ts.map +1 -0
- package/dist/tools/cross-repo-contract-tools.js +593 -0
- package/dist/tools/cross-repo-contract-tools.js.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer.d.ts +35 -0
- package/dist/tools/cross-repo-outbound-lexer.d.ts.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer.js +594 -0
- package/dist/tools/cross-repo-outbound-lexer.js.map +1 -0
- package/dist/tools/index-tools.d.ts +31 -2
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +463 -33
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/pg-introspect-tools.d.ts +147 -0
- package/dist/tools/pg-introspect-tools.d.ts.map +1 -0
- package/dist/tools/pg-introspect-tools.js +396 -0
- package/dist/tools/pg-introspect-tools.js.map +1 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/hf-download-stream.d.ts +21 -0
- package/dist/utils/hf-download-stream.d.ts.map +1 -0
- package/dist/utils/hf-download-stream.js +101 -0
- package/dist/utils/hf-download-stream.js.map +1 -0
- package/dist/utils/hf-hub-download.d.ts +8 -0
- package/dist/utils/hf-hub-download.d.ts.map +1 -0
- package/dist/utils/hf-hub-download.js +149 -0
- package/dist/utils/hf-hub-download.js.map +1 -0
- package/dist/utils/safetensors-loader.d.ts +9 -0
- package/dist/utils/safetensors-loader.d.ts.map +1 -0
- package/dist/utils/safetensors-loader.js +95 -0
- package/dist/utils/safetensors-loader.js.map +1 -0
- package/dist/utils/safetensors-meta-guard.d.ts +7 -0
- package/dist/utils/safetensors-meta-guard.d.ts.map +1 -0
- package/dist/utils/safetensors-meta-guard.js +50 -0
- package/dist/utils/safetensors-meta-guard.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight state-machine lexer for outbound HTTP call detection.
|
|
3
|
+
*
|
|
4
|
+
* Performs a single forward scan over JS/TS source, classifying each position as:
|
|
5
|
+
* code | string | template | regex | lineComment | blockComment
|
|
6
|
+
*
|
|
7
|
+
* At code positions only, detects `fetch(`, `axios.METHOD(`, `got.METHOD(` calls,
|
|
8
|
+
* then reads the immediately following string/template literal as the URL argument.
|
|
9
|
+
*
|
|
10
|
+
* This approach fixes C2 (inner braces in interpolation), C3 (regex literals
|
|
11
|
+
* not confused with comments), C4 (multi-line templates), C5 (wide-spaced concat),
|
|
12
|
+
* and C6 (no false positives from string-embedded call text).
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Classify whether the slash at `pos` (where source[pos] === '/') opens a
|
|
16
|
+
* regex literal. We look at the previous non-whitespace token kind:
|
|
17
|
+
* - After an identifier/literal/closing bracket → division operator (not regex)
|
|
18
|
+
* - After operator / keyword / open bracket / start → regex
|
|
19
|
+
*
|
|
20
|
+
* We scan backwards through `out` (already-processed output) for the last
|
|
21
|
+
* meaningful character.
|
|
22
|
+
*/
|
|
23
|
+
function isRegexStart(out) {
|
|
24
|
+
// Scan backwards through already-emitted output for last non-space char
|
|
25
|
+
for (let i = out.length - 1; i >= 0; i--) {
|
|
26
|
+
const c = out[i];
|
|
27
|
+
if (c === " " || c === "\t" || c === "\n" || c === "\r")
|
|
28
|
+
continue;
|
|
29
|
+
// Closing brackets / identifier chars → division
|
|
30
|
+
if (c === ")" || c === "]" || /[a-zA-Z0-9_$]/.test(c))
|
|
31
|
+
return false;
|
|
32
|
+
// Everything else (operators, opening brackets, etc.) → regex
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
// Start of file → regex
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// Main lexer
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
/**
|
|
42
|
+
* Lex `source` and return all detected outbound HTTP calls with their URL
|
|
43
|
+
* literal and metadata. Calls inside strings/templates/comments are skipped.
|
|
44
|
+
*/
|
|
45
|
+
export function findOutboundCalls(source) {
|
|
46
|
+
const results = [];
|
|
47
|
+
const n = source.length;
|
|
48
|
+
// out[] mirrors source character-by-character (same length) so we can
|
|
49
|
+
// track state of already-processed output for regex disambiguation.
|
|
50
|
+
// We use it only for the isRegexStart() backwards scan.
|
|
51
|
+
const out = [];
|
|
52
|
+
let i = 0;
|
|
53
|
+
let state = "code";
|
|
54
|
+
let line = 1;
|
|
55
|
+
// Template literal stack for nested ${...}
|
|
56
|
+
// Each entry records the brace depth at which we entered a ${} expression.
|
|
57
|
+
const templateStack = [];
|
|
58
|
+
let braceDepth = 0;
|
|
59
|
+
// Regex literal termination: track whether we just exited a [] character class
|
|
60
|
+
let inRegexClass = false;
|
|
61
|
+
function peek(offset = 1) {
|
|
62
|
+
return i + offset < n ? source[i + offset] : "";
|
|
63
|
+
}
|
|
64
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
65
|
+
// Read a string literal starting AFTER the opening quote (pos already past
|
|
66
|
+
// the quote). Returns raw content (excluding quotes) and advances `i`.
|
|
67
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
68
|
+
function readStringContent(quote) {
|
|
69
|
+
let raw = "";
|
|
70
|
+
while (i < n) {
|
|
71
|
+
const c = source[i];
|
|
72
|
+
if (c === "\\") {
|
|
73
|
+
raw += c;
|
|
74
|
+
i++;
|
|
75
|
+
if (i < n) {
|
|
76
|
+
raw += source[i];
|
|
77
|
+
if (source[i] === "\n")
|
|
78
|
+
line++;
|
|
79
|
+
i++;
|
|
80
|
+
}
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (c === quote) {
|
|
84
|
+
i++; // consume closing quote
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
if (c === "\n")
|
|
88
|
+
line++;
|
|
89
|
+
raw += c;
|
|
90
|
+
i++;
|
|
91
|
+
}
|
|
92
|
+
return raw;
|
|
93
|
+
}
|
|
94
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
95
|
+
// Read a template literal starting AFTER the opening backtick.
|
|
96
|
+
// Returns raw content (excluding backticks) including ${...} verbatim.
|
|
97
|
+
// Handles nested objects inside ${} via brace-depth tracking.
|
|
98
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
99
|
+
function readTemplateContent() {
|
|
100
|
+
let raw = "";
|
|
101
|
+
let depth = 0; // brace depth inside ${}
|
|
102
|
+
let inExpr = false;
|
|
103
|
+
while (i < n) {
|
|
104
|
+
const c = source[i];
|
|
105
|
+
if (!inExpr) {
|
|
106
|
+
if (c === "\\") {
|
|
107
|
+
raw += c;
|
|
108
|
+
i++;
|
|
109
|
+
if (i < n) {
|
|
110
|
+
raw += source[i];
|
|
111
|
+
if (source[i] === "\n")
|
|
112
|
+
line++;
|
|
113
|
+
i++;
|
|
114
|
+
}
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (c === "`") {
|
|
118
|
+
i++; // consume closing backtick
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
if (c === "$" && peek() === "{") {
|
|
122
|
+
raw += "${";
|
|
123
|
+
i += 2;
|
|
124
|
+
inExpr = true;
|
|
125
|
+
depth = 1;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (c === "\n")
|
|
129
|
+
line++;
|
|
130
|
+
raw += c;
|
|
131
|
+
i++;
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
// Inside ${...}
|
|
135
|
+
if (c === "{") {
|
|
136
|
+
depth++;
|
|
137
|
+
raw += c;
|
|
138
|
+
i++;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (c === "}") {
|
|
142
|
+
depth--;
|
|
143
|
+
raw += c;
|
|
144
|
+
i++;
|
|
145
|
+
if (depth === 0) {
|
|
146
|
+
inExpr = false;
|
|
147
|
+
}
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
// Track strings inside ${} so a "}" inside a string doesn't end the expr
|
|
151
|
+
if (c === '"' || c === "'") {
|
|
152
|
+
raw += c;
|
|
153
|
+
i++;
|
|
154
|
+
while (i < n) {
|
|
155
|
+
const sc = source[i];
|
|
156
|
+
raw += sc;
|
|
157
|
+
i++;
|
|
158
|
+
if (sc === "\\") {
|
|
159
|
+
if (i < n) {
|
|
160
|
+
raw += source[i];
|
|
161
|
+
i++;
|
|
162
|
+
}
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (sc === c)
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (c === "\n")
|
|
171
|
+
line++;
|
|
172
|
+
raw += c;
|
|
173
|
+
i++;
|
|
174
|
+
}
|
|
175
|
+
return raw;
|
|
176
|
+
}
|
|
177
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
178
|
+
// Skip whitespace (including newlines) at code level, return first non-ws
|
|
179
|
+
// index. Does NOT advance global `i`.
|
|
180
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
181
|
+
function skipWs(start) {
|
|
182
|
+
let p = start;
|
|
183
|
+
while (p < n) {
|
|
184
|
+
const c = source[p];
|
|
185
|
+
if (c === " " || c === "\t" || c === "\n" || c === "\r") {
|
|
186
|
+
p++;
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
return p;
|
|
192
|
+
}
|
|
193
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
194
|
+
// After finding a callee + "(" at code level, try to read the URL argument.
|
|
195
|
+
// `i` should be positioned right after the "(" (already consumed).
|
|
196
|
+
// Returns the UrlLiteral or null if the first non-ws token is not a quote.
|
|
197
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
198
|
+
function tryReadUrlArg() {
|
|
199
|
+
const p = skipWs(i);
|
|
200
|
+
if (p >= n)
|
|
201
|
+
return null;
|
|
202
|
+
const q = source[p];
|
|
203
|
+
if (q === '"' || q === "'") {
|
|
204
|
+
i = p + 1; // advance past opening quote
|
|
205
|
+
const raw = readStringContent(q);
|
|
206
|
+
return { kind: "string", raw };
|
|
207
|
+
}
|
|
208
|
+
if (q === "`") {
|
|
209
|
+
i = p + 1; // advance past backtick
|
|
210
|
+
const raw = readTemplateContent();
|
|
211
|
+
return { kind: "template", raw };
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
216
|
+
// After reading the URL literal (i is now just past closing quote/backtick),
|
|
217
|
+
// peek at the next non-whitespace code token (up to 50 chars).
|
|
218
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
219
|
+
function peekNextCodeToken() {
|
|
220
|
+
const p = skipWs(i);
|
|
221
|
+
if (p >= n)
|
|
222
|
+
return "";
|
|
223
|
+
// Read until whitespace or a separator
|
|
224
|
+
let tok = "";
|
|
225
|
+
let q = p;
|
|
226
|
+
while (q < n && tok.length < 20) {
|
|
227
|
+
const c = source[q];
|
|
228
|
+
if (c === " " || c === "\t" || c === "\n" || c === "\r")
|
|
229
|
+
break;
|
|
230
|
+
tok += c;
|
|
231
|
+
q++;
|
|
232
|
+
}
|
|
233
|
+
return tok;
|
|
234
|
+
}
|
|
235
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
236
|
+
// Main scan loop
|
|
237
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
238
|
+
while (i < n) {
|
|
239
|
+
const c = source[i];
|
|
240
|
+
const next = peek();
|
|
241
|
+
// ── code state ──────────────────────────────────────────────────────────
|
|
242
|
+
if (state === "code") {
|
|
243
|
+
// Line comment
|
|
244
|
+
if (c === "/" && next === "/") {
|
|
245
|
+
state = "lineComment";
|
|
246
|
+
out.push(c);
|
|
247
|
+
i++;
|
|
248
|
+
out.push(next);
|
|
249
|
+
i++;
|
|
250
|
+
if (source[i - 1] === "\n")
|
|
251
|
+
line++;
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
// Block comment
|
|
255
|
+
if (c === "/" && next === "*") {
|
|
256
|
+
state = "blockComment";
|
|
257
|
+
out.push(c);
|
|
258
|
+
i++;
|
|
259
|
+
out.push(next);
|
|
260
|
+
i++;
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
// Regex literal — only if previous context indicates regex start
|
|
264
|
+
if (c === "/" && next !== "/" && next !== "*" && isRegexStart(out)) {
|
|
265
|
+
state = "regex";
|
|
266
|
+
inRegexClass = false;
|
|
267
|
+
out.push(c);
|
|
268
|
+
i++;
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
// String literals
|
|
272
|
+
if (c === '"') {
|
|
273
|
+
state = "doubleString";
|
|
274
|
+
out.push(c);
|
|
275
|
+
i++;
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
if (c === "'") {
|
|
279
|
+
state = "singleString";
|
|
280
|
+
out.push(c);
|
|
281
|
+
i++;
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
if (c === "`") {
|
|
285
|
+
state = "template";
|
|
286
|
+
templateStack.push(braceDepth); // push current code brace depth
|
|
287
|
+
out.push(c);
|
|
288
|
+
i++;
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
// Brace tracking (for template ${} expressions)
|
|
292
|
+
if (c === "{") {
|
|
293
|
+
braceDepth++;
|
|
294
|
+
out.push(c);
|
|
295
|
+
i++;
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
if (c === "}") {
|
|
299
|
+
if (templateStack.length > 0 && braceDepth === templateStack[templateStack.length - 1]) {
|
|
300
|
+
// Closing a ${} expression — return to template state
|
|
301
|
+
templateStack.pop();
|
|
302
|
+
braceDepth--;
|
|
303
|
+
state = "template";
|
|
304
|
+
out.push(c);
|
|
305
|
+
i++;
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
braceDepth--;
|
|
309
|
+
out.push(c);
|
|
310
|
+
i++;
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
// ── Call detection at code positions ──────────────────────────────────
|
|
314
|
+
// fetch(
|
|
315
|
+
if (c === "f" && source.slice(i, i + 5) === "fetch" &&
|
|
316
|
+
(i === 0 || !/[a-zA-Z0-9_$]/.test(source[i - 1]))) {
|
|
317
|
+
const callLine = line;
|
|
318
|
+
// skip "fetch"
|
|
319
|
+
for (let k = 0; k < 5; k++) {
|
|
320
|
+
out.push(source[i]);
|
|
321
|
+
i++;
|
|
322
|
+
}
|
|
323
|
+
const wp = skipWs(i);
|
|
324
|
+
if (wp < n && source[wp] === "(") {
|
|
325
|
+
// consume whitespace + "("
|
|
326
|
+
while (i < wp) {
|
|
327
|
+
out.push(source[i]);
|
|
328
|
+
i++;
|
|
329
|
+
}
|
|
330
|
+
out.push("(");
|
|
331
|
+
i++; // consume "("
|
|
332
|
+
const urlLit = tryReadUrlArg();
|
|
333
|
+
if (urlLit) {
|
|
334
|
+
const nextTok = peekNextCodeToken();
|
|
335
|
+
results.push({ callee: "fetch", urlLiteral: urlLit, nextCodeToken: nextTok, line: callLine });
|
|
336
|
+
}
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
// axios.METHOD(
|
|
342
|
+
if (c === "a" && source.slice(i, i + 5) === "axios" &&
|
|
343
|
+
(i === 0 || !/[a-zA-Z0-9_$]/.test(source[i - 1]))) {
|
|
344
|
+
const callLine = line;
|
|
345
|
+
for (let k = 0; k < 5; k++) {
|
|
346
|
+
out.push(source[i]);
|
|
347
|
+
i++;
|
|
348
|
+
}
|
|
349
|
+
if (i < n && source[i] === ".") {
|
|
350
|
+
out.push(".");
|
|
351
|
+
i++;
|
|
352
|
+
const methods = ["delete", "patch", "post", "put", "get"];
|
|
353
|
+
let matched = null;
|
|
354
|
+
for (const m of methods) {
|
|
355
|
+
if (source.slice(i, i + m.length).toLowerCase() === m &&
|
|
356
|
+
(i + m.length >= n || !/[a-zA-Z0-9_$]/.test(source[i + m.length]))) {
|
|
357
|
+
matched = m;
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (matched) {
|
|
362
|
+
const verb = matched.toUpperCase();
|
|
363
|
+
for (let k = 0; k < matched.length; k++) {
|
|
364
|
+
out.push(source[i]);
|
|
365
|
+
i++;
|
|
366
|
+
}
|
|
367
|
+
const wp = skipWs(i);
|
|
368
|
+
if (wp < n && source[wp] === "(") {
|
|
369
|
+
while (i < wp) {
|
|
370
|
+
out.push(source[i]);
|
|
371
|
+
i++;
|
|
372
|
+
}
|
|
373
|
+
out.push("(");
|
|
374
|
+
i++;
|
|
375
|
+
const urlLit = tryReadUrlArg();
|
|
376
|
+
if (urlLit) {
|
|
377
|
+
const nextTok = peekNextCodeToken();
|
|
378
|
+
results.push({ callee: "axios", method: verb, urlLiteral: urlLit, nextCodeToken: nextTok, line: callLine });
|
|
379
|
+
}
|
|
380
|
+
continue;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
// got.METHOD(
|
|
387
|
+
if (c === "g" && source.slice(i, i + 3) === "got" &&
|
|
388
|
+
(i === 0 || !/[a-zA-Z0-9_$]/.test(source[i - 1])) &&
|
|
389
|
+
(i + 3 >= n || !/[a-zA-Z0-9_$]/.test(source[i + 3]))) {
|
|
390
|
+
const callLine = line;
|
|
391
|
+
for (let k = 0; k < 3; k++) {
|
|
392
|
+
out.push(source[i]);
|
|
393
|
+
i++;
|
|
394
|
+
}
|
|
395
|
+
// peek for "."
|
|
396
|
+
const wp0 = skipWs(i);
|
|
397
|
+
if (wp0 < n && source[wp0] === ".") {
|
|
398
|
+
while (i < wp0) {
|
|
399
|
+
out.push(source[i]);
|
|
400
|
+
i++;
|
|
401
|
+
}
|
|
402
|
+
out.push(".");
|
|
403
|
+
i++;
|
|
404
|
+
const methods = ["delete", "patch", "post", "put", "get"];
|
|
405
|
+
let matched = null;
|
|
406
|
+
for (const m of methods) {
|
|
407
|
+
if (source.slice(i, i + m.length).toLowerCase() === m &&
|
|
408
|
+
(i + m.length >= n || !/[a-zA-Z0-9_$]/.test(source[i + m.length]))) {
|
|
409
|
+
matched = m;
|
|
410
|
+
break;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
if (matched) {
|
|
414
|
+
const verb = matched.toUpperCase();
|
|
415
|
+
for (let k = 0; k < matched.length; k++) {
|
|
416
|
+
out.push(source[i]);
|
|
417
|
+
i++;
|
|
418
|
+
}
|
|
419
|
+
const wp = skipWs(i);
|
|
420
|
+
if (wp < n && source[wp] === "(") {
|
|
421
|
+
while (i < wp) {
|
|
422
|
+
out.push(source[i]);
|
|
423
|
+
i++;
|
|
424
|
+
}
|
|
425
|
+
out.push("(");
|
|
426
|
+
i++;
|
|
427
|
+
const urlLit = tryReadUrlArg();
|
|
428
|
+
if (urlLit) {
|
|
429
|
+
const nextTok = peekNextCodeToken();
|
|
430
|
+
results.push({ callee: "got", method: verb, urlLiteral: urlLit, nextCodeToken: nextTok, line: callLine });
|
|
431
|
+
}
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
continue;
|
|
437
|
+
}
|
|
438
|
+
// Regular character
|
|
439
|
+
if (c === "\n")
|
|
440
|
+
line++;
|
|
441
|
+
out.push(c);
|
|
442
|
+
i++;
|
|
443
|
+
continue;
|
|
444
|
+
}
|
|
445
|
+
// ── lineComment state ────────────────────────────────────────────────────
|
|
446
|
+
if (state === "lineComment") {
|
|
447
|
+
if (c === "\n") {
|
|
448
|
+
state = "code";
|
|
449
|
+
line++;
|
|
450
|
+
out.push(c);
|
|
451
|
+
i++;
|
|
452
|
+
continue;
|
|
453
|
+
}
|
|
454
|
+
out.push(" ");
|
|
455
|
+
i++;
|
|
456
|
+
continue;
|
|
457
|
+
}
|
|
458
|
+
// ── blockComment state ───────────────────────────────────────────────────
|
|
459
|
+
if (state === "blockComment") {
|
|
460
|
+
if (c === "*" && next === "/") {
|
|
461
|
+
state = "code";
|
|
462
|
+
out.push(" ");
|
|
463
|
+
i++;
|
|
464
|
+
out.push(" ");
|
|
465
|
+
i++;
|
|
466
|
+
continue;
|
|
467
|
+
}
|
|
468
|
+
if (c === "\n")
|
|
469
|
+
line++;
|
|
470
|
+
out.push(c === "\n" ? "\n" : " ");
|
|
471
|
+
i++;
|
|
472
|
+
continue;
|
|
473
|
+
}
|
|
474
|
+
// ── singleString state ────────────────────────────────────────────────────
|
|
475
|
+
if (state === "singleString") {
|
|
476
|
+
out.push(c);
|
|
477
|
+
if (c === "\\") {
|
|
478
|
+
i++;
|
|
479
|
+
if (i < n) {
|
|
480
|
+
out.push(source[i]);
|
|
481
|
+
if (source[i] === "\n")
|
|
482
|
+
line++;
|
|
483
|
+
i++;
|
|
484
|
+
}
|
|
485
|
+
continue;
|
|
486
|
+
}
|
|
487
|
+
if (c === "'") {
|
|
488
|
+
state = "code";
|
|
489
|
+
}
|
|
490
|
+
if (c === "\n")
|
|
491
|
+
line++;
|
|
492
|
+
i++;
|
|
493
|
+
continue;
|
|
494
|
+
}
|
|
495
|
+
// ── doubleString state ────────────────────────────────────────────────────
|
|
496
|
+
if (state === "doubleString") {
|
|
497
|
+
out.push(c);
|
|
498
|
+
if (c === "\\") {
|
|
499
|
+
i++;
|
|
500
|
+
if (i < n) {
|
|
501
|
+
out.push(source[i]);
|
|
502
|
+
if (source[i] === "\n")
|
|
503
|
+
line++;
|
|
504
|
+
i++;
|
|
505
|
+
}
|
|
506
|
+
continue;
|
|
507
|
+
}
|
|
508
|
+
if (c === '"') {
|
|
509
|
+
state = "code";
|
|
510
|
+
}
|
|
511
|
+
if (c === "\n")
|
|
512
|
+
line++;
|
|
513
|
+
i++;
|
|
514
|
+
continue;
|
|
515
|
+
}
|
|
516
|
+
// ── template state ────────────────────────────────────────────────────────
|
|
517
|
+
if (state === "template") {
|
|
518
|
+
out.push(c);
|
|
519
|
+
if (c === "\\") {
|
|
520
|
+
i++;
|
|
521
|
+
if (i < n) {
|
|
522
|
+
out.push(source[i]);
|
|
523
|
+
if (source[i] === "\n")
|
|
524
|
+
line++;
|
|
525
|
+
i++;
|
|
526
|
+
}
|
|
527
|
+
continue;
|
|
528
|
+
}
|
|
529
|
+
if (c === "`") {
|
|
530
|
+
templateStack.pop();
|
|
531
|
+
state = "code";
|
|
532
|
+
i++;
|
|
533
|
+
continue;
|
|
534
|
+
}
|
|
535
|
+
if (c === "$" && next === "{") {
|
|
536
|
+
out.push(next);
|
|
537
|
+
i += 2;
|
|
538
|
+
braceDepth++;
|
|
539
|
+
templateStack.push(braceDepth);
|
|
540
|
+
state = "code";
|
|
541
|
+
continue;
|
|
542
|
+
}
|
|
543
|
+
if (c === "\n")
|
|
544
|
+
line++;
|
|
545
|
+
i++;
|
|
546
|
+
continue;
|
|
547
|
+
}
|
|
548
|
+
// ── regex state ───────────────────────────────────────────────────────────
|
|
549
|
+
if (state === "regex") {
|
|
550
|
+
out.push(c);
|
|
551
|
+
if (c === "\\") {
|
|
552
|
+
i++;
|
|
553
|
+
if (i < n) {
|
|
554
|
+
out.push(source[i]);
|
|
555
|
+
if (source[i] === "\n")
|
|
556
|
+
line++;
|
|
557
|
+
i++;
|
|
558
|
+
}
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
if (c === "[" && !inRegexClass) {
|
|
562
|
+
inRegexClass = true;
|
|
563
|
+
i++;
|
|
564
|
+
continue;
|
|
565
|
+
}
|
|
566
|
+
if (c === "]" && inRegexClass) {
|
|
567
|
+
inRegexClass = false;
|
|
568
|
+
i++;
|
|
569
|
+
continue;
|
|
570
|
+
}
|
|
571
|
+
if (c === "/" && !inRegexClass) {
|
|
572
|
+
// End of regex — consume optional flags
|
|
573
|
+
i++;
|
|
574
|
+
while (i < n && /[gimsuy]/.test(source[i])) {
|
|
575
|
+
out.push(source[i]);
|
|
576
|
+
i++;
|
|
577
|
+
}
|
|
578
|
+
state = "code";
|
|
579
|
+
continue;
|
|
580
|
+
}
|
|
581
|
+
if (c === "\n")
|
|
582
|
+
line++;
|
|
583
|
+
i++;
|
|
584
|
+
continue;
|
|
585
|
+
}
|
|
586
|
+
// Fallback
|
|
587
|
+
if (c === "\n")
|
|
588
|
+
line++;
|
|
589
|
+
out.push(c);
|
|
590
|
+
i++;
|
|
591
|
+
}
|
|
592
|
+
return results;
|
|
593
|
+
}
|
|
594
|
+
//# sourceMappingURL=cross-repo-outbound-lexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-repo-outbound-lexer.js","sourceRoot":"","sources":["../../src/tools/cross-repo-outbound-lexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,12 +14,41 @@ export interface IndexFolderResult {
|
|
|
14
14
|
file_count: number;
|
|
15
15
|
symbol_count: number;
|
|
16
16
|
duration_ms: number;
|
|
17
|
-
/**
|
|
18
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Set when the call did not persist a fresh index:
|
|
19
|
+
* - "skipped" — short-circuited because a watcher is keeping the index live.
|
|
20
|
+
* - "rejected_partial" — new walk found <50% of the previous file count and
|
|
21
|
+
* the previous index still matches what's on disk, so the new (likely
|
|
22
|
+
* truncated) result was discarded. file_count/symbol_count echo the KEPT
|
|
23
|
+
* old index. Follow `hint` to force a rebuild if the shrink is expected.
|
|
24
|
+
*/
|
|
25
|
+
status?: "skipped" | "rejected_partial";
|
|
19
26
|
reason?: string;
|
|
20
27
|
last_indexed?: string;
|
|
21
28
|
hint?: string;
|
|
22
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Exported for unit testing only — not part of the public API.
|
|
32
|
+
*
|
|
33
|
+
* Drains a legacy-hash queue: hashes each file, then re-stats to confirm the
|
|
34
|
+
* mtime has not drifted since the decision-time stat. Entries whose mtime
|
|
35
|
+
* drifted (or whose stat fails) are omitted from the returned map so the next
|
|
36
|
+
* run re-parses them rather than reusing symbols against a mismatched sha.
|
|
37
|
+
*
|
|
38
|
+
* @param queue Items from the legacyHashQueue (relPath + filePath + decision-time mtimeMs).
|
|
39
|
+
* @param hashFn Injectable hash function (default: sha1OfFile). Tests inject a
|
|
40
|
+
* function that also modifies the file so they can trigger the
|
|
41
|
+
* TOCTOU drift-detection path without real concurrency.
|
|
42
|
+
* @param statFn Injectable stat function (default: fs.stat). Tests can stub this
|
|
43
|
+
* to return a post-modification mtime.
|
|
44
|
+
*/
|
|
45
|
+
export declare function drainLegacyHashQueue(queue: Array<{
|
|
46
|
+
relPath: string;
|
|
47
|
+
filePath: string;
|
|
48
|
+
mtimeMs: number;
|
|
49
|
+
}>, hashFn?: (absPath: string) => Promise<string | null>, statFn?: (absPath: string) => Promise<{
|
|
50
|
+
mtimeMs: number;
|
|
51
|
+
}>): Promise<Record<string, string>>;
|
|
23
52
|
export declare function indexFolder(folderPath: string, options?: {
|
|
24
53
|
incremental?: boolean | undefined;
|
|
25
54
|
include_paths?: string[] | undefined;
|