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.
Files changed (131) hide show
  1. package/dist/chunk-26DOJ63W.js +161 -0
  2. package/dist/{chunk-PMJKOXOT.js → chunk-4JCSOF2O.js} +2 -2
  3. package/dist/{chunk-AKMBBKWV.js → chunk-5OMVSV6E.js} +12 -4
  4. package/dist/{chunk-R56FJU3E.js → chunk-7KIMF5PV.js} +2 -2
  5. package/dist/chunk-AXQKUYKF.js +1442 -0
  6. package/dist/chunk-C7H5WBTJ.js +46 -0
  7. package/dist/{chunk-AMNISGYR.js → chunk-CHDJXYBG.js} +2 -27
  8. package/dist/{chunk-GPJVPT3U.js → chunk-CPVAQJEC.js} +12 -4
  9. package/dist/{chunk-75RQSBTK.js → chunk-DH7G3DDV.js} +2 -2
  10. package/dist/{chunk-LTJC5ZQL.js → chunk-EOROMIFO.js} +13 -5
  11. package/dist/{chunk-BFLULBEU.js → chunk-EPWLXXBL.js} +2 -2
  12. package/dist/{chunk-MVH45PYK.js → chunk-FYYOWQXK.js} +12 -12
  13. package/dist/chunk-GEXE2T6I.js +87 -0
  14. package/dist/{chunk-IXPHLF6K.js → chunk-GJDHTTR2.js} +10 -3
  15. package/dist/chunk-GSH2FPKV.js +87 -0
  16. package/dist/{chunk-4ACRRQC4.js → chunk-HJZUSUPU.js} +2 -2
  17. package/dist/{chunk-M3NPW3FC.js → chunk-HLKAFWWJ.js} +81 -2
  18. package/dist/{chunk-CU62ZDHI.js → chunk-HLUS2HEB.js} +2 -2
  19. package/dist/{chunk-RFMT7UAZ.js → chunk-J3JSOSUO.js} +8 -5
  20. package/dist/{chunk-HDSRORNV.js → chunk-KKCHYLVI.js} +17 -11
  21. package/dist/{chunk-Y3M323OX.js → chunk-LFJQVJYJ.js} +2 -2
  22. package/dist/{chunk-6WVR5K46.js → chunk-LQJUPXQY.js} +3 -3
  23. package/dist/{chunk-ITZ3DDOG.js → chunk-MPGIHELS.js} +18 -3
  24. package/dist/{chunk-N4C3H7LH.js → chunk-NFS5W3PP.js} +2 -2
  25. package/dist/{chunk-Y4JFVQ7C.js → chunk-O7Q7FDUJ.js} +21 -13
  26. package/dist/{chunk-H6WCPKCX.js → chunk-OIDHN6GD.js} +2 -2
  27. package/dist/{chunk-4BQFSNFI.js → chunk-P3E6L7KW.js} +2 -2
  28. package/dist/{chunk-ORINICIZ.js → chunk-P4WO3BBW.js} +2 -2
  29. package/dist/{chunk-M4QGEKKD.js → chunk-SMDCNPMK.js} +8 -3
  30. package/dist/{chunk-6QSHLFSL.js → chunk-UGQKAVCD.js} +2 -2
  31. package/dist/{chunk-HMYJJ3HY.js → chunk-UQEQ6AHX.js} +3 -3
  32. package/dist/{chunk-WVK7AASK.js → chunk-VIYSWZCO.js} +2 -2
  33. package/dist/chunk-VJJKSGIX.js +121 -0
  34. package/dist/{chunk-N5KEREIA.js → chunk-VT4JBH6L.js} +19 -7
  35. package/dist/{chunk-R2I3M5B4.js → chunk-WGAD3GNR.js} +2 -2
  36. package/dist/{chunk-IJKLB2JW.js → chunk-YDBXNPYU.js} +2 -2
  37. package/dist/{chunk-VO4QI3LS.js → chunk-YY4QGUQ5.js} +2 -2
  38. package/dist/{chunk-3566TKJ5.js → chunk-ZEUCXQBN.js} +2 -2
  39. package/dist/cli.js +2310 -1351
  40. package/dist/{db-BHYam4BK.d.ts → db-ShvwGDKf.d.ts} +6 -1
  41. package/dist/index.d.ts +2 -2
  42. package/dist/index.js +38 -38
  43. package/dist/queries/affected.d.ts +1 -1
  44. package/dist/queries/affected.js +2 -2
  45. package/dist/queries/bottlenecks.d.ts +1 -1
  46. package/dist/queries/by-kind.d.ts +1 -1
  47. package/dist/queries/by-kind.js +1 -1
  48. package/dist/queries/call-graph.d.ts +1 -1
  49. package/dist/queries/call-graph.js +2 -2
  50. package/dist/queries/change-surface.d.ts +1 -1
  51. package/dist/queries/change-surface.js +2 -1
  52. package/dist/queries/code.d.ts +1 -1
  53. package/dist/queries/code.js +2 -2
  54. package/dist/queries/complexity-hotspots.d.ts +1 -1
  55. package/dist/queries/complexity-hotspots.js +2 -2
  56. package/dist/queries/complexity.d.ts +1 -1
  57. package/dist/queries/complexity.js +2 -2
  58. package/dist/queries/convergence.d.ts +1 -1
  59. package/dist/queries/convergence.js +2 -2
  60. package/dist/queries/coupling.d.ts +1 -1
  61. package/dist/queries/coupling.js +3 -1
  62. package/dist/queries/cycles.d.ts +1 -1
  63. package/dist/queries/cycles.js +2 -2
  64. package/dist/queries/dataflow.d.ts +1 -1
  65. package/dist/queries/dataflow.js +2 -2
  66. package/dist/queries/dead.d.ts +1 -1
  67. package/dist/queries/dead.js +3 -3
  68. package/dist/queries/deep-chains.d.ts +1 -1
  69. package/dist/queries/deep-chains.js +2 -2
  70. package/dist/queries/deps.d.ts +1 -1
  71. package/dist/queries/deps.js +3 -1
  72. package/dist/queries/diff-impact.d.ts +1 -1
  73. package/dist/queries/doc-coverage.d.ts +1 -1
  74. package/dist/queries/drift.d.ts +1 -1
  75. package/dist/queries/drift.js +2 -2
  76. package/dist/queries/extract-candidates.d.ts +1 -1
  77. package/dist/queries/extract-candidates.js +2 -2
  78. package/dist/queries/fan.d.ts +1 -1
  79. package/dist/queries/fan.js +2 -1
  80. package/dist/queries/files.d.ts +1 -1
  81. package/dist/queries/health.d.ts +1 -1
  82. package/dist/queries/health.js +13 -13
  83. package/dist/queries/hierarchy.d.ts +1 -1
  84. package/dist/queries/hierarchy.js +2 -2
  85. package/dist/queries/hotspots.d.ts +1 -1
  86. package/dist/queries/imports.d.ts +1 -1
  87. package/dist/queries/imports.js +2 -2
  88. package/dist/queries/index.d.ts +1 -1
  89. package/dist/queries/index.js +38 -38
  90. package/dist/queries/isolated.d.ts +1 -1
  91. package/dist/queries/isolated.js +3 -3
  92. package/dist/queries/members.d.ts +1 -1
  93. package/dist/queries/members.js +2 -2
  94. package/dist/queries/methods.d.ts +1 -1
  95. package/dist/queries/outline.d.ts +1 -1
  96. package/dist/queries/outline.js +2 -1
  97. package/dist/queries/passthrough-candidates.d.ts +1 -1
  98. package/dist/queries/passthrough-candidates.js +2 -2
  99. package/dist/queries/redundant-reexports.d.ts +1 -1
  100. package/dist/queries/redundant-reexports.js +3 -3
  101. package/dist/queries/refs.d.ts +1 -1
  102. package/dist/queries/refs.js +3 -1
  103. package/dist/queries/similar-chains.d.ts +1 -1
  104. package/dist/queries/similar-chains.js +2 -2
  105. package/dist/queries/similar-files.d.ts +1 -1
  106. package/dist/queries/similar-files.js +2 -2
  107. package/dist/queries/similar-signatures.d.ts +1 -1
  108. package/dist/queries/similar.d.ts +1 -1
  109. package/dist/queries/similar.js +2 -2
  110. package/dist/queries/slice.d.ts +2 -2
  111. package/dist/queries/slice.js +2 -2
  112. package/dist/queries/stale-abstractions.d.ts +1 -1
  113. package/dist/queries/stale-abstractions.js +2 -2
  114. package/dist/queries/stats.d.ts +1 -1
  115. package/dist/queries/surface.d.ts +1 -1
  116. package/dist/queries/surface.js +2 -1
  117. package/dist/queries/symbols.d.ts +1 -1
  118. package/dist/queries/symbols.js +2 -1
  119. package/dist/queries/system.d.ts +1 -1
  120. package/dist/queries/system.js +2 -1
  121. package/dist/queries/trace.d.ts +1 -1
  122. package/dist/queries/trace.js +2 -2
  123. package/dist/queries/wrapper-candidates.d.ts +1 -1
  124. package/dist/queries/wrapper-candidates.js +2 -2
  125. package/package.json +1 -1
  126. package/dist/chunk-34JPTNRN.js +0 -601
  127. package/dist/chunk-7JFZSOJ7.js +0 -103
  128. package/dist/chunk-DY4AFG2W.js +0 -48
  129. package/dist/chunk-LLMPAG56.js +0 -221
  130. package/dist/chunk-NVIIM34O.js +0 -65
  131. package/dist/chunk-YAFWL3RA.js +0 -55
@@ -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
@@ -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
@@ -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
@@ -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