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.
Files changed (319) hide show
  1. package/README.md +16 -43
  2. package/dist/chunk-2UELLEBI.js +1 -0
  3. package/dist/chunk-34JPTNRN.js +601 -0
  4. package/dist/{chunk-W4ALF422.js → chunk-3566TKJ5.js} +3 -3
  5. package/dist/{chunk-Z6YZJ36C.js → chunk-4ACRRQC4.js} +8 -4
  6. package/dist/{chunk-Z4GHE2HD.js → chunk-4BQFSNFI.js} +6 -2
  7. package/dist/{chunk-4XHWPRAX.js → chunk-6QSHLFSL.js} +3 -3
  8. package/dist/{chunk-4EXL2CUA.js → chunk-6WVR5K46.js} +16 -8
  9. package/dist/{chunk-ZQIIPFD7.js → chunk-75RQSBTK.js} +2 -2
  10. package/dist/{chunk-KPPHZCZJ.js → chunk-7HK5ZLOE.js} +28 -46
  11. package/dist/{chunk-MCUX5LA7.js → chunk-7JFZSOJ7.js} +3 -3
  12. package/dist/{chunk-6SXADWLW.js → chunk-AKMBBKWV.js} +2 -2
  13. package/dist/{chunk-NHBZIL2J.js → chunk-AMNISGYR.js} +3 -3
  14. package/dist/{chunk-2CKGIR6G.js → chunk-BFLULBEU.js} +3 -3
  15. package/dist/{chunk-HPFZLISB.js → chunk-CU62ZDHI.js} +2 -2
  16. package/dist/{chunk-EQYLEQCW.js → chunk-DY4AFG2W.js} +12 -10
  17. package/dist/{chunk-5RMYT5WH.js → chunk-F7XU27LU.js} +2 -2
  18. package/dist/{chunk-KCBMVQL5.js → chunk-GPJVPT3U.js} +2 -2
  19. package/dist/{chunk-NUZ4OMU3.js → chunk-GU2H5QRN.js} +2 -2
  20. package/dist/{chunk-UJQN5N3I.js → chunk-H6WCPKCX.js} +6 -3
  21. package/dist/{chunk-OVPLOMPY.js → chunk-HMYJJ3HY.js} +7 -4
  22. package/dist/chunk-IJKLB2JW.js +69 -0
  23. package/dist/{chunk-DGUPQSOR.js → chunk-IXPHLF6K.js} +2 -2
  24. package/dist/{chunk-7PBOG4YE.js → chunk-KBOQX573.js} +2 -2
  25. package/dist/{chunk-ZOGY2V3N.js → chunk-LLMPAG56.js} +93 -30
  26. package/dist/{chunk-BOVXCR46.js → chunk-LTJC5ZQL.js} +2 -2
  27. package/dist/{chunk-LAWMH22O.js → chunk-M3NPW3FC.js} +2 -2
  28. package/dist/{chunk-NWCE4CIC.js → chunk-M4QGEKKD.js} +5 -27
  29. package/dist/{chunk-63G7IQTD.js → chunk-MVH45PYK.js} +20 -40
  30. package/dist/chunk-N4C3H7LH.js +37 -0
  31. package/dist/chunk-NG5F43OU.js +200 -0
  32. package/dist/{chunk-D567NFIF.js → chunk-NVIIM34O.js} +3 -3
  33. package/dist/{chunk-BNN2RKD2.js → chunk-ORINICIZ.js} +3 -3
  34. package/dist/{chunk-4PDAL6IL.js → chunk-PMJKOXOT.js} +3 -3
  35. package/dist/{chunk-QOV2R2WT.js → chunk-QIXNAB5K.js} +42 -2
  36. package/dist/{chunk-7LLPRPR5.js → chunk-R2I3M5B4.js} +2 -2
  37. package/dist/{chunk-7RLE5EWE.js → chunk-R56FJU3E.js} +34 -13
  38. package/dist/{chunk-H2MDONBU.js → chunk-RFMT7UAZ.js} +3 -3
  39. package/dist/{chunk-SEFSL2GF.js → chunk-TOIEB3LG.js} +2 -2
  40. package/dist/chunk-VO4QI3LS.js +84 -0
  41. package/dist/{chunk-ZK6GXM3J.js → chunk-WVK7AASK.js} +3 -3
  42. package/dist/{chunk-HMLMH7VZ.js → chunk-Y3M323OX.js} +2 -2
  43. package/dist/{chunk-DCKMSTJ4.js → chunk-Y4JFVQ7C.js} +2 -2
  44. package/dist/{chunk-7UCKSQRS.js → chunk-YAFWL3RA.js} +3 -3
  45. package/dist/{chunk-FGXRVW7G.js → chunk-YZ6L7GFO.js} +2 -2
  46. package/dist/cli.js +1355 -671
  47. package/dist/{db-BNVVZSfP.d.ts → db-BHYam4BK.d.ts} +6 -18
  48. package/dist/index.d.ts +15 -15
  49. package/dist/index.js +260 -231
  50. package/dist/postinstall.js +5 -76
  51. package/dist/queries/affected.d.ts +1 -1
  52. package/dist/queries/affected.js +3 -3
  53. package/dist/queries/bottlenecks.d.ts +1 -1
  54. package/dist/queries/bottlenecks.js +2 -2
  55. package/dist/queries/by-kind.d.ts +1 -1
  56. package/dist/queries/by-kind.js +2 -2
  57. package/dist/queries/call-graph.d.ts +1 -1
  58. package/dist/queries/call-graph.js +3 -3
  59. package/dist/queries/change-surface.d.ts +2 -2
  60. package/dist/queries/change-surface.js +2 -3
  61. package/dist/queries/code.d.ts +1 -1
  62. package/dist/queries/code.js +3 -3
  63. package/dist/queries/complexity-hotspots.d.ts +1 -1
  64. package/dist/queries/complexity-hotspots.js +3 -3
  65. package/dist/queries/complexity.d.ts +1 -1
  66. package/dist/queries/complexity.js +3 -3
  67. package/dist/queries/convergence.d.ts +1 -1
  68. package/dist/queries/convergence.js +3 -3
  69. package/dist/queries/coupling.d.ts +1 -1
  70. package/dist/queries/cycles.d.ts +1 -1
  71. package/dist/queries/cycles.js +3 -2
  72. package/dist/queries/dataflow.d.ts +1 -1
  73. package/dist/queries/dataflow.js +3 -3
  74. package/dist/queries/dead.d.ts +1 -1
  75. package/dist/queries/dead.js +4 -3
  76. package/dist/queries/deep-chains.d.ts +1 -1
  77. package/dist/queries/deep-chains.js +3 -2
  78. package/dist/queries/deps.d.ts +1 -1
  79. package/dist/queries/diff-impact.d.ts +2 -2
  80. package/dist/queries/diff-impact.js +2 -3
  81. package/dist/queries/doc-coverage.d.ts +1 -1
  82. package/dist/queries/doc-coverage.js +2 -2
  83. package/dist/queries/drift.d.ts +1 -1
  84. package/dist/queries/drift.js +3 -2
  85. package/dist/queries/extract-candidates.d.ts +1 -1
  86. package/dist/queries/extract-candidates.js +3 -3
  87. package/dist/queries/fan.d.ts +1 -1
  88. package/dist/queries/fan.js +2 -2
  89. package/dist/queries/files.d.ts +1 -1
  90. package/dist/queries/health.d.ts +1 -1
  91. package/dist/queries/health.js +14 -14
  92. package/dist/queries/hierarchy.d.ts +1 -1
  93. package/dist/queries/hierarchy.js +3 -2
  94. package/dist/queries/hotspots.d.ts +1 -1
  95. package/dist/queries/hotspots.js +2 -2
  96. package/dist/queries/imports.d.ts +1 -1
  97. package/dist/queries/imports.js +3 -2
  98. package/dist/queries/index.d.ts +1 -2
  99. package/dist/queries/index.js +43 -48
  100. package/dist/queries/isolated.d.ts +1 -1
  101. package/dist/queries/isolated.js +4 -3
  102. package/dist/queries/members.d.ts +2 -2
  103. package/dist/queries/members.js +3 -2
  104. package/dist/queries/methods.d.ts +1 -1
  105. package/dist/queries/methods.js +2 -2
  106. package/dist/queries/outline.d.ts +1 -1
  107. package/dist/queries/outline.js +2 -2
  108. package/dist/queries/passthrough-candidates.d.ts +1 -1
  109. package/dist/queries/passthrough-candidates.js +3 -3
  110. package/dist/queries/redundant-reexports.d.ts +1 -1
  111. package/dist/queries/redundant-reexports.js +4 -2
  112. package/dist/queries/refs.d.ts +1 -1
  113. package/dist/queries/similar-chains.d.ts +1 -1
  114. package/dist/queries/similar-chains.js +3 -2
  115. package/dist/queries/similar-files.d.ts +1 -1
  116. package/dist/queries/similar-files.js +3 -2
  117. package/dist/queries/similar-signatures.d.ts +1 -1
  118. package/dist/queries/similar-signatures.js +2 -2
  119. package/dist/queries/similar.d.ts +1 -1
  120. package/dist/queries/similar.js +3 -3
  121. package/dist/queries/slice.d.ts +1 -1
  122. package/dist/queries/slice.js +3 -3
  123. package/dist/queries/stale-abstractions.d.ts +1 -1
  124. package/dist/queries/stale-abstractions.js +3 -3
  125. package/dist/queries/stats.d.ts +1 -1
  126. package/dist/queries/surface.d.ts +1 -1
  127. package/dist/queries/surface.js +2 -2
  128. package/dist/queries/symbols.d.ts +1 -1
  129. package/dist/queries/symbols.js +2 -2
  130. package/dist/queries/system.d.ts +1 -1
  131. package/dist/queries/system.js +2 -2
  132. package/dist/queries/trace.d.ts +1 -1
  133. package/dist/queries/trace.js +3 -1
  134. package/dist/queries/wrapper-candidates.d.ts +1 -1
  135. package/dist/queries/wrapper-candidates.js +3 -3
  136. package/dist/reindex-worker.js +24 -12
  137. package/package.json +6 -1
  138. package/IMPROVEMENTS.md +0 -143
  139. package/PLAN.md +0 -320
  140. package/dist/chunk-2CKGIR6G.js.map +0 -1
  141. package/dist/chunk-3UOUTZQT.js +0 -45
  142. package/dist/chunk-3UOUTZQT.js.map +0 -1
  143. package/dist/chunk-4EXL2CUA.js.map +0 -1
  144. package/dist/chunk-4PDAL6IL.js.map +0 -1
  145. package/dist/chunk-4TYLS5XX.js.map +0 -1
  146. package/dist/chunk-4XHWPRAX.js.map +0 -1
  147. package/dist/chunk-5RMYT5WH.js.map +0 -1
  148. package/dist/chunk-63G7IQTD.js.map +0 -1
  149. package/dist/chunk-6SXADWLW.js.map +0 -1
  150. package/dist/chunk-74RFWB5T.js.map +0 -1
  151. package/dist/chunk-7LLPRPR5.js.map +0 -1
  152. package/dist/chunk-7PBOG4YE.js.map +0 -1
  153. package/dist/chunk-7RLE5EWE.js.map +0 -1
  154. package/dist/chunk-7UCKSQRS.js.map +0 -1
  155. package/dist/chunk-BNN2RKD2.js.map +0 -1
  156. package/dist/chunk-BOVXCR46.js.map +0 -1
  157. package/dist/chunk-D567NFIF.js.map +0 -1
  158. package/dist/chunk-DCKMSTJ4.js.map +0 -1
  159. package/dist/chunk-DEZKCZXD.js +0 -40
  160. package/dist/chunk-DEZKCZXD.js.map +0 -1
  161. package/dist/chunk-DGUPQSOR.js.map +0 -1
  162. package/dist/chunk-DVWGWHFW.js +0 -99
  163. package/dist/chunk-DVWGWHFW.js.map +0 -1
  164. package/dist/chunk-EQYLEQCW.js.map +0 -1
  165. package/dist/chunk-FGXRVW7G.js.map +0 -1
  166. package/dist/chunk-H2MDONBU.js.map +0 -1
  167. package/dist/chunk-HB7MRLLL.js +0 -76
  168. package/dist/chunk-HB7MRLLL.js.map +0 -1
  169. package/dist/chunk-HDSRORNV.js.map +0 -1
  170. package/dist/chunk-HMLMH7VZ.js.map +0 -1
  171. package/dist/chunk-HPFZLISB.js.map +0 -1
  172. package/dist/chunk-HZBC7PPD.js +0 -88
  173. package/dist/chunk-HZBC7PPD.js.map +0 -1
  174. package/dist/chunk-ITZ3DDOG.js.map +0 -1
  175. package/dist/chunk-JJP7KQND.js +0 -1
  176. package/dist/chunk-JJP7KQND.js.map +0 -1
  177. package/dist/chunk-KCBMVQL5.js.map +0 -1
  178. package/dist/chunk-KPPHZCZJ.js.map +0 -1
  179. package/dist/chunk-LAWMH22O.js.map +0 -1
  180. package/dist/chunk-MCUX5LA7.js.map +0 -1
  181. package/dist/chunk-MGNMHKX3.js.map +0 -1
  182. package/dist/chunk-N5KEREIA.js.map +0 -1
  183. package/dist/chunk-NHBZIL2J.js.map +0 -1
  184. package/dist/chunk-NUZ4OMU3.js.map +0 -1
  185. package/dist/chunk-NWCE4CIC.js.map +0 -1
  186. package/dist/chunk-OVPLOMPY.js.map +0 -1
  187. package/dist/chunk-QOV2R2WT.js.map +0 -1
  188. package/dist/chunk-SEFSL2GF.js.map +0 -1
  189. package/dist/chunk-UJQN5N3I.js.map +0 -1
  190. package/dist/chunk-W4ALF422.js.map +0 -1
  191. package/dist/chunk-Z4GHE2HD.js.map +0 -1
  192. package/dist/chunk-Z6YZJ36C.js.map +0 -1
  193. package/dist/chunk-ZK6GXM3J.js.map +0 -1
  194. package/dist/chunk-ZOGY2V3N.js.map +0 -1
  195. package/dist/chunk-ZQIIPFD7.js.map +0 -1
  196. package/dist/cli.js.map +0 -1
  197. package/dist/index.js.map +0 -1
  198. package/dist/postinstall.js.map +0 -1
  199. package/dist/queries/affected.js.map +0 -1
  200. package/dist/queries/bottlenecks.js.map +0 -1
  201. package/dist/queries/by-kind.js.map +0 -1
  202. package/dist/queries/call-graph.js.map +0 -1
  203. package/dist/queries/change-surface.js.map +0 -1
  204. package/dist/queries/clean-signature.js.map +0 -1
  205. package/dist/queries/code.js.map +0 -1
  206. package/dist/queries/complexity-hotspots.js.map +0 -1
  207. package/dist/queries/complexity.js.map +0 -1
  208. package/dist/queries/convergence.js.map +0 -1
  209. package/dist/queries/coupling.js.map +0 -1
  210. package/dist/queries/cycles.js.map +0 -1
  211. package/dist/queries/dataflow.js.map +0 -1
  212. package/dist/queries/dead.js.map +0 -1
  213. package/dist/queries/deep-chains.js.map +0 -1
  214. package/dist/queries/deps.js.map +0 -1
  215. package/dist/queries/diff-impact.js.map +0 -1
  216. package/dist/queries/doc-coverage.js.map +0 -1
  217. package/dist/queries/drift.js.map +0 -1
  218. package/dist/queries/extract-candidates.js.map +0 -1
  219. package/dist/queries/fan.js.map +0 -1
  220. package/dist/queries/files.js.map +0 -1
  221. package/dist/queries/health.js.map +0 -1
  222. package/dist/queries/hierarchy.js.map +0 -1
  223. package/dist/queries/hotspots.js.map +0 -1
  224. package/dist/queries/imports.js.map +0 -1
  225. package/dist/queries/index.js.map +0 -1
  226. package/dist/queries/isolated.js.map +0 -1
  227. package/dist/queries/members.js.map +0 -1
  228. package/dist/queries/methods.js.map +0 -1
  229. package/dist/queries/outline.js.map +0 -1
  230. package/dist/queries/passthrough-candidates.js.map +0 -1
  231. package/dist/queries/redundant-reexports.js.map +0 -1
  232. package/dist/queries/refs.js.map +0 -1
  233. package/dist/queries/similar-chains.js.map +0 -1
  234. package/dist/queries/similar-files.js.map +0 -1
  235. package/dist/queries/similar-signatures.js.map +0 -1
  236. package/dist/queries/similar.js.map +0 -1
  237. package/dist/queries/slice.js.map +0 -1
  238. package/dist/queries/stale-abstractions.js.map +0 -1
  239. package/dist/queries/stats.js.map +0 -1
  240. package/dist/queries/surface.js.map +0 -1
  241. package/dist/queries/symbols.js.map +0 -1
  242. package/dist/queries/system.js.map +0 -1
  243. package/dist/queries/test-coverage.d.ts +0 -22
  244. package/dist/queries/test-coverage.js +0 -11
  245. package/dist/queries/test-coverage.js.map +0 -1
  246. package/dist/queries/trace.js.map +0 -1
  247. package/dist/queries/wrapper-candidates.js.map +0 -1
  248. package/dist/reindex-worker.js.map +0 -1
  249. package/docs/AGENT_GUIDE.md +0 -359
  250. package/reports/debloat/2026-04-10-scip-query-self-audit.md +0 -161
  251. package/src/cli.ts +0 -1480
  252. package/src/config.ts +0 -117
  253. package/src/db.ts +0 -127
  254. package/src/gitignore-filter.ts +0 -143
  255. package/src/index.ts +0 -11
  256. package/src/postinstall.ts +0 -8
  257. package/src/queries/affected.ts +0 -86
  258. package/src/queries/bottlenecks.ts +0 -67
  259. package/src/queries/by-kind.ts +0 -204
  260. package/src/queries/call-graph.ts +0 -66
  261. package/src/queries/change-surface.ts +0 -110
  262. package/src/queries/clean-signature.ts +0 -22
  263. package/src/queries/code.ts +0 -101
  264. package/src/queries/complexity-hotspots.ts +0 -119
  265. package/src/queries/complexity.ts +0 -152
  266. package/src/queries/convergence.ts +0 -82
  267. package/src/queries/coupling.ts +0 -99
  268. package/src/queries/cycles.ts +0 -78
  269. package/src/queries/dataflow.ts +0 -128
  270. package/src/queries/dead.ts +0 -122
  271. package/src/queries/deep-chains.ts +0 -59
  272. package/src/queries/deps.ts +0 -46
  273. package/src/queries/diff-impact.ts +0 -204
  274. package/src/queries/doc-coverage.ts +0 -86
  275. package/src/queries/drift.ts +0 -224
  276. package/src/queries/extract-candidates.ts +0 -167
  277. package/src/queries/fan.ts +0 -148
  278. package/src/queries/files.ts +0 -16
  279. package/src/queries/health.ts +0 -324
  280. package/src/queries/hierarchy.ts +0 -49
  281. package/src/queries/hotspots.ts +0 -53
  282. package/src/queries/imports.ts +0 -95
  283. package/src/queries/index.ts +0 -45
  284. package/src/queries/isolated.ts +0 -67
  285. package/src/queries/members.ts +0 -54
  286. package/src/queries/methods.ts +0 -27
  287. package/src/queries/outline.ts +0 -52
  288. package/src/queries/passthrough-candidates.ts +0 -94
  289. package/src/queries/redundant-reexports.ts +0 -170
  290. package/src/queries/refs.ts +0 -27
  291. package/src/queries/similar-chains.ts +0 -314
  292. package/src/queries/similar-files.ts +0 -140
  293. package/src/queries/similar-signatures.ts +0 -151
  294. package/src/queries/similar.ts +0 -305
  295. package/src/queries/slice.ts +0 -154
  296. package/src/queries/stale-abstractions.ts +0 -82
  297. package/src/queries/stats.ts +0 -22
  298. package/src/queries/surface.ts +0 -34
  299. package/src/queries/symbols.ts +0 -39
  300. package/src/queries/system.ts +0 -86
  301. package/src/queries/test-coverage.ts +0 -106
  302. package/src/queries/trace.ts +0 -55
  303. package/src/queries/wrapper-candidates.ts +0 -112
  304. package/src/query-support.ts +0 -226
  305. package/src/reindex/detect.ts +0 -58
  306. package/src/reindex/index.ts +0 -153
  307. package/src/reindex/indexers.ts +0 -220
  308. package/src/reindex/install.ts +0 -125
  309. package/src/reindex-worker.ts +0 -35
  310. package/src/setup.ts +0 -202
  311. package/src/symbol-parser.ts +0 -278
  312. package/src/types.ts +0 -654
  313. package/src/watch.ts +0 -274
  314. package/tests/gitignore-filter.test.ts +0 -48
  315. package/tests/queries.test.ts +0 -300
  316. package/tests/symbol-parser.test.ts +0 -157
  317. package/tsconfig.json +0 -20
  318. package/tsup.config.ts +0 -40
  319. package/vitest.config.ts +0 -7
