codebaseiq 0.1.0 → 0.2.0

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 (422) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/augment-vue-worker.js +1 -1
  3. package/dist/{chunk-DQMDCD24.js → chunk-27PHVDKL.js} +2 -2
  4. package/dist/{chunk-ZMI2JSX2.js → chunk-2DMVFAY7.js} +2 -2
  5. package/dist/{chunk-5PUWMSDU.js → chunk-2E6BTWER.js} +2 -2
  6. package/dist/{chunk-YESXMKX3.js → chunk-2F5ERMNI.js} +2 -2
  7. package/dist/chunk-2VKB5CMA.js +60 -0
  8. package/dist/{chunk-NNJ2KZZG.js → chunk-327YK6TB.js} +4 -4
  9. package/dist/chunk-347TXATM.js +2 -0
  10. package/dist/{chunk-VEXUL62T.js → chunk-35YYZD3D.js} +2 -2
  11. package/dist/chunk-36WRYYTE.js +3 -0
  12. package/dist/chunk-37TKC6MB.js +2 -0
  13. package/dist/{chunk-FAJQ7LWY.js → chunk-3AC56WAR.js} +2 -2
  14. package/dist/{chunk-JE3WZ6II.js → chunk-3NUZVLR7.js} +2 -2
  15. package/dist/{chunk-UZGZB3VB.js → chunk-3XFJUWJE.js} +2 -2
  16. package/dist/{chunk-OVTS4DKB.js → chunk-4AOOSCZ7.js} +2 -2
  17. package/dist/{chunk-LU3BMVH2.js → chunk-4IFISPQW.js} +2 -2
  18. package/dist/chunk-4NHWNAWQ.js +11 -0
  19. package/dist/chunk-4O52YNKL.js +5 -0
  20. package/dist/{chunk-HPJRBHVT.js → chunk-54K6556S.js} +2 -2
  21. package/dist/{chunk-HRWGYWRJ.js → chunk-57GCCPLS.js} +2 -2
  22. package/dist/{chunk-J77SU6VA.js → chunk-57KEZDPT.js} +2 -2
  23. package/dist/{chunk-OFBE4NGP.js → chunk-57KFVPVZ.js} +2 -2
  24. package/dist/{chunk-WOQBZPIF.js → chunk-5BDK6QC3.js} +2 -2
  25. package/dist/{chunk-7MGU3HPH.js → chunk-5IO2APSS.js} +2 -2
  26. package/dist/chunk-5NJPH3QZ.js +61 -0
  27. package/dist/{chunk-GW6Z3WGY.js → chunk-5WXOEJ4G.js} +2 -2
  28. package/dist/chunk-5XEVXVTK.js +3 -0
  29. package/dist/{chunk-RR7SX44N.js → chunk-6OVNYYY4.js} +2 -2
  30. package/dist/{chunk-ZV3JV5G5.js → chunk-6SDEQTVY.js} +2 -2
  31. package/dist/{chunk-EF2R3WNQ.js → chunk-6URCE5QY.js} +2 -2
  32. package/dist/{chunk-UCD3H3UZ.js → chunk-6ZV5EDUT.js} +2 -2
  33. package/dist/{chunk-C6SBF2WH.js → chunk-77GHPR2R.js} +2 -2
  34. package/dist/{chunk-YVCIMIOC.js → chunk-7R64XY4Y.js} +2 -2
  35. package/dist/{chunk-VXYS3FZD.js → chunk-7Z7HCZ7J.js} +2 -2
  36. package/dist/{chunk-CO5R3UNA.js → chunk-A67HT5FR.js} +2 -2
  37. package/dist/{chunk-UDS562V4.js → chunk-A7XQT7MH.js} +2 -2
  38. package/dist/{chunk-RDBI2RXU.js → chunk-ACZDU5GK.js} +2 -2
  39. package/dist/{chunk-FETNQCFO.js → chunk-AM5SUGHF.js} +2 -2
  40. package/dist/{chunk-NNOKTMZT.js → chunk-B2E3HZ2A.js} +2 -2
  41. package/dist/{chunk-CVYSU6BX.js → chunk-BH5CE4LN.js} +2 -2
  42. package/dist/chunk-BLKYYQ7C.js +543 -0
  43. package/dist/{chunk-4WKDMDEW.js → chunk-BX2U3QQV.js} +2 -2
  44. package/dist/{chunk-ZKX2FRS6.js → chunk-CANBLFVQ.js} +2 -2
  45. package/dist/{chunk-SMRBZ6EC.js → chunk-CCRZLRWJ.js} +2 -2
  46. package/dist/chunk-CDWSLAPN.js +21 -0
  47. package/dist/chunk-CIVYHK7U.js +22 -0
  48. package/dist/{chunk-L57ZKWVG.js → chunk-CMXW7MFV.js} +2 -2
  49. package/dist/{chunk-T3DGWPXM.js → chunk-CSZOQ7YO.js} +2 -2
  50. package/dist/{chunk-ZZXSWSN6.js → chunk-CWMHWD56.js} +2 -2
  51. package/dist/{chunk-6NW7MU72.js → chunk-CZEIHYMP.js} +2 -2
  52. package/dist/{chunk-DO6WQD2T.js → chunk-D62CTZX6.js} +2 -2
  53. package/dist/{chunk-XWUOUWYI.js → chunk-DFPAZXLU.js} +2 -2
  54. package/dist/{chunk-MOVBWNIP.js → chunk-DKJXK3HA.js} +2 -2
  55. package/dist/{chunk-XMQ23E27.js → chunk-DLC6JDN7.js} +2 -2
  56. package/dist/chunk-DUKHVPU5.js +4 -0
  57. package/dist/{chunk-ID63777H.js → chunk-DVYG3JTA.js} +2 -2
  58. package/dist/{chunk-NE6IU5ZD.js → chunk-EFFMFK7C.js} +2 -2
  59. package/dist/{chunk-I2T2LLK2.js → chunk-EM5UHLAM.js} +2 -2
  60. package/dist/chunk-EN4AHLL3.js +3 -0
  61. package/dist/chunk-EXMVF3JR.js +3 -0
  62. package/dist/{chunk-SWHMHUKF.js → chunk-FEBLLMTL.js} +2 -2
  63. package/dist/chunk-FIXYHQ3W.js +3 -0
  64. package/dist/{chunk-RKEJ6VTF.js → chunk-FLLXYUOL.js} +2 -2
  65. package/dist/{chunk-KWVHSKHK.js → chunk-FPDL2TUB.js} +2 -2
  66. package/dist/chunk-FQA3KIFX.js +17 -0
  67. package/dist/chunk-FWY2PRIF.js +3 -0
  68. package/dist/chunk-FY5V4V4F.js +2 -0
  69. package/dist/chunk-G2XUZCF2.js +88 -0
  70. package/dist/{chunk-QHRNXP3C.js → chunk-GXVDTHFC.js} +2 -2
  71. package/dist/{chunk-6MUIJMVL.js → chunk-H3CKAL6P.js} +2 -2
  72. package/dist/chunk-H5QXP63L.js +2 -0
  73. package/dist/{chunk-VUIYB2V3.js → chunk-HBQGKMM3.js} +2 -2
  74. package/dist/{chunk-PYAB5SM6.js → chunk-HBXZAGY6.js} +2 -2
  75. package/dist/{chunk-NNO6A2PO.js → chunk-HCMQZPEO.js} +2 -2
  76. package/dist/{chunk-Q65CQ4XL.js → chunk-HHBBGWES.js} +2 -2
  77. package/dist/{chunk-GTXSJDCO.js → chunk-HIEXRDJF.js} +2 -2
  78. package/dist/{chunk-4FC325IF.js → chunk-HYKSLTAR.js} +2 -2
  79. package/dist/{chunk-XLQ3GLWZ.js → chunk-I2KP4AGR.js} +2 -2
  80. package/dist/chunk-I5FCDTK2.js +2 -0
  81. package/dist/{chunk-QKPLA6IC.js → chunk-I645ZF75.js} +2 -2
  82. package/dist/{chunk-FDGD5AB5.js → chunk-IBM3F2BJ.js} +2 -2
  83. package/dist/{chunk-Q72QSKXC.js → chunk-IEL6Q5W3.js} +38 -38
  84. package/dist/{chunk-NCZUNH3E.js → chunk-IGQQUENU.js} +12 -12
  85. package/dist/chunk-IGYAZPRX.js +4 -0
  86. package/dist/chunk-IOVPAZWP.js +3 -0
  87. package/dist/{chunk-OL6KJP3N.js → chunk-IVJJNVSX.js} +2 -2
  88. package/dist/{chunk-AKB7V7TV.js → chunk-IWAMYGPN.js} +2 -2
  89. package/dist/chunk-IYBIBMPF.js +90 -0
  90. package/dist/{chunk-IOP6FWIM.js → chunk-J24VICI5.js} +2 -2
  91. package/dist/{chunk-C7QOQX32.js → chunk-JN5LIBT3.js} +2 -2
  92. package/dist/{chunk-O6QTXQPJ.js → chunk-JOALNFY3.js} +2 -2
  93. package/dist/{chunk-GCHRX4YW.js → chunk-JUO3Z644.js} +2 -2
  94. package/dist/{chunk-BJ6SQAEN.js → chunk-JXHLB7TP.js} +2 -2
  95. package/dist/{chunk-IJ4HMYBE.js → chunk-JYX5UZSZ.js} +2 -2
  96. package/dist/chunk-K2O7SBAU.js +2 -0
  97. package/dist/{chunk-OLF4MA5W.js → chunk-K5G7SPAG.js} +2 -2
  98. package/dist/{chunk-YSNONTJ2.js → chunk-KDYQQJ6X.js} +2 -2
  99. package/dist/{chunk-7NVGT435.js → chunk-KM4QRWI5.js} +2 -2
  100. package/dist/{chunk-HKQUXIFO.js → chunk-KNV5VFDV.js} +2 -2
  101. package/dist/chunk-L3YSDLNB.js +2 -0
  102. package/dist/{chunk-EZNMUY67.js → chunk-LAGDJXFY.js} +2 -2
  103. package/dist/{chunk-ENCCHKM6.js → chunk-LY2NB5XR.js} +4 -4
  104. package/dist/chunk-M4EVGA5S.js +14 -0
  105. package/dist/chunk-M7LAIM77.js +127 -0
  106. package/dist/{chunk-BVAJLC5A.js → chunk-MRGTCMDK.js} +2 -2
  107. package/dist/{chunk-OZYRSMSH.js → chunk-MT5W4DUG.js} +2 -2
  108. package/dist/{chunk-VE5AVNMP.js → chunk-MTMF4N7F.js} +2 -2
  109. package/dist/chunk-N3Q3AWGW.js +545 -0
  110. package/dist/{chunk-TXXOEMZJ.js → chunk-NDGTJHQN.js} +2 -2
  111. package/dist/chunk-NIO346UL.js +2 -0
  112. package/dist/chunk-NJA4MMBD.js +2 -0
  113. package/dist/{chunk-7FND7D7N.js → chunk-NK76RSB6.js} +2 -2
  114. package/dist/{chunk-H3LGFZVK.js → chunk-NTRW52UR.js} +2 -2
  115. package/dist/{chunk-JOIRNPPY.js → chunk-OJFLPVBP.js} +2 -2
  116. package/dist/{chunk-KMITESMT.js → chunk-OMBRP7BB.js} +2 -2
  117. package/dist/{chunk-UP3BUZR5.js → chunk-OVKZM2XI.js} +2 -2
  118. package/dist/{chunk-MVB3DAEY.js → chunk-PARCKE3Q.js} +2 -2
  119. package/dist/{chunk-CAUCPUOF.js → chunk-PFPHS4NO.js} +2 -2
  120. package/dist/chunk-PHPQ24UG.js +22 -0
  121. package/dist/chunk-PLZXWZHY.js +77 -0
  122. package/dist/{chunk-34WBMAYK.js → chunk-PNVZIJ57.js} +2 -2
  123. package/dist/{chunk-SYDJMPES.js → chunk-QKVTWODE.js} +2 -2
  124. package/dist/{chunk-FW53T7EB.js → chunk-QLTFXVUI.js} +2 -2
  125. package/dist/{chunk-PBI2LFKH.js → chunk-QMGWSEPL.js} +2 -2
  126. package/dist/{chunk-CQP3THUZ.js → chunk-QVHZB75Z.js} +2 -2
  127. package/dist/{chunk-6BQ3DSPK.js → chunk-QVWDQTMG.js} +2 -2
  128. package/dist/{chunk-ST7V3SKN.js → chunk-RCPZOPV6.js} +2 -2
  129. package/dist/chunk-RJWAB4VR.js +345 -0
  130. package/dist/chunk-RRPK327J.js +20 -0
  131. package/dist/chunk-RVYLJDXC.js +21 -0
  132. package/dist/chunk-RWKEXCHU.js +3 -0
  133. package/dist/{chunk-L4NRUAGJ.js → chunk-S5SKXCND.js} +2 -2
  134. package/dist/{chunk-RBAS5ZHI.js → chunk-S64NCE2Z.js} +2 -2
  135. package/dist/{chunk-WMPRTGH2.js → chunk-SF34QLK2.js} +2 -2
  136. package/dist/{chunk-ANFVSJWQ.js → chunk-SJZQ2PTZ.js} +2 -2
  137. package/dist/{chunk-4XTAUQFD.js → chunk-SRY26ITJ.js} +2 -2
  138. package/dist/chunk-SV2LEFVM.js +2 -0
  139. package/dist/{chunk-7XAN6GKB.js → chunk-T3YFIJ5P.js} +2 -2
  140. package/dist/chunk-T55YPJGB.js +3 -0
  141. package/dist/chunk-TAJ6UGCO.js +21 -0
  142. package/dist/{chunk-PIOMTC27.js → chunk-TUTSO7UZ.js} +2 -2
  143. package/dist/{chunk-FQKZWM4L.js → chunk-U24M5RQM.js} +5 -5
  144. package/dist/{chunk-XME3HPXZ.js → chunk-U2XX3BT4.js} +2 -2
  145. package/dist/{chunk-SZD2KF7Q.js → chunk-UWB5WMC2.js} +2 -2
  146. package/dist/{chunk-6CS3UQTN.js → chunk-VCL7FK3E.js} +2 -2
  147. package/dist/{chunk-N3IQCBCF.js → chunk-VCWAJPXQ.js} +2 -2
  148. package/dist/{chunk-LZYFLFEH.js → chunk-VG55NFXF.js} +2 -2
  149. package/dist/{chunk-PTAWHLVJ.js → chunk-VLTUX4IF.js} +2 -2
  150. package/dist/{chunk-JEJLSICM.js → chunk-VVCBMH5O.js} +2 -2
  151. package/dist/{chunk-JSOYNVWH.js → chunk-VYZQZ4ZN.js} +2 -2
  152. package/dist/chunk-W3FK73MD.js +8 -0
  153. package/dist/{chunk-UNBY47BC.js → chunk-W6C6QTXJ.js} +2 -2
  154. package/dist/chunk-WH5SYOMD.js +2 -0
  155. package/dist/chunk-WJOQC4P7.js +7 -0
  156. package/dist/chunk-WO47BIPY.js +3 -0
  157. package/dist/chunk-WOOTEWQT.js +239 -0
  158. package/dist/{chunk-UBGWN7I4.js → chunk-X5I2BQGX.js} +2 -2
  159. package/dist/{chunk-PX4RYAAK.js → chunk-XNUWRTYM.js} +2 -2
  160. package/dist/{chunk-ICFDQHAM.js → chunk-XUJM6474.js} +2 -2
  161. package/dist/chunk-XYLV727H.js +21 -0
  162. package/dist/{chunk-TRRC4ZJ7.js → chunk-YFQPWKHR.js} +2 -2
  163. package/dist/{chunk-NEDP5RFQ.js → chunk-YIOQJ45A.js} +2 -2
  164. package/dist/{chunk-Y6KHROC3.js → chunk-YXJ4IAHH.js} +2 -2
  165. package/dist/chunk-YYFV32WR.js +3 -0
  166. package/dist/{chunk-BH5F2Q4O.js → chunk-ZB3V5QM7.js} +2 -2
  167. package/dist/chunk-ZJZQ7Q2Q.js +3 -0
  168. package/dist/{chunk-EMNIHCRB.js → chunk-ZNQCR656.js} +2 -2
  169. package/dist/{chunk-TIIC3ZE7.js → chunk-ZOEDRCR4.js} +2 -2
  170. package/dist/cli-context-TSADTXLB.js +2 -0
  171. package/dist/cli-context-XEPPF4RX.js +3 -0
  172. package/dist/cli-program-KJGQEM72.js +7 -0
  173. package/dist/cli.js +1 -1
  174. package/dist/{code-DlqpBDd0.d.ts → code-CDe-mIjx.d.ts} +1 -1
  175. package/dist/code-viewer-YGDON6SY.js +12 -0
  176. package/dist/code-viewer-ZCTHXQ5C.js +11 -0
  177. package/dist/command-descriptors-5VAB2MZX.js +335 -0
  178. package/dist/command-descriptors-EAHKIRAG.js +337 -0
  179. package/dist/{config-types-BNoC96J3.d.ts → config-types-D6X5S68_.d.ts} +50 -0
  180. package/dist/{db-D7sauVFH.d.ts → db-DmRNdCtm.d.ts} +1 -1
  181. package/dist/direct-navigation-B3SGOOBW.js +2 -0
  182. package/dist/direct-navigation-ZL362KXF.js +3 -0
  183. package/dist/{graph-evidence-BIFqyisO.d.ts → graph-evidence-Bs54NWws.d.ts} +1 -1
  184. package/dist/{health-DJaZXg8I.d.ts → health-BnzbSLCE.d.ts} +1 -1
  185. package/dist/index.d.ts +2 -2
  186. package/dist/index.js +1 -1
  187. package/dist/invocation-command-descriptors-CSUGUHTT.js +2 -0
  188. package/dist/invocation-command-descriptors-PPVZOIE5.js +3 -0
  189. package/dist/output-continuation-command-FTVVBVSN.js +2 -0
  190. package/dist/output-continuation-command-ITPRC3YV.js +3 -0
  191. package/dist/project-reindex-7HZSLLLY.js +3 -0
  192. package/dist/project-reindex-NGM3DYBN.js +2 -0
  193. package/dist/queries/affected.d.ts +2 -2
  194. package/dist/queries/affected.js +1 -1
  195. package/dist/queries/anchors.d.ts +2 -2
  196. package/dist/queries/anchors.js +1 -1
  197. package/dist/queries/architecture.d.ts +2 -2
  198. package/dist/queries/architecture.js +1 -1
  199. package/dist/queries/bottlenecks.d.ts +2 -2
  200. package/dist/queries/bottlenecks.js +1 -1
  201. package/dist/queries/by-kind.d.ts +2 -2
  202. package/dist/queries/by-kind.js +1 -1
  203. package/dist/queries/call-graph.d.ts +2 -2
  204. package/dist/queries/call-graph.js +1 -1
  205. package/dist/queries/change-surface.d.ts +2 -2
  206. package/dist/queries/change-surface.js +1 -1
  207. package/dist/queries/cleanup-plan.d.ts +2 -2
  208. package/dist/queries/cleanup-plan.js +1 -1
  209. package/dist/queries/co-change.d.ts +2 -2
  210. package/dist/queries/co-change.js +1 -1
  211. package/dist/queries/code.d.ts +3 -3
  212. package/dist/queries/code.js +1 -1
  213. package/dist/queries/complexity-hotspots.d.ts +2 -2
  214. package/dist/queries/complexity-hotspots.js +1 -1
  215. package/dist/queries/complexity.d.ts +2 -2
  216. package/dist/queries/complexity.js +1 -1
  217. package/dist/queries/context.d.ts +2 -2
  218. package/dist/queries/context.js +1 -1
  219. package/dist/queries/convergence.d.ts +2 -2
  220. package/dist/queries/convergence.js +1 -1
  221. package/dist/queries/coupling.d.ts +2 -2
  222. package/dist/queries/coupling.js +1 -1
  223. package/dist/queries/cycles.d.ts +2 -2
  224. package/dist/queries/cycles.js +1 -1
  225. package/dist/queries/dataflow.d.ts +2 -2
  226. package/dist/queries/dataflow.js +1 -1
  227. package/dist/queries/dead.d.ts +2 -2
  228. package/dist/queries/dead.js +1 -1
  229. package/dist/queries/decorative-checkers.d.ts +2 -2
  230. package/dist/queries/decorative-checkers.js +1 -1
  231. package/dist/queries/deep-chains.d.ts +2 -2
  232. package/dist/queries/deep-chains.js +1 -1
  233. package/dist/queries/dependence-slice.d.ts +3 -3
  234. package/dist/queries/dependence-slice.js +1 -1
  235. package/dist/queries/dependency-depth.d.ts +2 -2
  236. package/dist/queries/dependency-depth.js +1 -1
  237. package/dist/queries/deps.d.ts +2 -2
  238. package/dist/queries/deps.js +1 -1
  239. package/dist/queries/diff-impact.d.ts +2 -2
  240. package/dist/queries/diff-impact.js +1 -1
  241. package/dist/queries/doc-drift.d.ts +2 -2
  242. package/dist/queries/doc-drift.js +1 -1
  243. package/dist/queries/drift.d.ts +2 -2
  244. package/dist/queries/drift.js +1 -1
  245. package/dist/queries/duplicate-bodies.d.ts +2 -2
  246. package/dist/queries/duplicate-bodies.js +1 -1
  247. package/dist/queries/entry-map.d.ts +2 -2
  248. package/dist/queries/entry-map.js +1 -1
  249. package/dist/queries/evidence.d.ts +3 -3
  250. package/dist/queries/evidence.js +1 -1
  251. package/dist/queries/extract-candidates.d.ts +2 -2
  252. package/dist/queries/extract-candidates.js +1 -1
  253. package/dist/queries/fan.d.ts +2 -2
  254. package/dist/queries/fan.js +1 -1
  255. package/dist/queries/files.d.ts +2 -2
  256. package/dist/queries/files.js +1 -1
  257. package/dist/queries/health.d.ts +3 -3
  258. package/dist/queries/health.js +1 -1
  259. package/dist/queries/hierarchy.d.ts +2 -2
  260. package/dist/queries/hierarchy.js +1 -1
  261. package/dist/queries/hotspots.d.ts +2 -2
  262. package/dist/queries/hotspots.js +1 -1
  263. package/dist/queries/imports.d.ts +2 -2
  264. package/dist/queries/imports.js +1 -1
  265. package/dist/queries/incomplete-migration.d.ts +2 -2
  266. package/dist/queries/incomplete-migration.js +1 -1
  267. package/dist/queries/index.d.ts +5 -5
  268. package/dist/queries/index.js +1 -1
  269. package/dist/queries/isolated.d.ts +2 -2
  270. package/dist/queries/isolated.js +1 -1
  271. package/dist/queries/locality-candidates.d.ts +2 -2
  272. package/dist/queries/locality-candidates.js +1 -1
  273. package/dist/queries/members.d.ts +2 -2
  274. package/dist/queries/members.js +1 -1
  275. package/dist/queries/methods.d.ts +2 -2
  276. package/dist/queries/methods.js +1 -1
  277. package/dist/queries/not-implemented.d.ts +2 -2
  278. package/dist/queries/not-implemented.js +1 -1
  279. package/dist/queries/outline.d.ts +2 -2
  280. package/dist/queries/outline.js +1 -1
  281. package/dist/queries/passthrough-candidates.d.ts +2 -2
  282. package/dist/queries/passthrough-candidates.js +1 -1
  283. package/dist/queries/plan-context.d.ts +2 -2
  284. package/dist/queries/plan-context.js +1 -1
  285. package/dist/queries/react-component-duplicates.d.ts +2 -2
  286. package/dist/queries/react-component-duplicates.js +1 -1
  287. package/dist/queries/react-hook-candidates.d.ts +2 -2
  288. package/dist/queries/react-hook-candidates.js +1 -1
  289. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  290. package/dist/queries/react-large-component-pressure.js +1 -1
  291. package/dist/queries/recent-duplicates.d.ts +2 -2
  292. package/dist/queries/recent-duplicates.js +1 -1
  293. package/dist/queries/redundant-reexports.d.ts +2 -2
  294. package/dist/queries/redundant-reexports.js +1 -1
  295. package/dist/queries/reference-neighborhood.d.ts +2 -2
  296. package/dist/queries/reference-neighborhood.js +1 -1
  297. package/dist/queries/reference-reachability.d.ts +2 -2
  298. package/dist/queries/reference-reachability.js +1 -1
  299. package/dist/queries/refs.d.ts +2 -2
  300. package/dist/queries/refs.js +1 -1
  301. package/dist/queries/self-audit.d.ts +2 -2
  302. package/dist/queries/self-audit.js +1 -1
  303. package/dist/queries/similar-chains.d.ts +2 -2
  304. package/dist/queries/similar-chains.js +1 -1
  305. package/dist/queries/similar-files.d.ts +2 -2
  306. package/dist/queries/similar-files.js +1 -1
  307. package/dist/queries/similar-signatures.d.ts +2 -2
  308. package/dist/queries/similar-signatures.js +1 -1
  309. package/dist/queries/similar.d.ts +2 -2
  310. package/dist/queries/similar.js +1 -1
  311. package/dist/queries/slice.d.ts +2 -2
  312. package/dist/queries/slice.js +1 -1
  313. package/dist/queries/source-inspection.d.ts +4 -4
  314. package/dist/queries/source-inspection.js +1 -1
  315. package/dist/queries/source-search.d.ts +2 -2
  316. package/dist/queries/source-search.js +1 -1
  317. package/dist/queries/stale-abstractions.d.ts +2 -2
  318. package/dist/queries/stale-abstractions.js +1 -1
  319. package/dist/queries/stats.d.ts +2 -2
  320. package/dist/queries/surface.d.ts +2 -2
  321. package/dist/queries/surface.js +1 -1
  322. package/dist/queries/symbols.d.ts +2 -2
  323. package/dist/queries/symbols.js +1 -1
  324. package/dist/queries/system-map.d.ts +2 -2
  325. package/dist/queries/system-map.js +1 -1
  326. package/dist/queries/system.d.ts +2 -2
  327. package/dist/queries/system.js +1 -1
  328. package/dist/queries/test-quality.d.ts +2 -2
  329. package/dist/queries/test-quality.js +1 -1
  330. package/dist/queries/trace.d.ts +2 -2
  331. package/dist/queries/trace.js +1 -1
  332. package/dist/queries/twin-ab.d.ts +2 -2
  333. package/dist/queries/twin-ab.js +1 -1
  334. package/dist/queries/twin-drift.d.ts +2 -2
  335. package/dist/queries/twin-drift.js +1 -1
  336. package/dist/queries/unused-imports.d.ts +2 -2
  337. package/dist/queries/unused-imports.js +1 -1
  338. package/dist/queries/unused-params.d.ts +2 -2
  339. package/dist/queries/unused-params.js +1 -1
  340. package/dist/queries/value-flow.d.ts +3 -3
  341. package/dist/queries/value-flow.js +1 -1
  342. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  343. package/dist/queries/vue-component-duplicates.js +1 -1
  344. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  345. package/dist/queries/vue-composable-candidates.js +1 -1
  346. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  347. package/dist/queries/vue-large-view-pressure.js +1 -1
  348. package/dist/queries/wrapper-candidates.d.ts +2 -2
  349. package/dist/queries/wrapper-candidates.js +1 -1
  350. package/dist/reindex-worker.js +1 -1
  351. package/dist/reindex.d.ts +3 -3
  352. package/dist/reindex.js +31 -31
  353. package/dist/runtime.d.ts +24 -4
  354. package/dist/runtime.js +3 -3
  355. package/dist/rust-semantic-session-server.js +1 -1
  356. package/dist/rust-semantic-session-worker.js +1 -1
  357. package/dist/rust-semantic-worker.js +1 -1
  358. package/dist/{scip-cli-B7N3haxa.d.ts → scip-cli-BRFKkHQn.d.ts} +1 -1
  359. package/dist/sentinel-ensure-command-KYYULCFU.js +2 -0
  360. package/dist/sentinel-ensure-command-RIZA3RY7.js +3 -0
  361. package/dist/sentinel-hook.js +39 -0
  362. package/dist/sentinel-worker.js +16 -0
  363. package/dist/typescript-mailbox-worker.js +1 -1
  364. package/dist/watch-server.js +6 -6
  365. package/docs/COMMAND_REFERENCE.md +5 -3
  366. package/docs/schemas/project-config.schema.json +159 -0
  367. package/package.json +9 -5
  368. package/skills/codebaseiq/SKILL.md +1 -1
  369. package/skills/concrete-plan/SKILL.md +1 -1
  370. package/ui/view/api.js +450 -0
  371. package/ui/view/app.js +394 -0
  372. package/ui/view/builder.js +323 -0
  373. package/ui/view/file-panel.js +170 -0
  374. package/ui/view/focus.js +379 -0
  375. package/ui/view/index.html +54 -0
  376. package/ui/view/map.js +424 -0
  377. package/ui/view/styles.css +1125 -0
  378. package/dist/chunk-2X7V4HS4.js +0 -88
  379. package/dist/chunk-3IER7Q6H.js +0 -12
  380. package/dist/chunk-3JSXXYTZ.js +0 -345
  381. package/dist/chunk-476NR5B7.js +0 -2
  382. package/dist/chunk-5VKBFZZU.js +0 -3
  383. package/dist/chunk-ADTBPVUZ.js +0 -21
  384. package/dist/chunk-BFFZDZQV.js +0 -2
  385. package/dist/chunk-BMYOV5GP.js +0 -77
  386. package/dist/chunk-C74PPYLA.js +0 -3
  387. package/dist/chunk-CWONGW6P.js +0 -3
  388. package/dist/chunk-DDZ7VHWV.js +0 -20
  389. package/dist/chunk-DR2LURYU.js +0 -3
  390. package/dist/chunk-ECQBG7PW.js +0 -564
  391. package/dist/chunk-FM5BPL4V.js +0 -60
  392. package/dist/chunk-G6XFR4ZL.js +0 -4
  393. package/dist/chunk-GTIYTDRE.js +0 -562
  394. package/dist/chunk-HOA5YGOH.js +0 -3
  395. package/dist/chunk-KUW32IRO.js +0 -2
  396. package/dist/chunk-LTA3BRZX.js +0 -2
  397. package/dist/chunk-NAUD7LCA.js +0 -2
  398. package/dist/chunk-OGTFJ3XD.js +0 -2
  399. package/dist/chunk-Q5ELPRKQ.js +0 -2
  400. package/dist/chunk-QCN62RTF.js +0 -3
  401. package/dist/chunk-QW7EP6WI.js +0 -21
  402. package/dist/chunk-RU65DDUP.js +0 -215
  403. package/dist/chunk-SELM5MER.js +0 -2
  404. package/dist/chunk-SNNWPCN7.js +0 -4
  405. package/dist/chunk-TFZB6XTM.js +0 -239
  406. package/dist/chunk-UXM43C7T.js +0 -3
  407. package/dist/chunk-VFY6Y2H6.js +0 -61
  408. package/dist/chunk-WE5RZHZ7.js +0 -5
  409. package/dist/chunk-Z54RD7VL.js +0 -3
  410. package/dist/cli-context-3SNLDYBM.js +0 -3
  411. package/dist/cli-context-T3B7W6GG.js +0 -2
  412. package/dist/cli-program-YNOXO72B.js +0 -7
  413. package/dist/command-descriptors-6AOUKWW7.js +0 -346
  414. package/dist/command-descriptors-ZFKJSRUP.js +0 -344
  415. package/dist/direct-navigation-DP4LVMRX.js +0 -3
  416. package/dist/direct-navigation-FLUS3BT6.js +0 -2
  417. package/dist/invocation-command-descriptors-QT2JMY5J.js +0 -3
  418. package/dist/invocation-command-descriptors-YN4QJEAX.js +0 -2
  419. package/dist/output-continuation-command-2V2SL4TD.js +0 -2
  420. package/dist/output-continuation-command-65J5IP3O.js +0 -3
  421. package/dist/project-reindex-5JOKXAXT.js +0 -2
  422. package/dist/project-reindex-UQBIKO4M.js +0 -3
