scip-query 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/chunk-26DOJ63W.js +161 -0
  2. package/dist/{chunk-PMJKOXOT.js → chunk-4JCSOF2O.js} +2 -2
  3. package/dist/{chunk-AKMBBKWV.js → chunk-5OMVSV6E.js} +12 -4
  4. package/dist/{chunk-R56FJU3E.js → chunk-7KIMF5PV.js} +2 -2
  5. package/dist/chunk-AXQKUYKF.js +1442 -0
  6. package/dist/chunk-C7H5WBTJ.js +46 -0
  7. package/dist/{chunk-AMNISGYR.js → chunk-CHDJXYBG.js} +2 -27
  8. package/dist/{chunk-GPJVPT3U.js → chunk-CPVAQJEC.js} +12 -4
  9. package/dist/{chunk-75RQSBTK.js → chunk-DH7G3DDV.js} +2 -2
  10. package/dist/{chunk-LTJC5ZQL.js → chunk-EOROMIFO.js} +13 -5
  11. package/dist/{chunk-BFLULBEU.js → chunk-EPWLXXBL.js} +2 -2
  12. package/dist/{chunk-MVH45PYK.js → chunk-FYYOWQXK.js} +12 -12
  13. package/dist/chunk-GEXE2T6I.js +87 -0
  14. package/dist/{chunk-IXPHLF6K.js → chunk-GJDHTTR2.js} +10 -3
  15. package/dist/chunk-GSH2FPKV.js +87 -0
  16. package/dist/{chunk-4ACRRQC4.js → chunk-HJZUSUPU.js} +2 -2
  17. package/dist/{chunk-M3NPW3FC.js → chunk-HLKAFWWJ.js} +81 -2
  18. package/dist/{chunk-CU62ZDHI.js → chunk-HLUS2HEB.js} +2 -2
  19. package/dist/{chunk-RFMT7UAZ.js → chunk-J3JSOSUO.js} +8 -5
  20. package/dist/{chunk-HDSRORNV.js → chunk-KKCHYLVI.js} +17 -11
  21. package/dist/{chunk-Y3M323OX.js → chunk-LFJQVJYJ.js} +2 -2
  22. package/dist/{chunk-6WVR5K46.js → chunk-LQJUPXQY.js} +3 -3
  23. package/dist/{chunk-ITZ3DDOG.js → chunk-MPGIHELS.js} +18 -3
  24. package/dist/{chunk-N4C3H7LH.js → chunk-NFS5W3PP.js} +2 -2
  25. package/dist/{chunk-Y4JFVQ7C.js → chunk-O7Q7FDUJ.js} +21 -13
  26. package/dist/{chunk-H6WCPKCX.js → chunk-OIDHN6GD.js} +2 -2
  27. package/dist/{chunk-4BQFSNFI.js → chunk-P3E6L7KW.js} +2 -2
  28. package/dist/{chunk-ORINICIZ.js → chunk-P4WO3BBW.js} +2 -2
  29. package/dist/{chunk-M4QGEKKD.js → chunk-SMDCNPMK.js} +8 -3
  30. package/dist/{chunk-6QSHLFSL.js → chunk-UGQKAVCD.js} +2 -2
  31. package/dist/{chunk-HMYJJ3HY.js → chunk-UQEQ6AHX.js} +3 -3
  32. package/dist/{chunk-WVK7AASK.js → chunk-VIYSWZCO.js} +2 -2
  33. package/dist/chunk-VJJKSGIX.js +121 -0
  34. package/dist/{chunk-N5KEREIA.js → chunk-VT4JBH6L.js} +19 -7
  35. package/dist/{chunk-R2I3M5B4.js → chunk-WGAD3GNR.js} +2 -2
  36. package/dist/{chunk-IJKLB2JW.js → chunk-YDBXNPYU.js} +2 -2
  37. package/dist/{chunk-VO4QI3LS.js → chunk-YY4QGUQ5.js} +2 -2
  38. package/dist/{chunk-3566TKJ5.js → chunk-ZEUCXQBN.js} +2 -2
  39. package/dist/cli.js +2310 -1351
  40. package/dist/{db-BHYam4BK.d.ts → db-ShvwGDKf.d.ts} +6 -1
  41. package/dist/index.d.ts +2 -2
  42. package/dist/index.js +38 -38
  43. package/dist/queries/affected.d.ts +1 -1
  44. package/dist/queries/affected.js +2 -2
  45. package/dist/queries/bottlenecks.d.ts +1 -1
  46. package/dist/queries/by-kind.d.ts +1 -1
  47. package/dist/queries/by-kind.js +1 -1
  48. package/dist/queries/call-graph.d.ts +1 -1
  49. package/dist/queries/call-graph.js +2 -2
  50. package/dist/queries/change-surface.d.ts +1 -1
  51. package/dist/queries/change-surface.js +2 -1
  52. package/dist/queries/code.d.ts +1 -1
  53. package/dist/queries/code.js +2 -2
  54. package/dist/queries/complexity-hotspots.d.ts +1 -1
  55. package/dist/queries/complexity-hotspots.js +2 -2
  56. package/dist/queries/complexity.d.ts +1 -1
  57. package/dist/queries/complexity.js +2 -2
  58. package/dist/queries/convergence.d.ts +1 -1
  59. package/dist/queries/convergence.js +2 -2
  60. package/dist/queries/coupling.d.ts +1 -1
  61. package/dist/queries/coupling.js +3 -1
  62. package/dist/queries/cycles.d.ts +1 -1
  63. package/dist/queries/cycles.js +2 -2
  64. package/dist/queries/dataflow.d.ts +1 -1
  65. package/dist/queries/dataflow.js +2 -2
  66. package/dist/queries/dead.d.ts +1 -1
  67. package/dist/queries/dead.js +3 -3
  68. package/dist/queries/deep-chains.d.ts +1 -1
  69. package/dist/queries/deep-chains.js +2 -2
  70. package/dist/queries/deps.d.ts +1 -1
  71. package/dist/queries/deps.js +3 -1
  72. package/dist/queries/diff-impact.d.ts +1 -1
  73. package/dist/queries/doc-coverage.d.ts +1 -1
  74. package/dist/queries/drift.d.ts +1 -1
  75. package/dist/queries/drift.js +2 -2
  76. package/dist/queries/extract-candidates.d.ts +1 -1
  77. package/dist/queries/extract-candidates.js +2 -2
  78. package/dist/queries/fan.d.ts +1 -1
  79. package/dist/queries/fan.js +2 -1
  80. package/dist/queries/files.d.ts +1 -1
  81. package/dist/queries/health.d.ts +1 -1
  82. package/dist/queries/health.js +13 -13
  83. package/dist/queries/hierarchy.d.ts +1 -1
  84. package/dist/queries/hierarchy.js +2 -2
  85. package/dist/queries/hotspots.d.ts +1 -1
  86. package/dist/queries/imports.d.ts +1 -1
  87. package/dist/queries/imports.js +2 -2
  88. package/dist/queries/index.d.ts +1 -1
  89. package/dist/queries/index.js +38 -38
  90. package/dist/queries/isolated.d.ts +1 -1
  91. package/dist/queries/isolated.js +3 -3
  92. package/dist/queries/members.d.ts +1 -1
  93. package/dist/queries/members.js +2 -2
  94. package/dist/queries/methods.d.ts +1 -1
  95. package/dist/queries/outline.d.ts +1 -1
  96. package/dist/queries/outline.js +2 -1
  97. package/dist/queries/passthrough-candidates.d.ts +1 -1
  98. package/dist/queries/passthrough-candidates.js +2 -2
  99. package/dist/queries/redundant-reexports.d.ts +1 -1
  100. package/dist/queries/redundant-reexports.js +3 -3
  101. package/dist/queries/refs.d.ts +1 -1
  102. package/dist/queries/refs.js +3 -1
  103. package/dist/queries/similar-chains.d.ts +1 -1
  104. package/dist/queries/similar-chains.js +2 -2
  105. package/dist/queries/similar-files.d.ts +1 -1
  106. package/dist/queries/similar-files.js +2 -2
  107. package/dist/queries/similar-signatures.d.ts +1 -1
  108. package/dist/queries/similar.d.ts +1 -1
  109. package/dist/queries/similar.js +2 -2
  110. package/dist/queries/slice.d.ts +2 -2
  111. package/dist/queries/slice.js +2 -2
  112. package/dist/queries/stale-abstractions.d.ts +1 -1
  113. package/dist/queries/stale-abstractions.js +2 -2
  114. package/dist/queries/stats.d.ts +1 -1
  115. package/dist/queries/surface.d.ts +1 -1
  116. package/dist/queries/surface.js +2 -1
  117. package/dist/queries/symbols.d.ts +1 -1
  118. package/dist/queries/symbols.js +2 -1
  119. package/dist/queries/system.d.ts +1 -1
  120. package/dist/queries/system.js +2 -1
  121. package/dist/queries/trace.d.ts +1 -1
  122. package/dist/queries/trace.js +2 -2
  123. package/dist/queries/wrapper-candidates.d.ts +1 -1
  124. package/dist/queries/wrapper-candidates.js +2 -2
  125. package/package.json +1 -1
  126. package/dist/chunk-34JPTNRN.js +0 -601
  127. package/dist/chunk-7JFZSOJ7.js +0 -103
  128. package/dist/chunk-DY4AFG2W.js +0 -48
  129. package/dist/chunk-LLMPAG56.js +0 -221
  130. package/dist/chunk-NVIIM34O.js +0 -65
  131. package/dist/chunk-YAFWL3RA.js +0 -55
