scip-query 0.2.1 → 0.3.1
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/chunk-26DOJ63W.js +161 -0
- package/dist/{chunk-PMJKOXOT.js → chunk-4JCSOF2O.js} +2 -2
- package/dist/{chunk-AKMBBKWV.js → chunk-5OMVSV6E.js} +12 -4
- package/dist/{chunk-R56FJU3E.js → chunk-7KIMF5PV.js} +2 -2
- package/dist/chunk-AXQKUYKF.js +1442 -0
- package/dist/chunk-C7H5WBTJ.js +46 -0
- package/dist/{chunk-AMNISGYR.js → chunk-CHDJXYBG.js} +2 -27
- package/dist/{chunk-GPJVPT3U.js → chunk-CPVAQJEC.js} +12 -4
- package/dist/{chunk-75RQSBTK.js → chunk-DH7G3DDV.js} +2 -2
- package/dist/{chunk-LTJC5ZQL.js → chunk-EOROMIFO.js} +13 -5
- package/dist/{chunk-BFLULBEU.js → chunk-EPWLXXBL.js} +2 -2
- package/dist/{chunk-MVH45PYK.js → chunk-FYYOWQXK.js} +12 -12
- package/dist/chunk-GEXE2T6I.js +87 -0
- package/dist/{chunk-IXPHLF6K.js → chunk-GJDHTTR2.js} +10 -3
- package/dist/chunk-GSH2FPKV.js +87 -0
- package/dist/{chunk-4ACRRQC4.js → chunk-HJZUSUPU.js} +2 -2
- package/dist/{chunk-M3NPW3FC.js → chunk-HLKAFWWJ.js} +81 -2
- package/dist/{chunk-CU62ZDHI.js → chunk-HLUS2HEB.js} +2 -2
- package/dist/{chunk-RFMT7UAZ.js → chunk-J3JSOSUO.js} +8 -5
- package/dist/{chunk-HDSRORNV.js → chunk-KKCHYLVI.js} +17 -11
- package/dist/{chunk-Y3M323OX.js → chunk-LFJQVJYJ.js} +2 -2
- package/dist/{chunk-6WVR5K46.js → chunk-LQJUPXQY.js} +3 -3
- package/dist/{chunk-ITZ3DDOG.js → chunk-MPGIHELS.js} +18 -3
- package/dist/{chunk-N4C3H7LH.js → chunk-NFS5W3PP.js} +2 -2
- package/dist/{chunk-Y4JFVQ7C.js → chunk-O7Q7FDUJ.js} +21 -13
- package/dist/{chunk-H6WCPKCX.js → chunk-OIDHN6GD.js} +2 -2
- package/dist/{chunk-4BQFSNFI.js → chunk-P3E6L7KW.js} +2 -2
- package/dist/{chunk-ORINICIZ.js → chunk-P4WO3BBW.js} +2 -2
- package/dist/{chunk-M4QGEKKD.js → chunk-SMDCNPMK.js} +8 -3
- package/dist/{chunk-6QSHLFSL.js → chunk-UGQKAVCD.js} +2 -2
- package/dist/{chunk-HMYJJ3HY.js → chunk-UQEQ6AHX.js} +3 -3
- package/dist/{chunk-WVK7AASK.js → chunk-VIYSWZCO.js} +2 -2
- package/dist/chunk-VJJKSGIX.js +121 -0
- package/dist/{chunk-N5KEREIA.js → chunk-VT4JBH6L.js} +19 -7
- package/dist/{chunk-R2I3M5B4.js → chunk-WGAD3GNR.js} +2 -2
- package/dist/{chunk-IJKLB2JW.js → chunk-YDBXNPYU.js} +2 -2
- package/dist/{chunk-VO4QI3LS.js → chunk-YY4QGUQ5.js} +2 -2
- package/dist/{chunk-3566TKJ5.js → chunk-ZEUCXQBN.js} +2 -2
- package/dist/cli.js +2310 -1351
- package/dist/{db-BHYam4BK.d.ts → db-ShvwGDKf.d.ts} +6 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +38 -38
- package/dist/queries/affected.d.ts +1 -1
- package/dist/queries/affected.js +2 -2
- package/dist/queries/bottlenecks.d.ts +1 -1
- package/dist/queries/by-kind.d.ts +1 -1
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +1 -1
- package/dist/queries/call-graph.js +2 -2
- package/dist/queries/change-surface.d.ts +1 -1
- package/dist/queries/change-surface.js +2 -1
- package/dist/queries/code.d.ts +1 -1
- package/dist/queries/code.js +2 -2
- package/dist/queries/complexity-hotspots.d.ts +1 -1
- package/dist/queries/complexity-hotspots.js +2 -2
- package/dist/queries/complexity.d.ts +1 -1
- package/dist/queries/complexity.js +2 -2
- package/dist/queries/convergence.d.ts +1 -1
- package/dist/queries/convergence.js +2 -2
- package/dist/queries/coupling.d.ts +1 -1
- package/dist/queries/coupling.js +3 -1
- package/dist/queries/cycles.d.ts +1 -1
- package/dist/queries/cycles.js +2 -2
- package/dist/queries/dataflow.d.ts +1 -1
- package/dist/queries/dataflow.js +2 -2
- package/dist/queries/dead.d.ts +1 -1
- package/dist/queries/dead.js +3 -3
- package/dist/queries/deep-chains.d.ts +1 -1
- package/dist/queries/deep-chains.js +2 -2
- package/dist/queries/deps.d.ts +1 -1
- package/dist/queries/deps.js +3 -1
- package/dist/queries/diff-impact.d.ts +1 -1
- package/dist/queries/doc-coverage.d.ts +1 -1
- package/dist/queries/drift.d.ts +1 -1
- package/dist/queries/drift.js +2 -2
- package/dist/queries/extract-candidates.d.ts +1 -1
- package/dist/queries/extract-candidates.js +2 -2
- package/dist/queries/fan.d.ts +1 -1
- package/dist/queries/fan.js +2 -1
- package/dist/queries/files.d.ts +1 -1
- package/dist/queries/health.d.ts +1 -1
- package/dist/queries/health.js +13 -13
- package/dist/queries/hierarchy.d.ts +1 -1
- package/dist/queries/hierarchy.js +2 -2
- package/dist/queries/hotspots.d.ts +1 -1
- package/dist/queries/imports.d.ts +1 -1
- package/dist/queries/imports.js +2 -2
- package/dist/queries/index.d.ts +1 -1
- package/dist/queries/index.js +38 -38
- package/dist/queries/isolated.d.ts +1 -1
- package/dist/queries/isolated.js +3 -3
- package/dist/queries/members.d.ts +1 -1
- package/dist/queries/members.js +2 -2
- package/dist/queries/methods.d.ts +1 -1
- package/dist/queries/outline.d.ts +1 -1
- package/dist/queries/outline.js +2 -1
- package/dist/queries/passthrough-candidates.d.ts +1 -1
- package/dist/queries/passthrough-candidates.js +2 -2
- package/dist/queries/redundant-reexports.d.ts +1 -1
- package/dist/queries/redundant-reexports.js +3 -3
- package/dist/queries/refs.d.ts +1 -1
- package/dist/queries/refs.js +3 -1
- package/dist/queries/similar-chains.d.ts +1 -1
- package/dist/queries/similar-chains.js +2 -2
- package/dist/queries/similar-files.d.ts +1 -1
- package/dist/queries/similar-files.js +2 -2
- package/dist/queries/similar-signatures.d.ts +1 -1
- package/dist/queries/similar.d.ts +1 -1
- package/dist/queries/similar.js +2 -2
- package/dist/queries/slice.d.ts +2 -2
- package/dist/queries/slice.js +2 -2
- package/dist/queries/stale-abstractions.d.ts +1 -1
- package/dist/queries/stale-abstractions.js +2 -2
- package/dist/queries/stats.d.ts +1 -1
- package/dist/queries/surface.d.ts +1 -1
- package/dist/queries/surface.js +2 -1
- package/dist/queries/symbols.d.ts +1 -1
- package/dist/queries/symbols.js +2 -1
- package/dist/queries/system.d.ts +1 -1
- package/dist/queries/system.js +2 -1
- package/dist/queries/trace.d.ts +1 -1
- package/dist/queries/trace.js +2 -2
- package/dist/queries/wrapper-candidates.d.ts +1 -1
- package/dist/queries/wrapper-candidates.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-34JPTNRN.js +0 -601
- package/dist/chunk-7JFZSOJ7.js +0 -103
- package/dist/chunk-DY4AFG2W.js +0 -48
- package/dist/chunk-LLMPAG56.js +0 -221
- package/dist/chunk-NVIIM34O.js +0 -65
- package/dist/chunk-YAFWL3RA.js +0 -55
package/dist/chunk-DY4AFG2W.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
cleanSignature
|
|
3
|
-
} from "./chunk-4TYLS5XX.js";
|
|
4
|
-
import {
|
|
5
|
-
findFirstSymbolMatch
|
|
6
|
-
} from "./chunk-LLMPAG56.js";
|
|
7
|
-
|
|
8
|
-
// src/queries/trace.ts
|
|
9
|
-
function trace(db, symbolPattern) {
|
|
10
|
-
const match = findFirstSymbolMatch(db, symbolPattern);
|
|
11
|
-
if (!match) {
|
|
12
|
-
return { definitions: [], referencedBy: [] };
|
|
13
|
-
}
|
|
14
|
-
const defRows = db.all(
|
|
15
|
-
`SELECT d.relative_path, der.start_line, der.end_line,
|
|
16
|
-
REPLACE(SUBSTR(gs.documentation, INSTR(gs.documentation, '|') + 1), char(10), ' ') AS sig
|
|
17
|
-
FROM global_symbols gs
|
|
18
|
-
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
19
|
-
JOIN documents d ON der.document_id = d.id
|
|
20
|
-
WHERE gs.id = ?
|
|
21
|
-
ORDER BY d.relative_path, der.start_line
|
|
22
|
-
LIMIT 10`,
|
|
23
|
-
match.symbolId
|
|
24
|
-
);
|
|
25
|
-
const definitions = defRows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({
|
|
26
|
-
relativePath: r.relative_path,
|
|
27
|
-
startLine: r.start_line,
|
|
28
|
-
endLine: r.end_line,
|
|
29
|
-
signature: cleanSignature(r.sig)
|
|
30
|
-
}));
|
|
31
|
-
const refRows = db.all(
|
|
32
|
-
`SELECT DISTINCT d.relative_path
|
|
33
|
-
FROM mentions m
|
|
34
|
-
JOIN chunks c ON m.chunk_id = c.id
|
|
35
|
-
JOIN documents d ON c.document_id = d.id
|
|
36
|
-
WHERE m.symbol_id = ?
|
|
37
|
-
AND m.role != 1
|
|
38
|
-
ORDER BY d.relative_path`,
|
|
39
|
-
match.symbolId
|
|
40
|
-
);
|
|
41
|
-
const referencedBy = refRows.map((r) => r.relative_path).filter((p) => !db.isIgnored(p));
|
|
42
|
-
return { definitions, referencedBy };
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export {
|
|
46
|
-
trace
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=chunk-DY4AFG2W.js.map
|
package/dist/chunk-LLMPAG56.js
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isFunctionLikeSymbol,
|
|
3
|
-
isModuleLikeSymbol,
|
|
4
|
-
leafName,
|
|
5
|
-
shortenSymbol
|
|
6
|
-
} from "./chunk-QIXNAB5K.js";
|
|
7
|
-
|
|
8
|
-
// src/query-support.ts
|
|
9
|
-
var TEST_FILE_PATTERNS = [
|
|
10
|
-
"%/__tests__/%",
|
|
11
|
-
"%.test.%",
|
|
12
|
-
"%.spec.%",
|
|
13
|
-
"%/test/%",
|
|
14
|
-
"%/tests/%",
|
|
15
|
-
"%_test.%",
|
|
16
|
-
"%_spec.%",
|
|
17
|
-
"%/test_%.%",
|
|
18
|
-
"%/spec_%.%"
|
|
19
|
-
];
|
|
20
|
-
var TEST_SUPPORT_PATH_PATTERNS = [
|
|
21
|
-
"%/test-utils/%"
|
|
22
|
-
];
|
|
23
|
-
function testFileExclusionSql(alias, extraPatterns = []) {
|
|
24
|
-
const patterns = uniquePatterns([...TEST_FILE_PATTERNS, ...extraPatterns]);
|
|
25
|
-
return patterns.map((pattern) => `${alias}.relative_path NOT LIKE '${pattern}'`).join("\n AND ");
|
|
26
|
-
}
|
|
27
|
-
function buildFileDepGraph(db, scope) {
|
|
28
|
-
const scopeFilter = scope ? `AND d1.relative_path LIKE '%${scope}%'` : "";
|
|
29
|
-
const edges = db.all(
|
|
30
|
-
`SELECT DISTINCT
|
|
31
|
-
d1.relative_path AS from_file,
|
|
32
|
-
d2.relative_path AS to_file
|
|
33
|
-
FROM mentions m
|
|
34
|
-
JOIN chunks c ON m.chunk_id = c.id
|
|
35
|
-
JOIN documents d1 ON c.document_id = d1.id
|
|
36
|
-
JOIN global_symbols gs ON m.symbol_id = gs.id
|
|
37
|
-
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
38
|
-
JOIN documents d2 ON der.document_id = d2.id
|
|
39
|
-
WHERE d1.id != d2.id
|
|
40
|
-
AND m.role != 1
|
|
41
|
-
${db.pathExclusionsFor("d1", "d2")}
|
|
42
|
-
${scopeFilter}`
|
|
43
|
-
);
|
|
44
|
-
const graph = /* @__PURE__ */ new Map();
|
|
45
|
-
for (const edge of edges) {
|
|
46
|
-
if (db.isIgnored(edge.from_file) || db.isIgnored(edge.to_file)) continue;
|
|
47
|
-
if (!graph.has(edge.from_file)) graph.set(edge.from_file, /* @__PURE__ */ new Set());
|
|
48
|
-
graph.get(edge.from_file).add(edge.to_file);
|
|
49
|
-
}
|
|
50
|
-
return graph;
|
|
51
|
-
}
|
|
52
|
-
function findFirstSymbolMatch(db, symbolPattern) {
|
|
53
|
-
const fileLineMatch = symbolPattern.match(/^(.+):(\d+)-(\d+)$/);
|
|
54
|
-
if (fileLineMatch) {
|
|
55
|
-
const [, filePath, startStr, endStr] = fileLineMatch;
|
|
56
|
-
const row = db.get(
|
|
57
|
-
`SELECT gs.id, gs.symbol, der.document_id, der.start_line, der.end_line, d.relative_path
|
|
58
|
-
FROM global_symbols gs
|
|
59
|
-
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
60
|
-
JOIN documents d ON der.document_id = d.id
|
|
61
|
-
WHERE d.relative_path LIKE ?
|
|
62
|
-
AND der.start_line <= ? AND der.end_line >= ?
|
|
63
|
-
${db.pathExclusionsFor("d")}
|
|
64
|
-
ORDER BY (der.end_line - der.start_line) ASC
|
|
65
|
-
LIMIT 1`,
|
|
66
|
-
`%${filePath}%`,
|
|
67
|
-
parseInt(startStr, 10),
|
|
68
|
-
parseInt(endStr, 10)
|
|
69
|
-
);
|
|
70
|
-
if (row && !db.isIgnored(row.relative_path)) {
|
|
71
|
-
return {
|
|
72
|
-
symbolId: row.id,
|
|
73
|
-
symbol: row.symbol,
|
|
74
|
-
documentId: row.document_id,
|
|
75
|
-
startLine: row.start_line,
|
|
76
|
-
endLine: row.end_line,
|
|
77
|
-
relativePath: row.relative_path
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
const cleaned = normalizeLookupPattern(symbolPattern);
|
|
82
|
-
const tokens = lookupTokens(symbolPattern);
|
|
83
|
-
const candidates = getSymbolLookupCandidates(db, tokens);
|
|
84
|
-
let best = null;
|
|
85
|
-
for (const row of candidates) {
|
|
86
|
-
if (db.isIgnored(row.relative_path)) continue;
|
|
87
|
-
const score = scoreSymbolCandidate(row, symbolPattern, cleaned, tokens);
|
|
88
|
-
if (score <= 0) continue;
|
|
89
|
-
if (!best || score > best.score) {
|
|
90
|
-
best = { row, score };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (best) {
|
|
94
|
-
return {
|
|
95
|
-
symbolId: best.row.id,
|
|
96
|
-
symbol: best.row.symbol,
|
|
97
|
-
documentId: best.row.document_id,
|
|
98
|
-
startLine: best.row.start_line,
|
|
99
|
-
endLine: best.row.end_line,
|
|
100
|
-
relativePath: best.row.relative_path
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
function normalizeLookupPattern(symbolPattern) {
|
|
106
|
-
return symbolPattern.trim().replace(/\(\)$/, "").replace(/\(.*$/, "");
|
|
107
|
-
}
|
|
108
|
-
function lookupTokens(symbolPattern) {
|
|
109
|
-
const cleaned = normalizeLookupPattern(symbolPattern);
|
|
110
|
-
const tokens = cleaned.split(/[^A-Za-z0-9_]+/).map((token) => token.trim()).filter((token) => token.length > 0);
|
|
111
|
-
return tokens.length > 0 ? [...new Set(tokens)] : [cleaned];
|
|
112
|
-
}
|
|
113
|
-
function getSymbolLookupCandidates(db, tokens) {
|
|
114
|
-
const tokenClauses = tokens.map(
|
|
115
|
-
() => `(gs.symbol LIKE ? OR d.relative_path LIKE ? OR COALESCE(gs.display_name, '') LIKE ?)`
|
|
116
|
-
);
|
|
117
|
-
const params = tokens.flatMap((token) => {
|
|
118
|
-
const like = `%${token}%`;
|
|
119
|
-
return [like, like, like];
|
|
120
|
-
});
|
|
121
|
-
return db.all(
|
|
122
|
-
`SELECT gs.id, gs.symbol, der.document_id, der.start_line, der.end_line, d.relative_path, gs.display_name
|
|
123
|
-
FROM global_symbols gs
|
|
124
|
-
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
125
|
-
JOIN documents d ON der.document_id = d.id
|
|
126
|
-
WHERE ${tokenClauses.join("\n AND ")}
|
|
127
|
-
${db.pathExclusionsFor("d")}
|
|
128
|
-
LIMIT 200`,
|
|
129
|
-
...params
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
function scoreSymbolCandidate(row, originalPattern, cleanedPattern, tokens) {
|
|
133
|
-
const original = originalPattern.toLowerCase();
|
|
134
|
-
const cleaned = cleanedPattern.toLowerCase();
|
|
135
|
-
const noParens = cleaned.replace(/\(\)$/, "");
|
|
136
|
-
const raw = row.symbol.toLowerCase();
|
|
137
|
-
const short = shortenSymbol(row.symbol).toLowerCase();
|
|
138
|
-
const leaf = leafName(row.symbol).toLowerCase();
|
|
139
|
-
const display = (row.display_name ?? "").toLowerCase();
|
|
140
|
-
const path = row.relative_path.toLowerCase();
|
|
141
|
-
const looksPathLike = /[/:.]/.test(cleanedPattern);
|
|
142
|
-
let score = 0;
|
|
143
|
-
if (raw === original || raw === cleaned) score += 1e3;
|
|
144
|
-
if (short === original || short === cleaned) score += 950;
|
|
145
|
-
if (path === original || path === cleaned) score += 925;
|
|
146
|
-
if (path.endsWith(`/${cleaned}`) || path.endsWith(`/${original}`)) score += 875;
|
|
147
|
-
if (display === noParens) score += 850;
|
|
148
|
-
if (leaf === noParens) score += 825;
|
|
149
|
-
if (`${leaf}()` === original || `${leaf}()` === cleaned) score += 820;
|
|
150
|
-
if (short.endsWith(`:${cleaned}`) || short.endsWith(`:${noParens}`) || short.endsWith(`:${noParens}()`)) score += 800;
|
|
151
|
-
if (raw.includes(cleaned)) score += 120;
|
|
152
|
-
if (short.includes(cleaned)) score += 140;
|
|
153
|
-
if (path.includes(cleaned)) score += 140;
|
|
154
|
-
if (display.includes(cleaned)) score += 110;
|
|
155
|
-
if (tokens.every((token) => {
|
|
156
|
-
const lower = token.toLowerCase();
|
|
157
|
-
return raw.includes(lower) || short.includes(lower) || path.includes(lower) || display.includes(lower);
|
|
158
|
-
})) {
|
|
159
|
-
score += 100 + tokens.length * 15;
|
|
160
|
-
}
|
|
161
|
-
if (isFunctionLikeSymbol(row.symbol) && leaf === noParens) {
|
|
162
|
-
score += 60;
|
|
163
|
-
}
|
|
164
|
-
if (!looksPathLike && isModuleLikeSymbol(row.symbol)) {
|
|
165
|
-
score -= 160;
|
|
166
|
-
}
|
|
167
|
-
score -= Math.min(50, Math.max(0, row.end_line - row.start_line));
|
|
168
|
-
return score;
|
|
169
|
-
}
|
|
170
|
-
function getCalleeRowsForSymbol(db, symbol, opts = {}) {
|
|
171
|
-
const rows = db.all(
|
|
172
|
-
`SELECT DISTINCT
|
|
173
|
-
callee_gs.symbol AS symbol,
|
|
174
|
-
callee_d.relative_path AS file,
|
|
175
|
-
c.id AS chunk_id
|
|
176
|
-
FROM mentions m
|
|
177
|
-
JOIN chunks c ON m.chunk_id = c.id
|
|
178
|
-
JOIN global_symbols callee_gs ON m.symbol_id = callee_gs.id
|
|
179
|
-
JOIN defn_enclosing_ranges callee_der ON callee_gs.id = callee_der.symbol_id
|
|
180
|
-
JOIN documents callee_d ON callee_der.document_id = callee_d.id
|
|
181
|
-
WHERE c.document_id = ?
|
|
182
|
-
AND c.start_line >= ?
|
|
183
|
-
AND c.end_line <= ?
|
|
184
|
-
AND m.role != 1
|
|
185
|
-
AND callee_gs.id != ?
|
|
186
|
-
${db.symbolNoiseFor("callee_gs")}
|
|
187
|
-
${db.pathExclusionsFor("callee_d")}
|
|
188
|
-
ORDER BY callee_d.relative_path
|
|
189
|
-
${opts.limit ? "LIMIT ?" : ""}`,
|
|
190
|
-
...calleeQueryParams(symbol, opts.limit)
|
|
191
|
-
);
|
|
192
|
-
return rows.filter((row) => !db.isIgnored(row.file)).map((row) => ({
|
|
193
|
-
symbol: row.symbol,
|
|
194
|
-
file: row.file,
|
|
195
|
-
chunkId: row.chunk_id
|
|
196
|
-
}));
|
|
197
|
-
}
|
|
198
|
-
function calleeQueryParams(symbol, limit) {
|
|
199
|
-
const params = [
|
|
200
|
-
symbol.documentId,
|
|
201
|
-
symbol.startLine,
|
|
202
|
-
symbol.endLine,
|
|
203
|
-
symbol.symbolId
|
|
204
|
-
];
|
|
205
|
-
if (typeof limit === "number") {
|
|
206
|
-
params.push(limit);
|
|
207
|
-
}
|
|
208
|
-
return params;
|
|
209
|
-
}
|
|
210
|
-
function uniquePatterns(patterns) {
|
|
211
|
-
return [...new Set(patterns)];
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
export {
|
|
215
|
-
TEST_SUPPORT_PATH_PATTERNS,
|
|
216
|
-
testFileExclusionSql,
|
|
217
|
-
buildFileDepGraph,
|
|
218
|
-
findFirstSymbolMatch,
|
|
219
|
-
getCalleeRowsForSymbol
|
|
220
|
-
};
|
|
221
|
-
//# sourceMappingURL=chunk-LLMPAG56.js.map
|
package/dist/chunk-NVIIM34O.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
findFirstSymbolMatch
|
|
3
|
-
} from "./chunk-LLMPAG56.js";
|
|
4
|
-
import {
|
|
5
|
-
shortenSymbol
|
|
6
|
-
} from "./chunk-QIXNAB5K.js";
|
|
7
|
-
|
|
8
|
-
// src/queries/affected.ts
|
|
9
|
-
function affected(db, symbolPattern, opts = {}) {
|
|
10
|
-
const { maxDepth = 5, scope } = opts;
|
|
11
|
-
const target = findFirstSymbolMatch(db, symbolPattern);
|
|
12
|
-
if (!target) return [];
|
|
13
|
-
const scopeFilter = scope ? `AND enc_d.relative_path LIKE '%${scope}%'` : "";
|
|
14
|
-
const results = [];
|
|
15
|
-
const visited = /* @__PURE__ */ new Set([target.symbolId]);
|
|
16
|
-
let frontier = /* @__PURE__ */ new Set([target.symbolId]);
|
|
17
|
-
for (let depth = 1; depth <= maxDepth; depth++) {
|
|
18
|
-
if (frontier.size === 0) break;
|
|
19
|
-
const placeholders = [...frontier].map(() => "?").join(",");
|
|
20
|
-
const nextFrontier = /* @__PURE__ */ new Set();
|
|
21
|
-
const rows = db.all(
|
|
22
|
-
`SELECT DISTINCT
|
|
23
|
-
enc_gs.id AS symbol_id,
|
|
24
|
-
enc_gs.symbol AS symbol,
|
|
25
|
-
enc_d.relative_path AS relative_path
|
|
26
|
-
FROM mentions m
|
|
27
|
-
JOIN chunks c ON m.chunk_id = c.id
|
|
28
|
-
JOIN documents ref_d ON c.document_id = ref_d.id
|
|
29
|
-
JOIN defn_enclosing_ranges enc_der
|
|
30
|
-
ON enc_der.document_id = ref_d.id
|
|
31
|
-
AND c.start_line >= enc_der.start_line
|
|
32
|
-
AND c.end_line <= enc_der.end_line
|
|
33
|
-
JOIN global_symbols enc_gs ON enc_der.symbol_id = enc_gs.id
|
|
34
|
-
JOIN documents enc_d ON enc_der.document_id = enc_d.id
|
|
35
|
-
WHERE m.symbol_id IN (${placeholders})
|
|
36
|
-
AND m.role != 1
|
|
37
|
-
AND enc_gs.id NOT IN (${placeholders})
|
|
38
|
-
${db.symbolNoiseFor("enc_gs")}
|
|
39
|
-
${db.pathExclusionsFor("enc_d")}
|
|
40
|
-
${scopeFilter}`,
|
|
41
|
-
...[...frontier],
|
|
42
|
-
...[...frontier]
|
|
43
|
-
);
|
|
44
|
-
for (const row of rows) {
|
|
45
|
-
if (visited.has(row.symbol_id)) continue;
|
|
46
|
-
if (db.isIgnored(row.relative_path)) continue;
|
|
47
|
-
visited.add(row.symbol_id);
|
|
48
|
-
nextFrontier.add(row.symbol_id);
|
|
49
|
-
results.push({
|
|
50
|
-
symbol: row.symbol,
|
|
51
|
-
shortName: shortenSymbol(row.symbol),
|
|
52
|
-
file: row.relative_path,
|
|
53
|
-
depth
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
frontier = nextFrontier;
|
|
57
|
-
}
|
|
58
|
-
results.sort((a, b) => a.depth - b.depth || a.file.localeCompare(b.file));
|
|
59
|
-
return results;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export {
|
|
63
|
-
affected
|
|
64
|
-
};
|
|
65
|
-
//# sourceMappingURL=chunk-NVIIM34O.js.map
|
package/dist/chunk-YAFWL3RA.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
findFirstSymbolMatch,
|
|
3
|
-
getCalleeRowsForSymbol
|
|
4
|
-
} from "./chunk-LLMPAG56.js";
|
|
5
|
-
import {
|
|
6
|
-
shortenSymbol
|
|
7
|
-
} from "./chunk-QIXNAB5K.js";
|
|
8
|
-
|
|
9
|
-
// src/queries/call-graph.ts
|
|
10
|
-
function callGraph(db, symbolPattern) {
|
|
11
|
-
const target = findFirstSymbolMatch(db, symbolPattern);
|
|
12
|
-
if (!target) return null;
|
|
13
|
-
const callerRows = db.all(
|
|
14
|
-
`SELECT DISTINCT caller_gs.symbol AS caller_symbol, caller_d.relative_path AS caller_file
|
|
15
|
-
FROM mentions m
|
|
16
|
-
JOIN chunks c ON m.chunk_id = c.id
|
|
17
|
-
JOIN documents ref_d ON c.document_id = ref_d.id
|
|
18
|
-
-- Find the enclosing symbol for where the reference appears
|
|
19
|
-
JOIN defn_enclosing_ranges caller_der
|
|
20
|
-
ON caller_der.document_id = ref_d.id
|
|
21
|
-
AND c.start_line >= caller_der.start_line
|
|
22
|
-
AND c.end_line <= caller_der.end_line
|
|
23
|
-
JOIN global_symbols caller_gs ON caller_der.symbol_id = caller_gs.id
|
|
24
|
-
JOIN documents caller_d ON caller_der.document_id = caller_d.id
|
|
25
|
-
WHERE m.symbol_id = ?
|
|
26
|
-
AND m.role != 1
|
|
27
|
-
AND caller_gs.id != ?
|
|
28
|
-
${db.symbolNoiseFor("caller_gs")}
|
|
29
|
-
${db.pathExclusionsFor("caller_d")}
|
|
30
|
-
ORDER BY caller_d.relative_path
|
|
31
|
-
LIMIT 50`,
|
|
32
|
-
target.symbolId,
|
|
33
|
-
target.symbolId
|
|
34
|
-
);
|
|
35
|
-
const calleeRows = getCalleeRowsForSymbol(db, target, { limit: 50 });
|
|
36
|
-
return {
|
|
37
|
-
symbol: target.symbol,
|
|
38
|
-
shortName: shortenSymbol(target.symbol),
|
|
39
|
-
callers: callerRows.filter((r) => !db.isIgnored(r.caller_file)).map((r) => ({
|
|
40
|
-
symbol: r.caller_symbol,
|
|
41
|
-
shortName: shortenSymbol(r.caller_symbol),
|
|
42
|
-
file: r.caller_file
|
|
43
|
-
})),
|
|
44
|
-
callees: calleeRows.map((r) => ({
|
|
45
|
-
symbol: r.symbol,
|
|
46
|
-
shortName: shortenSymbol(r.symbol),
|
|
47
|
-
file: r.file
|
|
48
|
-
}))
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export {
|
|
53
|
-
callGraph
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=chunk-YAFWL3RA.js.map
|