@@ -1,10 +1,14 @@
1
+ import {
2
+ getInactiveBarrelPaths,
3
+ isEntrySurface
4
+ } from "./chunk-VO4QI3LS.js";
1
5
  import {
2
6
  TEST_SUPPORT_PATH_PATTERNS,
3
7
  testFileExclusionSql
4
- } from "./chunk-ZOGY2V3N.js";
8
+ } from "./chunk-LLMPAG56.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-6WVR5K46.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-ZOGY2V3N.js";
3
+ } from "./chunk-LLMPAG56.js";
4
4
 
5
5
  // src/queries/deep-chains.ts
6
6
  function deepChains(db, opts = {}) {
@@ -41,4 +41,4 @@ function deepChains(db, opts = {}) {
41
41
  export {
42
42
  deepChains
43
43
  };
44
- //# sourceMappingURL=chunk-ZQIIPFD7.js.map
44
+ //# sourceMappingURL=chunk-75RQSBTK.js.map
@@ -1,10 +1,6 @@
1
- import {
2
- TEST_FILE_PATTERNS,
3
- testFileMatchSql
4
- } from "./chunk-ZOGY2V3N.js";
5
1
  import {
6
2
  shortenSymbol
7
- } from "./chunk-QOV2R2WT.js";
3
+ } from "./chunk-QIXNAB5K.js";
8
4
 
9
5
  // src/queries/diff-impact.ts
10
6
  import { execFileSync } from "child_process";
@@ -12,23 +8,17 @@ function diffImpact(db, opts = {}) {
12
8
  const { base = "HEAD" } = opts;
13
9
  let changedFileLines;
14
10
  try {
15
- const stdout = execFileSync("git", ["diff", "--name-only", base], {
16
- encoding: "utf-8",
17
- cwd: db.config.projectRoot,
18
- timeout: 1e4
19
- });
20
- changedFileLines = stdout.split("\n").map((l) => l.trim()).filter((l) => l.length > 0);
11
+ changedFileLines = getChangedFiles(db.config.projectRoot, base);
21
12
  } catch {
22
13
  return {
23
14
  changedFiles: [],
24
15
  changedSymbols: [],
25
16
  affectedConsumers: [],
26
- uncoveredSymbols: [],
27
17
  summary: {
28
18
  totalChangedFiles: 0,
29
19
  totalChangedSymbols: 0,
30
20
  totalAffectedFiles: 0,
31
- testCoveragePercent: 0
21
+ note: "Unable to compute git diff."
32
22
  }
33
23
  };
34
24
  }
@@ -37,12 +27,11 @@ function diffImpact(db, opts = {}) {
37
27
  changedFiles: [],
38
28
  changedSymbols: [],
39
29
  affectedConsumers: [],
40
- uncoveredSymbols: [],
41
30
  summary: {
42
31
  totalChangedFiles: 0,
43
32
  totalChangedSymbols: 0,
44
33
  totalAffectedFiles: 0,
45
- testCoveragePercent: 0
34
+ note: "No changed files found."
46
35
  }
47
36
  };
48
37
  }
@@ -65,12 +54,11 @@ function diffImpact(db, opts = {}) {
65
54
  changedFiles: changedFileLines,
66
55
  changedSymbols: [],
67
56
  affectedConsumers: [],
68
- uncoveredSymbols: [],
69
57
  summary: {
70
58
  totalChangedFiles: changedFileLines.length,
71
59
  totalChangedSymbols: 0,
72
60
  totalAffectedFiles: 0,
73
- testCoveragePercent: 0
61
+ note: "Changed files are not present in the current SCIP index."
74
62
  }
75
63
  };
76
64
  }