@@ -0,0 +1,161 @@
1
+ import {
2
+ findFirstSymbolMatch,
3
+ getSourceImports,
4
+ resolveIndexedFile
5
+ } from "./chunk-AXQKUYKF.js";
6
+ import {
7
+ isModuleLikeSymbol,
8
+ leafName,
9
+ shortenSymbol
10
+ } from "./chunk-QIXNAB5K.js";
11
+
12
+ // src/queries/imports.ts
13
+ function imports(db, filePattern) {
14
+ const importer = resolveIndexedFile(db, filePattern);
15
+ if (!importer) return [];
16
+ const rows = db.all(
17
+ `SELECT DISTINCT gs.symbol, def_d.relative_path AS from_file, imp_d.relative_path AS importer
18
+ FROM mentions m
19
+ JOIN chunks c ON m.chunk_id = c.id
20
+ JOIN documents imp_d ON c.document_id = imp_d.id
21
+ JOIN global_symbols gs ON m.symbol_id = gs.id
22
+ LEFT JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
23
+ LEFT JOIN documents def_d ON der.document_id = def_d.id
24
+ WHERE imp_d.relative_path = ?
25
+ AND m.role = 2
26
+ ORDER BY def_d.relative_path, gs.symbol`,
27
+ importer
28
+ );
29
+ const indexedResults = rows.filter((row) => !db.isIgnored(row.importer)).map((r) => ({
30
+ symbol: r.symbol,
31
+ shortName: shortenSymbol(r.symbol),
32
+ fromFile: r.from_file ?? "(external)"
33
+ }));
34
+ if (indexedResults.length > 0) {
35
+ return indexedResults;
36
+ }
37
+ return getSourceImports(db, importer).map((entry) => ({
38
+ symbol: renderImportSymbol(entry.importedName, entry.localName, entry.kind),
39
+ shortName: renderImportSymbol(entry.importedName, entry.localName, entry.kind),
40
+ fromFile: entry.sourcePath ?? "(external)"
41
+ }));
42
+ }
43
+ function importedBy(db, symbolPattern) {
44
+ const rows = db.all(
45
+ `SELECT DISTINCT gs.symbol, d.relative_path AS importer
46
+ FROM mentions m
47
+ JOIN chunks c ON m.chunk_id = c.id
48
+ JOIN documents d ON c.document_id = d.id
49
+ JOIN global_symbols gs ON m.symbol_id = gs.id
50
+ WHERE gs.symbol LIKE ?
51
+ AND m.role = 2
52
+ ORDER BY d.relative_path`,
53
+ `%${symbolPattern}%`
54
+ );
55
+ const indexedResults = rows.filter((r) => !db.isIgnored(r.importer)).map((r) => ({
56
+ symbol: r.symbol,
57
+ shortName: shortenSymbol(r.symbol),
58
+ fromFile: r.importer
59
+ }));
60
+ if (indexedResults.length > 0) {
61
+ return indexedResults;
62
+ }
63
+ const target = findFirstSymbolMatch(db, symbolPattern);
64
+ const targetFile = target?.relativePath ?? null;
65
+ const targetLeaf = target ? leafName(target.symbol) : symbolPattern.replace(/\(\)$/, "");
66
+ const targetIsModule = target ? isModuleLikeSymbol(target.symbol) : false;
67
+ const files = db.all(
68
+ `SELECT relative_path
69
+ FROM documents
70
+ WHERE 1 = 1
71
+ ${db.pathExclusionsFor("documents")}
72
+ ORDER BY relative_path`
73
+ );
74
+ const importers = /* @__PURE__ */ new Set();
75
+ for (const row of files) {
76
+ if (db.isIgnored(row.relative_path)) continue;
77
+ for (const entry of getSourceImports(db, row.relative_path)) {
78
+ if (!entry.sourcePath) continue;
79
+ if (targetFile && normalizePath(entry.sourcePath) !== normalizePath(targetFile)) {
80
+ continue;
81
+ }
82
+ if (targetIsModule) {
83
+ importers.add(row.relative_path);
84
+ continue;
85
+ }
86
+ if (entry.kind === "named" && entry.importedName === targetLeaf) {
87
+ importers.add(row.relative_path);
88
+ continue;
89
+ }
90
+ if (entry.kind === "namespace" && entry.usedMembers.includes(targetLeaf)) {
91
+ importers.add(row.relative_path);
92
+ }
93
+ }
94
+ }
95
+ return [...importers].sort().map((importer) => ({
96
+ symbol: target?.symbol ?? targetLeaf,
97
+ shortName: target ? shortenSymbol(target.symbol) : targetLeaf,
98
+ fromFile: importer
99
+ }));
100
+ }
101
+ function unusedImports(db, filePattern) {
102
+ const importer = resolveIndexedFile(db, filePattern);
103
+ if (!importer) return [];
104
+ const rows = db.all(
105
+ `SELECT gs.symbol, d.relative_path AS imported_in, d.relative_path AS importer
106
+ FROM mentions m
107
+ JOIN chunks c ON m.chunk_id = c.id
108
+ JOIN documents d ON c.document_id = d.id
109
+ JOIN global_symbols gs ON m.symbol_id = gs.id
110
+ WHERE d.relative_path = ?
111
+ AND m.role = 2
112
+ AND NOT EXISTS (
113
+ SELECT 1
114
+ FROM mentions ref_m
115
+ JOIN chunks ref_c ON ref_m.chunk_id = ref_c.id
116
+ WHERE ref_m.symbol_id = gs.id
117
+ AND ref_m.role != 1
118
+ AND ref_c.document_id = d.id
119
+ )
120
+ ORDER BY d.relative_path, gs.symbol`,
121
+ importer
122
+ );
123
+ const indexedResults = rows.filter((row) => !db.isIgnored(row.importer)).map((r) => ({
124
+ symbol: r.symbol,
125
+ shortName: shortenSymbol(r.symbol),
126
+ importedIn: r.imported_in
127
+ }));
128
+ if (indexedResults.length > 0) {
129
+ return indexedResults;
130
+ }
131
+ return getSourceImports(db, importer).filter((entry) => entry.kind !== "side-effect" && !entry.used).map((entry) => ({
132
+ symbol: renderImportSymbol(entry.importedName, entry.localName, entry.kind),
133
+ shortName: renderImportSymbol(entry.importedName, entry.localName, entry.kind),
134
+ importedIn: importer
135
+ }));
136
+ }
137
+ function renderImportSymbol(importedName, localName, kind) {
138
+ if (kind === "namespace" && importedName === "*" && localName) {
139
+ return `* as ${localName}`;
140
+ }
141
+ if (kind === "default" && localName) {
142
+ return `default as ${localName}`;
143
+ }
144
+ if (kind === "side-effect") {
145
+ return "(side effect import)";
146
+ }
147
+ if (localName && localName !== importedName) {
148
+ return `${importedName} as ${localName}`;
149
+ }
150
+ return importedName;
151
+ }
152
+ function normalizePath(path) {
153
+ return path.replace(/\\/g, "/");
154
+ }
155
+
156
+ export {
157
+ imports,
158
+ importedBy,
159
+ unusedImports
160
+ };
161
+ //# sourceMappingURL=chunk-26DOJ63W.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  testFileExclusionSql
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
  import {
5
5
  shortenSymbol
6
6
  } from "./chunk-QIXNAB5K.js";
