scip-query 0.16.1 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +59 -9
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/{chunk-WN6XEYVX.js → chunk-27YDE22N.js} +2 -2
  5. package/dist/{chunk-VLSI5MYU.js → chunk-2DBY4MO7.js} +2 -2
  6. package/dist/{chunk-A46JTKTM.js → chunk-2DUWNJKE.js} +2 -2
  7. package/dist/{chunk-YSUD2S7T.js → chunk-2HCWAL42.js} +2 -2
  8. package/dist/{chunk-S5MTSES5.js → chunk-2TM23JYJ.js} +2 -2
  9. package/dist/{chunk-6EVORGCB.js → chunk-35DURZXI.js} +2 -2
  10. package/dist/{chunk-3LAKH6BV.js → chunk-3CJXFMR5.js} +2 -2
  11. package/dist/{chunk-UO4IADXJ.js → chunk-3YEBIYXL.js} +2 -2
  12. package/dist/{chunk-3YAZH3JU.js → chunk-45QWQSWS.js} +2 -2
  13. package/dist/{chunk-5XDNFOAH.js → chunk-4FLF7BHJ.js} +2 -2
  14. package/dist/{chunk-JRFCWCOD.js → chunk-4L4X66GE.js} +2 -2
  15. package/dist/{chunk-NLRWGGPY.js → chunk-5CJ6AQN7.js} +2 -2
  16. package/dist/{chunk-CM4EZLW4.js → chunk-5GAUXLOE.js} +2 -2
  17. package/dist/{chunk-QB7NRST4.js → chunk-5N5ZC566.js} +2 -2
  18. package/dist/{chunk-YD37KSEK.js → chunk-5QSMW5IO.js} +2 -2
  19. package/dist/{chunk-7II7NFRV.js → chunk-623AZLTE.js} +2 -2
  20. package/dist/{chunk-VYQY75NA.js → chunk-6TJERPN3.js} +2 -2
  21. package/dist/{chunk-IRIM3SUR.js → chunk-75H6GOND.js} +2 -2
  22. package/dist/{chunk-Q65QYKU7.js → chunk-7H37Z4UO.js} +2 -2
  23. package/dist/{chunk-OO6S4ECV.js → chunk-7XP7ZRSI.js} +2 -2
  24. package/dist/{chunk-5TVNLPUM.js → chunk-7Z5UT44B.js} +2 -2
  25. package/dist/{chunk-RQWNF2RM.js → chunk-BBTVIIOI.js} +2 -2
  26. package/dist/{chunk-MZB3DTHW.js → chunk-BGUYAA3Q.js} +2 -2
  27. package/dist/{chunk-3I34FZ6R.js → chunk-BTYDBDX5.js} +2 -2
  28. package/dist/{chunk-2EU6WVR3.js → chunk-BW4VDICR.js} +2 -2
  29. package/dist/{chunk-DKK2H4D7.js → chunk-CKRVVBM6.js} +2 -2
  30. package/dist/{chunk-ZHGUZKJL.js → chunk-CMLHZWRS.js} +2 -2
  31. package/dist/{chunk-OYGKBDAD.js → chunk-CSMPXDYE.js} +2 -2
  32. package/dist/{chunk-GWWYLYD3.js → chunk-DQYG5JHT.js} +2 -2
  33. package/dist/{chunk-6DNE65QS.js → chunk-E5HPTSRD.js} +2 -2
  34. package/dist/chunk-E7BTIEAY.js +2 -0
  35. package/dist/{chunk-RPMT6MTX.js → chunk-EUMETOTD.js} +2 -2
  36. package/dist/{chunk-2Y7YX54K.js → chunk-FY6RCFDH.js} +2 -2
  37. package/dist/{chunk-YFEJIYWH.js → chunk-FZXN37RN.js} +2 -2
  38. package/dist/{chunk-KI4WPR7Q.js → chunk-G4IUQW27.js} +2 -2
  39. package/dist/{chunk-U6BJVXWQ.js → chunk-GRHA5NGF.js} +2 -2
  40. package/dist/{chunk-XBPAJASV.js → chunk-H4T2AST4.js} +2 -2
  41. package/dist/{chunk-SOCS3467.js → chunk-HGO3D2JD.js} +2 -2
  42. package/dist/{chunk-LT6AHYVY.js → chunk-HJYHSTCP.js} +2 -2
  43. package/dist/{chunk-XC6PUFNN.js → chunk-HYRSGWFX.js} +2 -2
  44. package/dist/{chunk-K32ZOW3P.js → chunk-HZVG4KID.js} +2 -2
  45. package/dist/{chunk-RLB7FZKR.js → chunk-IHD2CHMX.js} +2 -2
  46. package/dist/{chunk-VSQRU3AP.js → chunk-IKAJI4SI.js} +2 -2
  47. package/dist/{chunk-BVHP2B4D.js → chunk-IZLWLO4X.js} +2 -2
  48. package/dist/{chunk-QSNG3NHQ.js → chunk-J7WYG63U.js} +2 -2
  49. package/dist/{chunk-NLVKD45E.js → chunk-JLZUM476.js} +2 -2
  50. package/dist/{chunk-7RAS466A.js → chunk-JYBP5ZIR.js} +2 -2
  51. package/dist/{chunk-S5RZQA6V.js → chunk-K3UVTL3J.js} +2 -2
  52. package/dist/{chunk-DA34GNNO.js → chunk-KWMRY4RN.js} +2 -2
  53. package/dist/{chunk-363TZ64I.js → chunk-KWQKWY6M.js} +2 -2
  54. package/dist/{chunk-PCCMMI2M.js → chunk-KZ2LZBQT.js} +2 -2
  55. package/dist/{chunk-S3IXCXW2.js → chunk-LG33DNTZ.js} +2 -2
  56. package/dist/chunk-M2TRDR25.js +84 -0
  57. package/dist/{chunk-VZCR3VQY.js → chunk-MBDBNQBW.js} +2 -2
  58. package/dist/chunk-MON5XXTG.js +7 -0
  59. package/dist/{chunk-EVCSXWER.js → chunk-O27267B6.js} +2 -2
  60. package/dist/{chunk-YCVYOV4A.js → chunk-O56VBJKB.js} +2 -2
  61. package/dist/{chunk-CS3FXTUC.js → chunk-OBPR6E5Z.js} +2 -2
  62. package/dist/{chunk-2LGPMYS2.js → chunk-OC7XDK62.js} +2 -2
  63. package/dist/{chunk-5UKDCXVC.js → chunk-OP5JXGDV.js} +2 -2
  64. package/dist/{chunk-CKIAEVGM.js → chunk-PA2MQKXD.js} +2 -2
  65. package/dist/{chunk-BFWVHD2P.js → chunk-PPAT3XUL.js} +2 -2
  66. package/dist/{chunk-G4KQ7S74.js → chunk-QEIGJJBC.js} +2 -2
  67. package/dist/{chunk-AAMZRDJT.js → chunk-QYBCGCY5.js} +2 -2
  68. package/dist/{chunk-W3ZVRLCH.js → chunk-RPPV6Y4K.js} +2 -2
  69. package/dist/{chunk-HGUNWXJX.js → chunk-RUQE7DZT.js} +2 -2
  70. package/dist/chunk-SMBIGBGN.js +67 -0
  71. package/dist/{chunk-EBSSCVR4.js → chunk-SQJ72PQW.js} +5 -5
  72. package/dist/{chunk-6GZ7LM7S.js → chunk-SSH2NPYS.js} +2 -2
  73. package/dist/{chunk-S2FZILCF.js → chunk-TAB7AWKO.js} +2 -2
  74. package/dist/{chunk-MCNWCJYL.js → chunk-TLTLJ4SW.js} +2 -2
  75. package/dist/{chunk-JXAJDINF.js → chunk-TR7C5HOC.js} +2 -2
  76. package/dist/{chunk-3OPIMH42.js → chunk-U244OVE6.js} +2 -2
  77. package/dist/chunk-U267E6YN.js +120 -0
  78. package/dist/chunk-U3JW5AYG.js +2 -0
  79. package/dist/{chunk-JQ2PCFZW.js → chunk-UKUISUS6.js} +2 -2
  80. package/dist/{chunk-2HFXPIBT.js → chunk-UWR52GNZ.js} +2 -2
  81. package/dist/{chunk-CVBS2FD4.js → chunk-V7MX6YUF.js} +2 -2
  82. package/dist/{chunk-BVUA3GZC.js → chunk-VCRMI56V.js} +2 -2
  83. package/dist/{chunk-753JWTUH.js → chunk-VDHEX6YO.js} +2 -2
  84. package/dist/{chunk-AMPN2VMF.js → chunk-W2I4QAW7.js} +2 -2
  85. package/dist/{chunk-P5QZILZ4.js → chunk-W3HSUCRG.js} +2 -2
  86. package/dist/{chunk-62Y3PC27.js → chunk-WENI5ZDR.js} +2 -2
  87. package/dist/{chunk-RYFIRFYJ.js → chunk-WGDIA2TU.js} +2 -2
  88. package/dist/{chunk-L27UIF3E.js → chunk-WT34AUWL.js} +2 -2
  89. package/dist/{chunk-HLRWOFXC.js → chunk-X566NT42.js} +2 -2
  90. package/dist/{chunk-ZEKBAMCN.js → chunk-XKWEMFHP.js} +2 -2
  91. package/dist/{chunk-SEEJPIWG.js → chunk-Y4BBVPRK.js} +2 -2
  92. package/dist/{chunk-KP2DJY7D.js → chunk-Y5BOEWAE.js} +2 -2
  93. package/dist/cli.js +321 -302
  94. package/dist/{config-types-SVkUIufk.d.ts → config-types-70s7NxKB.d.ts} +2 -0
  95. package/dist/{db-CS0TuVH6.d.ts → db-BBmJ0v3b.d.ts} +1 -1
  96. package/dist/{health-Btal3mQi.d.ts → health-CWpFL_6z.d.ts} +1 -1
  97. package/dist/index.d.ts +3 -3
  98. package/dist/index.js +1 -1
  99. package/dist/queries/affected.d.ts +2 -2
  100. package/dist/queries/affected.js +1 -1
  101. package/dist/queries/bottlenecks.d.ts +2 -2
  102. package/dist/queries/bottlenecks.js +1 -1
  103. package/dist/queries/by-kind.d.ts +2 -2
  104. package/dist/queries/by-kind.js +1 -1
  105. package/dist/queries/call-graph.d.ts +2 -2
  106. package/dist/queries/call-graph.js +1 -1
  107. package/dist/queries/change-surface.d.ts +2 -2
  108. package/dist/queries/change-surface.js +1 -1
  109. package/dist/queries/cleanup-plan.d.ts +2 -2
  110. package/dist/queries/cleanup-plan.js +1 -1
  111. package/dist/queries/co-change.d.ts +2 -2
  112. package/dist/queries/co-change.js +1 -1
  113. package/dist/queries/code.d.ts +2 -2
  114. package/dist/queries/code.js +1 -1
  115. package/dist/queries/complexity-hotspots.d.ts +2 -2
  116. package/dist/queries/complexity-hotspots.js +1 -1
  117. package/dist/queries/complexity.d.ts +2 -2
  118. package/dist/queries/complexity.js +1 -1
  119. package/dist/queries/convergence.d.ts +2 -2
  120. package/dist/queries/convergence.js +1 -1
  121. package/dist/queries/coupling.d.ts +2 -2
  122. package/dist/queries/coupling.js +1 -1
  123. package/dist/queries/cycles.d.ts +2 -2
  124. package/dist/queries/cycles.js +1 -1
  125. package/dist/queries/dataflow.d.ts +2 -2
  126. package/dist/queries/dataflow.js +1 -1
  127. package/dist/queries/dead.d.ts +2 -2
  128. package/dist/queries/dead.js +1 -1
  129. package/dist/queries/decorative-checkers.d.ts +2 -2
  130. package/dist/queries/decorative-checkers.js +1 -1
  131. package/dist/queries/deep-chains.d.ts +2 -2
  132. package/dist/queries/deep-chains.js +1 -1
  133. package/dist/queries/deps.d.ts +2 -2
  134. package/dist/queries/deps.js +1 -1
  135. package/dist/queries/diff-gate.d.ts +2 -2
  136. package/dist/queries/diff-gate.js +1 -1
  137. package/dist/queries/diff-impact.d.ts +2 -2
  138. package/dist/queries/diff-impact.js +1 -1
  139. package/dist/queries/doc-drift.d.ts +2 -2
  140. package/dist/queries/doc-drift.js +1 -1
  141. package/dist/queries/drift.d.ts +2 -2
  142. package/dist/queries/drift.js +1 -1
  143. package/dist/queries/duplicate-bodies.d.ts +2 -2
  144. package/dist/queries/duplicate-bodies.js +1 -1
  145. package/dist/queries/extract-candidates.d.ts +2 -2
  146. package/dist/queries/extract-candidates.js +1 -1
  147. package/dist/queries/fan.d.ts +2 -2
  148. package/dist/queries/fan.js +1 -1
  149. package/dist/queries/files.d.ts +2 -2
  150. package/dist/queries/health.d.ts +3 -3
  151. package/dist/queries/health.js +1 -1
  152. package/dist/queries/hierarchy.d.ts +2 -2
  153. package/dist/queries/hierarchy.js +1 -1
  154. package/dist/queries/hotspots.d.ts +2 -2
  155. package/dist/queries/hotspots.js +1 -1
  156. package/dist/queries/imports.d.ts +2 -2
  157. package/dist/queries/imports.js +1 -1
  158. package/dist/queries/incomplete-migration.d.ts +2 -2
  159. package/dist/queries/incomplete-migration.js +1 -1
  160. package/dist/queries/index.d.ts +3 -3
  161. package/dist/queries/index.js +1 -1
  162. package/dist/queries/isolated.d.ts +2 -2
  163. package/dist/queries/isolated.js +1 -1
  164. package/dist/queries/locality-candidates.d.ts +2 -2
  165. package/dist/queries/locality-candidates.js +1 -1
  166. package/dist/queries/members.d.ts +2 -2
  167. package/dist/queries/members.js +1 -1
  168. package/dist/queries/methods.d.ts +2 -2
  169. package/dist/queries/methods.js +1 -1
  170. package/dist/queries/not-implemented.d.ts +2 -2
  171. package/dist/queries/not-implemented.js +1 -1
  172. package/dist/queries/outline.d.ts +2 -2
  173. package/dist/queries/outline.js +1 -1
  174. package/dist/queries/passthrough-candidates.d.ts +2 -2
  175. package/dist/queries/passthrough-candidates.js +1 -1
  176. package/dist/queries/plan-context.d.ts +2 -2
  177. package/dist/queries/plan-context.js +1 -1
  178. package/dist/queries/react-component-duplicates.d.ts +2 -2
  179. package/dist/queries/react-component-duplicates.js +1 -1
  180. package/dist/queries/react-hook-candidates.d.ts +2 -2
  181. package/dist/queries/react-hook-candidates.js +1 -1
  182. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  183. package/dist/queries/react-large-component-pressure.js +1 -1
  184. package/dist/queries/recent-duplicates.d.ts +2 -2
  185. package/dist/queries/recent-duplicates.js +1 -1
  186. package/dist/queries/redundant-reexports.d.ts +2 -2
  187. package/dist/queries/redundant-reexports.js +1 -1
  188. package/dist/queries/refs.d.ts +2 -2
  189. package/dist/queries/refs.js +1 -1
  190. package/dist/queries/self-audit.d.ts +2 -2
  191. package/dist/queries/self-audit.js +1 -1
  192. package/dist/queries/similar-chains.d.ts +2 -2
  193. package/dist/queries/similar-chains.js +1 -1
  194. package/dist/queries/similar-files.d.ts +2 -2
  195. package/dist/queries/similar-files.js +1 -1
  196. package/dist/queries/similar-signatures.d.ts +2 -2
  197. package/dist/queries/similar-signatures.js +1 -1
  198. package/dist/queries/similar.d.ts +2 -2
  199. package/dist/queries/similar.js +1 -1
  200. package/dist/queries/slice.d.ts +2 -2
  201. package/dist/queries/slice.js +1 -1
  202. package/dist/queries/stale-abstractions.d.ts +2 -2
  203. package/dist/queries/stale-abstractions.js +1 -1
  204. package/dist/queries/stats.d.ts +2 -2
  205. package/dist/queries/surface.d.ts +2 -2
  206. package/dist/queries/surface.js +1 -1
  207. package/dist/queries/symbols.d.ts +2 -2
  208. package/dist/queries/symbols.js +1 -1
  209. package/dist/queries/system.d.ts +2 -2
  210. package/dist/queries/system.js +1 -1
  211. package/dist/queries/test-quality.d.ts +2 -2
  212. package/dist/queries/test-quality.js +1 -1
  213. package/dist/queries/trace.d.ts +2 -2
  214. package/dist/queries/trace.js +1 -1
  215. package/dist/queries/twin-ab.d.ts +2 -2
  216. package/dist/queries/twin-ab.js +1 -1
  217. package/dist/queries/twin-drift.d.ts +2 -2
  218. package/dist/queries/twin-drift.js +1 -1
  219. package/dist/queries/unused-imports.d.ts +2 -2
  220. package/dist/queries/unused-imports.js +1 -1
  221. package/dist/queries/unused-params.d.ts +2 -2
  222. package/dist/queries/unused-params.js +1 -1
  223. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  224. package/dist/queries/vue-component-duplicates.js +1 -1
  225. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  226. package/dist/queries/vue-composable-candidates.js +1 -1
  227. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  228. package/dist/queries/vue-large-view-pressure.js +1 -1
  229. package/dist/queries/wrapper-candidates.d.ts +2 -2
  230. package/dist/queries/wrapper-candidates.js +1 -1
  231. package/dist/reindex-worker.js +26 -26
  232. package/dist/reindex.d.ts +3 -3
  233. package/dist/reindex.js +38 -34
  234. package/dist/runtime.d.ts +5 -3
  235. package/dist/runtime.js +1 -2
  236. package/dist/{scip-cli-BKL-26TZ.d.ts → scip-cli-CoMzb7Zu.d.ts} +1 -1
  237. package/dist/watch-server.js +4 -4
  238. package/docs/COMMAND_REFERENCE.md +1 -1
  239. package/package.json +2 -1
  240. package/skills/_shared/SKILL.md +2 -2
  241. package/skills/scip-calibrate/SKILL.md +5 -4
  242. package/skills/scip-tla-model-system/SKILL.md +10 -8
  243. package/skills/scip-verify/SKILL.md +3 -2
  244. package/dist/chunk-5P26M63Y.js +0 -2
  245. package/dist/chunk-FFIYGYQR.js +0 -67
  246. package/dist/chunk-QVZSWLLZ.js +0 -2
  247. package/dist/chunk-WFRZGMWJ.js +0 -71
  248. package/dist/chunk-XAEU4ROB.js +0 -101
  249. package/dist/chunk-Y42DMR6F.js +0 -6
