scip-query 0.1.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 (325) 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-NDSQYIWT.js → chunk-3566TKJ5.js} +3 -3
  5. package/dist/{chunk-LB7OS35Q.js → chunk-4ACRRQC4.js} +8 -4
  6. package/dist/{chunk-3E2X7RIE.js → chunk-4BQFSNFI.js} +10 -6
  7. package/dist/{chunk-BP2ATLK2.js → chunk-6QSHLFSL.js} +4 -4
  8. package/dist/{chunk-5FGUEU7N.js → chunk-6WVR5K46.js} +18 -10
  9. package/dist/{chunk-XFXDXEUN.js → chunk-74RFWB5T.js} +2 -2
  10. package/dist/{chunk-MBVNHJVN.js → chunk-75RQSBTK.js} +2 -2
  11. package/dist/{chunk-YZAA4LYG.js → chunk-7HK5ZLOE.js} +30 -48
  12. package/dist/{chunk-T6ARFSBZ.js → chunk-7JFZSOJ7.js} +7 -7
  13. package/dist/{chunk-6SXADWLW.js → chunk-AKMBBKWV.js} +2 -2
  14. package/dist/{chunk-ZJRYBOEE.js → chunk-AMNISGYR.js} +5 -5
  15. package/dist/{chunk-CM454WL3.js → chunk-BFLULBEU.js} +3 -3
  16. package/dist/{chunk-Z73NYSBZ.js → chunk-CU62ZDHI.js} +2 -2
  17. package/dist/{chunk-TBP6BICL.js → chunk-DY4AFG2W.js} +13 -11
  18. package/dist/{chunk-2QZ23IBN.js → chunk-F7XU27LU.js} +4 -4
  19. package/dist/{chunk-KCBMVQL5.js → chunk-GPJVPT3U.js} +2 -2
  20. package/dist/{chunk-NUZ4OMU3.js → chunk-GU2H5QRN.js} +2 -2
  21. package/dist/{chunk-TSPZOMHC.js → chunk-H6WCPKCX.js} +6 -3
  22. package/dist/{chunk-KVSW5KYP.js → chunk-HDSRORNV.js} +4 -4
  23. package/dist/{chunk-LUSIFBXO.js → chunk-HMYJJ3HY.js} +9 -6
  24. package/dist/chunk-IJKLB2JW.js +69 -0
  25. package/dist/{chunk-6NBLIDF4.js → chunk-ITZ3DDOG.js} +2 -2
  26. package/dist/{chunk-GTILYBH6.js → chunk-IXPHLF6K.js} +6 -6
  27. package/dist/{chunk-BFSCMC22.js → chunk-KBOQX573.js} +3 -3
  28. package/dist/{chunk-FUHJCHS4.js → chunk-LLMPAG56.js} +95 -32
  29. package/dist/{chunk-FFSWWE5O.js → chunk-LTJC5ZQL.js} +3 -3
  30. package/dist/{chunk-LAWMH22O.js → chunk-M3NPW3FC.js} +2 -2
  31. package/dist/{chunk-VRUJH4BO.js → chunk-M4QGEKKD.js} +6 -28
  32. package/dist/{chunk-7OZPA5OO.js → chunk-MVH45PYK.js} +21 -41
  33. package/dist/chunk-N4C3H7LH.js +37 -0
  34. package/dist/chunk-NG5F43OU.js +200 -0
  35. package/dist/{chunk-6VJ6Q7IE.js → chunk-NVIIM34O.js} +4 -4
  36. package/dist/{chunk-GJFURBEW.js → chunk-ORINICIZ.js} +4 -4
  37. package/dist/{chunk-TDNNOR6D.js → chunk-PMJKOXOT.js} +7 -7
  38. package/dist/{chunk-QOV2R2WT.js → chunk-QIXNAB5K.js} +42 -2
  39. package/dist/{chunk-JKP5GH6T.js → chunk-R2I3M5B4.js} +2 -2
  40. package/dist/{chunk-36OMT7ZJ.js → chunk-R56FJU3E.js} +35 -14
  41. package/dist/{chunk-VZ7AMAFL.js → chunk-RFMT7UAZ.js} +3 -3
  42. package/dist/{chunk-SEFSL2GF.js → chunk-TOIEB3LG.js} +2 -2
  43. package/dist/chunk-VO4QI3LS.js +84 -0
  44. package/dist/{chunk-EMDQWNYR.js → chunk-WVK7AASK.js} +8 -8
  45. package/dist/{chunk-5WTJAXY2.js → chunk-Y3M323OX.js} +2 -2
  46. package/dist/{chunk-DCKMSTJ4.js → chunk-Y4JFVQ7C.js} +2 -2
  47. package/dist/{chunk-UNTPVD36.js → chunk-YAFWL3RA.js} +4 -4
  48. package/dist/{chunk-FGXRVW7G.js → chunk-YZ6L7GFO.js} +2 -2
  49. package/dist/cli.js +1401 -717
  50. package/dist/{db-BxaevAyc.d.ts → db-BHYam4BK.d.ts} +7 -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 +2 -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 +1 -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/diff-impact.d.ts +2 -2
  84. package/dist/queries/diff-impact.js +2 -3
  85. package/dist/queries/doc-coverage.d.ts +1 -1
  86. package/dist/queries/doc-coverage.js +2 -2
  87. package/dist/queries/drift.d.ts +1 -1
  88. package/dist/queries/drift.js +3 -2
  89. package/dist/queries/extract-candidates.d.ts +1 -1
  90. package/dist/queries/extract-candidates.js +3 -3
  91. package/dist/queries/fan.d.ts +1 -1
  92. package/dist/queries/fan.js +2 -2
  93. package/dist/queries/files.d.ts +1 -1
  94. package/dist/queries/health.d.ts +1 -1
  95. package/dist/queries/health.js +15 -15
  96. package/dist/queries/hierarchy.d.ts +1 -1
  97. package/dist/queries/hierarchy.js +3 -2
  98. package/dist/queries/hotspots.d.ts +1 -1
  99. package/dist/queries/hotspots.js +2 -2
  100. package/dist/queries/imports.d.ts +1 -1
  101. package/dist/queries/imports.js +3 -2
  102. package/dist/queries/index.d.ts +1 -2
  103. package/dist/queries/index.js +46 -51
  104. package/dist/queries/isolated.d.ts +1 -1
  105. package/dist/queries/isolated.js +4 -3
  106. package/dist/queries/members.d.ts +2 -2
  107. package/dist/queries/members.js +3 -2
  108. package/dist/queries/methods.d.ts +1 -1
  109. package/dist/queries/methods.js +2 -2
  110. package/dist/queries/outline.d.ts +1 -1
  111. package/dist/queries/outline.js +2 -2
  112. package/dist/queries/passthrough-candidates.d.ts +1 -1
  113. package/dist/queries/passthrough-candidates.js +3 -3
  114. package/dist/queries/redundant-reexports.d.ts +1 -1
  115. package/dist/queries/redundant-reexports.js +4 -2
  116. package/dist/queries/refs.d.ts +1 -1
  117. package/dist/queries/refs.js +1 -1
  118. package/dist/queries/similar-chains.d.ts +1 -1
  119. package/dist/queries/similar-chains.js +3 -2
  120. package/dist/queries/similar-files.d.ts +1 -1
  121. package/dist/queries/similar-files.js +3 -2
  122. package/dist/queries/similar-signatures.d.ts +1 -1
  123. package/dist/queries/similar-signatures.js +2 -2
  124. package/dist/queries/similar.d.ts +1 -1
  125. package/dist/queries/similar.js +3 -3
  126. package/dist/queries/slice.d.ts +1 -1
  127. package/dist/queries/slice.js +3 -3
  128. package/dist/queries/stale-abstractions.d.ts +1 -1
  129. package/dist/queries/stale-abstractions.js +3 -3
  130. package/dist/queries/stats.d.ts +1 -1
  131. package/dist/queries/stats.js +1 -1
  132. package/dist/queries/surface.d.ts +1 -1
  133. package/dist/queries/surface.js +2 -2
  134. package/dist/queries/symbols.d.ts +1 -1
  135. package/dist/queries/symbols.js +2 -2
  136. package/dist/queries/system.d.ts +1 -1
  137. package/dist/queries/system.js +2 -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-2QZ23IBN.js.map +0 -1
  147. package/dist/chunk-36OMT7ZJ.js.map +0 -1
  148. package/dist/chunk-3E2X7RIE.js.map +0 -1
  149. package/dist/chunk-3UOUTZQT.js +0 -45
  150. package/dist/chunk-3UOUTZQT.js.map +0 -1
  151. package/dist/chunk-3ZZJVBIO.js +0 -88
  152. package/dist/chunk-3ZZJVBIO.js.map +0 -1
  153. package/dist/chunk-4TYLS5XX.js.map +0 -1
  154. package/dist/chunk-5FGUEU7N.js.map +0 -1
  155. package/dist/chunk-5WTJAXY2.js.map +0 -1
  156. package/dist/chunk-6NBLIDF4.js.map +0 -1
  157. package/dist/chunk-6SXADWLW.js.map +0 -1
  158. package/dist/chunk-6VJ6Q7IE.js.map +0 -1
  159. package/dist/chunk-7OZPA5OO.js.map +0 -1
  160. package/dist/chunk-BEPIEVLR.js +0 -76
  161. package/dist/chunk-BEPIEVLR.js.map +0 -1
  162. package/dist/chunk-BFSCMC22.js.map +0 -1
  163. package/dist/chunk-BP2ATLK2.js.map +0 -1
  164. package/dist/chunk-CM454WL3.js.map +0 -1
  165. package/dist/chunk-DCKMSTJ4.js.map +0 -1
  166. package/dist/chunk-DEZKCZXD.js +0 -40
  167. package/dist/chunk-DEZKCZXD.js.map +0 -1
  168. package/dist/chunk-DVWGWHFW.js +0 -99
  169. package/dist/chunk-DVWGWHFW.js.map +0 -1
  170. package/dist/chunk-EMDQWNYR.js.map +0 -1
  171. package/dist/chunk-FFSWWE5O.js.map +0 -1
  172. package/dist/chunk-FGXRVW7G.js.map +0 -1
  173. package/dist/chunk-FUHJCHS4.js.map +0 -1
  174. package/dist/chunk-GJFURBEW.js.map +0 -1
  175. package/dist/chunk-GTILYBH6.js.map +0 -1
  176. package/dist/chunk-JJP7KQND.js +0 -1
  177. package/dist/chunk-JJP7KQND.js.map +0 -1
  178. package/dist/chunk-JKP5GH6T.js.map +0 -1
  179. package/dist/chunk-KCBMVQL5.js.map +0 -1
  180. package/dist/chunk-KVSW5KYP.js.map +0 -1
  181. package/dist/chunk-LAWMH22O.js.map +0 -1
  182. package/dist/chunk-LB7OS35Q.js.map +0 -1
  183. package/dist/chunk-LUSIFBXO.js.map +0 -1
  184. package/dist/chunk-MBVNHJVN.js.map +0 -1
  185. package/dist/chunk-MGNMHKX3.js.map +0 -1
  186. package/dist/chunk-N5KEREIA.js.map +0 -1
  187. package/dist/chunk-NDSQYIWT.js.map +0 -1
  188. package/dist/chunk-NUZ4OMU3.js.map +0 -1
  189. package/dist/chunk-QOV2R2WT.js.map +0 -1
  190. package/dist/chunk-SEFSL2GF.js.map +0 -1
  191. package/dist/chunk-T6ARFSBZ.js.map +0 -1
  192. package/dist/chunk-TBP6BICL.js.map +0 -1
  193. package/dist/chunk-TDNNOR6D.js.map +0 -1
  194. package/dist/chunk-TSPZOMHC.js.map +0 -1
  195. package/dist/chunk-UNTPVD36.js.map +0 -1
  196. package/dist/chunk-VRUJH4BO.js.map +0 -1
  197. package/dist/chunk-VZ7AMAFL.js.map +0 -1
  198. package/dist/chunk-XFXDXEUN.js.map +0 -1
  199. package/dist/chunk-YZAA4LYG.js.map +0 -1
  200. package/dist/chunk-Z73NYSBZ.js.map +0 -1
  201. package/dist/chunk-ZJRYBOEE.js.map +0 -1
  202. package/dist/cli.js.map +0 -1
  203. package/dist/index.js.map +0 -1
  204. package/dist/postinstall.js.map +0 -1
  205. package/dist/queries/affected.js.map +0 -1
  206. package/dist/queries/bottlenecks.js.map +0 -1
  207. package/dist/queries/by-kind.js.map +0 -1
  208. package/dist/queries/call-graph.js.map +0 -1
  209. package/dist/queries/change-surface.js.map +0 -1
  210. package/dist/queries/clean-signature.js.map +0 -1
  211. package/dist/queries/code.js.map +0 -1
  212. package/dist/queries/complexity-hotspots.js.map +0 -1
  213. package/dist/queries/complexity.js.map +0 -1
  214. package/dist/queries/convergence.js.map +0 -1
  215. package/dist/queries/coupling.js.map +0 -1
  216. package/dist/queries/cycles.js.map +0 -1
  217. package/dist/queries/dataflow.js.map +0 -1
  218. package/dist/queries/dead.js.map +0 -1
  219. package/dist/queries/deep-chains.js.map +0 -1
  220. package/dist/queries/deps.js.map +0 -1
  221. package/dist/queries/diff-impact.js.map +0 -1
  222. package/dist/queries/doc-coverage.js.map +0 -1
  223. package/dist/queries/drift.js.map +0 -1
  224. package/dist/queries/extract-candidates.js.map +0 -1
  225. package/dist/queries/fan.js.map +0 -1
  226. package/dist/queries/files.js.map +0 -1
  227. package/dist/queries/health.js.map +0 -1
  228. package/dist/queries/hierarchy.js.map +0 -1
  229. package/dist/queries/hotspots.js.map +0 -1
  230. package/dist/queries/imports.js.map +0 -1
  231. package/dist/queries/index.js.map +0 -1
  232. package/dist/queries/isolated.js.map +0 -1
  233. package/dist/queries/members.js.map +0 -1
  234. package/dist/queries/methods.js.map +0 -1
  235. package/dist/queries/outline.js.map +0 -1
  236. package/dist/queries/passthrough-candidates.js.map +0 -1
  237. package/dist/queries/redundant-reexports.js.map +0 -1
  238. package/dist/queries/refs.js.map +0 -1
  239. package/dist/queries/similar-chains.js.map +0 -1
  240. package/dist/queries/similar-files.js.map +0 -1
  241. package/dist/queries/similar-signatures.js.map +0 -1
  242. package/dist/queries/similar.js.map +0 -1
  243. package/dist/queries/slice.js.map +0 -1
  244. package/dist/queries/stale-abstractions.js.map +0 -1
  245. package/dist/queries/stats.js.map +0 -1
  246. package/dist/queries/surface.js.map +0 -1
  247. package/dist/queries/symbols.js.map +0 -1
  248. package/dist/queries/system.js.map +0 -1
  249. package/dist/queries/test-coverage.d.ts +0 -22
  250. package/dist/queries/test-coverage.js +0 -11
  251. package/dist/queries/test-coverage.js.map +0 -1
  252. package/dist/queries/trace.js.map +0 -1
  253. package/dist/queries/wrapper-candidates.js.map +0 -1
  254. package/dist/reindex-worker.js.map +0 -1
  255. package/docs/AGENT_GUIDE.md +0 -359
  256. package/reports/debloat/2026-04-10-scip-query-self-audit.md +0 -161
  257. package/src/cli.ts +0 -1480
  258. package/src/config.ts +0 -117
  259. package/src/db.ts +0 -127
  260. package/src/gitignore-filter.ts +0 -143
  261. package/src/index.ts +0 -11
  262. package/src/postinstall.ts +0 -8
  263. package/src/queries/affected.ts +0 -86
  264. package/src/queries/bottlenecks.ts +0 -67
  265. package/src/queries/by-kind.ts +0 -204
  266. package/src/queries/call-graph.ts +0 -66
  267. package/src/queries/change-surface.ts +0 -110
  268. package/src/queries/clean-signature.ts +0 -22
  269. package/src/queries/code.ts +0 -101
  270. package/src/queries/complexity-hotspots.ts +0 -119
  271. package/src/queries/complexity.ts +0 -152
  272. package/src/queries/convergence.ts +0 -82
  273. package/src/queries/coupling.ts +0 -99
  274. package/src/queries/cycles.ts +0 -78
  275. package/src/queries/dataflow.ts +0 -128
  276. package/src/queries/dead.ts +0 -122
  277. package/src/queries/deep-chains.ts +0 -59
  278. package/src/queries/deps.ts +0 -46
  279. package/src/queries/diff-impact.ts +0 -204
  280. package/src/queries/doc-coverage.ts +0 -86
  281. package/src/queries/drift.ts +0 -224
  282. package/src/queries/extract-candidates.ts +0 -167
  283. package/src/queries/fan.ts +0 -148
  284. package/src/queries/files.ts +0 -16
  285. package/src/queries/health.ts +0 -324
  286. package/src/queries/hierarchy.ts +0 -49
  287. package/src/queries/hotspots.ts +0 -53
  288. package/src/queries/imports.ts +0 -95
  289. package/src/queries/index.ts +0 -45
  290. package/src/queries/isolated.ts +0 -67
  291. package/src/queries/members.ts +0 -54
  292. package/src/queries/methods.ts +0 -27
  293. package/src/queries/outline.ts +0 -52
  294. package/src/queries/passthrough-candidates.ts +0 -94
  295. package/src/queries/redundant-reexports.ts +0 -170
  296. package/src/queries/refs.ts +0 -27
  297. package/src/queries/similar-chains.ts +0 -314
  298. package/src/queries/similar-files.ts +0 -140
  299. package/src/queries/similar-signatures.ts +0 -151
  300. package/src/queries/similar.ts +0 -305
  301. package/src/queries/slice.ts +0 -154
  302. package/src/queries/stale-abstractions.ts +0 -82
  303. package/src/queries/stats.ts +0 -22
  304. package/src/queries/surface.ts +0 -34
  305. package/src/queries/symbols.ts +0 -39
  306. package/src/queries/system.ts +0 -86
  307. package/src/queries/test-coverage.ts +0 -106
  308. package/src/queries/trace.ts +0 -55
  309. package/src/queries/wrapper-candidates.ts +0 -112
  310. package/src/query-support.ts +0 -226
  311. package/src/reindex/detect.ts +0 -58
  312. package/src/reindex/index.ts +0 -153
  313. package/src/reindex/indexers.ts +0 -220
  314. package/src/reindex/install.ts +0 -125
  315. package/src/reindex-worker.ts +0 -35
  316. package/src/setup.ts +0 -202
  317. package/src/symbol-parser.ts +0 -278
  318. package/src/types.ts +0 -654
  319. package/src/watch.ts +0 -274
  320. package/tests/gitignore-filter.test.ts +0 -48
  321. package/tests/queries.test.ts +0 -300
  322. package/tests/symbol-parser.test.ts +0 -157
  323. package/tsconfig.json +0 -20
  324. package/tsup.config.ts +0 -40
  325. package/vitest.config.ts +0 -7
