scip-query 0.17.2 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +2 -1
  3. package/dist/{chunk-KSD6IWF4.js → chunk-2GX3TNOW.js} +2 -2
  4. package/dist/{chunk-Q4GKL4CC.js → chunk-35TZERMO.js} +2 -2
  5. package/dist/{chunk-P6FOIU7O.js → chunk-43QUXX3E.js} +2 -2
  6. package/dist/{chunk-U4G4UYLB.js → chunk-45XOH33S.js} +2 -2
  7. package/dist/{chunk-LEKXKHIQ.js → chunk-4MFMTEJ4.js} +5 -5
  8. package/dist/{chunk-FVLZB54V.js → chunk-ABDXTPCT.js} +2 -2
  9. package/dist/{chunk-N3JH45WR.js → chunk-AV54WZUK.js} +2 -2
  10. package/dist/{chunk-S22ICAWV.js → chunk-BAMVG4WQ.js} +2 -2
  11. package/dist/{chunk-7VR5TNOI.js → chunk-BECOMXAL.js} +2 -2
  12. package/dist/{chunk-K53GNKY3.js → chunk-BJJHBKEC.js} +2 -2
  13. package/dist/{chunk-ROMKXEUM.js → chunk-D5F3IQYP.js} +2 -2
  14. package/dist/{chunk-LFPQFRCX.js → chunk-DDGO34I2.js} +2 -2
  15. package/dist/{chunk-IS7DZ7TB.js → chunk-DUKRAHV2.js} +2 -2
  16. package/dist/{chunk-W7FNZKX5.js → chunk-EJ65IVPV.js} +2 -2
  17. package/dist/{chunk-SON6DQNK.js → chunk-EMEXMHOP.js} +2 -2
  18. package/dist/{chunk-BPMBOZAN.js → chunk-FMD46HAG.js} +2 -2
  19. package/dist/{chunk-4H7T7FIM.js → chunk-GTANVH72.js} +2 -2
  20. package/dist/{chunk-O7NA5FCA.js → chunk-GWCW25ON.js} +2 -2
  21. package/dist/chunk-GWNE2WJN.js +3 -0
  22. package/dist/{chunk-ELLPMCWA.js → chunk-H4JNB7RT.js} +2 -2
  23. package/dist/{chunk-G6DDSHMD.js → chunk-HOZ3IXZ5.js} +2 -2
  24. package/dist/{chunk-RUV4KHWA.js → chunk-L2RE5P3X.js} +2 -2
  25. package/dist/{chunk-7LERNHDG.js → chunk-L2TSLMPT.js} +2 -2
  26. package/dist/{chunk-KA7RMBVU.js → chunk-LADYDOS5.js} +2 -2
  27. package/dist/{chunk-AY44MGWS.js → chunk-MN54AGZ3.js} +2 -2
  28. package/dist/{chunk-DJI446FQ.js → chunk-MNRKD3WP.js} +2 -2
  29. package/dist/{chunk-SXDXR5FH.js → chunk-MPBN5DO4.js} +2 -2
  30. package/dist/{chunk-KJOKTZUE.js → chunk-NQBMGFFD.js} +2 -2
  31. package/dist/{chunk-K4XL4HOK.js → chunk-O5Y3ISO3.js} +2 -2
  32. package/dist/{chunk-BEGHYHOQ.js → chunk-ODH4FT3P.js} +2 -2
  33. package/dist/{chunk-MBVHEPHQ.js → chunk-OM6JHEW3.js} +2 -2
  34. package/dist/{chunk-C7MBQSIC.js → chunk-OSBLECSI.js} +2 -2
  35. package/dist/{chunk-ATC4MEVA.js → chunk-OTTHMUMV.js} +2 -2
  36. package/dist/{chunk-SSGACGAD.js → chunk-OUXPJ4H5.js} +2 -2
  37. package/dist/{chunk-CVWX24IY.js → chunk-OWXNDSG3.js} +2 -2
  38. package/dist/{chunk-OQFA2SUQ.js → chunk-P4L5QQT5.js} +2 -2
  39. package/dist/{chunk-APCXCRED.js → chunk-POGZSZPX.js} +2 -2
  40. package/dist/{chunk-4QBRVI7D.js → chunk-PV3GKBO5.js} +2 -2
  41. package/dist/{chunk-NJD4C5G5.js → chunk-PZV2PGBR.js} +2 -2
  42. package/dist/{chunk-CHJ3QROR.js → chunk-Q4UM4JJP.js} +2 -2
  43. package/dist/{chunk-PQD7P6WB.js → chunk-QPF7CS5W.js} +2 -2
  44. package/dist/{chunk-WD3PAQJT.js → chunk-R4VPIS4D.js} +2 -2
  45. package/dist/{chunk-XLJORP6N.js → chunk-RDX6WWHN.js} +2 -2
  46. package/dist/{chunk-YYYERNQL.js → chunk-S43DIBME.js} +2 -2
  47. package/dist/{chunk-MFIA6EIT.js → chunk-SW7LKHRU.js} +2 -2
  48. package/dist/{chunk-2A7LUMZP.js → chunk-SWJEREML.js} +2 -2
  49. package/dist/{chunk-6AITNECC.js → chunk-VQWDZ34M.js} +127 -127
  50. package/dist/{chunk-A2GX3PYV.js → chunk-VXDMXZKC.js} +2 -2
  51. package/dist/{chunk-XTF6ELXT.js → chunk-W3557RPL.js} +2 -2
  52. package/dist/chunk-W3SKYOTF.js +2 -0
  53. package/dist/{chunk-NJTIAQY7.js → chunk-XEEQX5X3.js} +2 -2
  54. package/dist/cli.js +1 -1
  55. package/dist/{command-descriptors-7UUURHWT.js → command-descriptors-AQWWJNTT.js} +143 -143
  56. package/dist/direct-navigation-K3CTVVBU.js +3 -0
  57. package/dist/index.js +1 -1
  58. package/dist/postinstall.js +1 -1
  59. package/dist/queries/affected.js +1 -1
  60. package/dist/queries/bottlenecks.js +1 -1
  61. package/dist/queries/call-graph.js +1 -1
  62. package/dist/queries/change-surface.js +1 -1
  63. package/dist/queries/cleanup-plan.js +1 -1
  64. package/dist/queries/complexity-hotspots.js +1 -1
  65. package/dist/queries/complexity.js +1 -1
  66. package/dist/queries/convergence.js +1 -1
  67. package/dist/queries/dataflow.js +1 -1
  68. package/dist/queries/dead.js +1 -1
  69. package/dist/queries/decorative-checkers.js +1 -1
  70. package/dist/queries/diff-gate.js +1 -1
  71. package/dist/queries/diff-impact.js +1 -1
  72. package/dist/queries/drift.js +1 -1
  73. package/dist/queries/extract-candidates.js +1 -1
  74. package/dist/queries/health.js +1 -1
  75. package/dist/queries/hotspots.js +1 -1
  76. package/dist/queries/imports.js +1 -1
  77. package/dist/queries/incomplete-migration.js +1 -1
  78. package/dist/queries/index.js +1 -1
  79. package/dist/queries/isolated.js +1 -1
  80. package/dist/queries/locality-candidates.js +1 -1
  81. package/dist/queries/members.js +1 -1
  82. package/dist/queries/methods.js +1 -1
  83. package/dist/queries/not-implemented.js +1 -1
  84. package/dist/queries/passthrough-candidates.js +1 -1
  85. package/dist/queries/plan-context.js +1 -1
  86. package/dist/queries/recent-duplicates.js +1 -1
  87. package/dist/queries/redundant-reexports.js +1 -1
  88. package/dist/queries/refs.js +1 -1
  89. package/dist/queries/self-audit.js +1 -1
  90. package/dist/queries/similar-signatures.js +1 -1
  91. package/dist/queries/similar.js +1 -1
  92. package/dist/queries/slice.js +1 -1
  93. package/dist/queries/stale-abstractions.js +1 -1
  94. package/dist/queries/surface.js +1 -1
  95. package/dist/queries/trace.js +1 -1
  96. package/dist/queries/twin-ab.js +1 -1
  97. package/dist/queries/unused-imports.js +1 -1
  98. package/dist/queries/unused-params.js +1 -1
  99. package/dist/queries/wrapper-candidates.js +1 -1
  100. package/dist/reindex-worker.js +24 -24
  101. package/dist/reindex.js +36 -36
  102. package/dist/runtime.js +1 -1
  103. package/docs/COMMAND_REFERENCE.md +1 -1
  104. package/package.json +1 -1
  105. package/skills/_shared/SKILL.md +1 -1
  106. package/skills/scip-api-impact/SKILL.md +5 -1
  107. package/skills/scip-claim-audit/SKILL.md +1 -0
  108. package/skills/scip-cleanup-audit/SKILL.md +4 -0
  109. package/skills/scip-concrete-plan/SKILL.md +129 -48
  110. package/skills/scip-debug/SKILL.md +6 -1
  111. package/skills/scip-explore/SKILL.md +2 -1
  112. package/skills/scip-integrity-audit/SKILL.md +17 -0
  113. package/skills/scip-maintainability/SKILL.md +6 -1
  114. package/skills/scip-query/SKILL.md +3 -0
  115. package/skills/scip-root-cause/SKILL.md +150 -0
  116. package/skills/scip-root-cause/agents/openai.yaml +4 -0
  117. package/skills/scip-tla-model-system/SKILL.md +7 -9
  118. package/skills/scip-verify/SKILL.md +19 -2
  119. package/dist/chunk-TFWDJDGO.js +0 -2
  120. package/dist/chunk-Z4MCFCGX.js +0 -3
  121. package/dist/direct-navigation-CVCFER5G.js +0 -3
