scip-query 0.10.6 → 0.10.8

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 (266) hide show
  1. package/README.md +7 -2
  2. package/dist/augment-vue-worker.js +1 -1
  3. package/dist/{chunk-YQH353VA.js → chunk-24S6MYOC.js} +2 -2
  4. package/dist/{chunk-BNKE4TT5.js → chunk-2H57MJLI.js} +2 -2
  5. package/dist/{chunk-AUVBR62P.js → chunk-2YI45TNM.js} +2 -2
  6. package/dist/{chunk-TM6GVHA6.js → chunk-3FYGJ2GY.js} +2 -2
  7. package/dist/chunk-3LQFMQPY.js +3 -0
  8. package/dist/chunk-4TMJDHC6.js +5 -0
  9. package/dist/{chunk-FNRPGGVI.js → chunk-5G5VI7J4.js} +2 -2
  10. package/dist/chunk-5GVOJOBL.js +2 -0
  11. package/dist/{chunk-4ZUJJRWT.js → chunk-5SMUKUV5.js} +2 -2
  12. package/dist/{chunk-DE7MA6OD.js → chunk-63MSELOP.js} +2 -2
  13. package/dist/{chunk-5FOPAXWY.js → chunk-6BNOACLT.js} +2 -2
  14. package/dist/chunk-6EO3E3IP.js +23 -0
  15. package/dist/{chunk-47UA45TU.js → chunk-6N6QTGSD.js} +2 -2
  16. package/dist/{chunk-QLNGUWR7.js → chunk-6TDOT7B3.js} +2 -2
  17. package/dist/{chunk-MUULWXSJ.js → chunk-7KJBH4IP.js} +2 -2
  18. package/dist/chunk-7XWXGANX.js +4 -0
  19. package/dist/chunk-A536TEU4.js +3 -0
  20. package/dist/{chunk-CJJP64OC.js → chunk-AA7L7GKI.js} +2 -2
  21. package/dist/chunk-AETMKBZR.js +40 -0
  22. package/dist/{chunk-ZQLO2SCU.js → chunk-ANIOISCE.js} +2 -2
  23. package/dist/{chunk-6UFMPECA.js → chunk-B4EHYG6M.js} +2 -2
  24. package/dist/{chunk-OLD6PBU6.js → chunk-BEUQVBE3.js} +2 -2
  25. package/dist/{chunk-EOZIZWW4.js → chunk-BJG67TCR.js} +2 -2
  26. package/dist/{chunk-ICXVNWMI.js → chunk-BJWNO6BU.js} +2 -2
  27. package/dist/chunk-BTCASU5J.js +3 -0
  28. package/dist/{chunk-YUOAAR24.js → chunk-BWL2ECGQ.js} +2 -2
  29. package/dist/{chunk-QUJBXLBY.js → chunk-BZ53S4ZN.js} +2 -2
  30. package/dist/{chunk-EYLXU575.js → chunk-C6BYNIH4.js} +2 -2
  31. package/dist/chunk-C6ROZBJA.js +32 -0
  32. package/dist/chunk-COUFCH64.js +2 -0
  33. package/dist/{chunk-D322LMSA.js → chunk-DS6QEB3G.js} +5 -5
  34. package/dist/{chunk-NVFERV4U.js → chunk-E2CCBFLR.js} +2 -2
  35. package/dist/{chunk-Z4VHYJ5U.js → chunk-EBIQY3RK.js} +2 -2
  36. package/dist/{chunk-5UDFZC4D.js → chunk-EKECQP6Z.js} +2 -2
  37. package/dist/{chunk-O3OKSF6O.js → chunk-FG4NT6VY.js} +2 -2
  38. package/dist/{chunk-X7ZY6FFF.js → chunk-FGTHPJON.js} +2 -2
  39. package/dist/{chunk-QSXQT3NE.js → chunk-FHWEEQVO.js} +2 -2
  40. package/dist/{chunk-CFL2CNIF.js → chunk-FKUCFCLU.js} +2 -2
  41. package/dist/chunk-FVA3NH4P.js +2 -0
  42. package/dist/{chunk-5QJXH6ZL.js → chunk-GZQID3FS.js} +2 -2
  43. package/dist/{chunk-SPE4YCOT.js → chunk-I274B3B3.js} +2 -2
  44. package/dist/{chunk-DAI74TJU.js → chunk-J6ADQKQA.js} +2 -2
  45. package/dist/{chunk-E7KERP7E.js → chunk-JRUKS66S.js} +2 -2
  46. package/dist/{chunk-ZSLT7NWQ.js → chunk-JUIAOOK7.js} +2 -2
  47. package/dist/{chunk-7KCSELEV.js → chunk-JYSAYZNX.js} +2 -2
  48. package/dist/chunk-K7VBTWNR.js +2 -0
  49. package/dist/{chunk-56UN3DMK.js → chunk-KLXVEBVC.js} +2 -2
  50. package/dist/{chunk-E44ZMVNA.js → chunk-KZYHFI2X.js} +2 -2
  51. package/dist/{chunk-FIB4JPEX.js → chunk-L4QKEQ4S.js} +2 -2
  52. package/dist/{chunk-CTCAF3YA.js → chunk-LGX2Y4BA.js} +2 -2
  53. package/dist/{chunk-VAA5FFIW.js → chunk-LM5SHAN4.js} +2 -2
  54. package/dist/{chunk-YYD245WG.js → chunk-LWTML2AN.js} +2 -2
  55. package/dist/{chunk-7OHWPJ5N.js → chunk-MEKSFV6H.js} +2 -2
  56. package/dist/{chunk-5M4TYWVI.js → chunk-N7F5UM6J.js} +2 -2
  57. package/dist/{chunk-YUTRW57I.js → chunk-NWFSC356.js} +2 -2
  58. package/dist/chunk-P3K7LX7M.js +4 -0
  59. package/dist/{chunk-CAWSSEVM.js → chunk-Q34NWRPP.js} +2 -2
  60. package/dist/chunk-QDGKE5HN.js +21 -0
  61. package/dist/{chunk-ESG4HBEF.js → chunk-RHKMQNFI.js} +2 -2
  62. package/dist/chunk-RSKOYTSY.js +3 -0
  63. package/dist/chunk-RY7CAOJF.js +4 -0
  64. package/dist/{chunk-NNDYO2DX.js → chunk-S7YOLFLX.js} +2 -2
  65. package/dist/{chunk-LPLGJ4HO.js → chunk-SHM5D3DQ.js} +2 -2
  66. package/dist/chunk-SOGKYB5I.js +8 -0
  67. package/dist/{chunk-MZ7APUFN.js → chunk-T633QLYF.js} +2 -2
  68. package/dist/{chunk-AW4N6MGC.js → chunk-VAXDTQHE.js} +2 -2
  69. package/dist/chunk-VFLHKRTW.js +2 -0
  70. package/dist/{chunk-77YBOOYT.js → chunk-VMPB52FG.js} +2 -2
  71. package/dist/{chunk-3KLLFNT4.js → chunk-VOYOYC5T.js} +2 -2
  72. package/dist/{chunk-DJMK4DBL.js → chunk-VXT7WVIN.js} +2 -2
  73. package/dist/chunk-W2CBNBEL.js +71 -0
  74. package/dist/{chunk-3UW7VM4H.js → chunk-X3BJUFSN.js} +2 -2
  75. package/dist/chunk-X3Z4MLVL.js +4 -0
  76. package/dist/chunk-XPOZO76D.js +2 -0
  77. package/dist/{chunk-WBJZNPUT.js → chunk-XWC67C3Q.js} +2 -2
  78. package/dist/{chunk-GZCQTZLK.js → chunk-YNSVAJR6.js} +2 -2
  79. package/dist/chunk-YWOOQ4FF.js +2 -0
  80. package/dist/chunk-YZA6PPZL.js +3 -0
  81. package/dist/{chunk-CSWZFD46.js → chunk-ZDR4VTOP.js} +2 -2
  82. package/dist/{chunk-QVCCLDZI.js → chunk-ZL52RLDK.js} +2 -2
  83. package/dist/{chunk-YTR4CO5S.js → chunk-ZMU6IWDK.js} +3 -3
  84. package/dist/cli.js +272 -235
  85. package/dist/{config-types-Bj4sh28g.d.ts → config-types-BDIWAYzr.d.ts} +13 -1
  86. package/dist/{db-CTarohbZ.d.ts → db-BAVwb4Pb.d.ts} +1 -1
  87. package/dist/{health-Bx0x1HAG.d.ts → health-B17sVFYf.d.ts} +6 -2
  88. package/dist/index.d.ts +3 -3
  89. package/dist/index.js +3 -3
  90. package/dist/postinstall.js +1 -1
  91. package/dist/queries/affected.d.ts +2 -2
  92. package/dist/queries/affected.js +1 -1
  93. package/dist/queries/bottlenecks.d.ts +2 -2
  94. package/dist/queries/bottlenecks.js +1 -1
  95. package/dist/queries/by-kind.d.ts +2 -2
  96. package/dist/queries/by-kind.js +1 -1
  97. package/dist/queries/call-graph.d.ts +2 -2
  98. package/dist/queries/call-graph.js +1 -1
  99. package/dist/queries/change-surface.d.ts +2 -2
  100. package/dist/queries/change-surface.js +1 -1
  101. package/dist/queries/cleanup-plan.d.ts +2 -2
  102. package/dist/queries/cleanup-plan.js +1 -1
  103. package/dist/queries/co-change.d.ts +2 -2
  104. package/dist/queries/co-change.js +1 -1
  105. package/dist/queries/code.d.ts +2 -2
  106. package/dist/queries/code.js +1 -1
  107. package/dist/queries/complexity-hotspots.d.ts +2 -2
  108. package/dist/queries/complexity-hotspots.js +1 -1
  109. package/dist/queries/complexity.d.ts +2 -2
  110. package/dist/queries/complexity.js +1 -1
  111. package/dist/queries/convergence.d.ts +2 -2
  112. package/dist/queries/convergence.js +1 -1
  113. package/dist/queries/coupling.d.ts +2 -2
  114. package/dist/queries/coupling.js +1 -1
  115. package/dist/queries/cycles.d.ts +2 -2
  116. package/dist/queries/cycles.js +1 -1
  117. package/dist/queries/dataflow.d.ts +2 -2
  118. package/dist/queries/dataflow.js +1 -1
  119. package/dist/queries/dead.d.ts +2 -2
  120. package/dist/queries/dead.js +1 -1
  121. package/dist/queries/deep-chains.d.ts +2 -2
  122. package/dist/queries/deep-chains.js +1 -1
  123. package/dist/queries/deps.d.ts +2 -2
  124. package/dist/queries/deps.js +1 -1
  125. package/dist/queries/diff-gate.d.ts +8 -5
  126. package/dist/queries/diff-gate.js +1 -1
  127. package/dist/queries/diff-impact.d.ts +7 -3
  128. package/dist/queries/diff-impact.js +1 -1
  129. package/dist/queries/doc-drift.d.ts +2 -2
  130. package/dist/queries/doc-drift.js +1 -1
  131. package/dist/queries/drift.d.ts +2 -2
  132. package/dist/queries/drift.js +1 -1
  133. package/dist/queries/extract-candidates.d.ts +2 -2
  134. package/dist/queries/extract-candidates.js +1 -1
  135. package/dist/queries/fan.d.ts +2 -2
  136. package/dist/queries/fan.js +1 -1
  137. package/dist/queries/files.d.ts +2 -2
  138. package/dist/queries/health.d.ts +3 -3
  139. package/dist/queries/health.js +1 -1
  140. package/dist/queries/hierarchy.d.ts +2 -2
  141. package/dist/queries/hierarchy.js +1 -1
  142. package/dist/queries/hotspots.d.ts +2 -2
  143. package/dist/queries/hotspots.js +1 -1
  144. package/dist/queries/imports.d.ts +2 -2
  145. package/dist/queries/imports.js +1 -1
  146. package/dist/queries/incomplete-migration.d.ts +5 -3
  147. package/dist/queries/incomplete-migration.js +1 -1
  148. package/dist/queries/index.d.ts +3 -3
  149. package/dist/queries/index.js +1 -1
  150. package/dist/queries/isolated.d.ts +2 -2
  151. package/dist/queries/isolated.js +1 -1
  152. package/dist/queries/locality-candidates.d.ts +2 -2
  153. package/dist/queries/locality-candidates.js +1 -1
  154. package/dist/queries/members.d.ts +2 -2
  155. package/dist/queries/members.js +1 -1
  156. package/dist/queries/methods.d.ts +2 -2
  157. package/dist/queries/methods.js +1 -1
  158. package/dist/queries/outline.d.ts +2 -2
  159. package/dist/queries/outline.js +1 -1
  160. package/dist/queries/passthrough-candidates.d.ts +2 -2
  161. package/dist/queries/passthrough-candidates.js +1 -1
  162. package/dist/queries/plan-context.d.ts +2 -2
  163. package/dist/queries/plan-context.js +1 -1
  164. package/dist/queries/react-component-duplicates.d.ts +2 -2
  165. package/dist/queries/react-component-duplicates.js +1 -1
  166. package/dist/queries/react-hook-candidates.d.ts +2 -2
  167. package/dist/queries/react-hook-candidates.js +1 -1
  168. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  169. package/dist/queries/react-large-component-pressure.js +1 -1
  170. package/dist/queries/recent-duplicates.d.ts +2 -2
  171. package/dist/queries/recent-duplicates.js +1 -1
  172. package/dist/queries/redundant-reexports.d.ts +2 -2
  173. package/dist/queries/redundant-reexports.js +1 -1
  174. package/dist/queries/refs.d.ts +2 -2
  175. package/dist/queries/refs.js +1 -1
  176. package/dist/queries/self-audit.d.ts +2 -2
  177. package/dist/queries/self-audit.js +1 -1
  178. package/dist/queries/similar-chains.d.ts +2 -2
  179. package/dist/queries/similar-chains.js +1 -1
  180. package/dist/queries/similar-files.d.ts +2 -2
  181. package/dist/queries/similar-files.js +1 -1
  182. package/dist/queries/similar-signatures.d.ts +2 -2
  183. package/dist/queries/similar-signatures.js +1 -1
  184. package/dist/queries/similar.d.ts +14 -4
  185. package/dist/queries/similar.js +1 -1
  186. package/dist/queries/slice.d.ts +2 -2
  187. package/dist/queries/slice.js +1 -1
  188. package/dist/queries/stale-abstractions.d.ts +2 -2
  189. package/dist/queries/stale-abstractions.js +1 -1
  190. package/dist/queries/stats.d.ts +2 -2
  191. package/dist/queries/surface.d.ts +2 -2
  192. package/dist/queries/surface.js +1 -1
  193. package/dist/queries/symbols.d.ts +2 -2
  194. package/dist/queries/symbols.js +1 -1
  195. package/dist/queries/system.d.ts +2 -2
  196. package/dist/queries/system.js +1 -1
  197. package/dist/queries/trace.d.ts +2 -2
  198. package/dist/queries/trace.js +1 -1
  199. package/dist/queries/unused-imports.d.ts +2 -2
  200. package/dist/queries/unused-imports.js +1 -1
  201. package/dist/queries/unused-params.d.ts +2 -2
  202. package/dist/queries/unused-params.js +1 -1
  203. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  204. package/dist/queries/vue-component-duplicates.js +1 -1
  205. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  206. package/dist/queries/vue-composable-candidates.js +1 -1
  207. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  208. package/dist/queries/vue-large-view-pressure.js +1 -1
  209. package/dist/queries/wrapper-candidates.d.ts +2 -2
  210. package/dist/queries/wrapper-candidates.js +1 -1
  211. package/dist/reindex-worker.js +11 -11
  212. package/dist/reindex.d.ts +11 -2
  213. package/dist/reindex.js +22 -22
  214. package/dist/runtime.d.ts +17 -20
  215. package/dist/runtime.js +2 -2
  216. package/dist/scip-cli-CnK9Va4O.d.ts +56 -0
  217. package/docs/AGENT_GUIDE.md +1 -1
  218. package/docs/COMMAND_REFERENCE.md +4 -3
  219. package/docs/analyzer-inventory.md +2 -2
  220. package/docs/analyzer-validation-ledger.md +2 -2
  221. package/package.json +1 -1
  222. package/skills/concrete-plan/SKILL.md +2 -2
  223. package/skills/scip-adoption/SKILL.md +4 -2
  224. package/skills/scip-ai-cleanup/SKILL.md +1 -1
  225. package/skills/scip-api-impact/SKILL.md +6 -2
  226. package/skills/scip-debloat/SKILL.md +1 -1
  227. package/skills/scip-debug/SKILL.md +6 -2
  228. package/skills/scip-diagram/SKILL.md +3 -1
  229. package/skills/scip-directory-architecture/SKILL.md +7 -3
  230. package/skills/scip-doc-reconcile/SKILL.md +3 -1
  231. package/skills/scip-explore/SKILL.md +2 -2
  232. package/skills/scip-health-audit/SKILL.md +6 -2
  233. package/skills/scip-health-improve/SKILL.md +6 -2
  234. package/skills/scip-hyper-optimization/SKILL.md +97 -0
  235. package/skills/scip-hyper-optimization/agents/openai.yaml +4 -0
  236. package/skills/scip-maintainability/SKILL.md +6 -3
  237. package/skills/scip-query/SKILL.md +14 -6
  238. package/skills/scip-query-setup/SKILL.md +10 -5
  239. package/skills/scip-react-maintainability/SKILL.md +7 -2
  240. package/skills/scip-triage-issue/SKILL.md +4 -2
  241. package/skills/scip-verify/SKILL.md +5 -3
  242. package/skills/scip-vue-maintainability/SKILL.md +7 -2
  243. package/dist/chunk-237YUOPK.js +0 -8
  244. package/dist/chunk-3UVJJ6Z7.js +0 -2
  245. package/dist/chunk-3ZYF3ELZ.js +0 -2
  246. package/dist/chunk-7JOTOWZO.js +0 -4
  247. package/dist/chunk-A3VNUGKJ.js +0 -2
  248. package/dist/chunk-A4L36SZS.js +0 -22
  249. package/dist/chunk-A7RNHUJH.js +0 -20
  250. package/dist/chunk-AYYIZ4BA.js +0 -4
  251. package/dist/chunk-BKDXBJDQ.js +0 -2
  252. package/dist/chunk-C3MZZ2ZN.js +0 -2
  253. package/dist/chunk-CRU42NJU.js +0 -2
  254. package/dist/chunk-ERHOS6AW.js +0 -2
  255. package/dist/chunk-EWC3UK4V.js +0 -3
  256. package/dist/chunk-FOQHUKNZ.js +0 -4
  257. package/dist/chunk-FUPDW5AC.js +0 -3
  258. package/dist/chunk-G3WGZU5Q.js +0 -2
  259. package/dist/chunk-HVTYSC26.js +0 -40
  260. package/dist/chunk-KPHKX4LP.js +0 -71
  261. package/dist/chunk-MA7OVFHI.js +0 -2
  262. package/dist/chunk-OBBDKQAG.js +0 -3
  263. package/dist/chunk-RHTJBYZ5.js +0 -2
  264. package/dist/chunk-UQJGTVHV.js +0 -5
  265. package/dist/chunk-ZFMPHDAT.js +0 -4
  266. package/dist/scip-cli-Bh1M_JPu.d.ts +0 -20