@@ -85,11 +73,8 @@ function diffImpact(db, opts = {}) {
85
73
  ORDER BY d.relative_path`,
86
74
  ...changedDocIds
87
75
  );
88
- const testPatternSql = testFileMatchSql("ref_d", TEST_FILE_PATTERNS);
89
76
  const changedSymbols = [];
90
77
  const consumerMap = /* @__PURE__ */ new Map();
91
- const uncoveredSymbols = [];
92
- let coveredCount = 0;
93
78
  for (const sym of syms) {
94
79
  const fanInRow = db.get(
95
80
  `SELECT COUNT(DISTINCT c.document_id) AS fan_in
@@ -126,44 +111,41 @@ function diffImpact(db, opts = {}) {
126
111
  }
127
112
  consumerMap.get(consumer.relative_path).add(shortName);
128
113
  }
129
- const hasTest = db.get(
130
- `SELECT COUNT(*) AS c
131
- FROM mentions m
132
- JOIN chunks c ON m.chunk_id = c.id
133
- JOIN documents ref_d ON c.document_id = ref_d.id
134
- WHERE m.symbol_id = ?
135
- AND m.role != 1
136
- AND (${testPatternSql})`,
137
- sym.symbol_id
138
- );
139
- if (hasTest && hasTest.c > 0) {
140
- coveredCount++;
141
- } else {
142
- uncoveredSymbols.push({
143
- symbol: sym.symbol,
144
- shortName,
145
- file: sym.relative_path
146
- });
147
- }
148
114
  }