@@ -1,5 +1,5 @@
1
- import{a as Y}from"./chunk-P5XHIJHI.js";import{a as ye}from"./chunk-QEIGJJBC.js";import{a as be,e as an}from"./chunk-Z4MCFCGX.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 Gt,s as Ze}from"./chunk-TLTLJ4SW.js";import{a as G}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 Yt,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 Gr,join as nt,resolve as Yr}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",Gr(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",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?!Ti(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 wi(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=wi(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:Pi(r,e,i),reasons:[]}}function Mn(t,e,n){return{mode:"full-project",changedFiles:t,affectedFiles:[...e].sort(),reasons:[...n].sort()}}function Pi(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 Ti(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 wn(t,e){let r=rn(t,e).map(i=>Ui(e,i));return{usage:r,positions:Wi(t,e,r)}}function Pn(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 Gn,readFileSync as Yn,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=Y(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 Tn(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=Gi(t);return ut.set(t,e),e}function Gi(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=Yi(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,Tn(i));return{referencesBySymbol:n}}catch{return null}}function Yi(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:Te(Pe(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=Te(Fe(e))}catch{r="missing"}let i=Te(Pe({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=we(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=we(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=we(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 we(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 Te(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 Pe(t){return Array.isArray(t)?`[${t.map(Pe).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>`${JSON.stringify(e)}:${Pe(n)}`).join(",")}}`:JSON.stringify(t)}function Te(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:Ps(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=Ts(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=ws(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=Gn(mt(Qn(),"scip-query-rust-session-")),e=new hs(l,t.shareEnvironment?{env:Ss}:void 0),e.unref(),e},c=()=>{let l=n??Gn(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(Yn(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(Yn(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 ws(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 Ps(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??null]))}function Ts(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 Y(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??Pn(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},w=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,Ge]of C)x.set(J,Ge);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 Ge=C.available?new Map(C.references):q(h,C.references);for(let[Ye,Qe]of C.callees)A.set(Ye,Qe);let zt=X(x,A,u);for(let[Ye,Qe]of zt)b.set(Ye,Qe);return{references:Ge,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=>w([y]).get(y.symbolId)??[],referencesForDefinitions:w,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 Y(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=Gs(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 Gs(t){if(Mt.has(t))return Mt.get(t)??null;let e=Ys(t);return Mt.set(t,e),e}function Ys(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.indexGeneration!==void 0&&!/^[a-f0-9]{64}$/.test(e.indexGeneration)||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 P(e.changedFiles)&&P(e.reindexAt);case"indexing":return P(e.startedAt);case"cooldown":return P(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)&&P(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")&&P(e.requests)&&P(e.sessionsCreated)&&P(e.sessionsReused)&&P(e.sessionsRefreshed)&&P(e.sessionsReplaced)&&P(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||P(e.lastDurationMs)&&e.lastDurationMs>=0)&&(e.lastError===void 0||typeof e.lastError=="string")&&(e.busyUntil===void 0||F(e.busyUntil))}function P(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 T(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=wt(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 wt(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=wt(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=Pt(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 Pt(o,n)}function Tt(t,e,n,r){return Pt(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 Pt(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??=G(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)?T(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=G(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=>Gt(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 Pr(t,e,n){let r=wr(t,e),i=wr(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 Tr(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 wr(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 T(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 T(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 Tr(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=To(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=T(c,g,()=>this.compilerSymbolKeys(g)),_=null,w=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));w={file:n,line:O.line,column:O.character};let E=l.get(L.symbolId)??[];E.push(w),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(!w){let v=f.getLineAndCharacterOfPosition(b.getStart(f));w={file:n,line:v.line,column:v.character}}let y=l.get(E.symbolId)??[];y.push(w),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 T(this.calleesCache,e.symbolId,()=>T(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 T(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||wo(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 T(this.indexedDefinitionLeafCache,e,()=>Rr(this.db,e)).get(n)??null}nodeForDefinition(e){return T(this.definitionNodeCache,e.symbolId,()=>this.definitionNodesForFile(e.relativePath).get(e.symbolId)??null)}definitionNodesForFile(e){return T(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?Tt(this.db,p,u,i)??(d&&d!==i?Tt(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),w=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(_,w,g,y,L,n,f);v&&(r&&(o+=1),Po(S,v.callerId,v.target))}this.tsMorph.ts.forEachChild(y,O)},E=r?R.now():0;O(w),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 wo(t){for(let e=t;e;e=e.getParent())if(e.getKindName()==="ImportDeclaration")return!0;return!1}function Po(t,e,n){let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)}function To(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},Go,()=>a().signatureFor(u)),dispose:()=>i?.dispose?.()}}var Wt=class{constructor(e,n={}){this.db=e;this.runtime=n.runtime??Qo,this.timeoutMs=n.timeoutMs??Yo(),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:Yt(),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 Go(t){if(t!==null&&typeof t!="string")throw new Error("TypeScript semantic service wrote an invalid signature.");return t}function Yo(){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=>wn(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(w=>!r.has(w)))return ne("missing-input-fingerprint");if(m=He([...I,...i]),m.some(w=>Kr(r.get(w))))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 G(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=Pr(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,Tn 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,wi as A,La as B,Ve as C,qt as D,lp as E,up as F,pp as G};
5
- //# sourceMappingURL=chunk-LEKXKHIQ.js.map
1
+ import{a as Y}from"./chunk-P5XHIJHI.js";import{a as ye}from"./chunk-QEIGJJBC.js";import{a as be,c as cn,g as ln}from"./chunk-GWNE2WJN.js";import{b as on,e as $,f as Se,h as an,j as ie,s as B,t as he}from"./chunk-7XP7ZRSI.js";import{a as en,f as ge,n as rn,p as sn}from"./chunk-JLZUM476.js";import{B as tn,E as nn,e as Gt,f as Yt,s as Ze}from"./chunk-TLTLJ4SW.js";import{a as G}from"./chunk-64MNV6AB.js";import{a as Vt,c as Kt,d as Jt,g as Xe,o as et,p as tt,q as W,r as Qt,s as k,u as me,v as Xt,x as Zt}from"./chunk-M2TRDR25.js";import{existsSync as un,readdirSync as Yr}from"fs";import{isAbsolute as Qr,join as nt,resolve as Xr}from"path";var Zr={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",Qr(r)?r:Xr(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",pn(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",pn(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",un(r)?r:un(n)?n:e]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function fn(t){return Zr[t]}function pn(t,e){let n;try{n=Yr(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 ei}from"fs";import{createRequire as ti}from"module";import{platform as st}from"os";import{dirname as dn,join as Re}from"path";var ni=ti(import.meta.url);function ot(t){return[t.indexerBinary,...t.binaryAliases??[]]}function mn(t){let e=ot(t);return e.length===1?e[0]:e.join(" or ")}function ve(t){for(let e of ot(t))if(st()==="win32"){let n=cn(e);if(n)return n}else if(be(e))return e;return ii(t)}function va(t){return ve(t)!==null||ri(t)}function ri(t){return gn(t)!==null}function ii(t){let e=gn(t);if(!e)return null;let r=JSON.parse(ei(e,"utf8")).bin;if(!r)return null;if(typeof r=="string")return Re(dn(e),r);for(let i of ot(t)){let s=r[i];if(s)return Re(dn(e),s)}return null}function gn(t){if(!t.bundledNpmPackage)return null;try{return ni.resolve(`${t.bundledNpmPackage}/package.json`)}catch{return null}}function si(t,e){for(let n of t.projectLocalBinaries??[]){let r=Re(e,n);if(rt(r))return r}return null}function oi(t,e){return si(t,e)??ve(t)}function Ia(t,e=process.env,n=t.indexerBinary){if(t.indexerBinary!=="scip-dotnet"||at(n,e))return e;let r=Sn(n,e);return r?{...e,DOTNET_ROOT:r}:e}function yn(t,e){let n=mn(t),r=e?oi(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=ai(r);return{language:t.language,binaryLabel:n,installed:!0,runnable:i.runnable,resolvedBinary:r,installUrl:t.installUrl,note:i.note}}function xa(t,e){let n=t.installMethods,r=mn(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,shell:st()==="win32"});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 ai(t){if(at(t,process.env))return{runnable:!0};let e=Sn(t,process.env);if(e)return{runnable:!0,note:`using .NET 9 runtime from ${e}`};let n=hn(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 Sn(t,e){for(let n of hn(e))if(at(t,{...e,DOTNET_ROOT:n}))return n;return null}function hn(t){let e=[],n=t.DOTNET_ROOT;if(n&&rt(n)&&e.push(n),st()==="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 at(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 ci,renameSync as li,writeFileSync as ui}from"fs";import{dirname as pi}from"path";function Ie(t,e,n={}){ci(pi(t),{recursive:!0});let r=`${t}.${process.pid}.${Date.now()}.tmp`,i=JSON.stringify(e,null,n.spacing);ui(r,n.trailingNewline?`${i}
2
+ `:i),li(r,t)}import{execFileSync as fi}from"child_process";import{createHash as bn}from"crypto";import{lstatSync as di,readdirSync as mi,readFileSync as gi,readlinkSync as yi,realpathSync as Rn}from"fs";import{isAbsolute as Si,join as vn,relative as hi,sep as bi}from"path";function xe(t,e){let n=t.split("/").at(-1)??t;if(xn.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=>(Mn[i]??[]).includes(r))?"source":"other"}function Ri(t){return[...new Set((t??[]).map(e=>e.trim()).filter(Boolean))].sort((e,n)=>e.localeCompare(n))}function vi(t){return(Mi(t)??ki(t)).filter(e=>e&&!In(e)).sort()}function ct(t,e={}){let n=vi(t).filter(i=>!e.language||xi(i,e.language,e.markerFiles)).filter(i=>!e.includePath||e.includePath(i)),r=Rn(t);return n.map(i=>{let s=vn(t,i);try{if(di(s).isSymbolicLink()){let a=Rn(s),c=hi(r,a);if(c===".."||c.startsWith(`..${bi}`)||Si(c))throw new Error("external symlink");let l=yi(s);return{path:i,size:Buffer.byteLength(l),hash:bn("sha256").update("symlink\0").update(l).digest("hex")}}let o=gi(s);return{path:i,size:o.byteLength,hash:bn("sha256").update(o).digest("hex")}}catch{return{path:i,size:-1,hash:"unreadable"}}})}function Aa(t,e,n){return{version:2,languages:[...e].sort(),pnpmWorkspaces:n.typescriptProjectMode!=="workspace"&&n.pnpmWorkspaces===!0,typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:Ri(n.typescriptProjects),clojureConfigPath:Ii(n.clojureConfigPath),files:ct(t)}}function Ii(t){return t?.trim()||void 0}function xi(t,e,n){let r=t.split("/").at(-1)??t;if(n?.includes(t)||n?.includes(r)||xn.has(r))return!0;let i=t.includes(".")?`.${t.split(".").at(-1).toLowerCase()}`:"";return(Mn[e]??[]).includes(i)}function Mi(t){try{return fi("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 ki(t){let e=[],n=[""];for(;n.length>0;){let r=n.pop(),i=r?vn(t,r):t,s;try{s=mi(i,{withFileTypes:!0})}catch{continue}for(let o of s){let a=r?`${r}/${o.name}`:o.name;if(o.isDirectory()){In(a)||n.push(a);continue}e.push(a)}}return e}function In(t){let e=t.split("/");return t==="meta.json"||e.some(n=>Ci.has(n))||t.endsWith(".db")||t.endsWith(".db-wal")||t.endsWith(".db-shm")||t.endsWith(".scip")}var Ci=new Set([".git","node_modules",".scipquery-cache",".scipquery-generations",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]),xn=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"]),Mn={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 wn(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(Di)?null:t}function La(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"),(kn(t?.files??[])||kn(e.files))&&o.add("duplicate-input-path"),[...t?.files??[],...e.files].some(wi)&&o.add("unreadable-input"),{version:1,changes:s,projectIdentityChanged:t?!Fi(t,e):!0,uncertainty:[...o].sort()}}function kn(t){return new Set(t.map(e=>e.path)).size!==t.length}function Di(t){return et(t)&&typeof t.path=="string"&&typeof t.size=="number"&&typeof t.hash=="string"}function wi(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 Oa(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"),Cn(r,i,o)):o.size>0?Cn(r,i,o):{mode:"closure",changedFiles:r,affectedFiles:Ti(r,e,i),reasons:[]}}function Cn(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 Fi(t,e){return Dn(t.languages,e.languages)&&t.pnpmWorkspaces===e.pnpmWorkspaces&&t.typescriptProjectMode===e.typescriptProjectMode&&Dn(t.typescriptProjects,e.typescriptProjects)&&t.clojureConfigPath===e.clojureConfigPath}function Dn(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 Pn(t){let e=new Map,n=Ai(t),r=new Map;return i=>{let s=Ei(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=ji(B(t,i.file)),e.set(i.file,a));let c=Ni(a,i);return r.set(s,c),c}}function Ei(t){return`${t.file}\0${t.symbol}\0${t.line}`}function Ai(t){return new Set(t.all("SELECT relative_path FROM documents").map(e=>e.relative_path))}function ji(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 Ni(t,e){if(t.definitions.length===0)return e.symbol;let n=Oi(e.symbol),r=_i(t.byLeaf,n),i=Li(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 _i(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 Li(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 Oi(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=sn(t,e).map(i=>Wi(e,i));return{usage:r,positions:Bi(t,e,r)}}function Fn(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?Ui(r.usage,i.sourcePaths):r.usage}}}function Ui(t,e){return t.map((n,r)=>{let i=e.get(String(r));return i?{...n,sourcePath:i}:n})}function Wi(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 Bi(t,e,n){let r=nn(t,e);if(!r)return[];let i=qi(r.rootNode),s=new Map;for(let a of i){let c=s.get(ut(a.importedName,a.localName));c?c.push(a.position):s.set(ut(a.importedName,a.localName),[a.position])}let o=[];return n.forEach((a,c)=>{let l=s.get(ut(a.importedName,a.localName??a.importedName))?.shift();l&&o.push({...l,id:String(c),file:e})}),o}function qi(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:lt(t,t.text)}];case"scoped_identifier":{let n=t.text.split("::").pop()??t.text;return[{importedName:n,localName:n,position:lt(t,n)}]}case"scoped_use_list":{let n=t.namedChild(0),r=t.namedChild(1);if(!n||!r)return[];let i=rn(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:lt(n??t,r)}]}default:return[]}}function lt(t,e){let n=Math.max(0,t.text.lastIndexOf(e));return{id:"",file:"",line:t.startPosition.row,column:t.startPosition.column+n+$i(e)}}function $i(t){return Math.max(0,Math.min(t.length-1,1))}function ut(t,e){return`${t}\0${e}`}import{spawnSync as bt}from"child_process";import{existsSync as Rt}from"fs";import{fileURLToPath as As}from"url";function ke(t){let e=yn(fn("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 ys,mkdtempSync as Qn,readFileSync as Xn,rmSync as mt}from"fs";import{tmpdir as Zn}from"os";import{join as gt}from"path";import{fileURLToPath as je,pathToFileURL as Ss}from"url";import{SHARE_ENV as hs,Worker as bs}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=Y(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 rs}from"child_process";import{createHash as is,randomUUID as ss}from"crypto";import{existsSync as $n,mkdirSync as On,readFileSync as Fe,realpathSync as os,rmSync as dt}from"fs";import{tmpdir as as}from"os";import{resolve as j}from"path";import{execFileSync as Xi}from"child_process";import{existsSync as zi,readFileSync as Hi}from"fs";import{deserializeSCIP as Vi,SymbolRole as Ki}from"@c4312/scip";import{existsSync as Xa,readFileSync as Za}from"fs";import{relative as tc,resolve as nc,sep as rc}from"path";import{fileURLToPath as sc,pathToFileURL as oc}from"url";function En(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 pt=new WeakMap,Ji="SCIP_RUST_SCIP_OCCURRENCE_REFERENCE_MODE";function fc(t,e){let n=new Map,r=Ce(),i=e.filter(o=>jn(o,r));if(i.length===0)return n;let s=Nn(t);if(!s)return n;for(let o of i){let a=An(s,o);a!==null&&n.set(o.symbolId,a)}return n}function dc(t,e){if(!jn(e,Ce()))return null;let n=Nn(t);return n?An(n,e):null}function An(t,e){return t.referencesBySymbol.get(e.symbol)??[]}function jn(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=on(t.symbol);return"kind"in r?!1:!Gi(r)}function Gi(t){for(let e=0;e<t.descriptors.length-1;e+=1)if(t.descriptors[e]?.suffix==="type")return!0;return!1}function Nn(t){if(pt.has(t))return pt.get(t)??null;let e=Yi(t);return pt.set(t,e),e}function Yi(t){if(!zi(t.config.indexPath))return null;try{let e=Vi(Hi(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&Ki.Definition)!==0)continue;let o=Qi(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,En(i));return{referencesBySymbol:n}}catch{return null}}function Qi(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[Ji]==="all"?"all":"safe"}var _n=new Map;function ft(t){let n=ke(t).resolvedBinary??null;return{engine:"rust-analyzer",resolvedBinary:n,version:n?Zi(t,n):"unavailable"}}function hc(t){return{...ft(t),scipOccurrenceReferenceMode:Ce()}}function Zi(t,e){let n=`${t}\0${e}`,r=_n.get(n);if(r)return r;let i;try{i=Xi(e,["--version"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim()}catch{i="unknown"}return _n.set(n,i),i}import{createHash as es}from"crypto";var ts=new Set(["Cargo.lock","Cargo.toml","rust-project.json","rust-toolchain","rust-toolchain.toml"]);function Ln(t){let e=ct(t,{includePath:ns});return es("sha256").update(JSON.stringify(e)).digest("hex")}function ns(t){let e=t.replaceAll("\\","/"),n=e.split("/").at(-1)??e;return e.endsWith(".rs")||ts.has(n)?!0:e===".cargo/config"||e===".cargo/config.toml"||e.endsWith("/.cargo/config")||e.endsWith("/.cargo/config.toml")}var zn=2,cs=5e3,ls=5e3,Hn=10,us=3e4;function Un(t,e,n,r=Yn){let i=r.engineIdentity(t),s={protocolVersion:zn,projectRoot:r.canonicalProjectRoot(t),projectFingerprint:r.projectFingerprint(t),engine:{engine:i.engine,resolvedBinary:i.resolvedBinary,version:i.version},workerFingerprint:r.fileFingerprint(e),environment:Kn(r.environment())};return{key:Te(Pe(s)),...s}}function De(t,e,n){return t.protocolVersion===zn&&(e-t.heartbeatAtMs<=cs||t.busyUntilMs!==void 0&&e<=t.busyUntilMs)&&n(t.pid)}function Vn(t,e,n){let r;try{r=Te(Fe(e))}catch{r="missing"}let i=Te(Pe({projectRoot:j(t),serverPath:j(e),serverFingerprint:r})).slice(0,20);return j(n,`scip-query-rust-session-${i}`)}function Wn(t){let e=t===void 0?Number.NaN:Number(t);return Number.isInteger(e)&&e>=0?e:0}function Kn(t){return Object.fromEntries(Object.entries(t).filter(([e])=>Gn(e)).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>[e,n??null]))}function Jn(t,e){let n=e.runtime??gs,r=e.identityRuntime??Yn,i=Vn(t,e.serverPath,e.tempRoot??as()),s=!1,o=(a,c)=>{if(s)throw new Error("Durable Rust semantic session was already disposed.");return fs(i,e.serverPath,e.semanticWorkerPath,a,c,n)};return{requestSemantic(a,c){let l=Un(t,e.semanticWorkerPath,a,r),p=n.now()+Math.max(1,c-1e3);return o({kind:"semantic",identityKey:l.key,workerEnvironment:qn(),request:{...a,readinessDeadlineMs:p,referenceRetryTimeoutMs:ps(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,a.referenceRetryTimeoutMs),settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:Wn(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},requestImportDefinitions(a,c){let l=Un(t,e.semanticWorkerPath,a,r),p=n.now()+Math.max(1,c-1e3);return o({kind:"import-definitions",identityKey:l.key,workerEnvironment:qn(),request:{...a,readinessDeadlineMs:p,settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:Wn(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},shutdown(){s=!0}}}function ps(t,e){return e!==void 0?e:t===void 0?us:void 0}function fs(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`);On(c,{recursive:!0}),On(l,{recursive:!0}),Ie(p,{id:o,request:r});let f=s.now()+i;try{for(Bn(t,e,n,f,s);s.now()<=f;){if($n(u)){let m=ds(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=we(t);(!d||!De(d,s.now(),s.isProcessAlive))&&Bn(t,e,n,f,s),s.sleep(Hn)}throw new Error(`Durable Rust semantic session timed out after ${(i/1e3).toFixed(0)}s.`)}finally{dt(p,{force:!0}),dt(u,{force:!0})}}function Bn(t,e,n,r,i){let s=we(t);if(s&&De(s,i.now(),i.isProcessAlive))return;dt(j(t,"server.json"),{force:!0}),i.spawnServer(e,t,n);let o=Math.min(r,i.now()+ls);for(;i.now()<=o;){let a=we(t);if(a&&De(a,i.now(),i.isProcessAlive))return;i.sleep(Hn)}throw new Error("Durable Rust semantic session helper did not become ready within 5s.")}function we(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 ds(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 qn(){return Object.fromEntries(Object.entries(process.env).filter(([t])=>ms(t)).sort(([t],[e])=>t.localeCompare(e)).map(([t,e])=>[t,e??null]))}function Gn(t){return t==="HOME"||t==="PATH"||t.startsWith("CARGO_")||t.startsWith("RA_")||t.startsWith("RUST")}function ms(t){return Gn(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 Yn={canonicalProjectRoot(t){try{return os(t)}catch{return j(t)}},projectFingerprint(t){return Ln(t)},engineIdentity:ft,fileFingerprint(t){return Te(Fe(t))},environment(){return Kn(process.env)}},gs={now:Date.now,randomId:ss,isProcessAlive:Q,spawnServer(t,e,n){if(!$n(t))throw new Error(`Durable Rust semantic session helper was not found at ${t}. Run npm run build first.`);rs(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 Pe(t){return Array.isArray(t)?`[${t.map(Pe).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>`${JSON.stringify(e)}:${Pe(n)}`).join(",")}}`:JSON.stringify(t)}function Te(t){return is("sha256").update(t).digest("hex")}var er=15e3,tr=8,rr=5e3,Rs=64,vs=96,St=class{constructor(e,n,r={}){this.projectRoot=e;this.status=n;this.opts=r;this.requester=r.requester??ks(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:yt(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:yt(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:nr(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:nr(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,er),s=Ae(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),o=Ee(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,tr),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=Fs(f);return k("rust.semantic.session.request",()=>this.requester.requestSemantic(f,z(d,ht(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:yt(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,er),s=Ee(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,tr),o=Ae(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),a=Ae(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,rr),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 ir(t,e,n={}){return new St(t,e,n)}function ae(t,e){let n=or(t);if(n!==null)return n;let r=e.includeReferences!==!1;return r&&e.includeCallees!==!0&&e.includeSignatures!==!0&&e.definitionCount<=Rs||r&&e.includeCallees===!0&&e.includeSignatures!==!0&&e.definitionCount<=vs?0:rr}function Is(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 xs(t){return Is(t).transport}function Ms(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 ks(t,e,n={worker:()=>Cs(),durable:()=>Jn(t,{serverPath:je(Es()),semanticWorkerPath:je(sr())})}){return xs(e)==="durable"?Ms(n.durable(),n.worker):n.worker()}function Cs(t={}){let e=null,n=null,r=1,i=!1,s=()=>{n&&(mt(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?Ss(t.semanticWorkerPath):sr();if(!ys(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=Qn(gt(Zn(),"scip-query-rust-session-")),e=new bs(l,t.shareEnvironment?{env:hs}:void 0),e.unref(),e},c=()=>{let l=n??Qn(gt(Zn(),"scip-query-rust-session-"));return n=l,gt(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=Ds(Xn(f,"utf8"));if(!g.ok)throw new Error(g.error);return g.response}finally{mt(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=ws(Xn(f,"utf8"));if(!g.ok)throw new Error(g.error);return g.response}finally{mt(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 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 ws(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 nr(t){return new Map(t.map(e=>[e.symbolId,null]))}function yt(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 Fs(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 ht(t,e){return e&&e>0?Math.max(t,e):t}function sr(){return new URL("./rust-semantic-session-worker.js",import.meta.url)}function Es(){return new URL("./rust-semantic-session-server.js",import.meta.url)}function Ee(t,e){return Y(t)??e}function Ae(t,e){return or(t)??e}function or(t){if(!t)return null;let e=Number(t);return Number.isInteger(e)&&e>=0?e:null}var vt=15e3,It=8;function ur(t,e={}){let n=e.status??ke,r=_s(t,n),i=Ls(t,n),s=Os(t,n),o=e.referenceResolver||e.calleeResolver||e.signatureResolver||!js(e)?null:ir(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??Fn(e.sourceImportUsageResolver??Ns(),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},w=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(ar);if(h.length===0)return V(v);let x=new Map,re=lr(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)??[]):cr(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,Ge]of C)x.set(J,Ge);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(ar),A=new Map,M=lr(re,d),U=[];for(let C of re)M.has(C.symbolId)?A.set(C.symbolId,M.get(C.symbolId)??[]):cr(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):qs(a,c,{referenceDefinitions:h,calleeDefinitions:U}),J=I();S={...J,available:C.available,resolvedBinary:C.resolvedBinary??J.resolvedBinary,reason:C.reason??J.reason};let Ge=C.available?new Map(C.references):q(h,C.references);for(let[Ye,Qe]of C.callees)A.set(Ye,Qe);let Ht=X(x,A,u);for(let[Ye,Qe]of Ht)b.set(Ye,Qe);return{references:Ge,callees:Ht}}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},pr(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=>w([y]).get(y.symbolId)??[],referencesForDefinitions:w,referencesAndCalleesForDefinitions:O,calleesFor:y=>L([y]).get(y.symbolId)??[],calleesForDefinitions:L,signatureFor:y=>E([y]).get(y.symbolId)??null}}function js(t){if(t.usePersistentSession!==void 0)return t.usePersistentSession;let e=process.env.SCIP_RUST_SEMANTIC_SESSION;return e!=="0"&&e!=="false"}function Ns(){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:an(e.symbol),isTypeLike:n.isTypeLike??!1,kind:n.kind??null,documentation:n.documentation??null,enclosingSymbol:n.enclosingSymbol??null}})}function ar(t){return t.isFunctionLike}function cr(t,e){if(!e)return!1;try{return e(t)}catch{return!1}}function lr(t,e){if(!e||t.length===0)return new Map;try{return e(t)}catch{return new Map}}function _s(t,e){return{referencesForDefinitions:n=>Us(t,e,n)}}function Ls(t,e){return{calleesForDefinitions:n=>Ws(t,e,n)}}function Os(t,e){return{signaturesForDefinitions:n=>Bs(t,e,n)}}function Us(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=xt();if(!Rt(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,vt),o=_e(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),a=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,It),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=bt(process.execPath,[i],{cwd:t,input:JSON.stringify(p),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,ht(s,p.referenceRetryTimeoutMs),a)}),f=Mt(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 Ws(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=xt();if(!Rt(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,vt),o=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,It),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=bt(process.execPath,[i],{cwd:t,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,s,o)}),u=Mt(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 Bs(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=xt();if(!Rt(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,vt),o=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,It),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=bt(process.execPath,[i],{cwd:t,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:z(n.length,s,o)}),u=Mt(p.stdout);if(u)return{available:u.available,resolvedBinary:r.resolvedBinary,reason:u.reason,signatures:pr(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 qs(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 pr(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??null]))}function xt(){return As(new URL("./rust-semantic-worker.js",import.meta.url))}function Mt(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 Y(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 $s,readFileSync as zs}from"fs";import{deserializeSCIP as Hs,SymbolRole as Vs}from"@c4312/scip";var kt=new WeakMap;function dr(t,e){let n=e.filter(Ks);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=Js(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 Ks(t){return!(!t.symbol.startsWith("rust-analyzer ")||!t.relativePath.endsWith(".rs")||!t.isFunctionLike||t.leaf==="main"||ie(t.symbol))}function Js(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)||!Gs(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 Gs(t,e){let n=fr(t),r=fr(e);if(n.size!==r.size)return!1;for(let[i,s]of n)if(r.get(i)!==s)return!1;return!0}function fr(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(kt.has(t))return kt.get(t)??null;let e=Qs(t);return kt.set(t,e),e}function Qs(t){if(!$s(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=Hs(zs(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&Vs.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=Xs(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 Xs(t,e){return`${t.config.projectRoot}:${e}-workspace`}import{randomUUID as Bo}from"crypto";import{existsSync as qo,mkdirSync as qr,readFileSync as $o,rmSync as $r}from"fs";import{dirname as zo,resolve as zr}from"path";import{spawn as Zs}from"child_process";import{closeSync as pl,existsSync as eo,mkdirSync as fl,openSync as dl,readFileSync as to,rmSync as ml,writeFileSync as gl}from"fs";import{dirname as Sl,join as Ct,resolve as hl}from"path";import{fileURLToPath as Rl}from"url";var mr=5e3,no="watch.lock",ro="watch-state.json",io="watch-activity.json";function gr(t){return{lockPath:Ct(t,no),statePath:Ct(t,ro),activityPath:Ct(t,io)}}function Dt(t){try{return so(JSON.parse(to(t,"utf8")))}catch{return null}}function so(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)||!oo(e.watcher)||e.idleDeadlineAt!==void 0&&!F(e.idleDeadlineAt)||e.indexGeneration!==void 0&&!/^[a-f0-9]{64}$/.test(e.indexGeneration)||e.lastError!==void 0&&!ao(e.lastError)||e.lastRefresh!==void 0&&!co(e.lastRefresh)||e.typescriptSemantic!==void 0&&!lo(e.typescriptSemantic)||e.typescriptIndex!==void 0&&!uo(e.typescriptIndex)?null:e}var Il={now:Date.now,isProcessAlive:Q,spawnServer(t,e,n,r){if(!eo(t))throw new Error(`Watch service helper was not found at ${t}. Run npm run build first.`);Zs(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 oo(t){if(!t||typeof t!="object"||!("state"in t))return!1;let e=t;switch(e.state){case"idle":return!0;case"waiting":return P(e.changedFiles)&&P(e.reindexAt);case"indexing":return P(e.startedAt);case"cooldown":return P(e.until)&&typeof e.dirty=="boolean";default:return!1}}function ao(t){if(!t||typeof t!="object")return!1;let e=t;return F(e.at)&&typeof e.message=="string"}function co(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)&&P(e.durationMs)}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")&&P(e.requests)&&P(e.sessionsCreated)&&P(e.sessionsReused)&&P(e.sessionsRefreshed)&&P(e.sessionsReplaced)&&P(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 uo(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||P(e.lastDurationMs)&&e.lastDurationMs>=0)&&(e.lastError===void 0||typeof e.lastError=="string")&&(e.busyUntil===void 0||F(e.busyUntil))}function P(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 T(t,e,n){if(t.has(e))return t.get(e);let r=n();return t.set(e,r),r}import yr from"path";function po(t,e){return t.getReferences().map(n=>{let r=n.getNode();return Oe(r,e)})}function fo(t){let e=t;return typeof e.findReferences=="function"?e.findReferences():[]}function Sr(t,e,n,r){let i=[];for(let s of fo(t))for(let o of po(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 hr(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 br(t,e,n){let r=t.getSourceFile(),i=Pt(r,t),s=t.getText(),o=new RegExp(`\\b${en(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,yr.join(n,l.file))===e))}function wt(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=yr.relative(t||process.cwd(),e).replace(/\\/g,"/");return!n||n.startsWith("..")?null:n}function Rr(t,e,n,r){let i=mo(e,r);return i.size===0?new Map:go(t,n,i)}function mo(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 go(t,e,n){let r=new Map,i=new Map;return e.forEachDescendant(s=>{for(let o of yo(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 yo(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 So=Kt("ts-definition-leaf-candidates",{clearGroups:["definition-catalog"]});function vr(t,e,n,r){let i=Et(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 Ft(t,e,n,r){return Tt(Et(t,e).get(r)??[],n)}function Ir(t,e){let n=new Map;for(let[r,i]of Et(t,e)){let s=i[0];s&&n.set(r,s)}return n}function Et(t,e){return So.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 At 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 xr(t,e){let n=new Map,r=null,i=null,s=()=>(i??=G(t,{extensions:le}),i),o=()=>(r??=k("typescript.source-file-index",()=>ho(t.config.projectRoot,e,s()),()=>({projects:e.length,indexedDocuments:s().length})),r),a=c=>N(c)?T(n,c,()=>{let l=ue(At.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 ho(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(At.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 At.resolve(t)}function jt(t,e){for(let n of t)if(e===n.name||e.startsWith(`${n.name}/`))return n.name;return null}function Mr(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 bo}from"fs";import D from"path";var Nt=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"];function _t(t,e){let r=e?D.dirname(D.join(t,e)):t,i=D.resolve(t);for(;r.startsWith(i);){for(let o of Nt){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 Nt){let o=D.join(t,s);if(pe(o))return o}return null}function kr(t){let e=t.config.projectRoot,n=new Set(Ro(e,t.config.semantic?.typescript?.tsconfigs)),r=G(t,{includeIgnored:!1,extensions:le});for(let i of r){let s=_t(e,i);s&&n.add(D.resolve(s))}if(n.size===0){let i=_t(e);i&&n.add(D.resolve(i))}return[...n].filter(i=>!Cr(e,i)).sort((i,s)=>i.localeCompare(s))}function Ro(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 vo(t))for(let i of Nt){let s=D.join(r,i);pe(s)&&n.add(D.resolve(s))}if(n.size===0){let r=_t(t);r&&n.add(D.resolve(r))}return[...n].filter(r=>!Cr(t,r)).sort((r,i)=>r.localeCompare(i))}function vo(t){let e=D.join(t,"package.json");if(!pe(e))return[];let n;try{n=JSON.parse(bo(e,"utf8"))}catch{return[]}return(Array.isArray(n.workspaces)?n.workspaces:n.workspaces?.packages??[]).flatMap(i=>Yt(t,i))}function Cr(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 Io}from"module";var Dr=Io(import.meta.url),fe,Ue;function Lt(){if(fe!==void 0)return fe;try{fe=Dr("ts-morph")}catch{fe=null}return fe}function We(){if(Ue)return Ue;let t=Lt();if(!t)return"ts-morph:unavailable";let e="unknown";try{e=Dr("ts-morph/package.json").version??"unknown"}catch{}return Ue=`ts-morph:${e}:typescript:${t.ts.version}`,Ue}function wr(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,xo(s));return r}function Fr(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=Pr(t,e),c=Pr(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 Pr(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 Er(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,Mo(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 xo(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(Ar)}function Mo(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)||Ar(n.location,r.location))}function Ar(t,e){return t.file.localeCompare(e.file)||t.line-e.line||t.column-e.column}var ko=32;function Ur(t,e){let n=k("typescript.provider.load",()=>Lt());if(!n)return Be("ts-morph is not installed");let r=k("typescript.provider.tsconfig-discovery",()=>kr(t));if(r.length===0)return Be("no tsconfig found");try{let i=k("typescript.provider.project-bundles",()=>wr(n,r),()=>({tsconfigs:r.length}));return Co(t,n,i)}catch(i){return Be(i instanceof Error?i.message:String(i),r[0],r)}}function Co(t,e,n,r={}){return k("typescript.provider.construct",()=>new Ut(t,e,n),()=>({tsconfigs:n.length,reusedProjects:r.reusedProjects===!0}))}var Ut=class{constructor(e,n,r){this.db=e;this.tsMorph=n;this.projects=r;this.workspacePackages=Gt(e.config.projectRoot),this.sourceFiles=xr(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 T(this.importUsageCache,e,()=>{let n=this.sourceFiles.sourceFile(e);if(!n)return[];let r=wo();return k("typescript.import-usage.file",()=>this.importUsageForSourceFile(e,n,r),()=>({file:e,...r}))})}referencesFor(e){return T(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=>!Nr(p));if(a.length>=ko){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=>Nr(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=_r();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,...Lr(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 Er(n,i,r)}referencesForDefinitionsBySymbolScan(e,n){let r=W(),i=_r(),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,...Lr(i)})),s}addReferencesFromSourceFileScan(e,n,r,i,s,o,a,c,l,p){let u=this.compilerCheckerForSourceFile(e),f=e.compilerNode,d=Fo(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=T(c,g,()=>this.compilerSymbolKeys(g)),_=null,w=null,L=S&&r.has(S.symbolId)?i.get(S.symbolId):void 0;if(L&&(_=Ot(f,b),!jr(L,n,_))){let O=f.getLineAndCharacterOfPosition(b.getStart(f));w={file:n,line:O.line,column:O.character};let E=l.get(L.symbolId)??[];E.push(w),l.set(L.symbolId,E),p&&(p.requestedHits+=1)}for(let O of I)for(let E of s.get(O)?.values()??[]){if(_??=Ot(f,b),jr(E,n,_))continue;if(!w){let v=f.getLineAndCharacterOfPosition(b.getStart(f));w={file:n,line:v.line,column:v.character}}let y=l.get(E.symbolId)??[];y.push(w),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 T(this.calleesCache,e.symbolId,()=>T(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=Sr(n,e,s,this.db.config.projectRoot);return r&&(r.semanticRefsMs+=R.now()-o,r.referenceCount+=a.length),a}signatureFor(e){return T(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 Or(c)}),s=r.getReturnType().getText(n);return`(${i.join(",")})=>${Or(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 Wt(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?Do(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 hr(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=>!wt(c.node)),o=i.some(c=>wt(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=jt(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=jt(this.workspacePackages,i.getModuleSpecifierValue());if(!s)return;let o=n.get(s);if(o)for(let a of Wt(i)){if(a.kind!=="named"||!a.identifier)continue;let c=o.get(a.importedName);if(!c||c.size===0)continue;let l=br(a.identifier,r,this.db.config.projectRoot);l.length>0&&No(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 Mr(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 T(this.indexedDefinitionLeafCache,e,()=>Ir(this.db,e)).get(n)??null}nodeForDefinition(e){return T(this.definitionNodeCache,e.symbolId,()=>this.definitionNodesForFile(e.relativePath).get(e.symbolId)??null)}definitionNodesForFile(e){return T(this.fileDefinitionNodeCache,e,()=>{let n=this.sourceFiles.sourceFile(e);return n?Rr(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?Ft(this.db,p,u,i)??(d&&d!==i?Ft(this.db,p,u,d):null):vr(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?Ao():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),w=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(_,w,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(w),r&&(u=Math.round(R.now()-E));for(let[y,v]of S)S.set(y,_o(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?jo(f):{}}))}semanticCalleeForCallNode(e,n,r,i,s,o,a){let c=a?R.now():0,l=Eo(r,Ot(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 Wt(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 Do(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 wo(){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 Fo(t){let e=new Set;for(let n of t.getImportDeclarations())for(let r of Wt(n))r.localName&&e.add(r.localName);return e}function Eo(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 Ot(t,e){return t.getLineAndCharacterOfPosition(e.getStart(t)).line}function jr(t,e,n){return e===t.relativePath&&n>=t.startLine&&n<=t.endLine}function Nr(t){return t.symbol.includes("#")?Se(t.symbol)==="type"&&t.relativePath.endsWith(".d.ts"):!1}function Ao(){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 jo(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 _r(){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 Lr(t){return{...t,scanMs:Math.round(t.scanMs),packageRefsMs:Math.round(t.packageRefsMs),semanticRefsMs:Math.round(t.semanticRefsMs),hierarchyMs:Math.round(t.hierarchyMs)}}function No(t,e,n){for(let r of e){let i=t.get(r)??[];i.push(...n),t.set(r,i)}}function _o(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 Or(t){return t.replace(/\s+/g," ").replace(/\bimport\("[^"]+"\)\./g,"").trim()}import{createHash as Lo}from"crypto";import{readFileSync as Oo}from"fs";import{dirname as Uo,join as $e}from"path";var ze=2,Wo="typescript-semantic";function Wr(t){let e=$e(t,Wo);return{rootDir:e,requestDir:$e(e,"requests"),responseDir:$e(e,"responses")}}function Br(t){try{let e=JSON.parse(Oo($e(Uo(t),"meta.json"),"utf8"));return e.version!==2&&e.version!==3||typeof e.status!="string"||typeof e.updatedAt!="string"||e.fingerprint===void 0?null:Lo("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 Ho=12e4,Vo=5;function Kr(t,e,n={}){let r=new Bt(t,n),i=null,s=null,o=process.env.SCIP_QUERY_SKIP_WATCH_SERVICE==="1",a=()=>(i??=Ur(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=>Vr(d),()=>a().referencesForDefinitions?.(u,f)??new Map(u.map(d=>[d.symbolId,a().referencesFor(d)]))),p=u=>c({kind:"callees",definitions:[...u]},f=>Vr(f),()=>a().calleesForDefinitions?.(u)??new Map(u.map(f=>[f.symbolId,a().calleesFor(f)])));return{language:"typescript",availability:()=>(s??=c({kind:"availability"},Go,()=>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=>Jo(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 Bt=class{constructor(e,n={}){this.db=e;this.runtime=n.runtime??Xo,this.timeoutMs=n.timeoutMs??Qo(),this.cacheDir=zo(e.config.dbPath),this.projectRoot=ln(e.config.projectRoot)}db;runtime;timeoutMs;cacheDir;projectRoot;request(e){let n=gr(this.cacheDir),r=Wr(this.cacheDir),i=Dt(n.statePath);if(!Hr(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript semantic service is not running.");let s=Br(this.db.config.dbPath);if(!s)throw new Error("Published TypeScript generation identity is unavailable.");let o=this.runtime.randomId(),a=zr(r.requestDir,`${o}.json`),c=zr(r.responseDir,`${o}.json`),l=this.runtime.now()+this.timeoutMs;qr(r.requestDir,{recursive:!0}),qr(r.responseDir,{recursive:!0}),Ie(a,{protocolVersion:ze,id:o,generation:s,deadlineAtMs:l,profileEnvironment:Qt(),request:e});try{for(;this.runtime.now()<=l;){if(qo(c))return Ko($o(c,"utf8"),o,s);let p=Dt(n.statePath);if(!Hr(p,this.projectRoot,this.runtime))throw new Error("TypeScript semantic service stopped while processing a request.");this.runtime.sleep(Vo)}throw new Error(`TypeScript semantic service timed out after ${this.timeoutMs}ms.`)}finally{$r(a,{force:!0}),$r(c,{force:!0})}}};function Hr(t,e,n){let r=t!==null&&n.now()-Date.parse(t.heartbeatAt)<=mr,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 Ko(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 Vr(t){if(!Array.isArray(t))throw new Error("TypeScript semantic service wrote an invalid numeric map.");return new Map(t)}function Jo(t){if(!Array.isArray(t))throw new Error("TypeScript semantic service wrote an invalid string map.");return new Map(t)}function Go(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 Qo(){let t=Number(process.env.SCIP_TYPESCRIPT_SEMANTIC_TIMEOUT_MS);return Number.isInteger(t)&&t>0?t:Ho}var Xo={now:Date.now,randomId:Bo,sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)},isProcessAlive:Q};var Jr=new Le;Vt({name:"semantic-provider",groups:["semantic-provider"],clearAll:t=>Jr.clear(t)});function qt(t,e){let n=Zo(e)??"typescript";return Jr.getOrCreate(t,n,()=>n==="rust"?ur(t.config.projectRoot,{sourceImportUsageResolver:{importUsageFacts:r=>Tn(t,r)},calleeSymbolResolver:Pn(t),sourceZeroCalleeOracle:r=>ea(t,r),scipOccurrenceCalleeOracle:r=>dr(t,r)}):Kr(t,e))}function Zo(t){return t?tn(t)==="rust"?"rust":N(t)?"typescript":null:"typescript"}function ea(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 ia}from"fs";import{dirname as sa,join as oa}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=>Gr(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=na(u,t.graph,p);if(I.find(w=>!r.has(w)))return ne("missing-input-fingerprint");if(m=He([...I,...i]),m.some(w=>Gr(r.get(w))))return ne("unreadable-input");b="dependency-closure"}let g=m.map(I=>ra(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 ta(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 na(t,e,n){let r=n.get(t);if(r)return r;let i=ta(t,e);return n.set(t,i),i}function ra(t){return{path:t.path,size:t.size,hash:t.hash}}function Gr(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 aa=Jt("typescript-semantic-identity-context",{clearGroups:["whole-project"]});function $t(t,e,n){let r=aa.get(t,()=>ca(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 G(t,{includeIgnored:!1}).filter(N).sort()}function ca(t){try{let e=JSON.parse(ia(oa(sa(t.config.dbPath),"meta.json"),"utf8")),n=wn(e.fingerprint);return n?{builder:Ve({projectFiles:de(t),snapshot:n,graph:ye(t),engineIdentity:We()}),identities:new Map}:null}catch{return null}}var zt="typescript-reference-fragment-v2",Je=Xt({kind:"typescript-reference-fragments",invalidation:Zt("typescript-reference-fragments"),serialize:t=>JSON.stringify(t),deserialize:ua});function up(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,zt).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 pp(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=qt(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=Fr(r,la(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=$t(t,f,zt);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 la(t,e){return new Map([...t].map(([n,r])=>[n,r.filter(i=>e.has(i.file))]))}function fp(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=$t(t,d,zt);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=qt(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 ua(t){try{let e=JSON.parse(t);return!Array.isArray(e)||!e.every(pa)?null:e}catch{return null}}function pa(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{Zr as a,fn as b,mn as c,ve as d,va as e,si as f,Ia as g,xa as h,Q as i,Ie as j,En as k,fc as l,dc as m,hc as n,xe as o,Ri as p,ct as q,Aa as r,mr as s,gr as t,Dt as u,N as v,qt as w,Zo as x,wn as y,La as z,Pi as A,Oa as B,Ve as C,$t as D,up as E,pp as F,fp as G};
5
+ //# sourceMappingURL=chunk-4MFMTEJ4.js.map
@@ -1,8 +1,8 @@
1
- import{a as T,c as E,g as L,h as D}from"./chunk-DJI446FQ.js";import{j as O,o as A}from"./chunk-7LERNHDG.js";import{d as H}from"./chunk-KMVGRIO2.js";import{a as _}from"./chunk-RUV4KHWA.js";import{d as C,e as F}from"./chunk-7XP7ZRSI.js";import{a as w}from"./chunk-JLZUM476.js";var J=5;function ae(e,t={}){let{base:a="HEAD",minContainment:o=.7,minCallees:r=3,minSiteCoverage:n=.4,maxHelpers:c=Number.POSITIVE_INFINITY,limit:m=20,scanLimit:g}=t,f=t.semantic!==!1,s=t.diffPlan??E(e,{base:a}),l={available:s.note!==T,base:a,changedFiles:s.changedFiles,helpersChecked:0,skipped:[],findings:[]};if(!l.available||s.changedFiles.length===0)return l;let x=new _(e),k=new Set(s.changedFiles),$=new Map(s.renamedFiles.map(i=>[i.to,i.from])),j=t.baseContentAt??L(e.config.projectRoot,a,D(s)),h=Z(x,k,$,j);if(h.length===0)return l;let R=h.slice(0,c);h.length>c&&(l.note=`helper scoring capped at ${c} of ${h.length} new symbols`);let q=x.calleeMap(R,{semantic:f}),B=R.map(i=>({def:i,callees:A((q.get(i.symbolId)??[]).map(p=>p.symbol))})),V=O(e),M,G=()=>(M??=V.calleeIndex({minCallees:Math.min(3,r),scanLimit:g,semantic:f}),M);for(let{def:i,callees:p}of B){let d=C(i.symbol);if(p.size<r){l.skipped.push({helperShortName:d,helperFile:i.relativePath,reason:`fewer than ${r} meaningful callees \u2014 too small to score`});continue}let P=G(),N=Y(p,P);if(N===0){l.skipped.push({helperShortName:d,helperFile:i.relativePath,reason:"helper callee pattern is all project-wide infrastructure \u2014 too generic to score"});continue}let b=Q(e,i.symbolId);if(b.length===0){l.skipped.push({helperShortName:d,helperFile:i.relativePath,reason:"no references yet \u2014 covered by the new-dead check"});continue}l.helpersChecked+=1;let I=K({candidateIndex:P,changed:k,helperCallees:p,helperFile:i.relativePath,helperSymbol:i.symbol,minContainment:o,minSiteCoverage:n,migratedFiles:b});I.length!==0&&(I.sort((u,S)=>z(S.migrationScope)-z(u.migrationScope)||S.containment-u.containment||S.siteCoverage-u.siteCoverage||u.file.localeCompare(S.file)),l.findings.push({helperSymbol:i.symbol,helperShortName:d,helperFile:i.relativePath,helperShape:"specific-callee-cluster",helperCalleeCount:p.size,specificHelperCalleeCount:N,migratedFiles:b.sort(),leftovers:I.slice(0,J)}))}return l.findings.sort((i,p)=>(p.leftovers[0]?.containment??0)-(i.leftovers[0]?.containment??0)||i.helperFile.localeCompare(p.helperFile)),l.findings=l.findings.slice(0,m),l}function K(e){let t=[],a=U(e.helperSymbol,e.helperFile,e.migratedFiles),o=new Set;for(let r of e.helperCallees)for(let n of e.candidateIndex.candidateIndexesByCallee.get(r)??[])o.add(n);for(let r of o){let n=e.candidateIndex.corpus[r];if(n.symbol===e.helperSymbol||e.changed.has(n.file)||n.callees.has(e.helperSymbol))continue;let c=H(e.helperCallees,n.callees);if(c<e.minContainment)continue;let m=[...e.helperCallees].filter(s=>n.callees.has(s)),g=n.callees.size===0?0:m.length/n.callees.size;if(g<e.minSiteCoverage||!m.some(s=>(e.candidateIndex.docFreq.get(s)??0)<=e.candidateIndex.ubiquityThreshold))continue;let f=W(a,n.symbol,n.file);t.push({symbol:n.symbol,shortName:C(n.symbol),file:n.file,...f,containment:c,siteCoverage:g,uniqueSiteCalleeCount:Math.max(0,n.callees.size-m.length),sharedCallees:m.map(C).sort()})}return t}function z(e){return e==="same-scope"?2:e==="unknown"?1:0}function U(e,t,a){let o=new Set([...y(t),...v(F(e))]);for(let r of a)for(let n of y(r))o.add(n);return o}function W(e,t,a){let o=new Set([...y(a),...v(F(t))]);if(e.size===0||o.size===0)return{migrationScope:"unknown",migrationScopeReasons:["insufficient path/name tokens to infer migration scope"]};let r=[...o].filter(n=>e.has(n)).sort();return r.length>0?{migrationScope:"same-scope",migrationScopeReasons:[`shares migration-scope token(s): ${r.slice(0,5).join(", ")}`]}:{migrationScope:"possible-subtype",migrationScopeReasons:["no path/name tokens shared with the helper or already migrated files"]}}var X=new Set(["app","apps","common","component","components","helper","helpers","index","lib","package","packages","page","pages","route","routes","service","services","shared","spec","src","test","tests","util","utils"]);function y(e){return v(e.replace(/\.[^.]+$/,""))}function v(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>1&&!X.has(t))}function Y(e,t){let a=0;for(let o of e)(t.docFreq.get(o)??0)<=t.ubiquityThreshold&&(a+=1);return a}function Z(e,t,a,o){return e.productionCallableDefinitions({files:[...t],requireFunctionLikeSymbol:!0}).filter(r=>{if(!t.has(r.relativePath))return!1;let n=a.get(r.relativePath)??r.relativePath,c=o(n);return c===null||!new RegExp(`\\b${w(r.leaf)}\\b`).test(c)})}function Q(e,t){return e.all(`SELECT DISTINCT ref_d.relative_path
1
+ import{a as T,c as E,g as L,h as D}from"./chunk-MNRKD3WP.js";import{j as O,o as A}from"./chunk-L2TSLMPT.js";import{d as H}from"./chunk-KMVGRIO2.js";import{a as _}from"./chunk-L2RE5P3X.js";import{d as C,e as F}from"./chunk-7XP7ZRSI.js";import{a as w}from"./chunk-JLZUM476.js";var J=5;function ae(e,t={}){let{base:a="HEAD",minContainment:o=.7,minCallees:r=3,minSiteCoverage:n=.4,maxHelpers:c=Number.POSITIVE_INFINITY,limit:m=20,scanLimit:g}=t,f=t.semantic!==!1,s=t.diffPlan??E(e,{base:a}),l={available:s.note!==T,base:a,changedFiles:s.changedFiles,helpersChecked:0,skipped:[],findings:[]};if(!l.available||s.changedFiles.length===0)return l;let x=new _(e),k=new Set(s.changedFiles),$=new Map(s.renamedFiles.map(i=>[i.to,i.from])),j=t.baseContentAt??L(e.config.projectRoot,a,D(s)),h=Z(x,k,$,j);if(h.length===0)return l;let R=h.slice(0,c);h.length>c&&(l.note=`helper scoring capped at ${c} of ${h.length} new symbols`);let q=x.calleeMap(R,{semantic:f}),B=R.map(i=>({def:i,callees:A((q.get(i.symbolId)??[]).map(p=>p.symbol))})),V=O(e),M,G=()=>(M??=V.calleeIndex({minCallees:Math.min(3,r),scanLimit:g,semantic:f}),M);for(let{def:i,callees:p}of B){let d=C(i.symbol);if(p.size<r){l.skipped.push({helperShortName:d,helperFile:i.relativePath,reason:`fewer than ${r} meaningful callees \u2014 too small to score`});continue}let P=G(),N=Y(p,P);if(N===0){l.skipped.push({helperShortName:d,helperFile:i.relativePath,reason:"helper callee pattern is all project-wide infrastructure \u2014 too generic to score"});continue}let b=Q(e,i.symbolId);if(b.length===0){l.skipped.push({helperShortName:d,helperFile:i.relativePath,reason:"no references yet \u2014 covered by the new-dead check"});continue}l.helpersChecked+=1;let I=K({candidateIndex:P,changed:k,helperCallees:p,helperFile:i.relativePath,helperSymbol:i.symbol,minContainment:o,minSiteCoverage:n,migratedFiles:b});I.length!==0&&(I.sort((u,S)=>z(S.migrationScope)-z(u.migrationScope)||S.containment-u.containment||S.siteCoverage-u.siteCoverage||u.file.localeCompare(S.file)),l.findings.push({helperSymbol:i.symbol,helperShortName:d,helperFile:i.relativePath,helperShape:"specific-callee-cluster",helperCalleeCount:p.size,specificHelperCalleeCount:N,migratedFiles:b.sort(),leftovers:I.slice(0,J)}))}return l.findings.sort((i,p)=>(p.leftovers[0]?.containment??0)-(i.leftovers[0]?.containment??0)||i.helperFile.localeCompare(p.helperFile)),l.findings=l.findings.slice(0,m),l}function K(e){let t=[],a=U(e.helperSymbol,e.helperFile,e.migratedFiles),o=new Set;for(let r of e.helperCallees)for(let n of e.candidateIndex.candidateIndexesByCallee.get(r)??[])o.add(n);for(let r of o){let n=e.candidateIndex.corpus[r];if(n.symbol===e.helperSymbol||e.changed.has(n.file)||n.callees.has(e.helperSymbol))continue;let c=H(e.helperCallees,n.callees);if(c<e.minContainment)continue;let m=[...e.helperCallees].filter(s=>n.callees.has(s)),g=n.callees.size===0?0:m.length/n.callees.size;if(g<e.minSiteCoverage||!m.some(s=>(e.candidateIndex.docFreq.get(s)??0)<=e.candidateIndex.ubiquityThreshold))continue;let f=W(a,n.symbol,n.file);t.push({symbol:n.symbol,shortName:C(n.symbol),file:n.file,...f,containment:c,siteCoverage:g,uniqueSiteCalleeCount:Math.max(0,n.callees.size-m.length),sharedCallees:m.map(C).sort()})}return t}function z(e){return e==="same-scope"?2:e==="unknown"?1:0}function U(e,t,a){let o=new Set([...y(t),...v(F(e))]);for(let r of a)for(let n of y(r))o.add(n);return o}function W(e,t,a){let o=new Set([...y(a),...v(F(t))]);if(e.size===0||o.size===0)return{migrationScope:"unknown",migrationScopeReasons:["insufficient path/name tokens to infer migration scope"]};let r=[...o].filter(n=>e.has(n)).sort();return r.length>0?{migrationScope:"same-scope",migrationScopeReasons:[`shares migration-scope token(s): ${r.slice(0,5).join(", ")}`]}:{migrationScope:"possible-subtype",migrationScopeReasons:["no path/name tokens shared with the helper or already migrated files"]}}var X=new Set(["app","apps","common","component","components","helper","helpers","index","lib","package","packages","page","pages","route","routes","service","services","shared","spec","src","test","tests","util","utils"]);function y(e){return v(e.replace(/\.[^.]+$/,""))}function v(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>1&&!X.has(t))}function Y(e,t){let a=0;for(let o of e)(t.docFreq.get(o)??0)<=t.ubiquityThreshold&&(a+=1);return a}function Z(e,t,a,o){return e.productionCallableDefinitions({files:[...t],requireFunctionLikeSymbol:!0}).filter(r=>{if(!t.has(r.relativePath))return!1;let n=a.get(r.relativePath)??r.relativePath,c=o(n);return c===null||!new RegExp(`\\b${w(r.leaf)}\\b`).test(c)})}function Q(e,t){return e.all(`SELECT DISTINCT ref_d.relative_path
2
2
  FROM mentions m
3
3
  JOIN chunks c ON m.chunk_id = c.id
4
4
  JOIN documents ref_d ON c.document_id = ref_d.id
5
5
  WHERE m.symbol_id = ?
6
6
  AND m.role != 1
7
7
  ${e.pathExclusionsFor("ref_d")}`,t).map(o=>o.relative_path)}export{ae as a};
8
- //# sourceMappingURL=chunk-FVLZB54V.js.map
8
+ //# sourceMappingURL=chunk-ABDXTPCT.js.map