@@ -1,71 +0,0 @@
1
- import _e from"better-sqlite3";import{existsSync as _t,readFileSync as Mt,writeFileSync as Gt}from"fs";import{dirname as Wt,join as Ht,resolve as Me}from"path";import ne from"better-sqlite3";import{execFileSync as re}from"child_process";import{existsSync as oe,readdirSync as ie,readFileSync as se}from"fs";import{extname as m,join as F}from"path";import K from"ignore";import{readFileSync as B,existsSync as b}from"fs";import{dirname as h,isAbsolute as x,join as S,relative as J,resolve as X}from"path";function C(e){let t=K(),r=!1,n=z(e);for(let i of n)try{let o=B(i,"utf-8");t.add(o),r=!0}catch{}return r||t.add(q),{isIgnored:i=>V(t,e,i),filter:i=>i.filter(o=>!V(t,e,o))}}function z(e){let t=[],r=S(e,".gitignore");b(r)&&t.push(r);let n=h(e),i=0;for(;n!==h(n)&&i<5;){let o=S(n,".gitignore");if(b(o)&&t.push(o),b(S(n,".git")))break;n=h(n),i++}return t}var q=`
2
- # Dependencies
3
- node_modules/
4
- vendor/
5
- .bundle/
6
-
7
- # Build output
8
- dist/
9
- build/
10
- out/
11
- target/
12
- bin/
13
- obj/
14
-
15
- # Python
16
- __pycache__/
17
- *.pyc
18
- *.pyo
19
- .venv/
20
- venv/
21
- .env/
22
- env/
23
- *.egg-info/
24
-
25
- # Rust
26
- target/
27
-
28
- # Java / Kotlin / Scala
29
- *.class
30
- .gradle/
31
- .mvn/
32
-
33
- # C# / .NET
34
- bin/
35
- obj/
36
- packages/
37
-
38
- # Go
39
- vendor/
40
-
41
- # Dart
42
- .dart_tool/
43
- build/
44
-
45
- # PHP
46
- vendor/
47
-
48
- # IDE / OS
49
- .idea/
50
- .vscode/
51
- *.swp
52
- *.swo
53
- .DS_Store
54
- Thumbs.db
55
-
56
- # Type definitions (often noise in queries)
57
- *.d.ts
58
- `;function V(e,t,r){let n=Y(t,r);if(!n)return!1;try{return e.ignores(n)}catch{return!1}}function Y(e,t){if(!t||t===".")return null;if(!x(t)&&!t.startsWith(".."))return t.replaceAll("\\","/");let r=x(t)?t:X(e,t),n=J(e,r).replaceAll("\\","/");return!n||n==="."||n.startsWith("..")?null:n}import{readdirSync as nt}from"fs";import{execFileSync as ot}from"child_process";import{extname as st,join as at}from"path";var Q=[];function k(e){e.groups.length>0&&Q.push(e)}function Z(){let e=new WeakMap;return{cache:e,ensure(t){let r=e.get(t);return r||(r=new Map,e.set(t,r)),r}}}function L(e,t){let{cache:r,ensure:n}=Z(),i={get(o,s,a){let u=n(o);if(u.has(s))return u.get(s);let c=a();return u.set(s,c),c},invalidate(o,s){r.get(o)?.delete(s)},invalidateAll(o){r.delete(o)},size(o){return r.get(o)?.size??0}};return k({name:e,groups:t.clearGroups,clearAll:o=>i.invalidateAll(o),clearFile:(o,s)=>i.invalidate(o,s)}),i}var ee=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".rs",".py",".pyi",".java",".kt",".kts",".scala",".sc",".rb",".c",".h",".cc",".cpp",".cxx",".hpp",".hh",".hxx",".cs",".vb",".php",".dart"],T=[".vue"],te=new Set(ee.map(e=>e.toLowerCase())),ct=[...te].sort().join(","),D=new Set(["node_modules",".git","target","dist","build",".next",".nuxt",".cache",".turbo","out","coverage",".scipquery-cache","__pycache__",".venv","venv",".idea",".vscode"]);var lt=L("source-files",{clearGroups:[]});function St(e){let t=new Set((e.extensions??T).map(o=>o.toLowerCase()));if(t.size===0)return{scanned:0,inserted:0,existing:0};if(!oe(e.dbPath))throw new Error(`SCIP SQLite database not found at ${e.dbPath}`);let r=C(e.projectRoot),n=ae(e.projectRoot,t).filter(o=>!r.isIgnored(o)),i=new ne(e.dbPath);try{let o=ce(i,n),s=i.prepare(`INSERT OR IGNORE INTO documents (language, relative_path, position_encoding, text)
59
- VALUES (?, ?, NULL, ?)`),u=i.transaction(l=>{let p=0;for(let g of l){if(o.has(g))continue;let d=se(F(e.projectRoot,g),"utf-8"),U=s.run(le(g),g,d);p+=Number(U.changes)}return p})(n),c={scanned:n.length,inserted:u,existing:n.length-u};return e.onStatus?.(`Augmented SQLite documents with ${u} auxiliary source file${u===1?"":"s"} (${c.existing} already present).`),c}finally{i.close()}}function ae(e,t){let r=ue(e,t);if(r)return r;let n=[],i=o=>{let s=o?F(e,o):e,a;try{a=ie(s,{withFileTypes:!0})}catch{return}for(let u of a){if(D.has(u.name))continue;let c=o?`${o}/${u.name}`:u.name;if(u.isDirectory()){i(c);continue}t.has(m(u.name).toLowerCase())&&n.push(c)}};return i(""),n.sort()}function ue(e,t){try{return re("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:26214400,stdio:["ignore","pipe","ignore"]}).split(`
60
- `).filter(n=>n&&t.has(m(n).toLowerCase())).sort()}catch{return null}}function ce(e,t){let r=new Set,n=500;for(let i=0;i<t.length;i+=n){let o=t.slice(i,i+n),s=e.prepare(`SELECT relative_path FROM documents WHERE relative_path IN (${o.map(()=>"?").join(",")})`).all(...o);for(let a of s)r.add(a.relative_path)}return r}function le(e){return m(e).toLowerCase()===".vue"?"vue":m(e).replace(/^\./,"").toLowerCase()||"source"}import{execFileSync as ge}from"child_process";import{createHash as de}from"crypto";import{readdirSync as fe,readFileSync as pe}from"fs";import{join as E}from"path";function I(e){return(be(e)??he(e)).filter(t=>t&&!w(t)).sort()}function Ct(e,t={}){return(t.language?I(e).filter(n=>me(n,t.language,t.markerFiles)):I(e)).map(n=>{let i=E(e,n);try{let o=pe(i);return{path:n,size:o.byteLength,hash:de("sha256").update(o).digest("hex")}}catch{return{path:n,size:-1,hash:"unreadable"}}})}function me(e,t,r){let n=e.split("/").at(-1)??e;if(r?.includes(e)||r?.includes(n)||ye.has(n))return!0;let i=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return(ve[t]??[]).includes(i)}function be(e){try{return ge("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:50*1024*1024,stdio:["ignore","pipe","ignore"]}).split(`
61
- `).filter(Boolean)}catch{return null}}function he(e){let t=[],r=[""];for(;r.length>0;){let n=r.pop(),i=n?E(e,n):e,o;try{o=fe(i,{withFileTypes:!0})}catch{continue}for(let s of o){let a=n?`${n}/${s.name}`:s.name;if(s.isDirectory()){w(a)||r.push(a);continue}t.push(a)}}return t}function w(e){return e.split("/").some(r=>Se.has(r))||e.endsWith(".db")||e.endsWith(".db-wal")||e.endsWith(".db-shm")||e.endsWith(".scip")}var Se=new Set([".git","node_modules",".scipquery-cache",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]),ye=new Set(["package.json","package-lock.json","pnpm-lock.yaml","yarn.lock","bun.lockb","tsconfig.json","tsconfig.base.json","pyproject.toml","setup.py","setup.cfg","Cargo.toml","Cargo.lock","go.mod","go.sum","pom.xml","build.gradle","build.gradle.kts","build.sbt","compile_commands.json","CMakeLists.txt","Makefile","Gemfile","Gemfile.lock","composer.json","composer.lock","pubspec.yaml","pubspec.lock"]),ve={typescript:[".ts",".tsx",".mts",".cts"],javascript:[".js",".jsx",".mjs",".cjs"],java:[".java"],scala:[".scala"],kotlin:[".kt",".kts"],rust:[".rs"],python:[".py",".pyi"],ruby:[".rb"],go:[".go"],cpp:[".cc",".cpp",".cxx",".hpp",".hh",".hxx"],c:[".c",".h"],csharp:[".cs"],vb:[".vb"],dart:[".dart"],php:[".php"]};import{createRequire as Re}from"module";import{existsSync as xe,readFileSync as v}from"fs";import{dirname as O,extname as Ve,join as A,relative as Ce,resolve as Ft}from"path";import{pathToFileURL as ke}from"url";function P(e,t){let{vueCore:r,ts:n,volarTs:i}=Le(e),{parsed:o,vueOptions:s}=Te(r,n,t),a=O(t),u=r.createVueLanguagePlugin(n,o.options,s,d=>d),c=De(r,n,u),l=Fe(a,o),{languageServiceHost:p}=i.createLanguageServiceHost(n,n.sys,c,d=>d,l),g=n.createLanguageService(p);return{ts:n,language:c,languageService:g,fileNames:o.fileNames,configDir:a}}function Le(e){let t=Re(ke(A(e,"package.json")).href);return{vueCore:y(t,"@vue/language-core",e),ts:y(t,"typescript",e),volarTs:y(t,"@volar/typescript",e)}}function Te(e,t,r){let n=t.readConfigFile(r,t.sys.readFile);if(n.error||!n.config)throw new Error(`Failed to read ${r}`);let o=e.createParsedCommandLine(t,t.sys,r).vueOptions;return typeof e.createGlobalTypesWriter=="function"&&(o.globalTypesPath=e.createGlobalTypesWriter(o,t.sys.writeFile)),{parsed:t.parseJsonConfigFileContent(n.config,t.sys,O(r),void 0,r,void 0,e.getAllExtensions(o).map(s=>({extension:s.slice(1),isMixedContent:!0,scriptKind:t.ScriptKind.Deferred}))),vueOptions:o}}function De(e,t,r){let n={},i=e.createLanguage([r],new Map,o=>{if(!xe(o))return;let s=v(o,"utf-8");n.current?.scripts.set(o,t.ScriptSnapshot.fromString(s),r.getLanguageId(o)??Oe(o))});return n.current=i,i}function Fe(e,t){return{getCurrentDirectory:()=>e,getCompilationSettings:()=>t.options,getScriptFileNames:()=>t.fileNames,getProjectReferences:()=>t.projectReferences,getProjectVersion:()=>"0"}}function y(e,t,r){try{return e(t)}catch(n){throw(typeof n=="object"&&n!==null&&"code"in n?n.code:null)==="MODULE_NOT_FOUND"?new Error(`Vue augmentation requires ${t} to be installed in ${r}. Install Vue/Volar dependencies for that project, then rerun augment-vue.`,{cause:n}):n}}function N(e,t,r){let n=Ie(e);return i=>{let o=f(t,i.fileName),s=r.get(i.fileName);if(!s)return null;let a=r.positionAt(s,i.textSpan.start),u=n.get(o);if(!u)return null;let c=u.containingByLine.get(a.line);return c!==void 0?c:Ee(u.starts,a.line,2)}}function Ie(e){let t=e.prepare(`
62
- SELECT
63
- d.relative_path AS relativePath,
64
- der.start_line AS startLine,
65
- der.end_line AS endLine,
66
- der.symbol_id AS symbolId
67
- FROM defn_enclosing_ranges der
68
- JOIN documents d ON d.id = der.document_id
69
- ORDER BY d.relative_path, (der.end_line - der.start_line) DESC
70
- `).all(),r=new Map;for(let n of t){let i=r.get(n.relativePath);i||(i={containingByLine:new Map,starts:[]},r.set(n.relativePath,i)),i.starts.push({line:n.startLine,symbolId:n.symbolId});for(let o=n.startLine;o<=n.endLine;o++)i.containingByLine.set(o,n.symbolId)}for(let n of r.values())n.starts.sort((i,o)=>i.line-o.line);return r}function Ee(e,t,r){let n=0,i=e.length-1;for(;n<=i;){let s=Math.floor((n+i)/2);e[s].line<t?n=s+1:i=s-1}let o=null;for(let s of[i,n]){let a=e[s];if(!a)continue;let u=Math.abs(a.line-t);u>r||(!o||u<o.distance)&&(o={distance:u,symbolId:a.symbolId})}return o?.symbolId??null}function j(e,t){let r=Pe(t),n=e.prepare("SELECT id FROM global_symbols WHERE symbol = ?"),i=new Map;return{get(o){if(i.has(o))return i.get(o)??null;let s=Ne(n,r,t,o);return i.set(o,s),s}}}function _(e,t,r,n,i){if(e.fileName.endsWith(".vue")){let o=n.language.scripts.get(e.fileName),s=o?.generated?.languagePlugin.typescript?.getServiceScript(o.generated.root)?.code;if(o&&s){let a=n.language.maps.get(s,o);if(R(a,e.textSpan.start)!==null)return r.get(e.fileName)}return e.fileName.startsWith(i)?r.get(e.fileName):null}return t(e)}function*M(e){let t=/\b[A-Za-z_$][A-Za-z0-9_$]*\b/g,r=new Set(["script","setup","template","style","lang","scoped","true","false","null","undefined","const","let","var","import","from","export","return","if","else","for","while","function","class","type","interface","as","await","async"]),n;for(;n=t.exec(e);){let i=n[0];r.has(i)||(yield{text:i,start:n.index,end:n.index+i.length})}}function G(e,t){for(let[r]of e.toGeneratedLocation(t,n=>!!n.navigation))return r;return null}function R(e,t){let r=e;for(let[n]of r.toSourceLocation(t,i=>!!i.navigation))return n;return null}function we(e,t){let r=0,n=e.lineStarts.length-1;for(;r<=n;){let o=Math.floor((r+n)/2);e.lineStarts[o]<=t?r=o+1:n=o-1}let i=Math.max(0,n);return{line:i,character:t-e.lineStarts[i]}}function $(e,t){return f(e,t).startsWith("node_modules/")}function f(e,t){return Ce(e,t).replaceAll("\\","/")}function Oe(e){switch(Ve(e)){case".vue":return"vue";case".tsx":return"typescriptreact";case".ts":case".mts":case".cts":return"typescript";case".jsx":return"javascriptreact";case".js":case".mjs":case".cjs":return"javascript";case".json":return"json";default:return"typescript"}}function W(){let e=new Map;return{get(t){if(e.has(t))return e.get(t)??null;try{let r=v(t,"utf-8"),n={text:r,lineStarts:Ae(r)};return e.set(t,n),n}catch{return e.set(t,null),null}},positionAt:we}}function Ae(e){let t=[0];for(let r=0;r<e.length;r++)e.charCodeAt(r)===10&&t.push(r+1);return t}function Pe(e){try{let t=JSON.parse(v(A(e,"package.json"),"utf-8"));return{name:t.name??"workspace",version:t.version??"0.0.0"}}catch{return{name:"workspace",version:"0.0.0"}}}function Ne(e,t,r,n){let i=f(r,n),o=je(t.name,t.version,i);return e.get(o)?.id??null}function je(e,t,r){let n=r.split("/").map(i=>`\`${i.replaceAll("`","")}\``).join("/");return`scip-vue npm ${e} ${t} ${n}/default.`}function Kt(e){let t=Me(e.projectRoot,e.tsconfig),r=new _e(e.dbPath,{readonly:!0});try{let n=Ge({db:r,projectRoot:e.projectRoot,configPath:t,vueSymbolLookup:j(r,e.projectRoot)});return $e({vueFiles:e.vueFiles??[],tasks:e.tasks,...n})}finally{r.close()}}function Ge(e){let t=W();return{projectRoot:e.projectRoot,context:P(e.projectRoot,e.configPath),symbolLookup:N(e.db,e.projectRoot,t),vueSymbolLookup:e.vueSymbolLookup,sourceReader:t}}function $e(e){let t=[],r=0,n=e.tasks??e.vueFiles.map(i=>({fileName:i,startOffset:0,endOffset:Number.POSITIVE_INFINITY,countFileSkip:!0}));for(let i of n){let o=We(e,i);t.push(...o.occurrences),r+=o.skippedReferences}return{occurrences:t,skippedReferences:r}}function We(e,t){let r=e.context.language.scripts.get(t.fileName),n=r?.generated?.languagePlugin.typescript?.getServiceScript(r.generated.root)?.code;if(!r||!n)return{occurrences:[],skippedReferences:t.countFileSkip?1:0};let i=e.sourceReader.get(t.fileName);if(!i)return{occurrences:[],skippedReferences:t.countFileSkip?1:0};let o=e.context.language.maps.get(n,r),s=f(e.projectRoot,t.fileName),a=[...M(i.text)],u={tokens:a.filter(c=>c.start>=t.startOffset&&c.start<t.endOffset),tokenByStart:new Map(a.map(c=>[c.start,c])),tokenTextCounts:Ke(a),processedStarts:new Set};return He({...e,fileName:t.fileName,sourceInfo:i,sourceFile:s,map:o,tokenContext:u})}function He(e){let t=[],r=0;for(let n of e.tokenContext.tokens){if(e.tokenContext.processedStarts.has(n.start))continue;let i=G(e.map,n.start);if(i===null)continue;let s=(e.context.languageService.getDefinitionAtPosition(e.fileName,i+1)??[]).find(u=>!$(e.projectRoot,u.fileName));if(!s){r++;continue}let a=_(s,e.symbolLookup,e.vueSymbolLookup,e.context,e.projectRoot);if(a===null){r++;continue}H(t,e.sourceReader,e.sourceInfo,e.sourceFile,n,a),e.tokenContext.processedStarts.add(n.start),Ue(t,e,n,i,a)}return{occurrences:t,skippedReferences:r}}function Ue(e,t,r,n,i){if(!((t.tokenContext.tokenTextCounts.get(r.text)??0)<=1))for(let o of Be(t.context.languageService,t.fileName,n+1,t.map,r,t.tokenContext.tokenByStart)){if(t.tokenContext.processedStarts.has(o))continue;let s=t.tokenContext.tokenByStart.get(o);s&&(H(e,t.sourceReader,t.sourceInfo,t.sourceFile,s,i),t.tokenContext.processedStarts.add(o))}}function H(e,t,r,n,i,o){let s=t.positionAt(r,i.start);e.push({sourceFile:n,sourceLine:s.line,sourceStartChar:s.character,sourceEndChar:s.character+i.text.length,symbolId:o})}function Ke(e){let t=new Map;for(let r of e)t.set(r.text,(t.get(r.text)??0)+1);return t}function Be(e,t,r,n,i,o){let s=e.getDocumentHighlights?.(t,r,[t])??[],a=[];for(let u of s)if(u.fileName===t)for(let c of u.highlightSpans){let l=Je(n,c.textSpan.start,o,i.text);l!==null&&a.push(l)}return a}function Je(e,t,r,n){let i=r.get(t);if(i?.text===n)return i.start;let o=R(e,t);if(o===null)return null;let s=r.get(o);return s?.text===n?s.start:null}export{St as a,Ct as b,Kt as c};
71
- //# sourceMappingURL=chunk-KPHKX4LP.js.map
@@ -1,2 +0,0 @@
1
- import{a as D}from"./chunk-5UDFZC4D.js";import{a as g}from"./chunk-BNKE4TT5.js";import{a as y}from"./chunk-WBJZNPUT.js";import{a as f}from"./chunk-56UN3DMK.js";import{b as h}from"./chunk-UQJGTVHV.js";import{e as p}from"./chunk-KRGBLZT2.js";var v=.7,S=.62,C=.45;function j(i,t={}){let{windowCommits:e=100,limit:n=30,scope:o,scanLimit:a}=t,s=p(i);if(!s)return{available:!1,windowCommits:e,findings:[]};if(n<=0)return{available:!0,windowCommits:e,findings:[]};let d=F(i,{limit:n,minSimilarity:t.minSimilarity,scanLimit:a,scope:o,semantic:t.semantic}).map(r=>x(r,s,e)).filter(r=>r!==null);d.sort((r,c)=>(r.kind===c.kind?0:r.kind==="echo"?-1:1)||c.similarity-r.similarity||r.echoFile.localeCompare(c.echoFile)||r.echoSymbol.localeCompare(c.echoSymbol)||r.domain.localeCompare(c.domain));let b=d.slice(0,n).map(I);return{available:!0,windowCommits:e,findings:b,rootCauseGroups:w(b)}}function F(i,t){let e=N(t.limit);return[...A(i,{scope:t.scope,minSimilarity:t.minSimilarity??v,limit:e,scanLimit:t.scanLimit,semantic:t.semantic}),...B(i,{scope:t.scope,minSimilarity:t.minSimilarity??S,limit:e,scanLimit:t.scanLimit}),...k(i,{scope:t.scope,minSimilarity:t.minSimilarity??C,limit:e,scanLimit:t.scanLimit}),...L(i,{scope:t.scope,minSimilarity:t.minSimilarity??S,limit:e,scanLimit:t.scanLimit}),...E(i,{scope:t.scope,minSimilarity:t.minSimilarity??C,limit:e,scanLimit:t.scanLimit})]}function A(i,t){return h(i,{scope:t.scope,minSimilarity:t.minSimilarity,limit:t.limit,crossFileOnly:!0,scanLimit:t.scanLimit,semantic:t.semantic}).map(e=>({domain:"callable",basis:e.similarityBasis??"callees",symbolA:e.shortNameA,fileA:e.fileA,symbolB:e.shortNameB,fileB:e.fileB,similarity:e.similarity,sharedEvidence:e.sharedCallees,sharedCallees:e.sharedCallees}))}function B(i,t){return u(i,t,{query:y,domain:"react-component",basis:"jsx-structure",symbolA:e=>e.componentA,symbolB:e=>e.componentB,evidenceBuckets:e=>[["component",e.sharedComponents],["tag",e.sharedNativeTags],["prop",e.sharedProps],["event",e.sharedEvents],["binding",e.sharedBindings]]})}function u(i,t,e){return e.query(i,t).filter(n=>n.fileA!==n.fileB).map(n=>({domain:e.domain,basis:e.basis,symbolA:e.symbolA(n),fileA:n.fileA,symbolB:e.symbolB(n),fileB:n.fileB,similarity:n.similarity,sharedEvidence:K(...e.evidenceBuckets(n)),sharedCallees:[]}))}function k(i,t){return u(i,t,{query:f,domain:"react-hook",basis:"react-behavior",symbolA:e=>e.componentA,symbolB:e=>e.componentB,evidenceBuckets:e=>[["hook",e.sharedHooks],["react-hook",e.sharedReactHooks],["effect",e.sharedEffects],["state",e.sharedState],["request",e.sharedRequests],["handler",e.sharedHandlers],["action",e.sharedHandlerVerbs]]})}function L(i,t){return u(i,t,{query:g,domain:"vue-component",basis:"vue-template",symbolA:e=>m(e.fileA),symbolB:e=>m(e.fileB),evidenceBuckets:e=>[["component",e.sharedComponents],["prop",e.sharedProps],["event",e.sharedEvents],["directive",e.sharedDirectives],["slot",e.sharedSlots],["identifier",e.sharedIdentifiers]]})}function E(i,t){return u(i,t,{query:D,domain:"vue-composable",basis:"vue-behavior",symbolA:e=>m(e.fileA),symbolB:e=>m(e.fileB),evidenceBuckets:e=>[["composable",e.sharedComposables],["store",e.sharedStores],["reactivity",e.sharedReactivity],["lifecycle",e.sharedLifecycle],["request",e.sharedRequests],["function",e.sharedFunctions],["action",e.sharedFunctionVerbs],["binding",e.sharedBindings],["template-event",e.sharedTemplateEvents]]})}function x(i,t,e){let n=t.get(i.fileA)?.commitsAgo??null,o=t.get(i.fileB)?.commitsAgo??null,a=n!==null&&n<=e,s=o!==null&&o<=e;if(!a&&!s)return null;if(a&&s){let l=(n??0)<=(o??0);return{kind:"twin",domain:i.domain,basis:i.basis,echoSymbol:l?i.symbolA:i.symbolB,echoFile:l?i.fileA:i.fileB,echoAgeCommits:(l?n:o)??0,establishedSymbol:l?i.symbolB:i.symbolA,establishedFile:l?i.fileB:i.fileA,establishedAgeCommits:l?o:n,similarity:i.similarity,sharedEvidence:i.sharedEvidence,sharedCallees:i.sharedCallees}}return{kind:"echo",domain:i.domain,basis:i.basis,echoSymbol:a?i.symbolA:i.symbolB,echoFile:a?i.fileA:i.fileB,echoAgeCommits:(a?n:o)??0,establishedSymbol:a?i.symbolB:i.symbolA,establishedFile:a?i.fileB:i.fileA,establishedAgeCommits:a?o:n,similarity:i.similarity,sharedEvidence:i.sharedEvidence,sharedCallees:i.sharedCallees}}function I(i){let t=R(i);return{...i,rootCauseKey:t,groupKey:`recent-duplicate:${t}`}}function R(i){if(i.kind==="echo")return["echo",i.domain,i.basis,i.establishedSymbol].join(":");let t=i.sharedEvidence.slice().sort().join("|"),e=[i.echoSymbol,i.establishedSymbol].sort().join("|");return["twin",i.domain,i.basis,t||e].join(":")}function w(i){let t=new Map;for(let[e,n]of i.entries()){let o=n.rootCauseKey??R(n),a=n.groupKey??`recent-duplicate:${o}`,s=t.get(a);s||(s={groupKey:a,rootCauseKey:o,kind:n.kind,domain:n.domain,basis:n.basis,count:0,maxSimilarity:n.similarity,findingIndexes:[],echoFiles:new Set,establishedFile:n.kind==="echo"?n.establishedFile:void 0,establishedSymbol:n.kind==="echo"?n.establishedSymbol:void 0,relatedFiles:new Set,sharedEvidence:new Set,recommendation:T(n)},t.set(a,s)),s.count+=1,s.maxSimilarity=Math.max(s.maxSimilarity,n.similarity),s.findingIndexes.push(e),s.echoFiles.add(n.echoFile),s.relatedFiles.add(n.echoFile),s.relatedFiles.add(n.establishedFile);for(let l of n.sharedEvidence)s.sharedEvidence.add(l)}return[...t.values()].map(e=>({...e,echoFiles:[...e.echoFiles].sort(),relatedFiles:[...e.relatedFiles].sort(),sharedEvidence:[...e.sharedEvidence].sort().slice(0,16)})).sort((e,n)=>n.count-e.count||n.maxSimilarity-e.maxSimilarity||e.groupKey.localeCompare(n.groupKey))}function T(i){return i.kind==="echo"?"Review the established side once, then migrate or delete every echo in this group.":"Pick one owner for the new twins and consolidate the group before the copies diverge."}function N(i){return Number.isFinite(i)?i*5:Number.POSITIVE_INFINITY}function K(...i){let t=[],e=new Set;for(let[n,o]of i)for(let a of o){let s=`${n}:${a}`;e.has(s)||(e.add(s),t.push(s))}return t}function m(i){return(i.split("/").pop()??i).replace(/\.[^.]+$/,"")}export{j as a};
2
- //# sourceMappingURL=chunk-MA7OVFHI.js.map
@@ -1,3 +0,0 @@
1
- import{a as f}from"./chunk-64MNV6AB.js";import{c as l}from"./chunk-7S5E7KWT.js";import{readdirSync as g}from"fs";import{execFileSync as p}from"child_process";import{extname as d,join as m}from"path";var x=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".rs",".py",".pyi",".java",".kt",".kts",".scala",".sc",".rb",".c",".h",".cc",".cpp",".cxx",".hpp",".hh",".hxx",".cs",".vb",".php",".dart"],O=[".vue"],S=new Set(x.map(e=>e.toLowerCase())),y=[...S].sort().join(","),h=new Set(["node_modules",".git","target","dist","build",".next",".nuxt",".cache",".turbo","out","coverage",".scipquery-cache","__pycache__",".venv","venv",".idea",".vscode"]);function F(e,n={}){let s=n.includeIndexed??!0,r=n.includeAuxiliary??!0,t=n.extensions?.map(c=>c.toLowerCase()),o=t?new Set(t):S,u=t?[...o].sort().join(","):y,i=`${s?"1":"0"}|${r?"1":"0"}|${u}`;return E.get(e,i,()=>{let c=new Set;if(s)for(let a of f(e,{includeIgnored:!1}))o.has(d(a).toLowerCase())&&c.add(a);if(r)for(let a of _(e.config.projectRoot,o))e.isIgnored(a)||s&&c.has(a)||c.add(a);return[...c].sort()})}var E=l("source-files",{clearGroups:[]});function _(e,n){return I(e,n)??v(e,n)}function I(e,n){try{let s=p("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e,encoding:"utf-8",timeout:1e4,stdio:["ignore","pipe","ignore"]}),r=new Set;for(let t of s.split(`
2
- `)){let o=t.trim();o&&n.has(d(o).toLowerCase())&&r.add(o)}return r}catch{return null}}function v(e,n){let s=new Set,r=t=>{let o=t?m(e,t):e,u;try{u=g(o,{withFileTypes:!0})}catch{return}for(let i of u)if(!h.has(i.name)){if(i.isDirectory()){r(t?`${t}/${i.name}`:i.name);continue}n.has(d(i.name).toLowerCase())&&s.add(t?`${t}/${i.name}`:i.name)}};return r(""),s}export{O as a,h as b,F as c};
3
- //# sourceMappingURL=chunk-OBBDKQAG.js.map
@@ -1,2 +0,0 @@
1
- import{a as y}from"./chunk-FOQHUKNZ.js";import{d as b}from"./chunk-JM72FNGA.js";import{a as d,d as g}from"./chunk-EWC3UK4V.js";import{b as u}from"./chunk-D322LMSA.js";import{c as m}from"./chunk-7S5E7KWT.js";var x=m("definition-consumer-file-usage",{clearGroups:["whole-project","source-file"]});function E(n,e,r){return n.callerFileMap(e,{semantic:r.semantic,sourceFallback:r.sourceFallback})}function I(n,e,r){let i=[],t=0,s=0,p=b(e.symbol);for(let a of r)v(n,a,e.relativePath,p)?t++:S(n,a,p)?s++:i.push(a);return{realConsumers:i,barrelConsumers:t,importOnlyConsumers:s}}function S(n,e,r){if(!r)return!1;let i=d(e);if(!i)return!1;let t=x.get(n,e,()=>C(n,e,i));return t.importedLeaves.has(r)&&!t.usedLeaves.has(r)}function C(n,e,r){let i=new Set,t=new Set,s=g(n,e);if(!s)return{importedLeaves:i,usedLeaves:t};let p=r==="rust"?new Set(["use_declaration"]):r==="python"?new Set(["import_statement","import_from_statement"]):new Set(["import_statement"]),a=(o,c)=>{let l=c||p.has(o.type);(o.type==="identifier"||o.type==="type_identifier"||o.type==="property_identifier"||o.type==="field_identifier")&&(l?i.add(o.text):t.add(o.text));for(let f of o.children)a(f,l)};return a(s.rootNode,!1),{importedLeaves:i,usedLeaves:t}}function v(n,e,r,i){if(!i)return!1;let t=u(n,e);if(t.length===0)return!1;let s=y(n,e);if(s.length===0)return!1;let p=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),a=new RegExp(`\\b${p}\\b`),o=0;for(let c=0;c<t.length;c++){if(!a.test(t[c]??""))continue;if(o++,!s.find(f=>f.startLine<=c&&c<=f.endLine))return!1}return o>0}export{E as a,I as b,S as c};
2
- //# sourceMappingURL=chunk-RHTJBYZ5.js.map
@@ -1,5 +0,0 @@
1
- import{a as T,b as x,e as N,f as _}from"./chunk-3UVJJ6Z7.js";import{b as z}from"./chunk-B75HZHUP.js";import{a as v}from"./chunk-3ZYF3ELZ.js";import{a as $}from"./chunk-YTR4CO5S.js";import{a as I}from"./chunk-MZ7APUFN.js";import{c as d,d as E,g as D}from"./chunk-JM72FNGA.js";import{b as B}from"./chunk-D322LMSA.js";import{d as F}from"./chunk-7S5E7KWT.js";function Ae(e,n,i={}){let{minSimilarity:t=.4,limit:r=20}=i,s=ie(e,n,{semantic:i.semantic!==!1});if(!s)return[];if(!D(s.symbol))return[];let o=J(e,s,t,{scanLimit:i.scanLimit,semantic:i.semantic!==!1});return o.length>0?o.slice(0,r):me(e,n,{minSimilarity:t,limit:r})}function J(e,n,i,t){let r=se(e,{minCallees:3,scanLimit:t.scanLimit,semantic:t.semantic}),s=ae(n,r),o=N([n,...r.corpus].map(l=>l.callees)),a=[];for(let l of s){if(l.callees.size<3)continue;let c=j(n,l,o,{minSimilarity:i,requireSignificantShared:1,requireSharedCount:0});c&&a.push(c)}return a.sort((l,c)=>c.similarity-l.similarity),a}function j(e,n,i,t){let{similarity:r,significantShared:s}=_(e.callees,n.callees,i);if(r<t.minSimilarity)return null;let o=T(e.callees,n.callees).size;if(s.length<t.requireSignificantShared&&o<t.requireSharedCount)return null;let a=s.length>0?s:[...T(e.callees,n.callees)],l=K(a,"callees");return{symbolA:e.symbol,shortNameA:d(e.symbol),fileA:e.file,symbolB:n.symbol,shortNameB:d(n.symbol),fileB:n.file,similarity:r,similarityBasis:"callees",sharedCallees:a.map(d),uniqueToA:[...x(e.callees,n.callees)].map(d),uniqueToB:[...x(n.callees,e.callees)].map(d),...l}}function qe(e,n={}){let{minSimilarity:i=.5,limit:t=20,scope:r,minCallees:s=4,crossFileOnly:o=!1,scanLimit:a}=n,l=G(e,{minCallees:s,scope:r,scanLimit:a,semantic:n.semantic!==!1}),c=N(l.map(m=>m.callees)),f=new Map;for(let m of l)for(let u of m.callees)f.set(u,(f.get(u)??0)+1);let w=Math.max(8,Math.ceil(Math.sqrt(l.length))),y=new Map;for(let m=0;m<l.length;m+=1)for(let u of l[m].callees){if((f.get(u)??0)>w)continue;let g=y.get(u);g||(g=[],y.set(u,g)),g.push(m)}let S=[],b=0,h=new Set;for(let m=0;m<l.length;m+=1){let u=l[m],g=new Set;for(let R of u.callees){let C=y.get(R);if(C)for(let p of C)p>m&&g.add(p)}for(let R of g){let C=`${m}|${R}`;if(h.has(C))continue;h.add(C);let p=l[R];if(o&&u.file===p.file)continue;if(u.paramCount>=0&&p.paramCount>=0){let Q=Math.abs(u.paramCount-p.paramCount),Y=Math.max(2,Math.ceil(Math.max(u.paramCount,p.paramCount)*.5));if(Q>Y)continue}let L=j(u,p,c,{minSimilarity:i,requireSignificantShared:2,requireSharedCount:4});L&&(ee(S,L,t,b),b+=1)}}return S.sort((m,u)=>u.result.similarity-m.result.similarity||m.order-u.order),S.map(m=>m.result)}function ee(e,n,i,t){if(i<=0)return;if(e.length<i){e.push({result:n,order:t});return}let r=0;for(let o=1;o<e.length;o+=1){let a=e[o],l=e[r];(a.result.similarity<l.result.similarity||a.result.similarity===l.result.similarity&&a.order>l.order)&&(r=o)}let s=e[r];n.similarity<=s.result.similarity||(e[r]={result:n,order:t})}var ne=["ScipDatabase#all","ScipDatabase#get","ScipDatabase#prepare","ScipDatabase#pathExclusionsFor","ScipDatabase#isIgnored","ScipDatabase#symbolNoiseFor","PerDbValue#get","PerDbValue#has",":storage:db:ScipDatabase:all",":storage:db:ScipDatabase:get",":storage:db:ScipDatabase:prepare",":storage:db:ScipDatabase:pathExclusionsFor",":storage:db:ScipDatabase:isIgnored",":storage:db:ScipDatabase:symbolNoiseFor",":storage:per-db-cache:PerDbValue:get",":storage:per-db-cache:PerDbValue:has"];function ie(e,n,i){let t=I(e,n),r=new v(e);if(!t)return null;let s=$(e,t,{semantic:i.semantic});return{symbol:t.symbol,file:t.relativePath,callees:U(s.map(o=>o.symbol)),paramCount:r.callableSignature(t)?.paramCount??-1}}var te=F("callee-fingerprint-corpus",{clearGroups:["whole-project","definition-catalog"]}),re=F("callee-fingerprint-index",{clearGroups:["whole-project","definition-catalog"]});function G(e,n){let{minCallees:i,scope:t,excludeSymbol:r,scanLimit:s}=n,o=n.semantic!==!1,a=te.get(e,()=>new Map),l=`${i}|${t??""}|${s??""}|${o}`,c=a.get(l);return c||(c=le(e,{minCallees:i,scope:t,scanLimit:s,semantic:o}),a.set(l,c)),r===void 0?c:c.filter(f=>f.symbol!==r)}function se(e,n){let{minCallees:i,scope:t,scanLimit:r}=n,s=n.semantic!==!1,o=re.get(e,()=>new Map),a=`${i}|${t??""}|${r??""}|${s}`,l=o.get(a);return l||(l=oe(G(e,{minCallees:i,scope:t,scanLimit:r,semantic:s})),o.set(a,l)),l}function oe(e){let n=new Map;for(let r of e)for(let s of r.callees)n.set(s,(n.get(s)??0)+1);let i=Math.max(8,Math.ceil(Math.sqrt(e.length))),t=new Map;for(let r of e)for(let s of r.callees){if((n.get(s)??0)>i)continue;let o=t.get(s);o||(o=[],t.set(s,o)),o.push(r)}return{corpus:e,candidateByCallee:t,docFreq:n,ubiquityThreshold:i}}function ae(e,n){let i=new Map;for(let t of e.callees)for(let r of n.candidateByCallee.get(t)??[])r.symbol!==e.symbol&&i.set(r.symbol,r);return i.size>0?[...i.values()]:n.corpus.filter(t=>t.symbol!==e.symbol)}function le(e,n){let{minCallees:i,scope:t,scanLimit:r,semantic:s}=n,o=new v(e),a=z(o.productionCallableDefinitions({scope:t,minLoc:5,sortByLocDesc:typeof r=="number"&&r>0}),r),l=o.calleeMap(a,{semantic:s});return a.map(c=>({symbol:c.symbol,file:c.relativePath,callees:U((l.get(c.symbolId)??[]).map(f=>f.symbol)),paramCount:o.callableSignature(c)?.paramCount??-1})).filter(c=>c.callees.size>=i)}function U(e){return new Set([...e].filter(n=>!ce(n)))}function ce(e){return ne.some(n=>e.includes(n))}function me(e,n,i){let t=pe(e,n);if(!t||t.tokens.size<3)return[];let r=i.minSimilarity>=.5?i.minSimilarity:.3,s=[],o=Fe(t,he(e));for(let a of o){if(a.symbol===t.symbol||a.tokens.size<3)continue;let l=T(t.tokens,a.tokens);if(l.size<2)continue;let c=new Set([...t.tokens,...a.tokens]),f=c.size>0?l.size/c.size:0;f<r||s.push({symbolA:t.symbol,shortNameA:d(t.symbol),fileA:t.file,symbolB:a.symbol,shortNameB:d(a.symbol),fileB:a.file,similarity:f,similarityBasis:"source-tokens",sharedCallees:[...l].sort(),uniqueToA:[...x(t.tokens,a.tokens)].sort(),uniqueToB:[...x(a.tokens,t.tokens)].sort(),...K([...l],"source-tokens")})}return s.sort((a,l)=>l.similarity-a.similarity||a.shortNameB.localeCompare(l.shortNameB)),s.slice(0,i.limit)}function K(e,n){let i=e.flatMap(A),t=e.flatMap(m=>O(m,n)),r=M(i,V),s=M(i,Z),o=M(t,q),a=[...new Set(t.filter(P))],l=e.filter(m=>{let u=O(m,n);return u.some(g=>q.has(g))&&u.some(P)}).length,c=[];r.length>0&&c.push(`access/query scaffolding: ${r.slice(0,5).join(", ")}`),s.length>0&&c.push(`framework/generic scaffolding: ${s.slice(0,5).join(", ")}`),o.length>0&&c.push(`domain behavior verbs: ${o.slice(0,5).join(", ")}`),o.length>0&&a.length>0&&c.push(`domain-specific terms: ${a.slice(0,5).join(", ")}`);let f=n==="source-tokens"&&i.length>0&&i.every(m=>H.has(m));f&&c.push("shared source tokens are generic scaffolding");let w=o.length>0&&a.length>0,y=r.length+s.length>0,S=n==="callees"&&w&&e.length>=4&&a.length>=4&&l>=2,b=S?"domain-behavior":w?y?"mixed":"domain-behavior":r.length>0?"access-query-scaffolding":s.length>0||f?"framework-scaffolding":"structural-overlap";b==="structural-overlap"&&e.length>0&&c.push(`shared ${n} overlap has no recognized domain or scaffolding category`);let h=b==="domain-behavior"&&(e.length>=3||S)?"direct":"signal";return{evidenceClass:b,actionTier:h,evidenceClassReasons:c,recommendation:ue(b,h)}}function ue(e,n){return n==="direct"?"Shared domain behavior looks concrete; review for an extract/reuse opportunity.":e==="mixed"?"Shared evidence mixes domain behavior with scaffolding; review semantics before extracting anything.":e==="access-query-scaffolding"?"Shared evidence is mostly access/query scaffolding; compare product semantics before reusing code.":e==="structural-overlap"?"Shared structure has no domain or scaffolding classification; inspect names and behavior before reusing code.":"Shared evidence is mostly framework or generic scaffolding; treat as a contextual signal."}function M(e,n){return[...new Set(e.filter(i=>n.has(i)))]}function A(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(n=>n.length>1)}function O(e,n){if(n==="source-tokens")return A(e);let i=E(e);return A(i.length>0?i:fe(e))}function fe(e){return e.replace(/[()`]/g," ").replace(/\.[a-z][a-z0-9]+(?=\s|$)/gi," ").split(/[:/\\\s]+/).map(t=>t.trim()).filter(t=>/[A-Za-z]/.test(t)).at(-1)?.replace(/\.$/,"")??e}function P(e){return e.length>3&&!q.has(e)&&!V.has(e)&&!Z.has(e)&&!H.has(e)&&!ge.has(e)}var q=new Set(["archive","assign","book","cancel","create","delete","ensure","export","import","notify","persist","publish","restore","schedule","send","set","submit","sync","update","upload","validate","write"]),V=new Set(["access","auth","authorize","cache","context","db","find","get","guard","list","permission","permissions","prisma","query","request","response","role","route","session","sql","where"]),Z=new Set(["bytes","computed","crypto","describe","effect","expect","fetch","filter","hex","hook","json","map","mounted","on","promise","random","react","reduce","ref","render","state","test","token","trim","uuid","vue","watch"]),H=new Set(["bytes","crypto","data","false","get","hex","id","key","map","name","num","random","result","secret","set","string","to","token","true","type","value"]),ge=new Set(["best","backend","conflict","database","effect","effects","error","errors","frontend","found","helpers","javascript","module","modules","scip","shared","source","typescript","utils","with","workflow","workflows"]);function pe(e,n){let i=I(e,n);if(!i||!D(i.symbol))return null;let t=de(e,i);return t?{symbol:i.symbol,file:i.relativePath,tokens:t}:null}function de(e,n){let i=E(n.symbol),t=W(e,n.relativePath,n.startLine,n.endLine,i),r=X(t,i);return r.size>0?r:null}var be=F("source-fingerprint-corpus",{clearGroups:["whole-project","definition-catalog"]}),Se=F("source-fingerprint-index",{clearGroups:["whole-project","definition-catalog"]});function ye(e){return be.get(e,()=>xe(e))}function he(e){return Se.get(e,()=>Ce(ye(e)))}function Ce(e){let n=new Map;for(let r of e)for(let s of r.tokens)n.set(s,(n.get(s)??0)+1);let i=Math.max(8,Math.ceil(Math.sqrt(e.length))),t=new Map;for(let r of e)for(let s of r.tokens){if((n.get(s)??0)>i)continue;let o=t.get(s);o||(o=[],t.set(s,o)),o.push(r)}return{corpus:e,candidateByToken:t,docFreq:n,ubiquityThreshold:i}}function Fe(e,n){let i=new Map;for(let t of e.tokens)for(let r of n.candidateByToken.get(t)??[])r.symbol!==e.symbol&&i.set(r.symbol,r);return i.size>0?[...i.values()]:n.corpus.filter(t=>t.symbol!==e.symbol)}function xe(e){return new v(e).productionCallableDefinitions().map(i=>({symbol:i.symbol,file:i.relativePath,tokens:X(W(e,i.relativePath,i.startLine,i.endLine,i.leaf),i.leaf)})).filter(i=>i.tokens.size>0)}function W(e,n,i,t,r){let s=B(e,n);if(s.length===0)return"";if(t>=i&&t-i<=12)return s.slice(i,t+1).join(`
2
- `);let o=[new RegExp(`\\bdef\\s+${k(r)}\\b`),new RegExp(`\\bfun\\s+${k(r)}\\b`),new RegExp(`\\bfn\\s+${k(r)}\\b`),new RegExp(`\\bfunction\\s+${k(r)}\\b`),new RegExp(`\\b${k(r)}\\s*\\(`)],a=s.findIndex(l=>o.some(c=>c.test(l)));if(a>=0){let l=a;for(let c=a+1;c<s.length&&c<=a+8;c++){let f=s[c]??"";if(c>a&&we(f)||(l=c,f.trim()===""&&c>a+1))break}return s.slice(a,l+1).join(`
3
- `)}return s.slice(i,Math.min(s.length,i+8)).join(`
4
- `)}function X(e,n){if(!e)return new Set;let i=new Set(["public","private","protected","final","static","class","def","fun","fn","function","return","string","bool","boolean","void","unit","self","this","new","const","let","var","end","pub"]),t=ke(n),s=e.replace(/["'`]/g," ").replace(/\b\d+\b/g," NUM ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^A-Za-z0-9_]+/g," ").replace(/_/g," ").toLowerCase().split(/\s+/).map(o=>o.trim()).filter(o=>o.length>1).filter(o=>!i.has(o)).filter(o=>!t.has(o));return new Set(s)}function ke(e){return new Set(e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[^A-Za-z0-9_]+|_/).map(n=>n.toLowerCase()).filter(n=>n.length>1))}function we(e){return/^\s*(?:def|fun|fn|function|class|trait|module|object|enum|interface|public|private|protected)\b/.test(e)}function k(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}export{Ae as a,qe as b,ee as c,G as d,oe as e,ae as f,U as g,K as h};
5
- //# sourceMappingURL=chunk-UQJGTVHV.js.map
@@ -1,4 +0,0 @@
1
- import{a as h,b as P,c as M}from"./chunk-RHTJBYZ5.js";import{a as w}from"./chunk-PFOCOG57.js";import{a as T}from"./chunk-3ZYF3ELZ.js";import{b as L,g as v}from"./chunk-ZQLO2SCU.js";import{a as b}from"./chunk-BGBBVSH4.js";import{a as I,c as D,d as p}from"./chunk-JM72FNGA.js";import{e as S}from"./chunk-QLNGUWR7.js";import{a as y}from"./chunk-D322LMSA.js";function re(t,e){let{scope:n,minLoc:i=3,maxLoc:s=80,limit:r=30,includeLowConfidence:a=!1,scanLimit:l}=e??{},d=e?.semantic!==!1,o=new T(t),m=o.scopedDefinitions(n),g=H(o,n),x={high:0,medium:1,low:2};return w({candidates:()=>F(t,o,m,{minLoc:i,maxLoc:s}),orderCandidates:(c,u)=>b(u)-b(c)||c.relativePath.localeCompare(u.relativePath),scanLimit:l,prepare:c=>({consumerFileMap:K(o,c,{semantic:d}),singletonBackedClassIds:O(t,o,m,c,{semantic:d}),candidateIndex:$(c)}),evaluate:(c,u)=>{if(u.singletonBackedClassIds.has(c.symbolId))return null;let f=B(t,c,u.consumerFileMap,u.candidateIndex);if(f.transitivelyReachable||f.realConsumers.length>1||f.realConsumers.length===0&&f.barrelConsumers>0||!_(f.definition,f.realConsumers.length,g))return null;let C=N(t,f);return!a&&C.confidence==="low"?null:C},orderResults:(c,u)=>x[c.confidence]-x[u.confidence]||u.loc-c.loc||c.file.localeCompare(u.file)||c.startLine-u.startLine,limit:r})}function F(t,e,n,i){return n.filter(s=>s.isTypeLike&&b(s)>=i.minLoc).filter(s=>b(s)<=i.maxLoc).filter(s=>!t.isIgnored(s.relativePath)).filter(s=>L(s.relativePath)!=="test").filter(s=>!v(t,s.symbol,s.relativePath)).filter(s=>!Z(s.symbol)).filter(s=>!e.hasSuppressionComment(s))}function K(t,e,n){return h(t,e,{semantic:n.semantic})}function $(t){let e=new Map;for(let n of t){let i=e.get(n.relativePath);i||(i=new Map,e.set(n.relativePath,i));let s=p(n.symbol);s&&i.set(s,n)}return e}function B(t,e,n,i){let r=[...n.get(e.symbolId)??new Set].filter(m=>m!==e.relativePath&&!t.isIgnored(m)),{realConsumers:a,barrelConsumers:l,importOnlyConsumers:d}=P(t,e,r),o=q(t,e,n,i);return{definition:e,realConsumers:a,barrelConsumers:l+d,transitivelyReachable:o}}function N(t,e){let n=R(t,e.definition.relativePath,e.definition.startLine),i=A(e.definition.relativePath)?!0:G(t,e.definition),{confidence:s,reason:r}=J(e.realConsumers.length,n,i),a=j(e.realConsumers.length,n,i);return{symbol:e.definition.symbol,shortName:D(e.definition.symbol),file:e.definition.relativePath,startLine:e.definition.startLine,endLine:e.definition.endLine,loc:b(e.definition),consumers:e.realConsumers.length,barrelConsumers:e.barrelConsumers,kind:n,definerUsesType:i,confidence:s,reason:r,actionTier:a.actionTier,stalenessKind:a.stalenessKind,recommendation:a.recommendation}}function j(t,e,n){return t===0?{actionTier:"direct",stalenessKind:"unused-abstraction",recommendation:"Delete the abstraction or wire the missing consumer after checking public/package surfaces."}:e==="class"?{actionTier:"signal",stalenessKind:"one-to-one-class-encapsulation",recommendation:"Treat as weak signal: a one-consumer class may be intentional encapsulation, so inline only after reviewing ownership and state boundaries."}:n?{actionTier:"signal",stalenessKind:"single-consumer-abstraction",recommendation:"Review whether this single-consumer abstraction earns its name or should be folded into the owning feature."}:{actionTier:"signal",stalenessKind:"misplaced-single-consumer-type",recommendation:"Review moving or co-locating the type with its only real consumer; keep it here only if this file owns the public contract."}}function O(t,e,n,i,s){let r=W(t,U(n),i),a=r.map(o=>o.singleton);if(r.length===0)return new Set;let l=h(e,a,{semantic:s.semantic}),d=new Set;for(let{singleton:o,classId:m}of r)E(t,o,l)&&d.add(m);return d}function U(t){let e=new Map;for(let n of t){let i=p(n.symbol);i&&e.set(k(n.relativePath,i),n)}return e}function W(t,e,n){let i=[];for(let s of n){let r=z(t,e,s);r&&i.push({singleton:r,classId:s.symbolId})}return i}function z(t,e,n){if(R(t,n.relativePath,n.startLine)!=="class")return null;let i=p(n.symbol);if(!i)return null;let s=V(t,n.relativePath,i);return s?e.get(k(n.relativePath,s))??null:null}function E(t,e,n){let i=p(e.symbol),s=n.get(e.symbolId);return!i||!s?!1:[...s].some(r=>r!==e.relativePath&&!t.isIgnored(r)&&!M(t,r,i))}function k(t,e){return`${t}\0${e}`}function V(t,e,n){let i=y(t,e);if(!i)return null;let s=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=new RegExp(`\\bexport\\s+const\\s+([A-Za-z_$][\\w$]*)\\s*=\\s*new\\s+${s}\\s*\\(`);return i.match(r)?.[1]??null}function H(t,e){return new Set(t.scopedDefinitions(e).filter(n=>n.isFunctionLike).map(n=>n.relativePath))}function Z(t){let e=I(t);if("kind"in e)return!1;let n=e.descriptors;if(n.length<2)return!1;let i=n[n.length-1],s=n[n.length-2];return i?.suffix==="type"&&s?.suffix==="type"}function A(t){let n=(t.split("/").pop()??"").replace(/\.[^.]+$/,"");return!!(n==="types"||n.endsWith("-types")||n==="models"||n==="schema"||n==="common"||n==="protocol"||n==="proto"||n==="dto"||n==="mod"||n==="contracts"||/(^|\/)types(\/|\.)/.test(t)||/(^|\/)models?(\/|\.)/.test(t)||/(^|\/)proto(?:col)?(\/|\.)/.test(t)||/(^|\/)schema(\/|\.)/.test(t)||/(^|\/)contracts?(\/|\.)/.test(t))}function _(t,e,n){return!(A(t.relativePath)&&e>0||e===0&&n.has(t.relativePath))}function q(t,e,n,i){let s=S(t,e.relativePath),r=p(e.symbol);if(!r)return!1;let a=s.get(r);if(!a||a.size===0)return!1;let l=i.get(e.relativePath);if(!l)return!1;for(let d of a){let o=l.get(d);if(!o)continue;let m=n.get(o.symbolId);if(m){for(let g of m)if(g!==e.relativePath&&!t.isIgnored(g))return!0}}return!1}function R(t,e,n){let i=y(t,e);if(!i)return"other";let s=i.split(`
2
- `),r=Math.max(0,n-2),a=Math.min(s.length-1,n+2);for(let l=r;l<=a;l++){let o=(s[l]??"").replace(/^\s*\/\/.*$/g,"");if(/\b(?:export\s+)?(?:abstract\s+)?class\s+\w/.test(o))return"class";if(/\b(?:export\s+)?interface\s+\w/.test(o))return"interface";if(/\b(?:export\s+)?type\s+\w/.test(o))return"type";if(/\b(?:export\s+)?(?:const\s+)?enum\s+\w/.test(o))return"enum"}return"other"}function G(t,e){let n=y(t,e.relativePath);if(!n)return!1;let i=p(e.symbol);if(!i)return!1;let s=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=new RegExp(`\\b${s}\\b`),a=n.split(`
3
- `);for(let l=0;l<a.length;l++)if(!(l>=e.startLine&&l<=e.endLine)&&r.test(a[l]??""))return!0;return!1}function J(t,e,n){return t===0?{confidence:"high",reason:"unused \u2014 no consumers and defining file has no real usage"}:t===1&&e==="class"?{confidence:"low",reason:"1 consumer + class kind \u2014 likely 1:1 encapsulation, not over-abstraction"}:t===1&&!n?{confidence:"high",reason:"1 consumer + defining file never uses it \u2014 type belongs with its consumer"}:{confidence:"medium",reason:"1 consumer \u2014 single-use abstraction"}}export{re as a};
4
- //# sourceMappingURL=chunk-ZFMPHDAT.js.map
@@ -1,20 +0,0 @@
1
- /**
2
- * Check if the `scip` CLI binary is available on PATH or packaged with scip-query.
3
- */
4
- declare function isScipInstalled(): boolean;
5
- /**
6
- * Get the scip CLI version if installed.
7
- */
8
- declare function getScipVersion(): string | null;
9
- /**
10
- * Print instructions for installing the scip CLI binary.
11
- */
12
- declare function printScipInstallInstructions(): void;
13
- /**
14
- * Attempt to auto-install the `scip` CLI binary.
15
- * Tries brew (macOS), then go install, then prints manual instructions.
16
- * Returns true if installation succeeded.
17
- */
18
- declare function tryInstallScipCli(onStatus: (msg: string) => void): boolean;
19
-
20
- export { getScipVersion as g, isScipInstalled as i, printScipInstallInstructions as p, tryInstallScipCli as t };