149
115
  const affectedConsumers = [...consumerMap.entries()].map(([file, symbols]) => ({ file, consumedSymbols: symbols.size })).sort((a, b) => b.consumedSymbols - a.consumedSymbols);
150
- const totalSymbols = changedSymbols.length;
151
- const testCoveragePercent = totalSymbols > 0 ? Math.round(coveredCount / totalSymbols * 100) : 0;
152
116
  return {
153
117
  changedFiles,
154
118
  changedSymbols,
155
119
  affectedConsumers,
156
- uncoveredSymbols,
157
120
  summary: {
158
121
  totalChangedFiles: changedFiles.length,
159
- totalChangedSymbols: totalSymbols,
160
- totalAffectedFiles: affectedConsumers.length,
161
- testCoveragePercent
122
+ totalChangedSymbols: changedSymbols.length,
123
+ totalAffectedFiles: affectedConsumers.length
162
124
  }
163
125
  };
164
126
  }
127
+ function getChangedFiles(projectRoot, base) {
128
+ const diff = execFileSync("git", ["diff", "--name-only", base], {
129
+ encoding: "utf-8",
130
+ cwd: projectRoot,
131
+ timeout: 1e4
132
+ });
133
+ const staged = execFileSync("git", ["diff", "--name-only", "--cached", base], {
134
+ encoding: "utf-8",
135
+ cwd: projectRoot,
136
+ timeout: 1e4
137
+ });
138
+ const untracked = execFileSync("git", ["ls-files", "--others", "--exclude-standard"], {
139
+ encoding: "utf-8",
140
+ cwd: projectRoot,
141
+ timeout: 1e4
142
+ });
143
+ return [...new Set(
144
+ [diff, staged, untracked].flatMap((chunk) => chunk.split("\n")).map((line) => line.trim()).filter((line) => line.length > 0)
145
+ )];
146
+ }
165
147
 