@@ -94,4 +94,4 @@ function wrapperCandidates(db, opts) {
94
94
  export {
95
95
  wrapperCandidates
96
96
  };
97
- //# sourceMappingURL=chunk-PMJKOXOT.js.map
97
+ //# sourceMappingURL=chunk-4JCSOF2O.js.map
@@ -1,18 +1,26 @@
1
+ import {
2
+ resolveIndexedPaths
3
+ } from "./chunk-AXQKUYKF.js";
1
4
  import {
2
5
  shortenSymbol
3
6
  } from "./chunk-QIXNAB5K.js";
4
7
 
5
8
  // src/queries/outline.ts
6
9
  function outline(db, filePattern) {
10
+ const resolvedPaths = resolveIndexedPaths(db, filePattern);
11
+ if (resolvedPaths.length === 0) {
12
+ return [];
13
+ }
14
+ const placeholders = resolvedPaths.map(() => "?").join(", ");
7
15
  const rows = db.all(
8
16
  `SELECT gs.symbol, gs.enclosing_symbol, der.start_line, der.end_line
9
17
  FROM defn_enclosing_ranges der
10
18
  JOIN global_symbols gs ON der.symbol_id = gs.id
11
19
  JOIN documents d ON der.document_id = d.id
12
- WHERE d.relative_path LIKE ?
20
+ WHERE d.relative_path IN (${placeholders})
13
21
  ${db.symbolNoise}
14
- ORDER BY der.start_line`,
15
- `%${filePattern}%`
22
+ ORDER BY d.relative_path, der.start_line`,
23
+ ...resolvedPaths
16
24
  );
17
25
  const nodeMap = /* @__PURE__ */ new Map();
18
26
  const roots = [];
@@ -40,4 +48,4 @@ function outline(db, filePattern) {
40
48
  export {
41
49
  outline
42
50
  };
43
- //# sourceMappingURL=chunk-AKMBBKWV.js.map
51
+ //# sourceMappingURL=chunk-5OMVSV6E.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
 
5
5
  // src/queries/drift.ts
6
6
  import path from "path";
@@ -162,4 +162,4 @@ function isTestLikePath(filePath) {
162
162
  export {
163
163
  drift
164
164
  };
165
- //# sourceMappingURL=chunk-R56FJU3E.js.map
165
+ //# sourceMappingURL=chunk-7KIMF5PV.js.map