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,16 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
findFirstSymbolMatch,
|
|
3
3
|
getCalleeRowsForSymbol
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AXQKUYKF.js";
|
|
5
5
|
import {
|
|
6
|
+
isFunctionLikeSymbol,
|
|
6
7
|
shortenSymbol
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-QIXNAB5K.js";
|
|
8
9
|
|
|
9
10
|
// src/queries/similar.ts
|
|
10
11
|
function similar(db, symbolPattern, opts = {}) {
|
|
11
12
|
const { minSimilarity = 0.4, limit = 20 } = opts;
|
|
12
13
|
const target = findCallees(db, symbolPattern);
|
|
13
14
|
if (!target || target.callees.size === 0) return [];
|
|
15
|
+
if (!isFunctionLikeSymbol(target.symbol)) return [];
|
|
14
16
|
const candidates = getAllCalleeFingerprints(db, {
|
|
15
17
|
minCallees: 3,
|
|
16
18
|
excludeSymbol: target.symbol
|
|
@@ -160,6 +162,7 @@ function getAllCalleeFingerprints(db, opts) {
|
|
|
160
162
|
const fingerprints = [];
|
|
161
163
|
for (const sym of symbols) {
|
|
162
164
|
if (db.isIgnored(sym.relative_path)) continue;
|
|
165
|
+
if (!isFunctionLikeSymbol(sym.symbol)) continue;
|
|
163
166
|
const calleeRows = getCalleeRowsForSymbol(db, {
|
|
164
167
|
documentId: sym.document_id,
|
|
165
168
|
startLine: sym.start_line,
|
|
@@ -192,4 +195,4 @@ export {
|
|
|
192
195
|
similar,
|
|
193
196
|
similarAll
|
|
194
197
|
};
|
|
195
|
-
//# sourceMappingURL=chunk-
|
|
198
|
+
//# sourceMappingURL=chunk-OIDHN6GD.js.map
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isLiveBarrel
|
|
3
|
+
} from "./chunk-YY4QGUQ5.js";
|
|
1
4
|
import {
|
|
2
5
|
shortenSymbol
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QIXNAB5K.js";
|
|
4
7
|
|
|
5
8
|
// src/queries/redundant-reexports.ts
|
|
6
9
|
function redundantReexports(db, opts = {}) {
|
|
@@ -36,6 +39,7 @@ function redundantReexports(db, opts = {}) {
|
|
|
36
39
|
const results = [];
|
|
37
40
|
for (const row of reexportRows) {
|
|
38
41
|
if (db.isIgnored(row.barrel_path) || db.isIgnored(row.original_path)) continue;
|
|
42
|
+
if (isLiveBarrel(db, row.barrel_path)) continue;
|
|
39
43
|
const consumerCounts = db.get(
|
|
40
44
|
`SELECT
|
|
41
45
|
SUM(CASE WHEN uses_barrel = 1 THEN 1 ELSE 0 END) AS barrel_consumers,
|
|
@@ -98,4 +102,4 @@ function redundantReexports(db, opts = {}) {
|
|
|
98
102
|
export {
|
|
99
103
|
redundantReexports
|
|
100
104
|
};
|
|
101
|
-
//# sourceMappingURL=chunk-
|
|
105
|
+
//# sourceMappingURL=chunk-P3E6L7KW.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
testFileExclusionSql
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
4
|
import {
|
|
5
5
|
shortenSymbol
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QIXNAB5K.js";
|
|
7
7
|
|
|
8
8
|
// src/queries/stale-abstractions.ts
|
|
9
9
|
function staleAbstractions(db, opts) {
|
|
@@ -61,4 +61,4 @@ function staleAbstractions(db, opts) {
|
|
|
61
61
|
export {
|
|
62
62
|
staleAbstractions
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-P4WO3BBW.js.map
|
|
@@ -161,10 +161,50 @@ function leafName(raw) {
|
|
|
161
161
|
const last = sym.descriptors[sym.descriptors.length - 1];
|
|
162
162
|
return last.name;
|
|
163
163
|
}
|
|
164
|
+
function leafSuffix(raw) {
|
|
165
|
+
const parsed = parseSymbol(raw);
|
|
166
|
+
if ("kind" in parsed && parsed.kind === "local") {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
const sym = parsed;
|
|
170
|
+
const last = sym.descriptors[sym.descriptors.length - 1];
|
|
171
|
+
return last?.suffix ?? null;
|
|
172
|
+
}
|
|
173
|
+
function isFunctionLikeSymbol(raw) {
|
|
174
|
+
const suffix = leafSuffix(raw);
|
|
175
|
+
return suffix === "method" || suffix === "term";
|
|
176
|
+
}
|
|
177
|
+
function isModuleLikeSymbol(raw) {
|
|
178
|
+
return leafSuffix(raw) === "namespace";
|
|
179
|
+
}
|
|
180
|
+
function isDirectChildSymbol(parentRaw, candidateRaw) {
|
|
181
|
+
const parent = parseSymbol(parentRaw);
|
|
182
|
+
const candidate = parseSymbol(candidateRaw);
|
|
183
|
+
if ("kind" in parent || "kind" in candidate) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
const parentDescriptors = parent.descriptors;
|
|
187
|
+
const candidateDescriptors = candidate.descriptors;
|
|
188
|
+
if (candidateDescriptors.length !== parentDescriptors.length + 1) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
for (let i = 0; i < parentDescriptors.length; i++) {
|
|
192
|
+
const parentDesc = parentDescriptors[i];
|
|
193
|
+
const candidateDesc = candidateDescriptors[i];
|
|
194
|
+
if (parentDesc.name !== candidateDesc.name || parentDesc.suffix !== candidateDesc.suffix) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
164
200
|
|
|
165
201
|
export {
|
|
166
202
|
parseSymbol,
|
|
167
203
|
shortenSymbol,
|
|
168
|
-
leafName
|
|
204
|
+
leafName,
|
|
205
|
+
leafSuffix,
|
|
206
|
+
isFunctionLikeSymbol,
|
|
207
|
+
isModuleLikeSymbol,
|
|
208
|
+
isDirectChildSymbol
|
|
169
209
|
};
|
|
170
|
-
//# sourceMappingURL=chunk-
|
|
210
|
+
//# sourceMappingURL=chunk-QIXNAB5K.js.map
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "./chunk-ZOGY2V3N.js";
|
|
2
|
+
resolveIndexedFile
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
5
4
|
import {
|
|
6
5
|
shortenSymbol
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QIXNAB5K.js";
|
|
8
7
|
|
|
9
8
|
// src/queries/change-surface.ts
|
|
10
9
|
function changeSurface(db, filePattern) {
|
|
10
|
+
const resolvedFile = resolveIndexedFile(db, filePattern);
|
|
11
|
+
if (!resolvedFile) return null;
|
|
11
12
|
const doc = db.get(
|
|
12
13
|
`SELECT id, relative_path FROM documents
|
|
13
|
-
WHERE relative_path
|
|
14
|
+
WHERE relative_path = ?
|
|
14
15
|
${db.pathExclusionsFor("documents")}
|
|
15
16
|
LIMIT 1`,
|
|
16
|
-
|
|
17
|
+
resolvedFile
|
|
17
18
|
);
|
|
18
19
|
if (!doc || db.isIgnored(doc.relative_path)) return null;
|
|
19
20
|
const syms = db.all(
|
|
@@ -25,10 +26,8 @@ function changeSurface(db, filePattern) {
|
|
|
25
26
|
ORDER BY der.start_line`,
|
|
26
27
|
doc.id
|
|
27
28
|
);
|
|
28
|
-
const testPatternSql = testFileMatchSql("ref_d", TEST_FILE_PATTERNS);
|
|
29
29
|
const symbols = [];
|
|
30
30
|
let totalExternalConsumers = 0;
|
|
31
|
-
let coveredCount = 0;
|
|
32
31
|
for (const sym of syms) {
|
|
33
32
|
const consumerRow = db.get(
|
|
34
33
|
`SELECT COUNT(DISTINCT c.document_id) AS consumer_count
|
|
@@ -41,23 +40,10 @@ function changeSurface(db, filePattern) {
|
|
|
41
40
|
doc.id
|
|
42
41
|
);
|
|
43
42
|
const externalConsumers = consumerRow?.consumer_count ?? 0;
|
|
44
|
-
const testFiles = db.all(
|
|
45
|
-
`SELECT DISTINCT ref_d.relative_path
|
|
46
|
-
FROM mentions m
|
|
47
|
-
JOIN chunks c ON m.chunk_id = c.id
|
|
48
|
-
JOIN documents ref_d ON c.document_id = ref_d.id
|
|
49
|
-
WHERE m.symbol_id = ?
|
|
50
|
-
AND m.role != 1
|
|
51
|
-
AND (${testPatternSql})
|
|
52
|
-
ORDER BY ref_d.relative_path`,
|
|
53
|
-
sym.symbol_id
|
|
54
|
-
).map((r) => r.relative_path);
|
|
55
|
-
const hasTests = testFiles.length > 0;
|
|
56
|
-
if (hasTests) coveredCount++;
|
|
57
43
|
let riskLevel;
|
|
58
|
-
if (externalConsumers > 10
|
|
44
|
+
if (externalConsumers > 10) {
|
|
59
45
|
riskLevel = "high";
|
|
60
|
-
} else if (externalConsumers >
|
|
46
|
+
} else if (externalConsumers > 0) {
|
|
61
47
|
riskLevel = "medium";
|
|
62
48
|
} else {
|
|
63
49
|
riskLevel = "low";
|
|
@@ -69,20 +55,17 @@ function changeSurface(db, filePattern) {
|
|
|
69
55
|
startLine: sym.start_line,
|
|
70
56
|
endLine: sym.end_line,
|
|
71
57
|
externalConsumers,
|
|
72
|
-
testFiles,
|
|
73
58
|
riskLevel
|
|
74
59
|
});
|
|
75
60
|
}
|
|
76
|
-
const testCoveragePercent = symbols.length > 0 ? Math.round(coveredCount / symbols.length * 100) : 0;
|
|
77
61
|
return {
|
|
78
62
|
file: doc.relative_path,
|
|
79
63
|
symbols,
|
|
80
|
-
totalExternalConsumers
|
|
81
|
-
testCoveragePercent
|
|
64
|
+
totalExternalConsumers
|
|
82
65
|
};
|
|
83
66
|
}
|
|
84
67
|
|
|
85
68
|
export {
|
|
86
69
|
changeSurface
|
|
87
70
|
};
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-SMDCNPMK.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/similar-signatures.ts
|
|
6
6
|
function similarSignatures(db, opts = {}) {
|
|
@@ -75,4 +75,4 @@ function normalizeSignature(raw) {
|
|
|
75
75
|
export {
|
|
76
76
|
similarSignatures
|
|
77
77
|
};
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
78
|
+
//# sourceMappingURL=chunk-TOIEB3LG.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
findFirstSymbolMatch,
|
|
3
3
|
getCalleeRowsForSymbol
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AXQKUYKF.js";
|
|
5
5
|
import {
|
|
6
6
|
shortenSymbol
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QIXNAB5K.js";
|
|
8
8
|
|
|
9
9
|
// src/queries/complexity.ts
|
|
10
10
|
import { readFileSync } from "fs";
|
|
@@ -107,4 +107,4 @@ function stripCommentsAndStrings(source) {
|
|
|
107
107
|
export {
|
|
108
108
|
complexity
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
110
|
+
//# sourceMappingURL=chunk-UGQKAVCD.js.map
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isEntrySurface
|
|
3
|
+
} from "./chunk-YY4QGUQ5.js";
|
|
1
4
|
import {
|
|
2
5
|
testFileExclusionSql
|
|
3
|
-
} from "./chunk-
|
|
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/isolated.ts
|
|
9
12
|
function isolated(db, opts = {}) {
|
|
@@ -41,7 +44,7 @@ function isolated(db, opts = {}) {
|
|
|
41
44
|
ORDER BY loc DESC, d.relative_path`,
|
|
42
45
|
minLoc
|
|
43
46
|
);
|
|
44
|
-
return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({
|
|
47
|
+
return rows.filter((r) => !db.isIgnored(r.relative_path)).filter((r) => !isEntrySurface(db, r.relative_path)).map((r) => ({
|
|
45
48
|
symbol: r.symbol,
|
|
46
49
|
shortName: shortenSymbol(r.symbol),
|
|
47
50
|
relativePath: r.relative_path,
|
|
@@ -54,4 +57,4 @@ function isolated(db, opts = {}) {
|
|
|
54
57
|
export {
|
|
55
58
|
isolated
|
|
56
59
|
};
|
|
57
|
-
//# sourceMappingURL=chunk-
|
|
60
|
+
//# sourceMappingURL=chunk-UQEQ6AHX.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
testFileExclusionSql
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
4
|
import {
|
|
5
5
|
shortenSymbol
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QIXNAB5K.js";
|
|
7
7
|
|
|
8
8
|
// src/queries/complexity-hotspots.ts
|
|
9
9
|
function complexityHotspots(db, opts) {
|
|
@@ -99,4 +99,4 @@ function complexityHotspots(db, opts) {
|
|
|
99
99
|
export {
|
|
100
100
|
complexityHotspots
|
|
101
101
|
};
|
|
102
|
-
//# sourceMappingURL=chunk-
|
|
102
|
+
//# sourceMappingURL=chunk-VIYSWZCO.js.map
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import {
|
|
2
|
+
findExactSymbolMatch,
|
|
3
|
+
findFirstSymbolMatch,
|
|
4
|
+
getSourceReferenceSites
|
|
5
|
+
} from "./chunk-AXQKUYKF.js";
|
|
6
|
+
import {
|
|
7
|
+
shortenSymbol
|
|
8
|
+
} from "./chunk-QIXNAB5K.js";
|
|
9
|
+
|
|
10
|
+
// src/queries/affected.ts
|
|
11
|
+
function affected(db, symbolPattern, opts = {}) {
|
|
12
|
+
const { maxDepth = 5, scope } = opts;
|
|
13
|
+
const target = findFirstSymbolMatch(db, symbolPattern);
|
|
14
|
+
if (!target) return [];
|
|
15
|
+
const results = [];
|
|
16
|
+
const visited = /* @__PURE__ */ new Set([target.symbolId]);
|
|
17
|
+
const seenResults = /* @__PURE__ */ new Set();
|
|
18
|
+
let frontier = [target];
|
|
19
|
+
for (let depth = 1; depth <= maxDepth; depth++) {
|
|
20
|
+
if (frontier.length === 0) break;
|
|
21
|
+
const nextFrontier = [];
|
|
22
|
+
for (const current of frontier) {
|
|
23
|
+
for (const row of getDirectAffectedRows(db, current, scope)) {
|
|
24
|
+
const resultKey = `${row.file}|${row.shortName}`;
|
|
25
|
+
if (row.symbolId !== null) {
|
|
26
|
+
if (visited.has(row.symbolId)) continue;
|
|
27
|
+
visited.add(row.symbolId);
|
|
28
|
+
} else if (seenResults.has(resultKey)) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
seenResults.add(resultKey);
|
|
32
|
+
results.push({
|
|
33
|
+
symbol: row.symbol,
|
|
34
|
+
shortName: row.shortName,
|
|
35
|
+
file: row.file,
|
|
36
|
+
depth
|
|
37
|
+
});
|
|
38
|
+
if (row.symbolId !== null && row.symbolMatch) {
|
|
39
|
+
nextFrontier.push(row.symbolMatch);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
frontier = nextFrontier;
|
|
44
|
+
}
|
|
45
|
+
results.sort((a, b) => a.depth - b.depth || a.file.localeCompare(b.file));
|
|
46
|
+
return results;
|
|
47
|
+
}
|
|
48
|
+
function getDirectAffectedRows(db, target, scope) {
|
|
49
|
+
const sourceSites = getSourceReferenceSites(db, target).filter((site) => !db.isIgnored(site.file)).filter((site) => !scope || site.file.includes(scope));
|
|
50
|
+
if (sourceSites.length > 0) {
|
|
51
|
+
const rows2 = [];
|
|
52
|
+
const seen = /* @__PURE__ */ new Set();
|
|
53
|
+
for (const site of sourceSites) {
|
|
54
|
+
if (!site.enclosingSymbol || site.enclosingSymbol === target.symbol) {
|
|
55
|
+
const key2 = `${site.file}|(top-level)`;
|
|
56
|
+
if (seen.has(key2)) continue;
|
|
57
|
+
seen.add(key2);
|
|
58
|
+
rows2.push({
|
|
59
|
+
symbolId: null,
|
|
60
|
+
symbol: site.file,
|
|
61
|
+
shortName: "(top-level)",
|
|
62
|
+
file: site.file,
|
|
63
|
+
symbolMatch: null
|
|
64
|
+
});
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const enclosing = findExactSymbolMatch(db, site.enclosingSymbol);
|
|
68
|
+
if (!enclosing || enclosing.symbolId === target.symbolId || db.isIgnored(enclosing.relativePath)) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const key = `${enclosing.symbolId}|${enclosing.relativePath}`;
|
|
72
|
+
if (seen.has(key)) continue;
|
|
73
|
+
seen.add(key);
|
|
74
|
+
rows2.push({
|
|
75
|
+
symbolId: enclosing.symbolId,
|
|
76
|
+
symbol: enclosing.symbol,
|
|
77
|
+
shortName: shortenSymbol(enclosing.symbol),
|
|
78
|
+
file: enclosing.relativePath,
|
|
79
|
+
symbolMatch: enclosing
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return rows2;
|
|
83
|
+
}
|
|
84
|
+
const rows = db.all(
|
|
85
|
+
`SELECT DISTINCT
|
|
86
|
+
enc_gs.id AS symbol_id,
|
|
87
|
+
enc_gs.symbol AS symbol,
|
|
88
|
+
enc_d.relative_path AS relative_path
|
|
89
|
+
FROM mentions m
|
|
90
|
+
JOIN chunks c ON m.chunk_id = c.id
|
|
91
|
+
JOIN documents ref_d ON c.document_id = ref_d.id
|
|
92
|
+
JOIN defn_enclosing_ranges enc_der
|
|
93
|
+
ON enc_der.document_id = ref_d.id
|
|
94
|
+
AND c.start_line >= enc_der.start_line
|
|
95
|
+
AND c.end_line <= enc_der.end_line
|
|
96
|
+
JOIN global_symbols enc_gs ON enc_der.symbol_id = enc_gs.id
|
|
97
|
+
JOIN documents enc_d ON enc_der.document_id = enc_d.id
|
|
98
|
+
WHERE m.symbol_id = ?
|
|
99
|
+
AND m.role != 1
|
|
100
|
+
AND enc_gs.id != ?
|
|
101
|
+
${db.symbolNoiseFor("enc_gs")}
|
|
102
|
+
${db.pathExclusionsFor("enc_d")}
|
|
103
|
+
${scope ? `AND enc_d.relative_path LIKE '%${scope}%'` : ""}
|
|
104
|
+
ORDER BY enc_d.relative_path
|
|
105
|
+
LIMIT 1`,
|
|
106
|
+
target.symbolId,
|
|
107
|
+
target.symbolId
|
|
108
|
+
);
|
|
109
|
+
return rows.filter((row) => !db.isIgnored(row.relative_path)).map((row) => ({
|
|
110
|
+
symbolId: row.symbol_id,
|
|
111
|
+
symbol: row.symbol,
|
|
112
|
+
shortName: shortenSymbol(row.symbol),
|
|
113
|
+
file: row.relative_path,
|
|
114
|
+
symbolMatch: findExactSymbolMatch(db, row.symbol)
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export {
|
|
119
|
+
affected
|
|
120
|
+
};
|
|
121
|
+
//# sourceMappingURL=chunk-VJJKSGIX.js.map
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveIndexedFile
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
|
+
|
|
1
5
|
// src/queries/deps.ts
|
|
2
6
|
function deps(db, filePattern) {
|
|
7
|
+
const resolvedFile = resolveIndexedFile(db, filePattern);
|
|
8
|
+
if (!resolvedFile) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
3
11
|
const rows = db.all(
|
|
4
12
|
`SELECT DISTINCT d2.relative_path
|
|
5
13
|
FROM mentions m
|
|
@@ -8,15 +16,19 @@ function deps(db, filePattern) {
|
|
|
8
16
|
JOIN global_symbols gs ON m.symbol_id = gs.id
|
|
9
17
|
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
10
18
|
JOIN documents d2 ON der.document_id = d2.id
|
|
11
|
-
WHERE d1.relative_path
|
|
19
|
+
WHERE d1.relative_path = ?
|
|
12
20
|
AND d2.relative_path <> d1.relative_path
|
|
13
21
|
AND ${db.localSymbolPredicate}
|
|
14
22
|
ORDER BY d2.relative_path`,
|
|
15
|
-
|
|
23
|
+
resolvedFile
|
|
16
24
|
);
|
|
17
25
|
return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({ relativePath: r.relative_path }));
|
|
18
26
|
}
|
|
19
27
|
function rdeps(db, filePattern) {
|
|
28
|
+
const resolvedFile = resolveIndexedFile(db, filePattern);
|
|
29
|
+
if (!resolvedFile) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
20
32
|
const rows = db.all(
|
|
21
33
|
`SELECT DISTINCT d1.relative_path
|
|
22
34
|
FROM mentions m
|
|
@@ -25,11 +37,11 @@ function rdeps(db, filePattern) {
|
|
|
25
37
|
JOIN global_symbols gs ON m.symbol_id = gs.id
|
|
26
38
|
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
27
39
|
JOIN documents d2 ON der.document_id = d2.id
|
|
28
|
-
WHERE d2.relative_path
|
|
29
|
-
AND d1.relative_path
|
|
40
|
+
WHERE d2.relative_path = ?
|
|
41
|
+
AND d1.relative_path != ?
|
|
30
42
|
ORDER BY d1.relative_path`,
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
resolvedFile,
|
|
44
|
+
resolvedFile
|
|
33
45
|
);
|
|
34
46
|
return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({ relativePath: r.relative_path }));
|
|
35
47
|
}
|
|
@@ -38,4 +50,4 @@ export {
|
|
|
38
50
|
deps,
|
|
39
51
|
rdeps
|
|
40
52
|
};
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
53
|
+
//# sourceMappingURL=chunk-VT4JBH6L.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-chains.ts
|
|
6
6
|
function similarChains(db, opts = {}) {
|
|
@@ -210,4 +210,4 @@ function isSubChain(sub, full) {
|
|
|
210
210
|
export {
|
|
211
211
|
similarChains
|
|
212
212
|
};
|
|
213
|
-
//# sourceMappingURL=chunk-
|
|
213
|
+
//# sourceMappingURL=chunk-WGAD3GNR.js.map
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {
|
|
2
|
+
findFirstSymbolMatch
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
|
+
import {
|
|
5
|
+
parseSymbol,
|
|
6
|
+
shortenSymbol
|
|
7
|
+
} from "./chunk-QIXNAB5K.js";
|
|
8
|
+
|
|
9
|
+
// src/queries/hierarchy.ts
|
|
10
|
+
function hierarchy(db, symbolPattern) {
|
|
11
|
+
const match = findFirstSymbolMatch(db, symbolPattern);
|
|
12
|
+
if (!match) return [];
|
|
13
|
+
const sym = db.get(
|
|
14
|
+
`SELECT symbol, enclosing_symbol FROM global_symbols
|
|
15
|
+
WHERE id = ? LIMIT 1`,
|
|
16
|
+
match.symbolId
|
|
17
|
+
);
|
|
18
|
+
if (!sym) return [];
|
|
19
|
+
const chain = [
|
|
20
|
+
{ symbol: sym.symbol, shortName: shortenSymbol(sym.symbol), depth: 0 }
|
|
21
|
+
];
|
|
22
|
+
let current = sym.enclosing_symbol;
|
|
23
|
+
let depth = 1;
|
|
24
|
+
const seen = /* @__PURE__ */ new Set([sym.symbol]);
|
|
25
|
+
while (current && !seen.has(current) && depth < 20) {
|
|
26
|
+
seen.add(current);
|
|
27
|
+
const parent = db.get(
|
|
28
|
+
`SELECT symbol, enclosing_symbol FROM global_symbols WHERE symbol = ?`,
|
|
29
|
+
current
|
|
30
|
+
);
|
|
31
|
+
if (!parent) break;
|
|
32
|
+
chain.push({
|
|
33
|
+
symbol: parent.symbol,
|
|
34
|
+
shortName: shortenSymbol(parent.symbol),
|
|
35
|
+
depth
|
|
36
|
+
});
|
|
37
|
+
current = parent.enclosing_symbol;
|
|
38
|
+
depth++;
|
|
39
|
+
}
|
|
40
|
+
if (chain.length > 1) {
|
|
41
|
+
return chain;
|
|
42
|
+
}
|
|
43
|
+
const parsed = parseSymbol(sym.symbol);
|
|
44
|
+
if ("kind" in parsed) {
|
|
45
|
+
return chain;
|
|
46
|
+
}
|
|
47
|
+
const descriptors = parsed.descriptors;
|
|
48
|
+
if (descriptors.length <= 1) {
|
|
49
|
+
return chain;
|
|
50
|
+
}
|
|
51
|
+
const syntheticChain = [chain[0]];
|
|
52
|
+
for (let i = descriptors.length - 2, syntheticDepth = 1; i >= 0; i--, syntheticDepth++) {
|
|
53
|
+
const partial = descriptors.slice(0, i + 1);
|
|
54
|
+
const shortName = partial.map(
|
|
55
|
+
(descriptor) => descriptor.suffix === "method" ? `${descriptor.name}()` : descriptor.name.replace(/\.(ts|tsx|js|jsx|mjs|cjs|py|pyi|rs|java|scala|kt|kts|rb|go|cs|vb|dart|php|c|cc|cpp|cxx|h|hpp)$/, "")
|
|
56
|
+
).join(":");
|
|
57
|
+
syntheticChain.push({
|
|
58
|
+
symbol: shortName,
|
|
59
|
+
shortName,
|
|
60
|
+
depth: syntheticDepth
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return syntheticChain;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
hierarchy
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=chunk-YDBXNPYU.js.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildFileDepGraph
|
|
3
|
+
} from "./chunk-AXQKUYKF.js";
|
|
4
|
+
|
|
5
|
+
// src/entry-surfaces.ts
|
|
6
|
+
var liveBarrelCache = /* @__PURE__ */ new WeakMap();
|
|
7
|
+
function normalizePath(path) {
|
|
8
|
+
return path.replace(/\\/g, "/");
|
|
9
|
+
}
|
|
10
|
+
function isBarrelFile(path) {
|
|
11
|
+
const normalized = normalizePath(path);
|
|
12
|
+
return normalized === "index.ts" || normalized === "index.js" || normalized.endsWith("/index.ts") || normalized.endsWith("/index.js") || normalized.endsWith("/mod.rs") || normalized.endsWith("/__init__.py");
|
|
13
|
+
}
|
|
14
|
+
function isWorkerEntrySurface(path) {
|
|
15
|
+
const normalized = normalizePath(path);
|
|
16
|
+
return /(^|\/)[^/]*worker\.(ts|js|mjs|cjs|rs|py|go)$/.test(normalized);
|
|
17
|
+
}
|
|
18
|
+
function isStructuralEntrySurface(path) {
|
|
19
|
+
const normalized = normalizePath(path);
|
|
20
|
+
const segments = normalized.split("/");
|
|
21
|
+
const basename = segments[segments.length - 1] ?? normalized;
|
|
22
|
+
if (basename === "cli.ts" || basename === "cli.js" || basename === "postinstall.ts" || basename === "postinstall.js" || basename === "main.ts" || basename === "main.js" || basename === "main.rs" || basename === "main.go" || basename === "main.py") {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
if (basename === "index.ts" || basename === "index.js") {
|
|
26
|
+
return segments.length <= 2;
|
|
27
|
+
}
|
|
28
|
+
return normalized.endsWith("/mod.rs") || normalized.endsWith("/__init__.py");
|
|
29
|
+
}
|
|
30
|
+
function getIndexedPaths(db) {
|
|
31
|
+
return db.all(
|
|
32
|
+
`SELECT d.relative_path
|
|
33
|
+
FROM documents d
|
|
34
|
+
WHERE 1 = 1
|
|
35
|
+
${db.pathExclusionsFor("d")}
|
|
36
|
+
ORDER BY d.relative_path`
|
|
37
|
+
).map((row) => row.relative_path).filter((path) => !db.isIgnored(path));
|
|
38
|
+
}
|
|
39
|
+
function getLiveBarrelPaths(db) {
|
|
40
|
+
const cached = liveBarrelCache.get(db);
|
|
41
|
+
if (cached) {
|
|
42
|
+
return cached;
|
|
43
|
+
}
|
|
44
|
+
const graph = buildFileDepGraph(db);
|
|
45
|
+
const queue = getIndexedPaths(db).filter(
|
|
46
|
+
(path) => isStructuralEntrySurface(path) || isWorkerEntrySurface(path)
|
|
47
|
+
);
|
|
48
|
+
const visited = /* @__PURE__ */ new Set();
|
|
49
|
+
const liveBarrels = /* @__PURE__ */ new Set();
|
|
50
|
+
while (queue.length > 0) {
|
|
51
|
+
const current = queue.shift();
|
|
52
|
+
if (visited.has(current)) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
visited.add(current);
|
|
56
|
+
if (isBarrelFile(current)) {
|
|
57
|
+
liveBarrels.add(current);
|
|
58
|
+
}
|
|
59
|
+
for (const dep of graph.get(current) ?? []) {
|
|
60
|
+
if (!visited.has(dep)) {
|
|
61
|
+
queue.push(dep);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
liveBarrelCache.set(db, liveBarrels);
|
|
66
|
+
return liveBarrels;
|
|
67
|
+
}
|
|
68
|
+
function isLiveBarrel(db, path) {
|
|
69
|
+
return getLiveBarrelPaths(db).has(normalizePath(path));
|
|
70
|
+
}
|
|
71
|
+
function isEntrySurface(db, path) {
|
|
72
|
+
return isStructuralEntrySurface(path) || isWorkerEntrySurface(path) || isLiveBarrel(db, path);
|
|
73
|
+
}
|
|
74
|
+
function getInactiveBarrelPaths(db) {
|
|
75
|
+
const liveBarrels = getLiveBarrelPaths(db);
|
|
76
|
+
return getIndexedPaths(db).filter((path) => isBarrelFile(path)).filter((path) => !liveBarrels.has(path));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export {
|
|
80
|
+
isLiveBarrel,
|
|
81
|
+
isEntrySurface,
|
|
82
|
+
getInactiveBarrelPaths
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=chunk-YY4QGUQ5.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/doc-coverage.ts
|
|
6
6
|
function docCoverage(db, opts = {}) {
|
|
@@ -70,4 +70,4 @@ function docCoverage(db, opts = {}) {
|
|
|
70
70
|
export {
|
|
71
71
|
docCoverage
|
|
72
72
|
};
|
|
73
|
-
//# sourceMappingURL=chunk-
|
|
73
|
+
//# sourceMappingURL=chunk-YZ6L7GFO.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getCalleeRowsForSymbol,
|
|
3
3
|
testFileExclusionSql
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AXQKUYKF.js";
|
|
5
5
|
import {
|
|
6
6
|
shortenSymbol
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QIXNAB5K.js";
|
|
8
8
|
|
|
9
9
|
// src/queries/passthrough-candidates.ts
|
|
10
10
|
function passthroughCandidates(db, opts) {
|
|
@@ -68,4 +68,4 @@ function passthroughCandidates(db, opts) {
|
|
|
68
68
|
export {
|
|
69
69
|
passthroughCandidates
|
|
70
70
|
};
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-ZEUCXQBN.js.map
|