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