scip-query 0.2.0 → 0.2.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-2UELLEBI.js +1 -0
- package/dist/chunk-34JPTNRN.js +601 -0
- package/dist/{chunk-W4ALF422.js → chunk-3566TKJ5.js} +3 -3
- package/dist/{chunk-Z6YZJ36C.js → chunk-4ACRRQC4.js} +8 -4
- package/dist/{chunk-Z4GHE2HD.js → chunk-4BQFSNFI.js} +6 -2
- package/dist/{chunk-4XHWPRAX.js → chunk-6QSHLFSL.js} +3 -3
- package/dist/{chunk-4EXL2CUA.js → chunk-6WVR5K46.js} +16 -8
- package/dist/{chunk-ZQIIPFD7.js → chunk-75RQSBTK.js} +2 -2
- package/dist/{chunk-KPPHZCZJ.js → chunk-7HK5ZLOE.js} +28 -46
- package/dist/{chunk-MCUX5LA7.js → chunk-7JFZSOJ7.js} +3 -3
- package/dist/{chunk-6SXADWLW.js → chunk-AKMBBKWV.js} +2 -2
- package/dist/{chunk-NHBZIL2J.js → chunk-AMNISGYR.js} +3 -3
- package/dist/{chunk-2CKGIR6G.js → chunk-BFLULBEU.js} +3 -3
- package/dist/{chunk-HPFZLISB.js → chunk-CU62ZDHI.js} +2 -2
- package/dist/{chunk-EQYLEQCW.js → chunk-DY4AFG2W.js} +12 -10
- package/dist/{chunk-5RMYT5WH.js → chunk-F7XU27LU.js} +2 -2
- package/dist/{chunk-KCBMVQL5.js → chunk-GPJVPT3U.js} +2 -2
- package/dist/{chunk-NUZ4OMU3.js → chunk-GU2H5QRN.js} +2 -2
- package/dist/{chunk-UJQN5N3I.js → chunk-H6WCPKCX.js} +6 -3
- package/dist/{chunk-OVPLOMPY.js → chunk-HMYJJ3HY.js} +7 -4
- package/dist/chunk-IJKLB2JW.js +69 -0
- package/dist/{chunk-DGUPQSOR.js → chunk-IXPHLF6K.js} +2 -2
- package/dist/{chunk-7PBOG4YE.js → chunk-KBOQX573.js} +2 -2
- package/dist/{chunk-ZOGY2V3N.js → chunk-LLMPAG56.js} +93 -30
- package/dist/{chunk-BOVXCR46.js → chunk-LTJC5ZQL.js} +2 -2
- package/dist/{chunk-LAWMH22O.js → chunk-M3NPW3FC.js} +2 -2
- package/dist/{chunk-NWCE4CIC.js → chunk-M4QGEKKD.js} +5 -27
- package/dist/{chunk-63G7IQTD.js → chunk-MVH45PYK.js} +20 -40
- package/dist/chunk-N4C3H7LH.js +37 -0
- package/dist/chunk-NG5F43OU.js +200 -0
- package/dist/{chunk-D567NFIF.js → chunk-NVIIM34O.js} +3 -3
- package/dist/{chunk-BNN2RKD2.js → chunk-ORINICIZ.js} +3 -3
- package/dist/{chunk-4PDAL6IL.js → chunk-PMJKOXOT.js} +3 -3
- package/dist/{chunk-QOV2R2WT.js → chunk-QIXNAB5K.js} +42 -2
- package/dist/{chunk-7LLPRPR5.js → chunk-R2I3M5B4.js} +2 -2
- package/dist/{chunk-7RLE5EWE.js → chunk-R56FJU3E.js} +34 -13
- package/dist/{chunk-H2MDONBU.js → chunk-RFMT7UAZ.js} +3 -3
- package/dist/{chunk-SEFSL2GF.js → chunk-TOIEB3LG.js} +2 -2
- package/dist/chunk-VO4QI3LS.js +84 -0
- package/dist/{chunk-ZK6GXM3J.js → chunk-WVK7AASK.js} +3 -3
- package/dist/{chunk-HMLMH7VZ.js → chunk-Y3M323OX.js} +2 -2
- package/dist/{chunk-DCKMSTJ4.js → chunk-Y4JFVQ7C.js} +2 -2
- package/dist/{chunk-7UCKSQRS.js → chunk-YAFWL3RA.js} +3 -3
- package/dist/{chunk-FGXRVW7G.js → chunk-YZ6L7GFO.js} +2 -2
- package/dist/cli.js +1355 -671
- package/dist/{db-BNVVZSfP.d.ts → db-BHYam4BK.d.ts} +6 -18
- package/dist/index.d.ts +15 -15
- package/dist/index.js +260 -231
- 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 +2 -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/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/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 +2 -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 +43 -48
- 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 +2 -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/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 +1 -1
- 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 +2 -2
- package/dist/queries/symbols.d.ts +1 -1
- package/dist/queries/symbols.js +2 -2
- package/dist/queries/system.d.ts +1 -1
- package/dist/queries/system.js +2 -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.map +0 -1
- package/dist/chunk-BNN2RKD2.js.map +0 -1
- package/dist/chunk-BOVXCR46.js.map +0 -1
- 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.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.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.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
|
@@ -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,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildFileDepGraph
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LLMPAG56.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-R2I3M5B4.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildFileDepGraph
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LLMPAG56.js";
|
|
4
4
|
|
|
5
5
|
// src/queries/drift.ts
|
|
6
6
|
import path from "path";
|
|
@@ -10,9 +10,10 @@ function drift(db, opts) {
|
|
|
10
10
|
const symbolRefs = buildSymbolRefGraph(db, scope);
|
|
11
11
|
const results = [];
|
|
12
12
|
for (const [file, deps] of depGraph) {
|
|
13
|
-
if (
|
|
13
|
+
if (shouldSkipDriftFile(file)) continue;
|
|
14
14
|
const referencedFiles = symbolRefs.get(file) ?? /* @__PURE__ */ new Set();
|
|
15
15
|
for (const dep of deps) {
|
|
16
|
+
if (shouldSkipDriftFile(dep)) continue;
|
|
16
17
|
if (!referencedFiles.has(dep)) {
|
|
17
18
|
if (isLikelyTypeOnlyDep(dep)) continue;
|
|
18
19
|
results.push({
|
|
@@ -26,10 +27,11 @@ function drift(db, opts) {
|
|
|
26
27
|
}
|
|
27
28
|
const layerRules = inferLayerRules(depGraph);
|
|
28
29
|
for (const [file, deps] of depGraph) {
|
|
29
|
-
if (
|
|
30
|
-
const fileLayer =
|
|
30
|
+
if (shouldSkipDriftFile(file)) continue;
|
|
31
|
+
const fileLayer = getArchitecturalLayer(file);
|
|
31
32
|
for (const dep of deps) {
|
|
32
|
-
|
|
33
|
+
if (shouldSkipDriftFile(dep)) continue;
|
|
34
|
+
const depLayer = getArchitecturalLayer(dep);
|
|
33
35
|
if (fileLayer === depLayer) continue;
|
|
34
36
|
const violation = layerRules.get(`${fileLayer}->${depLayer}`);
|
|
35
37
|
if (violation === "violation") {
|
|
@@ -53,14 +55,16 @@ function drift(db, opts) {
|
|
|
53
55
|
if (files.length < 3) continue;
|
|
54
56
|
const depFreq = /* @__PURE__ */ new Map();
|
|
55
57
|
for (const file of files) {
|
|
56
|
-
if (
|
|
58
|
+
if (shouldSkipDriftFile(file)) continue;
|
|
57
59
|
for (const dep of depGraph.get(file) ?? []) {
|
|
60
|
+
if (shouldSkipDriftFile(dep)) continue;
|
|
58
61
|
depFreq.set(dep, (depFreq.get(dep) ?? 0) + 1);
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
64
|
for (const file of files) {
|
|
62
|
-
if (
|
|
65
|
+
if (shouldSkipDriftFile(file)) continue;
|
|
63
66
|
for (const dep of depGraph.get(file) ?? []) {
|
|
67
|
+
if (shouldSkipDriftFile(dep)) continue;
|
|
64
68
|
if ((depFreq.get(dep) ?? 0) === 1) {
|
|
65
69
|
if (path.dirname(dep) === dir) continue;
|
|
66
70
|
results.push({
|
|
@@ -107,10 +111,12 @@ function inferLayerRules(depGraph) {
|
|
|
107
111
|
const layerEdges = /* @__PURE__ */ new Map();
|
|
108
112
|
const layerSet = /* @__PURE__ */ new Set();
|
|
109
113
|
for (const [file, deps] of depGraph) {
|
|
110
|
-
|
|
114
|
+
if (shouldSkipDriftFile(file)) continue;
|
|
115
|
+
const fromLayer = getArchitecturalLayer(file);
|
|
111
116
|
layerSet.add(fromLayer);
|
|
112
117
|
for (const dep of deps) {
|
|
113
|
-
|
|
118
|
+
if (shouldSkipDriftFile(dep)) continue;
|
|
119
|
+
const toLayer = getArchitecturalLayer(dep);
|
|
114
120
|
if (fromLayer === toLayer) continue;
|
|
115
121
|
layerSet.add(toLayer);
|
|
116
122
|
const key = `${fromLayer}->${toLayer}`;
|
|
@@ -123,13 +129,23 @@ function inferLayerRules(depGraph) {
|
|
|
123
129
|
}
|
|
124
130
|
return rules;
|
|
125
131
|
}
|
|
126
|
-
function
|
|
127
|
-
const
|
|
128
|
-
|
|
132
|
+
function getArchitecturalLayer(filePath) {
|
|
133
|
+
const normalized = filePath.replace(/\\/g, "/");
|
|
134
|
+
const parts = normalized.split("/").filter(Boolean);
|
|
135
|
+
if (parts.length <= 1) {
|
|
136
|
+
return "(root)";
|
|
137
|
+
}
|
|
138
|
+
if (parts.length >= 3 && ["src", "lib", "app", "server", "client"].includes(parts[0])) {
|
|
139
|
+
return `${parts[0]}/${parts[1]}`;
|
|
140
|
+
}
|
|
141
|
+
return parts[0];
|
|
129
142
|
}
|
|
130
143
|
function isLikelyTypeOnlyDep(dep) {
|
|
131
144
|
return dep.includes("types") || dep.endsWith(".d.ts");
|
|
132
145
|
}
|
|
146
|
+
function shouldSkipDriftFile(filePath) {
|
|
147
|
+
return isStructuralRole(path.basename(filePath)) || isTestLikePath(filePath);
|
|
148
|
+
}
|
|
133
149
|
function isStructuralRole(basename) {
|
|
134
150
|
if (basename === "index.ts" || basename === "index.js") return true;
|
|
135
151
|
if (basename === "cli.ts" || basename === "main.ts" || basename === "main.rs") return true;
|
|
@@ -137,8 +153,13 @@ function isStructuralRole(basename) {
|
|
|
137
153
|
if (basename === "health.ts" || basename === "health.js") return true;
|
|
138
154
|
return false;
|
|
139
155
|
}
|
|
156
|
+
function isTestLikePath(filePath) {
|
|
157
|
+
const normalized = filePath.replace(/\\/g, "/");
|
|
158
|
+
const basename = path.basename(normalized);
|
|
159
|
+
return normalized.includes("/__tests__/") || normalized.includes("/tests/") || normalized.includes("/test/") || /\.(test|spec)\.[A-Za-z0-9]+$/.test(basename) || /_(test|spec)\.[A-Za-z0-9]+$/.test(basename) || /^test[_-]/.test(basename) || /^test\./.test(basename);
|
|
160
|
+
}
|
|
140
161
|
|
|
141
162
|
export {
|
|
142
163
|
drift
|
|
143
164
|
};
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
165
|
+
//# sourceMappingURL=chunk-R56FJU3E.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
findFirstSymbolMatch
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LLMPAG56.js";
|
|
4
4
|
import {
|
|
5
5
|
shortenSymbol
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QIXNAB5K.js";
|
|
7
7
|
|
|
8
8
|
// src/queries/code.ts
|
|
9
9
|
import { readFileSync } from "fs";
|
|
@@ -73,4 +73,4 @@ function readFileRange(db, filePath, startLine, endLine, context) {
|
|
|
73
73
|
export {
|
|
74
74
|
code
|
|
75
75
|
};
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
76
|
+
//# sourceMappingURL=chunk-RFMT7UAZ.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
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildFileDepGraph
|
|
3
|
+
} from "./chunk-LLMPAG56.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-VO4QI3LS.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
testFileExclusionSql
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LLMPAG56.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-WVK7AASK.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildFileDepGraph
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LLMPAG56.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-Y3M323OX.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-4TYLS5XX.js";
|
|
4
4
|
import {
|
|
5
5
|
shortenSymbol
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QIXNAB5K.js";
|
|
7
7
|
|
|
8
8
|
// src/queries/system.ts
|
|
9
9
|
function system(db, modulePattern) {
|
|
@@ -71,4 +71,4 @@ function system(db, modulePattern) {
|
|
|
71
71
|
export {
|
|
72
72
|
system
|
|
73
73
|
};
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-Y4JFVQ7C.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
findFirstSymbolMatch,
|
|
3
3
|
getCalleeRowsForSymbol
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LLMPAG56.js";
|
|
5
5
|
import {
|
|
6
6
|
shortenSymbol
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QIXNAB5K.js";
|
|
8
8
|
|
|
9
9
|
// src/queries/call-graph.ts
|
|
10
10
|
function callGraph(db, symbolPattern) {
|
|
@@ -52,4 +52,4 @@ function callGraph(db, symbolPattern) {
|
|
|
52
52
|
export {
|
|
53
53
|
callGraph
|
|
54
54
|
};
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
55
|
+
//# sourceMappingURL=chunk-YAFWL3RA.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
|