@@ -0,0 +1,67 @@
1
+ import{execFileSync as F}from"child_process";import{createHash as m}from"crypto";import{lstatSync as k,readdirSync as V,readFileSync as w,readlinkSync as I,realpathSync as b}from"fs";import{isAbsolute as A,join as y,relative as _,sep as L}from"path";function se(e,t){let r=e.split("/").at(-1)??e;if(j.has(r)||r===".scipquery.json"||/^tsconfig(?:\..+)?\.json$/.test(r))return"config";if(/\.d\.(?:ts|mts|cts)$/.test(e.toLowerCase()))return"ambient";let s=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return t.some(n=>(P[n]??[]).includes(s))?"source":"other"}function O(e){return[...new Set((e??[]).map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function E(e){return(T(e)??W(e)).filter(t=>t&&!S(t)).sort()}function G(e,t={}){let r=E(e).filter(n=>!t.language||M(n,t.language,t.markerFiles)).filter(n=>!t.includePath||t.includePath(n)),s=b(e);return r.map(n=>{let i=y(e,n);try{if(k(i).isSymbolicLink()){let o=b(i),c=_(s,o);if(c===".."||c.startsWith(`..${L}`)||A(c))throw new Error("external symlink");let l=I(i);return{path:n,size:Buffer.byteLength(l),hash:m("sha256").update("symlink\0").update(l).digest("hex")}}let a=w(i);return{path:n,size:a.byteLength,hash:m("sha256").update(a).digest("hex")}}catch{return{path:n,size:-1,hash:"unreadable"}}})}function ae(e,t,r){return{version:2,languages:[...t].sort(),pnpmWorkspaces:r.typescriptProjectMode!=="workspace"&&r.pnpmWorkspaces===!0,typescriptProjectMode:r.typescriptProjectMode??"single",typescriptProjects:O(r.typescriptProjects),clojureConfigPath:$(r.clojureConfigPath),files:G(e)}}function $(e){return e?.trim()||void 0}function M(e,t,r){let s=e.split("/").at(-1)??e;if(r?.includes(e)||r?.includes(s)||j.has(s))return!0;let n=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return(P[t]??[]).includes(n)}function T(e){try{return F("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:50*1024*1024,stdio:["ignore","pipe","ignore"]}).split(`
2
+ `).filter(Boolean)}catch{return null}}function W(e){let t=[],r=[""];for(;r.length>0;){let s=r.pop(),n=s?y(e,s):e,i;try{i=V(n,{withFileTypes:!0})}catch{continue}for(let a of i){let o=s?`${s}/${a.name}`:a.name;if(a.isDirectory()){S(o)||r.push(o);continue}t.push(o)}}return t}function S(e){let t=e.split("/");return e==="meta.json"||t.some(r=>K.has(r))||e.endsWith(".db")||e.endsWith(".db-wal")||e.endsWith(".db-shm")||e.endsWith(".scip")}var K=new Set([".git","node_modules",".scipquery-cache",".scipquery-generations",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]),j=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","deps.edn","project.clj","bb.edn","shadow-cljs.edn"]),P={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"],clojure:[".clj",".cljs",".cljc"]};import z from"ignore";import{readFileSync as N,existsSync as C,readdirSync as R}from"fs";import{dirname as g,isAbsolute as x,join as u,relative as B,resolve as q}from"path";function ue(e){let t=z();return U(e,t)||t.add(X),{isIgnored:s=>f(t,e,s),filter:s=>s.filter(n=>!f(t,e,n))}}function U(e,t){let r=new Set,s=(a,o)=>{if(!(r.has(a)||!C(a)))try{let c=N(a,"utf-8");t.add(o?H(c,o):c),r.add(a)}catch{}},n=g(e),i=0;for(;n!==g(n)&&i<5&&(s(u(n,".gitignore"),""),!C(u(n,".git")));)n=g(n),i++;return D(e,"",t,s),r.size>0}function D(e,t,r,s){let n=t?u(e,t):e;s(u(n,".gitignore"),t);let i;try{i=R(n,{withFileTypes:!0})}catch{return}for(let a of i){if(!a.isDirectory()||a.name===".git")continue;let o=t?`${t}/${a.name}`:a.name;f(r,e,`${o}/`)||D(e,o,r,s)}}function H(e,t){let r=t.replaceAll("\\","/").replace(/\/+$/,"");return e.split(/\r?\n/).map(s=>J(s,r)).join(`
3
+ `)}function J(e,t){let r=e.trimStart();if(!r||r.startsWith("#"))return e;let s=e.slice(0,e.length-r.length),n=r.startsWith("!"),i=n?r.slice(1):r;if(!i||i.startsWith("#"))return e;let a=i.startsWith("/"),o=a?i.slice(1):i,p=(o.endsWith("/")?o.slice(0,-1):o).includes("/")||a?`${t}/${o}`:`${t}/**/${o}`;return`${s}${n?"!":""}${p}`}var X=`
4
+ # Dependencies
5
+ node_modules/
6
+ vendor/
7
+ .bundle/
8
+
9
+ # Build output
10
+ dist/
11
+ build/
12
+ out/
13
+ target/
14
+ bin/
15
+ obj/
16
+
17
+ # Python
18
+ __pycache__/
19
+ *.pyc
20
+ *.pyo
21
+ .venv/
22
+ venv/
23
+ .env/
24
+ env/
25
+ *.egg-info/
26
+
27
+ # Rust
28
+ target/
29
+
30
+ # Java / Kotlin / Scala
31
+ *.class
32
+ .gradle/
33
+ .mvn/
34
+
35
+ # C# / .NET
36
+ bin/
37
+ obj/
38
+ packages/
39
+
40
+ # Go
41
+ vendor/
42
+
43
+ # Dart
44
+ .dart_tool/
45
+ build/
46
+
47
+ # PHP
48
+ vendor/
49
+
50
+ # IDE / OS
51
+ .idea/
52
+ .vscode/
53
+ *.swp
54
+ *.swo
55
+ .DS_Store
56
+ Thumbs.db
57
+
58
+ # Type definitions (often noise in queries)
59
+ *.d.ts
60
+ `;function f(e,t,r){let s=Y(t,r);if(!s)return!1;try{return e.ignores(s)}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:q(e,t),s=B(e,r).replaceAll("\\","/");return!s||s==="."||s.startsWith("..")?null:s}var Q=[];function d(e){e.groups.length>0&&Q.push(e)}function v(){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 he(e,t){let{cache:r,ensure:s}=v(),n={get(i,a,o){let c=s(i);if(c.has(a))return c.get(a);let l=o();return c.set(a,l),l},invalidate(i,a){r.get(i)?.delete(a)},invalidateAll(i){r.delete(i)},size(i){return r.get(i)?.size??0}};return d({name:e,groups:t.clearGroups,clearAll:i=>n.invalidateAll(i),clearFile:(i,a)=>n.invalidate(i,a)}),n}function me(e,t){let r=new WeakMap,s={get(n,i){let a=r.get(n);if(a)return a.value;let o=i();return r.set(n,{value:o}),o},invalidate(n){r.delete(n)},has(n){return r.has(n)}};return d({name:e,groups:t.clearGroups,clearAll:n=>s.invalidate(n)}),s}var Z={clearGroups:["whole-project","source-file"]};function be(e){return ee(e,Z)}function ee(e,t){let{cache:r,ensure:s}=v(),n={get(i,a,o,c){let l=s(i),p=l.get(a);if(p&&p.source===o)return p.value;let h=c();return l.set(a,{source:o,value:h}),h},invalidate(i,a){r.get(i)?.delete(a)},invalidateAll(i){r.delete(i)}};return d({name:e,groups:t.clearGroups,clearAll:i=>n.invalidateAll(i),clearFile:(i,a)=>n.invalidate(i,a)}),n}function Se(e,t={}){let r=t.scope?"AND relative_path LIKE ?":"",s=t.like?"AND relative_path LIKE ?":"",n=[...t.scope?[`%${t.scope}%`]:[],...t.like?[t.like]:[]],i=e.all(`SELECT relative_path
61
+ FROM documents
62
+ WHERE 1 = 1
63
+ ${e.pathExclusionsFor("documents")}
64
+ ${r}
65
+ ${s}
66
+ ORDER BY relative_path`,...n).map(o=>o.relative_path),a=t.extensions?i.filter(o=>t.extensions.some(c=>o.toLowerCase().endsWith(c.toLowerCase()))):i;return t.includeIgnored===!1?a.filter(o=>!e.isIgnored(o)):a}export{d as a,he as b,me as c,be as d,ee as e,Se as f,se as g,O as h,G as i,ae as j,ue as k};
67
+ //# sourceMappingURL=chunk-SMBIGBGN.js.map
@@ -1,5 +1,5 @@
1
- import{a as G}from"./chunk-P5XHIJHI.js";import{a as ye}from"./chunk-G4KQ7S74.js";import{a as be}from"./chunk-QVZSWLLZ.js";import{b as sn,e as $,f as Se,h as on,j as ie,s as B,t as he}from"./chunk-OO6S4ECV.js";import{a as Zt,f as ge,n as nn,p as rn}from"./chunk-NLVKD45E.js";import{B as en,E as tn,e as Jt,f as Yt,s as Ze}from"./chunk-MCNWCJYL.js";import{a as Y}from"./chunk-64MNV6AB.js";import{a as Ht,c as Vt,d as Kt,g as Xe,o as et,p as tt,q as W,r as Gt,s as C,u as me,v as Qt,x as Xt}from"./chunk-WFRZGMWJ.js";import{existsSync as an,readdirSync as Kr}from"fs";import{isAbsolute as Jr,join as nt,resolve as Yr}from"path";var Gr={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:t,pnpmWorkspaces:e,indexerBinary:n,projectPath:r})=>{let i=r?["index","--output",t,"--no-progress-bar",r]:["index","--infer-tsconfig","--output",t,"--no-progress-bar"];return e&&!r&&i.splice(1,0,"--pnpm-workspaces"),{binary:n,args:i}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:t,indexerBinary:e})=>({binary:e,args:["index","--infer-tsconfig","--output",t,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["pom.xml","build.gradle"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["build.sbt"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:"rust",indexerBinary:"rust-analyzer",checkCommand:"rust-analyzer --version",indexArgs:({outputPath:t})=>({binary:"rust-analyzer",args:["scip",".","--output",t]}),markerFiles:["Cargo.toml"],installMethods:[{label:"rustup",prerequisite:"rustup",binary:"rustup",args:["component","add","rust-analyzer"]}],installUrl:"https://github.com/rust-lang/rust-analyzer"},python:{language:"python",indexerBinary:"scip-python-plus",binaryAliases:["scip-python"],checkCommand:"scip-python-plus --version",indexArgs:({outputPath:t,indexerBinary:e})=>({binary:e,args:["index","--output",t,"--project-name","project"]}),markerFiles:["pyproject.toml","setup.py"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","scip-python-plus"]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},clojure:{language:"clojure",indexerBinary:"scip-clojure",projectLocalBinaries:["node_modules/.bin/scip-clojure"],checkCommand:"scip-clojure -h",indexArgs:({projectRoot:t,outputPath:e,indexerBinary:n,configPath:r})=>{let i=["-root",t,"-output",e];return r&&i.push("-config",Jr(r)?r:Yr(t,r)),{binary:n,args:i}},markerFiles:["deps.edn","project.clj","bb.edn","shadow-cljs.edn"],installMethods:[],installUrl:"https://github.com/PlunderStruck/scip-clojure"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:t})=>({binary:t,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:["Gemfile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:t})=>({binary:"scip-go",args:["--output",t]}),markerFiles:["go.mod"],installMethods:[{label:"go install",prerequisite:"go",binary:"go",args:["install","github.com/sourcegraph/scip-go@latest"]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:t})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",t]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:t})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",t]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:t,outputPath:e})=>({binary:"scip-dotnet",args:["index",cn(t,[".sln",".csproj"])??t,"--output",e,"--working-directory",t]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:t,outputPath:e})=>({binary:"scip-dotnet",args:["index",cn(t,[".sln",".vbproj"])??t,"--output",e,"--working-directory",t]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:t,outputPath:e})=>({binary:t,args:["--output",e]}),markerFiles:["pubspec.yaml"],installMethods:[{label:"dart pub",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({projectRoot:t,indexerBinary:e})=>{let n=nt(t,"vendor","bin","scip-php"),r=nt(t,"vendor","davidrjenni","scip-php","bin","scip-php");return{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",an(r)?r:an(n)?n:e]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function ln(t){return Gr[t]}function cn(t,e){let n;try{n=Kr(t)}catch{return null}for(let r of e)for(let i of n)if(i.endsWith(r))return nt(t,i);return null}import{execFileSync as it}from"child_process";import{existsSync as rt,readFileSync as Qr}from"fs";import{createRequire as Xr}from"module";import{platform as Zr}from"os";import{dirname as un,join as Re}from"path";var ei=Xr(import.meta.url);function st(t){return[t.indexerBinary,...t.binaryAliases??[]]}function pn(t){let e=st(t);return e.length===1?e[0]:e.join(" or ")}function ve(t){for(let e of st(t))if(be(e))return e;return ni(t)}function Sa(t){return ve(t)!==null||ti(t)}function ti(t){return fn(t)!==null}function ni(t){let e=fn(t);if(!e)return null;let r=JSON.parse(Qr(e,"utf8")).bin;if(!r)return null;if(typeof r=="string")return Re(un(e),r);for(let i of st(t)){let s=r[i];if(s)return Re(un(e),s)}return null}function fn(t){if(!t.bundledNpmPackage)return null;try{return ei.resolve(`${t.bundledNpmPackage}/package.json`)}catch{return null}}function ri(t,e){for(let n of t.projectLocalBinaries??[]){let r=Re(e,n);if(rt(r))return r}return null}function ii(t,e){return ri(t,e)??ve(t)}function ha(t,e=process.env,n=t.indexerBinary){if(t.indexerBinary!=="scip-dotnet"||ot(n,e))return e;let r=mn(n,e);return r?{...e,DOTNET_ROOT:r}:e}function dn(t,e){let n=pn(t),r=e?ii(t,e):ve(t);if(!r)return{language:t.language,binaryLabel:n,installed:!1,runnable:!1,resolvedBinary:null,installUrl:t.installUrl};if(t.indexerBinary!=="scip-dotnet")return{language:t.language,binaryLabel:n,installed:!0,runnable:!0,resolvedBinary:r};let i=si(r);return{language:t.language,binaryLabel:n,installed:!0,runnable:i.runnable,resolvedBinary:r,installUrl:t.installUrl,note:i.note}}function ba(t,e){let n=t.installMethods,r=pn(t);if(!n?.length)return e(`No auto-install method available for ${r}.`),t.installUrl&&e(`Install manually from: ${t.installUrl}`),!1;for(let i of n)if(be(i.prerequisite)){e(`Installing ${r} via ${i.label}...`);try{it(i.binary,i.args,{stdio:"inherit",timeout:3e5,env:process.env});let s=ve(t);if(s){let o=s===t.indexerBinary?"":` (using ${s})`;return e(`Successfully installed ${r} via ${i.label}${o}`),!0}e(`${i.label} command completed but ${r} was not found on PATH`)}catch(s){let o=s instanceof Error?s.message:String(s);e(`${i.label} install failed: ${o}`)}}return e(`Could not auto-install ${r}.`),t.installUrl&&e(`Install manually from: ${t.installUrl}`),!1}function si(t){if(ot(t,process.env))return{runnable:!0};let e=mn(t,process.env);if(e)return{runnable:!0,note:`using .NET 9 runtime from ${e}`};let n=gn(process.env);return{runnable:!1,note:n.length>0?`.NET 9 runtime still unavailable after checking ${n.join(", ")}`:"binary is present, but scip-dotnet still needs a .NET 9 runtime"}}function mn(t,e){for(let n of gn(e))if(ot(t,{...e,DOTNET_ROOT:n}))return n;return null}function gn(t){let e=[],n=t.DOTNET_ROOT;if(n&&rt(n)&&e.push(n),Zr()==="darwin"&&be("brew"))try{let r=it("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:t}).toString().trim(),i=Re(r,"libexec");rt(i)&&!e.includes(i)&&e.push(i)}catch{}return e}function ot(t,e){try{return it(t,["--version"],{stdio:"pipe",env:e}),!0}catch{return!1}}function Q(t){try{return process.kill(t,0),!0}catch(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EPERM"}}import{mkdirSync as oi,renameSync as ai,writeFileSync as ci}from"fs";import{dirname as li}from"path";function Ie(t,e,n={}){oi(li(t),{recursive:!0});let r=`${t}.${process.pid}.${Date.now()}.tmp`,i=JSON.stringify(e,null,n.spacing);ci(r,n.trailingNewline?`${i}
2
- `:i),ai(r,t)}import{execFileSync as ui}from"child_process";import{createHash as yn}from"crypto";import{lstatSync as pi,readdirSync as fi,readFileSync as di,readlinkSync as mi,realpathSync as Sn}from"fs";import{isAbsolute as gi,join as hn,relative as yi,sep as Si}from"path";function xe(t,e){let n=t.split("/").at(-1)??t;if(vn.has(n)||n===".scipquery.json"||/^tsconfig(?:\..+)?\.json$/.test(n))return"config";if(/\.d\.(?:ts|mts|cts)$/.test(t.toLowerCase()))return"ambient";let r=t.includes(".")?`.${t.split(".").at(-1).toLowerCase()}`:"";return e.some(i=>(In[i]??[]).includes(r))?"source":"other"}function wa(t){return[...new Set((t??[]).map(e=>e.trim()).filter(Boolean))].sort((e,n)=>e.localeCompare(n))}function hi(t){return(Ri(t)??vi(t)).filter(e=>e&&!Rn(e)).sort()}function bn(t,e={}){let n=hi(t).filter(i=>!e.language||bi(i,e.language,e.markerFiles)).filter(i=>!e.includePath||e.includePath(i)),r=Sn(t);return n.map(i=>{let s=hn(t,i);try{if(pi(s).isSymbolicLink()){let a=Sn(s),c=yi(r,a);if(c===".."||c.startsWith(`..${Si}`)||gi(c))throw new Error("external symlink");let l=mi(s);return{path:i,size:Buffer.byteLength(l),hash:yn("sha256").update("symlink\0").update(l).digest("hex")}}let o=di(s);return{path:i,size:o.byteLength,hash:yn("sha256").update(o).digest("hex")}}catch{return{path:i,size:-1,hash:"unreadable"}}})}function bi(t,e,n){let r=t.split("/").at(-1)??t;if(n?.includes(t)||n?.includes(r)||vn.has(r))return!0;let i=t.includes(".")?`.${t.split(".").at(-1).toLowerCase()}`:"";return(In[e]??[]).includes(i)}function Ri(t){try{return ui("git",["-C",t,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:50*1024*1024,stdio:["ignore","pipe","ignore"]}).split(`
3
- `).filter(Boolean)}catch{return null}}function vi(t){let e=[],n=[""];for(;n.length>0;){let r=n.pop(),i=r?hn(t,r):t,s;try{s=fi(i,{withFileTypes:!0})}catch{continue}for(let o of s){let a=r?`${r}/${o.name}`:o.name;if(o.isDirectory()){Rn(a)||n.push(a);continue}e.push(a)}}return e}function Rn(t){let e=t.split("/");return t==="meta.json"||e.some(n=>Ii.has(n))||t.endsWith(".db")||t.endsWith(".db-wal")||t.endsWith(".db-shm")||t.endsWith(".scip")}var Ii=new Set([".git","node_modules",".scipquery-cache",".scipquery-generations",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]),vn=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","deps.edn","project.clj","bb.edn","shadow-cljs.edn"]),In={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"],clojure:[".clj",".cljs",".cljc"]};function kn(t){return!et(t)||typeof t.version!="number"||tt(t.languages)===null||typeof t.pnpmWorkspaces!="boolean"||typeof t.typescriptProjectMode!="string"||tt(t.typescriptProjects)===null||t.clojureConfigPath!==void 0&&typeof t.clojureConfigPath!="string"||!Array.isArray(t.files)||!t.files.every(xi)?null:t}function Aa(t,e){let n=new Map((t?.files??[]).map(a=>[a.path,a])),r=new Map(e.files.map(a=>[a.path,a])),i=new Set([...n.keys(),...r.keys()]),s=[];for(let a of[...i].sort()){let c=n.get(a),l=r.get(a),p=xe(a,e.languages);!c&&l?s.push({kind:"added",path:a,inputKind:p,after:l}):c&&!l?s.push({kind:"deleted",path:a,inputKind:p,before:c}):c&&l&&(c.hash!==l.hash||c.size!==l.size)&&s.push({kind:"modified",path:a,inputKind:p,before:c,after:l})}let o=new Set;return t||o.add("prior-snapshot-unavailable"),t&&t.version!==e.version&&o.add("snapshot-version-changed"),(xn(t?.files??[])||xn(e.files))&&o.add("duplicate-input-path"),[...t?.files??[],...e.files].some(Mi)&&o.add("unreadable-input"),{version:1,changes:s,projectIdentityChanged:t?!Di(t,e):!0,uncertainty:[...o].sort()}}function xn(t){return new Set(t.map(e=>e.path)).size!==t.length}function xi(t){return et(t)&&typeof t.path=="string"&&typeof t.size=="number"&&typeof t.hash=="string"}function Mi(t){return t.hash==="unreadable"||t.size<0}function Ci(t){let e=new Set;for(let n of t.uncertainty)e.add(n);t.projectIdentityChanged&&e.add("project-identity-changed");for(let n of t.changes)n.kind==="added"&&e.add("file-added"),n.kind==="deleted"&&e.add("file-deleted"),n.inputKind==="config"&&e.add("configuration-changed"),n.inputKind==="ambient"&&e.add("ambient-declaration-changed"),n.inputKind==="other"&&e.add("unclassified-input");return{fullProject:e.size>0,reasons:[...e].sort()}}function Na(t,e,n){let r=t.changes.map(a=>a.path).sort();if(r.length===0&&!t.projectIdentityChanged&&t.uncertainty.length===0)return{mode:"none",changedFiles:r,affectedFiles:[],reasons:[]};let i=new Set(n),s=Ci(t),o=new Set(s.reasons);return r.some(a=>!i.has(a))&&o.add("changed-file-outside-project"),e===null?(o.add("dependency-graph-unavailable"),Mn(r,i,o)):o.size>0?Mn(r,i,o):{mode:"closure",changedFiles:r,affectedFiles:ki(r,e,i),reasons:[]}}function Mn(t,e,n){return{mode:"full-project",changedFiles:t,affectedFiles:[...e].sort(),reasons:[...n].sort()}}function ki(t,e,n){let r=new Map;for(let[o,a]of e)if(n.has(o))for(let c of a){if(!n.has(c))continue;let l=r.get(c)??new Set;l.add(o),r.set(c,l)}let i=new Set(t),s=[...t];for(let o=0;o<s.length;o+=1){let a=s[o];if(a!==void 0)for(let c of r.get(a)??[])i.has(c)||(i.add(c),s.push(c))}return[...i].sort()}function Di(t,e){return Cn(t.languages,e.languages)&&t.pnpmWorkspaces===e.pnpmWorkspaces&&t.typescriptProjectMode===e.typescriptProjectMode&&Cn(t.typescriptProjects,e.typescriptProjects)&&t.clojureConfigPath===e.clojureConfigPath}function Cn(t,e){if(t.length!==e.length)return!1;let n=[...t].sort(),r=[...e].sort();return n.every((i,s)=>i===r[s])}function Dn(t){let e=new Map,n=wi(t),r=new Map;return i=>{let s=Ti(i),o=r.get(s);if(o!==void 0)return o;if(!n.has(i.file))return r.set(s,i.symbol),i.symbol;let a=e.get(i.file);a||(a=Pi(B(t,i.file)),e.set(i.file,a));let c=Fi(a,i);return r.set(s,c),c}}function Ti(t){return`${t.file}\0${t.symbol}\0${t.line}`}function wi(t){return new Set(t.all("SELECT relative_path FROM documents").map(e=>e.relative_path))}function Pi(t){let e=new Map,n=new Map;for(let r of t){let i=e.get(r.leaf);i?i.push(r):e.set(r.leaf,[r]);let s=n.get(r.startLine);s?s.push(r):n.set(r.startLine,[r])}return{definitions:t,byLeaf:e,byStartLine:n}}function Fi(t,e){if(t.definitions.length===0)return e.symbol;let n=Ni(e.symbol),r=Ei(t.byLeaf,n),i=Ai(r,e.line);if(i)return i.symbol;let s=t.byStartLine.get(e.line)??[];return s.length===1?s[0].symbol:e.symbol}function Ei(t,e){let n=[],r=new Set;for(let i of e)for(let s of t.get(i)??[])r.has(s.symbolId)||(r.add(s.symbolId),n.push(s));return n}function Ai(t,e){let n=null;for(let r of t)if(!(r.startLine>e||r.endLine<e)){if(r.startLine===e)return r;(!n||r.endLine-r.startLine<n.endLine-n.startLine)&&(n=r)}return n}function Ni(t){let e=new Set([t]),r=t.split(/::|\.|#/).filter(Boolean).at(-1);return r&&e.add(r),e}function Tn(t,e){let r=rn(t,e).map(i=>ji(e,i));return{usage:r,positions:Li(t,e,r)}}function wn(t,e){return{importUsage(n){let r=t.importUsageFacts(n);if(!e||r.positions.length===0)return r.usage;let i=e.importDefinitionsForFile(n,r.positions);return i.available?_i(r.usage,i.sourcePaths):r.usage}}}function _i(t,e){return t.map((n,r)=>{let i=e.get(String(r));return i?{...n,sourcePath:i}:n})}function ji(t,e){let n=e.isTypeOnly===!0,r=e.kind==="side-effect"||n||e.used;return{importer:t,sourcePath:e.sourcePath,importedName:e.importedName,localName:e.localName,kind:e.kind,isTypeOnly:n,isUsed:r,isTypeUsed:n,isValueUsed:e.kind==="side-effect"||!n&&e.used,references:[]}}function Li(t,e,n){let r=tn(t,e);if(!r)return[];let i=Oi(r.rootNode),s=new Map;for(let a of i){let c=s.get(ct(a.importedName,a.localName));c?c.push(a.position):s.set(ct(a.importedName,a.localName),[a.position])}let o=[];return n.forEach((a,c)=>{let l=s.get(ct(a.importedName,a.localName??a.importedName))?.shift();l&&o.push({...l,id:String(c),file:e})}),o}function Oi(t){let e=[];for(let n of t.descendantsOfType("use_declaration")){let r=n.namedChildren.find(i=>i.type!=="visibility_modifier");r&&e.push(...Me(r,""))}return e.filter(n=>n.importedName!=="*")}function Me(t,e){switch(t.type){case"identifier":case"super":case"self":case"crate":return[{importedName:t.text,localName:t.text,position:at(t,t.text)}];case"scoped_identifier":{let n=t.text.split("::").pop()??t.text;return[{importedName:n,localName:n,position:at(t,n)}]}case"scoped_use_list":{let n=t.namedChild(0),r=t.namedChild(1);if(!n||!r)return[];let i=nn(e,n.text);return r.namedChildren.flatMap(s=>Me(s,i))}case"use_list":return t.namedChildren.flatMap(n=>Me(n,e));case"use_as_clause":{let n=t.namedChild(0),r=t.namedChild(1);return!n||!r?[]:Me(n,e).map(i=>({...i,localName:r.text}))}case"use_wildcard":{let n=t.namedChild(0),r="*";return[{importedName:r,localName:r,position:at(n??t,r)}]}default:return[]}}function at(t,e){let n=Math.max(0,t.text.lastIndexOf(e));return{id:"",file:"",line:t.startPosition.row,column:t.startPosition.column+n+Ui(e)}}function Ui(t){return Math.max(0,Math.min(t.length-1,1))}function ct(t,e){return`${t}\0${e}`}import{spawnSync as St}from"child_process";import{existsSync as ht}from"fs";import{fileURLToPath as ws}from"url";function Ce(t){let e=dn(ln("rust"),t),n=e.runnable;return{available:n,dependencyAvailable:n,resolvedBinary:e.resolvedBinary??void 0,reason:n?"rust-analyzer semantic reference queries are enabled.":"rust-analyzer is not runnable; Rust semantic checks will use SCIP/source evidence only."}}import{existsSync as fs,mkdtempSync as Yn,readFileSync as Gn,rmSync as ft}from"fs";import{tmpdir as Qn}from"os";import{join as dt}from"path";import{fileURLToPath as Ne,pathToFileURL as ds}from"url";import{SHARE_ENV as ms,Worker as gs}from"worker_threads";function q(t,e,n=new Set){let r=new Map;for(let i of t)n.has(i.symbolId)||r.set(i.symbolId,e.get(i.symbolId)??[]);return r}function z(t,e,n){let r=G(process.env.SCIP_RUST_SEMANTIC_BATCH_TIMEOUT_MS)??0;if(r>0)return r;let i=Math.max(1,Math.ceil(t/Math.max(1,n)));return Math.max(12e4,3e4+i*e)}import{spawn as Zi}from"child_process";import{createHash as es,randomUUID as ts}from"crypto";import{existsSync as Bn,mkdirSync as jn,readFileSync as Fe,realpathSync as ns,rmSync as pt}from"fs";import{tmpdir as rs}from"os";import{resolve as N}from"path";import{execFileSync as Ji}from"child_process";import{existsSync as Wi,readFileSync as Bi}from"fs";import{deserializeSCIP as qi,SymbolRole as $i}from"@c4312/scip";import{existsSync as Ja,readFileSync as Ya}from"fs";import{relative as Qa,resolve as Xa,sep as Za}from"path";import{fileURLToPath as tc,pathToFileURL as nc}from"url";function Pn(t){let e=new Map;for(let n of t)e.set(`${n.file}\0${n.line}\0${n.column}`,n);return[...e.values()].sort((n,r)=>{let i=n.file.localeCompare(r.file);return i!==0?i:n.line!==r.line?n.line-r.line:n.column-r.column})}var lt=new WeakMap,zi="SCIP_RUST_SCIP_OCCURRENCE_REFERENCE_MODE";function cc(t,e){let n=new Map,r=ke(),i=e.filter(o=>En(o,r));if(i.length===0)return n;let s=An(t);if(!s)return n;for(let o of i){let a=Fn(s,o);a!==null&&n.set(o.symbolId,a)}return n}function lc(t,e){if(!En(e,ke()))return null;let n=An(t);return n?Fn(n,e):null}function Fn(t,e){return t.referencesBySymbol.get(e.symbol)??[]}function En(t,e="safe"){if(!t.symbol.startsWith("rust-analyzer ")||!t.relativePath.endsWith(".rs")||ie(t.symbol)||/impl#\[[^\]]+\]\[Default\]default\(\)\.$/.test(t.symbol))return!1;if(e==="all")return!0;let n=Se(t.symbol);if(n==="method")return!0;if(n!=="term")return!1;let r=sn(t.symbol);return"kind"in r?!1:!Hi(r)}function Hi(t){for(let e=0;e<t.descriptors.length-1;e+=1)if(t.descriptors[e]?.suffix==="type")return!0;return!1}function An(t){if(lt.has(t))return lt.get(t)??null;let e=Vi(t);return lt.set(t,e),e}function Vi(t){if(!Wi(t.config.indexPath))return null;try{let e=qi(Bi(t.config.indexPath)),n=new Map;for(let r of e.documents??[]){let i=r.relativePath;if(!(!i||t.isIgnored(i)))for(let s of r.occurrences??[]){if(!s.symbol||(s.symbolRoles&$i.Definition)!==0)continue;let o=Ki(i,s.range);if(!o)continue;let a=n.get(s.symbol)??[];a.push(o),n.set(s.symbol,a)}}for(let[r,i]of n)n.set(r,Pn(i));return{referencesBySymbol:n}}catch{return null}}function Ki(t,e){if(e.length<3)return null;let n=e[0],r=e[1];return!Number.isInteger(n)||!Number.isInteger(r)?null:{file:t,line:n,column:r}}function ke(){return process.env[zi]==="all"?"all":"safe"}var Nn=new Map;function ut(t){let n=Ce(t).resolvedBinary??null;return{engine:"rust-analyzer",resolvedBinary:n,version:n?Yi(t,n):"unavailable"}}function mc(t){return{...ut(t),scipOccurrenceReferenceMode:ke()}}function Yi(t,e){let n=`${t}\0${e}`,r=Nn.get(n);if(r)return r;let i;try{i=Ji(e,["--version"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim()}catch{i="unknown"}return Nn.set(n,i),i}import{createHash as Gi}from"crypto";var Qi=new Set(["Cargo.lock","Cargo.toml","rust-project.json","rust-toolchain","rust-toolchain.toml"]);function _n(t){let e=bn(t,{includePath:Xi});return Gi("sha256").update(JSON.stringify(e)).digest("hex")}function Xi(t){let e=t.replaceAll("\\","/"),n=e.split("/").at(-1)??e;return e.endsWith(".rs")||Qi.has(n)?!0:e===".cargo/config"||e===".cargo/config.toml"||e.endsWith("/.cargo/config")||e.endsWith("/.cargo/config.toml")}var qn=2,is=5e3,ss=5e3,$n=10,os=3e4;function Ln(t,e,n,r=Jn){let i=r.engineIdentity(t),s={protocolVersion:qn,projectRoot:r.canonicalProjectRoot(t),projectFingerprint:r.projectFingerprint(t),engine:{engine:i.engine,resolvedBinary:i.resolvedBinary,version:i.version},workerFingerprint:r.fileFingerprint(e),environment:Hn(r.environment())};return{key:Pe(we(s)),...s}}function De(t,e,n){return t.protocolVersion===qn&&(e-t.heartbeatAtMs<=is||t.busyUntilMs!==void 0&&e<=t.busyUntilMs)&&n(t.pid)}function zn(t,e,n){let r;try{r=Pe(Fe(e))}catch{r="missing"}let i=Pe(we({projectRoot:N(t),serverPath:N(e),serverFingerprint:r})).slice(0,20);return N(n,`scip-query-rust-session-${i}`)}function On(t){let e=t===void 0?Number.NaN:Number(t);return Number.isInteger(e)&&e>=0?e:0}function Hn(t){return Object.fromEntries(Object.entries(t).filter(([e])=>Kn(e)).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>[e,n??null]))}function Vn(t,e){let n=e.runtime??ps,r=e.identityRuntime??Jn,i=zn(t,e.serverPath,e.tempRoot??rs()),s=!1,o=(a,c)=>{if(s)throw new Error("Durable Rust semantic session was already disposed.");return cs(i,e.serverPath,e.semanticWorkerPath,a,c,n)};return{requestSemantic(a,c){let l=Ln(t,e.semanticWorkerPath,a,r),p=n.now()+Math.max(1,c-1e3);return o({kind:"semantic",identityKey:l.key,workerEnvironment:Wn(),request:{...a,readinessDeadlineMs:p,referenceRetryTimeoutMs:as(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,a.referenceRetryTimeoutMs),settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:On(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},requestImportDefinitions(a,c){let l=Ln(t,e.semanticWorkerPath,a,r),p=n.now()+Math.max(1,c-1e3);return o({kind:"import-definitions",identityKey:l.key,workerEnvironment:Wn(),request:{...a,readinessDeadlineMs:p,settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:On(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},shutdown(){s=!0}}}function as(t,e){return e!==void 0?e:t===void 0?os:void 0}function cs(t,e,n,r,i,s){let o=s.randomId(),a=s.now(),c=N(t,"requests"),l=N(t,"responses"),p=N(c,`${o}.json`),u=N(l,`${o}.json`);jn(c,{recursive:!0}),jn(l,{recursive:!0}),Ie(p,{id:o,request:r});let f=s.now()+i;try{for(Un(t,e,n,f,s);s.now()<=f;){if(Bn(u)){let m=ls(Fe(u,"utf8"));if(!m.ok)throw new Error(m.error);return W()&&me({type:"span",name:"rust.semantic.durable-session.request",durationMs:s.now()-a,ok:!0,session:m.session,kind:r.kind}),m.response}let d=Te(t);(!d||!De(d,s.now(),s.isProcessAlive))&&Un(t,e,n,f,s),s.sleep($n)}throw new Error(`Durable Rust semantic session timed out after ${(i/1e3).toFixed(0)}s.`)}finally{pt(p,{force:!0}),pt(u,{force:!0})}}function Un(t,e,n,r,i){let s=Te(t);if(s&&De(s,i.now(),i.isProcessAlive))return;pt(N(t,"server.json"),{force:!0}),i.spawnServer(e,t,n);let o=Math.min(r,i.now()+ss);for(;i.now()<=o;){let a=Te(t);if(a&&De(a,i.now(),i.isProcessAlive))return;i.sleep($n)}throw new Error("Durable Rust semantic session helper did not become ready within 5s.")}function Te(t){try{let e=JSON.parse(Fe(N(t,"server.json"),"utf8"));return typeof e.protocolVersion!="number"||typeof e.pid!="number"||typeof e.heartbeatAtMs!="number"||e.busyUntilMs!==void 0&&typeof e.busyUntilMs!="number"?null:{protocolVersion:e.protocolVersion,pid:e.pid,heartbeatAtMs:e.heartbeatAtMs,...e.busyUntilMs===void 0?{}:{busyUntilMs:e.busyUntilMs}}}catch{return null}}function ls(t){try{let e=JSON.parse(t);return e.ok===!0&&(e.session==="created"||e.session==="reused"||e.session==="invalidated")&&e.response&&typeof e.response=="object"?{ok:!0,session:e.session,response:e.response}:{ok:!1,error:typeof e.error=="string"?e.error:"helper wrote an invalid response"}}catch(e){return{ok:!1,error:`helper wrote malformed JSON: ${e instanceof Error?e.message:String(e)}`}}}function Wn(){return Object.fromEntries(Object.entries(process.env).filter(([t])=>us(t)).sort(([t],[e])=>t.localeCompare(e)).map(([t,e])=>[t,e??null]))}function Kn(t){return t==="HOME"||t==="PATH"||t.startsWith("CARGO_")||t.startsWith("RA_")||t.startsWith("RUST")}function us(t){return Kn(t)||t.startsWith("SCIP_RUST_")||t==="SCIP_QUERY_PROFILE"||t==="SCIP_QUERY_PROFILE_CACHE_STATE"||t==="SCIP_QUERY_PROFILE_COMMAND"||t==="SCIP_QUERY_PROFILE_OUT"||t==="SCIP_QUERY_PROFILE_RUN_ID"||t==="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY"||t==="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY_KIND"||t==="SCIP_QUERY_PROFILE_MIN_MS"}var Jn={canonicalProjectRoot(t){try{return ns(t)}catch{return N(t)}},projectFingerprint(t){return _n(t)},engineIdentity:ut,fileFingerprint(t){return Pe(Fe(t))},environment(){return Hn(process.env)}},ps={now:Date.now,randomId:ts,isProcessAlive:Q,spawnServer(t,e,n){if(!Bn(t))throw new Error(`Durable Rust semantic session helper was not found at ${t}. Run npm run build first.`);Zi(process.execPath,[t,e,n],{detached:!0,stdio:"ignore"}).unref()},sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)}};function we(t){return Array.isArray(t)?`[${t.map(we).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>`${JSON.stringify(e)}:${we(n)}`).join(",")}}`:JSON.stringify(t)}function Pe(t){return es("sha256").update(t).digest("hex")}var Xn=15e3,Zn=8,tr=5e3,ys=64,Ss=96,gt=class{constructor(e,n,r={}){this.projectRoot=e;this.status=n;this.opts=r;this.requester=r.requester??vs(e,process.env.SCIP_RUST_SEMANTIC_DURABLE_SESSION)}projectRoot;status;opts;requester;referencesForDefinitions(e){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,references:se(e)};try{let r=this.requestSession(n.resolvedBinary,e,{includeReferences:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,references:q(e,new Map(r.references),new Set(r.incompleteReferenceSymbolIds??[]))}}catch(r){return this.opts.fallbackReferenceResolver?.referencesForDefinitions(e)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),references:se(e)}}}calleesForDefinitions(e){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,callees:oe(e)};try{let r=this.requestSession(n.resolvedBinary,e,{includeReferences:!1,includeCallees:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,callees:mt(e,new Map(r.callees??[]))}}catch(r){return this.opts.fallbackCalleeResolver?.calleesForDefinitions(e)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),callees:oe(e)}}}referencesAndCalleesForDefinitions(e,n){let r=this.status(this.projectRoot);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,references:se(e),callees:oe(n)};let i=[...e,...n];try{let s=this.requestSession(r.resolvedBinary,i,{includeReferences:e.length>0,includeCallees:n.length>0,referenceDefinitions:e,calleeDefinitions:n});return{available:s.available,resolvedBinary:r.resolvedBinary,reason:s.reason,references:q(e,new Map(s.references),new Set(s.incompleteReferenceSymbolIds??[])),callees:mt(n,new Map(s.callees??[]))}}catch(s){return this.fallbackReferencesAndCallees(r,e,n,s)}}signaturesForDefinitions(e){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,signatures:er(e)};try{let r=this.requestSession(n.resolvedBinary,e,{includeReferences:!1,includeCallees:!1,includeSignatures:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,signatures:ks(e,new Map(r.signatures??[]))}}catch(r){return this.opts.fallbackSignatureResolver?.signaturesForDefinitions(e)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),signatures:er(e)}}}importDefinitionsForFile(e,n){let r=this.status(this.projectRoot);if(n.length===0)return{available:r.available,resolvedBinary:r.resolvedBinary,reason:r.reason,sourcePaths:new Map};if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,sourcePaths:new Map(n.map(i=>[i.id,null]))};try{let i=this.requestImportDefinitions(r.resolvedBinary,e,n);return{available:i.available,resolvedBinary:r.resolvedBinary,reason:i.reason,sourcePaths:new Map(i.sourcePaths)}}catch(i){return{available:!1,resolvedBinary:r.resolvedBinary,reason:i instanceof Error?i.message:String(i),sourcePaths:new Map(n.map(s=>[s.id,null]))}}}dispose(){this.requester.shutdown()}requestSession(e,n,r){let i=Ee(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Xn),s=Ae(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),o=Ee(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Zn),a=Ae(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),c=r.referenceDefinitions?[...r.referenceDefinitions]:void 0,l=r.calleeDefinitions?[...r.calleeDefinitions]:void 0,p=r.signatureDefinitions?[...r.signatureDefinitions]:void 0,u=ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,...r}),f={projectRoot:this.projectRoot,rustAnalyzerBinary:e,definitions:[...n],...c?{referenceDefinitions:c}:{},...l?{calleeDefinitions:l}:{},...p?{signatureDefinitions:p}:{},requestTimeoutMs:i,...r.includeReferences!==!1&&s>0?{referenceRetryTimeoutMs:s}:{},diagnosticsTimeoutMs:a,settleDelayMs:u,concurrency:o,includeReferences:r.includeReferences,includeCallees:r.includeCallees,includeSignatures:r.includeSignatures},d=Ds(f);return C("rust.semantic.session.request",()=>this.requester.requestSemantic(f,z(d,yt(i,f.referenceRetryTimeoutMs),o)),()=>({definitions:n.length,operationDefinitions:d,referenceDefinitions:f.referenceDefinitions?.length,calleeDefinitions:f.calleeDefinitions?.length,signatureDefinitions:f.signatureDefinitions?.length,references:f.includeReferences!==!1,callees:f.includeCallees===!0,signatures:f.includeSignatures===!0,referenceRetryTimeoutMs:f.referenceRetryTimeoutMs}))}fallbackReferencesAndCallees(e,n,r,i){let s=n.length===0?{available:!0,references:se(n)}:this.opts.fallbackReferenceResolver?.referencesForDefinitions(n),o=r.length===0?{available:!0,callees:oe(r)}:this.opts.fallbackCalleeResolver?.calleesForDefinitions(r);return s&&o?{available:s.available&&o.available,resolvedBinary:s.resolvedBinary??o.resolvedBinary??e.resolvedBinary,reason:s.reason??o.reason,references:q(n,s.references),callees:mt(r,o.callees)}:{available:!1,resolvedBinary:e.resolvedBinary,reason:i instanceof Error?i.message:String(i),references:se(n),callees:oe(r)}}requestImportDefinitions(e,n,r){let i=Ee(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Xn),s=Ee(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Zn),o=Ae(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),a=Ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,tr),c={projectRoot:this.projectRoot,rustAnalyzerBinary:e,file:n,positions:[...r],requestTimeoutMs:i,diagnosticsTimeoutMs:o,settleDelayMs:a,concurrency:s};return C("rust.semantic.import-definitions.session.request",()=>this.requester.requestImportDefinitions(c,z(r.length,i,s)),()=>({file:n,positions:r.length}))}};function nr(t,e,n={}){return new gt(t,e,n)}function ae(t,e){let n=ir(t);if(n!==null)return n;let r=e.includeReferences!==!1;return r&&e.includeCallees!==!0&&e.includeSignatures!==!0&&e.definitionCount<=ys||r&&e.includeCallees===!0&&e.includeSignatures!==!0&&e.definitionCount<=Ss?0:tr}function hs(t){let e=t?.trim().toLowerCase(),n=e==="0"||e==="false"||e==="off"||e==="worker",r=e==="1"||e==="true"||e==="on"||e==="durable",i=e===void 0||e==="";return{transport:n||!i&&!r?"worker":"durable",source:i?"default":"environment",fallback:"worker",valid:i||n||r,optOut:"SCIP_RUST_SEMANTIC_DURABLE_SESSION=0"}}function bs(t){return hs(t).transport}function Rs(t,e){let n=null,r=!1,i=!1,s=!1,o=()=>n??=e(),a=()=>{i||(t.shutdown(),i=!0)},c=(p,u,f)=>{let d=Cs(p);r=!0;try{a()}catch{}W()&&me({type:"span",name:"rust.semantic.durable-session.request",durationMs:f,ok:!1,kind:u,session:"worker-fallback",reason:d})},l=(p,u,f)=>{if(s)throw new Error("Rust semantic failover session was already disposed.");if(r)return f(o());let d=Date.now();try{return u(t)}catch(m){c(m,p,Date.now()-d)}return f(o())};return{requestSemantic(p,u){return l("semantic",f=>f.requestSemantic(p,u),f=>f.requestSemantic(p,u))},requestImportDefinitions(p,u){return l("import-definitions",f=>f.requestImportDefinitions(p,u),f=>f.requestImportDefinitions(p,u))},shutdown(){if(s)return;s=!0;let p=[];try{a()}catch(u){p.push(u)}try{n?.shutdown()}catch(u){p.push(u)}if(p.length>0)throw p[0]}}}function vs(t,e,n={worker:()=>Is(),durable:()=>Vn(t,{serverPath:Ne(Ts()),semanticWorkerPath:Ne(rr())})}){return bs(e)==="durable"?Rs(n.durable(),n.worker):n.worker()}function Is(t={}){let e=null,n=null,r=1,i=!1,s=()=>{n&&(ft(n,{recursive:!0,force:!0}),n=null)},o=()=>{let l=e;e=null,l&&l.terminate(),s()},a=()=>{if(e)return e;let l=t.semanticWorkerPath?ds(t.semanticWorkerPath):rr();if(!fs(Ne(l)))throw new Error(`Rust semantic session worker was not found at ${Ne(l)}. Run npm run build before using built semantic Rust queries.`);return n=Yn(dt(Qn(),"scip-query-rust-session-")),e=new gs(l,t.shareEnvironment?{env:ms}:void 0),e.unref(),e},c=()=>{let l=n??Yn(dt(Qn(),"scip-query-rust-session-"));return n=l,dt(l,`${r++}.json`)};return{requestSemantic(l,p){if(i)throw new Error("Rust semantic session was already disposed.");let u=a(),f=c(),d=new SharedArrayBuffer(4),m=new Int32Array(d);if(u.postMessage({kind:"semantic",request:l,responsePath:f,sharedBuffer:d}),Atomics.wait(m,0,0,p)==="timed-out")throw o(),new Error(`Rust semantic session worker timed out after ${(p/1e3).toFixed(0)}s`);try{let g=xs(Gn(f,"utf8"));if(!g.ok)throw new Error(g.error);return g.response}finally{ft(f,{force:!0})}},requestImportDefinitions(l,p){if(i)throw new Error("Rust semantic session was already disposed.");let u=a(),f=c(),d=new SharedArrayBuffer(4),m=new Int32Array(d);if(u.postMessage({kind:"import-definitions",request:l,responsePath:f,sharedBuffer:d}),Atomics.wait(m,0,0,p)==="timed-out")throw o(),new Error(`Rust semantic import-definition session worker timed out after ${(p/1e3).toFixed(0)}s`);try{let g=Ms(Gn(f,"utf8"));if(!g.ok)throw new Error(g.error);return g.response}finally{ft(f,{force:!0})}},shutdown(){if(i)return;if(i=!0,!e){s();return}let l=c(),p=new SharedArrayBuffer(4),u=new Int32Array(p);e.postMessage({kind:"shutdown",responsePath:l,sharedBuffer:p}),Atomics.wait(u,0,0,5e3),o()}}}function xs(t){let e=JSON.parse(t);if(!e||typeof e!="object")return{ok:!1,error:"Rust semantic session worker wrote a non-object response."};let n=e;return n.ok===!0&&"response"in n?{ok:!0,response:n.response}:{ok:!1,error:typeof e.error=="string"?e.error:"Rust semantic session worker failed."}}function Ms(t){let e=JSON.parse(t);if(!e||typeof e!="object")return{ok:!1,error:"Rust semantic session worker wrote a non-object response."};let n=e;return n.ok===!0&&"response"in n?{ok:!0,response:n.response}:{ok:!1,error:typeof e.error=="string"?e.error:"Rust semantic session worker failed."}}function Cs(t){let e=t instanceof Error?`${t.name} ${t.message}`.toLowerCase():String(t).toLowerCase();return e.includes("readiness")?"readiness":e.includes("timeout")||e.includes("timed out")?"timeout":e.includes("helper")?"helper":"request"}function se(t){return new Map(t.map(e=>[e.symbolId,[]]))}function oe(t){return new Map(t.map(e=>[e.symbolId,[]]))}function er(t){return new Map(t.map(e=>[e.symbolId,null]))}function mt(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??[]]))}function ks(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??null]))}function Ds(t){let e=0;return t.includeReferences!==!1&&(e+=(t.referenceDefinitions??t.definitions).length),t.includeCallees===!0&&(e+=(t.calleeDefinitions??t.definitions).length),t.includeSignatures===!0&&(e+=(t.signatureDefinitions??t.definitions).length),Math.max(1,e)}function yt(t,e){return e&&e>0?Math.max(t,e):t}function rr(){return new URL("./rust-semantic-session-worker.js",import.meta.url)}function Ts(){return new URL("./rust-semantic-session-server.js",import.meta.url)}function Ee(t,e){return G(t)??e}function Ae(t,e){return ir(t)??e}function ir(t){if(!t)return null;let e=Number(t);return Number.isInteger(e)&&e>=0?e:null}var bt=15e3,Rt=8;function cr(t,e={}){let n=e.status??Ce,r=Es(t,n),i=As(t,n),s=Ns(t,n),o=e.referenceResolver||e.calleeResolver||e.signatureResolver||!Ps(e)?null:nr(t,n,{fallbackReferenceResolver:r,fallbackCalleeResolver:i,fallbackSignatureResolver:s}),a=e.referenceResolver??o??r,c=e.calleeResolver??o??i,l=e.signatureResolver??o??s,p=e.importUsageResolver??wn(e.sourceImportUsageResolver??Fs(),e.importDefinitionResolver??o),u=e.calleeSymbolResolver,f=e.sourceZeroCalleeOracle,d=e.scipOccurrenceCalleeOracle,m=new Map,b=new Map,g=null,S=null,I=()=>(g??=n(t),g),j=()=>{let y=I();return y.dependencyAvailable?S??y:y},T=y=>{if(y.length===0)return new Map;let v=ce(y);try{let h=a.referencesForDefinitions(v),x=I();return S={...x,available:h.available,resolvedBinary:h.resolvedBinary??x.resolvedBinary,reason:h.reason??x.reason},h.available?new Map(h.references):q(v,h.references)}catch(h){return S={...I(),available:!1,reason:h instanceof Error?h.message:String(h)},H(v)}},L=y=>{if(y.length===0)return new Map;let v=ce(y),h=v.filter(sr);if(h.length===0)return V(v);let x=new Map,re=ar(h,d),A=[];for(let M of h)b.has(M.symbolId)?x.set(M.symbolId,b.get(M.symbolId)??[]):re.has(M.symbolId)?x.set(M.symbolId,re.get(M.symbolId)??[]):or(M,f)?x.set(M.symbolId,[]):A.push(M);if(A.length===0)return X(v,x,void 0);try{let M=c.calleesForDefinitions(A),U=I();S={...U,available:M.available,resolvedBinary:M.resolvedBinary??U.resolvedBinary,reason:M.reason??U.reason};let k=X(A,M.callees,u);for(let[J,Ye]of k)x.set(J,Ye);return X(v,x,void 0)}catch(M){return S={...I(),available:!1,reason:M instanceof Error?M.message:String(M)},V(v)}},O=(y,v)=>{let h=ce(y),x=ce(v),re=x.filter(sr),A=new Map,M=ar(re,d),U=[];for(let k of re)M.has(k.symbolId)?A.set(k.symbolId,M.get(k.symbolId)??[]):or(k,f)?A.set(k.symbolId,[]):U.push(k);if(h.length===0&&U.length===0)return{references:H(h),callees:X(x,A,void 0)};try{let k=o?o.referencesAndCalleesForDefinitions(h,U):Os(a,c,{referenceDefinitions:h,calleeDefinitions:U}),J=I();S={...J,available:k.available,resolvedBinary:k.resolvedBinary??J.resolvedBinary,reason:k.reason??J.reason};let Ye=k.available?new Map(k.references):q(h,k.references);for(let[Ge,Qe]of k.callees)A.set(Ge,Qe);let zt=X(x,A,u);for(let[Ge,Qe]of zt)b.set(Ge,Qe);return{references:Ye,callees:zt}}catch(k){return S={...I(),available:!1,reason:k instanceof Error?k.message:String(k)},{references:H(h),callees:V(x)}}},E=y=>{if(y.length===0)return new Map;let v=ce(y);try{let h=l.signaturesForDefinitions(v),x=I();return S={...x,available:h.available,resolvedBinary:h.resolvedBinary??x.resolvedBinary,reason:h.reason??x.reason},lr(v,h.signatures)}catch(h){return S={...I(),available:!1,reason:h instanceof Error?h.message:String(h)},_e(v)}};return{language:"rust",availability:j,dispose:()=>{o?.dispose()},importUsage:y=>{let v=m.get(y);if(v)return v;try{let h=p.importUsage(y);return m.set(y,h),h}catch(h){return S={...I(),available:!1,reason:h instanceof Error?h.message:String(h)},[]}},referencesFor:y=>T([y]).get(y.symbolId)??[],referencesForDefinitions:T,referencesAndCalleesForDefinitions:O,calleesFor:y=>L([y]).get(y.symbolId)??[],calleesForDefinitions:L,signatureFor:y=>E([y]).get(y.symbolId)??null}}function Ps(t){if(t.usePersistentSession!==void 0)return t.usePersistentSession;let e=process.env.SCIP_RUST_SEMANTIC_SESSION;return e!=="0"&&e!=="false"}function Fs(){return{importUsageFacts:()=>({usage:[],positions:[]})}}function ce(t){return t.map(e=>{let n=e;return{...e,leaf:typeof n.leaf=="string"?n.leaf:$(e.symbol),parentTypeName:n.parentTypeName??null,isFunctionLike:typeof n.isFunctionLike=="boolean"?n.isFunctionLike:on(e.symbol),isTypeLike:n.isTypeLike??!1,kind:n.kind??null,documentation:n.documentation??null,enclosingSymbol:n.enclosingSymbol??null}})}function sr(t){return t.isFunctionLike}function or(t,e){if(!e)return!1;try{return e(t)}catch{return!1}}function ar(t,e){if(!e||t.length===0)return new Map;try{return e(t)}catch{return new Map}}function Es(t,e){return{referencesForDefinitions:n=>_s(t,e,n)}}function As(t,e){return{calleesForDefinitions:n=>js(t,e,n)}}function Ns(t,e){return{signaturesForDefinitions:n=>Ls(t,e,n)}}function _s(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,references:H(n)};let i=vt();if(!ht(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,references:H(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,bt),o=je(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),a=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Rt),c=je(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),l=ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!0}),p={projectRoot:t,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:s,...o>0?{referenceRetryTimeoutMs:o}:{},diagnosticsTimeoutMs:c,settleDelayMs:l,concurrency:a},u=St(process.execPath,[i],{cwd:t,input:JSON.stringify(p),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,yt(s,p.referenceRetryTimeoutMs),a)}),f=It(u.stdout);if(f)return{available:f.available,resolvedBinary:r.resolvedBinary,reason:f.reason,references:q(n,new Map(f.references),new Set(f.incompleteReferenceSymbolIds??[]))};let d=u.error instanceof Error?u.error.message:u.stderr.trim()||`Rust semantic worker exited with status ${u.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:d,references:H(n)}}function js(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,callees:V(n)};let i=vt();if(!ht(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,callees:V(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,bt),o=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Rt),a=je(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),c=ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!1,includeCallees:!0}),l={projectRoot:t,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:s,diagnosticsTimeoutMs:a,settleDelayMs:c,concurrency:o,includeReferences:!1,includeCallees:!0},p=St(process.execPath,[i],{cwd:t,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,s,o)}),u=It(p.stdout);if(u)return{available:u.available,resolvedBinary:r.resolvedBinary,reason:u.reason,callees:X(n,new Map(u.callees??[]),void 0)};let f=p.error instanceof Error?p.error.message:p.stderr.trim()||`Rust semantic worker exited with status ${p.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:f,callees:V(n)}}function Ls(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,signatures:_e(n)};let i=vt();if(!ht(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,signatures:_e(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,bt),o=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Rt),a=je(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),c=ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!1,includeCallees:!1,includeSignatures:!0}),l={projectRoot:t,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:s,diagnosticsTimeoutMs:a,settleDelayMs:c,concurrency:o,includeReferences:!1,includeCallees:!1,includeSignatures:!0},p=St(process.execPath,[i],{cwd:t,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,s,o)}),u=It(p.stdout);if(u)return{available:u.available,resolvedBinary:r.resolvedBinary,reason:u.reason,signatures:lr(n,new Map(u.signatures??[]))};let f=p.error instanceof Error?p.error.message:p.stderr.trim()||`Rust semantic worker exited with status ${p.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:f,signatures:_e(n)}}function Os(t,e,n){let r=n.referenceDefinitions.length>0?t.referencesForDefinitions(n.referenceDefinitions):{available:!0,references:H(n.referenceDefinitions)},i=n.calleeDefinitions.length>0?e.calleesForDefinitions(n.calleeDefinitions):{available:!0,callees:V(n.calleeDefinitions)};return{available:r.available&&i.available,resolvedBinary:r.resolvedBinary??i.resolvedBinary,reason:r.reason??i.reason,references:r.references,callees:i.callees}}function H(t){return new Map(t.map(e=>[e.symbolId,[]]))}function V(t){return new Map(t.map(e=>[e.symbolId,[]]))}function _e(t){return new Map(t.map(e=>[e.symbolId,null]))}function X(t,e,n){let r=0,i=0;return C("rust.semantic.callees.complete-map",()=>{let s=new Map;for(let o of t){let a=e.get(o.symbolId)??[];a.length>0&&(r+=1),i+=a.length,s.set(o.symbolId,a.map(c=>({...c,symbol:n?n(c):c.symbol})))}return s},()=>({definitions:t.length,rows:r,callees:i,resolveSymbols:!!n}))}function lr(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??null]))}function vt(){return ws(new URL("./rust-semantic-worker.js",import.meta.url))}function It(t){try{let e=JSON.parse(t);if(!e||typeof e!="object")return null;let n=e;return typeof n.available!="boolean"||!Array.isArray(n.references)?null:{available:n.available,reason:typeof n.reason=="string"?n.reason:void 0,references:n.references,incompleteReferenceSymbolIds:Array.isArray(n.incompleteReferenceSymbolIds)?n.incompleteReferenceSymbolIds.filter(r=>typeof r=="number"):void 0,callees:Array.isArray(n.callees)?n.callees:void 0,signatures:Array.isArray(n.signatures)?n.signatures:void 0}}catch{return null}}function Z(t,e){return G(t)??e}function je(t,e){if(!t)return e;let n=Number(t);return Number.isInteger(n)&&n>=0?n:e}import{existsSync as Us,readFileSync as Ws}from"fs";import{deserializeSCIP as Bs,SymbolRole as qs}from"@c4312/scip";var xt=new WeakMap;function pr(t,e){let n=e.filter($s);if(n.length===0)return new Map;let r=!1,i=0,s=0;return C("rust.scip-occurrence.callees",()=>{let o=Vs(t);if(r=!!o,!o)return new Map;let a=new Map;for(let c of n){let l=zs(t,o,c);l!==null&&(a.set(c.symbolId,l),i+=1,s+=l.length)}return a},()=>({definitions:e.length,candidates:n.length,indexAvailable:r,resolvedDefinitions:i,resolvedCallees:s}))}function $s(t){return!(!t.symbol.startsWith("rust-analyzer ")||!t.relativePath.endsWith(".rs")||!t.isFunctionLike||t.leaf==="main"||ie(t.symbol))}function zs(t,e,n){let r=ge(t,n.relativePath);if(!r||r.language!=="rust")return null;let i=r.callables.find(l=>l.startLine!==n.startLine||l.endLine!==n.endLine?!1:l.name===n.leaf||n.leaf.endsWith(l.name)||l.name.endsWith(n.leaf));if(!i)return null;let s=r.callSites.filter(l=>l.line>=i.startLine&&l.line<=i.endLine);if(s.length===0)return null;let o=(e.occurrencesByFile.get(n.relativePath)??[]).filter(l=>l.line>=i.startLine&&l.line<=i.endLine&&l.callee.symbol!==n.symbol);if(o.some(l=>l.traitImplMember)||!Hs(s,o))return null;let a=[],c=new Set;for(let l of o){let p=`${l.callee.symbol}\0${l.callee.file}\0${l.callee.line}`;c.has(p)||(c.add(p),a.push(l.callee))}return a}function Hs(t,e){let n=ur(t),r=ur(e);if(n.size!==r.size)return!1;for(let[i,s]of n)if(r.get(i)!==s)return!1;return!0}function ur(t){let e=new Map;for(let n of t){let r=n.calleeLeaf??n.leaf;if(!r)continue;let i=`${n.line}\0${r}`;e.set(i,(e.get(i)??0)+1)}return e}function Vs(t){if(xt.has(t))return xt.get(t)??null;let e=Ks(t);return xt.set(t,e),e}function Ks(t){if(!Us(t.config.indexPath))return null;try{let e=he(t).filter(s=>s.symbol.startsWith("rust-analyzer ")&&s.relativePath.endsWith(".rs")&&s.isFunctionLike),n=new Map(e.map(s=>[s.symbol,s])),r=Bs(Ws(t.config.indexPath)),i=new Map;for(let s of r.documents??[]){let o=s.relativePath;if(!o||!o.endsWith(".rs")||t.isIgnored(o))continue;let a=[];for(let c of s.occurrences??[]){if(!c.symbol||(c.symbolRoles&qs.Definition)!==0)continue;let l=n.get(c.symbol);if(!l)continue;let p=c.range?.[0];Number.isInteger(p)&&a.push({line:p,leaf:l.leaf,traitImplMember:ie(l.symbol),callee:{symbol:l.symbol,file:l.relativePath,line:l.startLine}})}i.set(o,a)}return{occurrencesByFile:i}}catch{return null}}var Le=class{sessions=new WeakMap;getOrCreate(e,n,r){let i=Js(e,n),s=this.sessions.get(e);s||(s=new Map,this.sessions.set(e,s));let o=s.get(i);if(o)return o.hits+=1,o.lastUsedAtMs=Date.now(),o.provider;let a=Date.now(),c=r();return s.set(i,{key:i,language:n,projectRoot:e.config.projectRoot,provider:c,createdAtMs:a,lastUsedAtMs:a,hits:1}),c}sessionsFor(e){return[...this.sessions.get(e)?.values()??[]]}clear(e){let n=this.sessions.get(e);if(n)for(let r of n.values())r.provider.dispose?.();this.sessions.delete(e)}};function Js(t,e){return`${t.config.projectRoot}:${e}-workspace`}import{randomUUID as Lo}from"crypto";import{existsSync as Oo,mkdirSync as Wr,readFileSync as Uo,rmSync as Br}from"fs";import{dirname as Wo,resolve as Ut}from"path";import{spawn as Ys}from"child_process";import{closeSync as al,existsSync as Gs,mkdirSync as cl,openSync as ll,readFileSync as Qs,rmSync as ul,writeFileSync as pl}from"fs";import{dirname as dl,join as Mt,resolve as ml}from"path";import{fileURLToPath as yl}from"url";var fr=5e3,Xs="watch.lock",Zs="watch-state.json",eo="watch-activity.json";function dr(t){return{lockPath:Mt(t,Xs),statePath:Mt(t,Zs),activityPath:Mt(t,eo)}}function Ct(t){try{return to(JSON.parse(Qs(t,"utf8")))}catch{return null}}function to(t){if(!t||typeof t!="object")return null;let e=t;return e.version!==1||typeof e.protocolVersion!="number"||typeof e.pid!="number"||!Number.isInteger(e.pid)||e.pid<=0||typeof e.projectRoot!="string"||typeof e.cliVersion!="string"||!F(e.startedAt)||!F(e.heartbeatAt)||!F(e.lastActivityAt)||!no(e.watcher)||e.idleDeadlineAt!==void 0&&!F(e.idleDeadlineAt)||e.lastError!==void 0&&!ro(e.lastError)||e.lastRefresh!==void 0&&!io(e.lastRefresh)||e.typescriptSemantic!==void 0&&!so(e.typescriptSemantic)||e.typescriptIndex!==void 0&&!oo(e.typescriptIndex)?null:e}var hl={now:Date.now,isProcessAlive:Q,spawnServer(t,e,n,r){if(!Gs(t))throw new Error(`Watch service helper was not found at ${t}. Run npm run build first.`);Ys(process.execPath,[t,e,n,JSON.stringify(r)],{detached:!0,stdio:"ignore",env:{...process.env,SCIP_QUERY_SKIP_WATCH_SERVICE:"1"}}).unref()},signalProcess(t){process.kill(t,"SIGTERM")},sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)}};function F(t){return typeof t=="string"&&Number.isFinite(Date.parse(t))}function no(t){if(!t||typeof t!="object"||!("state"in t))return!1;let e=t;switch(e.state){case"idle":return!0;case"waiting":return w(e.changedFiles)&&w(e.reindexAt);case"indexing":return w(e.startedAt);case"cooldown":return w(e.until)&&typeof e.dirty=="boolean";default:return!1}}function ro(t){if(!t||typeof t!="object")return!1;let e=t;return F(e.at)&&typeof e.message=="string"}function io(t){if(!t||typeof t!="object")return!1;let e=t;return typeof e.trigger?.kind=="string"&&typeof e.result=="string"&&F(e.startedAt)&&F(e.completedAt)&&w(e.durationMs)}function so(t){if(!t||typeof t!="object")return!1;let e=t;return typeof e.protocolVersion=="number"&&(e.state==="idle"||e.state==="ready"||e.state==="unavailable"||e.state==="error")&&w(e.requests)&&w(e.sessionsCreated)&&w(e.sessionsReused)&&w(e.sessionsRefreshed)&&w(e.sessionsReplaced)&&w(e.projectsCreated)&&(e.lastRequestAt===void 0||F(e.lastRequestAt))&&(e.lastError===void 0||typeof e.lastError=="string")&&(e.busyUntil===void 0||F(e.busyUntil))}function oo(t){if(!t||typeof t!="object")return!1;let e=t;return typeof e.protocolVersion=="number"&&(e.state==="idle"||e.state==="ready"||e.state==="unavailable"||e.state==="error")&&K(e.requests)&&K(e.sessionsCreated)&&K(e.sessionsReplaced)&&K(e.initializations)&&K(e.programUpdates)&&K(e.documentsEmitted)&&K(e.documentsRemoved)&&(e.lastRequestAt===void 0||F(e.lastRequestAt))&&(e.lastDurationMs===void 0||w(e.lastDurationMs)&&e.lastDurationMs>=0)&&(e.lastError===void 0||typeof e.lastError=="string")&&(e.busyUntil===void 0||F(e.busyUntil))}function w(t){return typeof t=="number"&&Number.isFinite(t)}function K(t){return typeof t=="number"&&Number.isInteger(t)&&t>=0}import{performance as R}from"perf_hooks";function P(t,e,n){if(t.has(e))return t.get(e);let r=n();return t.set(e,r),r}import mr from"path";function ao(t,e){return t.getReferences().map(n=>{let r=n.getNode();return Oe(r,e)})}function co(t){let e=t;return typeof e.findReferences=="function"?e.findReferences():[]}function gr(t,e,n,r){let i=[];for(let s of co(t))for(let o of ao(s,r))o.file===e.relativePath&&o.line>=e.startLine&&o.line<=e.endLine||i.push(o);for(let s of n)i.push(s);return ee(i)}function yr(t,e,n,r){let i=[],s=n?.getStart();for(let o of t.getReferences()){let a=o.getNode();te(r,a.getSourceFile().getFilePath())===e&&(s!==void 0&&a.getStart()===s||i.push({location:Oe(a,r),node:a}))}return i}function Oe(t,e){let n=t.getSourceFile(),r=n.getLineAndColumnAtPos(t.getStart());return{file:te(e,n.getFilePath())??n.getBaseName(),line:r.line-1,column:r.column-1}}function Sr(t,e,n){let r=t.getSourceFile(),i=Dt(r,t),s=t.getText(),o=new RegExp(`\\b${Zt(s)}\\b`,"g"),a=r.getFullText().split(`
4
- `),c=[];for(let l=0;l<a.length;l++){if(l===i)continue;let p=a[l]??"";o.lastIndex=0;let u;for(;(u=o.exec(p))!==null;)c.push({file:e,line:l,column:u.index})}return ee(c.filter(l=>te(n,mr.join(n,l.file))===e))}function kt(t){for(let e=t;e;e=e.getParent()){let n=e.getKindName();if(n.includes("Type")||n==="InterfaceDeclaration"||n==="TypeAliasDeclaration")return!0;if(n==="CallExpression"||n==="NewExpression"||n==="ExpressionStatement")return!1}return!1}function Dt(t,e){return t.getLineAndColumnAtPos(e.getStart()).line-1}function ee(t){let e=new Set,n=[];for(let r of t){let i=`${r.file}:${r.line}:${r.column}`;e.has(i)||(e.add(i),n.push(r))}return n}function te(t,e){let n=mr.relative(t||process.cwd(),e).replace(/\\/g,"/");return!n||n.startsWith("..")?null:n}function hr(t,e,n,r){let i=lo(e,r);return i.size===0?new Map:uo(t,n,i)}function lo(t,e){let n=new Map;for(let r of B(t,e)){let i=$(r.symbol)??r.leaf;if(!i)continue;let s=n.get(i);s||(s=[],n.set(i,s)),s.push(r)}return n}function uo(t,e,n){let r=new Map,i=new Map;return e.forEachDescendant(s=>{for(let o of po(t,s)){let a=n.get(o);if(!a)continue;let c=Dt(e,s);for(let l of a){if(c<l.startLine-1||c>l.endLine+1)continue;let p=Math.abs(c-l.startLine),u=i.get(l.symbolId);u!==void 0&&u<=p||(i.set(l.symbolId,p),r.set(l.symbolId,s))}}}),r}function po(t,e){let n=[],r=i=>{i&&!n.includes(i)&&n.push(i)};if("getNameNode"in e&&typeof e.getNameNode=="function"){let i=e.getNameNode();r(i?.getText())}if("getName"in e&&typeof e.getName=="function"){let i=e.getName();r(i)}return t.Node.isIdentifier(e)&&r(e.getText()),n}var fo=Vt("ts-definition-leaf-candidates",{clearGroups:["definition-catalog"]});function br(t,e,n,r){let i=Pt(t,e),s=Tt(i.get(r)??[],n);if(s)return s;let o=[];for(let a of i.values())for(let c of a)((c.leaf||$(c.symbol)||"").includes(r)||c.symbol.includes(r))&&o.push(c);return Tt(o,n)}function wt(t,e,n,r){return Tt(Pt(t,e).get(r)??[],n)}function Rr(t,e){let n=new Map;for(let[r,i]of Pt(t,e)){let s=i[0];s&&n.set(r,s)}return n}function Pt(t,e){return fo.get(t,e,()=>{let n=new Map;for(let r of B(t,e)){let i=r.leaf||$(r.symbol);if(!i)continue;let s=n.get(i);s||(s=[],n.set(i,s)),s.push({...r,leaf:i})}for(let r of n.values())r.sort((i,s)=>i.startLine-s.startLine||i.endLine-s.endLine||i.symbolId-s.symbolId);return n})}function Tt(t,e){let n=null,r=Number.POSITIVE_INFINITY;for(let i of t){let s=Math.abs(i.startLine-e);(s<r||s===r&&n&&i.startLine<n.startLine)&&(n=i,r=s)}return n}import Ft from"path";var le=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"];function _(t){let e=t.toLowerCase();return le.some(n=>e.endsWith(n))}function vr(t,e){let n=new Map,r=null,i=null,s=()=>(i??=Y(t,{extensions:le}),i),o=()=>(r??=C("typescript.source-file-index",()=>mo(t.config.projectRoot,e,s()),()=>({projects:e.length,indexedDocuments:s().length})),r),a=c=>_(c)?P(n,c,()=>{let l=ue(Ft.resolve(t.config.projectRoot,c));for(let{project:p,sourceFiles:u}of o()){let f=u.get(l)??null;if(f||(f=p.addSourceFileAtPathIfExists(l)??null,f&&u.set(ue(f.getFilePath()),f)),f)return{project:p,sourceFile:f}}return null}):null;return{sourceFile:c=>a(c)?.sourceFile??null,sourceFileMatch:a,indexedTypeScriptLikeDocuments:s}}function mo(t,e,n){let r=e.map(({project:i})=>({project:i,sourceFiles:new Map(i.getSourceFiles().map(s=>[ue(s.getFilePath()),s]))}));for(let i of n){let s=ue(Ft.resolve(t,i));for(let o of r){if(o.sourceFiles.has(s))break;let a=o.project.addSourceFileAtPathIfExists(s)??null;if(a){o.sourceFiles.set(ue(a.getFilePath()),a);break}}}return r}function ue(t){return Ft.resolve(t)}function Et(t,e){for(let n of t)if(e===n.name||e.startsWith(`${n.name}/`))return n.name;return null}function Ir(t){let e=`${t.relativeDir}/src`;return[`${e}/index.ts`,`${e}/index.tsx`,`${e}/index.mts`,`${e}/index.cts`]}import{existsSync as pe,readFileSync as go}from"fs";import D from"path";var At=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"];function Nt(t,e){let r=e?D.dirname(D.join(t,e)):t,i=D.resolve(t);for(;r.startsWith(i);){for(let o of At){let a=D.join(r,o);if(pe(a))return a}let s=D.dirname(r);if(s===r)break;r=s}for(let s of At){let o=D.join(t,s);if(pe(o))return o}return null}function xr(t){let e=t.config.projectRoot,n=new Set(yo(e,t.config.semantic?.typescript?.tsconfigs)),r=Y(t,{includeIgnored:!1,extensions:le});for(let i of r){let s=Nt(e,i);s&&n.add(D.resolve(s))}if(n.size===0){let i=Nt(e);i&&n.add(D.resolve(i))}return[...n].filter(i=>!Mr(e,i)).sort((i,s)=>i.localeCompare(s))}function yo(t,e=[]){let n=new Set;for(let r of e){let i=D.isAbsolute(r)?r:D.join(t,r);pe(i)&&n.add(D.resolve(i))}for(let r of So(t))for(let i of At){let s=D.join(r,i);pe(s)&&n.add(D.resolve(s))}if(n.size===0){let r=Nt(t);r&&n.add(D.resolve(r))}return[...n].filter(r=>!Mr(t,r)).sort((r,i)=>r.localeCompare(i))}function So(t){let e=D.join(t,"package.json");if(!pe(e))return[];let n;try{n=JSON.parse(go(e,"utf8"))}catch{return[]}return(Array.isArray(n.workspaces)?n.workspaces:n.workspaces?.packages??[]).flatMap(i=>Yt(t,i))}function Mr(t,e){let n=D.relative(t,e).replace(/\\/g,"/");return n.startsWith("..")||n.includes("/node_modules/")||n.startsWith("node_modules/")||n.includes("/dist/")||n.startsWith("dist/")}import{createRequire as ho}from"module";var Cr=ho(import.meta.url),fe,Ue;function _t(){if(fe!==void 0)return fe;try{fe=Cr("ts-morph")}catch{fe=null}return fe}function We(){if(Ue)return Ue;let t=_t();if(!t)return"ts-morph:unavailable";let e="unknown";try{e=Cr("ts-morph/package.json").version??"unknown"}catch{}return Ue=`ts-morph:${e}:typescript:${t.ts.version}`,Ue}function kr(t,e){return e.map(n=>({tsconfigPath:n,project:new t.Project({tsConfigFilePath:n,skipFileDependencyResolution:!0})}))}function Be(t,e,n){return{language:"typescript",availability:()=>({available:!1,reason:t,tsconfigPath:e,tsconfigPaths:n}),importUsage:()=>[],referencesFor:()=>[],calleesFor:()=>[],signatureFor:()=>null}}function qe(t,e){let n=new Map(t.map(i=>[i.symbol,i])),r=new Map(t.map(i=>[i.symbolId,[]]));for(let i of e.values())for(let s of i){let o=n.get(s.targetSymbol);o&&r.get(o.symbolId).push(s.location)}for(let[i,s]of r)r.set(i,bo(s));return r}function wr(t,e,n){let r=Tr(t,e),i=Tr(t,n),s=[...r].filter(u=>!i.has(u)).sort(),o=[...i].filter(u=>!r.has(u)).sort(),a=Dr(t,e),c=Dr(t,n),l=[...a].filter(u=>!c.has(u)).sort(),p=[...c].filter(u=>!a.has(u)).sort();return{passed:s.length===0&&o.length===0,expectedCount:r.size,actualCount:i.size,missing:s,extra:o,callerFiles:{passed:l.length===0&&p.length===0,expectedCount:a.size,actualCount:c.size,missing:l,extra:p}}}function Dr(t,e){let n=new Set;for(let r of t)for(let i of e.get(r.symbolId)??[])i.file!==r.relativePath&&n.add(`${r.symbol}\0${i.file}`);return n}function Pr(t,e,n){let r=new Set(n),i=new Map(n.map(s=>[s,[]]));for(let s of t)for(let o of e.get(s.symbolId)??[])r.has(o.file)&&i.get(o.file).push({targetSymbol:s.symbol,location:o});for(let[s,o]of i)i.set(s,Ro(o));return i}function Tr(t,e){let n=new Set;for(let r of t)for(let i of e.get(r.symbolId)??[])n.add(`${r.symbol}\0${i.file}\0${i.line}\0${i.column}`);return n}function bo(t){let e=new Map;for(let n of t)e.set(`${n.file}\0${n.line}\0${n.column}`,n);return[...e.values()].sort(Fr)}function Ro(t){let e=new Map;for(let n of t){let{location:r}=n;e.set(`${n.targetSymbol}\0${r.file}\0${r.line}\0${r.column}`,n)}return[...e.values()].sort((n,r)=>n.targetSymbol.localeCompare(r.targetSymbol)||Fr(n.location,r.location))}function Fr(t,e){return t.file.localeCompare(e.file)||t.line-e.line||t.column-e.column}var vo=32;function Lr(t,e){let n=C("typescript.provider.load",()=>_t());if(!n)return Be("ts-morph is not installed");let r=C("typescript.provider.tsconfig-discovery",()=>xr(t));if(r.length===0)return Be("no tsconfig found");try{let i=C("typescript.provider.project-bundles",()=>kr(n,r),()=>({tsconfigs:r.length}));return Io(t,n,i)}catch(i){return Be(i instanceof Error?i.message:String(i),r[0],r)}}function Io(t,e,n,r={}){return C("typescript.provider.construct",()=>new Lt(t,e,n),()=>({tsconfigs:n.length,reusedProjects:r.reusedProjects===!0}))}var Lt=class{constructor(e,n,r){this.db=e;this.tsMorph=n;this.projects=r;this.workspacePackages=Jt(e.config.projectRoot),this.sourceFiles=vr(e,r)}db;tsMorph;projects;language="typescript";importUsageCache=new Map;referencesCache=new Map;calleesCache=new Map;fileCalleesCache=new Map;signatureCache=new Map;definitionNodeCache=new Map;fileDefinitionNodeCache=new Map;indexedDefinitionLeafCache=new Map;compilerCheckerCache=new WeakMap;packageImportReferenceIndex=null;packageExportIndex=null;workspacePackages;sourceFiles;availability(){return{available:!0,tsconfigPath:this.projects[0]?.tsconfigPath,tsconfigPaths:this.projects.map(e=>e.tsconfigPath)}}importUsage(e){return P(this.importUsageCache,e,()=>{let n=this.sourceFiles.sourceFile(e);if(!n)return[];let r=Mo();return C("typescript.import-usage.file",()=>this.importUsageForSourceFile(e,n,r),()=>({file:e,...r}))})}referencesFor(e){return P(this.referencesCache,e.symbolId,()=>{let n=this.nodeForDefinition(e);return this.referencesForDefinitionNode(e,n)})}referencesForDefinitions(e,n={}){let r=new Map,i=W(),s=[];for(let p of e){let u=this.referencesCache.get(p.symbolId);u?r.set(p.symbolId,u):s.push(p)}if(s.length===0)return r;let o=s,a=n.exact?[]:s.filter(p=>!Ar(p));if(a.length>=vo){let p=this.referencesForDefinitionsBySymbolScan(a);for(let u of a){let f=p.get(u.symbolId)??[];this.referencesCache.set(u.symbolId,f),r.set(u.symbolId,f)}if(o=s.filter(u=>Ar(u)),o.length===0)return r}let c=new Map;for(let p of o){let u=c.get(p.relativePath);u?u.push(p):c.set(p.relativePath,[p])}let l=[];for(let[p,u]of c){let f=Nr();C("typescript.references-map.file",()=>{let d=this.definitionNodesForFile(p);for(let m of u){i&&(f.cacheMisses+=1);let b=d.get(m.symbolId)??null;i&&(b?f.nodeHits+=1:f.nodeMisses+=1);try{let g=this.referencesForDefinitionNode(m,b,i?f:void 0);this.referencesCache.set(m.symbolId,g),r.set(m.symbolId,g)}catch{f.preciseSearchFailures+=1,l.push(m)}}},()=>({relativePath:p,definitions:u.length,..._r(f)}))}if(l.length>0){let p=this.referencesForDefinitionsBySymbolScan(l);for(let u of l){let f=p.get(u.symbolId)??[];this.referencesCache.set(u.symbolId,f),r.set(u.symbolId,f)}}return r}referenceFragmentsForFiles(e){let n=he(this.db).filter(s=>_(s.relativePath)),r=e.filter(s=>this.sourceFiles.sourceFile(s)!==null),i=this.referencesForDefinitionsBySymbolScan(n,r);return Pr(n,i,r)}referencesForDefinitionsBySymbolScan(e,n){let r=W(),i=Nr(),s=new Map,o=new Set(e.map(c=>c.symbolId)),a=new Map(e.map(c=>[c.symbolId,c]));for(let c of e)s.set(c.symbolId,[]);return C("typescript.references-map.inverted-scan",()=>{let c=r?R.now():0,l=n?this.packageImportReferencesForFiles(n):this.packageImportReferences();for(let g of e){let S=l.get(g.symbolId)??[];if(S.length>0){let I=s.get(g.symbolId)??[];I.push(...S),s.set(g.symbolId,I)}r&&(i.packageReferenceCount+=S.length)}r&&(i.packageRefsMs+=R.now()-c);let p=new Map,u=new Map,f=this.hierarchyTargetsForDefinitions(e),d=new Set(e.map(g=>g.leaf).filter(Boolean)),m=r?R.now():0;for(let g of n??this.sourceFiles.indexedTypeScriptLikeDocuments()){if(this.db.isIgnored(g))continue;let S=this.sourceFiles.sourceFile(g);S&&(r&&(i.scanFiles+=1),this.addReferencesFromSourceFileScan(S,g,o,a,f,d,p,u,s,r?i:void 0))}r&&(i.scanMs+=R.now()-m);let b=r?R.now():0;this.addHierarchyMemberReferences(e,s,r?i:void 0),r&&(i.hierarchyMs+=R.now()-b);for(let[g,S]of s){let I=ee(S);s.set(g,I),r&&(i.referenceCount+=I.length)}},()=>({definitions:e.length,..._r(i)})),s}addReferencesFromSourceFileScan(e,n,r,i,s,o,a,c,l,p){let u=this.compilerCheckerForSourceFile(e),f=e.compilerNode,d=Do(e),m=b=>{if(this.tsMorph.ts.isIdentifier(b)){if(p&&(p.identifiers+=1),!o.has(b.text)&&!d.has(b.text)){this.tsMorph.ts.forEachChild(b,m);return}let g=this.compilerReferenceSymbol(u,b,p);if(g){let S;a.has(g)?S=a.get(g)??null:(S=this.referenceDefinitionFromCompilerSymbol(g),a.set(g,S)),p&&(S?p.targetHits+=1:p.targetMisses+=1);let I=P(c,g,()=>this.compilerSymbolKeys(g)),j=null,T=null,L=S&&r.has(S.symbolId)?i.get(S.symbolId):void 0;if(L&&(j=jt(f,b),!Er(L,n,j))){let O=f.getLineAndCharacterOfPosition(b.getStart(f));T={file:n,line:O.line,column:O.character};let E=l.get(L.symbolId)??[];E.push(T),l.set(L.symbolId,E),p&&(p.requestedHits+=1)}for(let O of I)for(let E of s.get(O)?.values()??[]){if(j??=jt(f,b),Er(E,n,j))continue;if(!T){let v=f.getLineAndCharacterOfPosition(b.getStart(f));T={file:n,line:v.line,column:v.character}}let y=l.get(E.symbolId)??[];y.push(T),l.set(E.symbolId,y),p&&(p.requestedHits+=1)}}}this.tsMorph.ts.forEachChild(b,m)};m(f)}hierarchyTargetsForDefinitions(e){let n=new Map;for(let r of e){let i=this.nodeForDefinition(r),s=i?.compilerNode;if(!s||!this.isHierarchyMethod(s))continue;let o=s.parent;if(!this.isHierarchyContainer(o))continue;let a=this.compilerCheckerForSourceFile(i.getSourceFile()),c=a.getSymbolAtLocation(s.name);if(c)for(let l of this.hierarchyMemberSymbols(a,o,c))for(let p of this.compilerSymbolKeys(l)){let u=n.get(p)??new Map;u.set(r.symbolId,r),n.set(p,u)}}return n}hierarchyMemberSymbols(e,n,r){let i=new Set,s=new Set,o=(a,c,l)=>{if(!s.has(a)){s.add(a),i.add(c);for(let p of l){let u=p.getProperty(r.name);u&&o(p,u,this.hierarchyAncestorTypesForType(e,p))}}};return o(e.getTypeAtLocation(n),r,this.hierarchyAncestorTypes(e,n)),i}addHierarchyMemberReferences(e,n,r){let i=new Map;for(let s of e){let o=this.nodeForDefinition(s),a=o?.compilerNode;if(!a||!this.isHierarchyMethod(a))continue;let c=a.parent;if(!this.isHierarchyContainer(c))continue;let l=this.compilerCheckerForSourceFile(o.getSourceFile()),p=l.getSymbolAtLocation(a.name);if(!p)continue;let u=a.getSourceFile(),f=u.getLineAndCharacterOfPosition(a.name.getStart(u)),d={definition:s,location:{file:s.relativePath,line:f.line,column:f.character}},m=n.get(s.symbolId)??[];for(let g of this.hierarchyMemberSymbols(l,c,p))if(g!==p)for(let S of this.compilerSymbolLocations(g))m.push(S),r&&(r.hierarchyReferences+=1);n.set(s.symbolId,m);let b=this.hierarchyRootMemberSymbols(l,c,p);for(let g of b){let S=i.get(g)??new Map;S.set(s.symbolId,d),i.set(g,S)}r&&(r.hierarchyDefinitions+=1)}for(let s of i.values())if(!(s.size<2)){r&&(r.hierarchyFamilies+=1);for(let{definition:o}of s.values()){let a=n.get(o.symbolId)??[];for(let c of s.values())c.definition.symbolId!==o.symbolId&&(a.push(c.location),r&&(r.hierarchyReferences+=1));n.set(o.symbolId,a)}}}hierarchyRootMemberSymbols(e,n,r){let i=new Set,s=new Set,o=(a,c,l)=>{if(s.has(a))return;s.add(a);let p=!1;for(let u of l){let f=u.getProperty(r.name);f&&(p=!0,o(u,f,this.hierarchyAncestorTypesForType(e,u)))}if(!p)for(let u of this.compilerSymbolKeys(c))i.add(u)};return o(e.getTypeAtLocation(n),r,this.hierarchyAncestorTypes(e,n)),i}compilerSymbolKeys(e){return(e.declarations??[]).map(n=>{let r=n.getSourceFile();return`${r.fileName}\0${n.getStart(r)}\0${e.name}`})}compilerSymbolLocations(e){let n=[];for(let r of e.declarations??[]){let i=r.getSourceFile(),s=te(this.db.config.projectRoot,i.fileName);if(!s)continue;let o=r.name,a=i.getLineAndCharacterOfPosition((o??r).getStart(i));n.push({file:s,line:a.line,column:a.character})}return n}baseTypes(e,n){try{return e.getBaseTypes(n)??[]}catch{return[]}}hierarchyAncestorTypes(e,n){let r=new Set(this.hierarchyAncestorTypesForType(e,e.getTypeAtLocation(n)));for(let i of n.heritageClauses??[])for(let s of i.types)r.add(e.getTypeAtLocation(s));return[...r]}hierarchyAncestorTypesForType(e,n){let r=new Set(this.baseTypes(e,n));for(let i of n.getSymbol()?.declarations??[])if(this.isHierarchyContainer(i))for(let s of i.heritageClauses??[])for(let o of s.types)r.add(e.getTypeAtLocation(o));return[...r]}isHierarchyMethod(e){return this.tsMorph.ts.isMethodDeclaration(e)||this.tsMorph.ts.isMethodSignature(e)}isHierarchyContainer(e){return this.tsMorph.ts.isClassDeclaration(e)||this.tsMorph.ts.isClassExpression(e)||this.tsMorph.ts.isInterfaceDeclaration(e)}compilerReferenceSymbol(e,n,r){r&&(r.symbolLookups+=1);let i=e.getSymbolAtLocation(n);if(i){if((i.flags&this.tsMorph.ts.SymbolFlags.Alias)===0)return i;try{return r&&(r.aliasResolutions+=1),e.getAliasedSymbol(i)}catch{return i}}}calleesFor(e){return P(this.calleesCache,e.symbolId,()=>P(this.fileCalleesCache,e.relativePath,()=>this.calleeMapForFile(e.relativePath)).get(e.symbolId)??[])}calleesForDefinitions(e){let n=new Map,r=new Map;for(let i of e){let s=r.get(i.relativePath);s?s.push(i):r.set(i.relativePath,[i])}for(let[i,s]of r){let o=this.fileCalleesCache.get(i),a=new Set(s.map(l=>l.symbolId)),c=o??this.calleeMapForFile(i,a);for(let l of s){let p=c.get(l.symbolId)??[];this.calleesCache.set(l.symbolId,p),n.set(l.symbolId,p)}}return n}referencesForDefinitionNode(e,n,r){let i=r?R.now():0,s=this.packageImportReferencesForDefinition(e);if(r&&(r.packageRefsMs+=R.now()-i,r.packageReferenceCount+=s.length),!n)return s;let o=r?R.now():0,a=gr(n,e,s,this.db.config.projectRoot);return r&&(r.semanticRefsMs+=R.now()-o,r.referenceCount+=a.length),a}signatureFor(e){return P(this.signatureCache,e.symbolId,()=>{let n=this.nodeForDefinition(e);if(!n||!this.tsMorph.Node.isFunctionDeclaration(n)&&!this.tsMorph.Node.isMethodDeclaration(n)&&!this.tsMorph.Node.isArrowFunction(n)&&!this.tsMorph.Node.isFunctionExpression(n)&&!this.tsMorph.Node.isConstructorDeclaration(n))return null;let r=n.getType().getCallSignatures()[0];if(!r)return null;let i=r.getParameters().map(o=>{let a=o.getDeclarations()[0],c=a?o.getTypeAtLocation(a).getText(a):o.getValueDeclaration()?.getType().getText()??"unknown";return jr(c)}),s=r.getReturnType().getText(n);return`(${i.join(",")})=>${jr(s)}`})}importUsageForSourceFile(e,n,r){let i=[],s=new Map;for(let o of n.getImportDeclarations()){r.declarations+=1;let a=Ze(this.db,e,o.getModuleSpecifierValue()),c=o.getImportClause()?.isTypeOnly()??!1;for(let l of Ot(o)){r.entries+=1;let p=c?null:l.identifier?.getSymbol()?.compilerSymbol??null;!c&&l.identifier&&(p?r.bindingSymbols+=1:r.missingBindingSymbols+=1);let u={sourcePath:a,entry:l,typeOnlyDeclaration:c,bindingSymbol:p,references:[]};if(i.push(u),c||!l.localName||!p)continue;let f=s.get(l.localName);f?f.push(u):s.set(l.localName,[u])}}return s.size>0&&n.forEachDescendant(o=>{if(o.getKindName()!=="Identifier")return;let a=s.get(o.getText());if(!a||Co(o))return;r.scannedIdentifiers+=1;let c=o.getSymbol()?.compilerSymbol;if(r.symbolLookups+=1,!!c){for(let l of a)if(l.bindingSymbol===c){l.references.push({location:Oe(o,this.db.config.projectRoot),node:o}),r.matchedReferences+=1;break}}}),i.map(o=>o.typeOnlyDeclaration?xo(e,o.sourcePath,o.entry):o.entry.identifier&&!o.bindingSymbol?(r.fallbackEntries+=1,this.valueImportUsageForEntry(e,o.sourcePath,o.entry)):this.valueImportUsageFromLocations(e,o.sourcePath,o.entry,o.references))}valueImportUsageForEntry(e,n,r){let i=r.identifier?r.identifier.findReferences():[],s=[];for(let o of i)for(let a of yr(o,e,r.identifier,this.db.config.projectRoot))s.push(a);return this.valueImportUsageFromLocations(e,n,r,s)}valueImportUsageFromLocations(e,n,r,i){let s=i.some(c=>!kt(c.node)),o=i.some(c=>kt(c.node)),a=r.isTypeOnly;return{importer:e,sourcePath:n,importedName:r.importedName,localName:r.localName,kind:r.kind,isTypeOnly:a,isUsed:a||i.length>0,isTypeUsed:a||o,isValueUsed:s,references:i.map(c=>c.location)}}packageImportReferencesForDefinition(e){return this.packageImportReferences().get(e.symbolId)??[]}packageImportReferencesForFiles(e){let n=new Map,r=new Set;for(let s of e){let o=this.sourceFiles.sourceFile(s);if(o)for(let a of o.getImportDeclarations()){let c=Et(this.workspacePackages,a.getModuleSpecifierValue());c&&r.add(c)}}if(r.size===0)return n;let i=this.packageExportsForNames(r);for(let s of e)this.addPackageImportReferencesForDocument(n,i,s);for(let[s,o]of n)n.set(s,ee(o));return n}packageImportReferences(){if(this.packageImportReferenceIndex)return this.packageImportReferenceIndex;let e=new Map,n=this.packageExports();for(let r of this.sourceFiles.indexedTypeScriptLikeDocuments())this.addPackageImportReferencesForDocument(e,n,r);for(let[r,i]of e)e.set(r,ee(i));return this.packageImportReferenceIndex=e,e}addPackageImportReferencesForDocument(e,n,r){if(this.db.isIgnored(r))return;let i=this.sourceFiles.sourceFileMatch(r);if(i)for(let s of i.sourceFile.getImportDeclarations())this.addPackageImportReferencesForDeclaration(e,n,r,s)}addPackageImportReferencesForDeclaration(e,n,r,i){let s=Et(this.workspacePackages,i.getModuleSpecifierValue());if(!s)return;let o=n.get(s);if(o)for(let a of Ot(i)){if(a.kind!=="named"||!a.identifier)continue;let c=o.get(a.importedName);if(!c||c.size===0)continue;let l=Sr(a.identifier,r,this.db.config.projectRoot);l.length>0&&Fo(e,c,l)}}packageExports(){return this.packageExportIndex?this.packageExportIndex:(this.packageExportIndex=this.packageExportsForNames(new Set(this.workspacePackages.map(e=>e.name))),this.packageExportIndex)}packageExportsForNames(e){let n=new Map;for(let r of this.workspacePackages){if(!e.has(r.name))continue;let i=new Map;for(let s of Ir(r))this.collectPackageExports(r,s,i,new Set);i.size>0&&n.set(r.name,i)}return n}collectPackageExports(e,n,r,i){if(i.has(n))return;i.add(n);let s=this.sourceFiles.sourceFile(n);if(s)for(let o of s.getExportDeclarations()){let a=o.getModuleSpecifierValue(),c=a?Ze(this.db,n,a):n;if(!c||!c.startsWith(`${e.relativeDir}/src/`))continue;let l=o.getNamedExports();if(l.length===0){if(o.isNamespaceExport())continue;this.collectPackageExports(e,c,r,i);continue}for(let p of l){let u=p.getNameNode().getText(),f=p.getAliasNode()?.getText()??u,d=this.indexedDefinitionByLeaf(c,u);if(!d)continue;let m=r.get(f);m||(m=new Set,r.set(f,m)),m.add(d.symbolId)}}}indexedDefinitionByLeaf(e,n){return P(this.indexedDefinitionLeafCache,e,()=>Rr(this.db,e)).get(n)??null}nodeForDefinition(e){return P(this.definitionNodeCache,e.symbolId,()=>this.definitionNodesForFile(e.relativePath).get(e.symbolId)??null)}definitionNodesForFile(e){return P(this.fileDefinitionNodeCache,e,()=>{let n=this.sourceFiles.sourceFile(e);return n?hr(this.tsMorph,this.db,n,e):new Map})}referenceDefinitionFromCompilerSymbol(e){return this.definitionFromCompilerSymbol(e,void 0,!0)}definitionFromCompilerSymbol(e,n,r=!1){let i=e.name,s=n?R.now():0,o=e.declarations??[];n&&(n.declarationsMs+=R.now()-s,n.declarationChecks+=o.length);for(let a of o){let c=n?R.now():0,l=a.getSourceFile(),p=te(this.db.config.projectRoot,l.fileName),u=l.getLineAndCharacterOfPosition(a.getStart(l)).line;if(n&&(n.declarationLocationMs+=R.now()-c),!p||this.db.isIgnored(p))continue;let f=n?R.now():0,d=this.compilerDeclarationName(a),m=r?wt(this.db,p,u,i)??(d&&d!==i?wt(this.db,p,u,d):null):br(this.db,p,u,i);if(n&&(n.indexedLookupMs+=R.now()-f),m)return{symbolId:m.symbolId,symbol:m.symbol,file:m.relativePath,line:m.startLine}}return null}compilerDeclarationName(e){let n=e.name;return n&&this.tsMorph.ts.isIdentifier(n)?n.text:null}calleeMapForFile(e,n){let r=W(),i=0,s=0,o=0,a=0,c=0,l=0,p=0,u=0,f=r?wo():void 0;return C("typescript.callee-map.file",()=>{let d=r?R.now():0,m=this.sourceFiles.sourceFile(e);if(r&&(c=Math.round(R.now()-d)),!m)return new Map;let b=r?R.now():0,g=B(this.db,e).sort((y,v)=>y.startLine-v.startLine||v.endLine-y.endLine);if(r&&(l=Math.round(R.now()-b)),i=g.length,g.length===0)return new Map;let S=new Map,I=r?R.now():0,j=this.compilerCheckerForSourceFile(m),T=m.compilerNode;r&&(p=Math.round(R.now()-I));let L=new Map,O=y=>{if(this.tsMorph.ts.isCallExpression(y)||this.tsMorph.ts.isNewExpression(y)){r&&(s+=1);let v=this.semanticCalleeForCallNode(j,T,g,y,L,n,f);v&&(r&&(o+=1),ko(S,v.callerId,v.target))}this.tsMorph.ts.forEachChild(y,O)},E=r?R.now():0;O(T),r&&(u=Math.round(R.now()-E));for(let[y,v]of S)S.set(y,Eo(v));return a=S.size,S},()=>({relativePath:e,definitions:i,callNodes:s,resolvedCallees:o,outputRows:a,requestedDefinitions:n?.size??i,sourceFileLookupMs:c,definitionsLoadMs:l,checkerLookupMs:p,traversalMs:u,...f?Po(f):{}}))}semanticCalleeForCallNode(e,n,r,i,s,o,a){let c=a?R.now():0,l=To(r,jt(n,i));if(a&&(a.callerLookupMs+=R.now()-c),!l)return null;if(o&&!o.has(l.symbolId))return a&&(a.skippedUnrequestedCallers+=1),null;let p=i.expression,u=this.compilerSymbolForExpression(e,p,a),f=null;if(u)if(a&&(a.targetSymbolHits+=1),s.has(u))a&&(a.compilerSymbolCacheHits+=1),f=s.get(u)??null;else{a&&(a.compilerSymbolCacheMisses+=1);let d=a?R.now():0;f=this.definitionFromCompilerSymbol(u,a),a&&(a.targetLookupMs+=R.now()-d),s.set(u,f)}else a&&(a.targetMisses+=1);return f?{callerId:l.symbolId,target:{symbol:f.symbol,file:f.file,line:f.line}}:null}compilerSymbolForExpression(e,n,r){let i=r?R.now():0,s=e.getSymbolAtLocation(n);if(r&&(r.expressionSymbolMs+=R.now()-i),s)return s;r&&(r.typeFallbacks+=1);let o=r?R.now():0,a=e.getTypeAtLocation(n).getSymbol();return r&&(r.typeSymbolMs+=R.now()-o),a}compilerCheckerForSourceFile(e){let n=e.getProject(),r=this.compilerCheckerCache.get(n);return r||(r=n.getTypeChecker().compilerObject,this.compilerCheckerCache.set(n,r)),r}};function Ot(t){let e=[],n=t.getDefaultImport();n&&e.push({identifier:n,importedName:"default",localName:n.getText(),kind:"default",isTypeOnly:t.getImportClause()?.isTypeOnly()??!1});let r=t.getNamespaceImport();r&&e.push({identifier:r,importedName:"*",localName:r.getText(),kind:"namespace",isTypeOnly:t.getImportClause()?.isTypeOnly()??!1});for(let i of t.getNamedImports()){let s=i.getNameNode(),a=i.getAliasNode()??(s.getKindName()==="Identifier"?s:null);e.push({identifier:a,importedName:s.getText(),localName:a?.getText()??s.getText(),kind:"named",isTypeOnly:i.isTypeOnly()||(t.getImportClause()?.isTypeOnly()??!1)})}return e.length===0&&e.push({identifier:null,importedName:"*",localName:null,kind:"side-effect",isTypeOnly:!1}),e}function xo(t,e,n){return{importer:t,sourcePath:e,importedName:n.importedName,localName:n.localName,kind:n.kind,isTypeOnly:!0,isUsed:!0,isTypeUsed:!0,isValueUsed:!1,references:[]}}function Mo(){return{declarations:0,entries:0,bindingSymbols:0,missingBindingSymbols:0,scannedIdentifiers:0,symbolLookups:0,matchedReferences:0,fallbackEntries:0}}function Co(t){for(let e=t;e;e=e.getParent())if(e.getKindName()==="ImportDeclaration")return!0;return!1}function ko(t,e,n){let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)}function Do(t){let e=new Set;for(let n of t.getImportDeclarations())for(let r of Ot(n))r.localName&&e.add(r.localName);return e}function To(t,e){let n=null;for(let r of t)e<r.startLine||e>r.endLine||(!n||r.startLine>=n.startLine)&&(n=r);return n}function jt(t,e){return t.getLineAndCharacterOfPosition(e.getStart(t)).line}function Er(t,e,n){return e===t.relativePath&&n>=t.startLine&&n<=t.endLine}function Ar(t){return t.symbol.includes("#")?Se(t.symbol)==="type"&&t.relativePath.endsWith(".d.ts"):!1}function wo(){return{callerLookupMs:0,expressionSymbolMs:0,typeSymbolMs:0,targetLookupMs:0,declarationsMs:0,declarationLocationMs:0,indexedLookupMs:0,compilerSymbolCacheHits:0,compilerSymbolCacheMisses:0,targetSymbolHits:0,targetMisses:0,typeFallbacks:0,declarationChecks:0,skippedUnrequestedCallers:0}}function Po(t){return{...t,callerLookupMs:Math.round(t.callerLookupMs),expressionSymbolMs:Math.round(t.expressionSymbolMs),typeSymbolMs:Math.round(t.typeSymbolMs),targetLookupMs:Math.round(t.targetLookupMs),declarationsMs:Math.round(t.declarationsMs),declarationLocationMs:Math.round(t.declarationLocationMs),indexedLookupMs:Math.round(t.indexedLookupMs)}}function Nr(){return{cacheHits:0,cacheMisses:0,nodeHits:0,nodeMisses:0,scanFiles:0,identifiers:0,symbolLookups:0,aliasResolutions:0,targetHits:0,targetMisses:0,requestedHits:0,scanMs:0,packageRefsMs:0,semanticRefsMs:0,packageReferenceCount:0,referenceCount:0,preciseSearchFailures:0,hierarchyDefinitions:0,hierarchyFamilies:0,hierarchyReferences:0,hierarchyMs:0}}function _r(t){return{...t,scanMs:Math.round(t.scanMs),packageRefsMs:Math.round(t.packageRefsMs),semanticRefsMs:Math.round(t.semanticRefsMs),hierarchyMs:Math.round(t.hierarchyMs)}}function Fo(t,e,n){for(let r of e){let i=t.get(r)??[];i.push(...n),t.set(r,i)}}function Eo(t){let e=new Set,n=[];for(let r of t){let i=`${r.symbol}|${r.file}|${r.line}`;e.has(i)||(e.add(i),n.push(r))}return n}function jr(t){return t.replace(/\s+/g," ").replace(/\bimport\("[^"]+"\)\./g,"").trim()}import{createHash as Ao}from"crypto";import{readFileSync as No}from"fs";import{dirname as _o,join as $e}from"path";var ze=2,jo="typescript-semantic";function Or(t){let e=$e(t,jo);return{rootDir:e,requestDir:$e(e,"requests"),responseDir:$e(e,"responses")}}function Ur(t){try{let e=JSON.parse(No($e(_o(t),"meta.json"),"utf8"));return e.version!==2&&e.version!==3||typeof e.status!="string"||typeof e.updatedAt!="string"||e.fingerprint===void 0?null:Ao("sha256").update(JSON.stringify({version:e.version,status:e.status,updatedAt:e.updatedAt,fingerprint:e.fingerprint,indexedLanguages:e.indexedLanguages})).digest("hex")}catch{return null}}var Bo=12e4,qo=5;function zr(t,e,n={}){let r=new Wt(t,n),i=null,s=null,o=process.env.SCIP_QUERY_SKIP_WATCH_SERVICE==="1",a=()=>(i??=Lr(t,e),i),c=(u,f,d)=>{if(o)return d();try{return f(r.request(u))}catch{return o=!0,d()}},l=(u,f)=>c({kind:"references",definitions:[...u],...f?.exact?{exact:!0}:{}},d=>$r(d),()=>a().referencesForDefinitions?.(u,f)??new Map(u.map(d=>[d.symbolId,a().referencesFor(d)]))),p=u=>c({kind:"callees",definitions:[...u]},f=>$r(f),()=>a().calleesForDefinitions?.(u)??new Map(u.map(f=>[f.symbolId,a().calleesFor(f)])));return{language:"typescript",availability:()=>(s??=c({kind:"availability"},Ho,()=>a().availability()),s),importUsage:u=>c({kind:"import-usage",file:u},f=>f,()=>a().importUsage(u)),referencesFor:u=>l([u]).get(u.symbolId)??[],referencesForDefinitions:l,referenceFragmentsForFiles:u=>c({kind:"reference-fragments",files:[...u]},f=>zo(f),()=>a().referenceFragmentsForFiles?.(u)??new Map),calleesFor:u=>p([u]).get(u.symbolId)??[],calleesForDefinitions:p,signatureFor:u=>c({kind:"signature",definition:u},Vo,()=>a().signatureFor(u)),dispose:()=>i?.dispose?.()}}var Wt=class{constructor(e,n={}){this.db=e;this.runtime=n.runtime??Jo,this.timeoutMs=n.timeoutMs??Ko(),this.cacheDir=Wo(e.config.dbPath)}db;runtime;timeoutMs;cacheDir;request(e){let n=dr(this.cacheDir),r=Or(this.cacheDir),i=Ct(n.statePath);if(!qr(i,this.db.config.projectRoot,this.runtime))throw new Error("Compatible TypeScript semantic service is not running.");let s=Ur(this.db.config.dbPath);if(!s)throw new Error("Published TypeScript generation identity is unavailable.");let o=this.runtime.randomId(),a=Ut(r.requestDir,`${o}.json`),c=Ut(r.responseDir,`${o}.json`),l=this.runtime.now()+this.timeoutMs;Wr(r.requestDir,{recursive:!0}),Wr(r.responseDir,{recursive:!0}),Ie(a,{protocolVersion:ze,id:o,generation:s,deadlineAtMs:l,profileEnvironment:Gt(),request:e});try{for(;this.runtime.now()<=l;){if(Oo(c))return $o(Uo(c,"utf8"),o,s);let p=Ct(n.statePath);if(!qr(p,this.db.config.projectRoot,this.runtime))throw new Error("TypeScript semantic service stopped while processing a request.");this.runtime.sleep(qo)}throw new Error(`TypeScript semantic service timed out after ${this.timeoutMs}ms.`)}finally{Br(a,{force:!0}),Br(c,{force:!0})}}};function qr(t,e,n){let r=t!==null&&n.now()-Date.parse(t.heartbeatAt)<=fr,i=t?.typescriptSemantic?.busyUntil!==void 0&&n.now()<=Date.parse(t.typescriptSemantic.busyUntil);return t!==null&&t.projectRoot===Ut(e)&&t.typescriptSemantic?.protocolVersion===ze&&n.isProcessAlive(t.pid)&&(r||i)}function $o(t,e,n){let r=JSON.parse(t);if(r.protocolVersion!==ze||r.id!==e||r.ok===!0&&r.generation!==n)throw new Error("TypeScript semantic service wrote an incompatible response.");if(r.ok===!0)return r.response;throw new Error(typeof r.error=="string"?r.error:"TypeScript semantic service request failed.")}function $r(t){if(!Array.isArray(t))throw new Error("TypeScript semantic service wrote an invalid numeric map.");return new Map(t)}function zo(t){if(!Array.isArray(t))throw new Error("TypeScript semantic service wrote an invalid string map.");return new Map(t)}function Ho(t){if(!t||typeof t!="object"||typeof t.available!="boolean")throw new Error("TypeScript semantic service wrote invalid availability.");return t}function Vo(t){if(t!==null&&typeof t!="string")throw new Error("TypeScript semantic service wrote an invalid signature.");return t}function Ko(){let t=Number(process.env.SCIP_TYPESCRIPT_SEMANTIC_TIMEOUT_MS);return Number.isInteger(t)&&t>0?t:Bo}var Jo={now:Date.now,randomId:Lo,sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)},isProcessAlive:Q};var Hr=new Le;Ht({name:"semantic-provider",groups:["semantic-provider"],clearAll:t=>Hr.clear(t)});function Bt(t,e){let n=Yo(e)??"typescript";return Hr.getOrCreate(t,n,()=>n==="rust"?cr(t.config.projectRoot,{sourceImportUsageResolver:{importUsageFacts:r=>Tn(t,r)},calleeSymbolResolver:Dn(t),sourceZeroCalleeOracle:r=>Go(t,r),scipOccurrenceCalleeOracle:r=>pr(t,r)}):zr(t,e))}function Yo(t){return t?en(t)==="rust"?"rust":_(t)?"typescript":null:"typescript"}function Go(t,e){let n=ge(t,e.relativePath);if(!n||n.language!=="rust")return!1;let r=n.callables.find(i=>i.startLine===e.startLine&&i.endLine===e.endLine&&i.name===e.leaf)??n.callables.find(i=>i.startLine===e.startLine&&i.endLine===e.endLine);return r?!n.callSites.some(i=>i.line>=r.startLine&&i.line<=r.endLine):!1}import{readFileSync as ea}from"fs";import{dirname as ta,join as na}from"path";function Ve(t){let e=He(t.projectFiles),n=new Set(e),r=new Map(t.snapshot.files.map(u=>[u.path,u])),i=t.snapshot.files.filter(u=>{let f=xe(u.path,["typescript"]);return f==="config"||f==="ambient"}).map(u=>u.path),s=He([...e,...i]),o=s.find(u=>!r.has(u)),a=new Set(t.snapshot.files.map(u=>u.path)).size!==t.snapshot.files.length,c=!o&&s.some(u=>Vr(r.get(u))),l=Xe(JSON.stringify({pnpmWorkspaces:t.snapshot.pnpmWorkspaces,typescriptProjectMode:t.snapshot.typescriptProjectMode,typescriptProjects:He(t.snapshot.typescriptProjects),membership:e})),p=new Map;return{identityFor(u,f){if(!n.has(u))return ne("target-outside-project");if(a)return ne("duplicate-input-path");if(o)return ne("missing-input-fingerprint");if(c)return ne("unreadable-input");let d=[],m,b;if(t.graph===null)d.push("dependency-graph-unavailable"),b="whole-project",m=s;else{let I=Xo(u,t.graph,p);if(I.find(T=>!r.has(T)))return ne("missing-input-fingerprint");if(m=He([...I,...i]),m.some(T=>Vr(r.get(T))))return ne("unreadable-input");b="dependency-closure"}let g=m.map(I=>Zo(r.get(I)));return{version:1,key:Xe(JSON.stringify({version:1,engineIdentity:t.engineIdentity,schemaVersion:f,projectIdentity:l,inputs:g})),mode:b,inputFiles:m,reasons:d}}}}function Qo(t,e){let n=new Set,r=[t];for(let i=0;i<r.length;i+=1){let s=r[i];if(!(s===void 0||n.has(s))){n.add(s);for(let o of[...e.get(s)??[]].sort())n.has(o)||r.push(o)}}return[...n].sort()}function Xo(t,e,n){let r=n.get(t);if(r)return r;let i=Qo(t,e);return n.set(t,i),i}function Zo(t){return{path:t.path,size:t.size,hash:t.hash}}function Vr(t){return t.size<0||t.hash==="unreadable"}function ne(t){return{version:1,key:null,mode:"unkeyed",inputFiles:[],reasons:[t]}}function He(t){return[...new Set(t)].sort()}var ra=Kt("typescript-semantic-identity-context",{clearGroups:["whole-project"]});function qt(t,e,n){let r=ra.get(t,()=>ia(t));if(!r)return null;let i=`${n}\0${e}`,s=r.identities.get(i);if(s)return s;let o=r.builder.identityFor(e,n);return r.identities.set(i,o),o}function de(t){return Y(t,{includeIgnored:!1}).filter(_).sort()}function ia(t){try{let e=JSON.parse(ea(na(ta(t.config.dbPath),"meta.json"),"utf8")),n=kn(e.fingerprint);return n?{builder:Ve({projectFiles:de(t),snapshot:n,graph:ye(t),engineIdentity:We()}),identities:new Map}:null}catch{return null}}var $t="typescript-reference-fragment-v2",Je=Qt({kind:"typescript-reference-fragments",invalidation:Xt("typescript-reference-fragments"),serialize:t=>JSON.stringify(t),deserialize:oa});function sp(t,e,n,r=t){let i=de(t),s=Ve({projectFiles:i,snapshot:e,graph:ye(t),engineIdentity:We()}),o=[...n].map(([a,c])=>({relativePath:a,contentHash:s.identityFor(a,$t).key,value:[...c]}));if(o.some(a=>a.contentHash===null))throw new Error("TypeScript reference fragment identity is unavailable for an affected document.");return Je.writeBatch(r,o.map(a=>({...a,contentHash:a.contentHash}))),o.length}function op(t,e,n){let r=e.filter(s=>_(s.relativePath));if(r.length===0)return Ke("no TypeScript definitions");let i=Ke("shadow did not run");return C("typescript.reference-fragments.shadow",()=>{try{let s=Bt(t,r[0].relativePath);if(!s.availability().available||!s.referenceFragmentsForFiles)return i=Ke("TypeScript reference fragment provider is unavailable"),i;let o=de(t),a=new Set(o),c=s.referenceFragmentsForFiles(o),l=qe(r,c),p=wr(r,sa(n,a),l);if(!p.passed)return i={state:"failing",files:o.length,keyedFiles:0,writtenFiles:0,...p},i;let u=[];for(let f of o){let d=qt(t,f,$t);d?.key&&u.push({relativePath:f,contentHash:d.key,value:c.get(f)??[]})}return Je.writeBatch(t,u),i={state:"passing",files:o.length,keyedFiles:u.length,writtenFiles:u.length,...p},i}catch(s){return i=Ke(s instanceof Error?s.message:String(s)),i}},()=>({...i}))}function sa(t,e){return new Map([...t].map(([n,r])=>[n,r.filter(i=>e.has(i.file))]))}function ap(t,e){if(e.length===0)return{references:new Map,files:0,cacheHits:0,cacheMisses:0,computedFiles:0};let n="fallback",r=0,i=0,s=0,o=0;return C("typescript.reference-fragments.materialize",()=>{try{let a=de(t);r=a.length;let c=new Map,l=new Map,p=[];for(let d of a){let m=qt(t,d,$t);if(!m?.key)return null;c.set(d,m.key);let b=Je.read(t,d,m.key);b===null?(s+=1,p.push(d)):(i+=1,l.set(d,b))}if(s===0)return n="hit",{references:qe(e,l),files:r,cacheHits:i,cacheMisses:s,computedFiles:o};let u=Bt(t,e[0].relativePath);if(!u.availability().available||!u.referenceFragmentsForFiles)return null;let f=u.referenceFragmentsForFiles(p);if(p.some(d=>!f.has(d)))return null;o=f.size,Je.writeBatch(t,p.map(d=>({relativePath:d,contentHash:c.get(d),value:f.get(d)??[]})));for(let[d,m]of f)l.set(d,m);return n="computed",{references:qe(e,l),files:r,cacheHits:i,cacheMisses:s,computedFiles:o}}catch{return null}},()=>({state:n,files:r,cacheHits:i,cacheMisses:s,computedFiles:o}))}function Ke(t){return{state:"unavailable",files:0,keyedFiles:0,writtenFiles:0,expectedCount:0,actualCount:0,missing:[],extra:[],reason:t}}function oa(t){try{let e=JSON.parse(t);return!Array.isArray(e)||!e.every(aa)?null:e}catch{return null}}function aa(t){if(!t||typeof t!="object")return!1;let e=t,n=e.location;return typeof e.targetSymbol=="string"&&!!n&&typeof n.file=="string"&&typeof n.line=="number"&&typeof n.column=="number"}export{Gr as a,ln as b,pn as c,ve as d,Sa as e,ri as f,ha as g,ba as h,Q as i,Ie as j,Pn as k,cc as l,lc as m,mc as n,xe as o,wa as p,bn as q,fr as r,dr as s,Ct as t,_ as u,Bt as v,Yo as w,kn as x,Aa as y,Ci as z,Na as A,Ve as B,qt as C,sp as D,op as E,ap as F};
5
- //# sourceMappingURL=chunk-EBSSCVR4.js.map
1
+ import{a as G}from"./chunk-P5XHIJHI.js";import{a as ye}from"./chunk-QEIGJJBC.js";import{a as be,e as an}from"./chunk-E7BTIEAY.js";import{b as sn,e as $,f as Se,h as on,j as ie,s as B,t as he}from"./chunk-7XP7ZRSI.js";import{a as Zt,f as ge,n as nn,p as rn}from"./chunk-JLZUM476.js";import{B as en,E as tn,e as Jt,f as Yt,s as Ze}from"./chunk-TLTLJ4SW.js";import{a as Y}from"./chunk-64MNV6AB.js";import{a as Ht,c as Vt,d as Kt,g as Xe,o as et,p as tt,q as W,r as Gt,s as k,u as me,v as Qt,x as Xt}from"./chunk-M2TRDR25.js";import{existsSync as cn,readdirSync as Jr}from"fs";import{isAbsolute as Yr,join as nt,resolve as Gr}from"path";var Qr={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:t,pnpmWorkspaces:e,indexerBinary:n,projectPath:r})=>{let i=r?["index","--output",t,"--no-progress-bar",r]:["index","--infer-tsconfig","--output",t,"--no-progress-bar"];return e&&!r&&i.splice(1,0,"--pnpm-workspaces"),{binary:n,args:i}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:t,indexerBinary:e})=>({binary:e,args:["index","--infer-tsconfig","--output",t,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["pom.xml","build.gradle"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["build.sbt"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:"rust",indexerBinary:"rust-analyzer",checkCommand:"rust-analyzer --version",indexArgs:({outputPath:t})=>({binary:"rust-analyzer",args:["scip",".","--output",t]}),markerFiles:["Cargo.toml"],installMethods:[{label:"rustup",prerequisite:"rustup",binary:"rustup",args:["component","add","rust-analyzer"]}],installUrl:"https://github.com/rust-lang/rust-analyzer"},python:{language:"python",indexerBinary:"scip-python-plus",binaryAliases:["scip-python"],checkCommand:"scip-python-plus --version",indexArgs:({outputPath:t,indexerBinary:e})=>({binary:e,args:["index","--output",t,"--project-name","project"]}),markerFiles:["pyproject.toml","setup.py"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","scip-python-plus"]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},clojure:{language:"clojure",indexerBinary:"scip-clojure",projectLocalBinaries:["node_modules/.bin/scip-clojure"],checkCommand:"scip-clojure -h",indexArgs:({projectRoot:t,outputPath:e,indexerBinary:n,configPath:r})=>{let i=["-root",t,"-output",e];return r&&i.push("-config",Yr(r)?r:Gr(t,r)),{binary:n,args:i}},markerFiles:["deps.edn","project.clj","bb.edn","shadow-cljs.edn"],installMethods:[],installUrl:"https://github.com/PlunderStruck/scip-clojure"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:t})=>({binary:t,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:["Gemfile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:t})=>({binary:"scip-go",args:["--output",t]}),markerFiles:["go.mod"],installMethods:[{label:"go install",prerequisite:"go",binary:"go",args:["install","github.com/sourcegraph/scip-go@latest"]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:t})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",t]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:t})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",t]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:t,outputPath:e})=>({binary:"scip-dotnet",args:["index",ln(t,[".sln",".csproj"])??t,"--output",e,"--working-directory",t]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:t,outputPath:e})=>({binary:"scip-dotnet",args:["index",ln(t,[".sln",".vbproj"])??t,"--output",e,"--working-directory",t]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:t,outputPath:e})=>({binary:t,args:["--output",e]}),markerFiles:["pubspec.yaml"],installMethods:[{label:"dart pub",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({projectRoot:t,indexerBinary:e})=>{let n=nt(t,"vendor","bin","scip-php"),r=nt(t,"vendor","davidrjenni","scip-php","bin","scip-php");return{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",cn(r)?r:cn(n)?n:e]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function un(t){return Qr[t]}function ln(t,e){let n;try{n=Jr(t)}catch{return null}for(let r of e)for(let i of n)if(i.endsWith(r))return nt(t,i);return null}import{execFileSync as it}from"child_process";import{existsSync as rt,readFileSync as Xr}from"fs";import{createRequire as Zr}from"module";import{platform as ei}from"os";import{dirname as pn,join as Re}from"path";var ti=Zr(import.meta.url);function st(t){return[t.indexerBinary,...t.binaryAliases??[]]}function fn(t){let e=st(t);return e.length===1?e[0]:e.join(" or ")}function ve(t){for(let e of st(t))if(be(e))return e;return ri(t)}function Ra(t){return ve(t)!==null||ni(t)}function ni(t){return dn(t)!==null}function ri(t){let e=dn(t);if(!e)return null;let r=JSON.parse(Xr(e,"utf8")).bin;if(!r)return null;if(typeof r=="string")return Re(pn(e),r);for(let i of st(t)){let s=r[i];if(s)return Re(pn(e),s)}return null}function dn(t){if(!t.bundledNpmPackage)return null;try{return ti.resolve(`${t.bundledNpmPackage}/package.json`)}catch{return null}}function ii(t,e){for(let n of t.projectLocalBinaries??[]){let r=Re(e,n);if(rt(r))return r}return null}function si(t,e){return ii(t,e)??ve(t)}function va(t,e=process.env,n=t.indexerBinary){if(t.indexerBinary!=="scip-dotnet"||ot(n,e))return e;let r=gn(n,e);return r?{...e,DOTNET_ROOT:r}:e}function mn(t,e){let n=fn(t),r=e?si(t,e):ve(t);if(!r)return{language:t.language,binaryLabel:n,installed:!1,runnable:!1,resolvedBinary:null,installUrl:t.installUrl};if(t.indexerBinary!=="scip-dotnet")return{language:t.language,binaryLabel:n,installed:!0,runnable:!0,resolvedBinary:r};let i=oi(r);return{language:t.language,binaryLabel:n,installed:!0,runnable:i.runnable,resolvedBinary:r,installUrl:t.installUrl,note:i.note}}function Ia(t,e){let n=t.installMethods,r=fn(t);if(!n?.length)return e(`No auto-install method available for ${r}.`),t.installUrl&&e(`Install manually from: ${t.installUrl}`),!1;for(let i of n)if(be(i.prerequisite)){e(`Installing ${r} via ${i.label}...`);try{it(i.binary,i.args,{stdio:"inherit",timeout:3e5,env:process.env});let s=ve(t);if(s){let o=s===t.indexerBinary?"":` (using ${s})`;return e(`Successfully installed ${r} via ${i.label}${o}`),!0}e(`${i.label} command completed but ${r} was not found on PATH`)}catch(s){let o=s instanceof Error?s.message:String(s);e(`${i.label} install failed: ${o}`)}}return e(`Could not auto-install ${r}.`),t.installUrl&&e(`Install manually from: ${t.installUrl}`),!1}function oi(t){if(ot(t,process.env))return{runnable:!0};let e=gn(t,process.env);if(e)return{runnable:!0,note:`using .NET 9 runtime from ${e}`};let n=yn(process.env);return{runnable:!1,note:n.length>0?`.NET 9 runtime still unavailable after checking ${n.join(", ")}`:"binary is present, but scip-dotnet still needs a .NET 9 runtime"}}function gn(t,e){for(let n of yn(e))if(ot(t,{...e,DOTNET_ROOT:n}))return n;return null}function yn(t){let e=[],n=t.DOTNET_ROOT;if(n&&rt(n)&&e.push(n),ei()==="darwin"&&be("brew"))try{let r=it("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:t}).toString().trim(),i=Re(r,"libexec");rt(i)&&!e.includes(i)&&e.push(i)}catch{}return e}function ot(t,e){try{return it(t,["--version"],{stdio:"pipe",env:e}),!0}catch{return!1}}function Q(t){try{return process.kill(t,0),!0}catch(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EPERM"}}import{mkdirSync as ai,renameSync as ci,writeFileSync as li}from"fs";import{dirname as ui}from"path";function Ie(t,e,n={}){ai(ui(t),{recursive:!0});let r=`${t}.${process.pid}.${Date.now()}.tmp`,i=JSON.stringify(e,null,n.spacing);li(r,n.trailingNewline?`${i}
2
+ `:i),ci(r,t)}import{execFileSync as pi}from"child_process";import{createHash as Sn}from"crypto";import{lstatSync as fi,readdirSync as di,readFileSync as mi,readlinkSync as gi,realpathSync as hn}from"fs";import{isAbsolute as yi,join as bn,relative as Si,sep as hi}from"path";function xe(t,e){let n=t.split("/").at(-1)??t;if(vn.has(n)||n===".scipquery.json"||/^tsconfig(?:\..+)?\.json$/.test(n))return"config";if(/\.d\.(?:ts|mts|cts)$/.test(t.toLowerCase()))return"ambient";let r=t.includes(".")?`.${t.split(".").at(-1).toLowerCase()}`:"";return e.some(i=>(In[i]??[]).includes(r))?"source":"other"}function bi(t){return[...new Set((t??[]).map(e=>e.trim()).filter(Boolean))].sort((e,n)=>e.localeCompare(n))}function Ri(t){return(xi(t)??Mi(t)).filter(e=>e&&!Rn(e)).sort()}function at(t,e={}){let n=Ri(t).filter(i=>!e.language||Ii(i,e.language,e.markerFiles)).filter(i=>!e.includePath||e.includePath(i)),r=hn(t);return n.map(i=>{let s=bn(t,i);try{if(fi(s).isSymbolicLink()){let a=hn(s),c=Si(r,a);if(c===".."||c.startsWith(`..${hi}`)||yi(c))throw new Error("external symlink");let l=gi(s);return{path:i,size:Buffer.byteLength(l),hash:Sn("sha256").update("symlink\0").update(l).digest("hex")}}let o=mi(s);return{path:i,size:o.byteLength,hash:Sn("sha256").update(o).digest("hex")}}catch{return{path:i,size:-1,hash:"unreadable"}}})}function Ea(t,e,n){return{version:2,languages:[...e].sort(),pnpmWorkspaces:n.typescriptProjectMode!=="workspace"&&n.pnpmWorkspaces===!0,typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:bi(n.typescriptProjects),clojureConfigPath:vi(n.clojureConfigPath),files:at(t)}}function vi(t){return t?.trim()||void 0}function Ii(t,e,n){let r=t.split("/").at(-1)??t;if(n?.includes(t)||n?.includes(r)||vn.has(r))return!0;let i=t.includes(".")?`.${t.split(".").at(-1).toLowerCase()}`:"";return(In[e]??[]).includes(i)}function xi(t){try{return pi("git",["-C",t,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:50*1024*1024,stdio:["ignore","pipe","ignore"]}).split(`
3
+ `).filter(Boolean)}catch{return null}}function Mi(t){let e=[],n=[""];for(;n.length>0;){let r=n.pop(),i=r?bn(t,r):t,s;try{s=di(i,{withFileTypes:!0})}catch{continue}for(let o of s){let a=r?`${r}/${o.name}`:o.name;if(o.isDirectory()){Rn(a)||n.push(a);continue}e.push(a)}}return e}function Rn(t){let e=t.split("/");return t==="meta.json"||e.some(n=>ki.has(n))||t.endsWith(".db")||t.endsWith(".db-wal")||t.endsWith(".db-shm")||t.endsWith(".scip")}var ki=new Set([".git","node_modules",".scipquery-cache",".scipquery-generations",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]),vn=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","deps.edn","project.clj","bb.edn","shadow-cljs.edn"]),In={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"],clojure:[".clj",".cljs",".cljc"]};function Cn(t){return!et(t)||typeof t.version!="number"||tt(t.languages)===null||typeof t.pnpmWorkspaces!="boolean"||typeof t.typescriptProjectMode!="string"||tt(t.typescriptProjects)===null||t.clojureConfigPath!==void 0&&typeof t.clojureConfigPath!="string"||!Array.isArray(t.files)||!t.files.every(Ci)?null:t}function _a(t,e){let n=new Map((t?.files??[]).map(a=>[a.path,a])),r=new Map(e.files.map(a=>[a.path,a])),i=new Set([...n.keys(),...r.keys()]),s=[];for(let a of[...i].sort()){let c=n.get(a),l=r.get(a),p=xe(a,e.languages);!c&&l?s.push({kind:"added",path:a,inputKind:p,after:l}):c&&!l?s.push({kind:"deleted",path:a,inputKind:p,before:c}):c&&l&&(c.hash!==l.hash||c.size!==l.size)&&s.push({kind:"modified",path:a,inputKind:p,before:c,after:l})}let o=new Set;return t||o.add("prior-snapshot-unavailable"),t&&t.version!==e.version&&o.add("snapshot-version-changed"),(xn(t?.files??[])||xn(e.files))&&o.add("duplicate-input-path"),[...t?.files??[],...e.files].some(Di)&&o.add("unreadable-input"),{version:1,changes:s,projectIdentityChanged:t?!wi(t,e):!0,uncertainty:[...o].sort()}}function xn(t){return new Set(t.map(e=>e.path)).size!==t.length}function Ci(t){return et(t)&&typeof t.path=="string"&&typeof t.size=="number"&&typeof t.hash=="string"}function Di(t){return t.hash==="unreadable"||t.size<0}function Pi(t){let e=new Set;for(let n of t.uncertainty)e.add(n);t.projectIdentityChanged&&e.add("project-identity-changed");for(let n of t.changes)n.kind==="added"&&e.add("file-added"),n.kind==="deleted"&&e.add("file-deleted"),n.inputKind==="config"&&e.add("configuration-changed"),n.inputKind==="ambient"&&e.add("ambient-declaration-changed"),n.inputKind==="other"&&e.add("unclassified-input");return{fullProject:e.size>0,reasons:[...e].sort()}}function La(t,e,n){let r=t.changes.map(a=>a.path).sort();if(r.length===0&&!t.projectIdentityChanged&&t.uncertainty.length===0)return{mode:"none",changedFiles:r,affectedFiles:[],reasons:[]};let i=new Set(n),s=Pi(t),o=new Set(s.reasons);return r.some(a=>!i.has(a))&&o.add("changed-file-outside-project"),e===null?(o.add("dependency-graph-unavailable"),Mn(r,i,o)):o.size>0?Mn(r,i,o):{mode:"closure",changedFiles:r,affectedFiles:Ti(r,e,i),reasons:[]}}function Mn(t,e,n){return{mode:"full-project",changedFiles:t,affectedFiles:[...e].sort(),reasons:[...n].sort()}}function Ti(t,e,n){let r=new Map;for(let[o,a]of e)if(n.has(o))for(let c of a){if(!n.has(c))continue;let l=r.get(c)??new Set;l.add(o),r.set(c,l)}let i=new Set(t),s=[...t];for(let o=0;o<s.length;o+=1){let a=s[o];if(a!==void 0)for(let c of r.get(a)??[])i.has(c)||(i.add(c),s.push(c))}return[...i].sort()}function wi(t,e){return kn(t.languages,e.languages)&&t.pnpmWorkspaces===e.pnpmWorkspaces&&t.typescriptProjectMode===e.typescriptProjectMode&&kn(t.typescriptProjects,e.typescriptProjects)&&t.clojureConfigPath===e.clojureConfigPath}function kn(t,e){if(t.length!==e.length)return!1;let n=[...t].sort(),r=[...e].sort();return n.every((i,s)=>i===r[s])}function Dn(t){let e=new Map,n=Ei(t),r=new Map;return i=>{let s=Fi(i),o=r.get(s);if(o!==void 0)return o;if(!n.has(i.file))return r.set(s,i.symbol),i.symbol;let a=e.get(i.file);a||(a=Ai(B(t,i.file)),e.set(i.file,a));let c=ji(a,i);return r.set(s,c),c}}function Fi(t){return`${t.file}\0${t.symbol}\0${t.line}`}function Ei(t){return new Set(t.all("SELECT relative_path FROM documents").map(e=>e.relative_path))}function Ai(t){let e=new Map,n=new Map;for(let r of t){let i=e.get(r.leaf);i?i.push(r):e.set(r.leaf,[r]);let s=n.get(r.startLine);s?s.push(r):n.set(r.startLine,[r])}return{definitions:t,byLeaf:e,byStartLine:n}}function ji(t,e){if(t.definitions.length===0)return e.symbol;let n=Li(e.symbol),r=Ni(t.byLeaf,n),i=_i(r,e.line);if(i)return i.symbol;let s=t.byStartLine.get(e.line)??[];return s.length===1?s[0].symbol:e.symbol}function Ni(t,e){let n=[],r=new Set;for(let i of e)for(let s of t.get(i)??[])r.has(s.symbolId)||(r.add(s.symbolId),n.push(s));return n}function _i(t,e){let n=null;for(let r of t)if(!(r.startLine>e||r.endLine<e)){if(r.startLine===e)return r;(!n||r.endLine-r.startLine<n.endLine-n.startLine)&&(n=r)}return n}function Li(t){let e=new Set([t]),r=t.split(/::|\.|#/).filter(Boolean).at(-1);return r&&e.add(r),e}function Pn(t,e){let r=rn(t,e).map(i=>Ui(e,i));return{usage:r,positions:Wi(t,e,r)}}function Tn(t,e){return{importUsage(n){let r=t.importUsageFacts(n);if(!e||r.positions.length===0)return r.usage;let i=e.importDefinitionsForFile(n,r.positions);return i.available?Oi(r.usage,i.sourcePaths):r.usage}}}function Oi(t,e){return t.map((n,r)=>{let i=e.get(String(r));return i?{...n,sourcePath:i}:n})}function Ui(t,e){let n=e.isTypeOnly===!0,r=e.kind==="side-effect"||n||e.used;return{importer:t,sourcePath:e.sourcePath,importedName:e.importedName,localName:e.localName,kind:e.kind,isTypeOnly:n,isUsed:r,isTypeUsed:n,isValueUsed:e.kind==="side-effect"||!n&&e.used,references:[]}}function Wi(t,e,n){let r=tn(t,e);if(!r)return[];let i=Bi(r.rootNode),s=new Map;for(let a of i){let c=s.get(lt(a.importedName,a.localName));c?c.push(a.position):s.set(lt(a.importedName,a.localName),[a.position])}let o=[];return n.forEach((a,c)=>{let l=s.get(lt(a.importedName,a.localName??a.importedName))?.shift();l&&o.push({...l,id:String(c),file:e})}),o}function Bi(t){let e=[];for(let n of t.descendantsOfType("use_declaration")){let r=n.namedChildren.find(i=>i.type!=="visibility_modifier");r&&e.push(...Me(r,""))}return e.filter(n=>n.importedName!=="*")}function Me(t,e){switch(t.type){case"identifier":case"super":case"self":case"crate":return[{importedName:t.text,localName:t.text,position:ct(t,t.text)}];case"scoped_identifier":{let n=t.text.split("::").pop()??t.text;return[{importedName:n,localName:n,position:ct(t,n)}]}case"scoped_use_list":{let n=t.namedChild(0),r=t.namedChild(1);if(!n||!r)return[];let i=nn(e,n.text);return r.namedChildren.flatMap(s=>Me(s,i))}case"use_list":return t.namedChildren.flatMap(n=>Me(n,e));case"use_as_clause":{let n=t.namedChild(0),r=t.namedChild(1);return!n||!r?[]:Me(n,e).map(i=>({...i,localName:r.text}))}case"use_wildcard":{let n=t.namedChild(0),r="*";return[{importedName:r,localName:r,position:ct(n??t,r)}]}default:return[]}}function ct(t,e){let n=Math.max(0,t.text.lastIndexOf(e));return{id:"",file:"",line:t.startPosition.row,column:t.startPosition.column+n+qi(e)}}function qi(t){return Math.max(0,Math.min(t.length-1,1))}function lt(t,e){return`${t}\0${e}`}import{spawnSync as ht}from"child_process";import{existsSync as bt}from"fs";import{fileURLToPath as Es}from"url";function ke(t){let e=mn(un("rust"),t),n=e.runnable;return{available:n,dependencyAvailable:n,resolvedBinary:e.resolvedBinary??void 0,reason:n?"rust-analyzer semantic reference queries are enabled.":"rust-analyzer is not runnable; Rust semantic checks will use SCIP/source evidence only."}}import{existsSync as gs,mkdtempSync as Yn,readFileSync as Gn,rmSync as dt}from"fs";import{tmpdir as Qn}from"os";import{join as mt}from"path";import{fileURLToPath as je,pathToFileURL as ys}from"url";import{SHARE_ENV as Ss,Worker as hs}from"worker_threads";function q(t,e,n=new Set){let r=new Map;for(let i of t)n.has(i.symbolId)||r.set(i.symbolId,e.get(i.symbolId)??[]);return r}function z(t,e,n){let r=G(process.env.SCIP_RUST_SEMANTIC_BATCH_TIMEOUT_MS)??0;if(r>0)return r;let i=Math.max(1,Math.ceil(t/Math.max(1,n)));return Math.max(12e4,3e4+i*e)}import{spawn as ns}from"child_process";import{createHash as rs,randomUUID as is}from"crypto";import{existsSync as Bn,mkdirSync as _n,readFileSync as Fe,realpathSync as ss,rmSync as ft}from"fs";import{tmpdir as os}from"os";import{resolve as j}from"path";import{execFileSync as Qi}from"child_process";import{existsSync as $i,readFileSync as zi}from"fs";import{deserializeSCIP as Hi,SymbolRole as Vi}from"@c4312/scip";import{existsSync as Qa,readFileSync as Xa}from"fs";import{relative as ec,resolve as tc,sep as nc}from"path";import{fileURLToPath as ic,pathToFileURL as sc}from"url";function wn(t){let e=new Map;for(let n of t)e.set(`${n.file}\0${n.line}\0${n.column}`,n);return[...e.values()].sort((n,r)=>{let i=n.file.localeCompare(r.file);return i!==0?i:n.line!==r.line?n.line-r.line:n.column-r.column})}var ut=new WeakMap,Ki="SCIP_RUST_SCIP_OCCURRENCE_REFERENCE_MODE";function pc(t,e){let n=new Map,r=Ce(),i=e.filter(o=>En(o,r));if(i.length===0)return n;let s=An(t);if(!s)return n;for(let o of i){let a=Fn(s,o);a!==null&&n.set(o.symbolId,a)}return n}function fc(t,e){if(!En(e,Ce()))return null;let n=An(t);return n?Fn(n,e):null}function Fn(t,e){return t.referencesBySymbol.get(e.symbol)??[]}function En(t,e="safe"){if(!t.symbol.startsWith("rust-analyzer ")||!t.relativePath.endsWith(".rs")||ie(t.symbol)||/impl#\[[^\]]+\]\[Default\]default\(\)\.$/.test(t.symbol))return!1;if(e==="all")return!0;let n=Se(t.symbol);if(n==="method")return!0;if(n!=="term")return!1;let r=sn(t.symbol);return"kind"in r?!1:!Ji(r)}function Ji(t){for(let e=0;e<t.descriptors.length-1;e+=1)if(t.descriptors[e]?.suffix==="type")return!0;return!1}function An(t){if(ut.has(t))return ut.get(t)??null;let e=Yi(t);return ut.set(t,e),e}function Yi(t){if(!$i(t.config.indexPath))return null;try{let e=Hi(zi(t.config.indexPath)),n=new Map;for(let r of e.documents??[]){let i=r.relativePath;if(!(!i||t.isIgnored(i)))for(let s of r.occurrences??[]){if(!s.symbol||(s.symbolRoles&Vi.Definition)!==0)continue;let o=Gi(i,s.range);if(!o)continue;let a=n.get(s.symbol)??[];a.push(o),n.set(s.symbol,a)}}for(let[r,i]of n)n.set(r,wn(i));return{referencesBySymbol:n}}catch{return null}}function Gi(t,e){if(e.length<3)return null;let n=e[0],r=e[1];return!Number.isInteger(n)||!Number.isInteger(r)?null:{file:t,line:n,column:r}}function Ce(){return process.env[Ki]==="all"?"all":"safe"}var jn=new Map;function pt(t){let n=ke(t).resolvedBinary??null;return{engine:"rust-analyzer",resolvedBinary:n,version:n?Xi(t,n):"unavailable"}}function Sc(t){return{...pt(t),scipOccurrenceReferenceMode:Ce()}}function Xi(t,e){let n=`${t}\0${e}`,r=jn.get(n);if(r)return r;let i;try{i=Qi(e,["--version"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim()}catch{i="unknown"}return jn.set(n,i),i}import{createHash as Zi}from"crypto";var es=new Set(["Cargo.lock","Cargo.toml","rust-project.json","rust-toolchain","rust-toolchain.toml"]);function Nn(t){let e=at(t,{includePath:ts});return Zi("sha256").update(JSON.stringify(e)).digest("hex")}function ts(t){let e=t.replaceAll("\\","/"),n=e.split("/").at(-1)??e;return e.endsWith(".rs")||es.has(n)?!0:e===".cargo/config"||e===".cargo/config.toml"||e.endsWith("/.cargo/config")||e.endsWith("/.cargo/config.toml")}var qn=2,as=5e3,cs=5e3,$n=10,ls=3e4;function Ln(t,e,n,r=Jn){let i=r.engineIdentity(t),s={protocolVersion:qn,projectRoot:r.canonicalProjectRoot(t),projectFingerprint:r.projectFingerprint(t),engine:{engine:i.engine,resolvedBinary:i.resolvedBinary,version:i.version},workerFingerprint:r.fileFingerprint(e),environment:Hn(r.environment())};return{key:we(Te(s)),...s}}function De(t,e,n){return t.protocolVersion===qn&&(e-t.heartbeatAtMs<=as||t.busyUntilMs!==void 0&&e<=t.busyUntilMs)&&n(t.pid)}function zn(t,e,n){let r;try{r=we(Fe(e))}catch{r="missing"}let i=we(Te({projectRoot:j(t),serverPath:j(e),serverFingerprint:r})).slice(0,20);return j(n,`scip-query-rust-session-${i}`)}function On(t){let e=t===void 0?Number.NaN:Number(t);return Number.isInteger(e)&&e>=0?e:0}function Hn(t){return Object.fromEntries(Object.entries(t).filter(([e])=>Kn(e)).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>[e,n??null]))}function Vn(t,e){let n=e.runtime??ms,r=e.identityRuntime??Jn,i=zn(t,e.serverPath,e.tempRoot??os()),s=!1,o=(a,c)=>{if(s)throw new Error("Durable Rust semantic session was already disposed.");return ps(i,e.serverPath,e.semanticWorkerPath,a,c,n)};return{requestSemantic(a,c){let l=Ln(t,e.semanticWorkerPath,a,r),p=n.now()+Math.max(1,c-1e3);return o({kind:"semantic",identityKey:l.key,workerEnvironment:Wn(),request:{...a,readinessDeadlineMs:p,referenceRetryTimeoutMs:us(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,a.referenceRetryTimeoutMs),settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:On(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},requestImportDefinitions(a,c){let l=Ln(t,e.semanticWorkerPath,a,r),p=n.now()+Math.max(1,c-1e3);return o({kind:"import-definitions",identityKey:l.key,workerEnvironment:Wn(),request:{...a,readinessDeadlineMs:p,settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:On(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},shutdown(){s=!0}}}function us(t,e){return e!==void 0?e:t===void 0?ls:void 0}function ps(t,e,n,r,i,s){let o=s.randomId(),a=s.now(),c=j(t,"requests"),l=j(t,"responses"),p=j(c,`${o}.json`),u=j(l,`${o}.json`);_n(c,{recursive:!0}),_n(l,{recursive:!0}),Ie(p,{id:o,request:r});let f=s.now()+i;try{for(Un(t,e,n,f,s);s.now()<=f;){if(Bn(u)){let m=fs(Fe(u,"utf8"));if(!m.ok)throw new Error(m.error);return W()&&me({type:"span",name:"rust.semantic.durable-session.request",durationMs:s.now()-a,ok:!0,session:m.session,kind:r.kind}),m.response}let d=Pe(t);(!d||!De(d,s.now(),s.isProcessAlive))&&Un(t,e,n,f,s),s.sleep($n)}throw new Error(`Durable Rust semantic session timed out after ${(i/1e3).toFixed(0)}s.`)}finally{ft(p,{force:!0}),ft(u,{force:!0})}}function Un(t,e,n,r,i){let s=Pe(t);if(s&&De(s,i.now(),i.isProcessAlive))return;ft(j(t,"server.json"),{force:!0}),i.spawnServer(e,t,n);let o=Math.min(r,i.now()+cs);for(;i.now()<=o;){let a=Pe(t);if(a&&De(a,i.now(),i.isProcessAlive))return;i.sleep($n)}throw new Error("Durable Rust semantic session helper did not become ready within 5s.")}function Pe(t){try{let e=JSON.parse(Fe(j(t,"server.json"),"utf8"));return typeof e.protocolVersion!="number"||typeof e.pid!="number"||typeof e.heartbeatAtMs!="number"||e.busyUntilMs!==void 0&&typeof e.busyUntilMs!="number"?null:{protocolVersion:e.protocolVersion,pid:e.pid,heartbeatAtMs:e.heartbeatAtMs,...e.busyUntilMs===void 0?{}:{busyUntilMs:e.busyUntilMs}}}catch{return null}}function fs(t){try{let e=JSON.parse(t);return e.ok===!0&&(e.session==="created"||e.session==="reused"||e.session==="invalidated")&&e.response&&typeof e.response=="object"?{ok:!0,session:e.session,response:e.response}:{ok:!1,error:typeof e.error=="string"?e.error:"helper wrote an invalid response"}}catch(e){return{ok:!1,error:`helper wrote malformed JSON: ${e instanceof Error?e.message:String(e)}`}}}function Wn(){return Object.fromEntries(Object.entries(process.env).filter(([t])=>ds(t)).sort(([t],[e])=>t.localeCompare(e)).map(([t,e])=>[t,e??null]))}function Kn(t){return t==="HOME"||t==="PATH"||t.startsWith("CARGO_")||t.startsWith("RA_")||t.startsWith("RUST")}function ds(t){return Kn(t)||t.startsWith("SCIP_RUST_")||t==="SCIP_QUERY_PROFILE"||t==="SCIP_QUERY_PROFILE_CACHE_STATE"||t==="SCIP_QUERY_PROFILE_COMMAND"||t==="SCIP_QUERY_PROFILE_OUT"||t==="SCIP_QUERY_PROFILE_RUN_ID"||t==="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY"||t==="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY_KIND"||t==="SCIP_QUERY_PROFILE_MIN_MS"}var Jn={canonicalProjectRoot(t){try{return ss(t)}catch{return j(t)}},projectFingerprint(t){return Nn(t)},engineIdentity:pt,fileFingerprint(t){return we(Fe(t))},environment(){return Hn(process.env)}},ms={now:Date.now,randomId:is,isProcessAlive:Q,spawnServer(t,e,n){if(!Bn(t))throw new Error(`Durable Rust semantic session helper was not found at ${t}. Run npm run build first.`);ns(process.execPath,[t,e,n],{detached:!0,stdio:"ignore"}).unref()},sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)}};function Te(t){return Array.isArray(t)?`[${t.map(Te).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>`${JSON.stringify(e)}:${Te(n)}`).join(",")}}`:JSON.stringify(t)}function we(t){return rs("sha256").update(t).digest("hex")}var Xn=15e3,Zn=8,tr=5e3,bs=64,Rs=96,yt=class{constructor(e,n,r={}){this.projectRoot=e;this.status=n;this.opts=r;this.requester=r.requester??Ms(e,process.env.SCIP_RUST_SEMANTIC_DURABLE_SESSION)}projectRoot;status;opts;requester;referencesForDefinitions(e){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,references:se(e)};try{let r=this.requestSession(n.resolvedBinary,e,{includeReferences:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,references:q(e,new Map(r.references),new Set(r.incompleteReferenceSymbolIds??[]))}}catch(r){return this.opts.fallbackReferenceResolver?.referencesForDefinitions(e)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),references:se(e)}}}calleesForDefinitions(e){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,callees:oe(e)};try{let r=this.requestSession(n.resolvedBinary,e,{includeReferences:!1,includeCallees:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,callees:gt(e,new Map(r.callees??[]))}}catch(r){return this.opts.fallbackCalleeResolver?.calleesForDefinitions(e)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),callees:oe(e)}}}referencesAndCalleesForDefinitions(e,n){let r=this.status(this.projectRoot);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,references:se(e),callees:oe(n)};let i=[...e,...n];try{let s=this.requestSession(r.resolvedBinary,i,{includeReferences:e.length>0,includeCallees:n.length>0,referenceDefinitions:e,calleeDefinitions:n});return{available:s.available,resolvedBinary:r.resolvedBinary,reason:s.reason,references:q(e,new Map(s.references),new Set(s.incompleteReferenceSymbolIds??[])),callees:gt(n,new Map(s.callees??[]))}}catch(s){return this.fallbackReferencesAndCallees(r,e,n,s)}}signaturesForDefinitions(e){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,signatures:er(e)};try{let r=this.requestSession(n.resolvedBinary,e,{includeReferences:!1,includeCallees:!1,includeSignatures:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,signatures:Ts(e,new Map(r.signatures??[]))}}catch(r){return this.opts.fallbackSignatureResolver?.signaturesForDefinitions(e)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),signatures:er(e)}}}importDefinitionsForFile(e,n){let r=this.status(this.projectRoot);if(n.length===0)return{available:r.available,resolvedBinary:r.resolvedBinary,reason:r.reason,sourcePaths:new Map};if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,sourcePaths:new Map(n.map(i=>[i.id,null]))};try{let i=this.requestImportDefinitions(r.resolvedBinary,e,n);return{available:i.available,resolvedBinary:r.resolvedBinary,reason:i.reason,sourcePaths:new Map(i.sourcePaths)}}catch(i){return{available:!1,resolvedBinary:r.resolvedBinary,reason:i instanceof Error?i.message:String(i),sourcePaths:new Map(n.map(s=>[s.id,null]))}}}dispose(){this.requester.shutdown()}requestSession(e,n,r){let i=Ee(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Xn),s=Ae(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),o=Ee(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Zn),a=Ae(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),c=r.referenceDefinitions?[...r.referenceDefinitions]:void 0,l=r.calleeDefinitions?[...r.calleeDefinitions]:void 0,p=r.signatureDefinitions?[...r.signatureDefinitions]:void 0,u=ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,...r}),f={projectRoot:this.projectRoot,rustAnalyzerBinary:e,definitions:[...n],...c?{referenceDefinitions:c}:{},...l?{calleeDefinitions:l}:{},...p?{signatureDefinitions:p}:{},requestTimeoutMs:i,...r.includeReferences!==!1&&s>0?{referenceRetryTimeoutMs:s}:{},diagnosticsTimeoutMs:a,settleDelayMs:u,concurrency:o,includeReferences:r.includeReferences,includeCallees:r.includeCallees,includeSignatures:r.includeSignatures},d=ws(f);return k("rust.semantic.session.request",()=>this.requester.requestSemantic(f,z(d,St(i,f.referenceRetryTimeoutMs),o)),()=>({definitions:n.length,operationDefinitions:d,referenceDefinitions:f.referenceDefinitions?.length,calleeDefinitions:f.calleeDefinitions?.length,signatureDefinitions:f.signatureDefinitions?.length,references:f.includeReferences!==!1,callees:f.includeCallees===!0,signatures:f.includeSignatures===!0,referenceRetryTimeoutMs:f.referenceRetryTimeoutMs}))}fallbackReferencesAndCallees(e,n,r,i){let s=n.length===0?{available:!0,references:se(n)}:this.opts.fallbackReferenceResolver?.referencesForDefinitions(n),o=r.length===0?{available:!0,callees:oe(r)}:this.opts.fallbackCalleeResolver?.calleesForDefinitions(r);return s&&o?{available:s.available&&o.available,resolvedBinary:s.resolvedBinary??o.resolvedBinary??e.resolvedBinary,reason:s.reason??o.reason,references:q(n,s.references),callees:gt(r,o.callees)}:{available:!1,resolvedBinary:e.resolvedBinary,reason:i instanceof Error?i.message:String(i),references:se(n),callees:oe(r)}}requestImportDefinitions(e,n,r){let i=Ee(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Xn),s=Ee(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Zn),o=Ae(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),a=Ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,tr),c={projectRoot:this.projectRoot,rustAnalyzerBinary:e,file:n,positions:[...r],requestTimeoutMs:i,diagnosticsTimeoutMs:o,settleDelayMs:a,concurrency:s};return k("rust.semantic.import-definitions.session.request",()=>this.requester.requestImportDefinitions(c,z(r.length,i,s)),()=>({file:n,positions:r.length}))}};function nr(t,e,n={}){return new yt(t,e,n)}function ae(t,e){let n=ir(t);if(n!==null)return n;let r=e.includeReferences!==!1;return r&&e.includeCallees!==!0&&e.includeSignatures!==!0&&e.definitionCount<=bs||r&&e.includeCallees===!0&&e.includeSignatures!==!0&&e.definitionCount<=Rs?0:tr}function vs(t){let e=t?.trim().toLowerCase(),n=e==="0"||e==="false"||e==="off"||e==="worker",r=e==="1"||e==="true"||e==="on"||e==="durable",i=e===void 0||e==="";return{transport:n||!i&&!r?"worker":"durable",source:i?"default":"environment",fallback:"worker",valid:i||n||r,optOut:"SCIP_RUST_SEMANTIC_DURABLE_SESSION=0"}}function Is(t){return vs(t).transport}function xs(t,e){let n=null,r=!1,i=!1,s=!1,o=()=>n??=e(),a=()=>{i||(t.shutdown(),i=!0)},c=(p,u,f)=>{let d=Ps(p);r=!0;try{a()}catch{}W()&&me({type:"span",name:"rust.semantic.durable-session.request",durationMs:f,ok:!1,kind:u,session:"worker-fallback",reason:d})},l=(p,u,f)=>{if(s)throw new Error("Rust semantic failover session was already disposed.");if(r)return f(o());let d=Date.now();try{return u(t)}catch(m){c(m,p,Date.now()-d)}return f(o())};return{requestSemantic(p,u){return l("semantic",f=>f.requestSemantic(p,u),f=>f.requestSemantic(p,u))},requestImportDefinitions(p,u){return l("import-definitions",f=>f.requestImportDefinitions(p,u),f=>f.requestImportDefinitions(p,u))},shutdown(){if(s)return;s=!0;let p=[];try{a()}catch(u){p.push(u)}try{n?.shutdown()}catch(u){p.push(u)}if(p.length>0)throw p[0]}}}function Ms(t,e,n={worker:()=>ks(),durable:()=>Vn(t,{serverPath:je(Fs()),semanticWorkerPath:je(rr())})}){return Is(e)==="durable"?xs(n.durable(),n.worker):n.worker()}function ks(t={}){let e=null,n=null,r=1,i=!1,s=()=>{n&&(dt(n,{recursive:!0,force:!0}),n=null)},o=()=>{let l=e;e=null,l&&l.terminate(),s()},a=()=>{if(e)return e;let l=t.semanticWorkerPath?ys(t.semanticWorkerPath):rr();if(!gs(je(l)))throw new Error(`Rust semantic session worker was not found at ${je(l)}. Run npm run build before using built semantic Rust queries.`);return n=Yn(mt(Qn(),"scip-query-rust-session-")),e=new hs(l,t.shareEnvironment?{env:Ss}:void 0),e.unref(),e},c=()=>{let l=n??Yn(mt(Qn(),"scip-query-rust-session-"));return n=l,mt(l,`${r++}.json`)};return{requestSemantic(l,p){if(i)throw new Error("Rust semantic session was already disposed.");let u=a(),f=c(),d=new SharedArrayBuffer(4),m=new Int32Array(d);if(u.postMessage({kind:"semantic",request:l,responsePath:f,sharedBuffer:d}),Atomics.wait(m,0,0,p)==="timed-out")throw o(),new Error(`Rust semantic session worker timed out after ${(p/1e3).toFixed(0)}s`);try{let g=Cs(Gn(f,"utf8"));if(!g.ok)throw new Error(g.error);return g.response}finally{dt(f,{force:!0})}},requestImportDefinitions(l,p){if(i)throw new Error("Rust semantic session was already disposed.");let u=a(),f=c(),d=new SharedArrayBuffer(4),m=new Int32Array(d);if(u.postMessage({kind:"import-definitions",request:l,responsePath:f,sharedBuffer:d}),Atomics.wait(m,0,0,p)==="timed-out")throw o(),new Error(`Rust semantic import-definition session worker timed out after ${(p/1e3).toFixed(0)}s`);try{let g=Ds(Gn(f,"utf8"));if(!g.ok)throw new Error(g.error);return g.response}finally{dt(f,{force:!0})}},shutdown(){if(i)return;if(i=!0,!e){s();return}let l=c(),p=new SharedArrayBuffer(4),u=new Int32Array(p);e.postMessage({kind:"shutdown",responsePath:l,sharedBuffer:p}),Atomics.wait(u,0,0,5e3),o()}}}function Cs(t){let e=JSON.parse(t);if(!e||typeof e!="object")return{ok:!1,error:"Rust semantic session worker wrote a non-object response."};let n=e;return n.ok===!0&&"response"in n?{ok:!0,response:n.response}:{ok:!1,error:typeof e.error=="string"?e.error:"Rust semantic session worker failed."}}function Ds(t){let e=JSON.parse(t);if(!e||typeof e!="object")return{ok:!1,error:"Rust semantic session worker wrote a non-object response."};let n=e;return n.ok===!0&&"response"in n?{ok:!0,response:n.response}:{ok:!1,error:typeof e.error=="string"?e.error:"Rust semantic session worker failed."}}function Ps(t){let e=t instanceof Error?`${t.name} ${t.message}`.toLowerCase():String(t).toLowerCase();return e.includes("readiness")?"readiness":e.includes("timeout")||e.includes("timed out")?"timeout":e.includes("helper")?"helper":"request"}function se(t){return new Map(t.map(e=>[e.symbolId,[]]))}function oe(t){return new Map(t.map(e=>[e.symbolId,[]]))}function er(t){return new Map(t.map(e=>[e.symbolId,null]))}function gt(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??[]]))}function Ts(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??null]))}function ws(t){let e=0;return t.includeReferences!==!1&&(e+=(t.referenceDefinitions??t.definitions).length),t.includeCallees===!0&&(e+=(t.calleeDefinitions??t.definitions).length),t.includeSignatures===!0&&(e+=(t.signatureDefinitions??t.definitions).length),Math.max(1,e)}function St(t,e){return e&&e>0?Math.max(t,e):t}function rr(){return new URL("./rust-semantic-session-worker.js",import.meta.url)}function Fs(){return new URL("./rust-semantic-session-server.js",import.meta.url)}function Ee(t,e){return G(t)??e}function Ae(t,e){return ir(t)??e}function ir(t){if(!t)return null;let e=Number(t);return Number.isInteger(e)&&e>=0?e:null}var Rt=15e3,vt=8;function cr(t,e={}){let n=e.status??ke,r=Ns(t,n),i=_s(t,n),s=Ls(t,n),o=e.referenceResolver||e.calleeResolver||e.signatureResolver||!As(e)?null:nr(t,n,{fallbackReferenceResolver:r,fallbackCalleeResolver:i,fallbackSignatureResolver:s}),a=e.referenceResolver??o??r,c=e.calleeResolver??o??i,l=e.signatureResolver??o??s,p=e.importUsageResolver??Tn(e.sourceImportUsageResolver??js(),e.importDefinitionResolver??o),u=e.calleeSymbolResolver,f=e.sourceZeroCalleeOracle,d=e.scipOccurrenceCalleeOracle,m=new Map,b=new Map,g=null,S=null,I=()=>(g??=n(t),g),_=()=>{let y=I();return y.dependencyAvailable?S??y:y},P=y=>{if(y.length===0)return new Map;let v=ce(y);try{let h=a.referencesForDefinitions(v),x=I();return S={...x,available:h.available,resolvedBinary:h.resolvedBinary??x.resolvedBinary,reason:h.reason??x.reason},h.available?new Map(h.references):q(v,h.references)}catch(h){return S={...I(),available:!1,reason:h instanceof Error?h.message:String(h)},H(v)}},L=y=>{if(y.length===0)return new Map;let v=ce(y),h=v.filter(sr);if(h.length===0)return V(v);let x=new Map,re=ar(h,d),A=[];for(let M of h)b.has(M.symbolId)?x.set(M.symbolId,b.get(M.symbolId)??[]):re.has(M.symbolId)?x.set(M.symbolId,re.get(M.symbolId)??[]):or(M,f)?x.set(M.symbolId,[]):A.push(M);if(A.length===0)return X(v,x,void 0);try{let M=c.calleesForDefinitions(A),U=I();S={...U,available:M.available,resolvedBinary:M.resolvedBinary??U.resolvedBinary,reason:M.reason??U.reason};let C=X(A,M.callees,u);for(let[J,Ye]of C)x.set(J,Ye);return X(v,x,void 0)}catch(M){return S={...I(),available:!1,reason:M instanceof Error?M.message:String(M)},V(v)}},O=(y,v)=>{let h=ce(y),x=ce(v),re=x.filter(sr),A=new Map,M=ar(re,d),U=[];for(let C of re)M.has(C.symbolId)?A.set(C.symbolId,M.get(C.symbolId)??[]):or(C,f)?A.set(C.symbolId,[]):U.push(C);if(h.length===0&&U.length===0)return{references:H(h),callees:X(x,A,void 0)};try{let C=o?o.referencesAndCalleesForDefinitions(h,U):Bs(a,c,{referenceDefinitions:h,calleeDefinitions:U}),J=I();S={...J,available:C.available,resolvedBinary:C.resolvedBinary??J.resolvedBinary,reason:C.reason??J.reason};let Ye=C.available?new Map(C.references):q(h,C.references);for(let[Ge,Qe]of C.callees)A.set(Ge,Qe);let zt=X(x,A,u);for(let[Ge,Qe]of zt)b.set(Ge,Qe);return{references:Ye,callees:zt}}catch(C){return S={...I(),available:!1,reason:C instanceof Error?C.message:String(C)},{references:H(h),callees:V(x)}}},E=y=>{if(y.length===0)return new Map;let v=ce(y);try{let h=l.signaturesForDefinitions(v),x=I();return S={...x,available:h.available,resolvedBinary:h.resolvedBinary??x.resolvedBinary,reason:h.reason??x.reason},lr(v,h.signatures)}catch(h){return S={...I(),available:!1,reason:h instanceof Error?h.message:String(h)},Ne(v)}};return{language:"rust",availability:_,dispose:()=>{o?.dispose()},importUsage:y=>{let v=m.get(y);if(v)return v;try{let h=p.importUsage(y);return m.set(y,h),h}catch(h){return S={...I(),available:!1,reason:h instanceof Error?h.message:String(h)},[]}},referencesFor:y=>P([y]).get(y.symbolId)??[],referencesForDefinitions:P,referencesAndCalleesForDefinitions:O,calleesFor:y=>L([y]).get(y.symbolId)??[],calleesForDefinitions:L,signatureFor:y=>E([y]).get(y.symbolId)??null}}function As(t){if(t.usePersistentSession!==void 0)return t.usePersistentSession;let e=process.env.SCIP_RUST_SEMANTIC_SESSION;return e!=="0"&&e!=="false"}function js(){return{importUsageFacts:()=>({usage:[],positions:[]})}}function ce(t){return t.map(e=>{let n=e;return{...e,leaf:typeof n.leaf=="string"?n.leaf:$(e.symbol),parentTypeName:n.parentTypeName??null,isFunctionLike:typeof n.isFunctionLike=="boolean"?n.isFunctionLike:on(e.symbol),isTypeLike:n.isTypeLike??!1,kind:n.kind??null,documentation:n.documentation??null,enclosingSymbol:n.enclosingSymbol??null}})}function sr(t){return t.isFunctionLike}function or(t,e){if(!e)return!1;try{return e(t)}catch{return!1}}function ar(t,e){if(!e||t.length===0)return new Map;try{return e(t)}catch{return new Map}}function Ns(t,e){return{referencesForDefinitions:n=>Os(t,e,n)}}function _s(t,e){return{calleesForDefinitions:n=>Us(t,e,n)}}function Ls(t,e){return{signaturesForDefinitions:n=>Ws(t,e,n)}}function Os(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,references:H(n)};let i=It();if(!bt(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,references:H(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Rt),o=_e(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),a=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,vt),c=_e(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),l=ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!0}),p={projectRoot:t,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:s,...o>0?{referenceRetryTimeoutMs:o}:{},diagnosticsTimeoutMs:c,settleDelayMs:l,concurrency:a},u=ht(process.execPath,[i],{cwd:t,input:JSON.stringify(p),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,St(s,p.referenceRetryTimeoutMs),a)}),f=xt(u.stdout);if(f)return{available:f.available,resolvedBinary:r.resolvedBinary,reason:f.reason,references:q(n,new Map(f.references),new Set(f.incompleteReferenceSymbolIds??[]))};let d=u.error instanceof Error?u.error.message:u.stderr.trim()||`Rust semantic worker exited with status ${u.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:d,references:H(n)}}function Us(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,callees:V(n)};let i=It();if(!bt(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,callees:V(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Rt),o=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,vt),a=_e(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),c=ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!1,includeCallees:!0}),l={projectRoot:t,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:s,diagnosticsTimeoutMs:a,settleDelayMs:c,concurrency:o,includeReferences:!1,includeCallees:!0},p=ht(process.execPath,[i],{cwd:t,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,s,o)}),u=xt(p.stdout);if(u)return{available:u.available,resolvedBinary:r.resolvedBinary,reason:u.reason,callees:X(n,new Map(u.callees??[]),void 0)};let f=p.error instanceof Error?p.error.message:p.stderr.trim()||`Rust semantic worker exited with status ${p.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:f,callees:V(n)}}function Ws(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,signatures:Ne(n)};let i=It();if(!bt(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,signatures:Ne(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Rt),o=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,vt),a=_e(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),c=ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!1,includeCallees:!1,includeSignatures:!0}),l={projectRoot:t,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:s,diagnosticsTimeoutMs:a,settleDelayMs:c,concurrency:o,includeReferences:!1,includeCallees:!1,includeSignatures:!0},p=ht(process.execPath,[i],{cwd:t,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,s,o)}),u=xt(p.stdout);if(u)return{available:u.available,resolvedBinary:r.resolvedBinary,reason:u.reason,signatures:lr(n,new Map(u.signatures??[]))};let f=p.error instanceof Error?p.error.message:p.stderr.trim()||`Rust semantic worker exited with status ${p.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:f,signatures:Ne(n)}}function Bs(t,e,n){let r=n.referenceDefinitions.length>0?t.referencesForDefinitions(n.referenceDefinitions):{available:!0,references:H(n.referenceDefinitions)},i=n.calleeDefinitions.length>0?e.calleesForDefinitions(n.calleeDefinitions):{available:!0,callees:V(n.calleeDefinitions)};return{available:r.available&&i.available,resolvedBinary:r.resolvedBinary??i.resolvedBinary,reason:r.reason??i.reason,references:r.references,callees:i.callees}}function H(t){return new Map(t.map(e=>[e.symbolId,[]]))}function V(t){return new Map(t.map(e=>[e.symbolId,[]]))}function Ne(t){return new Map(t.map(e=>[e.symbolId,null]))}function X(t,e,n){let r=0,i=0;return k("rust.semantic.callees.complete-map",()=>{let s=new Map;for(let o of t){let a=e.get(o.symbolId)??[];a.length>0&&(r+=1),i+=a.length,s.set(o.symbolId,a.map(c=>({...c,symbol:n?n(c):c.symbol})))}return s},()=>({definitions:t.length,rows:r,callees:i,resolveSymbols:!!n}))}function lr(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??null]))}function It(){return Es(new URL("./rust-semantic-worker.js",import.meta.url))}function xt(t){try{let e=JSON.parse(t);if(!e||typeof e!="object")return null;let n=e;return typeof n.available!="boolean"||!Array.isArray(n.references)?null:{available:n.available,reason:typeof n.reason=="string"?n.reason:void 0,references:n.references,incompleteReferenceSymbolIds:Array.isArray(n.incompleteReferenceSymbolIds)?n.incompleteReferenceSymbolIds.filter(r=>typeof r=="number"):void 0,callees:Array.isArray(n.callees)?n.callees:void 0,signatures:Array.isArray(n.signatures)?n.signatures:void 0}}catch{return null}}function Z(t,e){return G(t)??e}function _e(t,e){if(!t)return e;let n=Number(t);return Number.isInteger(n)&&n>=0?n:e}import{existsSync as qs,readFileSync as $s}from"fs";import{deserializeSCIP as zs,SymbolRole as Hs}from"@c4312/scip";var Mt=new WeakMap;function pr(t,e){let n=e.filter(Vs);if(n.length===0)return new Map;let r=!1,i=0,s=0;return k("rust.scip-occurrence.callees",()=>{let o=Ys(t);if(r=!!o,!o)return new Map;let a=new Map;for(let c of n){let l=Ks(t,o,c);l!==null&&(a.set(c.symbolId,l),i+=1,s+=l.length)}return a},()=>({definitions:e.length,candidates:n.length,indexAvailable:r,resolvedDefinitions:i,resolvedCallees:s}))}function Vs(t){return!(!t.symbol.startsWith("rust-analyzer ")||!t.relativePath.endsWith(".rs")||!t.isFunctionLike||t.leaf==="main"||ie(t.symbol))}function Ks(t,e,n){let r=ge(t,n.relativePath);if(!r||r.language!=="rust")return null;let i=r.callables.find(l=>l.startLine!==n.startLine||l.endLine!==n.endLine?!1:l.name===n.leaf||n.leaf.endsWith(l.name)||l.name.endsWith(n.leaf));if(!i)return null;let s=r.callSites.filter(l=>l.line>=i.startLine&&l.line<=i.endLine);if(s.length===0)return null;let o=(e.occurrencesByFile.get(n.relativePath)??[]).filter(l=>l.line>=i.startLine&&l.line<=i.endLine&&l.callee.symbol!==n.symbol);if(o.some(l=>l.traitImplMember)||!Js(s,o))return null;let a=[],c=new Set;for(let l of o){let p=`${l.callee.symbol}\0${l.callee.file}\0${l.callee.line}`;c.has(p)||(c.add(p),a.push(l.callee))}return a}function Js(t,e){let n=ur(t),r=ur(e);if(n.size!==r.size)return!1;for(let[i,s]of n)if(r.get(i)!==s)return!1;return!0}function ur(t){let e=new Map;for(let n of t){let r=n.calleeLeaf??n.leaf;if(!r)continue;let i=`${n.line}\0${r}`;e.set(i,(e.get(i)??0)+1)}return e}function Ys(t){if(Mt.has(t))return Mt.get(t)??null;let e=Gs(t);return Mt.set(t,e),e}function Gs(t){if(!qs(t.config.indexPath))return null;try{let e=he(t).filter(s=>s.symbol.startsWith("rust-analyzer ")&&s.relativePath.endsWith(".rs")&&s.isFunctionLike),n=new Map(e.map(s=>[s.symbol,s])),r=zs($s(t.config.indexPath)),i=new Map;for(let s of r.documents??[]){let o=s.relativePath;if(!o||!o.endsWith(".rs")||t.isIgnored(o))continue;let a=[];for(let c of s.occurrences??[]){if(!c.symbol||(c.symbolRoles&Hs.Definition)!==0)continue;let l=n.get(c.symbol);if(!l)continue;let p=c.range?.[0];Number.isInteger(p)&&a.push({line:p,leaf:l.leaf,traitImplMember:ie(l.symbol),callee:{symbol:l.symbol,file:l.relativePath,line:l.startLine}})}i.set(o,a)}return{occurrencesByFile:i}}catch{return null}}var Le=class{sessions=new WeakMap;getOrCreate(e,n,r){let i=Qs(e,n),s=this.sessions.get(e);s||(s=new Map,this.sessions.set(e,s));let o=s.get(i);if(o)return o.hits+=1,o.lastUsedAtMs=Date.now(),o.provider;let a=Date.now(),c=r();return s.set(i,{key:i,language:n,projectRoot:e.config.projectRoot,provider:c,createdAtMs:a,lastUsedAtMs:a,hits:1}),c}sessionsFor(e){return[...this.sessions.get(e)?.values()??[]]}clear(e){let n=this.sessions.get(e);if(n)for(let r of n.values())r.provider.dispose?.();this.sessions.delete(e)}};function Qs(t,e){return`${t.config.projectRoot}:${e}-workspace`}import{randomUUID as Wo}from"crypto";import{existsSync as Bo,mkdirSync as Wr,readFileSync as qo,rmSync as Br}from"fs";import{dirname as $o,resolve as qr}from"path";import{spawn as Xs}from"child_process";import{closeSync as ul,existsSync as Zs,mkdirSync as pl,openSync as fl,readFileSync as eo,rmSync as dl,writeFileSync as ml}from"fs";import{dirname as yl,join as kt,resolve as Sl}from"path";import{fileURLToPath as bl}from"url";var fr=5e3,to="watch.lock",no="watch-state.json",ro="watch-activity.json";function dr(t){return{lockPath:kt(t,to),statePath:kt(t,no),activityPath:kt(t,ro)}}function Ct(t){try{return io(JSON.parse(eo(t,"utf8")))}catch{return null}}function io(t){if(!t||typeof t!="object")return null;let e=t;return e.version!==1||typeof e.protocolVersion!="number"||typeof e.pid!="number"||!Number.isInteger(e.pid)||e.pid<=0||typeof e.projectRoot!="string"||e.worktreeId!==void 0&&(typeof e.worktreeId!="string"||e.worktreeId.length===0)||typeof e.cliVersion!="string"||!F(e.startedAt)||!F(e.heartbeatAt)||!F(e.lastActivityAt)||!so(e.watcher)||e.idleDeadlineAt!==void 0&&!F(e.idleDeadlineAt)||e.lastError!==void 0&&!oo(e.lastError)||e.lastRefresh!==void 0&&!ao(e.lastRefresh)||e.typescriptSemantic!==void 0&&!co(e.typescriptSemantic)||e.typescriptIndex!==void 0&&!lo(e.typescriptIndex)?null:e}var vl={now:Date.now,isProcessAlive:Q,spawnServer(t,e,n,r){if(!Zs(t))throw new Error(`Watch service helper was not found at ${t}. Run npm run build first.`);Xs(process.execPath,[t,e,n,JSON.stringify(r)],{detached:!0,stdio:"ignore",env:{...process.env,SCIP_QUERY_SKIP_WATCH_SERVICE:"1"}}).unref()},signalProcess(t){process.kill(t,"SIGTERM")},sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)}};function F(t){return typeof t=="string"&&Number.isFinite(Date.parse(t))}function so(t){if(!t||typeof t!="object"||!("state"in t))return!1;let e=t;switch(e.state){case"idle":return!0;case"waiting":return T(e.changedFiles)&&T(e.reindexAt);case"indexing":return T(e.startedAt);case"cooldown":return T(e.until)&&typeof e.dirty=="boolean";default:return!1}}function oo(t){if(!t||typeof t!="object")return!1;let e=t;return F(e.at)&&typeof e.message=="string"}function ao(t){if(!t||typeof t!="object")return!1;let e=t;return typeof e.trigger?.kind=="string"&&typeof e.result=="string"&&F(e.startedAt)&&F(e.completedAt)&&T(e.durationMs)}function co(t){if(!t||typeof t!="object")return!1;let e=t;return typeof e.protocolVersion=="number"&&(e.state==="idle"||e.state==="ready"||e.state==="unavailable"||e.state==="error")&&T(e.requests)&&T(e.sessionsCreated)&&T(e.sessionsReused)&&T(e.sessionsRefreshed)&&T(e.sessionsReplaced)&&T(e.projectsCreated)&&(e.lastRequestAt===void 0||F(e.lastRequestAt))&&(e.lastError===void 0||typeof e.lastError=="string")&&(e.busyUntil===void 0||F(e.busyUntil))}function lo(t){if(!t||typeof t!="object")return!1;let e=t;return typeof e.protocolVersion=="number"&&(e.state==="idle"||e.state==="ready"||e.state==="unavailable"||e.state==="error")&&K(e.requests)&&K(e.sessionsCreated)&&K(e.sessionsReplaced)&&K(e.initializations)&&K(e.programUpdates)&&K(e.documentsEmitted)&&K(e.documentsRemoved)&&(e.lastRequestAt===void 0||F(e.lastRequestAt))&&(e.lastDurationMs===void 0||T(e.lastDurationMs)&&e.lastDurationMs>=0)&&(e.lastError===void 0||typeof e.lastError=="string")&&(e.busyUntil===void 0||F(e.busyUntil))}function T(t){return typeof t=="number"&&Number.isFinite(t)}function K(t){return typeof t=="number"&&Number.isInteger(t)&&t>=0}import{performance as R}from"perf_hooks";function w(t,e,n){if(t.has(e))return t.get(e);let r=n();return t.set(e,r),r}import mr from"path";function uo(t,e){return t.getReferences().map(n=>{let r=n.getNode();return Oe(r,e)})}function po(t){let e=t;return typeof e.findReferences=="function"?e.findReferences():[]}function gr(t,e,n,r){let i=[];for(let s of po(t))for(let o of uo(s,r))o.file===e.relativePath&&o.line>=e.startLine&&o.line<=e.endLine||i.push(o);for(let s of n)i.push(s);return ee(i)}function yr(t,e,n,r){let i=[],s=n?.getStart();for(let o of t.getReferences()){let a=o.getNode();te(r,a.getSourceFile().getFilePath())===e&&(s!==void 0&&a.getStart()===s||i.push({location:Oe(a,r),node:a}))}return i}function Oe(t,e){let n=t.getSourceFile(),r=n.getLineAndColumnAtPos(t.getStart());return{file:te(e,n.getFilePath())??n.getBaseName(),line:r.line-1,column:r.column-1}}function Sr(t,e,n){let r=t.getSourceFile(),i=Pt(r,t),s=t.getText(),o=new RegExp(`\\b${Zt(s)}\\b`,"g"),a=r.getFullText().split(`
4
+ `),c=[];for(let l=0;l<a.length;l++){if(l===i)continue;let p=a[l]??"";o.lastIndex=0;let u;for(;(u=o.exec(p))!==null;)c.push({file:e,line:l,column:u.index})}return ee(c.filter(l=>te(n,mr.join(n,l.file))===e))}function Dt(t){for(let e=t;e;e=e.getParent()){let n=e.getKindName();if(n.includes("Type")||n==="InterfaceDeclaration"||n==="TypeAliasDeclaration")return!0;if(n==="CallExpression"||n==="NewExpression"||n==="ExpressionStatement")return!1}return!1}function Pt(t,e){return t.getLineAndColumnAtPos(e.getStart()).line-1}function ee(t){let e=new Set,n=[];for(let r of t){let i=`${r.file}:${r.line}:${r.column}`;e.has(i)||(e.add(i),n.push(r))}return n}function te(t,e){let n=mr.relative(t||process.cwd(),e).replace(/\\/g,"/");return!n||n.startsWith("..")?null:n}function hr(t,e,n,r){let i=fo(e,r);return i.size===0?new Map:mo(t,n,i)}function fo(t,e){let n=new Map;for(let r of B(t,e)){let i=$(r.symbol)??r.leaf;if(!i)continue;let s=n.get(i);s||(s=[],n.set(i,s)),s.push(r)}return n}function mo(t,e,n){let r=new Map,i=new Map;return e.forEachDescendant(s=>{for(let o of go(t,s)){let a=n.get(o);if(!a)continue;let c=Pt(e,s);for(let l of a){if(c<l.startLine-1||c>l.endLine+1)continue;let p=Math.abs(c-l.startLine),u=i.get(l.symbolId);u!==void 0&&u<=p||(i.set(l.symbolId,p),r.set(l.symbolId,s))}}}),r}function go(t,e){let n=[],r=i=>{i&&!n.includes(i)&&n.push(i)};if("getNameNode"in e&&typeof e.getNameNode=="function"){let i=e.getNameNode();r(i?.getText())}if("getName"in e&&typeof e.getName=="function"){let i=e.getName();r(i)}return t.Node.isIdentifier(e)&&r(e.getText()),n}var yo=Vt("ts-definition-leaf-candidates",{clearGroups:["definition-catalog"]});function br(t,e,n,r){let i=Ft(t,e),s=Tt(i.get(r)??[],n);if(s)return s;let o=[];for(let a of i.values())for(let c of a)((c.leaf||$(c.symbol)||"").includes(r)||c.symbol.includes(r))&&o.push(c);return Tt(o,n)}function wt(t,e,n,r){return Tt(Ft(t,e).get(r)??[],n)}function Rr(t,e){let n=new Map;for(let[r,i]of Ft(t,e)){let s=i[0];s&&n.set(r,s)}return n}function Ft(t,e){return yo.get(t,e,()=>{let n=new Map;for(let r of B(t,e)){let i=r.leaf||$(r.symbol);if(!i)continue;let s=n.get(i);s||(s=[],n.set(i,s)),s.push({...r,leaf:i})}for(let r of n.values())r.sort((i,s)=>i.startLine-s.startLine||i.endLine-s.endLine||i.symbolId-s.symbolId);return n})}function Tt(t,e){let n=null,r=Number.POSITIVE_INFINITY;for(let i of t){let s=Math.abs(i.startLine-e);(s<r||s===r&&n&&i.startLine<n.startLine)&&(n=i,r=s)}return n}import Et from"path";var le=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"];function N(t){let e=t.toLowerCase();return le.some(n=>e.endsWith(n))}function vr(t,e){let n=new Map,r=null,i=null,s=()=>(i??=Y(t,{extensions:le}),i),o=()=>(r??=k("typescript.source-file-index",()=>So(t.config.projectRoot,e,s()),()=>({projects:e.length,indexedDocuments:s().length})),r),a=c=>N(c)?w(n,c,()=>{let l=ue(Et.resolve(t.config.projectRoot,c));for(let{project:p,sourceFiles:u}of o()){let f=u.get(l)??null;if(f||(f=p.addSourceFileAtPathIfExists(l)??null,f&&u.set(ue(f.getFilePath()),f)),f)return{project:p,sourceFile:f}}return null}):null;return{sourceFile:c=>a(c)?.sourceFile??null,sourceFileMatch:a,indexedTypeScriptLikeDocuments:s}}function So(t,e,n){let r=e.map(({project:i})=>({project:i,sourceFiles:new Map(i.getSourceFiles().map(s=>[ue(s.getFilePath()),s]))}));for(let i of n){let s=ue(Et.resolve(t,i));for(let o of r){if(o.sourceFiles.has(s))break;let a=o.project.addSourceFileAtPathIfExists(s)??null;if(a){o.sourceFiles.set(ue(a.getFilePath()),a);break}}}return r}function ue(t){return Et.resolve(t)}function At(t,e){for(let n of t)if(e===n.name||e.startsWith(`${n.name}/`))return n.name;return null}function Ir(t){let e=`${t.relativeDir}/src`;return[`${e}/index.ts`,`${e}/index.tsx`,`${e}/index.mts`,`${e}/index.cts`]}import{existsSync as pe,readFileSync as ho}from"fs";import D from"path";var jt=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"];function Nt(t,e){let r=e?D.dirname(D.join(t,e)):t,i=D.resolve(t);for(;r.startsWith(i);){for(let o of jt){let a=D.join(r,o);if(pe(a))return a}let s=D.dirname(r);if(s===r)break;r=s}for(let s of jt){let o=D.join(t,s);if(pe(o))return o}return null}function xr(t){let e=t.config.projectRoot,n=new Set(bo(e,t.config.semantic?.typescript?.tsconfigs)),r=Y(t,{includeIgnored:!1,extensions:le});for(let i of r){let s=Nt(e,i);s&&n.add(D.resolve(s))}if(n.size===0){let i=Nt(e);i&&n.add(D.resolve(i))}return[...n].filter(i=>!Mr(e,i)).sort((i,s)=>i.localeCompare(s))}function bo(t,e=[]){let n=new Set;for(let r of e){let i=D.isAbsolute(r)?r:D.join(t,r);pe(i)&&n.add(D.resolve(i))}for(let r of Ro(t))for(let i of jt){let s=D.join(r,i);pe(s)&&n.add(D.resolve(s))}if(n.size===0){let r=Nt(t);r&&n.add(D.resolve(r))}return[...n].filter(r=>!Mr(t,r)).sort((r,i)=>r.localeCompare(i))}function Ro(t){let e=D.join(t,"package.json");if(!pe(e))return[];let n;try{n=JSON.parse(ho(e,"utf8"))}catch{return[]}return(Array.isArray(n.workspaces)?n.workspaces:n.workspaces?.packages??[]).flatMap(i=>Yt(t,i))}function Mr(t,e){let n=D.relative(t,e).replace(/\\/g,"/");return n.startsWith("..")||n.includes("/node_modules/")||n.startsWith("node_modules/")||n.includes("/dist/")||n.startsWith("dist/")}import{createRequire as vo}from"module";var kr=vo(import.meta.url),fe,Ue;function _t(){if(fe!==void 0)return fe;try{fe=kr("ts-morph")}catch{fe=null}return fe}function We(){if(Ue)return Ue;let t=_t();if(!t)return"ts-morph:unavailable";let e="unknown";try{e=kr("ts-morph/package.json").version??"unknown"}catch{}return Ue=`ts-morph:${e}:typescript:${t.ts.version}`,Ue}function Cr(t,e){return e.map(n=>({tsconfigPath:n,project:new t.Project({tsConfigFilePath:n,skipFileDependencyResolution:!0})}))}function Be(t,e,n){return{language:"typescript",availability:()=>({available:!1,reason:t,tsconfigPath:e,tsconfigPaths:n}),importUsage:()=>[],referencesFor:()=>[],calleesFor:()=>[],signatureFor:()=>null}}function qe(t,e){let n=new Map(t.map(i=>[i.symbol,i])),r=new Map(t.map(i=>[i.symbolId,[]]));for(let i of e.values())for(let s of i){let o=n.get(s.targetSymbol);o&&r.get(o.symbolId).push(s.location)}for(let[i,s]of r)r.set(i,Io(s));return r}function Tr(t,e,n){let r=Pr(t,e),i=Pr(t,n),s=[...r].filter(u=>!i.has(u)).sort(),o=[...i].filter(u=>!r.has(u)).sort(),a=Dr(t,e),c=Dr(t,n),l=[...a].filter(u=>!c.has(u)).sort(),p=[...c].filter(u=>!a.has(u)).sort();return{passed:s.length===0&&o.length===0,expectedCount:r.size,actualCount:i.size,missing:s,extra:o,callerFiles:{passed:l.length===0&&p.length===0,expectedCount:a.size,actualCount:c.size,missing:l,extra:p}}}function Dr(t,e){let n=new Set;for(let r of t)for(let i of e.get(r.symbolId)??[])i.file!==r.relativePath&&n.add(`${r.symbol}\0${i.file}`);return n}function wr(t,e,n){let r=new Set(n),i=new Map(n.map(s=>[s,[]]));for(let s of t)for(let o of e.get(s.symbolId)??[])r.has(o.file)&&i.get(o.file).push({targetSymbol:s.symbol,location:o});for(let[s,o]of i)i.set(s,xo(o));return i}function Pr(t,e){let n=new Set;for(let r of t)for(let i of e.get(r.symbolId)??[])n.add(`${r.symbol}\0${i.file}\0${i.line}\0${i.column}`);return n}function Io(t){let e=new Map;for(let n of t)e.set(`${n.file}\0${n.line}\0${n.column}`,n);return[...e.values()].sort(Fr)}function xo(t){let e=new Map;for(let n of t){let{location:r}=n;e.set(`${n.targetSymbol}\0${r.file}\0${r.line}\0${r.column}`,n)}return[...e.values()].sort((n,r)=>n.targetSymbol.localeCompare(r.targetSymbol)||Fr(n.location,r.location))}function Fr(t,e){return t.file.localeCompare(e.file)||t.line-e.line||t.column-e.column}var Mo=32;function Lr(t,e){let n=k("typescript.provider.load",()=>_t());if(!n)return Be("ts-morph is not installed");let r=k("typescript.provider.tsconfig-discovery",()=>xr(t));if(r.length===0)return Be("no tsconfig found");try{let i=k("typescript.provider.project-bundles",()=>Cr(n,r),()=>({tsconfigs:r.length}));return ko(t,n,i)}catch(i){return Be(i instanceof Error?i.message:String(i),r[0],r)}}function ko(t,e,n,r={}){return k("typescript.provider.construct",()=>new Ot(t,e,n),()=>({tsconfigs:n.length,reusedProjects:r.reusedProjects===!0}))}var Ot=class{constructor(e,n,r){this.db=e;this.tsMorph=n;this.projects=r;this.workspacePackages=Jt(e.config.projectRoot),this.sourceFiles=vr(e,r)}db;tsMorph;projects;language="typescript";importUsageCache=new Map;referencesCache=new Map;calleesCache=new Map;fileCalleesCache=new Map;signatureCache=new Map;definitionNodeCache=new Map;fileDefinitionNodeCache=new Map;indexedDefinitionLeafCache=new Map;compilerCheckerCache=new WeakMap;packageImportReferenceIndex=null;packageExportIndex=null;workspacePackages;sourceFiles;availability(){return{available:!0,tsconfigPath:this.projects[0]?.tsconfigPath,tsconfigPaths:this.projects.map(e=>e.tsconfigPath)}}importUsage(e){return w(this.importUsageCache,e,()=>{let n=this.sourceFiles.sourceFile(e);if(!n)return[];let r=Do();return k("typescript.import-usage.file",()=>this.importUsageForSourceFile(e,n,r),()=>({file:e,...r}))})}referencesFor(e){return w(this.referencesCache,e.symbolId,()=>{let n=this.nodeForDefinition(e);return this.referencesForDefinitionNode(e,n)})}referencesForDefinitions(e,n={}){let r=new Map,i=W(),s=[];for(let p of e){let u=this.referencesCache.get(p.symbolId);u?r.set(p.symbolId,u):s.push(p)}if(s.length===0)return r;let o=s,a=n.exact?[]:s.filter(p=>!Ar(p));if(a.length>=Mo){let p=this.referencesForDefinitionsBySymbolScan(a);for(let u of a){let f=p.get(u.symbolId)??[];this.referencesCache.set(u.symbolId,f),r.set(u.symbolId,f)}if(o=s.filter(u=>Ar(u)),o.length===0)return r}let c=new Map;for(let p of o){let u=c.get(p.relativePath);u?u.push(p):c.set(p.relativePath,[p])}let l=[];for(let[p,u]of c){let f=jr();k("typescript.references-map.file",()=>{let d=this.definitionNodesForFile(p);for(let m of u){i&&(f.cacheMisses+=1);let b=d.get(m.symbolId)??null;i&&(b?f.nodeHits+=1:f.nodeMisses+=1);try{let g=this.referencesForDefinitionNode(m,b,i?f:void 0);this.referencesCache.set(m.symbolId,g),r.set(m.symbolId,g)}catch{f.preciseSearchFailures+=1,l.push(m)}}},()=>({relativePath:p,definitions:u.length,...Nr(f)}))}if(l.length>0){let p=this.referencesForDefinitionsBySymbolScan(l);for(let u of l){let f=p.get(u.symbolId)??[];this.referencesCache.set(u.symbolId,f),r.set(u.symbolId,f)}}return r}referenceFragmentsForFiles(e){let n=he(this.db).filter(s=>N(s.relativePath)),r=e.filter(s=>this.sourceFiles.sourceFile(s)!==null),i=this.referencesForDefinitionsBySymbolScan(n,r);return wr(n,i,r)}referencesForDefinitionsBySymbolScan(e,n){let r=W(),i=jr(),s=new Map,o=new Set(e.map(c=>c.symbolId)),a=new Map(e.map(c=>[c.symbolId,c]));for(let c of e)s.set(c.symbolId,[]);return k("typescript.references-map.inverted-scan",()=>{let c=r?R.now():0,l=n?this.packageImportReferencesForFiles(n):this.packageImportReferences();for(let g of e){let S=l.get(g.symbolId)??[];if(S.length>0){let I=s.get(g.symbolId)??[];I.push(...S),s.set(g.symbolId,I)}r&&(i.packageReferenceCount+=S.length)}r&&(i.packageRefsMs+=R.now()-c);let p=new Map,u=new Map,f=this.hierarchyTargetsForDefinitions(e),d=new Set(e.map(g=>g.leaf).filter(Boolean)),m=r?R.now():0;for(let g of n??this.sourceFiles.indexedTypeScriptLikeDocuments()){if(this.db.isIgnored(g))continue;let S=this.sourceFiles.sourceFile(g);S&&(r&&(i.scanFiles+=1),this.addReferencesFromSourceFileScan(S,g,o,a,f,d,p,u,s,r?i:void 0))}r&&(i.scanMs+=R.now()-m);let b=r?R.now():0;this.addHierarchyMemberReferences(e,s,r?i:void 0),r&&(i.hierarchyMs+=R.now()-b);for(let[g,S]of s){let I=ee(S);s.set(g,I),r&&(i.referenceCount+=I.length)}},()=>({definitions:e.length,...Nr(i)})),s}addReferencesFromSourceFileScan(e,n,r,i,s,o,a,c,l,p){let u=this.compilerCheckerForSourceFile(e),f=e.compilerNode,d=wo(e),m=b=>{if(this.tsMorph.ts.isIdentifier(b)){if(p&&(p.identifiers+=1),!o.has(b.text)&&!d.has(b.text)){this.tsMorph.ts.forEachChild(b,m);return}let g=this.compilerReferenceSymbol(u,b,p);if(g){let S;a.has(g)?S=a.get(g)??null:(S=this.referenceDefinitionFromCompilerSymbol(g),a.set(g,S)),p&&(S?p.targetHits+=1:p.targetMisses+=1);let I=w(c,g,()=>this.compilerSymbolKeys(g)),_=null,P=null,L=S&&r.has(S.symbolId)?i.get(S.symbolId):void 0;if(L&&(_=Lt(f,b),!Er(L,n,_))){let O=f.getLineAndCharacterOfPosition(b.getStart(f));P={file:n,line:O.line,column:O.character};let E=l.get(L.symbolId)??[];E.push(P),l.set(L.symbolId,E),p&&(p.requestedHits+=1)}for(let O of I)for(let E of s.get(O)?.values()??[]){if(_??=Lt(f,b),Er(E,n,_))continue;if(!P){let v=f.getLineAndCharacterOfPosition(b.getStart(f));P={file:n,line:v.line,column:v.character}}let y=l.get(E.symbolId)??[];y.push(P),l.set(E.symbolId,y),p&&(p.requestedHits+=1)}}}this.tsMorph.ts.forEachChild(b,m)};m(f)}hierarchyTargetsForDefinitions(e){let n=new Map;for(let r of e){let i=this.nodeForDefinition(r),s=i?.compilerNode;if(!s||!this.isHierarchyMethod(s))continue;let o=s.parent;if(!this.isHierarchyContainer(o))continue;let a=this.compilerCheckerForSourceFile(i.getSourceFile()),c=a.getSymbolAtLocation(s.name);if(c)for(let l of this.hierarchyMemberSymbols(a,o,c))for(let p of this.compilerSymbolKeys(l)){let u=n.get(p)??new Map;u.set(r.symbolId,r),n.set(p,u)}}return n}hierarchyMemberSymbols(e,n,r){let i=new Set,s=new Set,o=(a,c,l)=>{if(!s.has(a)){s.add(a),i.add(c);for(let p of l){let u=p.getProperty(r.name);u&&o(p,u,this.hierarchyAncestorTypesForType(e,p))}}};return o(e.getTypeAtLocation(n),r,this.hierarchyAncestorTypes(e,n)),i}addHierarchyMemberReferences(e,n,r){let i=new Map;for(let s of e){let o=this.nodeForDefinition(s),a=o?.compilerNode;if(!a||!this.isHierarchyMethod(a))continue;let c=a.parent;if(!this.isHierarchyContainer(c))continue;let l=this.compilerCheckerForSourceFile(o.getSourceFile()),p=l.getSymbolAtLocation(a.name);if(!p)continue;let u=a.getSourceFile(),f=u.getLineAndCharacterOfPosition(a.name.getStart(u)),d={definition:s,location:{file:s.relativePath,line:f.line,column:f.character}},m=n.get(s.symbolId)??[];for(let g of this.hierarchyMemberSymbols(l,c,p))if(g!==p)for(let S of this.compilerSymbolLocations(g))m.push(S),r&&(r.hierarchyReferences+=1);n.set(s.symbolId,m);let b=this.hierarchyRootMemberSymbols(l,c,p);for(let g of b){let S=i.get(g)??new Map;S.set(s.symbolId,d),i.set(g,S)}r&&(r.hierarchyDefinitions+=1)}for(let s of i.values())if(!(s.size<2)){r&&(r.hierarchyFamilies+=1);for(let{definition:o}of s.values()){let a=n.get(o.symbolId)??[];for(let c of s.values())c.definition.symbolId!==o.symbolId&&(a.push(c.location),r&&(r.hierarchyReferences+=1));n.set(o.symbolId,a)}}}hierarchyRootMemberSymbols(e,n,r){let i=new Set,s=new Set,o=(a,c,l)=>{if(s.has(a))return;s.add(a);let p=!1;for(let u of l){let f=u.getProperty(r.name);f&&(p=!0,o(u,f,this.hierarchyAncestorTypesForType(e,u)))}if(!p)for(let u of this.compilerSymbolKeys(c))i.add(u)};return o(e.getTypeAtLocation(n),r,this.hierarchyAncestorTypes(e,n)),i}compilerSymbolKeys(e){return(e.declarations??[]).map(n=>{let r=n.getSourceFile();return`${r.fileName}\0${n.getStart(r)}\0${e.name}`})}compilerSymbolLocations(e){let n=[];for(let r of e.declarations??[]){let i=r.getSourceFile(),s=te(this.db.config.projectRoot,i.fileName);if(!s)continue;let o=r.name,a=i.getLineAndCharacterOfPosition((o??r).getStart(i));n.push({file:s,line:a.line,column:a.character})}return n}baseTypes(e,n){try{return e.getBaseTypes(n)??[]}catch{return[]}}hierarchyAncestorTypes(e,n){let r=new Set(this.hierarchyAncestorTypesForType(e,e.getTypeAtLocation(n)));for(let i of n.heritageClauses??[])for(let s of i.types)r.add(e.getTypeAtLocation(s));return[...r]}hierarchyAncestorTypesForType(e,n){let r=new Set(this.baseTypes(e,n));for(let i of n.getSymbol()?.declarations??[])if(this.isHierarchyContainer(i))for(let s of i.heritageClauses??[])for(let o of s.types)r.add(e.getTypeAtLocation(o));return[...r]}isHierarchyMethod(e){return this.tsMorph.ts.isMethodDeclaration(e)||this.tsMorph.ts.isMethodSignature(e)}isHierarchyContainer(e){return this.tsMorph.ts.isClassDeclaration(e)||this.tsMorph.ts.isClassExpression(e)||this.tsMorph.ts.isInterfaceDeclaration(e)}compilerReferenceSymbol(e,n,r){r&&(r.symbolLookups+=1);let i=e.getSymbolAtLocation(n);if(i){if((i.flags&this.tsMorph.ts.SymbolFlags.Alias)===0)return i;try{return r&&(r.aliasResolutions+=1),e.getAliasedSymbol(i)}catch{return i}}}calleesFor(e){return w(this.calleesCache,e.symbolId,()=>w(this.fileCalleesCache,e.relativePath,()=>this.calleeMapForFile(e.relativePath)).get(e.symbolId)??[])}calleesForDefinitions(e){let n=new Map,r=new Map;for(let i of e){let s=r.get(i.relativePath);s?s.push(i):r.set(i.relativePath,[i])}for(let[i,s]of r){let o=this.fileCalleesCache.get(i),a=new Set(s.map(l=>l.symbolId)),c=o??this.calleeMapForFile(i,a);for(let l of s){let p=c.get(l.symbolId)??[];this.calleesCache.set(l.symbolId,p),n.set(l.symbolId,p)}}return n}referencesForDefinitionNode(e,n,r){let i=r?R.now():0,s=this.packageImportReferencesForDefinition(e);if(r&&(r.packageRefsMs+=R.now()-i,r.packageReferenceCount+=s.length),!n)return s;let o=r?R.now():0,a=gr(n,e,s,this.db.config.projectRoot);return r&&(r.semanticRefsMs+=R.now()-o,r.referenceCount+=a.length),a}signatureFor(e){return w(this.signatureCache,e.symbolId,()=>{let n=this.nodeForDefinition(e);if(!n||!this.tsMorph.Node.isFunctionDeclaration(n)&&!this.tsMorph.Node.isMethodDeclaration(n)&&!this.tsMorph.Node.isArrowFunction(n)&&!this.tsMorph.Node.isFunctionExpression(n)&&!this.tsMorph.Node.isConstructorDeclaration(n))return null;let r=n.getType().getCallSignatures()[0];if(!r)return null;let i=r.getParameters().map(o=>{let a=o.getDeclarations()[0],c=a?o.getTypeAtLocation(a).getText(a):o.getValueDeclaration()?.getType().getText()??"unknown";return _r(c)}),s=r.getReturnType().getText(n);return`(${i.join(",")})=>${_r(s)}`})}importUsageForSourceFile(e,n,r){let i=[],s=new Map;for(let o of n.getImportDeclarations()){r.declarations+=1;let a=Ze(this.db,e,o.getModuleSpecifierValue()),c=o.getImportClause()?.isTypeOnly()??!1;for(let l of Ut(o)){r.entries+=1;let p=c?null:l.identifier?.getSymbol()?.compilerSymbol??null;!c&&l.identifier&&(p?r.bindingSymbols+=1:r.missingBindingSymbols+=1);let u={sourcePath:a,entry:l,typeOnlyDeclaration:c,bindingSymbol:p,references:[]};if(i.push(u),c||!l.localName||!p)continue;let f=s.get(l.localName);f?f.push(u):s.set(l.localName,[u])}}return s.size>0&&n.forEachDescendant(o=>{if(o.getKindName()!=="Identifier")return;let a=s.get(o.getText());if(!a||Po(o))return;r.scannedIdentifiers+=1;let c=o.getSymbol()?.compilerSymbol;if(r.symbolLookups+=1,!!c){for(let l of a)if(l.bindingSymbol===c){l.references.push({location:Oe(o,this.db.config.projectRoot),node:o}),r.matchedReferences+=1;break}}}),i.map(o=>o.typeOnlyDeclaration?Co(e,o.sourcePath,o.entry):o.entry.identifier&&!o.bindingSymbol?(r.fallbackEntries+=1,this.valueImportUsageForEntry(e,o.sourcePath,o.entry)):this.valueImportUsageFromLocations(e,o.sourcePath,o.entry,o.references))}valueImportUsageForEntry(e,n,r){let i=r.identifier?r.identifier.findReferences():[],s=[];for(let o of i)for(let a of yr(o,e,r.identifier,this.db.config.projectRoot))s.push(a);return this.valueImportUsageFromLocations(e,n,r,s)}valueImportUsageFromLocations(e,n,r,i){let s=i.some(c=>!Dt(c.node)),o=i.some(c=>Dt(c.node)),a=r.isTypeOnly;return{importer:e,sourcePath:n,importedName:r.importedName,localName:r.localName,kind:r.kind,isTypeOnly:a,isUsed:a||i.length>0,isTypeUsed:a||o,isValueUsed:s,references:i.map(c=>c.location)}}packageImportReferencesForDefinition(e){return this.packageImportReferences().get(e.symbolId)??[]}packageImportReferencesForFiles(e){let n=new Map,r=new Set;for(let s of e){let o=this.sourceFiles.sourceFile(s);if(o)for(let a of o.getImportDeclarations()){let c=At(this.workspacePackages,a.getModuleSpecifierValue());c&&r.add(c)}}if(r.size===0)return n;let i=this.packageExportsForNames(r);for(let s of e)this.addPackageImportReferencesForDocument(n,i,s);for(let[s,o]of n)n.set(s,ee(o));return n}packageImportReferences(){if(this.packageImportReferenceIndex)return this.packageImportReferenceIndex;let e=new Map,n=this.packageExports();for(let r of this.sourceFiles.indexedTypeScriptLikeDocuments())this.addPackageImportReferencesForDocument(e,n,r);for(let[r,i]of e)e.set(r,ee(i));return this.packageImportReferenceIndex=e,e}addPackageImportReferencesForDocument(e,n,r){if(this.db.isIgnored(r))return;let i=this.sourceFiles.sourceFileMatch(r);if(i)for(let s of i.sourceFile.getImportDeclarations())this.addPackageImportReferencesForDeclaration(e,n,r,s)}addPackageImportReferencesForDeclaration(e,n,r,i){let s=At(this.workspacePackages,i.getModuleSpecifierValue());if(!s)return;let o=n.get(s);if(o)for(let a of Ut(i)){if(a.kind!=="named"||!a.identifier)continue;let c=o.get(a.importedName);if(!c||c.size===0)continue;let l=Sr(a.identifier,r,this.db.config.projectRoot);l.length>0&&jo(e,c,l)}}packageExports(){return this.packageExportIndex?this.packageExportIndex:(this.packageExportIndex=this.packageExportsForNames(new Set(this.workspacePackages.map(e=>e.name))),this.packageExportIndex)}packageExportsForNames(e){let n=new Map;for(let r of this.workspacePackages){if(!e.has(r.name))continue;let i=new Map;for(let s of Ir(r))this.collectPackageExports(r,s,i,new Set);i.size>0&&n.set(r.name,i)}return n}collectPackageExports(e,n,r,i){if(i.has(n))return;i.add(n);let s=this.sourceFiles.sourceFile(n);if(s)for(let o of s.getExportDeclarations()){let a=o.getModuleSpecifierValue(),c=a?Ze(this.db,n,a):n;if(!c||!c.startsWith(`${e.relativeDir}/src/`))continue;let l=o.getNamedExports();if(l.length===0){if(o.isNamespaceExport())continue;this.collectPackageExports(e,c,r,i);continue}for(let p of l){let u=p.getNameNode().getText(),f=p.getAliasNode()?.getText()??u,d=this.indexedDefinitionByLeaf(c,u);if(!d)continue;let m=r.get(f);m||(m=new Set,r.set(f,m)),m.add(d.symbolId)}}}indexedDefinitionByLeaf(e,n){return w(this.indexedDefinitionLeafCache,e,()=>Rr(this.db,e)).get(n)??null}nodeForDefinition(e){return w(this.definitionNodeCache,e.symbolId,()=>this.definitionNodesForFile(e.relativePath).get(e.symbolId)??null)}definitionNodesForFile(e){return w(this.fileDefinitionNodeCache,e,()=>{let n=this.sourceFiles.sourceFile(e);return n?hr(this.tsMorph,this.db,n,e):new Map})}referenceDefinitionFromCompilerSymbol(e){return this.definitionFromCompilerSymbol(e,void 0,!0)}definitionFromCompilerSymbol(e,n,r=!1){let i=e.name,s=n?R.now():0,o=e.declarations??[];n&&(n.declarationsMs+=R.now()-s,n.declarationChecks+=o.length);for(let a of o){let c=n?R.now():0,l=a.getSourceFile(),p=te(this.db.config.projectRoot,l.fileName),u=l.getLineAndCharacterOfPosition(a.getStart(l)).line;if(n&&(n.declarationLocationMs+=R.now()-c),!p||this.db.isIgnored(p))continue;let f=n?R.now():0,d=this.compilerDeclarationName(a),m=r?wt(this.db,p,u,i)??(d&&d!==i?wt(this.db,p,u,d):null):br(this.db,p,u,i);if(n&&(n.indexedLookupMs+=R.now()-f),m)return{symbolId:m.symbolId,symbol:m.symbol,file:m.relativePath,line:m.startLine}}return null}compilerDeclarationName(e){let n=e.name;return n&&this.tsMorph.ts.isIdentifier(n)?n.text:null}calleeMapForFile(e,n){let r=W(),i=0,s=0,o=0,a=0,c=0,l=0,p=0,u=0,f=r?Eo():void 0;return k("typescript.callee-map.file",()=>{let d=r?R.now():0,m=this.sourceFiles.sourceFile(e);if(r&&(c=Math.round(R.now()-d)),!m)return new Map;let b=r?R.now():0,g=B(this.db,e).sort((y,v)=>y.startLine-v.startLine||v.endLine-y.endLine);if(r&&(l=Math.round(R.now()-b)),i=g.length,g.length===0)return new Map;let S=new Map,I=r?R.now():0,_=this.compilerCheckerForSourceFile(m),P=m.compilerNode;r&&(p=Math.round(R.now()-I));let L=new Map,O=y=>{if(this.tsMorph.ts.isCallExpression(y)||this.tsMorph.ts.isNewExpression(y)){r&&(s+=1);let v=this.semanticCalleeForCallNode(_,P,g,y,L,n,f);v&&(r&&(o+=1),To(S,v.callerId,v.target))}this.tsMorph.ts.forEachChild(y,O)},E=r?R.now():0;O(P),r&&(u=Math.round(R.now()-E));for(let[y,v]of S)S.set(y,No(v));return a=S.size,S},()=>({relativePath:e,definitions:i,callNodes:s,resolvedCallees:o,outputRows:a,requestedDefinitions:n?.size??i,sourceFileLookupMs:c,definitionsLoadMs:l,checkerLookupMs:p,traversalMs:u,...f?Ao(f):{}}))}semanticCalleeForCallNode(e,n,r,i,s,o,a){let c=a?R.now():0,l=Fo(r,Lt(n,i));if(a&&(a.callerLookupMs+=R.now()-c),!l)return null;if(o&&!o.has(l.symbolId))return a&&(a.skippedUnrequestedCallers+=1),null;let p=i.expression,u=this.compilerSymbolForExpression(e,p,a),f=null;if(u)if(a&&(a.targetSymbolHits+=1),s.has(u))a&&(a.compilerSymbolCacheHits+=1),f=s.get(u)??null;else{a&&(a.compilerSymbolCacheMisses+=1);let d=a?R.now():0;f=this.definitionFromCompilerSymbol(u,a),a&&(a.targetLookupMs+=R.now()-d),s.set(u,f)}else a&&(a.targetMisses+=1);return f?{callerId:l.symbolId,target:{symbol:f.symbol,file:f.file,line:f.line}}:null}compilerSymbolForExpression(e,n,r){let i=r?R.now():0,s=e.getSymbolAtLocation(n);if(r&&(r.expressionSymbolMs+=R.now()-i),s)return s;r&&(r.typeFallbacks+=1);let o=r?R.now():0,a=e.getTypeAtLocation(n).getSymbol();return r&&(r.typeSymbolMs+=R.now()-o),a}compilerCheckerForSourceFile(e){let n=e.getProject(),r=this.compilerCheckerCache.get(n);return r||(r=n.getTypeChecker().compilerObject,this.compilerCheckerCache.set(n,r)),r}};function Ut(t){let e=[],n=t.getDefaultImport();n&&e.push({identifier:n,importedName:"default",localName:n.getText(),kind:"default",isTypeOnly:t.getImportClause()?.isTypeOnly()??!1});let r=t.getNamespaceImport();r&&e.push({identifier:r,importedName:"*",localName:r.getText(),kind:"namespace",isTypeOnly:t.getImportClause()?.isTypeOnly()??!1});for(let i of t.getNamedImports()){let s=i.getNameNode(),a=i.getAliasNode()??(s.getKindName()==="Identifier"?s:null);e.push({identifier:a,importedName:s.getText(),localName:a?.getText()??s.getText(),kind:"named",isTypeOnly:i.isTypeOnly()||(t.getImportClause()?.isTypeOnly()??!1)})}return e.length===0&&e.push({identifier:null,importedName:"*",localName:null,kind:"side-effect",isTypeOnly:!1}),e}function Co(t,e,n){return{importer:t,sourcePath:e,importedName:n.importedName,localName:n.localName,kind:n.kind,isTypeOnly:!0,isUsed:!0,isTypeUsed:!0,isValueUsed:!1,references:[]}}function Do(){return{declarations:0,entries:0,bindingSymbols:0,missingBindingSymbols:0,scannedIdentifiers:0,symbolLookups:0,matchedReferences:0,fallbackEntries:0}}function Po(t){for(let e=t;e;e=e.getParent())if(e.getKindName()==="ImportDeclaration")return!0;return!1}function To(t,e,n){let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)}function wo(t){let e=new Set;for(let n of t.getImportDeclarations())for(let r of Ut(n))r.localName&&e.add(r.localName);return e}function Fo(t,e){let n=null;for(let r of t)e<r.startLine||e>r.endLine||(!n||r.startLine>=n.startLine)&&(n=r);return n}function Lt(t,e){return t.getLineAndCharacterOfPosition(e.getStart(t)).line}function Er(t,e,n){return e===t.relativePath&&n>=t.startLine&&n<=t.endLine}function Ar(t){return t.symbol.includes("#")?Se(t.symbol)==="type"&&t.relativePath.endsWith(".d.ts"):!1}function Eo(){return{callerLookupMs:0,expressionSymbolMs:0,typeSymbolMs:0,targetLookupMs:0,declarationsMs:0,declarationLocationMs:0,indexedLookupMs:0,compilerSymbolCacheHits:0,compilerSymbolCacheMisses:0,targetSymbolHits:0,targetMisses:0,typeFallbacks:0,declarationChecks:0,skippedUnrequestedCallers:0}}function Ao(t){return{...t,callerLookupMs:Math.round(t.callerLookupMs),expressionSymbolMs:Math.round(t.expressionSymbolMs),typeSymbolMs:Math.round(t.typeSymbolMs),targetLookupMs:Math.round(t.targetLookupMs),declarationsMs:Math.round(t.declarationsMs),declarationLocationMs:Math.round(t.declarationLocationMs),indexedLookupMs:Math.round(t.indexedLookupMs)}}function jr(){return{cacheHits:0,cacheMisses:0,nodeHits:0,nodeMisses:0,scanFiles:0,identifiers:0,symbolLookups:0,aliasResolutions:0,targetHits:0,targetMisses:0,requestedHits:0,scanMs:0,packageRefsMs:0,semanticRefsMs:0,packageReferenceCount:0,referenceCount:0,preciseSearchFailures:0,hierarchyDefinitions:0,hierarchyFamilies:0,hierarchyReferences:0,hierarchyMs:0}}function Nr(t){return{...t,scanMs:Math.round(t.scanMs),packageRefsMs:Math.round(t.packageRefsMs),semanticRefsMs:Math.round(t.semanticRefsMs),hierarchyMs:Math.round(t.hierarchyMs)}}function jo(t,e,n){for(let r of e){let i=t.get(r)??[];i.push(...n),t.set(r,i)}}function No(t){let e=new Set,n=[];for(let r of t){let i=`${r.symbol}|${r.file}|${r.line}`;e.has(i)||(e.add(i),n.push(r))}return n}function _r(t){return t.replace(/\s+/g," ").replace(/\bimport\("[^"]+"\)\./g,"").trim()}import{createHash as _o}from"crypto";import{readFileSync as Lo}from"fs";import{dirname as Oo,join as $e}from"path";var ze=2,Uo="typescript-semantic";function Or(t){let e=$e(t,Uo);return{rootDir:e,requestDir:$e(e,"requests"),responseDir:$e(e,"responses")}}function Ur(t){try{let e=JSON.parse(Lo($e(Oo(t),"meta.json"),"utf8"));return e.version!==2&&e.version!==3||typeof e.status!="string"||typeof e.updatedAt!="string"||e.fingerprint===void 0?null:_o("sha256").update(JSON.stringify({version:e.version,status:e.status,updatedAt:e.updatedAt,fingerprint:e.fingerprint,indexedLanguages:e.indexedLanguages})).digest("hex")}catch{return null}}var zo=12e4,Ho=5;function Hr(t,e,n={}){let r=new Wt(t,n),i=null,s=null,o=process.env.SCIP_QUERY_SKIP_WATCH_SERVICE==="1",a=()=>(i??=Lr(t,e),i),c=(u,f,d)=>{if(o)return d();try{return f(r.request(u))}catch{return o=!0,d()}},l=(u,f)=>c({kind:"references",definitions:[...u],...f?.exact?{exact:!0}:{}},d=>zr(d),()=>a().referencesForDefinitions?.(u,f)??new Map(u.map(d=>[d.symbolId,a().referencesFor(d)]))),p=u=>c({kind:"callees",definitions:[...u]},f=>zr(f),()=>a().calleesForDefinitions?.(u)??new Map(u.map(f=>[f.symbolId,a().calleesFor(f)])));return{language:"typescript",availability:()=>(s??=c({kind:"availability"},Jo,()=>a().availability()),s),importUsage:u=>c({kind:"import-usage",file:u},f=>f,()=>a().importUsage(u)),referencesFor:u=>l([u]).get(u.symbolId)??[],referencesForDefinitions:l,referenceFragmentsForFiles:u=>c({kind:"reference-fragments",files:[...u]},f=>Ko(f),()=>a().referenceFragmentsForFiles?.(u)??new Map),calleesFor:u=>p([u]).get(u.symbolId)??[],calleesForDefinitions:p,signatureFor:u=>c({kind:"signature",definition:u},Yo,()=>a().signatureFor(u)),dispose:()=>i?.dispose?.()}}var Wt=class{constructor(e,n={}){this.db=e;this.runtime=n.runtime??Qo,this.timeoutMs=n.timeoutMs??Go(),this.cacheDir=$o(e.config.dbPath),this.projectRoot=an(e.config.projectRoot)}db;runtime;timeoutMs;cacheDir;projectRoot;request(e){let n=dr(this.cacheDir),r=Or(this.cacheDir),i=Ct(n.statePath);if(!$r(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript semantic service is not running.");let s=Ur(this.db.config.dbPath);if(!s)throw new Error("Published TypeScript generation identity is unavailable.");let o=this.runtime.randomId(),a=qr(r.requestDir,`${o}.json`),c=qr(r.responseDir,`${o}.json`),l=this.runtime.now()+this.timeoutMs;Wr(r.requestDir,{recursive:!0}),Wr(r.responseDir,{recursive:!0}),Ie(a,{protocolVersion:ze,id:o,generation:s,deadlineAtMs:l,profileEnvironment:Gt(),request:e});try{for(;this.runtime.now()<=l;){if(Bo(c))return Vo(qo(c,"utf8"),o,s);let p=Ct(n.statePath);if(!$r(p,this.projectRoot,this.runtime))throw new Error("TypeScript semantic service stopped while processing a request.");this.runtime.sleep(Ho)}throw new Error(`TypeScript semantic service timed out after ${this.timeoutMs}ms.`)}finally{Br(a,{force:!0}),Br(c,{force:!0})}}};function $r(t,e,n){let r=t!==null&&n.now()-Date.parse(t.heartbeatAt)<=fr,i=t?.typescriptSemantic?.busyUntil!==void 0&&n.now()<=Date.parse(t.typescriptSemantic.busyUntil);return t!==null&&t.projectRoot===e&&t.typescriptSemantic?.protocolVersion===ze&&n.isProcessAlive(t.pid)&&(r||i)}function Vo(t,e,n){let r=JSON.parse(t);if(r.protocolVersion!==ze||r.id!==e||r.ok===!0&&r.generation!==n)throw new Error("TypeScript semantic service wrote an incompatible response.");if(r.ok===!0)return r.response;throw new Error(typeof r.error=="string"?r.error:"TypeScript semantic service request failed.")}function zr(t){if(!Array.isArray(t))throw new Error("TypeScript semantic service wrote an invalid numeric map.");return new Map(t)}function Ko(t){if(!Array.isArray(t))throw new Error("TypeScript semantic service wrote an invalid string map.");return new Map(t)}function Jo(t){if(!t||typeof t!="object"||typeof t.available!="boolean")throw new Error("TypeScript semantic service wrote invalid availability.");return t}function Yo(t){if(t!==null&&typeof t!="string")throw new Error("TypeScript semantic service wrote an invalid signature.");return t}function Go(){let t=Number(process.env.SCIP_TYPESCRIPT_SEMANTIC_TIMEOUT_MS);return Number.isInteger(t)&&t>0?t:zo}var Qo={now:Date.now,randomId:Wo,sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)},isProcessAlive:Q};var Vr=new Le;Ht({name:"semantic-provider",groups:["semantic-provider"],clearAll:t=>Vr.clear(t)});function Bt(t,e){let n=Xo(e)??"typescript";return Vr.getOrCreate(t,n,()=>n==="rust"?cr(t.config.projectRoot,{sourceImportUsageResolver:{importUsageFacts:r=>Pn(t,r)},calleeSymbolResolver:Dn(t),sourceZeroCalleeOracle:r=>Zo(t,r),scipOccurrenceCalleeOracle:r=>pr(t,r)}):Hr(t,e))}function Xo(t){return t?en(t)==="rust"?"rust":N(t)?"typescript":null:"typescript"}function Zo(t,e){let n=ge(t,e.relativePath);if(!n||n.language!=="rust")return!1;let r=n.callables.find(i=>i.startLine===e.startLine&&i.endLine===e.endLine&&i.name===e.leaf)??n.callables.find(i=>i.startLine===e.startLine&&i.endLine===e.endLine);return r?!n.callSites.some(i=>i.line>=r.startLine&&i.line<=r.endLine):!1}import{readFileSync as ra}from"fs";import{dirname as ia,join as sa}from"path";function Ve(t){let e=He(t.projectFiles),n=new Set(e),r=new Map(t.snapshot.files.map(u=>[u.path,u])),i=t.snapshot.files.filter(u=>{let f=xe(u.path,["typescript"]);return f==="config"||f==="ambient"}).map(u=>u.path),s=He([...e,...i]),o=s.find(u=>!r.has(u)),a=new Set(t.snapshot.files.map(u=>u.path)).size!==t.snapshot.files.length,c=!o&&s.some(u=>Kr(r.get(u))),l=Xe(JSON.stringify({pnpmWorkspaces:t.snapshot.pnpmWorkspaces,typescriptProjectMode:t.snapshot.typescriptProjectMode,typescriptProjects:He(t.snapshot.typescriptProjects),membership:e})),p=new Map;return{identityFor(u,f){if(!n.has(u))return ne("target-outside-project");if(a)return ne("duplicate-input-path");if(o)return ne("missing-input-fingerprint");if(c)return ne("unreadable-input");let d=[],m,b;if(t.graph===null)d.push("dependency-graph-unavailable"),b="whole-project",m=s;else{let I=ta(u,t.graph,p);if(I.find(P=>!r.has(P)))return ne("missing-input-fingerprint");if(m=He([...I,...i]),m.some(P=>Kr(r.get(P))))return ne("unreadable-input");b="dependency-closure"}let g=m.map(I=>na(r.get(I)));return{version:1,key:Xe(JSON.stringify({version:1,engineIdentity:t.engineIdentity,schemaVersion:f,projectIdentity:l,inputs:g})),mode:b,inputFiles:m,reasons:d}}}}function ea(t,e){let n=new Set,r=[t];for(let i=0;i<r.length;i+=1){let s=r[i];if(!(s===void 0||n.has(s))){n.add(s);for(let o of[...e.get(s)??[]].sort())n.has(o)||r.push(o)}}return[...n].sort()}function ta(t,e,n){let r=n.get(t);if(r)return r;let i=ea(t,e);return n.set(t,i),i}function na(t){return{path:t.path,size:t.size,hash:t.hash}}function Kr(t){return t.size<0||t.hash==="unreadable"}function ne(t){return{version:1,key:null,mode:"unkeyed",inputFiles:[],reasons:[t]}}function He(t){return[...new Set(t)].sort()}var oa=Kt("typescript-semantic-identity-context",{clearGroups:["whole-project"]});function qt(t,e,n){let r=oa.get(t,()=>aa(t));if(!r)return null;let i=`${n}\0${e}`,s=r.identities.get(i);if(s)return s;let o=r.builder.identityFor(e,n);return r.identities.set(i,o),o}function de(t){return Y(t,{includeIgnored:!1}).filter(N).sort()}function aa(t){try{let e=JSON.parse(ra(sa(ia(t.config.dbPath),"meta.json"),"utf8")),n=Cn(e.fingerprint);return n?{builder:Ve({projectFiles:de(t),snapshot:n,graph:ye(t),engineIdentity:We()}),identities:new Map}:null}catch{return null}}var $t="typescript-reference-fragment-v2",Je=Qt({kind:"typescript-reference-fragments",invalidation:Xt("typescript-reference-fragments"),serialize:t=>JSON.stringify(t),deserialize:la});function lp(t,e,n,r=t){let i=de(t),s=Ve({projectFiles:i,snapshot:e,graph:ye(t),engineIdentity:We()}),o=[...n].map(([a,c])=>({relativePath:a,contentHash:s.identityFor(a,$t).key,value:[...c]}));if(o.some(a=>a.contentHash===null))throw new Error("TypeScript reference fragment identity is unavailable for an affected document.");return Je.writeBatch(r,o.map(a=>({...a,contentHash:a.contentHash}))),o.length}function up(t,e,n){let r=e.filter(s=>N(s.relativePath));if(r.length===0)return Ke("no TypeScript definitions");let i=Ke("shadow did not run");return k("typescript.reference-fragments.shadow",()=>{try{let s=Bt(t,r[0].relativePath);if(!s.availability().available||!s.referenceFragmentsForFiles)return i=Ke("TypeScript reference fragment provider is unavailable"),i;let o=de(t),a=new Set(o),c=s.referenceFragmentsForFiles(o),l=qe(r,c),p=Tr(r,ca(n,a),l);if(!p.passed)return i={state:"failing",files:o.length,keyedFiles:0,writtenFiles:0,...p},i;let u=[];for(let f of o){let d=qt(t,f,$t);d?.key&&u.push({relativePath:f,contentHash:d.key,value:c.get(f)??[]})}return Je.writeBatch(t,u),i={state:"passing",files:o.length,keyedFiles:u.length,writtenFiles:u.length,...p},i}catch(s){return i=Ke(s instanceof Error?s.message:String(s)),i}},()=>({...i}))}function ca(t,e){return new Map([...t].map(([n,r])=>[n,r.filter(i=>e.has(i.file))]))}function pp(t,e){if(e.length===0)return{references:new Map,files:0,cacheHits:0,cacheMisses:0,computedFiles:0};let n="fallback",r=0,i=0,s=0,o=0;return k("typescript.reference-fragments.materialize",()=>{try{let a=de(t);r=a.length;let c=new Map,l=new Map,p=[];for(let d of a){let m=qt(t,d,$t);if(!m?.key)return null;c.set(d,m.key);let b=Je.read(t,d,m.key);b===null?(s+=1,p.push(d)):(i+=1,l.set(d,b))}if(s===0)return n="hit",{references:qe(e,l),files:r,cacheHits:i,cacheMisses:s,computedFiles:o};let u=Bt(t,e[0].relativePath);if(!u.availability().available||!u.referenceFragmentsForFiles)return null;let f=u.referenceFragmentsForFiles(p);if(p.some(d=>!f.has(d)))return null;o=f.size,Je.writeBatch(t,p.map(d=>({relativePath:d,contentHash:c.get(d),value:f.get(d)??[]})));for(let[d,m]of f)l.set(d,m);return n="computed",{references:qe(e,l),files:r,cacheHits:i,cacheMisses:s,computedFiles:o}}catch{return null}},()=>({state:n,files:r,cacheHits:i,cacheMisses:s,computedFiles:o}))}function Ke(t){return{state:"unavailable",files:0,keyedFiles:0,writtenFiles:0,expectedCount:0,actualCount:0,missing:[],extra:[],reason:t}}function la(t){try{let e=JSON.parse(t);return!Array.isArray(e)||!e.every(ua)?null:e}catch{return null}}function ua(t){if(!t||typeof t!="object")return!1;let e=t,n=e.location;return typeof e.targetSymbol=="string"&&!!n&&typeof n.file=="string"&&typeof n.line=="number"&&typeof n.column=="number"}export{Qr as a,un as b,fn as c,ve as d,Ra as e,ii as f,va as g,Ia as h,Q as i,Ie as j,wn as k,pc as l,fc as m,Sc as n,xe as o,bi as p,at as q,Ea as r,fr as s,dr as t,Ct as u,N as v,Bt as w,Xo as x,Cn as y,_a as z,Pi as A,La as B,Ve as C,qt as D,lp as E,up as F,pp as G};
5
+ //# sourceMappingURL=chunk-SQJ72PQW.js.map