package/ui/view/map.js ADDED
@@ -0,0 +1,424 @@
1
+ import cytoscape from '/vendor/cytoscape.mjs';
2
+ import { el, plural } from '/assets/api.js';
3
+
4
+ const LABEL_LIMIT = 30;
5
+ const SAMPLE_LIMIT = 5;
6
+ const LARGE_GRAPH = 150;
7
+ const FILE_FONT = 12;
8
+ const DIRECTORY_FONT = 13;
9
+ const MAX_FIT_ZOOM = 1.4;
10
+
11
+ function token(name) {
12
+ return getComputedStyle(document.documentElement).getPropertyValue(name).trim();
13
+ }
14
+
15
+ function palette() {
16
+ return {
17
+ font: token('--font-ui'),
18
+ styleFont: token('--font-ui').replaceAll("'", '"'),
19
+ text: token('--map-text'),
20
+ muted: token('--map-muted'),
21
+ dirFill: token('--map-dir-fill'),
22
+ dirBorder: token('--map-dir-border'),
23
+ fileFill: token('--map-file-fill'),
24
+ fileBorder: token('--map-file-border'),
25
+ externalFill: token('--map-external-fill'),
26
+ externalBorder: token('--map-external-border'),
27
+ edge: token('--map-edge'),
28
+ cycle: token('--map-cycle'),
29
+ accent: token('--map-accent'),
30
+ };
31
+ }
32
+
33
+ function buildStyle(colors) {
34
+ return [
35
+ {
36
+ selector: 'node',
37
+ style: {
38
+ label: 'data(label)',
39
+ color: colors.text,
40
+ 'font-family': colors.styleFont,
41
+ 'font-size': FILE_FONT,
42
+ 'text-valign': 'center',
43
+ 'text-halign': 'center',
44
+ 'text-wrap': 'wrap',
45
+ shape: 'round-rectangle',
46
+ width: 'data(boxWidth)',
47
+ height: 'data(boxHeight)',
48
+ 'background-color': colors.fileFill,
49
+ 'border-width': 1,
50
+ 'border-color': colors.fileBorder,
51
+ },
52
+ },
53
+ {
54
+ selector: 'node.directory',
55
+ style: {
56
+ 'font-size': DIRECTORY_FONT,
57
+ 'font-weight': 600,
58
+ 'background-color': colors.dirFill,
59
+ 'border-width': 2,
60
+ 'border-color': colors.dirBorder,
61
+ },
62
+ },
63
+ {
64
+ selector: 'node.external',
65
+ style: {
66
+ color: colors.muted,
67
+ 'background-color': colors.externalFill,
68
+ 'border-color': colors.externalBorder,
69
+ 'border-style': 'dashed',
70
+ },
71
+ },
72
+ {
73
+ selector: 'node.current, node:selected, node.hover',
74
+ style: { 'border-color': colors.accent, 'border-width': 3 },
75
+ },
76
+ {
77
+ selector: 'edge',
78
+ style: {
79
+ width: 'data(width)',
80
+ 'curve-style': 'bezier',
81
+ 'line-color': colors.edge,
82
+ 'target-arrow-color': colors.edge,
83
+ 'target-arrow-shape': 'triangle',
84
+ 'arrow-scale': 1,
85
+ opacity: 0.75,
86
+ },
87
+ },
88
+ {
89
+ selector: 'edge.cycle',
90
+ style: { 'line-color': colors.cycle, 'target-arrow-color': colors.cycle, opacity: 0.95 },
91
+ },
92
+ { selector: 'edge.hover', style: { opacity: 1, 'z-index': 10 } },
93
+ ];
94
+ }
95
+
96
+ function shorten(name) {
97
+ return name.length > LABEL_LIMIT ? `${name.slice(0, LABEL_LIMIT - 1)}…` : name;
98
+ }
99
+
100
+ const measureContext = document.createElement('canvas').getContext('2d');
101
+
102
+ /** Size a node box around its label; cytoscape's own label sizing is deprecated. */
103
+ function boxFor(node, label, font) {
104
+ const directory = node.kind === 'directory';
105
+ const size = directory ? DIRECTORY_FONT : FILE_FONT;
106
+ measureContext.font = `${directory ? 600 : 400} ${size}px ${font}`;
107
+ const lines = label.split('\n');
108
+ const textWidth = Math.max(...lines.map((line) => measureContext.measureText(line).width));
109
+ return {
110
+ boxWidth: Math.ceil(textWidth) + (directory ? 30 : 18),
111
+ boxHeight: Math.ceil(lines.length * size * 1.3) + (directory ? 20 : 12),
112
+ };
113
+ }
114
+
115
+ function nodeLabel(node) {
116
+ if (node.kind === 'external')
117
+ return node.name.length > LABEL_LIMIT ? `…${node.name.slice(1 - LABEL_LIMIT)}` : node.name;
118
+ if (node.kind === 'directory') {
119
+ const files = node.fileCount === null ? '' : `\n${plural(node.fileCount, 'file')}`;
120
+ return `${shorten(node.name)}/${files}`;
121
+ }
122
+ return shorten(node.name);
123
+ }
124
+
125
+ /** Seed positions on rings so the force layout starts from the same state every time. */
126
+ function seedPositions(nodes) {
127
+ const inner = nodes.filter((node) => node.kind !== 'external').sort((a, b) => a.id.localeCompare(b.id));
128
+ const outer = nodes.filter((node) => node.kind === 'external').sort((a, b) => a.id.localeCompare(b.id));
129
+ const positions = new Map();
130
+ const place = (ring, radius) => {
131
+ ring.forEach((node, index) => {
132
+ const angle = (2 * Math.PI * index) / Math.max(ring.length, 1);
133
+ positions.set(node.id, { x: Math.cos(angle) * radius, y: Math.sin(angle) * radius });
134
+ });
135
+ };
136
+ place(inner, 60 + inner.length * 22);
137
+ place(outer, 140 + inner.length * 22 + outer.length * 14);
138
+ return positions;
139
+ }
140
+
141
+ function elementsFor(scope, outgoing, incoming, font) {
142
+ const positions = seedPositions(scope.nodes);
143
+ const nodes = scope.nodes.map((node) => {
144
+ const label = nodeLabel(node);
145
+ return {
146
+ group: 'nodes',
147
+ classes: node.kind,
148
+ position: positions.get(node.id),
149
+ data: {
150
+ id: node.id,
151
+ kind: node.kind,
152
+ path: node.path,
153
+ isFile: node.isFile,
154
+ internalEdges: node.internalEdges,
155
+ cycle: node.cycle,
156
+ name: node.name,
157
+ label,
158
+ ...boxFor(node, label, font),
159
+ fileCount: node.fileCount,
160
+ outgoing: outgoing.get(node.id) ?? 0,
161
+ incoming: incoming.get(node.id) ?? 0,
162
+ },
163
+ };
164
+ });
165
+ const edges = scope.edges.map((edge) => ({
166
+ group: 'edges',
167
+ classes: edge.cycle ? 'cycle' : '',
168
+ data: {
169
+ id: edge.id,
170
+ source: edge.source,
171
+ target: edge.target,
172
+ count: edge.count,
173
+ cycle: edge.cycle,
174
+ samples: edge.samples,
175
+ width: Math.min(1.2 + Math.log2(edge.count + 1) * 1.3, 9),
176
+ },
177
+ }));
178
+ return [...nodes, ...edges];
179
+ }
180
+
181
+ function totals(edges) {
182
+ const outgoing = new Map();
183
+ const incoming = new Map();
184
+ for (const edge of edges) {
185
+ outgoing.set(edge.source, (outgoing.get(edge.source) ?? 0) + edge.count);
186
+ incoming.set(edge.target, (incoming.get(edge.target) ?? 0) + edge.count);
187
+ }
188
+ return { outgoing, incoming };
189
+ }
190
+
191
+ /** Move external nodes onto an ellipse just outside the box that encloses everything else. */
192
+ function pushExternalsOutward(cy) {
193
+ const externals = cy.nodes('.external');
194
+ const internals = cy.nodes().not('.external');
195
+ if (externals.empty() || internals.empty()) return;
196
+ const box = internals.boundingBox();
197
+ const centerX = (box.x1 + box.x2) / 2;
198
+ const centerY = (box.y1 + box.y2) / 2;
199
+ const radiusX = box.w / 2 + 80;
200
+ const radiusY = box.h / 2 + 60;
201
+ externals.forEach((node, index) => {
202
+ const position = node.position();
203
+ let dx = position.x - centerX;
204
+ let dy = position.y - centerY;
205
+ if (Math.hypot(dx, dy) < 1) {
206
+ const angle = (2 * Math.PI * index) / externals.length;
207
+ dx = Math.cos(angle);
208
+ dy = Math.sin(angle);
209
+ }
210
+ const scale = 1 / Math.hypot(dx / radiusX, dy / radiusY);
211
+ node.position({ x: centerX + dx * scale, y: centerY + dy * scale });
212
+ });
213
+ }
214
+
215
+ export function createMap(container, handlers) {
216
+ const canvas = el('div', { class: 'map-canvas', role: 'img' });
217
+ const tooltip = el('div', { class: 'map-tooltip', role: 'tooltip', hidden: true });
218
+ const message = el('div', { class: 'map-message', hidden: true });
219
+ const controls = el('div', { class: 'map-controls', role: 'group', 'aria-label': 'Map controls' });
220
+ container.replaceChildren(canvas, tooltip, message, controls);
221
+
222
+ const colorScheme = window.matchMedia('(prefers-color-scheme: dark)');
223
+ let cy = null;
224
+ let unit = 'references';
225
+
226
+ const hideTooltip = () => {
227
+ tooltip.hidden = true;
228
+ };
229
+
230
+ const restyle = () => {
231
+ if (cy) cy.style(buildStyle(palette()));
232
+ };
233
+ colorScheme.addEventListener('change', restyle);
234
+
235
+ function fitView() {
236
+ cy.fit(undefined, 30);
237
+ if (cy.zoom() > MAX_FIT_ZOOM) {
238
+ cy.zoom(MAX_FIT_ZOOM);
239
+ cy.center();
240
+ }
241
+ }
242
+
243
+ let fittedWidth = 0;
244
+ let fittedHeight = 0;
245
+ const rememberSize = () => {
246
+ fittedWidth = canvas.clientWidth;
247
+ fittedHeight = canvas.clientHeight;
248
+ };
249
+ // A pane that changes size (the focus view widens the detail pane) gets the whole graph back in view.
250
+ const resizeObserver = new ResizeObserver(() => {
251
+ if (!cy) return;
252
+ cy.resize();
253
+ if (Math.abs(canvas.clientWidth - fittedWidth) > 8 || Math.abs(canvas.clientHeight - fittedHeight) > 8) {
254
+ fitView();
255
+ rememberSize();
256
+ }
257
+ });
258
+ resizeObserver.observe(canvas);
259
+
260
+ const addControl = (label, glyph, action) => {
261
+ controls.append(
262
+ el(
263
+ 'button',
264
+ { type: 'button', class: 'icon-button', 'aria-label': label, title: label, on: { click: action } },
265
+ glyph,
266
+ ),
267
+ );
268
+ };
269
+ addControl('Zoom in', '+', () => cy?.zoom({ level: cy.zoom() * 1.3, renderedPosition: center() }));
270
+ addControl('Zoom out', '−', () => cy?.zoom({ level: cy.zoom() / 1.3, renderedPosition: center() }));
271
+ addControl('Fit map to view', '⤢', () => cy?.fit(undefined, 30));
272
+
273
+ function center() {
274
+ return { x: canvas.clientWidth / 2, y: canvas.clientHeight / 2 };
275
+ }
276
+
277
+ function showTooltip(content, point) {
278
+ tooltip.replaceChildren(...content);
279
+ tooltip.hidden = false;
280
+ const left = Math.min(point.x + 14, Math.max(canvas.clientWidth - tooltip.offsetWidth - 8, 8));
281
+ const top = Math.min(point.y + 14, Math.max(canvas.clientHeight - tooltip.offsetHeight - 8, 8));
282
+ tooltip.style.left = `${Math.max(left, 8)}px`;
283
+ tooltip.style.top = `${Math.max(top, 8)}px`;
284
+ }
285
+
286
+ function nodeTip(data) {
287
+ const lines = [el('strong', null, data.path || data.name), el('div', { class: 'muted' }, data.kind)];
288
+ if (data.kind === 'directory' && data.fileCount !== null) {
289
+ lines.push(el('div', null, plural(data.fileCount, 'file')));
290
+ }
291
+ lines.push(el('div', null, `${data.outgoing} outgoing ${unit}, ${data.incoming} incoming`));
292
+ if (data.internalEdges > 0) lines.push(el('div', null, `${plural(data.internalEdges, 'edge')} inside`));
293
+ if (data.cycle !== null) lines.push(el('div', { class: 'cycle-flag' }, `In dependency cycle ${data.cycle}`));
294
+ return lines;
295
+ }
296
+
297
+ function edgeTip(edge) {
298
+ const lines = [
299
+ el('strong', null, `${edge.source().data('name')} → ${edge.target().data('name')}`),
300
+ el('div', null, `${plural(edge.data('count'), unit === 'imports' ? 'import' : 'reference')}`),
301
+ ];
302
+ if (edge.data('cycle')) lines.push(el('div', { class: 'cycle-flag' }, 'Part of a dependency cycle'));
303
+ const samples = edge.data('samples');
304
+ if (samples.length > 0) {
305
+ lines.push(
306
+ el('div', { class: 'muted' }, 'Sample file pairs'),
307
+ el(
308
+ 'ul',
309
+ { class: 'tip-list' },
310
+ samples.slice(0, SAMPLE_LIMIT).map((sample) => el('li', null, `${sample.from} → ${sample.to}`)),
311
+ samples.length > SAMPLE_LIMIT
312
+ ? el('li', { class: 'muted' }, `and ${samples.length - SAMPLE_LIMIT} more`)
313
+ : null,
314
+ ),
315
+ );
316
+ }
317
+ return lines;
318
+ }
319
+
320
+ function wire(instance) {
321
+ instance.on('tap', 'node.file', (event) => handlers.onFile(event.target.data('path')));
322
+ instance.on('tap', 'node.external', (event) => handlers.onExternal(event.target.data()));
323
+ instance.on('dbltap', 'node.directory', (event) => handlers.onDrill(event.target.data('path')));
324
+ instance.on('mouseover', 'node, edge', (event) => {
325
+ const target = event.target;
326
+ target.addClass('hover');
327
+ if (target.isNode()) target.connectedEdges().addClass('hover');
328
+ showTooltip(target.isNode() ? nodeTip(target.data()) : edgeTip(target), event.renderedPosition);
329
+ });
330
+ instance.on('mouseout', 'node, edge', (event) => {
331
+ event.target.removeClass('hover');
332
+ if (event.target.isNode()) event.target.connectedEdges().removeClass('hover');
333
+ hideTooltip();
334
+ });
335
+ instance.on('pan zoom drag', hideTooltip);
336
+ }
337
+
338
+ function destroyGraph() {
339
+ hideTooltip();
340
+ if (cy) {
341
+ cy.destroy();
342
+ cy = null;
343
+ }
344
+ }
345
+
346
+ function describe(scope) {
347
+ const counts = { directory: 0, file: 0, external: 0 };
348
+ for (const node of scope.nodes) counts[node.kind] += 1;
349
+ const cycles = scope.edges.filter((edge) => edge.cycle).length;
350
+ return (
351
+ `Dependency map of ${scope.path || 'the project root'}: ${plural(counts.directory, 'directory')}, ` +
352
+ `${plural(counts.file, 'file')}, ${plural(counts.external, 'external node')}, ` +
353
+ `${plural(scope.edges.length, 'dependency edge')}, ${plural(cycles, 'cycle edge')}. ` +
354
+ 'The details panel and breadcrumbs offer the same navigation as lists.'
355
+ );
356
+ }
357
+
358
+ function showNotice(content) {
359
+ destroyGraph();
360
+ canvas.removeAttribute('aria-label');
361
+ message.replaceChildren(content);
362
+ message.hidden = false;
363
+ }
364
+
365
+ return {
366
+ render(scope) {
367
+ destroyGraph();
368
+ message.hidden = true;
369
+ unit = scope.basis;
370
+ canvas.setAttribute('aria-label', describe(scope));
371
+ if (scope.nodes.length === 0) {
372
+ showNotice(el('p', null, 'No files or directories to draw in this scope.'));
373
+ return;
374
+ }
375
+ const { outgoing, incoming } = totals(scope.edges);
376
+ const colors = palette();
377
+ cy = cytoscape({
378
+ container: canvas,
379
+ elements: elementsFor(scope, outgoing, incoming, colors.font),
380
+ style: buildStyle(colors),
381
+ minZoom: 0.15,
382
+ maxZoom: 3,
383
+ boxSelectionEnabled: false,
384
+ autounselectify: false,
385
+ });
386
+ cy.layout({
387
+ name: 'cose',
388
+ animate: false,
389
+ fit: true,
390
+ randomize: false,
391
+ padding: 30,
392
+ nodeDimensionsIncludeLabels: true,
393
+ idealEdgeLength: 70,
394
+ nodeRepulsion: 20000,
395
+ nodeOverlap: 20,
396
+ gravity: 1.2,
397
+ componentSpacing: 40,
398
+ numIter: scope.nodes.length > LARGE_GRAPH ? 300 : 1000,
399
+ }).run();
400
+ pushExternalsOutward(cy);
401
+ fitView();
402
+ rememberSize();
403
+ wire(cy);
404
+ },
405
+
406
+ select(path) {
407
+ if (!cy) return;
408
+ cy.nodes().removeClass('current');
409
+ if (path)
410
+ cy.nodes()
411
+ .filter((node) => node.data('path') === path && node.data('kind') !== 'external')
412
+ .addClass('current');
413
+ },
414
+
415
+ showNotice,
416
+
417
+ destroy() {
418
+ destroyGraph();
419
+ resizeObserver.disconnect();
420
+ colorScheme.removeEventListener('change', restyle);
421
+ container.replaceChildren();
422
+ },
423
+ };
424
+ }