@@ -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,9 +1,9 @@
1
1
  import {
2
2
  findFirstSymbolMatch
3
- } from "./chunk-FUHJCHS4.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/affected.ts
9
9
  function affected(db, symbolPattern, opts = {}) {
@@ -33,7 +33,7 @@ function affected(db, symbolPattern, opts = {}) {
33
33
  JOIN global_symbols enc_gs ON enc_der.symbol_id = enc_gs.id
34
34
  JOIN documents enc_d ON enc_der.document_id = enc_d.id
35
35
  WHERE m.symbol_id IN (${placeholders})
36
- AND m.role = 0
36
+ AND m.role != 1
37
37
  AND enc_gs.id NOT IN (${placeholders})
38
38
  ${db.symbolNoiseFor("enc_gs")}
39
39
  ${db.pathExclusionsFor("enc_d")}
@@ -62,4 +62,4 @@ function affected(db, symbolPattern, opts = {}) {
62
62
  export {
63
63
  affected
64
64
  };
65
- //# sourceMappingURL=chunk-6VJ6Q7IE.js.map
65
+ //# sourceMappingURL=chunk-NVIIM34O.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  testFileExclusionSql
3
- } from "./chunk-FUHJCHS4.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/stale-abstractions.ts
9
9
  function staleAbstractions(db, opts) {
@@ -21,7 +21,7 @@ function staleAbstractions(db, opts) {
21
21
  FROM mentions ref_m
22
22
  JOIN chunks ref_c ON ref_m.chunk_id = ref_c.id
23
23
  WHERE ref_m.symbol_id = gs.id
24
- AND ref_m.role = 0
24
+ AND ref_m.role != 1
25
25
  AND ref_c.document_id != der.document_id
26
26
  ) AS consumers
27
27
  FROM global_symbols gs
@@ -61,4 +61,4 @@ function staleAbstractions(db, opts) {
61
61
  export {
62
62
  staleAbstractions
63
63
  };
64
- //# sourceMappingURL=chunk-GJFURBEW.js.map
64
+ //# sourceMappingURL=chunk-ORINICIZ.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  testFileExclusionSql
3
- } from "./chunk-FUHJCHS4.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/wrapper-candidates.ts
9
9
  function wrapperCandidates(db, opts) {
@@ -28,7 +28,7 @@ function wrapperCandidates(db, opts) {
28
28
  AND ref_c.end_line <= caller_der.end_line
29
29
  JOIN global_symbols caller_gs ON caller_der.symbol_id = caller_gs.id
30
30
  WHERE ref_m.symbol_id = gs.id
31
- AND ref_m.role = 0
31
+ AND ref_m.role != 1
32
32
  AND ref_c.document_id != der.document_id
33
33
  LIMIT 1
34
34
  ) AS caller_symbol,
@@ -45,11 +45,11 @@ function wrapperCandidates(db, opts) {
45
45
  AND ref_c2.start_line >= caller_der2.start_line
46
46
  AND ref_c2.end_line <= caller_der2.end_line
47
47
  WHERE ref_m2.symbol_id = gs.id
48
- AND ref_m2.role = 0
48
+ AND ref_m2.role != 1
49
49
  AND ref_c2.document_id != der.document_id
50
50
  LIMIT 1
51
51
  )
52
- AND caller_ref_m.role = 0
52
+ AND caller_ref_m.role != 1
53
53
  ) AS caller_fan_in
54
54
  FROM global_symbols gs
55
55
  JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
@@ -69,7 +69,7 @@ function wrapperCandidates(db, opts) {
69
69
  FROM mentions ref_m
70
70
  JOIN chunks ref_c ON ref_m.chunk_id = ref_c.id
71
71
  WHERE ref_m.symbol_id = gs.id
72
- AND ref_m.role = 0
72
+ AND ref_m.role != 1
73
73
  AND ref_c.document_id != der.document_id
74
74
  ) = 1
75
75
  ) WHERE caller_symbol IS NOT NULL AND caller_fan_in > 3
@@ -94,4 +94,4 @@ function wrapperCandidates(db, opts) {
94
94
  export {
95
95
  wrapperCandidates
96
96
  };
97
- //# sourceMappingURL=chunk-TDNNOR6D.js.map
97
+ //# sourceMappingURL=chunk-PMJKOXOT.js.map
@@ -161,10 +161,50 @@ function leafName(raw) {
161
161
  const last = sym.descriptors[sym.descriptors.length - 1];
162
162
  return last.name;
163
163
  }
164
+ function leafSuffix(raw) {
165
+ const parsed = parseSymbol(raw);
166
+ if ("kind" in parsed && parsed.kind === "local") {
167
+ return null;
168
+ }
169
+ const sym = parsed;
170
+ const last = sym.descriptors[sym.descriptors.length - 1];
171
+ return last?.suffix ?? null;
172
+ }
173
+ function isFunctionLikeSymbol(raw) {
174
+ const suffix = leafSuffix(raw);
175
+ return suffix === "method" || suffix === "term";
176
+ }
177
+ function isModuleLikeSymbol(raw) {
178
+ return leafSuffix(raw) === "namespace";
179
+ }
180
+ function isDirectChildSymbol(parentRaw, candidateRaw) {
181
+ const parent = parseSymbol(parentRaw);
182
+ const candidate = parseSymbol(candidateRaw);
183
+ if ("kind" in parent || "kind" in candidate) {
184
+ return false;
185
+ }
186
+ const parentDescriptors = parent.descriptors;
187
+ const candidateDescriptors = candidate.descriptors;
188
+ if (candidateDescriptors.length !== parentDescriptors.length + 1) {
189
+ return false;
190
+ }
191
+ for (let i = 0; i < parentDescriptors.length; i++) {
192
+ const parentDesc = parentDescriptors[i];
193
+ const candidateDesc = candidateDescriptors[i];
194
+ if (parentDesc.name !== candidateDesc.name || parentDesc.suffix !== candidateDesc.suffix) {
195
+ return false;
196
+ }
197
+ }
198
+ return true;
199
+ }
164
200
 
165
201
  export {
166
202
  parseSymbol,
167
203
  shortenSymbol,
168
- leafName
204
+ leafName,
205
+ leafSuffix,
206
+ isFunctionLikeSymbol,
207
+ isModuleLikeSymbol,
208
+ isDirectChildSymbol
169
209
  };
170
- //# sourceMappingURL=chunk-QOV2R2WT.js.map
210
+ //# sourceMappingURL=chunk-QIXNAB5K.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-FUHJCHS4.js";
3
+ } from "./chunk-LLMPAG56.js";
4
4
 
5
5
  // src/queries/similar-chains.ts
6
6
  function similarChains(db, opts = {}) {
@@ -210,4 +210,4 @@ function isSubChain(sub, full) {
210
210
  export {
211
211
  similarChains
212
212
  };
213
- //# sourceMappingURL=chunk-JKP5GH6T.js.map
213
+ //# sourceMappingURL=chunk-R2I3M5B4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-FUHJCHS4.js";
3
+ } from "./chunk-LLMPAG56.js";
4
4
 
5
5
  // src/queries/drift.ts
6
6
  import path from "path";
@@ -10,9 +10,10 @@ function drift(db, opts) {
10
10
  const symbolRefs = buildSymbolRefGraph(db, scope);
11
11
  const results = [];
12
12
  for (const [file, deps] of depGraph) {
13
- if (isStructuralRole(path.basename(file))) continue;
13
+ if (shouldSkipDriftFile(file)) continue;
14
14
  const referencedFiles = symbolRefs.get(file) ?? /* @__PURE__ */ new Set();
15
15
  for (const dep of deps) {
16
+ if (shouldSkipDriftFile(dep)) continue;
16
17
  if (!referencedFiles.has(dep)) {
17
18
  if (isLikelyTypeOnlyDep(dep)) continue;
18
19
  results.push({
@@ -26,10 +27,11 @@ function drift(db, opts) {
26
27
  }
27
28
  const layerRules = inferLayerRules(depGraph);
28
29
  for (const [file, deps] of depGraph) {
29
- if (isStructuralRole(path.basename(file))) continue;
30
- const fileLayer = getTopDir(file);
30
+ if (shouldSkipDriftFile(file)) continue;
31
+ const fileLayer = getArchitecturalLayer(file);
31
32
  for (const dep of deps) {
32
- const depLayer = getTopDir(dep);
33
+ if (shouldSkipDriftFile(dep)) continue;
34
+ const depLayer = getArchitecturalLayer(dep);
33
35
  if (fileLayer === depLayer) continue;
34
36
  const violation = layerRules.get(`${fileLayer}->${depLayer}`);
35
37
  if (violation === "violation") {
@@ -53,14 +55,16 @@ function drift(db, opts) {
53
55
  if (files.length < 3) continue;
54
56
  const depFreq = /* @__PURE__ */ new Map();
55
57
  for (const file of files) {
56
- if (isStructuralRole(path.basename(file))) continue;
58
+ if (shouldSkipDriftFile(file)) continue;
57
59
  for (const dep of depGraph.get(file) ?? []) {
60
+ if (shouldSkipDriftFile(dep)) continue;
58
61
  depFreq.set(dep, (depFreq.get(dep) ?? 0) + 1);
59
62
  }
60
63
  }
61
64
  for (const file of files) {
62
- if (isStructuralRole(path.basename(file))) continue;
65
+ if (shouldSkipDriftFile(file)) continue;
63
66
  for (const dep of depGraph.get(file) ?? []) {
67
+ if (shouldSkipDriftFile(dep)) continue;
64
68
  if ((depFreq.get(dep) ?? 0) === 1) {
65
69
  if (path.dirname(dep) === dir) continue;
66
70
  results.push({
@@ -91,7 +95,7 @@ function buildSymbolRefGraph(db, scope) {
91
95
  JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
92
96
  JOIN documents d2 ON der.document_id = d2.id
93
97
  WHERE d1.id != d2.id
94
- AND m.role = 0
98
+ AND m.role != 1
95
99
  ${db.pathExclusionsFor("d1", "d2")}
96
100
  ${scopeFilter}`
97
101
  );
@@ -107,10 +111,12 @@ function inferLayerRules(depGraph) {
107
111
  const layerEdges = /* @__PURE__ */ new Map();
108
112
  const layerSet = /* @__PURE__ */ new Set();
109
113
  for (const [file, deps] of depGraph) {
110
- const fromLayer = getTopDir(file);
114
+ if (shouldSkipDriftFile(file)) continue;
115
+ const fromLayer = getArchitecturalLayer(file);
111
116
  layerSet.add(fromLayer);
112
117
  for (const dep of deps) {
113
- const toLayer = getTopDir(dep);
118
+ if (shouldSkipDriftFile(dep)) continue;
119
+ const toLayer = getArchitecturalLayer(dep);
114
120
  if (fromLayer === toLayer) continue;
115
121
  layerSet.add(toLayer);
116
122
  const key = `${fromLayer}->${toLayer}`;
@@ -123,13 +129,23 @@ function inferLayerRules(depGraph) {
123
129
  }
124
130
  return rules;
125
131
  }
126
- function getTopDir(filePath) {
127
- const parts = filePath.split("/");
128
- return parts[0] ?? filePath;
132
+ function getArchitecturalLayer(filePath) {
133
+ const normalized = filePath.replace(/\\/g, "/");
134
+ const parts = normalized.split("/").filter(Boolean);
135
+ if (parts.length <= 1) {
136
+ return "(root)";
137
+ }
138
+ if (parts.length >= 3 && ["src", "lib", "app", "server", "client"].includes(parts[0])) {
139
+ return `${parts[0]}/${parts[1]}`;
140
+ }
141
+ return parts[0];
129
142
  }
130
143
  function isLikelyTypeOnlyDep(dep) {
131
144
  return dep.includes("types") || dep.endsWith(".d.ts");
132
145
  }
146
+ function shouldSkipDriftFile(filePath) {
147
+ return isStructuralRole(path.basename(filePath)) || isTestLikePath(filePath);
148
+ }
133
149
  function isStructuralRole(basename) {
134
150
  if (basename === "index.ts" || basename === "index.js") return true;
135
151
  if (basename === "cli.ts" || basename === "main.ts" || basename === "main.rs") return true;
@@ -137,8 +153,13 @@ function isStructuralRole(basename) {
137
153
  if (basename === "health.ts" || basename === "health.js") return true;
138
154
  return false;
139
155
  }
156
+ function isTestLikePath(filePath) {
157
+ const normalized = filePath.replace(/\\/g, "/");
158
+ const basename = path.basename(normalized);
159
+ return normalized.includes("/__tests__/") || normalized.includes("/tests/") || normalized.includes("/test/") || /\.(test|spec)\.[A-Za-z0-9]+$/.test(basename) || /_(test|spec)\.[A-Za-z0-9]+$/.test(basename) || /^test[_-]/.test(basename) || /^test\./.test(basename);
160
+ }
140
161
 
141
162
  export {
142
163
  drift
143
164
  };
144
- //# sourceMappingURL=chunk-36OMT7ZJ.js.map
165
+ //# sourceMappingURL=chunk-R56FJU3E.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  findFirstSymbolMatch
3
- } from "./chunk-FUHJCHS4.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/code.ts
9
9
  import { readFileSync } from "fs";
@@ -73,4 +73,4 @@ function readFileRange(db, filePath, startLine, endLine, context) {
73
73
  export {
74
74
  code
75
75
  };
76
- //# sourceMappingURL=chunk-VZ7AMAFL.js.map
76
+ //# sourceMappingURL=chunk-RFMT7UAZ.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/similar-signatures.ts
6
6
  function similarSignatures(db, opts = {}) {
@@ -75,4 +75,4 @@ function normalizeSignature(raw) {
75
75
  export {
76
76
  similarSignatures
77
77
  };
78
- //# sourceMappingURL=chunk-SEFSL2GF.js.map
78
+ //# sourceMappingURL=chunk-TOIEB3LG.js.map
@@ -0,0 +1,84 @@
1
+ import {
2
+ buildFileDepGraph
3
+ } from "./chunk-LLMPAG56.js";
4
+
5
+ // src/entry-surfaces.ts
6
+ var liveBarrelCache = /* @__PURE__ */ new WeakMap();
7
+ function normalizePath(path) {
8
+ return path.replace(/\\/g, "/");
9
+ }
10
+ function isBarrelFile(path) {
11
+ const normalized = normalizePath(path);
12
+ return normalized === "index.ts" || normalized === "index.js" || normalized.endsWith("/index.ts") || normalized.endsWith("/index.js") || normalized.endsWith("/mod.rs") || normalized.endsWith("/__init__.py");
13
+ }
14
+ function isWorkerEntrySurface(path) {
15
+ const normalized = normalizePath(path);
16
+ return /(^|\/)[^/]*worker\.(ts|js|mjs|cjs|rs|py|go)$/.test(normalized);
17
+ }
18
+ function isStructuralEntrySurface(path) {
19
+ const normalized = normalizePath(path);
20
+ const segments = normalized.split("/");
21
+ const basename = segments[segments.length - 1] ?? normalized;
22
+ if (basename === "cli.ts" || basename === "cli.js" || basename === "postinstall.ts" || basename === "postinstall.js" || basename === "main.ts" || basename === "main.js" || basename === "main.rs" || basename === "main.go" || basename === "main.py") {
23
+ return true;
24
+ }
25
+ if (basename === "index.ts" || basename === "index.js") {
26
+ return segments.length <= 2;
27
+ }
28
+ return normalized.endsWith("/mod.rs") || normalized.endsWith("/__init__.py");
29
+ }
30
+ function getIndexedPaths(db) {
31
+ return db.all(
32
+ `SELECT d.relative_path
33
+ FROM documents d
34
+ WHERE 1 = 1
35
+ ${db.pathExclusionsFor("d")}
36
+ ORDER BY d.relative_path`
37
+ ).map((row) => row.relative_path).filter((path) => !db.isIgnored(path));
38
+ }
39
+ function getLiveBarrelPaths(db) {
40
+ const cached = liveBarrelCache.get(db);
41
+ if (cached) {
42
+ return cached;
43
+ }
44
+ const graph = buildFileDepGraph(db);
45
+ const queue = getIndexedPaths(db).filter(
46
+ (path) => isStructuralEntrySurface(path) || isWorkerEntrySurface(path)
47
+ );
48
+ const visited = /* @__PURE__ */ new Set();
49
+ const liveBarrels = /* @__PURE__ */ new Set();
50
+ while (queue.length > 0) {
51
+ const current = queue.shift();
52
+ if (visited.has(current)) {
53
+ continue;
54
+ }
55
+ visited.add(current);
56
+ if (isBarrelFile(current)) {
57
+ liveBarrels.add(current);
58
+ }
59
+ for (const dep of graph.get(current) ?? []) {
60
+ if (!visited.has(dep)) {
61
+ queue.push(dep);
62
+ }
63
+ }
64
+ }
65
+ liveBarrelCache.set(db, liveBarrels);
66
+ return liveBarrels;
67
+ }
68
+ function isLiveBarrel(db, path) {
69
+ return getLiveBarrelPaths(db).has(normalizePath(path));
70
+ }
71
+ function isEntrySurface(db, path) {
72
+ return isStructuralEntrySurface(path) || isWorkerEntrySurface(path) || isLiveBarrel(db, path);
73
+ }
74
+ function getInactiveBarrelPaths(db) {
75
+ const liveBarrels = getLiveBarrelPaths(db);
76
+ return getIndexedPaths(db).filter((path) => isBarrelFile(path)).filter((path) => !liveBarrels.has(path));
77
+ }
78
+
79
+ export {
80
+ isLiveBarrel,
81
+ isEntrySurface,
82
+ getInactiveBarrelPaths
83
+ };
84
+ //# sourceMappingURL=chunk-VO4QI3LS.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  testFileExclusionSql
3
- } from "./chunk-FUHJCHS4.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/complexity-hotspots.ts
9
9
  function complexityHotspots(db, opts) {
@@ -20,7 +20,7 @@ function complexityHotspots(db, opts) {
20
20
  (SELECT COUNT(DISTINCT ref_c.document_id)
21
21
  FROM mentions ref_m
22
22
  JOIN chunks ref_c ON ref_m.chunk_id = ref_c.id
23
- WHERE ref_m.symbol_id = gs.id AND ref_m.role = 0
23
+ WHERE ref_m.symbol_id = gs.id AND ref_m.role != 1
24
24
  ) AS fan_in,
25
25
  -- fanOut: distinct symbols referenced within this definition range
26
26
  -- that are defined in different files
@@ -32,7 +32,7 @@ function complexityHotspots(db, opts) {
32
32
  WHERE out_c.document_id = der.document_id
33
33
  AND out_c.start_line >= der.start_line
34
34
  AND out_c.end_line <= der.end_line
35
- AND out_m.role = 0
35
+ AND out_m.role != 1
36
36
  AND out_gs.id != gs.id
37
37
  AND out_der.document_id != der.document_id
38
38
  ) AS fan_out,
@@ -44,7 +44,7 @@ function complexityHotspots(db, opts) {
44
44
  WHERE callee_c.document_id = der.document_id
45
45
  AND callee_c.start_line >= der.start_line
46
46
  AND callee_c.end_line <= der.end_line
47
- AND callee_m.role = 0
47
+ AND callee_m.role != 1
48
48
  AND callee_gs.id != gs.id
49
49
  ) AS callee_count
50
50
  FROM global_symbols gs
@@ -61,7 +61,7 @@ function complexityHotspots(db, opts) {
61
61
  * CAST((SELECT COUNT(DISTINCT ref_c2.document_id)
62
62
  FROM mentions ref_m2
63
63
  JOIN chunks ref_c2 ON ref_m2.chunk_id = ref_c2.id
64
- WHERE ref_m2.symbol_id = gs.id AND ref_m2.role = 0
64
+ WHERE ref_m2.symbol_id = gs.id AND ref_m2.role != 1
65
65
  ) AS REAL) / 5.0
66
66
  * MAX(CAST((SELECT COUNT(DISTINCT out_gs2.id)
67
67
  FROM mentions out_m2
@@ -71,7 +71,7 @@ function complexityHotspots(db, opts) {
71
71
  WHERE out_c2.document_id = der.document_id
72
72
  AND out_c2.start_line >= der.start_line
73
73
  AND out_c2.end_line <= der.end_line
74
- AND out_m2.role = 0
74
+ AND out_m2.role != 1
75
75
  AND out_gs2.id != gs.id
76
76
  AND out_der2.document_id != der.document_id
77
77
  ) AS REAL) / 5.0, 1.0)
@@ -99,4 +99,4 @@ function complexityHotspots(db, opts) {
99
99
  export {
100
100
  complexityHotspots
101
101
  };
102
- //# sourceMappingURL=chunk-EMDQWNYR.js.map
102
+ //# sourceMappingURL=chunk-WVK7AASK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-FUHJCHS4.js";
3
+ } from "./chunk-LLMPAG56.js";
4
4
 
5
5
  // src/queries/cycles.ts
6
6
  function cycles(db, opts = {}) {
@@ -58,4 +58,4 @@ function cycles(db, opts = {}) {
58
58
  export {
59
59
  cycles
60
60
  };
61
- //# sourceMappingURL=chunk-5WTJAXY2.js.map
61
+ //# sourceMappingURL=chunk-Y3M323OX.js.map