scip-query 0.2.0 → 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/README.md +16 -43
- package/dist/chunk-26DOJ63W.js +161 -0
- package/dist/chunk-2UELLEBI.js +1 -0
- package/dist/{chunk-4PDAL6IL.js → chunk-4JCSOF2O.js} +3 -3
- package/dist/{chunk-6SXADWLW.js → chunk-5OMVSV6E.js} +13 -5
- package/dist/{chunk-KPPHZCZJ.js → chunk-7HK5ZLOE.js} +28 -46
- package/dist/{chunk-7RLE5EWE.js → chunk-7KIMF5PV.js} +34 -13
- package/dist/chunk-AXQKUYKF.js +1442 -0
- package/dist/chunk-C7H5WBTJ.js +46 -0
- package/dist/{chunk-NHBZIL2J.js → chunk-CHDJXYBG.js} +3 -28
- package/dist/{chunk-KCBMVQL5.js → chunk-CPVAQJEC.js} +13 -5
- package/dist/{chunk-ZQIIPFD7.js → chunk-DH7G3DDV.js} +2 -2
- package/dist/{chunk-BOVXCR46.js → chunk-EOROMIFO.js} +14 -6
- package/dist/{chunk-2CKGIR6G.js → chunk-EPWLXXBL.js} +3 -3
- package/dist/{chunk-5RMYT5WH.js → chunk-F7XU27LU.js} +2 -2
- package/dist/{chunk-63G7IQTD.js → chunk-FYYOWQXK.js} +20 -40
- package/dist/chunk-GEXE2T6I.js +87 -0
- package/dist/{chunk-DGUPQSOR.js → chunk-GJDHTTR2.js} +11 -4
- package/dist/chunk-GSH2FPKV.js +87 -0
- package/dist/{chunk-NUZ4OMU3.js → chunk-GU2H5QRN.js} +2 -2
- package/dist/{chunk-Z6YZJ36C.js → chunk-HJZUSUPU.js} +8 -4
- package/dist/{chunk-LAWMH22O.js → chunk-HLKAFWWJ.js} +82 -3
- package/dist/{chunk-HPFZLISB.js → chunk-HLUS2HEB.js} +2 -2
- package/dist/{chunk-H2MDONBU.js → chunk-J3JSOSUO.js} +9 -6
- package/dist/{chunk-7PBOG4YE.js → chunk-KBOQX573.js} +2 -2
- package/dist/{chunk-HDSRORNV.js → chunk-KKCHYLVI.js} +17 -11
- package/dist/{chunk-HMLMH7VZ.js → chunk-LFJQVJYJ.js} +2 -2
- package/dist/{chunk-4EXL2CUA.js → chunk-LQJUPXQY.js} +16 -8
- package/dist/{chunk-ITZ3DDOG.js → chunk-MPGIHELS.js} +18 -3
- package/dist/chunk-NFS5W3PP.js +37 -0
- package/dist/chunk-NG5F43OU.js +200 -0
- package/dist/{chunk-DCKMSTJ4.js → chunk-O7Q7FDUJ.js} +22 -14
- package/dist/{chunk-UJQN5N3I.js → chunk-OIDHN6GD.js} +6 -3
- package/dist/{chunk-Z4GHE2HD.js → chunk-P3E6L7KW.js} +6 -2
- package/dist/{chunk-BNN2RKD2.js → chunk-P4WO3BBW.js} +3 -3
- package/dist/{chunk-QOV2R2WT.js → chunk-QIXNAB5K.js} +42 -2
- package/dist/{chunk-NWCE4CIC.js → chunk-SMDCNPMK.js} +11 -28
- package/dist/{chunk-SEFSL2GF.js → chunk-TOIEB3LG.js} +2 -2
- package/dist/{chunk-4XHWPRAX.js → chunk-UGQKAVCD.js} +3 -3
- package/dist/{chunk-OVPLOMPY.js → chunk-UQEQ6AHX.js} +7 -4
- package/dist/{chunk-ZK6GXM3J.js → chunk-VIYSWZCO.js} +3 -3
- package/dist/chunk-VJJKSGIX.js +121 -0
- package/dist/{chunk-N5KEREIA.js → chunk-VT4JBH6L.js} +19 -7
- package/dist/{chunk-7LLPRPR5.js → chunk-WGAD3GNR.js} +2 -2
- package/dist/chunk-YDBXNPYU.js +69 -0
- package/dist/chunk-YY4QGUQ5.js +84 -0
- package/dist/{chunk-FGXRVW7G.js → chunk-YZ6L7GFO.js} +2 -2
- package/dist/{chunk-W4ALF422.js → chunk-ZEUCXQBN.js} +3 -3
- package/dist/cli.js +2697 -1054
- package/dist/{db-BNVVZSfP.d.ts → db-ShvwGDKf.d.ts} +12 -19
- package/dist/index.d.ts +15 -15
- package/dist/index.js +263 -234
- package/dist/postinstall.js +5 -76
- package/dist/queries/affected.d.ts +1 -1
- package/dist/queries/affected.js +3 -3
- package/dist/queries/bottlenecks.d.ts +1 -1
- package/dist/queries/bottlenecks.js +2 -2
- package/dist/queries/by-kind.d.ts +1 -1
- package/dist/queries/by-kind.js +2 -2
- package/dist/queries/call-graph.d.ts +1 -1
- package/dist/queries/call-graph.js +3 -3
- package/dist/queries/change-surface.d.ts +2 -2
- package/dist/queries/change-surface.js +3 -3
- package/dist/queries/code.d.ts +1 -1
- package/dist/queries/code.js +3 -3
- package/dist/queries/complexity-hotspots.d.ts +1 -1
- package/dist/queries/complexity-hotspots.js +3 -3
- package/dist/queries/complexity.d.ts +1 -1
- package/dist/queries/complexity.js +3 -3
- package/dist/queries/convergence.d.ts +1 -1
- package/dist/queries/convergence.js +3 -3
- 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 +3 -2
- package/dist/queries/dataflow.d.ts +1 -1
- package/dist/queries/dataflow.js +3 -3
- package/dist/queries/dead.d.ts +1 -1
- package/dist/queries/dead.js +4 -3
- package/dist/queries/deep-chains.d.ts +1 -1
- package/dist/queries/deep-chains.js +3 -2
- package/dist/queries/deps.d.ts +1 -1
- package/dist/queries/deps.js +3 -1
- package/dist/queries/diff-impact.d.ts +2 -2
- package/dist/queries/diff-impact.js +2 -3
- package/dist/queries/doc-coverage.d.ts +1 -1
- package/dist/queries/doc-coverage.js +2 -2
- package/dist/queries/drift.d.ts +1 -1
- package/dist/queries/drift.js +3 -2
- package/dist/queries/extract-candidates.d.ts +1 -1
- package/dist/queries/extract-candidates.js +3 -3
- package/dist/queries/fan.d.ts +1 -1
- package/dist/queries/fan.js +3 -2
- package/dist/queries/files.d.ts +1 -1
- package/dist/queries/health.d.ts +1 -1
- package/dist/queries/health.js +14 -14
- package/dist/queries/hierarchy.d.ts +1 -1
- package/dist/queries/hierarchy.js +3 -2
- package/dist/queries/hotspots.d.ts +1 -1
- package/dist/queries/hotspots.js +2 -2
- package/dist/queries/imports.d.ts +1 -1
- package/dist/queries/imports.js +3 -2
- package/dist/queries/index.d.ts +1 -2
- package/dist/queries/index.js +46 -51
- package/dist/queries/isolated.d.ts +1 -1
- package/dist/queries/isolated.js +4 -3
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +3 -2
- package/dist/queries/methods.d.ts +1 -1
- package/dist/queries/methods.js +2 -2
- package/dist/queries/outline.d.ts +1 -1
- package/dist/queries/outline.js +3 -2
- package/dist/queries/passthrough-candidates.d.ts +1 -1
- package/dist/queries/passthrough-candidates.js +3 -3
- package/dist/queries/redundant-reexports.d.ts +1 -1
- package/dist/queries/redundant-reexports.js +4 -2
- 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 +3 -2
- package/dist/queries/similar-files.d.ts +1 -1
- package/dist/queries/similar-files.js +3 -2
- package/dist/queries/similar-signatures.d.ts +1 -1
- package/dist/queries/similar-signatures.js +2 -2
- package/dist/queries/similar.d.ts +1 -1
- package/dist/queries/similar.js +3 -3
- package/dist/queries/slice.d.ts +2 -2
- package/dist/queries/slice.js +3 -3
- package/dist/queries/stale-abstractions.d.ts +1 -1
- package/dist/queries/stale-abstractions.js +3 -3
- package/dist/queries/stats.d.ts +1 -1
- package/dist/queries/surface.d.ts +1 -1
- package/dist/queries/surface.js +3 -2
- package/dist/queries/symbols.d.ts +1 -1
- package/dist/queries/symbols.js +3 -2
- package/dist/queries/system.d.ts +1 -1
- package/dist/queries/system.js +3 -2
- package/dist/queries/trace.d.ts +1 -1
- package/dist/queries/trace.js +3 -1
- package/dist/queries/wrapper-candidates.d.ts +1 -1
- package/dist/queries/wrapper-candidates.js +3 -3
- package/dist/reindex-worker.js +24 -12
- package/package.json +6 -1
- package/IMPROVEMENTS.md +0 -143
- package/PLAN.md +0 -320
- package/dist/chunk-2CKGIR6G.js.map +0 -1
- package/dist/chunk-3UOUTZQT.js +0 -45
- package/dist/chunk-3UOUTZQT.js.map +0 -1
- package/dist/chunk-4EXL2CUA.js.map +0 -1
- package/dist/chunk-4PDAL6IL.js.map +0 -1
- package/dist/chunk-4TYLS5XX.js.map +0 -1
- package/dist/chunk-4XHWPRAX.js.map +0 -1
- package/dist/chunk-5RMYT5WH.js.map +0 -1
- package/dist/chunk-63G7IQTD.js.map +0 -1
- package/dist/chunk-6SXADWLW.js.map +0 -1
- package/dist/chunk-74RFWB5T.js.map +0 -1
- package/dist/chunk-7LLPRPR5.js.map +0 -1
- package/dist/chunk-7PBOG4YE.js.map +0 -1
- package/dist/chunk-7RLE5EWE.js.map +0 -1
- package/dist/chunk-7UCKSQRS.js +0 -55
- package/dist/chunk-7UCKSQRS.js.map +0 -1
- package/dist/chunk-BNN2RKD2.js.map +0 -1
- package/dist/chunk-BOVXCR46.js.map +0 -1
- package/dist/chunk-D567NFIF.js +0 -65
- package/dist/chunk-D567NFIF.js.map +0 -1
- package/dist/chunk-DCKMSTJ4.js.map +0 -1
- package/dist/chunk-DEZKCZXD.js +0 -40
- package/dist/chunk-DEZKCZXD.js.map +0 -1
- package/dist/chunk-DGUPQSOR.js.map +0 -1
- package/dist/chunk-DVWGWHFW.js +0 -99
- package/dist/chunk-DVWGWHFW.js.map +0 -1
- package/dist/chunk-EQYLEQCW.js +0 -46
- package/dist/chunk-EQYLEQCW.js.map +0 -1
- package/dist/chunk-FGXRVW7G.js.map +0 -1
- package/dist/chunk-H2MDONBU.js.map +0 -1
- package/dist/chunk-HB7MRLLL.js +0 -76
- package/dist/chunk-HB7MRLLL.js.map +0 -1
- package/dist/chunk-HDSRORNV.js.map +0 -1
- package/dist/chunk-HMLMH7VZ.js.map +0 -1
- package/dist/chunk-HPFZLISB.js.map +0 -1
- package/dist/chunk-HZBC7PPD.js +0 -88
- package/dist/chunk-HZBC7PPD.js.map +0 -1
- package/dist/chunk-ITZ3DDOG.js.map +0 -1
- package/dist/chunk-JJP7KQND.js +0 -1
- package/dist/chunk-JJP7KQND.js.map +0 -1
- package/dist/chunk-KCBMVQL5.js.map +0 -1
- package/dist/chunk-KPPHZCZJ.js.map +0 -1
- package/dist/chunk-LAWMH22O.js.map +0 -1
- package/dist/chunk-MCUX5LA7.js +0 -103
- package/dist/chunk-MCUX5LA7.js.map +0 -1
- package/dist/chunk-MGNMHKX3.js.map +0 -1
- package/dist/chunk-N5KEREIA.js.map +0 -1
- package/dist/chunk-NHBZIL2J.js.map +0 -1
- package/dist/chunk-NUZ4OMU3.js.map +0 -1
- package/dist/chunk-NWCE4CIC.js.map +0 -1
- package/dist/chunk-OVPLOMPY.js.map +0 -1
- package/dist/chunk-QOV2R2WT.js.map +0 -1
- package/dist/chunk-SEFSL2GF.js.map +0 -1
- package/dist/chunk-UJQN5N3I.js.map +0 -1
- package/dist/chunk-W4ALF422.js.map +0 -1
- package/dist/chunk-Z4GHE2HD.js.map +0 -1
- package/dist/chunk-Z6YZJ36C.js.map +0 -1
- package/dist/chunk-ZK6GXM3J.js.map +0 -1
- package/dist/chunk-ZOGY2V3N.js +0 -158
- package/dist/chunk-ZOGY2V3N.js.map +0 -1
- package/dist/chunk-ZQIIPFD7.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/postinstall.js.map +0 -1
- package/dist/queries/affected.js.map +0 -1
- package/dist/queries/bottlenecks.js.map +0 -1
- package/dist/queries/by-kind.js.map +0 -1
- package/dist/queries/call-graph.js.map +0 -1
- package/dist/queries/change-surface.js.map +0 -1
- package/dist/queries/clean-signature.js.map +0 -1
- package/dist/queries/code.js.map +0 -1
- package/dist/queries/complexity-hotspots.js.map +0 -1
- package/dist/queries/complexity.js.map +0 -1
- package/dist/queries/convergence.js.map +0 -1
- package/dist/queries/coupling.js.map +0 -1
- package/dist/queries/cycles.js.map +0 -1
- package/dist/queries/dataflow.js.map +0 -1
- package/dist/queries/dead.js.map +0 -1
- package/dist/queries/deep-chains.js.map +0 -1
- package/dist/queries/deps.js.map +0 -1
- package/dist/queries/diff-impact.js.map +0 -1
- package/dist/queries/doc-coverage.js.map +0 -1
- package/dist/queries/drift.js.map +0 -1
- package/dist/queries/extract-candidates.js.map +0 -1
- package/dist/queries/fan.js.map +0 -1
- package/dist/queries/files.js.map +0 -1
- package/dist/queries/health.js.map +0 -1
- package/dist/queries/hierarchy.js.map +0 -1
- package/dist/queries/hotspots.js.map +0 -1
- package/dist/queries/imports.js.map +0 -1
- package/dist/queries/index.js.map +0 -1
- package/dist/queries/isolated.js.map +0 -1
- package/dist/queries/members.js.map +0 -1
- package/dist/queries/methods.js.map +0 -1
- package/dist/queries/outline.js.map +0 -1
- package/dist/queries/passthrough-candidates.js.map +0 -1
- package/dist/queries/redundant-reexports.js.map +0 -1
- package/dist/queries/refs.js.map +0 -1
- package/dist/queries/similar-chains.js.map +0 -1
- package/dist/queries/similar-files.js.map +0 -1
- package/dist/queries/similar-signatures.js.map +0 -1
- package/dist/queries/similar.js.map +0 -1
- package/dist/queries/slice.js.map +0 -1
- package/dist/queries/stale-abstractions.js.map +0 -1
- package/dist/queries/stats.js.map +0 -1
- package/dist/queries/surface.js.map +0 -1
- package/dist/queries/symbols.js.map +0 -1
- package/dist/queries/system.js.map +0 -1
- package/dist/queries/test-coverage.d.ts +0 -22
- package/dist/queries/test-coverage.js +0 -11
- package/dist/queries/test-coverage.js.map +0 -1
- package/dist/queries/trace.js.map +0 -1
- package/dist/queries/wrapper-candidates.js.map +0 -1
- package/dist/reindex-worker.js.map +0 -1
- package/docs/AGENT_GUIDE.md +0 -359
- package/reports/debloat/2026-04-10-scip-query-self-audit.md +0 -161
- package/src/cli.ts +0 -1480
- package/src/config.ts +0 -117
- package/src/db.ts +0 -127
- package/src/gitignore-filter.ts +0 -143
- package/src/index.ts +0 -11
- package/src/postinstall.ts +0 -8
- package/src/queries/affected.ts +0 -86
- package/src/queries/bottlenecks.ts +0 -67
- package/src/queries/by-kind.ts +0 -204
- package/src/queries/call-graph.ts +0 -66
- package/src/queries/change-surface.ts +0 -110
- package/src/queries/clean-signature.ts +0 -22
- package/src/queries/code.ts +0 -101
- package/src/queries/complexity-hotspots.ts +0 -119
- package/src/queries/complexity.ts +0 -152
- package/src/queries/convergence.ts +0 -82
- package/src/queries/coupling.ts +0 -99
- package/src/queries/cycles.ts +0 -78
- package/src/queries/dataflow.ts +0 -128
- package/src/queries/dead.ts +0 -122
- package/src/queries/deep-chains.ts +0 -59
- package/src/queries/deps.ts +0 -46
- package/src/queries/diff-impact.ts +0 -204
- package/src/queries/doc-coverage.ts +0 -86
- package/src/queries/drift.ts +0 -224
- package/src/queries/extract-candidates.ts +0 -167
- package/src/queries/fan.ts +0 -148
- package/src/queries/files.ts +0 -16
- package/src/queries/health.ts +0 -324
- package/src/queries/hierarchy.ts +0 -49
- package/src/queries/hotspots.ts +0 -53
- package/src/queries/imports.ts +0 -95
- package/src/queries/index.ts +0 -45
- package/src/queries/isolated.ts +0 -67
- package/src/queries/members.ts +0 -54
- package/src/queries/methods.ts +0 -27
- package/src/queries/outline.ts +0 -52
- package/src/queries/passthrough-candidates.ts +0 -94
- package/src/queries/redundant-reexports.ts +0 -170
- package/src/queries/refs.ts +0 -27
- package/src/queries/similar-chains.ts +0 -314
- package/src/queries/similar-files.ts +0 -140
- package/src/queries/similar-signatures.ts +0 -151
- package/src/queries/similar.ts +0 -305
- package/src/queries/slice.ts +0 -154
- package/src/queries/stale-abstractions.ts +0 -82
- package/src/queries/stats.ts +0 -22
- package/src/queries/surface.ts +0 -34
- package/src/queries/symbols.ts +0 -39
- package/src/queries/system.ts +0 -86
- package/src/queries/test-coverage.ts +0 -106
- package/src/queries/trace.ts +0 -55
- package/src/queries/wrapper-candidates.ts +0 -112
- package/src/query-support.ts +0 -226
- package/src/reindex/detect.ts +0 -58
- package/src/reindex/index.ts +0 -153
- package/src/reindex/indexers.ts +0 -220
- package/src/reindex/install.ts +0 -125
- package/src/reindex-worker.ts +0 -35
- package/src/setup.ts +0 -202
- package/src/symbol-parser.ts +0 -278
- package/src/types.ts +0 -654
- package/src/watch.ts +0 -274
- package/tests/gitignore-filter.test.ts +0 -48
- package/tests/queries.test.ts +0 -300
- package/tests/symbol-parser.test.ts +0 -157
- package/tsconfig.json +0 -20
- package/tsup.config.ts +0 -40
- package/vitest.config.ts +0 -7
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
+
leafSuffix,
|
|
3
|
+
parseSymbol,
|
|
2
4
|
shortenSymbol
|
|
3
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QIXNAB5K.js";
|
|
4
6
|
|
|
5
7
|
// src/queries/by-kind.ts
|
|
6
8
|
var KIND_NAMES = {
|
|
@@ -118,7 +120,7 @@ function byKind(db, kindQuery, opts = {}) {
|
|
|
118
120
|
`SELECT COUNT(*) AS c FROM global_symbols WHERE kind IS NOT NULL`
|
|
119
121
|
);
|
|
120
122
|
if (!hasKinds || hasKinds.c === 0) {
|
|
121
|
-
return
|
|
123
|
+
return inferByKind(db, kindNum, scope, limit);
|
|
122
124
|
}
|
|
123
125
|
const rows = db.all(
|
|
124
126
|
`SELECT gs.symbol, gs.kind, d.relative_path, der.start_line, der.end_line
|
|
@@ -158,15 +160,92 @@ function kindCounts(db, opts = {}) {
|
|
|
158
160
|
GROUP BY gs.kind
|
|
159
161
|
ORDER BY cnt DESC`
|
|
160
162
|
);
|
|
163
|
+
if (rows.length === 0) {
|
|
164
|
+
return inferKindCounts(db, opts.scope);
|
|
165
|
+
}
|
|
161
166
|
return rows.map((r) => ({
|
|
162
167
|
kind: r.kind,
|
|
163
168
|
kindName: KIND_NAMES[r.kind] ?? "Unknown",
|
|
164
169
|
count: r.cnt
|
|
165
170
|
}));
|
|
166
171
|
}
|
|
172
|
+
function inferByKind(db, kindNum, scope, limit = 100) {
|
|
173
|
+
const scopeFilter = scope ? `AND d.relative_path LIKE '%${scope}%'` : "";
|
|
174
|
+
const rows = db.all(
|
|
175
|
+
`SELECT gs.symbol, d.relative_path, der.start_line, der.end_line, gs.documentation, gs.enclosing_symbol
|
|
176
|
+
FROM global_symbols gs
|
|
177
|
+
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
178
|
+
JOIN documents d ON der.document_id = d.id
|
|
179
|
+
WHERE 1 = 1
|
|
180
|
+
${db.pathExclusionsFor("d")}
|
|
181
|
+
${scopeFilter}
|
|
182
|
+
ORDER BY d.relative_path, der.start_line`
|
|
183
|
+
);
|
|
184
|
+
return rows.filter((row) => !db.isIgnored(row.relative_path)).map((row) => ({
|
|
185
|
+
row,
|
|
186
|
+
inferredKind: inferKindNumber(row.symbol, row.documentation, row.enclosing_symbol)
|
|
187
|
+
})).filter((entry) => entry.inferredKind === kindNum).slice(0, limit).map(({ row, inferredKind }) => ({
|
|
188
|
+
symbol: row.symbol,
|
|
189
|
+
shortName: shortenSymbol(row.symbol),
|
|
190
|
+
kind: inferredKind,
|
|
191
|
+
kindName: KIND_NAMES[inferredKind] ?? "Unknown",
|
|
192
|
+
relativePath: row.relative_path,
|
|
193
|
+
startLine: row.start_line,
|
|
194
|
+
endLine: row.end_line
|
|
195
|
+
}));
|
|
196
|
+
}
|
|
197
|
+
function inferKindCounts(db, scope) {
|
|
198
|
+
const scopeFilter = scope ? `AND d.relative_path LIKE '%${scope}%'` : "";
|
|
199
|
+
const rows = db.all(
|
|
200
|
+
`SELECT gs.symbol, gs.documentation, gs.enclosing_symbol, d.relative_path
|
|
201
|
+
FROM global_symbols gs
|
|
202
|
+
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
203
|
+
JOIN documents d ON der.document_id = d.id
|
|
204
|
+
WHERE 1 = 1
|
|
205
|
+
${db.pathExclusionsFor("d")}
|
|
206
|
+
${scopeFilter}`
|
|
207
|
+
);
|
|
208
|
+
const counts = /* @__PURE__ */ new Map();
|
|
209
|
+
for (const row of rows) {
|
|
210
|
+
if (db.isIgnored(row.relative_path)) continue;
|
|
211
|
+
const inferred = inferKindNumber(row.symbol, row.documentation, row.enclosing_symbol);
|
|
212
|
+
if (inferred === null || inferred === 0) continue;
|
|
213
|
+
counts.set(inferred, (counts.get(inferred) ?? 0) + 1);
|
|
214
|
+
}
|
|
215
|
+
return [...counts.entries()].sort((a, b) => b[1] - a[1] || a[0] - b[0]).map(([kind, count]) => ({
|
|
216
|
+
kind,
|
|
217
|
+
kindName: KIND_NAMES[kind] ?? "Unknown",
|
|
218
|
+
count
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
function inferKindNumber(symbol, documentation, enclosingSymbol) {
|
|
222
|
+
const parsed = parseSymbol(symbol);
|
|
223
|
+
if ("kind" in parsed) {
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
const descriptors = parsed.descriptors;
|
|
227
|
+
const last = descriptors[descriptors.length - 1] ?? null;
|
|
228
|
+
const parent = descriptors[descriptors.length - 2] ?? null;
|
|
229
|
+
const suffix = leafSuffix(symbol);
|
|
230
|
+
if (suffix === "type") return 9;
|
|
231
|
+
if (suffix === "method") {
|
|
232
|
+
return parent?.suffix === "type" ? 33 : 23;
|
|
233
|
+
}
|
|
234
|
+
if (suffix === "namespace") return 39;
|
|
235
|
+
if (suffix !== "term") return null;
|
|
236
|
+
const signature = (documentation ?? "").toLowerCase();
|
|
237
|
+
if (signature.includes("async def ") || signature.includes("def ")) {
|
|
238
|
+
return 23;
|
|
239
|
+
}
|
|
240
|
+
const enclosingSuffix = enclosingSymbol ? leafSuffix(enclosingSymbol) : parent?.suffix ?? null;
|
|
241
|
+
if (enclosingSuffix === "type") {
|
|
242
|
+
return 21;
|
|
243
|
+
}
|
|
244
|
+
return 83;
|
|
245
|
+
}
|
|
167
246
|
|
|
168
247
|
export {
|
|
169
248
|
byKind,
|
|
170
249
|
kindCounts
|
|
171
250
|
};
|
|
172
|
-
//# sourceMappingURL=chunk-
|
|
251
|
+
//# sourceMappingURL=chunk-HLKAFWWJ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildFileDepGraph
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
4
|
|
|
5
5
|
// src/queries/similar-files.ts
|
|
6
6
|
function similarFiles(db, opts = {}) {
|
|
@@ -89,4 +89,4 @@ function compareProfiles(a, b, minSimilarity) {
|
|
|
89
89
|
export {
|
|
90
90
|
similarFiles
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-HLUS2HEB.js.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
findFirstSymbolMatch
|
|
3
|
-
|
|
2
|
+
findFirstSymbolMatch,
|
|
3
|
+
resolveIndexedFile
|
|
4
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
5
|
import {
|
|
5
6
|
shortenSymbol
|
|
6
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QIXNAB5K.js";
|
|
7
8
|
|
|
8
9
|
// src/queries/code.ts
|
|
9
10
|
import { readFileSync } from "fs";
|
|
@@ -43,9 +44,11 @@ function code(db, symbolPattern, opts = {}) {
|
|
|
43
44
|
};
|
|
44
45
|
}
|
|
45
46
|
function readFileRange(db, filePath, startLine, endLine, context) {
|
|
47
|
+
const resolvedPath = resolveIndexedFile(db, filePath);
|
|
48
|
+
if (!resolvedPath) return null;
|
|
46
49
|
const doc = db.get(
|
|
47
|
-
`SELECT relative_path, language FROM documents WHERE relative_path
|
|
48
|
-
|
|
50
|
+
`SELECT relative_path, language FROM documents WHERE relative_path = ?`,
|
|
51
|
+
resolvedPath
|
|
49
52
|
);
|
|
50
53
|
if (!doc) return null;
|
|
51
54
|
const fullPath = join(db.config.projectRoot, doc.relative_path);
|
|
@@ -73,4 +76,4 @@ function readFileRange(db, filePath, startLine, endLine, context) {
|
|
|
73
76
|
export {
|
|
74
77
|
code
|
|
75
78
|
};
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
79
|
+
//# sourceMappingURL=chunk-J3JSOSUO.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
shortenSymbol
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QIXNAB5K.js";
|
|
4
4
|
|
|
5
5
|
// src/queries/hotspots.ts
|
|
6
6
|
function hotspots(db, opts = {}) {
|
|
@@ -39,4 +39,4 @@ function hotspots(db, opts = {}) {
|
|
|
39
39
|
export {
|
|
40
40
|
hotspots
|
|
41
41
|
};
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-KBOQX573.js.map
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveIndexedFile
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
|
+
|
|
1
5
|
// src/queries/coupling.ts
|
|
2
6
|
function coupling(db, file1, file2) {
|
|
7
|
+
const resolvedFile1 = resolveIndexedFile(db, file1) ?? file1;
|
|
8
|
+
const resolvedFile2 = resolveIndexedFile(db, file2) ?? file2;
|
|
3
9
|
const row = db.get(
|
|
4
10
|
`SELECT COUNT(DISTINCT gs.id) AS shared
|
|
5
11
|
FROM global_symbols gs
|
|
@@ -8,36 +14,36 @@ function coupling(db, file1, file2) {
|
|
|
8
14
|
EXISTS (
|
|
9
15
|
SELECT 1 FROM defn_enclosing_ranges der
|
|
10
16
|
JOIN documents d ON der.document_id = d.id
|
|
11
|
-
WHERE der.symbol_id = gs.id AND d.relative_path
|
|
17
|
+
WHERE der.symbol_id = gs.id AND d.relative_path = ?
|
|
12
18
|
)
|
|
13
19
|
AND EXISTS (
|
|
14
20
|
SELECT 1 FROM mentions m
|
|
15
21
|
JOIN chunks c ON m.chunk_id = c.id
|
|
16
22
|
JOIN documents d ON c.document_id = d.id
|
|
17
|
-
WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path
|
|
23
|
+
WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path = ?
|
|
18
24
|
)
|
|
19
25
|
) OR (
|
|
20
26
|
-- Defined in file2, referenced in file1
|
|
21
27
|
EXISTS (
|
|
22
28
|
SELECT 1 FROM defn_enclosing_ranges der
|
|
23
29
|
JOIN documents d ON der.document_id = d.id
|
|
24
|
-
WHERE der.symbol_id = gs.id AND d.relative_path
|
|
30
|
+
WHERE der.symbol_id = gs.id AND d.relative_path = ?
|
|
25
31
|
)
|
|
26
32
|
AND EXISTS (
|
|
27
33
|
SELECT 1 FROM mentions m
|
|
28
34
|
JOIN chunks c ON m.chunk_id = c.id
|
|
29
35
|
JOIN documents d ON c.document_id = d.id
|
|
30
|
-
WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path
|
|
36
|
+
WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path = ?
|
|
31
37
|
)
|
|
32
38
|
)`,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
resolvedFile1,
|
|
40
|
+
resolvedFile2,
|
|
41
|
+
resolvedFile2,
|
|
42
|
+
resolvedFile1
|
|
37
43
|
);
|
|
38
44
|
return {
|
|
39
|
-
file1,
|
|
40
|
-
file2,
|
|
45
|
+
file1: resolvedFile1,
|
|
46
|
+
file2: resolvedFile2,
|
|
41
47
|
sharedSymbols: row?.shared ?? 0
|
|
42
48
|
};
|
|
43
49
|
}
|
|
@@ -75,4 +81,4 @@ export {
|
|
|
75
81
|
coupling,
|
|
76
82
|
topCoupling
|
|
77
83
|
};
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
84
|
+
//# sourceMappingURL=chunk-KKCHYLVI.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildFileDepGraph
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
4
|
|
|
5
5
|
// src/queries/cycles.ts
|
|
6
6
|
function cycles(db, opts = {}) {
|
|
@@ -58,4 +58,4 @@ function cycles(db, opts = {}) {
|
|
|
58
58
|
export {
|
|
59
59
|
cycles
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
61
|
+
//# sourceMappingURL=chunk-LFJQVJYJ.js.map
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getInactiveBarrelPaths,
|
|
3
|
+
isEntrySurface
|
|
4
|
+
} from "./chunk-YY4QGUQ5.js";
|
|
1
5
|
import {
|
|
2
6
|
TEST_SUPPORT_PATH_PATTERNS,
|
|
3
7
|
testFileExclusionSql
|
|
4
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-AXQKUYKF.js";
|
|
5
9
|
import {
|
|
6
10
|
shortenSymbol
|
|
7
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-QIXNAB5K.js";
|
|
8
12
|
|
|
9
13
|
// src/queries/dead.ts
|
|
10
14
|
function dead(db, opts = {}) {
|
|
@@ -18,6 +22,7 @@ function dead(db, opts = {}) {
|
|
|
18
22
|
const params = [minLoc];
|
|
19
23
|
let testFileExclusions = "";
|
|
20
24
|
let memberExclusion = "";
|
|
25
|
+
let barrelExclusions = "";
|
|
21
26
|
if (scope) {
|
|
22
27
|
params.push(`%${scope}%`);
|
|
23
28
|
}
|
|
@@ -29,10 +34,13 @@ function dead(db, opts = {}) {
|
|
|
29
34
|
if (!includeMembers) {
|
|
30
35
|
memberExclusion = `AND gs.symbol NOT LIKE '%#%'`;
|
|
31
36
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
if (skipBarrels) {
|
|
38
|
+
const inactiveBarrelPaths = getInactiveBarrelPaths(db);
|
|
39
|
+
if (inactiveBarrelPaths.length > 0) {
|
|
40
|
+
barrelExclusions = `AND ref_d.relative_path NOT IN (${inactiveBarrelPaths.map(() => "?").join(", ")})`;
|
|
41
|
+
params.push(...inactiveBarrelPaths);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
36
44
|
const sql = `
|
|
37
45
|
SELECT
|
|
38
46
|
d.relative_path,
|
|
@@ -70,7 +78,7 @@ function dead(db, opts = {}) {
|
|
|
70
78
|
let deadCodeCount = 0;
|
|
71
79
|
let fileInternalCount = 0;
|
|
72
80
|
let totalLoc = 0;
|
|
73
|
-
const symbols = rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => {
|
|
81
|
+
const symbols = rows.filter((r) => !db.isIgnored(r.relative_path)).filter((r) => !isEntrySurface(db, r.relative_path)).map((r) => {
|
|
74
82
|
const kind = r.same_file_refs === 0 ? "dead-code" : "file-internal";
|
|
75
83
|
if (kind === "dead-code") deadCodeCount++;
|
|
76
84
|
else fileInternalCount++;
|
|
@@ -98,4 +106,4 @@ function dead(db, opts = {}) {
|
|
|
98
106
|
export {
|
|
99
107
|
dead
|
|
100
108
|
};
|
|
101
|
-
//# sourceMappingURL=chunk-
|
|
109
|
+
//# sourceMappingURL=chunk-LQJUPXQY.js.map
|
|
@@ -1,16 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
findFirstSymbolMatch,
|
|
3
|
+
getSourceReferenceSites
|
|
4
|
+
} from "./chunk-AXQKUYKF.js";
|
|
5
|
+
|
|
1
6
|
// src/queries/refs.ts
|
|
2
7
|
function refs(db, symbolPattern) {
|
|
8
|
+
const match = findFirstSymbolMatch(db, symbolPattern);
|
|
9
|
+
if (match) {
|
|
10
|
+
const sourceSites = getSourceReferenceSites(db, match).filter((site) => !db.isIgnored(site.file)).map((site) => ({
|
|
11
|
+
relativePath: site.file,
|
|
12
|
+
line: site.line
|
|
13
|
+
}));
|
|
14
|
+
if (sourceSites.length > 0) {
|
|
15
|
+
return sourceSites;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
3
18
|
const rows = db.all(
|
|
4
19
|
`SELECT DISTINCT d.relative_path, c.start_line
|
|
5
20
|
FROM mentions m
|
|
6
21
|
JOIN chunks c ON m.chunk_id = c.id
|
|
7
22
|
JOIN documents d ON c.document_id = d.id
|
|
8
23
|
JOIN global_symbols gs ON m.symbol_id = gs.id
|
|
9
|
-
WHERE
|
|
24
|
+
WHERE m.symbol_id = ?
|
|
10
25
|
AND ${db.localSymbolPredicate}
|
|
11
26
|
AND m.role != 1
|
|
12
27
|
ORDER BY d.relative_path, c.start_line`,
|
|
13
|
-
|
|
28
|
+
match?.symbolId ?? -1
|
|
14
29
|
);
|
|
15
30
|
return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({
|
|
16
31
|
relativePath: r.relative_path,
|
|
@@ -21,4 +36,4 @@ function refs(db, symbolPattern) {
|
|
|
21
36
|
export {
|
|
22
37
|
refs
|
|
23
38
|
};
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-MPGIHELS.js.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import {
|
|
2
|
+
findFirstSymbolMatch
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
|
+
import {
|
|
5
|
+
isDirectChildSymbol,
|
|
6
|
+
leafSuffix,
|
|
7
|
+
shortenSymbol
|
|
8
|
+
} from "./chunk-QIXNAB5K.js";
|
|
9
|
+
|
|
10
|
+
// src/queries/members.ts
|
|
11
|
+
function members(db, symbolPattern) {
|
|
12
|
+
const parent = findFirstSymbolMatch(db, symbolPattern);
|
|
13
|
+
if (!parent) return [];
|
|
14
|
+
const rows = db.all(
|
|
15
|
+
`SELECT gs.symbol, der.start_line, der.end_line
|
|
16
|
+
FROM global_symbols gs
|
|
17
|
+
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
18
|
+
WHERE der.document_id = ?
|
|
19
|
+
AND gs.symbol != ?
|
|
20
|
+
${db.symbolNoiseFor("gs")}
|
|
21
|
+
ORDER BY der.start_line`,
|
|
22
|
+
parent.documentId,
|
|
23
|
+
parent.symbol
|
|
24
|
+
);
|
|
25
|
+
return rows.filter((row) => isDirectChildSymbol(parent.symbol, row.symbol)).map((row) => ({
|
|
26
|
+
symbol: row.symbol,
|
|
27
|
+
shortName: shortenSymbol(row.symbol),
|
|
28
|
+
startLine: row.start_line,
|
|
29
|
+
endLine: row.end_line,
|
|
30
|
+
kind: leafSuffix(row.symbol) ?? "unknown"
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export {
|
|
35
|
+
members
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=chunk-NFS5W3PP.js.map
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// src/reindex/install.ts
|
|
2
|
+
import { execFileSync } from "child_process";
|
|
3
|
+
import { platform } from "os";
|
|
4
|
+
var IS_WINDOWS = platform() === "win32";
|
|
5
|
+
function isBinaryAvailable(name) {
|
|
6
|
+
const cmd = IS_WINDOWS ? "where" : "which";
|
|
7
|
+
try {
|
|
8
|
+
execFileSync(cmd, [name], { stdio: "pipe" });
|
|
9
|
+
return true;
|
|
10
|
+
} catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function getBinaryCandidates(config) {
|
|
15
|
+
return [config.indexerBinary, ...config.binaryAliases ?? []];
|
|
16
|
+
}
|
|
17
|
+
function describeIndexerBinary(config) {
|
|
18
|
+
const candidates = getBinaryCandidates(config);
|
|
19
|
+
return candidates.length === 1 ? candidates[0] : candidates.join(" or ");
|
|
20
|
+
}
|
|
21
|
+
function resolveIndexerBinary(config) {
|
|
22
|
+
for (const candidate of getBinaryCandidates(config)) {
|
|
23
|
+
if (isBinaryAvailable(candidate)) {
|
|
24
|
+
return candidate;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
function isIndexerInstalled(config) {
|
|
30
|
+
return resolveIndexerBinary(config) !== null;
|
|
31
|
+
}
|
|
32
|
+
function tryInstallIndexer(config, onStatus) {
|
|
33
|
+
const methods = config.installMethods;
|
|
34
|
+
const binaryLabel = describeIndexerBinary(config);
|
|
35
|
+
if (!methods?.length) {
|
|
36
|
+
onStatus(`No auto-install method available for ${binaryLabel}.`);
|
|
37
|
+
if (config.installUrl) {
|
|
38
|
+
onStatus(`Install manually from: ${config.installUrl}`);
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
for (const method of methods) {
|
|
43
|
+
if (!isBinaryAvailable(method.prerequisite)) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
onStatus(`Installing ${binaryLabel} via ${method.label}...`);
|
|
47
|
+
try {
|
|
48
|
+
execFileSync(method.binary, method.args, {
|
|
49
|
+
stdio: "inherit",
|
|
50
|
+
timeout: 3e5,
|
|
51
|
+
env: process.env
|
|
52
|
+
});
|
|
53
|
+
const resolvedBinary = resolveIndexerBinary(config);
|
|
54
|
+
if (resolvedBinary) {
|
|
55
|
+
const resolutionNote = resolvedBinary === config.indexerBinary ? "" : ` (using ${resolvedBinary})`;
|
|
56
|
+
onStatus(`Successfully installed ${binaryLabel} via ${method.label}${resolutionNote}`);
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
onStatus(`${method.label} command completed but ${binaryLabel} was not found on PATH`);
|
|
60
|
+
} catch (err) {
|
|
61
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
62
|
+
onStatus(`${method.label} install failed: ${msg}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
onStatus(`Could not auto-install ${binaryLabel}.`);
|
|
66
|
+
if (config.installUrl) {
|
|
67
|
+
onStatus(`Install manually from: ${config.installUrl}`);
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// src/scip-cli.ts
|
|
73
|
+
import { execFileSync as execFileSync2 } from "child_process";
|
|
74
|
+
import { platform as platform2, arch } from "os";
|
|
75
|
+
var IS_WINDOWS2 = platform2() === "win32";
|
|
76
|
+
var SCIP_VERSION = "v0.7.0";
|
|
77
|
+
function isScipInstalled() {
|
|
78
|
+
try {
|
|
79
|
+
const cmd = IS_WINDOWS2 ? "where" : "which";
|
|
80
|
+
execFileSync2(cmd, ["scip"], { stdio: "pipe" });
|
|
81
|
+
return true;
|
|
82
|
+
} catch {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function getScipVersion() {
|
|
87
|
+
try {
|
|
88
|
+
const output = execFileSync2("scip", ["--version"], { stdio: "pipe" }).toString().trim();
|
|
89
|
+
return output;
|
|
90
|
+
} catch {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function getScipDownloadUrl() {
|
|
95
|
+
const os = platform2();
|
|
96
|
+
const cpu = arch();
|
|
97
|
+
let osName;
|
|
98
|
+
let archName;
|
|
99
|
+
let ext;
|
|
100
|
+
switch (os) {
|
|
101
|
+
case "darwin":
|
|
102
|
+
osName = "darwin";
|
|
103
|
+
ext = "tar.gz";
|
|
104
|
+
break;
|
|
105
|
+
case "linux":
|
|
106
|
+
osName = "linux";
|
|
107
|
+
ext = "tar.gz";
|
|
108
|
+
break;
|
|
109
|
+
case "win32":
|
|
110
|
+
osName = "windows";
|
|
111
|
+
ext = "zip";
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
switch (cpu) {
|
|
117
|
+
case "arm64":
|
|
118
|
+
archName = "arm64";
|
|
119
|
+
break;
|
|
120
|
+
case "x64":
|
|
121
|
+
archName = "amd64";
|
|
122
|
+
break;
|
|
123
|
+
default:
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
const filename = `scip-${osName}-${archName}.${ext}`;
|
|
127
|
+
const url = `https://github.com/sourcegraph/scip/releases/download/${SCIP_VERSION}/${filename}`;
|
|
128
|
+
return { url, filename };
|
|
129
|
+
}
|
|
130
|
+
function printScipInstallInstructions() {
|
|
131
|
+
const download = getScipDownloadUrl();
|
|
132
|
+
console.log("\nThe `scip` CLI is required but not found on PATH.\n");
|
|
133
|
+
if (platform2() === "darwin") {
|
|
134
|
+
console.log("Install via Homebrew:");
|
|
135
|
+
console.log(" brew install sourcegraph/scip/scip\n");
|
|
136
|
+
console.log("Or download manually:");
|
|
137
|
+
} else {
|
|
138
|
+
console.log("Download from:");
|
|
139
|
+
}
|
|
140
|
+
if (download) {
|
|
141
|
+
console.log(` ${download.url}
|
|
142
|
+
`);
|
|
143
|
+
} else {
|
|
144
|
+
console.log(` https://github.com/sourcegraph/scip/releases/tag/${SCIP_VERSION}
|
|
145
|
+
`);
|
|
146
|
+
}
|
|
147
|
+
console.log("After installing, ensure `scip` is on your PATH and run `scip-query reindex`.");
|
|
148
|
+
}
|
|
149
|
+
function tryInstallScipCli(onStatus) {
|
|
150
|
+
if (platform2() === "darwin" && isBinaryAvailable("brew")) {
|
|
151
|
+
onStatus("Installing scip CLI via Homebrew...");
|
|
152
|
+
try {
|
|
153
|
+
execFileSync2("brew", ["install", "sourcegraph/scip/scip"], {
|
|
154
|
+
stdio: "inherit",
|
|
155
|
+
timeout: 3e5,
|
|
156
|
+
env: process.env
|
|
157
|
+
});
|
|
158
|
+
if (isBinaryAvailable("scip")) {
|
|
159
|
+
onStatus("Successfully installed scip CLI via Homebrew");
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
} catch (err) {
|
|
163
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
164
|
+
onStatus(`Homebrew install failed: ${msg}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (isBinaryAvailable("go")) {
|
|
168
|
+
onStatus("Installing scip CLI via go install...");
|
|
169
|
+
try {
|
|
170
|
+
execFileSync2("go", ["install", "github.com/sourcegraph/scip/cmd/scip@latest"], {
|
|
171
|
+
stdio: "inherit",
|
|
172
|
+
timeout: 3e5,
|
|
173
|
+
env: process.env
|
|
174
|
+
});
|
|
175
|
+
if (isBinaryAvailable("scip")) {
|
|
176
|
+
onStatus("Successfully installed scip CLI via go install");
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
} catch (err) {
|
|
180
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
181
|
+
onStatus(`go install failed: ${msg}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
onStatus("Could not auto-install scip CLI.");
|
|
185
|
+
onStatus("Install manually from: https://github.com/sourcegraph/scip/releases");
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export {
|
|
190
|
+
isBinaryAvailable,
|
|
191
|
+
describeIndexerBinary,
|
|
192
|
+
resolveIndexerBinary,
|
|
193
|
+
isIndexerInstalled,
|
|
194
|
+
tryInstallIndexer,
|
|
195
|
+
isScipInstalled,
|
|
196
|
+
getScipVersion,
|
|
197
|
+
printScipInstallInstructions,
|
|
198
|
+
tryInstallScipCli
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=chunk-NG5F43OU.js.map
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cleanSignature
|
|
3
3
|
} from "./chunk-4TYLS5XX.js";
|
|
4
|
+
import {
|
|
5
|
+
resolveIndexedPaths
|
|
6
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
7
|
import {
|
|
5
8
|
shortenSymbol
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QIXNAB5K.js";
|
|
7
10
|
|
|
8
11
|
// src/queries/system.ts
|
|
9
12
|
function system(db, modulePattern) {
|
|
13
|
+
const matchedPaths = resolveIndexedPaths(db, modulePattern);
|
|
14
|
+
if (matchedPaths.length === 0) {
|
|
15
|
+
return { files: [], symbols: [], dependsOn: [], dependedOnBy: [] };
|
|
16
|
+
}
|
|
17
|
+
const placeholders = matchedPaths.map(() => "?").join(", ");
|
|
10
18
|
const fileRows = db.all(
|
|
11
19
|
`SELECT relative_path FROM documents
|
|
12
|
-
WHERE relative_path
|
|
20
|
+
WHERE relative_path IN (${placeholders})
|
|
13
21
|
ORDER BY relative_path`,
|
|
14
|
-
|
|
22
|
+
...matchedPaths
|
|
15
23
|
);
|
|
16
24
|
const files = fileRows.map((r) => r.relative_path).filter((p) => !db.isIgnored(p));
|
|
17
25
|
const symbolRows = db.all(
|
|
@@ -20,12 +28,12 @@ function system(db, modulePattern) {
|
|
|
20
28
|
FROM defn_enclosing_ranges der
|
|
21
29
|
JOIN global_symbols gs ON der.symbol_id = gs.id
|
|
22
30
|
JOIN documents d ON der.document_id = d.id
|
|
23
|
-
WHERE d.relative_path
|
|
31
|
+
WHERE d.relative_path IN (${placeholders})
|
|
24
32
|
AND ${db.localSymbolPredicate}
|
|
25
33
|
${db.symbolNoise}
|
|
26
34
|
AND gs.documentation IS NOT NULL
|
|
27
35
|
ORDER BY d.relative_path, der.start_line`,
|
|
28
|
-
|
|
36
|
+
...matchedPaths
|
|
29
37
|
);
|
|
30
38
|
const symbols = symbolRows.map((r) => ({
|
|
31
39
|
startLine: r.start_line,
|
|
@@ -42,12 +50,12 @@ function system(db, modulePattern) {
|
|
|
42
50
|
JOIN global_symbols gs ON m.symbol_id = gs.id
|
|
43
51
|
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
44
52
|
JOIN documents d2 ON der.document_id = d2.id
|
|
45
|
-
WHERE d1.relative_path
|
|
46
|
-
AND d2.relative_path NOT
|
|
53
|
+
WHERE d1.relative_path IN (${placeholders})
|
|
54
|
+
AND d2.relative_path NOT IN (${placeholders})
|
|
47
55
|
AND ${db.localSymbolPredicate}
|
|
48
56
|
ORDER BY d2.relative_path`,
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
...matchedPaths,
|
|
58
|
+
...matchedPaths
|
|
51
59
|
);
|
|
52
60
|
const dependsOn = depRows.map((r) => r.relative_path).filter((p) => !db.isIgnored(p));
|
|
53
61
|
const rdepRows = db.all(
|
|
@@ -58,11 +66,11 @@ function system(db, modulePattern) {
|
|
|
58
66
|
JOIN global_symbols gs ON m.symbol_id = gs.id
|
|
59
67
|
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
60
68
|
JOIN documents d2 ON der.document_id = d2.id
|
|
61
|
-
WHERE d2.relative_path
|
|
62
|
-
AND d1.relative_path NOT
|
|
69
|
+
WHERE d2.relative_path IN (${placeholders})
|
|
70
|
+
AND d1.relative_path NOT IN (${placeholders})
|
|
63
71
|
ORDER BY d1.relative_path`,
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
...matchedPaths,
|
|
73
|
+
...matchedPaths
|
|
66
74
|
);
|
|
67
75
|
const dependedOnBy = rdepRows.map((r) => r.relative_path).filter((p) => !db.isIgnored(p));
|
|
68
76
|
return { files, symbols, dependsOn, dependedOnBy };
|
|
@@ -71,4 +79,4 @@ function system(db, modulePattern) {
|
|
|
71
79
|
export {
|
|
72
80
|
system
|
|
73
81
|
};
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-O7Q7FDUJ.js.map
|