scip-query 0.4.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2DSS2NGF.js +10 -0
- package/dist/chunk-2RLP74AO.js +2 -0
- package/dist/chunk-4QJ7LVW5.js +2 -0
- package/dist/chunk-4TYGGOLO.js +5 -0
- package/dist/chunk-5IADAU5B.js +7 -0
- package/dist/chunk-7754WFFV.js +18 -0
- package/dist/chunk-7VOF4ZG6.js +2 -0
- package/dist/chunk-7Z4COVMC.js +2 -0
- package/dist/chunk-AJ5PWKD4.js +2 -0
- package/dist/chunk-BDBRZPX3.js +7 -0
- package/dist/chunk-BE6EQIWY.js +2 -0
- package/dist/chunk-BQ3INTYT.js +8 -0
- package/dist/chunk-D7KLLMPB.js +2 -0
- package/dist/chunk-D7YBWSON.js +29 -0
- package/dist/chunk-DE5ZBHMK.js +39 -0
- package/dist/chunk-DHYIJHXZ.js +33 -0
- package/dist/chunk-EEF3YEHW.js +2 -0
- package/dist/chunk-F2LLHRRZ.js +2 -0
- package/dist/chunk-FCC3XJTI.js +2 -0
- package/dist/chunk-GNXRLK5G.js +2 -0
- package/dist/chunk-GXVB36TG.js +62 -0
- package/dist/chunk-HMKJTAZD.js +2 -0
- package/dist/chunk-IBGBI3VU.js +2 -0
- package/dist/chunk-IYFZS4PV.js +84 -0
- package/dist/chunk-JH3A7HTU.js +2 -0
- package/dist/chunk-JS2RNIC7.js +2 -0
- package/dist/chunk-K5FQFCSN.js +41 -0
- package/dist/chunk-K6GBKEQE.js +6 -0
- package/dist/chunk-KO7YJRWP.js +12 -0
- package/dist/chunk-KYT47WU2.js +4 -0
- package/dist/chunk-LORWXBOO.js +2 -0
- package/dist/chunk-LX4H4LLG.js +89 -0
- package/dist/chunk-N3Z2SJCR.js +2 -0
- package/dist/chunk-NTDA4A2D.js +25 -0
- package/dist/chunk-NXMYYHDO.js +24 -0
- package/dist/chunk-PZ6ESKRH.js +7 -0
- package/dist/chunk-QXE6EDY2.js +6 -0
- package/dist/chunk-RJ7SPBJ5.js +5 -0
- package/dist/chunk-RWE6FHG3.js +3 -0
- package/dist/chunk-SDX6MDBL.js +2 -0
- package/dist/chunk-SG35Y7J2.js +2 -0
- package/dist/chunk-STOGKRJH.js +4 -0
- package/dist/chunk-TINPMWJK.js +2 -0
- package/dist/chunk-UJB62HV3.js +2 -0
- package/dist/chunk-VEUMRDHW.js +2 -0
- package/dist/chunk-WCDXJGYT.js +65 -0
- package/dist/chunk-WTSTDJZ7.js +6 -0
- package/dist/chunk-XAZTIDST.js +2 -0
- package/dist/chunk-XVDASCN7.js +35 -0
- package/dist/chunk-Y7H6D2EV.js +2 -0
- package/dist/chunk-Y7LOQSWY.js +2 -0
- package/dist/chunk-YIPCV7M7.js +70 -0
- package/dist/chunk-ZSRXMNMK.js +5 -0
- package/dist/chunk-ZXKURFVB.js +56 -0
- package/dist/cli.js +509 -8938
- package/dist/{db-6F9R9e_t.d.ts → db-BSTtBG_H.d.ts} +146 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.js +13 -1616
- package/dist/postinstall.js +4 -100
- package/dist/queries/affected.d.ts +1 -1
- package/dist/queries/affected.js +1 -8
- package/dist/queries/bottlenecks.d.ts +1 -1
- package/dist/queries/bottlenecks.js +1 -8
- package/dist/queries/by-kind.d.ts +1 -4
- package/dist/queries/by-kind.js +1 -10
- package/dist/queries/call-graph.d.ts +1 -1
- package/dist/queries/call-graph.js +1 -8
- package/dist/queries/change-surface.d.ts +4 -1
- package/dist/queries/change-surface.js +1 -8
- package/dist/queries/code.d.ts +1 -1
- package/dist/queries/code.js +1 -8
- package/dist/queries/complexity-hotspots.d.ts +5 -3
- package/dist/queries/complexity-hotspots.js +1 -8
- package/dist/queries/complexity.d.ts +1 -1
- package/dist/queries/complexity.js +1 -8
- package/dist/queries/convergence.d.ts +1 -1
- package/dist/queries/convergence.js +1 -8
- package/dist/queries/coupling.d.ts +1 -1
- package/dist/queries/coupling.js +1 -10
- package/dist/queries/cycles.d.ts +1 -1
- package/dist/queries/cycles.js +1 -8
- package/dist/queries/dataflow.d.ts +1 -1
- package/dist/queries/dataflow.js +1 -8
- package/dist/queries/dead.d.ts +1 -1
- package/dist/queries/dead.js +1 -9
- package/dist/queries/deep-chains.d.ts +9 -1
- package/dist/queries/deep-chains.js +1 -8
- package/dist/queries/deps.d.ts +1 -1
- package/dist/queries/deps.js +1 -10
- package/dist/queries/diff-impact.d.ts +1 -1
- package/dist/queries/diff-impact.js +1 -7
- package/dist/queries/drift.d.ts +1 -1
- package/dist/queries/drift.js +1 -8
- package/dist/queries/extract-candidates.d.ts +1 -1
- package/dist/queries/extract-candidates.js +1 -8
- package/dist/queries/fan.d.ts +1 -1
- package/dist/queries/fan.js +1 -14
- package/dist/queries/files.d.ts +1 -1
- package/dist/queries/files.js +1 -6
- package/dist/queries/health.d.ts +1 -1
- package/dist/queries/health.js +1 -20
- package/dist/queries/hierarchy.d.ts +1 -1
- package/dist/queries/hierarchy.js +1 -8
- package/dist/queries/hotspots.d.ts +1 -1
- package/dist/queries/hotspots.js +1 -8
- package/dist/queries/imports.d.ts +1 -1
- package/dist/queries/imports.js +1 -12
- package/dist/queries/index.d.ts +1 -1
- package/dist/queries/index.js +1 -197
- package/dist/queries/isolated.d.ts +1 -1
- package/dist/queries/isolated.js +1 -9
- package/dist/queries/members.d.ts +4 -1
- package/dist/queries/members.js +1 -8
- package/dist/queries/methods.d.ts +1 -1
- package/dist/queries/methods.js +1 -8
- package/dist/queries/outline.d.ts +4 -1
- package/dist/queries/outline.js +1 -8
- package/dist/queries/passthrough-candidates.d.ts +1 -1
- package/dist/queries/passthrough-candidates.js +1 -8
- package/dist/queries/redundant-reexports.d.ts +1 -1
- package/dist/queries/redundant-reexports.js +1 -9
- package/dist/queries/refs.d.ts +1 -1
- package/dist/queries/refs.js +1 -8
- package/dist/queries/similar-chains.d.ts +1 -1
- package/dist/queries/similar-chains.js +1 -8
- package/dist/queries/similar-files.d.ts +1 -1
- package/dist/queries/similar-files.js +1 -8
- package/dist/queries/similar-signatures.d.ts +1 -1
- package/dist/queries/similar-signatures.js +1 -8
- package/dist/queries/similar.d.ts +1 -1
- package/dist/queries/similar.js +1 -10
- package/dist/queries/slice.d.ts +1 -1
- package/dist/queries/slice.js +1 -8
- package/dist/queries/stale-abstractions.d.ts +15 -5
- package/dist/queries/stale-abstractions.js +1 -8
- package/dist/queries/stats.d.ts +1 -1
- package/dist/queries/stats.js +1 -6
- package/dist/queries/surface.d.ts +1 -1
- package/dist/queries/surface.js +1 -8
- package/dist/queries/symbols.d.ts +1 -1
- package/dist/queries/symbols.js +1 -9
- package/dist/queries/system.d.ts +6 -2
- package/dist/queries/system.js +1 -9
- package/dist/queries/trace.d.ts +1 -1
- package/dist/queries/trace.js +1 -9
- package/dist/queries/wrapper-candidates.d.ts +1 -1
- package/dist/queries/wrapper-candidates.js +1 -8
- package/dist/reindex-worker.js +7 -672
- package/package.json +20 -2
- package/dist/chunk-334PCFO3.js +0 -221
- package/dist/chunk-46ZTW4AI.js +0 -61
- package/dist/chunk-4TYLS5XX.js +0 -10
- package/dist/chunk-4YN3PE57.js +0 -124
- package/dist/chunk-5YB6UXQ3.js +0 -101
- package/dist/chunk-6PVHJ332.js +0 -44
- package/dist/chunk-74RFWB5T.js +0 -24
- package/dist/chunk-7KGTWDAX.js +0 -87
- package/dist/chunk-7OGXSMLY.js +0 -105
- package/dist/chunk-AEBM56CO.js +0 -69
- package/dist/chunk-B747RITP.js +0 -38
- package/dist/chunk-B7LDMCUS.js +0 -110
- package/dist/chunk-C2VSV54P.js +0 -110
- package/dist/chunk-DIYEUFVP.js +0 -81
- package/dist/chunk-E74RY6AQ.js +0 -93
- package/dist/chunk-FIMTTUGE.js +0 -165
- package/dist/chunk-FMAYH7GS.js +0 -2542
- package/dist/chunk-FO2CBB7U.js +0 -23
- package/dist/chunk-HESWGDIV.js +0 -162
- package/dist/chunk-HL2LXSBW.js +0 -34
- package/dist/chunk-HW76DVE4.js +0 -216
- package/dist/chunk-IC5NTO47.js +0 -53
- package/dist/chunk-J34HAAEQ.js +0 -59
- package/dist/chunk-JSXGC2EH.js +0 -151
- package/dist/chunk-LQXBFCP2.js +0 -87
- package/dist/chunk-NML6M5AS.js +0 -37
- package/dist/chunk-NNFP4ZRF.js +0 -72
- package/dist/chunk-NWXTQGUE.js +0 -49
- package/dist/chunk-NYZ6INK3.js +0 -95
- package/dist/chunk-OMVF3BHY.js +0 -84
- package/dist/chunk-P3VCDYMJ.js +0 -269
- package/dist/chunk-PGQXIAJF.js +0 -79
- package/dist/chunk-PKDFXASW.js +0 -76
- package/dist/chunk-PSK5BPFE.js +0 -82
- package/dist/chunk-QZ4FRB65.js +0 -341
- package/dist/chunk-R2QBMQQN.js +0 -185
- package/dist/chunk-T3ALCNCP.js +0 -113
- package/dist/chunk-T6UVM534.js +0 -213
- package/dist/chunk-U74VYTLX.js +0 -46
- package/dist/chunk-UIRCHPOU.js +0 -34
- package/dist/chunk-UNS6ZQVX.js +0 -71
- package/dist/chunk-VJMTX3OR.js +0 -115
- package/dist/chunk-XJSPWHNT.js +0 -64
- package/dist/chunk-XMZAC2VU.js +0 -84
- package/dist/chunk-Y7FKURZG.js +0 -130
- package/dist/chunk-YMSJCSRG.js +0 -213
- package/dist/chunk-YQIWS5V6.js +0 -172
- package/dist/chunk-ZPEI7DRJ.js +0 -66
- package/dist/queries/clean-signature.d.ts +0 -9
- package/dist/queries/clean-signature.js +0 -7
package/dist/chunk-FIMTTUGE.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildFileDepGraph
|
|
3
|
-
} from "./chunk-FMAYH7GS.js";
|
|
4
|
-
|
|
5
|
-
// src/queries/drift.ts
|
|
6
|
-
import path from "path";
|
|
7
|
-
function drift(db, opts) {
|
|
8
|
-
const { scope } = opts ?? {};
|
|
9
|
-
const depGraph = buildFileDepGraph(db, scope);
|
|
10
|
-
const symbolRefs = buildSymbolRefGraph(db, scope);
|
|
11
|
-
const results = [];
|
|
12
|
-
for (const [file, deps] of depGraph) {
|
|
13
|
-
if (shouldSkipDriftFile(file)) continue;
|
|
14
|
-
const referencedFiles = symbolRefs.get(file) ?? /* @__PURE__ */ new Set();
|
|
15
|
-
for (const dep of deps) {
|
|
16
|
-
if (shouldSkipDriftFile(dep)) continue;
|
|
17
|
-
if (!referencedFiles.has(dep)) {
|
|
18
|
-
if (isLikelyTypeOnlyDep(dep)) continue;
|
|
19
|
-
results.push({
|
|
20
|
-
file,
|
|
21
|
-
kind: "unused-import",
|
|
22
|
-
description: `Depends on ${dep} but references none of its symbols`,
|
|
23
|
-
dep
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
const layerRules = inferLayerRules(depGraph);
|
|
29
|
-
for (const [file, deps] of depGraph) {
|
|
30
|
-
if (shouldSkipDriftFile(file)) continue;
|
|
31
|
-
const fileLayer = getArchitecturalLayer(file);
|
|
32
|
-
for (const dep of deps) {
|
|
33
|
-
if (shouldSkipDriftFile(dep)) continue;
|
|
34
|
-
const depLayer = getArchitecturalLayer(dep);
|
|
35
|
-
if (fileLayer === depLayer) continue;
|
|
36
|
-
const violation = layerRules.get(`${fileLayer}->${depLayer}`);
|
|
37
|
-
if (violation === "violation") {
|
|
38
|
-
results.push({
|
|
39
|
-
file,
|
|
40
|
-
kind: "layer-violation",
|
|
41
|
-
description: `Imports from ${depLayer}/ (${dep}) \u2014 may cross architectural boundary`,
|
|
42
|
-
dep,
|
|
43
|
-
detail: `${fileLayer}/ should not depend on ${depLayer}/`
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const dirToFiles = /* @__PURE__ */ new Map();
|
|
49
|
-
for (const file of depGraph.keys()) {
|
|
50
|
-
const dir = path.dirname(file);
|
|
51
|
-
if (!dirToFiles.has(dir)) dirToFiles.set(dir, []);
|
|
52
|
-
dirToFiles.get(dir).push(file);
|
|
53
|
-
}
|
|
54
|
-
for (const [dir, files] of dirToFiles) {
|
|
55
|
-
if (files.length < 3) continue;
|
|
56
|
-
const depFreq = /* @__PURE__ */ new Map();
|
|
57
|
-
for (const file of files) {
|
|
58
|
-
if (shouldSkipDriftFile(file)) continue;
|
|
59
|
-
for (const dep of depGraph.get(file) ?? []) {
|
|
60
|
-
if (shouldSkipDriftFile(dep)) continue;
|
|
61
|
-
depFreq.set(dep, (depFreq.get(dep) ?? 0) + 1);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
for (const file of files) {
|
|
65
|
-
if (shouldSkipDriftFile(file)) continue;
|
|
66
|
-
for (const dep of depGraph.get(file) ?? []) {
|
|
67
|
-
if (shouldSkipDriftFile(dep)) continue;
|
|
68
|
-
if ((depFreq.get(dep) ?? 0) === 1) {
|
|
69
|
-
if (path.dirname(dep) === dir) continue;
|
|
70
|
-
results.push({
|
|
71
|
-
file,
|
|
72
|
-
kind: "pattern-deviation",
|
|
73
|
-
description: `Only file in ${dir}/ that depends on ${dep}`,
|
|
74
|
-
dep
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return {
|
|
81
|
-
results,
|
|
82
|
-
unusedImports: results.filter((r) => r.kind === "unused-import").length,
|
|
83
|
-
layerViolations: results.filter((r) => r.kind === "layer-violation").length,
|
|
84
|
-
patternDeviations: results.filter((r) => r.kind === "pattern-deviation").length
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
function buildSymbolRefGraph(db, scope) {
|
|
88
|
-
const scopeFilter = scope ? `AND d1.relative_path LIKE '%${scope}%'` : "";
|
|
89
|
-
const rows = db.all(
|
|
90
|
-
`SELECT DISTINCT d1.relative_path AS from_file, d2.relative_path AS to_file
|
|
91
|
-
FROM mentions m
|
|
92
|
-
JOIN chunks c ON m.chunk_id = c.id
|
|
93
|
-
JOIN documents d1 ON c.document_id = d1.id
|
|
94
|
-
JOIN global_symbols gs ON m.symbol_id = gs.id
|
|
95
|
-
JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
|
|
96
|
-
JOIN documents d2 ON der.document_id = d2.id
|
|
97
|
-
WHERE d1.id != d2.id
|
|
98
|
-
AND m.role != 1
|
|
99
|
-
${db.pathExclusionsFor("d1", "d2")}
|
|
100
|
-
${scopeFilter}`
|
|
101
|
-
);
|
|
102
|
-
const graph = /* @__PURE__ */ new Map();
|
|
103
|
-
for (const r of rows) {
|
|
104
|
-
if (db.isIgnored(r.from_file) || db.isIgnored(r.to_file)) continue;
|
|
105
|
-
if (!graph.has(r.from_file)) graph.set(r.from_file, /* @__PURE__ */ new Set());
|
|
106
|
-
graph.get(r.from_file).add(r.to_file);
|
|
107
|
-
}
|
|
108
|
-
return graph;
|
|
109
|
-
}
|
|
110
|
-
function inferLayerRules(depGraph) {
|
|
111
|
-
const layerEdges = /* @__PURE__ */ new Map();
|
|
112
|
-
const layerSet = /* @__PURE__ */ new Set();
|
|
113
|
-
for (const [file, deps] of depGraph) {
|
|
114
|
-
if (shouldSkipDriftFile(file)) continue;
|
|
115
|
-
const fromLayer = getArchitecturalLayer(file);
|
|
116
|
-
layerSet.add(fromLayer);
|
|
117
|
-
for (const dep of deps) {
|
|
118
|
-
if (shouldSkipDriftFile(dep)) continue;
|
|
119
|
-
const toLayer = getArchitecturalLayer(dep);
|
|
120
|
-
if (fromLayer === toLayer) continue;
|
|
121
|
-
layerSet.add(toLayer);
|
|
122
|
-
const key = `${fromLayer}->${toLayer}`;
|
|
123
|
-
layerEdges.set(key, (layerEdges.get(key) ?? 0) + 1);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
const rules = /* @__PURE__ */ new Map();
|
|
127
|
-
for (const [edge, count] of layerEdges) {
|
|
128
|
-
rules.set(edge, count <= 2 ? "violation" : "ok");
|
|
129
|
-
}
|
|
130
|
-
return rules;
|
|
131
|
-
}
|
|
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];
|
|
142
|
-
}
|
|
143
|
-
function isLikelyTypeOnlyDep(dep) {
|
|
144
|
-
return dep.includes("types") || dep.endsWith(".d.ts");
|
|
145
|
-
}
|
|
146
|
-
function shouldSkipDriftFile(filePath) {
|
|
147
|
-
return isStructuralRole(path.basename(filePath)) || isTestLikePath(filePath);
|
|
148
|
-
}
|
|
149
|
-
function isStructuralRole(basename) {
|
|
150
|
-
if (basename === "index.ts" || basename === "index.js") return true;
|
|
151
|
-
if (basename === "cli.ts" || basename === "main.ts" || basename === "main.rs") return true;
|
|
152
|
-
if (basename.includes("worker.") || basename.includes("postinstall.")) return true;
|
|
153
|
-
if (basename === "health.ts" || basename === "health.js") return true;
|
|
154
|
-
return false;
|
|
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
|
-
}
|
|
161
|
-
|
|
162
|
-
export {
|
|
163
|
-
drift
|
|
164
|
-
};
|
|
165
|
-
//# sourceMappingURL=chunk-FIMTTUGE.js.map
|