166
148
  export {
167
149
  diffImpact
168
150
  };
169
- //# sourceMappingURL=chunk-KPPHZCZJ.js.map
151
+ //# sourceMappingURL=chunk-7HK5ZLOE.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  findFirstSymbolMatch
3
- } from "./chunk-ZOGY2V3N.js";
3
+ } from "./chunk-LLMPAG56.js";
4
4
  import {
5
5
  shortenSymbol
6
- } from "./chunk-QOV2R2WT.js";
6
+ } from "./chunk-QIXNAB5K.js";
7
7
 
8
8
  // src/queries/dataflow.ts
9
9
  function dataflow(db, symbolPattern) {
@@ -100,4 +100,4 @@ function dataflow(db, symbolPattern) {
100
100
  export {
101
101
  dataflow
102
102
  };
103
- //# sourceMappingURL=chunk-MCUX5LA7.js.map
103
+ //# sourceMappingURL=chunk-7JFZSOJ7.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/outline.ts
6
6
  function outline(db, filePattern) {
@@ -40,4 +40,4 @@ function outline(db, filePattern) {
40
40
  export {
41
41
  outline
42
42
  };
43
- //# sourceMappingURL=chunk-6SXADWLW.js.map
43
+ //# sourceMappingURL=chunk-AKMBBKWV.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  findFirstSymbolMatch,
3
3
  getCalleeRowsForSymbol
4
- } from "./chunk-ZOGY2V3N.js";
4
+ } from "./chunk-LLMPAG56.js";
5
5
  import {
6
6
  shortenSymbol
7
- } from "./chunk-QOV2R2WT.js";
7
+ } from "./chunk-QIXNAB5K.js";
8
8
 
9
9
  // src/queries/slice.ts
10
10
  function slice(db, symbolPattern, opts = {}) {
@@ -122,4 +122,4 @@ function forwardSlice(db, match) {
122
122
  export {
123
123
  slice
124
124
  };
125
- //# sourceMappingURL=chunk-NHBZIL2J.js.map
125
+ //# sourceMappingURL=chunk-AMNISGYR.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getCalleeRowsForSymbol
3
- } from "./chunk-ZOGY2V3N.js";
3
+ } from "./chunk-LLMPAG56.js";
4
4
  import {
5
5
  shortenSymbol
6
- } from "./chunk-QOV2R2WT.js";
6
+ } from "./chunk-QIXNAB5K.js";
7
7
 
8
8
  // src/queries/extract-candidates.ts
9
9
  function extractCandidates(db, opts = {}) {
@@ -111,4 +111,4 @@ function extractCandidates(db, opts = {}) {
111
111
  export {
112
112
  extractCandidates
113
113
  };
114
- //# sourceMappingURL=chunk-2CKGIR6G.js.map
114
+ //# sourceMappingURL=chunk-BFLULBEU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-ZOGY2V3N.js";
3
+ } from "./chunk-LLMPAG56.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-CU62ZDHI.js.map
@@ -1,21 +1,26 @@
1
1
  import {
2
2
  cleanSignature
3
3
  } from "./chunk-4TYLS5XX.js";
4
+ import {
5
+ findFirstSymbolMatch
6
+ } from "./chunk-LLMPAG56.js";
4
7
 
5
8
  // src/queries/trace.ts
6
9
  function trace(db, symbolPattern) {
10
+ const match = findFirstSymbolMatch(db, symbolPattern);
11
+ if (!match) {
12
+ return { definitions: [], referencedBy: [] };
13
+ }
7
14
  const defRows = db.all(
8
15
  `SELECT d.relative_path, der.start_line, der.end_line,
9
16
  REPLACE(SUBSTR(gs.documentation, INSTR(gs.documentation, '|') + 1), char(10), ' ') AS sig
10
17
  FROM global_symbols gs
11
18
  JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
12
19
  JOIN documents d ON der.document_id = d.id
13
- WHERE gs.symbol LIKE ?
14
- AND ${db.localSymbolPredicate}
15
- ${db.symbolNoise}
20
+ WHERE gs.id = ?
16
21
  ORDER BY d.relative_path, der.start_line
17
22
  LIMIT 10`,
18
- `%${symbolPattern}%`
23
+ match.symbolId
19
24
  );
20
25
  const definitions = defRows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({
21
26
  relativePath: r.relative_path,
@@ -28,13 +33,10 @@ function trace(db, symbolPattern) {
28
33
  FROM mentions m
29
34
  JOIN chunks c ON m.chunk_id = c.id
30
35
  JOIN documents d ON c.document_id = d.id
31
- JOIN global_symbols gs ON m.symbol_id = gs.id
32
- WHERE gs.symbol LIKE ?
33
- AND ${db.localSymbolPredicate}
34
- ${db.symbolNoise}
36
+ WHERE m.symbol_id = ?
35
37
  AND m.role != 1
36
38
  ORDER BY d.relative_path`,
37
- `%${symbolPattern}%`
39
+ match.symbolId
38
40
  );
39
41
  const referencedBy = refRows.map((r) => r.relative_path).filter((p) => !db.isIgnored(p));
40
42
  return { definitions, referencedBy };
@@ -43,4 +45,4 @@ function trace(db, symbolPattern) {
43
45
  export {
44
46
  trace
45
47
  };
46
- //# sourceMappingURL=chunk-EQYLEQCW.js.map
48
+ //# sourceMappingURL=chunk-DY4AFG2W.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/bottlenecks.ts
6
6
  function bottlenecks(db, opts = {}) {
@@ -52,4 +52,4 @@ function bottlenecks(db, opts = {}) {
52
52
  export {
53
53
  bottlenecks
54
54
  };
55
- //# sourceMappingURL=chunk-5RMYT5WH.js.map
55
+ //# sourceMappingURL=chunk-F7XU27LU.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-4TYLS5XX.js";
4
4
  import {
5
5
  shortenSymbol
6
- } from "./chunk-QOV2R2WT.js";
6
+ } from "./chunk-QIXNAB5K.js";
7
7
 
8
8
  // src/queries/symbols.ts
9
9
  function symbols(db, filePattern) {
@@ -35,4 +35,4 @@ function symbols(db, filePattern) {
35
35
  export {
36
36
  symbols
37
37
  };
38
- //# sourceMappingURL=chunk-KCBMVQL5.js.map
38
+ //# sourceMappingURL=chunk-GPJVPT3U.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  leafName
3
- } from "./chunk-QOV2R2WT.js";
3
+ } from "./chunk-QIXNAB5K.js";
4
4
 
5
5
  // src/queries/methods.ts
6
6
  function methods(db, className) {
@@ -25,4 +25,4 @@ function methods(db, className) {
25
25
  export {
26
26
  methods
27
27
  };
28
- //# sourceMappingURL=chunk-NUZ4OMU3.js.map
28
+ //# sourceMappingURL=chunk-GU2H5QRN.js.map
@@ -1,16 +1,18 @@
1
1
  import {
2
2
  findFirstSymbolMatch,
3
3
  getCalleeRowsForSymbol
4
- } from "./chunk-ZOGY2V3N.js";
4
+ } from "./chunk-LLMPAG56.js";
5
5
  import {
6
+ isFunctionLikeSymbol,
6
7
  shortenSymbol
7
- } from "./chunk-QOV2R2WT.js";
8
+ } from "./chunk-QIXNAB5K.js";
8
9
 
9
10
  // src/queries/similar.ts
10
11
  function similar(db, symbolPattern, opts = {}) {
11
12
  const { minSimilarity = 0.4, limit = 20 } = opts;
12
13
  const target = findCallees(db, symbolPattern);
13
14
  if (!target || target.callees.size === 0) return [];
15
+ if (!isFunctionLikeSymbol(target.symbol)) return [];
14
16
  const candidates = getAllCalleeFingerprints(db, {
15
17
  minCallees: 3,
16
18
  excludeSymbol: target.symbol
@@ -160,6 +162,7 @@ function getAllCalleeFingerprints(db, opts) {
160
162
  const fingerprints = [];
161
163
  for (const sym of symbols) {
162
164
  if (db.isIgnored(sym.relative_path)) continue;
165
+ if (!isFunctionLikeSymbol(sym.symbol)) continue;
163
166
  const calleeRows = getCalleeRowsForSymbol(db, {
164
167
  documentId: sym.document_id,
165
168
  startLine: sym.start_line,
@@ -192,4 +195,4 @@ export {
192
195
  similar,
193
196
  similarAll
194
197
  };
195
- //# sourceMappingURL=chunk-UJQN5N3I.js.map
198
+ //# sourceMappingURL=chunk-H6WCPKCX.js.map
@@ -1,9 +1,12 @@
1
+ import {
2
+ isEntrySurface
3
+ } from "./chunk-VO4QI3LS.js";
1
4
  import {
2
5
  testFileExclusionSql
3
- } from "./chunk-ZOGY2V3N.js";
6
+ } from "./chunk-LLMPAG56.js";
4
7
  import {
5
8
  shortenSymbol
6
- } from "./chunk-QOV2R2WT.js";
9
+ } from "./chunk-QIXNAB5K.js";
7
10
 
8
11
  // src/queries/isolated.ts
9
12
  function isolated(db, opts = {}) {
@@ -41,7 +44,7 @@ function isolated(db, opts = {}) {
41
44
  ORDER BY loc DESC, d.relative_path`,
42
45
  minLoc
43
46
  );
44
- return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({
47
+ return rows.filter((r) => !db.isIgnored(r.relative_path)).filter((r) => !isEntrySurface(db, r.relative_path)).map((r) => ({
45
48
  symbol: r.symbol,
46
49
  shortName: shortenSymbol(r.symbol),
47
50
  relativePath: r.relative_path,
@@ -54,4 +57,4 @@ function isolated(db, opts = {}) {
54
57
  export {
55
58
  isolated
56
59
  };
57
- //# sourceMappingURL=chunk-OVPLOMPY.js.map
60
+ //# sourceMappingURL=chunk-HMYJJ3HY.js.map
@@ -0,0 +1,69 @@
1
+ import {
2
+ findFirstSymbolMatch
3
+ } from "./chunk-LLMPAG56.js";
4
+ import {
5
+ parseSymbol,
6
+ shortenSymbol
7
+ } from "./chunk-QIXNAB5K.js";
8
+
9
+ // src/queries/hierarchy.ts
10
+ function hierarchy(db, symbolPattern) {
11
+ const match = findFirstSymbolMatch(db, symbolPattern);
12
+ if (!match) return [];
13
+ const sym = db.get(
14
+ `SELECT symbol, enclosing_symbol FROM global_symbols
15
+ WHERE id = ? LIMIT 1`,
16
+ match.symbolId
17
+ );
18
+ if (!sym) return [];
19
+ const chain = [
20
+ { symbol: sym.symbol, shortName: shortenSymbol(sym.symbol), depth: 0 }
21
+ ];
22
+ let current = sym.enclosing_symbol;
23
+ let depth = 1;
24
+ const seen = /* @__PURE__ */ new Set([sym.symbol]);
25
+ while (current && !seen.has(current) && depth < 20) {
26
+ seen.add(current);
27
+ const parent = db.get(
28
+ `SELECT symbol, enclosing_symbol FROM global_symbols WHERE symbol = ?`,
29
+ current
30
+ );
31
+ if (!parent) break;
32
+ chain.push({
33
+ symbol: parent.symbol,
34
+ shortName: shortenSymbol(parent.symbol),
35
+ depth
36
+ });
37
+ current = parent.enclosing_symbol;
38
+ depth++;
39
+ }
40
+ if (chain.length > 1) {
41
+ return chain;
42
+ }
43
+ const parsed = parseSymbol(sym.symbol);
44
+ if ("kind" in parsed) {
45
+ return chain;
46
+ }
47
+ const descriptors = parsed.descriptors;
48
+ if (descriptors.length <= 1) {
49
+ return chain;
50
+ }
51
+ const syntheticChain = [chain[0]];
52
+ for (let i = descriptors.length - 2, syntheticDepth = 1; i >= 0; i--, syntheticDepth++) {
53
+ const partial = descriptors.slice(0, i + 1);
54
+ const shortName = partial.map(
55
+ (descriptor) => descriptor.suffix === "method" ? `${descriptor.name}()` : descriptor.name.replace(/\.(ts|tsx|js|jsx|mjs|cjs|py|pyi|rs|java|scala|kt|kts|rb|go|cs|vb|dart|php|c|cc|cpp|cxx|h|hpp)$/, "")
56
+ ).join(":");
57
+ syntheticChain.push({
58
+ symbol: shortName,
59
+ shortName,
60
+ depth: syntheticDepth
61
+ });
62
+ }
63
+ return syntheticChain;
64
+ }
65
+
66
+ export {
67
+ hierarchy
68
+ };
69
+ //# sourceMappingURL=chunk-IJKLB2JW.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/fan.ts
6
6
  function fanIn(db, symbolPattern) {
@@ -99,4 +99,4 @@ export {
99
99
  topFanIn,
100
100
  topFanOut
101
101
  };
102
- //# sourceMappingURL=chunk-DGUPQSOR.js.map
102
+ //# sourceMappingURL=chunk-IXPHLF6K.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