scip-query 0.19.1 → 0.19.4
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.
- package/CHANGELOG.md +25 -0
- package/README.md +18 -2
- package/dist/augment-vue-worker.js +1 -1
- package/dist/{chunk-FHLYJVXF.js → chunk-25LPM4DG.js} +2 -2
- package/dist/chunk-2CTX5CMX.js +4 -0
- package/dist/chunk-2Y373BDD.js +2 -0
- package/dist/{chunk-24ET4VLC.js → chunk-2YU7I3QO.js} +2 -2
- package/dist/{chunk-63P42UR6.js → chunk-3MJ5YA4Y.js} +2 -2
- package/dist/{chunk-ZNK6K3LB.js → chunk-3SVWW4PN.js} +2 -2
- package/dist/{chunk-WWCZCH7W.js → chunk-4333ETTV.js} +2 -2
- package/dist/{chunk-Q2WEWIKX.js → chunk-4RSI5EMG.js} +2 -2
- package/dist/{chunk-CIYUFF24.js → chunk-4SALD7RU.js} +2 -2
- package/dist/{chunk-DCDOGW32.js → chunk-4T3LTWUS.js} +2 -2
- package/dist/{chunk-34MLC6UI.js → chunk-4XTA5OMB.js} +2 -2
- package/dist/chunk-52ZYCAEO.js +2 -0
- package/dist/{chunk-SJ6XSCG7.js → chunk-54HA4ZXH.js} +2 -2
- package/dist/{chunk-J4MYRIYT.js → chunk-64RFXJT5.js} +2 -2
- package/dist/{chunk-FUFNRZFJ.js → chunk-6E7UTQY7.js} +2 -2
- package/dist/{chunk-PNESKY2Z.js → chunk-6NSFJYRC.js} +2 -2
- package/dist/{chunk-AOSFSYEA.js → chunk-7B3UPBVA.js} +2 -2
- package/dist/{chunk-XCPE3G75.js → chunk-7GXM52MI.js} +2 -2
- package/dist/{chunk-6O5JOS7T.js → chunk-A2EZV2UM.js} +2 -2
- package/dist/{chunk-4BU54UJG.js → chunk-ABMYA4TN.js} +2 -2
- package/dist/{chunk-64QITTX7.js → chunk-B5NLK2B3.js} +2 -2
- package/dist/{chunk-OLG2YPLS.js → chunk-BTEE5NZQ.js} +2 -2
- package/dist/{chunk-MP43RX4O.js → chunk-C7NIYIQ4.js} +1 -1
- package/dist/{chunk-AEM24WSF.js → chunk-CFMXJPHH.js} +2 -2
- package/dist/{chunk-JJZRS2OP.js → chunk-CNKAGUPL.js} +2 -2
- package/dist/{chunk-MQ2B33LQ.js → chunk-D4U5Q3FT.js} +2 -2
- package/dist/{chunk-YZXV3CU3.js → chunk-DGAGY7RJ.js} +1 -1
- package/dist/{chunk-FRXB74RQ.js → chunk-DLWR3NUU.js} +5 -5
- package/dist/{chunk-YGQBJUS6.js → chunk-DZ74OMG6.js} +2 -2
- package/dist/{chunk-APLNTJPJ.js → chunk-EOOJGLDU.js} +2 -2
- package/dist/{chunk-TYEGFDOP.js → chunk-F6O7AAC3.js} +2 -2
- package/dist/{chunk-HFBNIIZX.js → chunk-FECYOO5O.js} +2 -2
- package/dist/{chunk-V7J4A3AH.js → chunk-FWUUZTIO.js} +2 -2
- package/dist/{chunk-KMOMNTB4.js → chunk-GBQ5NYPR.js} +2 -2
- package/dist/{chunk-JBZXJXIS.js → chunk-GPBBJ5Y4.js} +2 -2
- package/dist/{chunk-OOUJBAKJ.js → chunk-H7UKLTWJ.js} +2 -2
- package/dist/{chunk-YILKXTIY.js → chunk-HEXVUYFQ.js} +2 -2
- package/dist/{chunk-J5XJWCB3.js → chunk-HKEHS2AS.js} +2 -2
- package/dist/{chunk-5TEUKVSM.js → chunk-I5AWSI2G.js} +2 -2
- package/dist/{chunk-XYBNOILR.js → chunk-I5RJM53C.js} +2 -2
- package/dist/{chunk-WCZAABYF.js → chunk-IG7N5ZIK.js} +2 -2
- package/dist/{chunk-C3KCSAQ4.js → chunk-IUFDSKGG.js} +2 -2
- package/dist/{chunk-OQ6TCHBB.js → chunk-IZKFSVBV.js} +2 -2
- package/dist/{chunk-5OZCNAVM.js → chunk-J77UIT3I.js} +2 -2
- package/dist/{chunk-B2WQKQKP.js → chunk-K2ERX4UT.js} +2 -2
- package/dist/{chunk-PYMZU5EG.js → chunk-KP6XRY5Z.js} +2 -2
- package/dist/{chunk-FC5K7T35.js → chunk-L7SPDE73.js} +1 -1
- package/dist/{chunk-DZXFZAZO.js → chunk-LBMJEAEW.js} +2 -2
- package/dist/chunk-LHMNRHGV.js +3 -0
- package/dist/{chunk-CKFMZE77.js → chunk-M7AIS73L.js} +2 -2
- package/dist/{chunk-53SUJOJA.js → chunk-M7MTH5NR.js} +2 -2
- package/dist/{chunk-6PKO2TNZ.js → chunk-MITTUCEH.js} +2 -2
- package/dist/chunk-MSWVMDAH.js +122 -0
- package/dist/chunk-NH5ALKPW.js +2 -0
- package/dist/{chunk-3WLRW5TC.js → chunk-NPKYOIFM.js} +3 -3
- package/dist/{chunk-GIHVWNKQ.js → chunk-NRCXJDHL.js} +2 -2
- package/dist/{chunk-5GOBZI34.js → chunk-NSS46APD.js} +2 -2
- package/dist/{chunk-HCS5LB6U.js → chunk-NZL2DBT7.js} +2 -2
- package/dist/{chunk-SYGAA54M.js → chunk-OMPZHGHO.js} +2 -2
- package/dist/{chunk-AGTATREV.js → chunk-P2PC2WGR.js} +2 -2
- package/dist/{chunk-CAKPEQZB.js → chunk-Q3AFUTGB.js} +2 -2
- package/dist/{chunk-ZJGZCBYT.js → chunk-Q4IIEGXJ.js} +2 -2
- package/dist/chunk-QDV6RDCP.js +4 -0
- package/dist/{chunk-FTRNGQGR.js → chunk-QGXBRIM5.js} +2 -2
- package/dist/{chunk-WXVGNFAO.js → chunk-QOKYJ33H.js} +1 -1
- package/dist/{chunk-FB6IKAKZ.js → chunk-QRGV2F7L.js} +2 -2
- package/dist/chunk-QVWS2VWZ.js +7 -0
- package/dist/{chunk-DFQNE73Y.js → chunk-R4FQGQ4X.js} +2 -2
- package/dist/{chunk-4CZJ4YJB.js → chunk-RV2FQIX3.js} +2 -2
- package/dist/{chunk-4FMT4HPC.js → chunk-S44IULR6.js} +2 -2
- package/dist/{chunk-LQUDSHLB.js → chunk-SOAT6NLA.js} +2 -2
- package/dist/{chunk-QHKXGMOI.js → chunk-STOL2BTL.js} +2 -2
- package/dist/chunk-SVLTAG5O.js +927 -0
- package/dist/{chunk-2WCXKANA.js → chunk-U6WNH5GC.js} +2 -2
- package/dist/chunk-U7DSEKOM.js +30 -0
- package/dist/{chunk-KMUFGAIK.js → chunk-UKZBVX4U.js} +2 -2
- package/dist/chunk-UOAV44HR.js +38 -0
- package/dist/chunk-V27BEQJN.js +7 -0
- package/dist/{chunk-VIKEPD4D.js → chunk-VGRICIQI.js} +2 -2
- package/dist/chunk-VMNZB6WI.js +4 -0
- package/dist/{chunk-LF5CIKWZ.js → chunk-VTKGCT3V.js} +5 -5
- package/dist/{chunk-WFRET75Z.js → chunk-VXQNNXJE.js} +2 -2
- package/dist/{chunk-V5WBVF6K.js → chunk-WER3B7MI.js} +2 -2
- package/dist/{chunk-SSXEYWN3.js → chunk-WQTAC523.js} +2 -2
- package/dist/{chunk-GAE7WCBK.js → chunk-X6D5IC6I.js} +2 -2
- package/dist/{chunk-FBUNGRKI.js → chunk-XLTP42QA.js} +2 -2
- package/dist/chunk-XTX6QHOF.js +4 -0
- package/dist/{chunk-AYRHVJXW.js → chunk-XYADIZHU.js} +5 -5
- package/dist/{chunk-WAU7HVDI.js → chunk-YGAGTIDK.js} +2 -2
- package/dist/{chunk-BMTBVMA3.js → chunk-YIJ7ZAA4.js} +3 -3
- package/dist/{chunk-BBBKPOIT.js → chunk-YNRNA5LK.js} +2 -2
- package/dist/{chunk-BCMOTIB6.js → chunk-YVVCVR2L.js} +2 -2
- package/dist/{chunk-RPEA7P5Z.js → chunk-ZAIILQNP.js} +3 -3
- package/dist/{chunk-7SGOWD2Y.js → chunk-ZGZUZ7XE.js} +2 -2
- package/dist/{chunk-YCSTKIYU.js → chunk-ZXJYMGD3.js} +2 -2
- package/dist/cli.js +2 -2
- package/dist/{command-descriptors-3EJHQLQZ.js → command-descriptors-MFU4BCJ7.js} +174 -167
- package/dist/{config-types-BA3xLCfG.d.ts → config-types-D20KuvvZ.d.ts} +67 -0
- package/dist/{db-CzA-9_rL.d.ts → db-G_II8yXU.d.ts} +1 -1
- package/dist/diff-gate-types-C9BoYwYD.d.ts +10 -0
- package/dist/direct-navigation-MRMQFIRB.js +3 -0
- package/dist/{health-DYy13GAe.d.ts → health-oblXYgkF.d.ts} +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/queries/affected.d.ts +2 -2
- package/dist/queries/affected.js +1 -1
- package/dist/queries/architecture.d.ts +86 -4
- package/dist/queries/architecture.js +1 -1
- package/dist/queries/bottlenecks.d.ts +2 -2
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.d.ts +2 -2
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +2 -2
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +2 -2
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.d.ts +2 -2
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.d.ts +2 -2
- package/dist/queries/co-change.js +1 -1
- package/dist/queries/code.d.ts +2 -2
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.d.ts +2 -2
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +2 -2
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/convergence.d.ts +2 -2
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.d.ts +2 -2
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.d.ts +2 -2
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.d.ts +2 -2
- package/dist/queries/dataflow.js +1 -1
- package/dist/queries/dead.d.ts +2 -2
- package/dist/queries/dead.js +1 -1
- package/dist/queries/decorative-checkers.d.ts +2 -2
- package/dist/queries/decorative-checkers.js +1 -1
- package/dist/queries/deep-chains.d.ts +2 -2
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/deps.d.ts +2 -2
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-gate.d.ts +3 -3
- package/dist/queries/diff-gate.js +1 -1
- package/dist/queries/diff-impact.d.ts +4 -8
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +3 -3
- package/dist/queries/doc-drift.js +1 -1
- package/dist/queries/drift.d.ts +2 -2
- package/dist/queries/drift.js +1 -1
- package/dist/queries/duplicate-bodies.d.ts +2 -2
- package/dist/queries/duplicate-bodies.js +1 -1
- package/dist/queries/extract-candidates.d.ts +2 -2
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +2 -2
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +2 -2
- package/dist/queries/health.d.ts +3 -3
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.d.ts +2 -2
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.d.ts +2 -2
- package/dist/queries/hotspots.js +1 -1
- package/dist/queries/imports.d.ts +2 -2
- package/dist/queries/imports.js +1 -1
- package/dist/queries/incomplete-migration.d.ts +3 -2
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +21 -5
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.d.ts +2 -2
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/locality-candidates.d.ts +2 -2
- package/dist/queries/locality-candidates.js +1 -1
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.d.ts +2 -2
- package/dist/queries/methods.js +1 -1
- package/dist/queries/not-implemented.d.ts +2 -2
- package/dist/queries/not-implemented.js +1 -1
- package/dist/queries/outline.d.ts +2 -2
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +2 -2
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.d.ts +2 -2
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +2 -2
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.d.ts +2 -2
- package/dist/queries/react-hook-candidates.js +1 -1
- package/dist/queries/react-large-component-pressure.d.ts +2 -2
- package/dist/queries/react-large-component-pressure.js +1 -1
- package/dist/queries/recent-duplicates.d.ts +2 -2
- package/dist/queries/recent-duplicates.js +1 -1
- package/dist/queries/redundant-reexports.d.ts +2 -2
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/refs.d.ts +2 -2
- package/dist/queries/refs.js +1 -1
- package/dist/queries/self-audit.d.ts +2 -2
- package/dist/queries/self-audit.js +1 -1
- package/dist/queries/similar-chains.d.ts +2 -2
- package/dist/queries/similar-chains.js +1 -1
- package/dist/queries/similar-files.d.ts +2 -2
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.d.ts +2 -2
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +2 -2
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice.d.ts +2 -2
- package/dist/queries/slice.js +1 -1
- package/dist/queries/stale-abstractions.d.ts +2 -2
- package/dist/queries/stale-abstractions.js +1 -1
- package/dist/queries/stats.d.ts +2 -2
- package/dist/queries/surface.d.ts +2 -2
- package/dist/queries/surface.js +1 -1
- package/dist/queries/symbols.d.ts +2 -2
- package/dist/queries/symbols.js +1 -1
- package/dist/queries/system.d.ts +2 -2
- package/dist/queries/system.js +1 -1
- package/dist/queries/test-quality.d.ts +2 -2
- package/dist/queries/test-quality.js +1 -1
- package/dist/queries/trace.d.ts +2 -2
- package/dist/queries/trace.js +1 -1
- package/dist/queries/twin-ab.d.ts +2 -2
- package/dist/queries/twin-ab.js +1 -1
- package/dist/queries/twin-drift.d.ts +2 -2
- package/dist/queries/twin-drift.js +1 -1
- package/dist/queries/unused-imports.d.ts +2 -2
- package/dist/queries/unused-imports.js +1 -1
- package/dist/queries/unused-params.d.ts +2 -2
- package/dist/queries/unused-params.js +1 -1
- package/dist/queries/vue-component-duplicates.d.ts +2 -2
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.d.ts +2 -2
- package/dist/queries/vue-composable-candidates.js +1 -1
- package/dist/queries/vue-large-view-pressure.d.ts +2 -2
- package/dist/queries/vue-large-view-pressure.js +1 -1
- package/dist/queries/wrapper-candidates.d.ts +2 -2
- package/dist/queries/wrapper-candidates.js +1 -1
- package/dist/reindex-worker.js +24 -24
- package/dist/reindex.d.ts +3 -3
- package/dist/reindex.js +38 -38
- package/dist/runtime.d.ts +9 -4
- package/dist/runtime.js +2 -2
- package/dist/rust-semantic-session-worker.js +1 -1
- package/dist/rust-semantic-worker.js +1 -1
- package/dist/{scip-cli-1bVKJgXi.d.ts → scip-cli-kRpaexVJ.d.ts} +1 -1
- package/dist/watch-server.js +5 -5
- package/docs/AI_FAILURE_MODES.md +1 -1
- package/docs/COMMAND_REFERENCE.md +1 -1
- package/docs/DETECTOR_GUIDE.md +1 -1
- package/docs/analyzer-inventory.md +1 -1
- package/docs/analyzer-validation-ledger.md +131 -1
- package/docs/architecture-coherence-vision.md +29 -0
- package/package.json +2 -2
- package/dist/chunk-2NA6TYP4.js +0 -120
- package/dist/chunk-5W2VAEVR.js +0 -4
- package/dist/chunk-7TJJY2C3.js +0 -2
- package/dist/chunk-DO775SYA.js +0 -2
- package/dist/chunk-DRH3AD7W.js +0 -4
- package/dist/chunk-E3KWOHH7.js +0 -5
- package/dist/chunk-EMIIOOTM.js +0 -38
- package/dist/chunk-ESNRT7QN.js +0 -927
- package/dist/chunk-IOOCKVUA.js +0 -6
- package/dist/chunk-KC2IFAAU.js +0 -3
- package/dist/chunk-NTOBQK5H.js +0 -4
- package/dist/chunk-UJKZQLDB.js +0 -2
- package/dist/chunk-US44MEVU.js +0 -29
- package/dist/chunk-XZXUMGAA.js +0 -7
- package/dist/diff-gate-types-CG2YQ_ei.d.ts +0 -4
- package/dist/direct-navigation-C2A44KFT.js +0 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{s as u}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{s as u}from"./chunk-L7SPDE73.js";function x(e,i){let l=new Map;return e.forEach((t,f)=>{let o=new Set;for(let r of i(t)){if(o.has(r))continue;o.add(r);let n=l.get(r);n?n.push(f):l.set(r,[f])}}),{candidatesFor:(t,f)=>{let o=new Set;for(let r of i(t)){let n=l.get(r);if(n)for(let a of n)a!==f&&o.add(a)}return[...o].sort((r,n)=>r-n)}}}function R(e){let i=c(e.profile?.name),l=()=>{let t=[];i=c(e.profile?.name,e);let f=(r,n)=>{let a=e.profiles[r],s=e.profiles[n];i.candidatePairs+=1,i.comparedPairs+=1;let d=e.compare(a,s);d&&t.push(d)};if(e.filePattern){let r=e.profiles.findIndex(n=>n.file.includes(e.filePattern));if(r>=0){let n=e.profiles[r];for(let a of m(e,r)){let s=e.profiles[a];e.focusFiles&&!e.focusFiles.has(n.file)&&!e.focusFiles.has(s.file)||f(r,a)}}}else if(e.focusFiles?.size!==0){let r=typeof e.overrunFactor=="number"&&Number.isFinite(e.limit)?e.limit*e.overrunFactor:Number.POSITIVE_INFINITY;for(let n=0;n<e.profiles.length;n+=1){let a=e.profiles[n],s=e.focusFiles?.has(a.file)??!1;for(let d of p(e,n))e.focusFiles&&!s&&!e.focusFiles.has(e.profiles[d].file)||f(n,d);if(t.length>r){i.overrunApplied=!0;break}}}t.sort(e.sort??((r,n)=>n.similarity-r.similarity)),i.matchedResults=t.length;let o=t.slice(0,e.limit);return i.emittedResults=o.length,e.onProfile?.({...i}),o};return e.profile?u(`pairwise-profile:${e.profile.name}`,l,()=>({...b(e.profile?.metadata),...i})):l()}function m(e,i){if(e.candidateIndex)return P(e,i,-1);let l=[];for(let t=0;t<e.profiles.length;t+=1)t!==i&&l.push(t);return l}function p(e,i){if(e.candidateIndex)return P(e,i,i);let l=[];for(let t=i+1;t<e.profiles.length;t+=1)l.push(t);return l}function P(e,i,l){let t=e.profiles[i],f=new Set;for(let o of e.candidateIndex?.candidatesFor(t,i,e.profiles)??[])o<=l||o!==i&&(o<0||o>=e.profiles.length||f.add(o));return[...f].sort((o,r)=>o-r)}function c(e,i){return{pipeline:e,profileCount:i?.profiles.length??0,focusedProfileCount:i?.focusFiles?i.profiles.filter(l=>i.focusFiles.has(l.file)).length:0,candidatePairs:0,comparedPairs:0,matchedResults:0,emittedResults:0,candidateIndexApplied:i?.candidateIndex!==void 0,focusApplied:i?.focusFiles!==void 0,filePatternApplied:i?.filePattern!==void 0,overrunApplied:!1}}function b(e){return typeof e=="function"?e():e??{}}export{x as a,R as b};
|
|
2
|
+
//# sourceMappingURL=chunk-U6WNH5GC.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import{a as J}from"./chunk-P5XHIJHI.js";import{B as Ge,C as Qe,a as Yn,g as Jn,h as ge,i as Re,n as Gn,p as Qn,q as Zn,r as Ye,s as be,t as G,u as et,v as nt,w as he,x as tt,z as Je}from"./chunk-2CTX5CMX.js";import{g as Xn}from"./chunk-LM72NQ7T.js";import{b as Kn,e as z,f as ye,h as Vn,j as re,s as q,t as Se}from"./chunk-XYADIZHU.js";import{a as te,f as de,n as Hn,p as $n}from"./chunk-X6D5IC6I.js";import{B as Wn,E as zn,e as Bn,f as jn,s as $e}from"./chunk-YGAGTIDK.js";import{a as Nn,c as An,d as Ln,g as ze,i as He,k as On,m as Un,q as A,r as qn,s as w,u as me,v as Ke,w as Ve,x as ne}from"./chunk-L7SPDE73.js";import{a as pe}from"./chunk-64MNV6AB.js";function rt(t){let e=new Map,n=Er(t),r=new Map;return i=>{let s=wr(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=Pr(q(t,i.file)),e.set(i.file,a));let c=Fr(a,i);return r.set(s,c),c}}function wr(t){return`${t.file}\0${t.symbol}\0${t.line}`}function Er(t){return new Set(t.all("SELECT relative_path FROM documents").map(e=>e.relative_path))}function Pr(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 Fr(t,e){if(t.definitions.length===0)return e.symbol;let n=Ar(e.symbol),r=_r(t.byLeaf,n),i=Nr(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 _r(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 Nr(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 Ar(t){let e=new Set([t]),r=t.split(/::|\.|#/).filter(Boolean).at(-1);return r&&e.add(r),e}function it(t,e){let r=$n(t,e).map(i=>Or(e,i));return{usage:r,positions:Ur(t,e,r)}}function st(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?Lr(r.usage,i.sourcePaths):r.usage}}}function Lr(t,e){return t.map((n,r)=>{let i=e.get(String(r));return i?{...n,sourcePath:i}:n})}function Or(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 Ur(t,e,n){let r=zn(t,e);if(!r)return[];let i=Br(r.rootNode),s=new Map;for(let a of i){let c=s.get(Xe(a.importedName,a.localName));c?c.push(a.position):s.set(Xe(a.importedName,a.localName),[a.position])}let o=[];return n.forEach((a,c)=>{let l=s.get(Xe(a.importedName,a.localName??a.importedName))?.shift();l&&o.push({...l,id:String(c),file:e})}),o}function Br(t){let e=[];for(let n of t.descendantsOfType("use_declaration")){let r=n.namedChildren.find(i=>i.type!=="visibility_modifier");r&&e.push(...Ie(r,""))}return e.filter(n=>n.importedName!=="*")}function Ie(t,e){switch(t.type){case"identifier":case"super":case"self":case"crate":return[{importedName:t.text,localName:t.text,position:Ze(t,t.text)}];case"scoped_identifier":{let n=t.text.split("::").pop()??t.text;return[{importedName:n,localName:n,position:Ze(t,n)}]}case"scoped_use_list":{let n=t.namedChild(0),r=t.namedChild(1);if(!n||!r)return[];let i=Hn(e,n.text);return r.namedChildren.flatMap(s=>Ie(s,i))}case"use_list":return t.namedChildren.flatMap(n=>Ie(n,e));case"use_as_clause":{let n=t.namedChild(0),r=t.namedChild(1);return!n||!r?[]:Ie(n,e).map(i=>({...i,localName:r.text}))}case"use_wildcard":{let n=t.namedChild(0),r="*";return[{importedName:r,localName:r,position:Ze(n??t,r)}]}default:return[]}}function Ze(t,e){let n=Math.max(0,t.text.lastIndexOf(e));return{id:"",file:"",line:t.startPosition.row,column:t.startPosition.column+n+jr(e)}}function jr(t){return Math.max(0,Math.min(t.length-1,1))}function Xe(t,e){return`${t}\0${e}`}import{spawnSync as un}from"child_process";import{existsSync as fn}from"fs";import{fileURLToPath as Ei}from"url";function ve(t){let e=Jn(Yn,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 mi,mkdtempSync as xt,readFileSync as Tt,rmSync as sn}from"fs";import{tmpdir as kt}from"os";import{join as on}from"path";import{fileURLToPath as Fe,pathToFileURL as di}from"url";import{SHARE_ENV as yi,Worker as Si}from"worker_threads";function W(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 H(t,e,n){let r=J(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 ei}from"child_process";import{createHash as ni,randomUUID as ti}from"crypto";import{existsSync as Rt,mkdirSync as mt,readFileSync as we,realpathSync as ri,rmSync as rn}from"fs";import{tmpdir as ii}from"os";import{resolve as U}from"path";import{execFileSync as Jr}from"child_process";import{existsSync as qr,readFileSync as Wr}from"fs";import{deserializeSCIP as zr,SymbolRole as Hr}from"@c4312/scip";import{existsSync as yo,readFileSync as So}from"fs";import{relative as Ro,resolve as bo,sep as ho}from"path";import{fileURLToPath as vo,pathToFileURL as Mo}from"url";function Me(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 en=new WeakMap,$r="SCIP_RUST_SCIP_OCCURRENCE_REFERENCE_MODE";function ot(t,e){let n=new Map,r=De(),i=e.filter(o=>lt(o,r));if(i.length===0)return n;let s=ut(t);if(!s)return n;for(let o of i){let a=ct(s,o);a!==null&&n.set(o.symbolId,a)}return n}function at(t,e){if(!lt(e,De()))return null;let n=ut(t);return n?ct(n,e):null}function ct(t,e){return t.referencesBySymbol.get(e.symbol)??[]}function lt(t,e="safe"){if(!t.symbol.startsWith("rust-analyzer ")||!t.relativePath.endsWith(".rs")||re(t.symbol)||/impl#\[[^\]]+\]\[Default\]default\(\)\.$/.test(t.symbol))return!1;if(e==="all")return!0;let n=ye(t.symbol);if(n==="method")return!0;if(n!=="term")return!1;let r=Kn(t.symbol);return"kind"in r?!1:!Kr(r)}function Kr(t){for(let e=0;e<t.descriptors.length-1;e+=1)if(t.descriptors[e]?.suffix==="type")return!0;return!1}function ut(t){if(en.has(t))return en.get(t)??null;let e=Vr(t);return en.set(t,e),e}function Vr(t){if(!qr(t.config.indexPath))return null;try{let e=zr(Wr(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&Hr.Definition)!==0)continue;let o=Yr(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,Me(i));return{referencesBySymbol:n}}catch{return null}}function Yr(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 De(){return process.env[$r]==="all"?"all":"safe"}var ft=new Map;function nn(t){let n=ve(t).resolvedBinary??null;return{engine:"rust-analyzer",resolvedBinary:n,version:n?Gr(t,n):"unavailable"}}function tn(t){return{...nn(t),scipOccurrenceReferenceMode:De()}}function Gr(t,e){let n=`${t}\0${e}`,r=ft.get(n);if(r)return r;let i;try{i=Jr(e,["--version"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim()}catch{i="unknown"}return ft.set(n,i),i}import{createHash as Qr}from"crypto";var Zr=new Set(["Cargo.lock","Cargo.toml","rust-project.json","rust-toolchain","rust-toolchain.toml"]);function pt(t){let e=Gn(t,{includePath:Xr});return Qr("sha256").update(JSON.stringify(e)).digest("hex")}function Xr(t){let e=t.replaceAll("\\","/"),n=e.split("/").at(-1)??e;return e.endsWith(".rs")||Zr.has(n)?!0:e===".cargo/config"||e===".cargo/config.toml"||e.endsWith("/.cargo/config")||e.endsWith("/.cargo/config.toml")}var bt=2,si=5e3,oi=5e3,ht=10,ai=3e4;function dt(t,e,n,r=Ct){let i=r.engineIdentity(t),s={protocolVersion:bt,projectRoot:r.canonicalProjectRoot(t),projectFingerprint:r.projectFingerprint(t),engine:{engine:i.engine,resolvedBinary:i.resolvedBinary,version:i.version},workerFingerprint:r.fileFingerprint(e),environment:vt(r.environment())};return{key:ke(Te(s)),...s}}function Ce(t,e,n){return t.protocolVersion===bt&&(e-t.heartbeatAtMs<=si||t.busyUntilMs!==void 0&&e<=t.busyUntilMs)&&n(t.pid)}function It(t,e,n){let r;try{r=ke(we(e))}catch{r="missing"}let i=ke(Te({projectRoot:U(t),serverPath:U(e),serverFingerprint:r})).slice(0,20);return U(n,`scip-query-rust-session-${i}`)}function yt(t){let e=t===void 0?Number.NaN:Number(t);return Number.isInteger(e)&&e>=0?e:0}function vt(t){return Object.fromEntries(Object.entries(t).filter(([e])=>Dt(e)).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>[e,n??null]))}function Mt(t,e){let n=e.runtime??pi,r=e.identityRuntime??Ct,i=It(t,e.serverPath,e.tempRoot??ii()),s=!1,o=(a,c)=>{if(s)throw new Error("Durable Rust semantic session was already disposed.");return li(i,e.serverPath,e.semanticWorkerPath,a,c,n)};return{requestSemantic(a,c){let l=dt(t,e.semanticWorkerPath,a,r),f=n.now()+Math.max(1,c-1e3);return o({kind:"semantic",identityKey:l.key,workerEnvironment:gt(),request:{...a,readinessDeadlineMs:f,referenceRetryTimeoutMs:ci(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,a.referenceRetryTimeoutMs),settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:yt(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},requestImportDefinitions(a,c){let l=dt(t,e.semanticWorkerPath,a,r),f=n.now()+Math.max(1,c-1e3);return o({kind:"import-definitions",identityKey:l.key,workerEnvironment:gt(),request:{...a,readinessDeadlineMs:f,settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:yt(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},shutdown(){s=!0}}}function ci(t,e){return e!==void 0?e:t===void 0?ai:void 0}function li(t,e,n,r,i,s){let o=s.randomId(),a=s.now(),c=U(t,"requests"),l=U(t,"responses"),f=U(c,`${o}.json`),u=U(l,`${o}.json`);mt(c,{recursive:!0}),mt(l,{recursive:!0}),Re(f,{id:o,request:r});let p=s.now()+i;try{for(St(t,e,n,p,s);s.now()<=p;){if(Rt(u)){let y=ui(we(u,"utf8"));if(!y.ok)throw new Error(y.error);return A()&&me({type:"span",name:"rust.semantic.durable-session.request",durationMs:s.now()-a,ok:!0,session:y.session,kind:r.kind}),y.response}let m=xe(t);(!m||!Ce(m,s.now(),s.isProcessAlive))&&St(t,e,n,p,s),s.sleep(ht)}throw new Error(`Durable Rust semantic session timed out after ${(i/1e3).toFixed(0)}s.`)}finally{rn(f,{force:!0}),rn(u,{force:!0})}}function St(t,e,n,r,i){let s=xe(t);if(s&&Ce(s,i.now(),i.isProcessAlive))return;rn(U(t,"server.json"),{force:!0}),i.spawnServer(e,t,n);let o=Math.min(r,i.now()+oi);for(;i.now()<=o;){let a=xe(t);if(a&&Ce(a,i.now(),i.isProcessAlive))return;i.sleep(ht)}throw new Error("Durable Rust semantic session helper did not become ready within 5s.")}function xe(t){try{let e=JSON.parse(we(U(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 ui(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 gt(){return Object.fromEntries(Object.entries(process.env).filter(([t])=>fi(t)).sort(([t],[e])=>t.localeCompare(e)).map(([t,e])=>[t,e??null]))}function Dt(t){return t==="HOME"||t==="PATH"||t.startsWith("CARGO_")||t.startsWith("RA_")||t.startsWith("RUST")}function fi(t){return Dt(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 Ct={canonicalProjectRoot(t){try{return ri(t)}catch{return U(t)}},projectFingerprint(t){return pt(t)},engineIdentity:nn,fileFingerprint(t){return ke(we(t))},environment(){return vt(process.env)}},pi={now:Date.now,randomId:ti,isProcessAlive:ge,spawnServer(t,e,n){if(!Rt(t))throw new Error(`Durable Rust semantic session helper was not found at ${t}. Run npm run build first.`);ei(process.execPath,[t,e,n],{detached:!0,stdio:"ignore"}).unref()},sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)}};function Te(t){return Array.isArray(t)?`[${t.map(Te).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>`${JSON.stringify(e)}:${Te(n)}`).join(",")}}`:JSON.stringify(t)}function ke(t){return ni("sha256").update(t).digest("hex")}var wt=15e3,Et=8,Ft=5e3,gi=64,Ri=96,cn=class{constructor(e,n,r={}){this.projectRoot=e;this.status=n;this.opts=r;this.requester=r.requester??vi(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:ie(e)};try{let r=this.requestSession(n.resolvedBinary,e,{includeReferences:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,references:W(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:ie(e)}}}calleesForDefinitions(e){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,callees:se(e)};try{let r=this.requestSession(n.resolvedBinary,e,{includeReferences:!1,includeCallees:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,callees:an(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:se(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:ie(e),callees:se(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:W(e,new Map(s.references),new Set(s.incompleteReferenceSymbolIds??[])),callees:an(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:Pt(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:Ti(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:Pt(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,wt),s=Pe(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),o=Ee(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Et),a=Pe(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,f=r.signatureDefinitions?[...r.signatureDefinitions]:void 0,u=oe(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,...r}),p={projectRoot:this.projectRoot,rustAnalyzerBinary:e,definitions:[...n],...c?{referenceDefinitions:c}:{},...l?{calleeDefinitions:l}:{},...f?{signatureDefinitions:f}:{},requestTimeoutMs:i,...r.includeReferences!==!1&&s>0?{referenceRetryTimeoutMs:s}:{},diagnosticsTimeoutMs:a,settleDelayMs:u,concurrency:o,includeReferences:r.includeReferences,includeCallees:r.includeCallees,includeSignatures:r.includeSignatures},m=ki(p);return w("rust.semantic.session.request",()=>this.requester.requestSemantic(p,H(m,ln(i,p.referenceRetryTimeoutMs),o)),()=>({definitions:n.length,operationDefinitions:m,referenceDefinitions:p.referenceDefinitions?.length,calleeDefinitions:p.calleeDefinitions?.length,signatureDefinitions:p.signatureDefinitions?.length,references:p.includeReferences!==!1,callees:p.includeCallees===!0,signatures:p.includeSignatures===!0,referenceRetryTimeoutMs:p.referenceRetryTimeoutMs}))}fallbackReferencesAndCallees(e,n,r,i){let s=n.length===0?{available:!0,references:ie(n)}:this.opts.fallbackReferenceResolver?.referencesForDefinitions(n),o=r.length===0?{available:!0,callees:se(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:W(n,s.references),callees:an(r,o.callees)}:{available:!1,resolvedBinary:e.resolvedBinary,reason:i instanceof Error?i.message:String(i),references:ie(n),callees:se(r)}}requestImportDefinitions(e,n,r){let i=Ee(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,wt),s=Ee(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Et),o=Pe(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),a=Pe(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,Ft),c={projectRoot:this.projectRoot,rustAnalyzerBinary:e,file:n,positions:[...r],requestTimeoutMs:i,diagnosticsTimeoutMs:o,settleDelayMs:a,concurrency:s};return w("rust.semantic.import-definitions.session.request",()=>this.requester.requestImportDefinitions(c,H(r.length,i,s)),()=>({file:n,positions:r.length}))}};function _t(t,e,n={}){return new cn(t,e,n)}function oe(t,e){let n=At(t);if(n!==null)return n;let r=e.includeReferences!==!1;return r&&e.includeCallees!==!0&&e.includeSignatures!==!0&&e.definitionCount<=gi||r&&e.includeCallees===!0&&e.includeSignatures!==!0&&e.definitionCount<=Ri?0:Ft}function bi(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 hi(t){return bi(t).transport}function Ii(t,e){let n=null,r=!1,i=!1,s=!1,o=()=>n??=e(),a=()=>{i||(t.shutdown(),i=!0)},c=(f,u,p)=>{let m=xi(f);r=!0;try{a()}catch{}A()&&me({type:"span",name:"rust.semantic.durable-session.request",durationMs:p,ok:!1,kind:u,session:"worker-fallback",reason:m})},l=(f,u,p)=>{if(s)throw new Error("Rust semantic failover session was already disposed.");if(r)return p(o());let m=Date.now();try{return u(t)}catch(y){c(y,f,Date.now()-m)}return p(o())};return{requestSemantic(f,u){return l("semantic",p=>p.requestSemantic(f,u),p=>p.requestSemantic(f,u))},requestImportDefinitions(f,u){return l("import-definitions",p=>p.requestImportDefinitions(f,u),p=>p.requestImportDefinitions(f,u))},shutdown(){if(s)return;s=!0;let f=[];try{a()}catch(u){f.push(u)}try{n?.shutdown()}catch(u){f.push(u)}if(f.length>0)throw f[0]}}}function vi(t,e,n={worker:()=>Mi(),durable:()=>Mt(t,{serverPath:Fe(wi()),semanticWorkerPath:Fe(Nt())})}){return hi(e)==="durable"?Ii(n.durable(),n.worker):n.worker()}function Mi(t={}){let e=null,n=null,r=1,i=!1,s=()=>{n&&(sn(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?di(t.semanticWorkerPath):Nt();if(!mi(Fe(l)))throw new Error(`Rust semantic session worker was not found at ${Fe(l)}. Run npm run build before using built semantic Rust queries.`);return n=xt(on(kt(),"scip-query-rust-session-")),e=new Si(l,t.shareEnvironment?{env:yi}:void 0),e.unref(),e},c=()=>{let l=n??xt(on(kt(),"scip-query-rust-session-"));return n=l,on(l,`${r++}.json`)};return{requestSemantic(l,f){if(i)throw new Error("Rust semantic session was already disposed.");let u=a(),p=c(),m=new SharedArrayBuffer(4),y=new Int32Array(m);if(u.postMessage({kind:"semantic",request:l,responsePath:p,sharedBuffer:m}),Atomics.wait(y,0,0,f)==="timed-out")throw o(),new Error(`Rust semantic session worker timed out after ${(f/1e3).toFixed(0)}s`);try{let b=Di(Tt(p,"utf8"));if(!b.ok)throw new Error(b.error);return b.response}finally{sn(p,{force:!0})}},requestImportDefinitions(l,f){if(i)throw new Error("Rust semantic session was already disposed.");let u=a(),p=c(),m=new SharedArrayBuffer(4),y=new Int32Array(m);if(u.postMessage({kind:"import-definitions",request:l,responsePath:p,sharedBuffer:m}),Atomics.wait(y,0,0,f)==="timed-out")throw o(),new Error(`Rust semantic import-definition session worker timed out after ${(f/1e3).toFixed(0)}s`);try{let b=Ci(Tt(p,"utf8"));if(!b.ok)throw new Error(b.error);return b.response}finally{sn(p,{force:!0})}},shutdown(){if(i)return;if(i=!0,!e){s();return}let l=c(),f=new SharedArrayBuffer(4),u=new Int32Array(f);e.postMessage({kind:"shutdown",responsePath:l,sharedBuffer:f}),Atomics.wait(u,0,0,5e3),o()}}}function Di(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 Ci(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 xi(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 ie(t){return new Map(t.map(e=>[e.symbolId,[]]))}function se(t){return new Map(t.map(e=>[e.symbolId,[]]))}function Pt(t){return new Map(t.map(e=>[e.symbolId,null]))}function an(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??[]]))}function Ti(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??null]))}function ki(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 ln(t,e){return e&&e>0?Math.max(t,e):t}function Nt(){return new URL("./rust-semantic-session-worker.js",import.meta.url)}function wi(){return new URL("./rust-semantic-session-server.js",import.meta.url)}function Ee(t,e){return J(t)??e}function Pe(t,e){return At(t)??e}function At(t){if(!t)return null;let e=Number(t);return Number.isInteger(e)&&e>=0?e:null}var pn=15e3,mn=8;function Bt(t,e={}){let n=e.status??ve,r=_i(t,n),i=Ni(t,n),s=Ai(t,n),o=e.referenceResolver||e.calleeResolver||e.signatureResolver||!Pi(e)?null:_t(t,n,{fallbackReferenceResolver:r,fallbackCalleeResolver:i,fallbackSignatureResolver:s}),a=e.referenceResolver??o??r,c=e.calleeResolver??o??i,l=e.signatureResolver??o??s,f=e.importUsageResolver??st(e.sourceImportUsageResolver??Fi(),e.importDefinitionResolver??o),u=e.calleeSymbolResolver,p=e.sourceZeroCalleeOracle,m=e.scipOccurrenceCalleeOracle,y=new Map,I=new Map,b=null,g=null,k=()=>(b??=n(t),b),P=()=>{let S=k();return S.dependencyAvailable?g??S:S},h=S=>{if(S.length===0)return new Map;let d=ae(S);try{let R=a.referencesForDefinitions(d),T=k();return g={...T,available:R.available,resolvedBinary:R.resolvedBinary??T.resolvedBinary,reason:R.reason??T.reason},R.available?new Map(R.references):W(d,R.references)}catch(R){return g={...k(),available:!1,reason:R instanceof Error?R.message:String(R)},$(d)}},x=S=>{if(S.length===0)return new Map;let d=ae(S),R=d.filter(Lt);if(R.length===0)return K(d);let T=new Map,j=Ut(R,m),_=[];for(let M of R)I.has(M.symbolId)?T.set(M.symbolId,I.get(M.symbolId)??[]):j.has(M.symbolId)?T.set(M.symbolId,j.get(M.symbolId)??[]):Ot(M,p)?T.set(M.symbolId,[]):_.push(M);if(_.length===0)return Q(d,T,void 0);try{let M=c.calleesForDefinitions(_),N=k();g={...N,available:M.available,resolvedBinary:M.resolvedBinary??N.resolvedBinary,reason:M.reason??N.reason};let E=Q(_,M.callees,u);for(let[Y,je]of E)T.set(Y,je);return Q(d,T,void 0)}catch(M){return g={...k(),available:!1,reason:M instanceof Error?M.message:String(M)},K(d)}},C=(S,d)=>{let R=ae(S),T=ae(d),j=T.filter(Lt),_=new Map,M=Ut(j,m),N=[];for(let E of j)M.has(E.symbolId)?_.set(E.symbolId,M.get(E.symbolId)??[]):Ot(E,p)?_.set(E.symbolId,[]):N.push(E);if(R.length===0&&N.length===0)return{references:$(R),callees:Q(T,_,void 0)};try{let E=o?o.referencesAndCalleesForDefinitions(R,N):Bi(a,c,{referenceDefinitions:R,calleeDefinitions:N}),Y=k();g={...Y,available:E.available,resolvedBinary:E.resolvedBinary??Y.resolvedBinary,reason:E.reason??Y.reason};let je=E.available?new Map(E.references):W(R,E.references);for(let[qe,We]of E.callees)_.set(qe,We);let _n=Q(T,_,u);for(let[qe,We]of _n)I.set(qe,We);return{references:je,callees:_n}}catch(E){return g={...k(),available:!1,reason:E instanceof Error?E.message:String(E)},{references:$(R),callees:K(T)}}},v=S=>{if(S.length===0)return new Map;let d=ae(S);try{let R=l.signaturesForDefinitions(d),T=k();return g={...T,available:R.available,resolvedBinary:R.resolvedBinary??T.resolvedBinary,reason:R.reason??T.reason},jt(d,R.signatures)}catch(R){return g={...k(),available:!1,reason:R instanceof Error?R.message:String(R)},_e(d)}};return{language:"rust",availability:P,dispose:()=>{o?.dispose()},importUsage:S=>{let d=y.get(S);if(d)return d;try{let R=f.importUsage(S);return y.set(S,R),R}catch(R){return g={...k(),available:!1,reason:R instanceof Error?R.message:String(R)},[]}},referencesFor:S=>h([S]).get(S.symbolId)??[],referencesForDefinitions:h,referencesAndCalleesForDefinitions:C,calleesFor:S=>x([S]).get(S.symbolId)??[],calleesForDefinitions:x,signatureFor:S=>v([S]).get(S.symbolId)??null}}function Pi(t){if(t.usePersistentSession!==void 0)return t.usePersistentSession;let e=process.env.SCIP_RUST_SEMANTIC_SESSION;return e!=="0"&&e!=="false"}function Fi(){return{importUsageFacts:()=>({usage:[],positions:[]})}}function ae(t){return t.map(e=>{let n=e;return{...e,leaf:typeof n.leaf=="string"?n.leaf:z(e.symbol),parentTypeName:n.parentTypeName??null,isFunctionLike:typeof n.isFunctionLike=="boolean"?n.isFunctionLike:Vn(e.symbol),isTypeLike:n.isTypeLike??!1,kind:n.kind??null,documentation:n.documentation??null,enclosingSymbol:n.enclosingSymbol??null}})}function Lt(t){return t.isFunctionLike}function Ot(t,e){if(!e)return!1;try{return e(t)}catch{return!1}}function Ut(t,e){if(!e||t.length===0)return new Map;try{return e(t)}catch{return new Map}}function _i(t,e){return{referencesForDefinitions:n=>Li(t,e,n)}}function Ni(t,e){return{calleesForDefinitions:n=>Oi(t,e,n)}}function Ai(t,e){return{signaturesForDefinitions:n=>Ui(t,e,n)}}function Li(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,references:$(n)};let i=dn();if(!fn(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:$(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,pn),o=Ne(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),a=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,mn),c=Ne(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),l=oe(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!0}),f={projectRoot:t,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:s,...o>0?{referenceRetryTimeoutMs:o}:{},diagnosticsTimeoutMs:c,settleDelayMs:l,concurrency:a},u=un(process.execPath,[i],{cwd:t,input:JSON.stringify(f),encoding:"utf8",maxBuffer:50*1024*1024,timeout:H(n.length,ln(s,f.referenceRetryTimeoutMs),a)}),p=yn(u.stdout);if(p)return{available:p.available,resolvedBinary:r.resolvedBinary,reason:p.reason,references:W(n,new Map(p.references),new Set(p.incompleteReferenceSymbolIds??[]))};let m=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:m,references:$(n)}}function Oi(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,callees:K(n)};let i=dn();if(!fn(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:K(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,pn),o=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,mn),a=Ne(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),c=oe(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},f=un(process.execPath,[i],{cwd:t,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:H(n.length,s,o)}),u=yn(f.stdout);if(u)return{available:u.available,resolvedBinary:r.resolvedBinary,reason:u.reason,callees:Q(n,new Map(u.callees??[]),void 0)};let p=f.error instanceof Error?f.error.message:f.stderr.trim()||`Rust semantic worker exited with status ${f.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:p,callees:K(n)}}function Ui(t,e,n){let r=e(t);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,signatures:_e(n)};let i=dn();if(!fn(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,signatures:_e(n)};let s=Z(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,pn),o=Z(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,mn),a=Ne(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(s,1e4)),c=oe(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},f=un(process.execPath,[i],{cwd:t,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:H(n.length,s,o)}),u=yn(f.stdout);if(u)return{available:u.available,resolvedBinary:r.resolvedBinary,reason:u.reason,signatures:jt(n,new Map(u.signatures??[]))};let p=f.error instanceof Error?f.error.message:f.stderr.trim()||`Rust semantic worker exited with status ${f.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:p,signatures:_e(n)}}function Bi(t,e,n){let r=n.referenceDefinitions.length>0?t.referencesForDefinitions(n.referenceDefinitions):{available:!0,references:$(n.referenceDefinitions)},i=n.calleeDefinitions.length>0?e.calleesForDefinitions(n.calleeDefinitions):{available:!0,callees:K(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 $(t){return new Map(t.map(e=>[e.symbolId,[]]))}function K(t){return new Map(t.map(e=>[e.symbolId,[]]))}function _e(t){return new Map(t.map(e=>[e.symbolId,null]))}function Q(t,e,n){let r=0,i=0;return w("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 jt(t,e){return new Map(t.map(n=>[n.symbolId,e.get(n.symbolId)??null]))}function dn(){return Ei(new URL("./rust-semantic-worker.js",import.meta.url))}function yn(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 J(t)??e}function Ne(t,e){if(!t)return e;let n=Number(t);return Number.isInteger(n)&&n>=0?n:e}import{existsSync as ji,readFileSync as qi}from"fs";import{deserializeSCIP as Wi,SymbolRole as zi}from"@c4312/scip";var Sn=new WeakMap;function Wt(t,e){let n=e.filter(Hi);if(n.length===0)return new Map;let r=!1,i=0,s=0;return w("rust.scip-occurrence.callees",()=>{let o=Vi(t);if(r=!!o,!o)return new Map;let a=new Map;for(let c of n){let l=$i(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 Hi(t){return!(!t.symbol.startsWith("rust-analyzer ")||!t.relativePath.endsWith(".rs")||!t.isFunctionLike||t.leaf==="main"||re(t.symbol))}function $i(t,e,n){let r=de(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)||!Ki(s,o))return null;let a=[],c=new Set;for(let l of o){let f=`${l.callee.symbol}\0${l.callee.file}\0${l.callee.line}`;c.has(f)||(c.add(f),a.push(l.callee))}return a}function Ki(t,e){let n=qt(t),r=qt(e);if(n.size!==r.size)return!1;for(let[i,s]of n)if(r.get(i)!==s)return!1;return!0}function qt(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 Vi(t){if(Sn.has(t))return Sn.get(t)??null;let e=Yi(t);return Sn.set(t,e),e}function Yi(t){if(!ji(t.config.indexPath))return null;try{let e=Se(t).filter(s=>s.symbol.startsWith("rust-analyzer ")&&s.relativePath.endsWith(".rs")&&s.isFunctionLike),n=new Map(e.map(s=>[s.symbol,s])),r=Wi(qi(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&zi.Definition)!==0)continue;let l=n.get(c.symbol);if(!l)continue;let f=c.range?.[0];Number.isInteger(f)&&a.push({line:f,leaf:l.leaf,traitImplMember:re(l.symbol),callee:{symbol:l.symbol,file:l.relativePath,line:l.startLine}})}i.set(o,a)}return{occurrencesByFile:i}}catch{return null}}var Ae=class{sessions=new WeakMap;getOrCreate(e,n,r){let i=Ji(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 Ji(t,e){return`${t.config.projectRoot}:${e}-workspace`}import{randomUUID as vs}from"crypto";import{existsSync as Ms,mkdirSync as cr,readFileSync as Ds,rmSync as lr}from"fs";import{dirname as Cs,resolve as ur}from"path";import{performance as D}from"perf_hooks";function L(t,e,n){if(t.has(e))return t.get(e);let r=n();return t.set(e,r),r}import zt from"path";function Gi(t,e){return t.getReferences().map(n=>{let r=n.getNode();return Le(r,e)})}function Qi(t){let e=t;return typeof e.findReferences=="function"?e.findReferences():[]}function Ht(t,e,n,r){let i=[];for(let s of Qi(t))for(let o of Gi(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 X(i)}function $t(t,e,n,r){let i=[],s=n?.getStart();for(let o of t.getReferences()){let a=o.getNode();ee(r,a.getSourceFile().getFilePath())===e&&(s!==void 0&&a.getStart()===s||i.push({location:Le(a,r),node:a}))}return i}function Le(t,e){let n=t.getSourceFile(),r=n.getLineAndColumnAtPos(t.getStart());return{file:ee(e,n.getFilePath())??n.getBaseName(),line:r.line-1,column:r.column-1}}function Kt(t,e,n){let r=t.getSourceFile(),i=Rn(r,t),s=t.getText(),o=new RegExp(`\\b${te(s)}\\b`,"g"),a=r.getFullText().split(`
|
|
2
|
+
`),c=[];for(let l=0;l<a.length;l++){if(l===i)continue;let f=a[l]??"";o.lastIndex=0;let u;for(;(u=o.exec(f))!==null;)c.push({file:e,line:l,column:u.index})}return X(c.filter(l=>ee(n,zt.join(n,l.file))===e))}function gn(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 Rn(t,e){return t.getLineAndColumnAtPos(e.getStart()).line-1}function X(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 ee(t,e){let n=zt.relative(t||process.cwd(),e).replace(/\\/g,"/");return!n||n.startsWith("..")?null:n}function Vt(t,e,n,r){let i=Zi(e,r);return i.size===0?new Map:Xi(t,n,i)}function Zi(t,e){let n=new Map;for(let r of q(t,e)){let i=z(r.symbol)??r.leaf;if(!i)continue;let s=n.get(i);s||(s=[],n.set(i,s)),s.push(r)}return n}function Xi(t,e,n){let r=new Map,i=new Map;return e.forEachDescendant(s=>{for(let o of es(t,s)){let a=n.get(o);if(!a)continue;let c=Rn(e,s);for(let l of a){if(c<l.startLine-1||c>l.endLine+1)continue;let f=Math.abs(c-l.startLine),u=i.get(l.symbolId);u!==void 0&&u<=f||(i.set(l.symbolId,f),r.set(l.symbolId,s))}}}),r}function es(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 ns=An("ts-definition-leaf-candidates",{clearGroups:["definition-catalog"]});function Yt(t,e,n,r){let i=In(t,e),s=bn(i.get(r)??[],n);if(s)return s;let o=[];for(let a of i.values())for(let c of a)((c.leaf||z(c.symbol)||"").includes(r)||c.symbol.includes(r))&&o.push(c);return bn(o,n)}function hn(t,e,n,r){return bn(In(t,e).get(r)??[],n)}function Jt(t,e){let n=new Map;for(let[r,i]of In(t,e)){let s=i[0];s&&n.set(r,s)}return n}function In(t,e){return ns.get(t,e,()=>{let n=new Map;for(let r of q(t,e)){let i=r.leaf||z(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 bn(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 vn from"path";function Gt(t,e){let n=new Map,r=null,i=null,s=()=>(i??=pe(t,{extensions:be}),i),o=()=>(r??=w("typescript.source-file-index",()=>ts(t.config.projectRoot,e,s()),()=>({projects:e.length,indexedDocuments:s().length})),r),a=c=>G(c)?L(n,c,()=>{let l=ce(vn.resolve(t.config.projectRoot,c));for(let{project:f,sourceFiles:u}of o()){let p=u.get(l)??null;if(p||(p=f.addSourceFileAtPathIfExists(l)??null,p&&u.set(ce(p.getFilePath()),p)),p)return{project:f,sourceFile:p}}return null}):null;return{sourceFile:c=>a(c)?.sourceFile??null,sourceFileMatch:a,indexedTypeScriptLikeDocuments:s}}function ts(t,e,n){let r=e.map(({project:i})=>({project:i,sourceFiles:new Map(i.getSourceFiles().map(s=>[ce(s.getFilePath()),s]))}));for(let i of n){let s=ce(vn.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(ce(a.getFilePath()),a);break}}}return r}function ce(t){return vn.resolve(t)}function Mn(t,e){for(let n of t)if(e===n.name||e.startsWith(`${n.name}/`))return n.name;return null}function Qt(t){let e=`${t.relativeDir}/src`;return[`${e}/index.ts`,`${e}/index.tsx`,`${e}/index.mts`,`${e}/index.cts`]}import{existsSync as le,readFileSync as rs}from"fs";import F from"path";var Dn=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"];function Cn(t,e){let r=e?F.dirname(F.join(t,e)):t,i=F.resolve(t);for(;r.startsWith(i);){for(let o of Dn){let a=F.join(r,o);if(le(a))return a}let s=F.dirname(r);if(s===r)break;r=s}for(let s of Dn){let o=F.join(t,s);if(le(o))return o}return null}function Zt(t){let e=t.config.projectRoot,n=new Set(is(e,t.config.semantic?.typescript?.tsconfigs)),r=pe(t,{includeIgnored:!1,extensions:be});for(let i of r){let s=Cn(e,i);s&&n.add(F.resolve(s))}if(n.size===0){let i=Cn(e);i&&n.add(F.resolve(i))}return[...n].filter(i=>!Xt(e,i)).sort((i,s)=>i.localeCompare(s))}function is(t,e=[]){let n=new Set;for(let r of e){let i=F.isAbsolute(r)?r:F.join(t,r);le(i)&&n.add(F.resolve(i))}for(let r of ss(t))for(let i of Dn){let s=F.join(r,i);le(s)&&n.add(F.resolve(s))}if(n.size===0){let r=Cn(t);r&&n.add(F.resolve(r))}return[...n].filter(r=>!Xt(t,r)).sort((r,i)=>r.localeCompare(i))}function ss(t){let e=F.join(t,"package.json");if(!le(e))return[];let n;try{n=JSON.parse(rs(e,"utf8"))}catch{return[]}return(Array.isArray(n.workspaces)?n.workspaces:n.workspaces?.packages??[]).flatMap(i=>jn(t,i))}function Xt(t,e){let n=F.relative(t,e).replace(/\\/g,"/");return n.startsWith("..")||n.includes("/node_modules/")||n.startsWith("node_modules/")||n.includes("/dist/")||n.startsWith("dist/")}var os=32;function sr(t,e){let n=w("typescript.provider.load",()=>et());if(!n)return he("ts-morph is not installed");let r=w("typescript.provider.tsconfig-discovery",()=>Zt(t));if(r.length===0)return he("no tsconfig found");try{let i=w("typescript.provider.project-bundles",()=>nt(n,r),()=>({tsconfigs:r.length}));return as(t,n,i)}catch(i){return he(i instanceof Error?i.message:String(i),r[0],r)}}function as(t,e,n,r={}){return w("typescript.provider.construct",()=>new Tn(t,e,n),()=>({tsconfigs:n.length,reusedProjects:r.reusedProjects===!0}))}var Tn=class{constructor(e,n,r){this.db=e;this.tsMorph=n;this.projects=r;this.workspacePackages=Bn(e.config.projectRoot),this.sourceFiles=Gt(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 L(this.importUsageCache,e,()=>{let n=this.sourceFiles.sourceFile(e);if(!n)return[];let r=ls();return w("typescript.import-usage.file",()=>this.importUsageForSourceFile(e,n,r),()=>({file:e,...r}))})}referencesFor(e){return L(this.referencesCache,e.symbolId,()=>{let n=this.nodeForDefinition(e);return this.referencesForDefinitionNode(e,n)})}referencesForDefinitions(e,n={}){let r=new Map,i=A(),s=[];for(let f of e){let u=this.referencesCache.get(f.symbolId);u?r.set(f.symbolId,u):s.push(f)}if(s.length===0)return r;let o=s,a=n.exact?[]:s.filter(f=>!nr(f));if(a.length>=os){let f=this.referencesForDefinitionsBySymbolScan(a);for(let u of a){let p=f.get(u.symbolId)??[];this.referencesCache.set(u.symbolId,p),r.set(u.symbolId,p)}if(o=s.filter(u=>nr(u)),o.length===0)return r}let c=new Map;for(let f of o){let u=c.get(f.relativePath);u?u.push(f):c.set(f.relativePath,[f])}let l=[];for(let[f,u]of c){let p=tr();w("typescript.references-map.file",()=>{let m=this.definitionNodesForFile(f);for(let y of u){i&&(p.cacheMisses+=1);let I=m.get(y.symbolId)??null;i&&(I?p.nodeHits+=1:p.nodeMisses+=1);try{let b=this.referencesForDefinitionNode(y,I,i?p:void 0);this.referencesCache.set(y.symbolId,b),r.set(y.symbolId,b)}catch{p.preciseSearchFailures+=1,l.push(y)}}},()=>({relativePath:f,definitions:u.length,...rr(p)}))}if(l.length>0){let f=this.referencesForDefinitionsBySymbolScan(l);for(let u of l){let p=f.get(u.symbolId)??[];this.referencesCache.set(u.symbolId,p),r.set(u.symbolId,p)}}return r}referenceFragmentsForFiles(e){let n=Se(this.db).filter(s=>G(s.relativePath)),r=e.filter(s=>this.sourceFiles.sourceFile(s)!==null),i=this.referencesForDefinitionsBySymbolScan(n,r);return tt(n,i,r)}referencesForDefinitionsBySymbolScan(e,n){let r=A(),i=tr(),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 w("typescript.references-map.inverted-scan",()=>{let c=r?D.now():0,l=n?this.packageImportReferencesForFiles(n):this.packageImportReferences();for(let b of e){let g=l.get(b.symbolId)??[];if(g.length>0){let k=s.get(b.symbolId)??[];k.push(...g),s.set(b.symbolId,k)}r&&(i.packageReferenceCount+=g.length)}r&&(i.packageRefsMs+=D.now()-c);let f=new Map,u=new Map,p=this.hierarchyTargetsForDefinitions(e),m=new Set(e.map(b=>b.leaf).filter(Boolean)),y=r?D.now():0;for(let b of n??this.sourceFiles.indexedTypeScriptLikeDocuments()){if(this.db.isIgnored(b))continue;let g=this.sourceFiles.sourceFile(b);g&&(r&&(i.scanFiles+=1),this.addReferencesFromSourceFileScan(g,b,o,a,p,m,f,u,s,r?i:void 0))}r&&(i.scanMs+=D.now()-y);let I=r?D.now():0;this.addHierarchyMemberReferences(e,s,r?i:void 0),r&&(i.hierarchyMs+=D.now()-I);for(let[b,g]of s){let k=X(g);s.set(b,k),r&&(i.referenceCount+=k.length)}},()=>({definitions:e.length,...rr(i)})),s}addReferencesFromSourceFileScan(e,n,r,i,s,o,a,c,l,f){let u=this.compilerCheckerForSourceFile(e),p=e.compilerNode,m=ps(e),y=I=>{if(this.tsMorph.ts.isIdentifier(I)){if(f&&(f.identifiers+=1),!o.has(I.text)&&!m.has(I.text)){this.tsMorph.ts.forEachChild(I,y);return}let b=this.compilerReferenceSymbol(u,I,f);if(b){let g;a.has(b)?g=a.get(b)??null:(g=this.referenceDefinitionFromCompilerSymbol(b),a.set(b,g)),f&&(g?f.targetHits+=1:f.targetMisses+=1);let k=L(c,b,()=>this.compilerSymbolKeys(b)),P=null,h=null,x=g&&r.has(g.symbolId)?i.get(g.symbolId):void 0;if(x&&(P=xn(p,I),!er(x,n,P))){let C=p.getLineAndCharacterOfPosition(I.getStart(p));h={file:n,line:C.line,column:C.character};let v=l.get(x.symbolId)??[];v.push(h),l.set(x.symbolId,v),f&&(f.requestedHits+=1)}for(let C of k)for(let v of s.get(C)?.values()??[]){if(P??=xn(p,I),er(v,n,P))continue;if(!h){let d=p.getLineAndCharacterOfPosition(I.getStart(p));h={file:n,line:d.line,column:d.character}}let S=l.get(v.symbolId)??[];S.push(h),l.set(v.symbolId,S),f&&(f.requestedHits+=1)}}}this.tsMorph.ts.forEachChild(I,y)};y(p)}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 f of this.compilerSymbolKeys(l)){let u=n.get(f)??new Map;u.set(r.symbolId,r),n.set(f,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 f of l){let u=f.getProperty(r.name);u&&o(f,u,this.hierarchyAncestorTypesForType(e,f))}}};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()),f=l.getSymbolAtLocation(a.name);if(!f)continue;let u=a.getSourceFile(),p=u.getLineAndCharacterOfPosition(a.name.getStart(u)),m={definition:s,location:{file:s.relativePath,line:p.line,column:p.character}},y=n.get(s.symbolId)??[];for(let b of this.hierarchyMemberSymbols(l,c,f))if(b!==f)for(let g of this.compilerSymbolLocations(b))y.push(g),r&&(r.hierarchyReferences+=1);n.set(s.symbolId,y);let I=this.hierarchyRootMemberSymbols(l,c,f);for(let b of I){let g=i.get(b)??new Map;g.set(s.symbolId,m),i.set(b,g)}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 f=!1;for(let u of l){let p=u.getProperty(r.name);p&&(f=!0,o(u,p,this.hierarchyAncestorTypesForType(e,u)))}if(!f)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=ee(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 L(this.calleesCache,e.symbolId,()=>L(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 f=c.get(l.symbolId)??[];this.calleesCache.set(l.symbolId,f),n.set(l.symbolId,f)}}return n}referencesForDefinitionNode(e,n,r){let i=r?D.now():0,s=this.packageImportReferencesForDefinition(e);if(r&&(r.packageRefsMs+=D.now()-i,r.packageReferenceCount+=s.length),!n)return s;let o=r?D.now():0,a=Ht(n,e,s,this.db.config.projectRoot);return r&&(r.semanticRefsMs+=D.now()-o,r.referenceCount+=a.length),a}signatureFor(e){return L(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 ir(c)}),s=r.getReturnType().getText(n);return`(${i.join(",")})=>${ir(s)}`})}importUsageForSourceFile(e,n,r){let i=[],s=new Map;for(let o of n.getImportDeclarations()){r.declarations+=1;let a=$e(this.db,e,o.getModuleSpecifierValue()),c=o.getImportClause()?.isTypeOnly()??!1;for(let l of kn(o)){r.entries+=1;let f=c?null:l.identifier?.getSymbol()?.compilerSymbol??null;!c&&l.identifier&&(f?r.bindingSymbols+=1:r.missingBindingSymbols+=1);let u={sourcePath:a,entry:l,typeOnlyDeclaration:c,bindingSymbol:f,references:[]};if(i.push(u),c||!l.localName||!f)continue;let p=s.get(l.localName);p?p.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||us(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:Le(o,this.db.config.projectRoot),node:o}),r.matchedReferences+=1;break}}}),i.map(o=>o.typeOnlyDeclaration?cs(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 $t(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=>!gn(c.node)),o=i.some(c=>gn(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=Mn(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,X(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,X(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=Mn(this.workspacePackages,i.getModuleSpecifierValue());if(!s)return;let o=n.get(s);if(o)for(let a of kn(i)){if(a.kind!=="named"||!a.identifier)continue;let c=o.get(a.importedName);if(!c||c.size===0)continue;let l=Kt(a.identifier,r,this.db.config.projectRoot);l.length>0&&Ss(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 Qt(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?$e(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 f of l){let u=f.getNameNode().getText(),p=f.getAliasNode()?.getText()??u,m=this.indexedDefinitionByLeaf(c,u);if(!m)continue;let y=r.get(p);y||(y=new Set,r.set(p,y)),y.add(m.symbolId)}}}indexedDefinitionByLeaf(e,n){return L(this.indexedDefinitionLeafCache,e,()=>Jt(this.db,e)).get(n)??null}nodeForDefinition(e){return L(this.definitionNodeCache,e.symbolId,()=>this.definitionNodesForFile(e.relativePath).get(e.symbolId)??null)}definitionNodesForFile(e){return L(this.fileDefinitionNodeCache,e,()=>{let n=this.sourceFiles.sourceFile(e);return n?Vt(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?D.now():0,o=e.declarations??[];n&&(n.declarationsMs+=D.now()-s,n.declarationChecks+=o.length);for(let a of o){let c=n?D.now():0,l=a.getSourceFile(),f=ee(this.db.config.projectRoot,l.fileName),u=l.getLineAndCharacterOfPosition(a.getStart(l)).line;if(n&&(n.declarationLocationMs+=D.now()-c),!f||this.db.isIgnored(f))continue;let p=n?D.now():0,m=this.compilerDeclarationName(a),y=r?hn(this.db,f,u,i)??(m&&m!==i?hn(this.db,f,u,m):null):Yt(this.db,f,u,i);if(n&&(n.indexedLookupMs+=D.now()-p),y)return{symbolId:y.symbolId,symbol:y.symbol,file:y.relativePath,line:y.startLine}}return null}compilerDeclarationName(e){let n=e.name;return n&&this.tsMorph.ts.isIdentifier(n)?n.text:null}calleeMapForFile(e,n){let r=A(),i=0,s=0,o=0,a=0,c=0,l=0,f=0,u=0,p=r?ds():void 0;return w("typescript.callee-map.file",()=>{let m=r?D.now():0,y=this.sourceFiles.sourceFile(e);if(r&&(c=Math.round(D.now()-m)),!y)return new Map;let I=r?D.now():0,b=q(this.db,e).sort((S,d)=>S.startLine-d.startLine||d.endLine-S.endLine);if(r&&(l=Math.round(D.now()-I)),i=b.length,b.length===0)return new Map;let g=new Map,k=r?D.now():0,P=this.compilerCheckerForSourceFile(y),h=y.compilerNode;r&&(f=Math.round(D.now()-k));let x=new Map,C=S=>{if(this.tsMorph.ts.isCallExpression(S)||this.tsMorph.ts.isNewExpression(S)){r&&(s+=1);let d=this.semanticCalleeForCallNode(P,h,b,S,x,n,p);d&&(r&&(o+=1),fs(g,d.callerId,d.target))}this.tsMorph.ts.forEachChild(S,C)},v=r?D.now():0;C(h),r&&(u=Math.round(D.now()-v));for(let[S,d]of g)g.set(S,gs(d));return a=g.size,g},()=>({relativePath:e,definitions:i,callNodes:s,resolvedCallees:o,outputRows:a,requestedDefinitions:n?.size??i,sourceFileLookupMs:c,definitionsLoadMs:l,checkerLookupMs:f,traversalMs:u,...p?ys(p):{}}))}semanticCalleeForCallNode(e,n,r,i,s,o,a){let c=a?D.now():0,l=ms(r,xn(n,i));if(a&&(a.callerLookupMs+=D.now()-c),!l)return null;if(o&&!o.has(l.symbolId))return a&&(a.skippedUnrequestedCallers+=1),null;let f=i.expression,u=this.compilerSymbolForExpression(e,f,a),p=null;if(u)if(a&&(a.targetSymbolHits+=1),s.has(u))a&&(a.compilerSymbolCacheHits+=1),p=s.get(u)??null;else{a&&(a.compilerSymbolCacheMisses+=1);let m=a?D.now():0;p=this.definitionFromCompilerSymbol(u,a),a&&(a.targetLookupMs+=D.now()-m),s.set(u,p)}else a&&(a.targetMisses+=1);return p?{callerId:l.symbolId,target:{symbol:p.symbol,file:p.file,line:p.line}}:null}compilerSymbolForExpression(e,n,r){let i=r?D.now():0,s=e.getSymbolAtLocation(n);if(r&&(r.expressionSymbolMs+=D.now()-i),s)return s;r&&(r.typeFallbacks+=1);let o=r?D.now():0,a=e.getTypeAtLocation(n).getSymbol();return r&&(r.typeSymbolMs+=D.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 kn(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 cs(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 ls(){return{declarations:0,entries:0,bindingSymbols:0,missingBindingSymbols:0,scannedIdentifiers:0,symbolLookups:0,matchedReferences:0,fallbackEntries:0}}function us(t){for(let e=t;e;e=e.getParent())if(e.getKindName()==="ImportDeclaration")return!0;return!1}function fs(t,e,n){let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)}function ps(t){let e=new Set;for(let n of t.getImportDeclarations())for(let r of kn(n))r.localName&&e.add(r.localName);return e}function ms(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 xn(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 nr(t){return t.symbol.includes("#")?ye(t.symbol)==="type"&&t.relativePath.endsWith(".d.ts"):!1}function ds(){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 ys(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 tr(){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 rr(t){return{...t,scanMs:Math.round(t.scanMs),packageRefsMs:Math.round(t.packageRefsMs),semanticRefsMs:Math.round(t.semanticRefsMs),hierarchyMs:Math.round(t.hierarchyMs)}}function Ss(t,e,n){for(let r of e){let i=t.get(r)??[];i.push(...n),t.set(r,i)}}function gs(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 ir(t){return t.replace(/\s+/g," ").replace(/\bimport\("[^"]+"\)\./g,"").trim()}import{createHash as Rs}from"crypto";import{readFileSync as bs}from"fs";import{dirname as hs,join as Oe}from"path";var Ue=2,Is="typescript-semantic";function or(t){let e=Oe(t,Is);return{rootDir:e,requestDir:Oe(e,"requests"),responseDir:Oe(e,"responses")}}function ar(t){try{let e=JSON.parse(bs(Oe(hs(t),"meta.json"),"utf8"));return e.version!==2&&e.version!==3||typeof e.status!="string"||typeof e.updatedAt!="string"||e.fingerprint===void 0?null:Rs("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 xs=12e4,Ts=5;function mr(t,e,n={}){let r=new wn(t,n),i=null,s=null,o=process.env.SCIP_QUERY_SKIP_WATCH_SERVICE==="1",a=()=>(i??=sr(t,e),i),c=(u,p,m)=>{if(o)return m();try{return p(r.request(u))}catch{return o=!0,m()}},l=(u,p)=>c({kind:"references",definitions:[...u],...p?.exact?{exact:!0}:{}},m=>pr(m),()=>a().referencesForDefinitions?.(u,p)??new Map(u.map(m=>[m.symbolId,a().referencesFor(m)]))),f=u=>c({kind:"callees",definitions:[...u]},p=>pr(p),()=>a().calleesForDefinitions?.(u)??new Map(u.map(p=>[p.symbolId,a().calleesFor(p)])));return{language:"typescript",availability:()=>(s??=c({kind:"availability"},Es,()=>a().availability()),s),importUsage:u=>c({kind:"import-usage",file:u},p=>p,()=>a().importUsage(u)),referencesFor:u=>l([u]).get(u.symbolId)??[],referencesForDefinitions:l,referenceFragmentsForFiles:u=>c({kind:"reference-fragments",files:[...u]},p=>ws(p),()=>a().referenceFragmentsForFiles?.(u)??new Map),calleesFor:u=>f([u]).get(u.symbolId)??[],calleesForDefinitions:f,signatureFor:u=>c({kind:"signature",definition:u},Ps,()=>a().signatureFor(u)),dispose:()=>i?.dispose?.()}}var wn=class{constructor(e,n={}){this.db=e;this.runtime=n.runtime??_s,this.timeoutMs=n.timeoutMs??Fs(),this.cacheDir=Cs(e.config.dbPath),this.projectRoot=Xn(e.config.projectRoot)}db;runtime;timeoutMs;cacheDir;projectRoot;request(e){let n=Zn(this.cacheDir),r=or(this.cacheDir),i=Ye(n.statePath);if(!fr(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript semantic service is not running.");let s=ar(this.db.config.dbPath);if(!s)throw new Error("Published TypeScript generation identity is unavailable.");let o=this.runtime.randomId(),a=ur(r.requestDir,`${o}.json`),c=ur(r.responseDir,`${o}.json`),l=this.runtime.now()+this.timeoutMs;cr(r.requestDir,{recursive:!0}),cr(r.responseDir,{recursive:!0}),Re(a,{protocolVersion:Ue,id:o,generation:s,deadlineAtMs:l,profileEnvironment:qn(),request:e});try{for(;this.runtime.now()<=l;){if(Ms(c))return ks(Ds(c,"utf8"),o,s);let f=Ye(n.statePath);if(!fr(f,this.projectRoot,this.runtime))throw new Error("TypeScript semantic service stopped while processing a request.");this.runtime.sleep(Ts)}throw new Error(`TypeScript semantic service timed out after ${this.timeoutMs}ms.`)}finally{lr(a,{force:!0}),lr(c,{force:!0})}}};function fr(t,e,n){let r=t!==null&&n.now()-Date.parse(t.heartbeatAt)<=Qn,i=t?.typescriptSemantic?.busyUntil!==void 0&&n.now()<=Date.parse(t.typescriptSemantic.busyUntil);return t!==null&&t.projectRoot===e&&t.typescriptSemantic?.protocolVersion===Ue&&n.isProcessAlive(t.pid)&&(r||i)}function ks(t,e,n){let r=JSON.parse(t);if(r.protocolVersion!==Ue||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 pr(t){if(!Array.isArray(t))throw new Error("TypeScript semantic service wrote an invalid numeric map.");return new Map(t)}function ws(t){if(!Array.isArray(t))throw new Error("TypeScript semantic service wrote an invalid string map.");return new Map(t)}function Es(t){if(!t||typeof t!="object"||typeof t.available!="boolean")throw new Error("TypeScript semantic service wrote invalid availability.");return t}function Ps(t){if(t!==null&&typeof t!="string")throw new Error("TypeScript semantic service wrote an invalid signature.");return t}function Fs(){let t=Number(process.env.SCIP_TYPESCRIPT_SEMANTIC_TIMEOUT_MS);return Number.isInteger(t)&&t>0?t:xs}var _s={now:Date.now,randomId:vs,sleep(t){let e=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(e,0,0,t)},isProcessAlive:ge};var dr=new Ae;Nn({name:"semantic-provider",groups:["semantic-provider"],clearAll:t=>dr.clear(t)});function V(t,e){let n=O(e)??"typescript";return dr.getOrCreate(t,n,()=>n==="rust"?Bt(t.config.projectRoot,{sourceImportUsageResolver:{importUsageFacts:r=>it(t,r)},calleeSymbolResolver:rt(t),sourceZeroCalleeOracle:r=>Ns(t,r),scipOccurrenceCalleeOracle:r=>Wt(t,r)}):mr(t,e))}function O(t){return t?Wn(t)==="rust"?"rust":G(t)?"typescript":null:"typescript"}function Ns(t,e){let n=de(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{existsSync as As,readFileSync as Ls}from"fs";import{resolve as Os}from"path";function Oc(t,e){return Be(t,e,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return t.all(`SELECT
|
|
3
|
+
m.symbol_id,
|
|
4
|
+
d.relative_path,
|
|
5
|
+
COUNT(*) AS ref_count
|
|
6
|
+
FROM mentions m
|
|
7
|
+
JOIN chunks c ON m.chunk_id = c.id
|
|
8
|
+
JOIN documents d ON c.document_id = d.id
|
|
9
|
+
WHERE m.role != 1
|
|
10
|
+
${r}
|
|
11
|
+
${t.pathExclusionsFor("d")}
|
|
12
|
+
GROUP BY m.symbol_id, d.relative_path`,...n??[])})}function Uc(t,e){return Be(t,e,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return t.all(`SELECT DISTINCT m.symbol_id, d.relative_path
|
|
13
|
+
FROM mentions m
|
|
14
|
+
JOIN chunks c ON m.chunk_id = c.id
|
|
15
|
+
JOIN documents d ON c.document_id = d.id
|
|
16
|
+
WHERE m.role != 1
|
|
17
|
+
${r}
|
|
18
|
+
${t.pathExclusionsFor("d")}`,...n??[])}).filter(n=>n.symbol_id!==null)}function Bc(t,e){return Be(t,e,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return t.all(`SELECT DISTINCT m.symbol_id
|
|
19
|
+
FROM mentions m
|
|
20
|
+
WHERE m.role != 1
|
|
21
|
+
${r}`,...n??[])}).filter(n=>n.symbol_id!==null)}function yr(t,e){return Be(t,e,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return t.all(`SELECT DISTINCT m.symbol_id, d.relative_path, c.document_id,
|
|
22
|
+
c.start_line AS chunk_start, c.end_line AS chunk_end
|
|
23
|
+
FROM mentions m
|
|
24
|
+
JOIN chunks c ON m.chunk_id = c.id
|
|
25
|
+
JOIN documents d ON c.document_id = d.id
|
|
26
|
+
WHERE m.role != 1
|
|
27
|
+
${r}
|
|
28
|
+
${t.pathExclusionsFor("d")}
|
|
29
|
+
ORDER BY d.relative_path, c.start_line`,...n??[])})}function Be(t,e,n){if(!e)return n();if(e.length===0)return[];let r=[];for(let i=0;i<e.length;i+=750)r.push(...n(e.slice(i,i+750)));return r}var Us=/^[A-Za-z_][A-Za-z0-9_]*$/,Sr=/\bDefault::default\b/g,Bs=/^\.\.\s*Default::default\b/;function gr(t,e){let n=new Map,r=new Map;for(let i of e){let s=En(t,i,r);s!==null&&n.set(i.symbolId,s)}return n}function En(t,e,n=new Map){let r=qs(e.symbol);if(!r)return null;let i=yr(t,[e.symbolId]);if(i.length===0)return null;let s=new RegExp(`(^|[^A-Za-z0-9_])${te(r)}::default\\b`,"g"),o=new RegExp(`(^|[^A-Za-z0-9_])${te(r)}\\s*$`),a=js(t,e.symbolId),c=[];for(let l of i){let f=Ws(t,l.relative_path,n);if(f===null)return null;let u=f.split(/\r?\n/),p=0,m=[],y=0;for(let I=l.chunk_start;I<=l.chunk_end&&I<u.length;I+=1){let g=u[I]??"",k=new Set;s.lastIndex=0;let P;for(;P=s.exec(g);)c.push({file:l.relative_path,line:I,column:P.index+P[1].length+r.length+2}),y+=1;for(let h=0;h<g.length;h+=1){let x=Bs.exec(g.slice(h));if(x){if(a&&m.includes(p)){let v=h+x[0].lastIndexOf("default");c.push({file:l.relative_path,line:I,column:v}),k.add(v),y+=1}h+=x[0].length-1;continue}let C=g[h];if(C==="{"){let v=o.test(g.slice(0,h));p+=1,v&&m.push(p);continue}if(C==="}")for(p=Math.max(0,p-1);m.length>0&&m[m.length-1]>p;)m.pop()}for(Sr.lastIndex=0;P=Sr.exec(g);){let h=P.index+9;if(!k.has(h))return null}}if(y===0)return null}return Me(c)}function js(t,e){return t.get("SELECT 1 AS present FROM mentions WHERE symbol_id = ? AND role = 1 LIMIT 1",e)?.present===1}function qs(t){let e=/impl#\[([^\]]+)\]\[Default\]default\(\)\./.exec(t)?.[1]??null;return!e||!Us.test(e)?null:e}function Ws(t,e,n){if(n.has(e))return n.get(e)??null;let r=t.get("SELECT text FROM documents WHERE relative_path = ?",e),i=typeof r?.text=="string"?r.text:zs(t,e);return n.set(e,i),i}function zs(t,e){let n=Os(t.config.projectRoot,e);if(!As(n))return null;try{return Ls(n,"utf8")}catch{return null}}function Rr(t){let e=new Map;for(let n of t){let r=e.get(n.relativePath)??[];r.push(n),e.set(n.relativePath,r)}return e}var Hs="typescript-import-usage-v1",$s="typescript-signatures-v1",Pn=Ln("semantic-prefetched-callees",{clearGroups:["whole-project","source-file","semantic-provider"]}),br=Ve({kind:"semantic-import-usage",invalidation:ne("semantic-import-usage"),serialize:t=>JSON.stringify(t),deserialize:Tr}),hr=Ve({kind:"semantic-signatures",invalidation:ne("semantic-signatures"),serialize:t=>JSON.stringify(t),deserialize:no}),Ir=Ke({kind:"typescript-import-usage",invalidation:ne("typescript-import-usage"),serialize:t=>JSON.stringify(t),deserialize:Tr}),vr=Ke({kind:"typescript-signatures",invalidation:ne("typescript-signatures"),serialize:t=>JSON.stringify(t),deserialize:to});function fe(t){let e=new Map,n=new Set;return{capability:(r,i)=>kr(t,r,i),importUsage:r=>Vs(t,r),references:r=>Dr(t,r),materializeReferences:(r,i)=>Cr(t,r,e,n,i),callerMap:r=>Ys(t,r,e,n),calleeMap:r=>Zs(t,r),signature:r=>Xs(t,r)}}function Ks(t,e){if(e.size===0)return;let n=Pn.get(t,()=>new Map);for(let[r,i]of e)n.set(r,[...i])}function sl(t,e){if(!Pn.has(t))return{hits:[],misses:[...e]};let n=Pn.get(t,()=>new Map),r=[],i=[];for(let s of e)n.has(s.symbolId)?r.push({definition:s,callees:n.get(s.symbolId)??[]}):i.push(s);return{hits:r,misses:i}}function ol(t,e){return fe(t).importUsage(e)}function Vs(t,e){if(O(e)==="typescript"){let s="fallback",o=0,a=0,c=0,l=0;return w("typescript.import-usage.materialize",()=>{let f=Je(t,e,Hs);if(f?.key){o=1;let p=Ir.read(t,e,f.key);if(p)return s="hit",a=1,p;c=1;let m=B(t,e);if(!m)return s="unavailable",[];let y=m.importUsage(e);return Ir.write(t,e,f.key,y),s="computed",y}l=1;let u=B(t,e);return u?(s="direct-fallback",u.importUsage(e)):(s="unavailable",[])},()=>({state:s,eligible:o,cacheHits:a,cacheMisses:c,fallbacks:l}))}let n=xr(t,"semantic-import-usage",e);if(n){let s=br.read(t,e,n);if(s)return s}let r=B(t,e);if(!r)return[];let i=r.importUsage(e);return n&&br.write(t,e,n,i),i}function al(t,e){return fe(t).references(e)}function Dr(t,e){let n=En(t,e);if(n)return n;let r=at(t,e);if(r)return r;let i=B(t,e.relativePath);return i?i.referencesFor(e):[]}function cl(t,e){return fe(t).callerMap(e)}function ll(t,e){let n=new Map,r=new Map;for(let i of e){if(O(i.relativePath)==="typescript"){let s=B(t,i.relativePath);if(!s)continue;let o=r.get(s)??[];o.push(i),r.set(s,o);continue}Fn(t,n,i,Dr(t,i))}for(let[i,s]of r){let o=Qe(t,s,c=>V(t,c)),a=o?.references??(i.referencesForDefinitions?i.referencesForDefinitions(s,{exact:!0}):new Map(s.map(c=>[c.symbolId,i.referencesFor(c)])));!o&&A()&&Ge(t,s,a,c=>V(t,c));for(let c of s)Fn(t,n,c,a.get(c.symbolId)??[])}return n}function Ys(t,e,n=new Map,r=new Set){let i=new Map,s=Cr(t,e,n,r),o=0;return w("semantic.callers.from-references",()=>{for(let a of e)o+=Fn(t,i,a,n.get(a.symbolId)??[])},()=>({definitions:e.length,materialized:s.definitions,inMemoryHits:s.inMemoryHits,incompleteInMemoryHits:s.incompleteInMemoryHits,resultRows:i.size,callerFiles:o})),i}function Cr(t,e,n,r,i={}){let s=He(t),o=[],a=[],c=[],l=0,f=0,u=0,p=0,m=0,y=0,I=0,b=0,g=0,k=0,P=0,h=0,x=[],C=new Map,v=e.filter(d=>O(d.relativePath)==="typescript"&&!n.has(d.symbolId)&&!r.has(d.symbolId)),S=Qe(t,v,d=>V(t,d));if(S){g=v.length,k=S.cacheHits,P=S.cacheMisses,h=S.computedFiles;for(let d of v)n.set(d.symbolId,S.references.get(d.symbolId)??[])}if(w("semantic.references.cache-scan",()=>{for(let[d,R]of Rr(e)){let T=[];for(let M of R)n.has(M.symbolId)?f+=1:r.has(M.symbolId)?b+=1:T.push(M);if(T.length===0){I+=1;continue}let j=Js(t,s,d);if(!j){for(let M of T)O(M.relativePath)||(l+=1),c.push(M);continue}y+=1;let _=On(t,d,j);for(let M of T){let N=_.get(M.symbol)??null;if(N!==null){let E=Qs(N);if(E){u+=1,n.set(M.symbolId,E);continue}p+=1}a.push({definition:M,cacheFingerprint:j})}}},()=>({definitions:e.length,skippedUnsupportedLanguage:l,cacheHits:u,parseFailures:p,misses:a.length,unkeyed:c.length,inMemoryHits:f,incompleteInMemoryHits:b,fullyInMemoryFiles:I,cacheReadFiles:y})),a.length>0||c.length>0){x=[...c,...a.map(d=>d.definition)],C=w("semantic.references.compute-misses",()=>{let d=Gs(t,x,i);return m=d.size,d},()=>({definitions:x.length,misses:a.length,unkeyed:c.length,rows:m}));for(let d of x)C.has(d.symbolId)?(n.set(d.symbolId,C.get(d.symbolId)??[]),r.delete(d.symbolId)):r.add(d.symbolId);for(let{definition:d,cacheFingerprint:R}of a)C.has(d.symbolId)&&kr(t,"semantic-references",d.relativePath).available&&o.push({relativePath:d.relativePath,symbol:d.symbol,projectFingerprint:R,payload:JSON.stringify(C.get(d.symbolId)??[])})}return o.length>0&&w("semantic.references.cache-write",()=>Un(t,o),()=>({entries:o.length})),C.size>0&&Ge(t,x,C,d=>V(t,d)),{definitions:e.length,inMemoryHits:f,incompleteInMemoryHits:b,cacheHits:u,misses:a.length,unkeyed:c.length,skippedUnsupportedLanguage:l,parseFailures:p,computed:m,incomplete:r.size,cacheWrites:o.length,fragmentDefinitions:g,fragmentCacheHits:k,fragmentCacheMisses:P,fragmentComputedFiles:h}}function Js(t,e,n){if(!e)return null;let r=O(n);return r==="typescript"?e:r==="rust"?ze(JSON.stringify({kind:"semantic-references",language:r,engine:tn(t.config.projectRoot),projectFingerprint:e})):null}function Gs(t,e,n={}){let r=A(),i=new Map,s=0,o=0,a=0,c=0,l=0,f=0,u=0,p=0,m=0;return w("semantic.references.provider-loop",()=>{let y=gr(t,e),I=ot(t,e),b=new Map,g=n.prefetchCallees?new Map:null,k=[];for(let h of e){let x,C=()=>(x??=B(t,h.relativePath),x);if(g){let R=C();if(R?.referencesAndCalleesForDefinitions){let T=g.get(R);T?T.push(h):g.set(R,[h]),m+=1}}let v=y.get(h.symbolId);if(v){a+=1,c+=v.length,ue(i,h.symbolId,v,r,R=>{u+=1,p+=R});continue}let S=I.get(h.symbolId);if(S){l+=1,f+=S.length,ue(i,h.symbolId,S,r,R=>{u+=1,p+=R});continue}let d=C();if(!d){r&&(o+=1);continue}if(r&&(s+=1),d.referencesForDefinitions){let R=b.get(d);R?R.push(h):b.set(d,[h])}else k.push({provider:d,definition:h})}let P=new Set;if(g)for(let[h,x]of g){if(!h.referencesAndCalleesForDefinitions)continue;let C=b.get(h)??[],v=h.referencesAndCalleesForDefinitions(C,x);P.add(h),Ks(t,v.callees);for(let S of C){if(!v.references.has(S.symbolId))continue;let d=v.references.get(S.symbolId)??[];ue(i,S.symbolId,d,r,R=>{u+=1,p+=R})}}for(let[h,x]of b){if(P.has(h))continue;let C=h.referencesForDefinitions(x);for(let v of x){if(!C.has(v.symbolId))continue;let S=C.get(v.symbolId)??[];ue(i,v.symbolId,S,r,d=>{u+=1,p+=d})}}for(let{provider:h,definition:x}of k){let C=h.referencesFor(x);ue(i,x.symbolId,C,r,v=>{u+=1,p+=v})}return i},()=>({definitions:e.length,providerHits:s,providerMisses:o,rustDefaultFastPathRows:a,rustDefaultFastPathReferences:c,rustScipOccurrenceFastPathRows:l,rustScipOccurrenceFastPathReferences:f,prefetchCalleeDefinitions:m,definitionsWithReferences:u,referenceCount:p,rows:i.size}))}function ue(t,e,n,r,i){t.set(e,n),r&&n.length>0&&i(n.length)}function Fn(t,e,n,r){let i=0;for(let s of r){if(s.file===n.relativePath||t.isIgnored(s.file))continue;let o=e.get(n.symbolId);o||(o=new Set,e.set(n.symbolId,o));let a=o.size;o.add(s.file),o.size!==a&&(i+=1)}return i}function Qs(t){try{return JSON.parse(t)}catch{return null}}function ul(t,e){return fe(t).calleeMap(e)}function Zs(t,e){let n=A(),r=new Map,i=0,s=0,o=0,a=0;return w("semantic.callees.provider-loop",()=>{let c=new Map,l=[];for(let f of e){let u=B(t,f.relativePath);if(!u){n&&(s+=1);continue}n&&(i+=1);let p=f;if(u.calleesForDefinitions){let m=c.get(u);m?m.push(p):c.set(u,[p])}else l.push({provider:u,definition:p})}for(let[f,u]of c){let p=f.calleesForDefinitions(u);for(let m of u){let y=p.get(m.symbolId)??[];Mr(r,m.symbolId,y,n,I=>{o+=1,a+=I})}}for(let{provider:f,definition:u}of l){let p=f.calleesFor(u);Mr(r,u.symbolId,p,n,m=>{o+=1,a+=m})}return r},()=>({definitions:e.length,providerHits:i,providerMisses:s,definitionsWithCallees:o,calleeCount:a,rows:r.size}))}function Mr(t,e,n,r,i){n.length>0&&(t.set(e,n),r&&i(n.length))}function fl(t,e){return fe(t).signature(e)}function Xs(t,e){if(O(e.relativePath)==="typescript"){let o="fallback",a=0,c=0,l=0,f=0;return w("typescript.signature.materialize",()=>{let u=Je(t,e.relativePath,$s);if(u?.key){a=1;let m=vr.read(t,e.relativePath,u.key)??{};if(Object.prototype.hasOwnProperty.call(m,e.symbol))return o="hit",c=1,m[e.symbol]??null;l=1;let y=B(t,e.relativePath);if(!y)return o="unavailable",null;let I=y.signatureFor(e);return vr.write(t,e.relativePath,u.key,{...m,[e.symbol]:I}),o="computed",I}f=1;let p=B(t,e.relativePath);return p?(o="direct-fallback",p.signatureFor(e)):(o="unavailable",null)},()=>({state:o,eligible:a,cacheHits:c,cacheMisses:l,fallbacks:f}))}let n=xr(t,"semantic-signatures",e.relativePath),r=eo(e);if(n){let o=hr.read(t,r,n);if(o)return o.signature}let i=B(t,e.relativePath);if(!i)return null;let s=i.signatureFor(e);return n&&hr.write(t,r,n,{signature:s}),s}function xr(t,e,n){let r=He(t);if(!r)return null;let i=O(n);return i!=="rust"?null:ze(JSON.stringify({kind:e,language:i,engine:tn(t.config.projectRoot),projectFingerprint:r}))}function eo(t){return`${t.relativePath}\0${t.symbol}`}function Tr(t){try{let e=JSON.parse(t);return Array.isArray(e)?e:null}catch{return null}}function no(t){try{let e=JSON.parse(t);if(!e||typeof e!="object")return null;let n=e.signature;return n!==null&&typeof n!="string"?null:{signature:n}}catch{return null}}function to(t){try{let e=JSON.parse(t);if(!e||typeof e!="object"||Array.isArray(e))return null;for(let n of Object.values(e))if(n!==null&&typeof n!="string")return null;return e}catch{return null}}function kr(t,e,n){let r=O(n);if(!r)return{slot:e,language:"typescript",available:!1,reason:"semantic evidence is only available for TypeScript or Rust files"};try{return{slot:e,language:r,...V(t,n).availability()}}catch(i){return{slot:e,language:r,available:!1,reason:i instanceof Error?i.message:String(i)}}}function B(t,e){if(!O(e))return null;let n=V(t,e);return n.availability().available?n:null}export{Oc as a,Uc as b,Bc as c,yr as d,Rr as e,tn as f,O as g,fe as h,sl as i,ol as j,al as k,cl as l,ll as m,Gs as n,ul as o,fl as p};
|
|
30
|
+
//# sourceMappingURL=chunk-U7DSEKOM.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as d}from"./chunk-NH5ALKPW.js";import{b as g}from"./chunk-B75HZHUP.js";import{a as p,b as u}from"./chunk-UOAV44HR.js";import{n as b}from"./chunk-LBMJEAEW.js";import{d as f}from"./chunk-XYADIZHU.js";function F(i,t={}){let{limit:l=20,scope:a,minFanIn:s=2,minFanOut:m=2,scanLimit:o}=t,r=new d(i);return g(r.productionCallableDefinitions({scope:a,requireCallableSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof o=="number"&&o>0}),o).map(e=>h(i,e,t.semantic!==!1)).filter(e=>e.fanIn>=s&&e.fanOut>=m).sort((e,y)=>y.score-e.score||y.fanIn-e.fanIn).slice(0,l)}function h(i,t,l){let a=[...new Set(u(i,t,{limit:500,semantic:l,semanticEvidence:b}).map(n=>n.file))].sort(),s=new Map;for(let n of p(i,t,{limit:500,semantic:l,semanticEvidence:b})){if(n.file===t.relativePath)continue;let e=`${n.symbol}|${n.file}`;s.has(e)||s.set(e,{symbol:n.symbol,shortName:f(n.symbol),file:n.file})}let m=[...s.values()].sort((n,e)=>n.file.localeCompare(e.file)||n.symbol.localeCompare(e.symbol)),o=a.length,r=m.length,c=o*r;return{symbol:t.symbol,shortName:f(t.symbol),fanIn:o,fanOut:r,callerFiles:a,externalCallees:m,score:c,definedIn:t.relativePath,actionTier:"signal",riskKind:"coordination-hotspot",evidenceReasons:[`${o} incoming file(s) reference this symbol`,`${r} distinct cross-file callee symbol(s) are reached from it`,`centrality score is ${c} (fan-in * fan-out)`],recommendation:"Review ownership, API stability, and caller groups before changing this central symbol; do not refactor solely from graph centrality."}}export{F as a};
|
|
2
|
+
//# sourceMappingURL=chunk-UKZBVX4U.js.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import{b as B,c as W,d as G,e as J,l as K}from"./chunk-LBMJEAEW.js";import{d as Q,e as U}from"./chunk-MTDBHTSF.js";import{e as T,g as x,s as F,t as j,y as $,z as H}from"./chunk-XYADIZHU.js";import{k as v,p as P}from"./chunk-X6D5IC6I.js";import{B as L,c as O}from"./chunk-YGAGTIDK.js";import{d as N}from"./chunk-L7SPDE73.js";function Me(t,n,e={}){let o=Y(t,[n],{additive:e.additive,semantic:e.semantic,semanticEvidence:e.semanticEvidence}),l=e.callableOnly?(o.get(n.symbolId)??[]).filter(a=>x(a.symbol)||a.source==="ast-callsite"):o.get(n.symbolId)??[];return typeof e.limit=="number"?l.slice(0,e.limit):l}function Ie(t,n,e){return X(t,[n],e).get(n.symbolId)??[]}function X(t,n,e){let o=te(t)?ie(t,n,{semantic:e.semantic!==!1,semanticEvidence:e.semanticEvidence}):oe(t,e.semanticEvidence);return typeof e.limit!="number"?new Map(n.map(l=>[l.symbolId,o.get(l.symbolId)??[]])):new Map(n.map(l=>[l.symbolId,(o.get(l.symbolId)??[]).slice(0,e.limit)]))}var ee=N("caller-rows",{clearGroups:["whole-project"]}),ne=2e4;function te(t){return(t.get("SELECT COUNT(*) AS count FROM global_symbols")?.count??0)>ne}function oe(t,n){return ee.get(t,()=>{let e=j(t),o=Y(t,e,{semanticEvidence:n}),l=new Map;for(let s of e)l.set(s.symbol,s.symbolId);let a=new Map,c=new Map;for(let s of e){let d=o.get(s.symbolId);if(!(!d||d.length===0))for(let b of d){let r=l.get(b.symbol);if(r===void 0||r===s.symbolId)continue;let u=a.get(r);u||(u=[],a.set(r,u),c.set(r,new Set));let m=`${s.symbol}|${s.relativePath}`;c.get(r).has(m)||(c.get(r).add(m),u.push({symbol:s.symbol,file:s.relativePath,source:"caller-map-inversion"}))}}return a})}function ie(t,n,e){let o=e.semantic&&e.semanticEvidence?n.flatMap(s=>{let d=le(t,s);return d?[d]:[]}):[],l=new Map(o.map(s=>[s.symbolId,s])),a=e.semanticEvidence?.referenceMap(t,o)??new Map,c=new Map;for(let s of n){let d=[],b=new Set,r=m=>{if(m.symbol===s.symbol)return;let i=`${m.symbol}|${m.file}`;b.has(i)||(b.add(i),d.push(m))};for(let m of K(t,s))m.file!==s.relativePath&&r({symbol:m.enclosingSymbol??m.file,file:m.file,source:"resolved-reference"});let u=l.get(s.symbolId);if(u)for(let m of a.get(u.symbolId)??[]){if(m.file===s.relativePath||t.isIgnored(m.file))continue;let i=H(F(t,m.file),m.line);r({symbol:i?.symbol??m.file,file:m.file,source:"semantic-reference"})}c.set(s.symbolId,d)}return c}function le(t,n){let e=Q().join(", "),o=U().join(", ");return t.get(`SELECT
|
|
2
|
+
d.id AS documentId,
|
|
3
|
+
gs.id AS symbolId,
|
|
4
|
+
gs.symbol,
|
|
5
|
+
d.relative_path AS relativePath,
|
|
6
|
+
COALESCE(der.start_line, c.start_line) AS startLine,
|
|
7
|
+
COALESCE(der.end_line, c.end_line) AS endLine,
|
|
8
|
+
COALESCE(gs.display_name, '') AS leaf,
|
|
9
|
+
NULL AS parentTypeName,
|
|
10
|
+
CASE WHEN gs.kind IN (${e}) OR gs.symbol LIKE '%().' THEN 1 ELSE 0 END AS isFunctionLike,
|
|
11
|
+
CASE WHEN gs.kind IN (${o}) THEN 1 ELSE 0 END AS isTypeLike,
|
|
12
|
+
gs.kind AS kind,
|
|
13
|
+
gs.documentation AS documentation,
|
|
14
|
+
gs.enclosing_symbol AS enclosingSymbol
|
|
15
|
+
FROM global_symbols gs
|
|
16
|
+
LEFT JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
|
|
17
|
+
LEFT JOIN chunks c ON c.document_id = der.document_id
|
|
18
|
+
JOIN documents d ON d.id = COALESCE(der.document_id, c.document_id)
|
|
19
|
+
WHERE gs.id = ?
|
|
20
|
+
LIMIT 1`,n.symbolId)??null}function Y(t,n,e={}){if(n.length===0)return new Map;let o=e.additive??!1,l=[],a=[];for(let r of n)L(r.relativePath)&&v(t,r.relativePath)!==null?l.push(r):a.push(r);let c=new Map,s=new Map,d=r=>{for(let[u,m]of r){let i=c.get(u);i||(i=[],c.set(u,i));let p=s.get(u);p||(p=new Set,s.set(u,p));for(let _ of m){let h=`${_.symbol}|${_.chunkId}`;p.has(h)||(p.add(h),i.push(_))}}};l.length>0&&d(se(t,l)),e.semantic!==!1&&e.semanticEvidence&&d(ue(e.semanticEvidence.calleeMap(t,n)));let b=o?n:a;return b.length>0&&d(me(t,b)),c}function se(t,n){let e=new Map,o=ae(n,e),l=J(t);for(let[a,c]of o){let s=v(t,a);if(!s)continue;let d=$(c);for(let b of s){let r=d.get(b.line);if(!r)continue;let u=ce(t,a,l,b);u&&u.symbol!==r.symbol&&e.get(r.symbolId).push({symbol:u.symbol,file:u.file,chunkId:b.line,source:"ast-callsite"})}}return e}function ae(t,n){let e=new Map;for(let o of t){let l=e.get(o.relativePath);l?l.push(o):e.set(o.relativePath,[o]),n.set(o.symbolId,[])}for(let o of e.values())o.sort((l,a)=>l.endLine-l.startLine-(a.endLine-a.startLine));return e}function ce(t,n,e,o){let l=W(n,e.get(o.calleeLeaf)??[]);if(l.length===0)return null;let a=re(t,n,l,o.calleeQualifier);return a||G(t,n,l,o.memberAccess)}function re(t,n,e,o){if(!o||L(n)!=="clojure")return null;let a=P(t,n).filter(c=>c.kind==="namespace"&&c.localName===o&&c.sourcePath).map(c=>c.sourcePath);for(let c of a){let s=e.find(d=>O(c,d.file));if(s)return s}return e.find(c=>/`([^`]+)`\//.exec(c.symbol)?.[1]===o)??null}function me(t,n){if(n.length===0)return new Map;let o=k(n.map(i=>i.documentId)).flatMap(i=>t.all(`SELECT c.document_id, c.id AS chunk_id, c.start_line, c.end_line, m.symbol_id
|
|
21
|
+
FROM mentions m
|
|
22
|
+
JOIN chunks c ON m.chunk_id = c.id
|
|
23
|
+
WHERE m.role != 1
|
|
24
|
+
AND c.document_id IN (${i.map(()=>"?").join(",")})`,...i)),l=new Map;for(let i of o)l.has(i.document_id)||l.set(i.document_id,[]),l.get(i.document_id).push(i);let c=k(o.map(i=>i.symbol_id)).flatMap(i=>t.all(`SELECT gs.id AS symbol_id, gs.symbol,
|
|
25
|
+
COALESCE(der.document_id, def_chunk.document_id) AS document_id
|
|
26
|
+
FROM global_symbols gs
|
|
27
|
+
LEFT JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
|
|
28
|
+
LEFT JOIN (
|
|
29
|
+
SELECT m.symbol_id, MIN(c.document_id) AS document_id
|
|
30
|
+
FROM mentions m
|
|
31
|
+
JOIN chunks c ON m.chunk_id = c.id
|
|
32
|
+
WHERE m.role = 1
|
|
33
|
+
AND m.symbol_id IN (${i.map(()=>"?").join(",")})
|
|
34
|
+
GROUP BY m.symbol_id
|
|
35
|
+
) def_chunk ON def_chunk.symbol_id = gs.id
|
|
36
|
+
WHERE gs.id IN (${i.map(()=>"?").join(",")})`,...i,...i)),s=k([...n.map(i=>i.documentId),...c.flatMap(i=>i.document_id===null?[]:[i.document_id])]),d=new Map(s.flatMap(i=>t.all(`SELECT id, relative_path FROM documents
|
|
37
|
+
WHERE id IN (${i.map(()=>"?").join(",")})`,...i).map(p=>[p.id,p.relative_path]))),b=new Map;for(let i of c)b.has(i.symbol_id)||b.set(i.symbol_id,{symbol:i.symbol,file:i.document_id!==null?d.get(i.document_id)??"":""});let r=new Map,u=d,m=de(n);for(let[i,p]of m){let h=[...l.get(i)??[]].sort((f,g)=>f.start_line-g.start_line||f.end_line-g.end_line),Z=[...p].sort((f,g)=>f.startLine-g.startLine||f.endLine-g.endLine),C=new Set,M=0;for(let f of Z){for(;M<h.length&&h[M].start_line<=f.endLine;)C.add(h[M]),M+=1;for(let y of C)y.end_line<f.startLine&&C.delete(y);let g=new Set,A=[],R=null,q=()=>{if(R)return R;let y=u.get(f.documentId)??"",S=new Set;if(y){let w=B(t,y),I=Math.max(0,f.startLine),D=Math.min(w.length-1,f.endLine);for(let E=I;E<=D;E+=1)for(let z of w[E])S.add(z)}return R=S,S};for(let y of C){if(y.symbol_id===f.symbolId)continue;let S=b.get(y.symbol_id);if(!S)continue;if(!(y.start_line>=f.startLine&&y.end_line<=f.endLine)){if(!(y.start_line<=f.endLine&&y.end_line>=f.startLine))continue;let E=T(S.symbol);if(!E||!q().has(E))continue}let I=`${S.symbol}|${y.chunk_id}`;g.has(I)||(g.add(I),A.push({...S,chunkId:y.chunk_id,source:"scip-chunk"}))}r.set(f.symbolId,A)}}return r}var V=500;function k(t){let n=[...new Set(t)],e=[];for(let o=0;o<n.length;o+=V)e.push(n.slice(o,o+V));return e}function de(t){let n=new Map;for(let e of t){let o=n.get(e.documentId);o?o.push(e):n.set(e.documentId,[e])}return n}function ue(t){let n=new Map;for(let[e,o]of t){let l=[];for(let a of o)l.push({symbol:a.symbol,file:a.file,chunkId:-1,source:"semantic-callee"});n.set(e,l)}return n}export{Me as a,Ie as b,X as c,Y as d};
|
|
38
|
+
//# sourceMappingURL=chunk-UOAV44HR.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{a as o}from"./chunk-LM72NQ7T.js";import{execFileSync as l}from"child_process";import{createRequire as I}from"module";import{existsSync as E}from"fs";import{platform as a,arch as f}from"os";var m="v0.8.1",d="https://github.com/sourcegraph/scip",y="SCIP_QUERY_SCIP_BIN";function C(e){if(e.isOnPath("scip"))return{source:"path",path:"scip"};let t=e.env[y];if(t&&e.fileExists(t))return{source:"env",path:t};if(e.platform==="win32"){let r=e.resolveSidecar(e.arch);if(r&&e.fileExists(r))return{source:"sidecar",path:r}}return null}function P(e){let t=I(import.meta.url);for(let r of e==="arm64"?["arm64","x64"]:[e])try{return t.resolve(`scip-query-scip-windows/scip-win32-${r}.exe`)}catch{}return null}function h(e=process.env){return C({platform:a(),arch:f(),env:e,isOnPath:o,fileExists:E,resolveSidecar:P})?.path??null}function Z(){return h()!==null}function ee(){let e=h();if(!e)return null;try{return l(e,["--version"],{stdio:"pipe"}).toString().trim()}catch{return null}}function _(){let e=a(),t=f(),r,i,s;switch(e){case"darwin":r="darwin",s="tar.gz";break;case"linux":r="linux",s="tar.gz";break;default:return null}switch(t){case"arm64":i="arm64";break;case"x64":i="amd64";break;default:return null}let c=`scip-${r}-${i}.${s}`;return{url:`${d}/releases/download/${m}/${c}`,filename:c}}function te(){let e=_();console.log("\nThe `scip` CLI is required but not found on PATH.\n"),a()==="darwin"?(console.log("Install via Homebrew:"),console.log(` brew install sourcegraph/scip/scip
|
|
2
|
+
`),console.log("Or download manually:")):a()==="win32"?(console.log("On Windows the scip binary ships via the npm sidecar package scip-query-scip-windows,"),console.log("installed automatically with scip-query. If it is missing:"),console.log(" npm install -g scip-query-scip-windows"),console.log(`Or set ${y} to a local scip.exe path.
|
|
3
|
+
`),console.log("Upstream release page:")):console.log("Download from:"),console.log(e?` ${e.url}
|
|
4
|
+
`:` ${d}/releases/tag/${m}
|
|
5
|
+
`),console.log("After installing, ensure `scip` is on your PATH and run `scip-query reindex`.")}function re(e){if(a()==="darwin"&&o("brew")){e("Installing scip CLI via Homebrew...");try{if(l("brew",["install","sourcegraph/scip/scip"],{stdio:"inherit",timeout:3e5,env:process.env}),o("scip"))return e("Successfully installed scip CLI via Homebrew"),!0}catch(t){let r=t instanceof Error?t.message:String(t);e(`Homebrew install failed: ${r}`)}}if(o("go")){e("Installing scip CLI via go install...");try{if(l("go",["install","github.com/sourcegraph/scip/cmd/scip@latest"],{stdio:"inherit",timeout:3e5,env:process.env}),o("scip"))return e("Successfully installed scip CLI via go install"),!0}catch(t){let r=t instanceof Error?t.message:String(t);e(`go install failed: ${r}`)}}return e("Could not auto-install scip CLI."),e(`Install manually from: ${d}/releases`),!1}import{appendFileSync as D,existsSync as B,mkdirSync as O,readFileSync as se,renameSync as T,rmSync as L,statSync as x}from"fs";import{dirname as R,join as $}from"path";var N="reindex-activity.jsonl",k=".previous",M=1024*1024,ce=1440*60*1e3,H={appendFile:D,exists:B,mkdir:e=>O(e,{recursive:!0}),rename:T,remove:e=>L(e,{force:!0}),size:e=>x(e).size};function S(e){return $(R(e),N)}function j(e){if(e.reused)return 0;let t=v(e.indexPath)+v(e.dbPath);for(let r of e.shards??[])!r.reused&&r.outputBytes!==null&&(t+=r.outputBytes);return t}function ae(e,t){let r=t.lastRefresh;r&&A(S(e),{version:1,event:"run",recordedAt:r.completedAt,trigger:r.trigger,result:r.result,durationMs:r.durationMs,estimatedLogicalOutputBytes:j(t)})}function ue(e,t){A(S(e),{version:1,event:"run",recordedAt:t.completedAt,trigger:t.trigger,result:"failed",durationMs:t.durationMs,estimatedLogicalOutputBytes:0})}function F(e,t,r=M,i=H){let s=`${JSON.stringify(t)}
|
|
6
|
+
`,c=Math.max(1,Math.floor(r)),u=`${e}${k}`;if(i.mkdir(R(e)),i.exists(e)){let g=i.size(e);g>c?(i.remove(e),i.remove(u)):g+Buffer.byteLength(s)>c&&(i.remove(u),i.rename(e,u))}i.appendFile(e,s)}function A(e,t){try{F(e,t)}catch{}}function v(e){try{return x(e).size}catch{return 0}}import{createHash as U}from"crypto";import{mkdirSync as Y,realpathSync as q}from"fs";import{homedir as V}from"os";import{join as n,resolve as w}from"path";function z(e,t){let r=process.env.SCIP_QUERY_CACHE_DIR;if(r)return p(r);if(t?.dbPath)return p(w(e,t.dbPath));let i=X(e);return p(i)}function b(){let e=process.env.XDG_CACHE_HOME;return n(e||n(V(),".cache"),"scip-query")}function X(e){let t=w(e);try{t=q(t)}catch{}let r=U("sha256").update(t).digest("hex").slice(0,12);return n(b(),"projects",r)}function me(e){if(!/^[a-f0-9]{24}$/.test(e))throw new Error(`invalid repository cache identity: ${e}`);return n(b(),"repositories",e)}function ye(e){return process.env.SCIP_QUERY_SHARED_CACHE!=="0"&&!process.env.SCIP_QUERY_CACHE_DIR&&!process.env.SCIP_QUERY_INDEX_DB&&!e?.dbPath}function he(e,t){let r=z(e,t);return{cacheDir:r,dbPath:n(r,"index.db"),indexPath:n(r,"index.scip"),metaPath:n(r,"meta.json")}}function p(e){return Y(e,{recursive:!0}),e}export{h as a,Z as b,ee as c,te as d,re as e,N as f,ae as g,ue as h,X as i,me as j,ye as k,he as l};
|
|
7
|
+
//# sourceMappingURL=chunk-V27BEQJN.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as d,b as m}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as d,b as m}from"./chunk-U6WNH5GC.js";import{c as u}from"./chunk-KMVGRIO2.js";import{a as c}from"./chunk-7B3UPBVA.js";function y(t,e={}){let{minSimilarity:o=.5,limit:l=20,scope:n,filePattern:p}=e,r=e.minDeps??(p?1:3),{profiles:i,distinctiveDeps:f}=D(t,{scope:n,minDeps:r}),s=d(i,a=>a.deps);return m({profiles:i,limit:l,filePattern:p,overrunFactor:5,candidateIndex:s,profile:{name:"similar-files"},compare:(a,g)=>F(a,g,o,f)})}function D(t,e){let{scope:o,minDeps:l}=e,n=c(t,o),{universalDeps:p,distinctiveDeps:r}=S(n),i=[];for(let[f,s]of n)s.size>=l&&i.push({file:f,deps:new Set([...s].filter(a=>!p.has(a)))});return{profiles:i,distinctiveDeps:r}}function S(t){let e=new Set,o=new Set,l=t.size;if(l===0)return{universalDeps:e,distinctiveDeps:o};let n=new Map;for(let r of t.values())for(let i of r)n.set(i,(n.get(i)??0)+1);let p=Math.max(3,Math.ceil(l*.03));for(let[r,i]of n)i>=5&&i/l>.3?e.add(r):i<=p&&o.add(r);return{universalDeps:e,distinctiveDeps:o}}function F(t,e,o,l){let n=new Set;for(let s of t.deps)e.deps.has(s)&&n.add(s);if(n.size<3||t.deps.size<4||e.deps.size<4)return null;let p=0;for(let s of n)l.has(s)&&p++;if(p<2)return null;let r=u(t.deps,e.deps);if(r<o)return null;let i=[];for(let s of t.deps)e.deps.has(s)||i.push(s);let f=[];for(let s of e.deps)t.deps.has(s)||f.push(s);return{fileA:t.file,fileB:e.file,similarity:r,sharedDeps:[...n],uniqueToA:i,uniqueToB:f}}export{y as a};
|
|
2
|
+
//# sourceMappingURL=chunk-VGRICIQI.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{Bc as Y,Cc as Q,Pc as X,Qc as Z,V as y,W as k,Wc as ee,b as B,ca as F,da as H,fa as w,ga as T,ha as b,ic as C,ja as _,jc as J,ka as U,kc as K,la as z,oa as L}from"./chunk-SVLTAG5O.js";import{spawn as ke}from"child_process";import{closeSync as we,existsSync as Ie,mkdirSync as We,openSync as Re,readFileSync as ie,rmSync as I,writeFileSync as be}from"fs";import{dirname as Ce,resolve as E}from"path";import{fileURLToPath as Ae}from"url";var te=5e3,Pe=2e3,oe=10,Ee=new Set(["bench","config-validate","hook-context","hook-stop","init","reindex","setup","setup-agent","setup-ci","setup-hooks","uninstall","watch","work-audit"]);function Je(e){let t=e.classification;if(t.kind!=="live")return;let{state:r}=t;return r.watcher.state==="idle"&&r.lastError===void 0?r.indexGeneration:void 0}function xe(e,t=process.env){return t.SCIP_QUERY_SKIP_WATCH_SERVICE!=="1"&&!e.startsWith("__")&&!Ee.has(e)}function Ke(e){let t=e.env??process.env;if(t.SCIP_QUERY_SKIP_WATCH_SERVICE==="1")return{kind:"skipped",reason:"environment"};if(!xe(e.commandName,t))return{kind:"skipped",reason:"excluded-command"};if(e.config.watch?.enabled!==!0)return{kind:"skipped",reason:"disabled"};try{let r=Te({projectRoot:e.projectRoot,cacheDir:e.cacheDir,cliVersion:e.cliVersion,gitContext:e.gitContext,runtime:e.runtime});return{kind:r.disposition,state:r.state}}catch(r){return{kind:"failed",message:r instanceof Error?r.message:String(r)}}}function se(e,t,r){let n=L(E(e));if(r&&L(r.projectRoot)===n)return{projectRoot:n,worktreeKind:"git",worktreeId:r.worktreeId,cliVersion:t};let i=U(n);if(i.kind==="error")throw new Error(`Could not establish Git worktree identity for ${n}: ${i.message}`);return i.kind==="non-git"?{projectRoot:n,worktreeKind:"non-git",cliVersion:t}:{projectRoot:n,worktreeKind:"git",worktreeId:i.identity.worktreeId,cliVersion:t}}function Ye(e){return P(e,se(e.projectRoot,e.cliVersion,e.gitContext))}function P(e,t){let r=e.runtime??O,n=w(e.cacheDir),i=T(n.statePath),s=m(n.lockPath);return{identity:t,classification:De(i,t,r.now(),r.isProcessAlive),lock:s,lockIsLive:s!==null&&r.isProcessAlive(s.pid),paths:n}}function Te(e){let t=e.runtime??O,r=se(e.projectRoot,e.cliVersion,e.gitContext),n=P(e,r),i=G("ensure",n.classification);if(i.kind==="reuse")return A(n.paths.activityPath,t),{disposition:"reused",state:i.state};if(i.kind==="replace")M(i.state.pid,e,t),W(n.paths,i.state.pid,t);else if(i.kind==="start"){if(n.lockIsLive){let o=re(e,r,t,Math.min(e.startupTimeoutMs??1e3,1e3));if(o)return A(n.paths.activityPath,t),{disposition:"reused",state:o};throw new Error(`scip-query watch is already running for ${E(e.projectRoot)} (pid ${n.lock?.pid}; lock: ${n.paths.lockPath}) without compatible daemon state. Stop the foreground watcher before starting the service.`)}n.classification.kind==="stale"&&W(n.paths,n.classification.state.pid,t)}else throw new Error(`Unexpected ensure action: ${i.kind}`);if(n=P(e,r),i=G("ensure",n.classification),i.kind==="reuse")return A(n.paths.activityPath,t),{disposition:"reused",state:i.state};let s=e.serverPath??Ae(new URL("./watch-server.js",import.meta.url));t.spawnServer(s,r.projectRoot,e.cliVersion,e.watchOverrides??{});let a=re(e,r,t,e.startupTimeoutMs??te);if(!a)throw new Error(`scip-query watch service did not become ready within ${e.startupTimeoutMs??te}ms.`);return A(n.paths.activityPath,t),{disposition:"started",state:a}}function ae(e){let t=e.runtime??O,r=w(e.cacheDir),n=T(r.statePath),i=n?t.isProcessAlive(n.pid)?{kind:"live",state:n}:{kind:"stale",state:n,reason:"dead-process"}:{kind:"stopped"},s=G("stop",i);if(s.kind==="signal-stop")return M(s.state.pid,e,t),W(r,s.state.pid,t),{disposition:"stopped",pid:s.state.pid};if(s.kind==="clean-stale")return W(r,s.state.pid,t),{disposition:"stopped",pid:s.state.pid};let a=m(r.lockPath);return s.kind==="already-stopped"&&a&&t.isProcessAlive(a.pid)?(M(a.pid,e,t),W(r,a.pid,t),{disposition:"stopped",pid:a.pid}):{disposition:"already-stopped"}}function _e(e,t=Date.now()){let r=Le(e);k(e,{version:1,at:new Date(t).toISOString(),...r?.refreshRequestedAtMs===void 0?{}:{refreshRequestedAt:new Date(r.refreshRequestedAtMs).toISOString(),...r.refreshDetail?{refreshDetail:r.refreshDetail}:{}}})}function Qe(e,t,r=Date.now()){k(e,{version:1,at:new Date(r).toISOString(),refreshRequestedAt:new Date(r).toISOString(),refreshDetail:t})}function Le(e){try{let t=JSON.parse(ie(e,"utf8"));return t.version!==1||!b(t.at)||t.refreshRequestedAt!==void 0&&!b(t.refreshRequestedAt)||t.refreshDetail!==void 0&&typeof t.refreshDetail!="string"?null:{atMs:Date.parse(t.at),...t.refreshRequestedAt===void 0?{}:{refreshRequestedAtMs:Date.parse(t.refreshRequestedAt)},...t.refreshDetail===void 0?{}:{refreshDetail:t.refreshDetail}}}catch{return null}}function Xe(e,t,r={}){let n=r.pid??process.pid,i=r.isProcessAlive??y,s=()=>{},a=m(e);if(a&&i(a.pid))return{acquired:!1,lockPath:e,message:ne(e,t,a),release:s};a&&I(e,{force:!0}),We(Ce(e),{recursive:!0});let o;try{o=Re(e,"wx")}catch(d){if(ce(d)==="EEXIST")return{acquired:!1,lockPath:e,message:ne(e,t,m(e)),release:s};throw d}let l={version:1,pid:n,projectRoot:E(t),startedAt:(r.now??(()=>new Date))().toISOString()};be(o,`${JSON.stringify(l)}
|
|
3
|
+
`);let c=!1;return{acquired:!0,lockPath:e,message:"",release:()=>{if(c)return;c=!0,we(o);let d=m(e);d?.pid===l.pid&&d.startedAt===l.startedAt&&I(e,{force:!0})}}}function m(e){try{let t=JSON.parse(ie(e,"utf-8"));return t.version!==1||typeof t.pid!="number"||!Number.isInteger(t.pid)||t.pid<=0||typeof t.projectRoot!="string"||!b(t.startedAt)?null:t}catch{return null}}function De(e,t,r,n){if(!e)return{kind:"stopped"};if(e.protocolVersion!==F)return{kind:"incompatible",state:e,reason:"protocol"};if(e.projectRoot!==t.projectRoot)return{kind:"incompatible",state:e,reason:"project"};let i=t.worktreeKind==="git"?t.worktreeId:void 0;if(e.worktreeId!==i)return{kind:"incompatible",state:e,reason:"worktree"};if(e.cliVersion!==t.cliVersion)return{kind:"incompatible",state:e,reason:"cli-version"};if(!n(e.pid))return{kind:"stale",state:e,reason:"dead-process"};let s=Date.parse(e.heartbeatAt);return r-s>H?{kind:"stale",state:e,reason:"old-heartbeat"}:{kind:"live",state:e}}function G(e,t){switch(e){case"status":return{kind:"report",classification:t};case"ensure":switch(t.kind){case"stopped":return{kind:"start"};case"stale":return t.reason==="old-heartbeat"?{kind:"replace",state:t.state}:{kind:"start"};case"live":return{kind:"reuse",state:t.state};case"incompatible":return{kind:"replace",state:t.state};default:return D(t)}case"stop":switch(t.kind){case"stopped":return{kind:"already-stopped"};case"stale":return t.reason==="old-heartbeat"?{kind:"signal-stop",state:t.state}:{kind:"clean-stale",state:t.state};case"live":case"incompatible":return{kind:"signal-stop",state:t.state};default:return D(t)}default:return D(e)}}function re(e,t,r,n){let i=r.now()+n;for(;r.now()<=i;){let s=P(e,t).classification;if(s.kind==="live")return s.state;r.sleep(oe)}return null}function M(e,t,r){if(!r.isProcessAlive(e))return;r.signalProcess(e);let n=t.stopTimeoutMs??Pe,i=r.now()+n;for(;r.now()<=i;){if(!r.isProcessAlive(e))return;r.sleep(oe)}throw new Error(`scip-query watch service pid ${e} did not stop within ${n}ms.`)}function W(e,t,r){I(e.statePath,{force:!0}),I(e.activityPath,{force:!0}),m(e.lockPath)?.pid===t&&!r.isProcessAlive(t)&&I(e.lockPath,{force:!0})}function ne(e,t,r){return`error: scip-query watch is already running for ${E(t)}${r?` (pid ${r.pid}, started ${r.startedAt}; lock: ${e})`:` (lock: ${e})`}. Stop that watcher before starting another.`}function ce(e){return typeof e=="object"&&e&&"code"in e?e.code:void 0}function A(e,t){try{(t.recordActivity??_e)(e,t.now())}catch(r){let n=ce(r);if(n!=="EPERM"&&n!=="EACCES"&&n!=="EROFS")throw r}}var O={now:Date.now,isProcessAlive:y,spawnServer(e,t,r,n){if(!Ie(e))throw new Error(`Watch service helper was not found at ${e}. Run npm run build first.`);ke(process.execPath,[e,t,r,JSON.stringify(n)],{detached:!0,stdio:"ignore",env:{...process.env,SCIP_QUERY_SKIP_WATCH_SERVICE:"1"}}).unref()},signalProcess(e){process.kill(e,"SIGTERM")},sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)}};function D(e){throw new Error(`Unhandled watch service value: ${JSON.stringify(e)}`)}import{existsSync as pe,lstatSync as x,readFileSync as N,readdirSync as he,realpathSync as de,rmSync as R,statSync as fe}from"fs";import{join as h,resolve as g,sep as le}from"path";var Ge=3600*1e3,Me=2*1024*1024*1024,Oe=300*1e3;function je(e){let t=e.leases.filter(o=>o.managed&&!o.live&&!o.busy),r=Se(e.leases,e.locks),n={};for(let o of e.generations)r.has(o.generationId)||(n[o.generationId]=o.unreferencedAt??e.nowMs);let i=e.generations.filter(o=>!r.has(o.generationId)).sort((o,l)=>n[o.generationId]-n[l.generationId]||o.generationId.localeCompare(l.generationId)),s=new Set;for(let o of i)e.nowMs-n[o.generationId]>=e.policy.generationTtlMs&&s.add(o.generationId);let a=e.generations.filter(o=>!s.has(o.generationId)).reduce((o,l)=>o+l.size,0);for(let o of i){if(a<=e.policy.budgetBytes)break;s.has(o.generationId)||(s.add(o.generationId),a-=o.size)}for(let o of s)delete n[o];return{deleteWorktrees:t,deleteGenerations:e.generations.filter(o=>s.has(o.generationId)),deleteLocks:e.locks.filter(o=>!o.live),deleteTemporaries:e.temporaries.filter(o=>!o.live),protectedGenerationIds:[...r].sort(),unreferencedSince:n}}function Se(e,t){let r=new Set(e.filter(n=>n.managed&&(n.live||n.busy)).flatMap(n=>[n.lease.baseGenerationId,n.lease.activeGenerationId]).filter(n=>n!==void 0));for(let n of t)n.live&&r.add(n.generationId);return r}function ut(e,t,r={}){if(!K())return{kind:"disabled"};let n=_(e);if(!n)return{kind:"unavailable"};let i=h(C(),"repositories",n.repositoryId);if(!pe(i))return{kind:"unavailable"};let s=(r.now??Date.now)(),a=h(i,"gc-state.json"),o=me(a);if(!r.force&&o&&s-Date.parse(o.lastSweepAt)<Oe)return{kind:"throttled",sweptAt:o.lastSweepAt};let l=Y(i,{now:()=>s});if(!l)return{kind:"busy"};try{let c=ve(e,i,n.repositoryId,o?.unreferencedSince??{}),d=je({nowMs:s,...c,policy:{generationTtlMs:r.policy?.generationTtlMs??Ge,budgetBytes:r.policy?.budgetBytes??Me}}),u=0,f=0;for(let p of d.deleteWorktrees){if(!ye(p.lease))continue;let q=Q(h(p.lease.localCacheDir,"cache-lifecycle.lock"));if(q)try{if(V(p.lease,!0))continue;try{ae({projectRoot:p.lease.projectRoot,cacheDir:p.lease.localCacheDir,cliVersion:t})}catch{continue}if(V(p.lease,!0))continue;R(p.lease.localCacheDir,{recursive:!0,force:!0}),R(p.leasePath,{force:!0}),f+=1}finally{q.release()}}for(let p of d.deleteLocks)R(p.path,{force:!0});for(let p of d.deleteTemporaries)R(p.path,{recursive:!0,force:!0});for(let p of d.deleteGenerations)R(p.path,{recursive:!0,force:!0}),u+=p.size;B(h(i,"evidence.db"));let v={kind:"swept",sweptAt:new Date(s).toISOString(),deletedWorktrees:f,deletedGenerations:d.deleteGenerations.length,deletedBytes:u,protectedGenerations:d.protectedGenerationIds.length},S={version:1,lastSweepAt:v.sweptAt,unreferencedSince:d.unreferencedSince,lastResult:v};return k(a,S,{spacing:2,trailingNewline:!0}),v}catch(c){return{kind:"failed",error:c instanceof Error?c.message:String(c)}}finally{l.release()}}function pt(e,t,r){let n=X(e,r.dbPath,t);if(n)return{state:"bypassed",reason:n,localCacheDir:r.cacheDir,generations:0,generationBytes:0,protectedGenerations:0,unreferencedGenerations:0,unreferencedBytes:0,temporaryGenerations:0,sharedEvidence:{exists:!1,bytes:0}};let i=_(e);if(!i)return{state:"unavailable",reason:"Git worktree identity is unavailable",localCacheDir:r.cacheDir,generations:0,generationBytes:0,protectedGenerations:0,unreferencedGenerations:0,unreferencedBytes:0,temporaryGenerations:0,sharedEvidence:{exists:!1,bytes:0}};let s=h(C(),"repositories",i.repositoryId),a=ge(h(s,"worktrees",`${i.worktreeId}.json`)),o=me(h(s,"gc-state.json")),l=ve(e,s,i.repositoryId,o?.unreferencedSince??{}),c=Se(l.leases,l.locks),d=l.generations.filter(S=>!c.has(S.generationId)),u=l.generations.reduce((S,p)=>S+p.size,0),f=Z(e,t),v=0;return f&&(v=Ve(f)),{state:"managed",repositoryId:i.repositoryId,worktreeId:i.worktreeId,localCacheDir:r.cacheDir,...a?{baseGenerationId:a.baseGenerationId,activeGenerationId:a.activeGenerationId,lastAction:a.lastAction,reason:a.lastReason,lastSeenAt:a.lastSeenAt}:{},generations:l.generations.length,generationBytes:u,protectedGenerations:l.generations.filter(S=>c.has(S.generationId)).length,unreferencedGenerations:d.length,unreferencedBytes:d.reduce((S,p)=>S+p.size,0),temporaryGenerations:l.temporaries.length,sharedEvidence:{path:f,exists:v>0,bytes:v},cleanup:o?.lastResult}}function Ve(e){return[e,`${e}-wal`,`${e}-shm`].reduce((t,r)=>{try{return t+fe(r).size}catch{return t}},0)}function ve(e,t,r,n){let i=new Set(z(e).map(c=>g(c.path))),s=[];for(let c of j(h(t,"worktrees"))){if(!c.endsWith(".json"))continue;let d=h(t,"worktrees",c),u=ge(d);if(!u)continue;let f=g(u.projectRoot);s.push({leasePath:d,lease:u,managed:u.repositoryId===r&&ye(u),live:i.has(f)||pe(f),busy:V(u)})}let a=[];for(let c of j(h(t,"locks"))){let d=/^([a-f0-9]{64})\.lock$/.exec(c);if(!d)continue;let u=h(t,"locks",c),f=$(u),v=f!==void 0&&y(f),S=d[1];a.push({generationId:S,path:u,live:v})}let o=[],l=[];for(let c of j(h(t,"generations"))){let d=/^\.tmp-(\d+)-/.exec(c);if(d){let v=h(t,"generations",c),S=Number(d[1]);try{l.push({path:v,size:ue(v),live:Number.isSafeInteger(S)&&y(S)})}catch{}continue}if(!/^[a-f0-9]{64}$/.test(c))continue;let u=h(t,"generations",c),f;try{f=x(u)}catch{continue}!f.isDirectory()||f.isSymbolicLink()||o.push({generationId:c,path:u,size:ue(u),...n[c]===void 0?{}:{unreferencedAt:n[c]}})}return{leases:s,generations:o,locks:a,temporaries:l}}function ye(e){if(e.ownershipChecksum!==ee(e)||g(e.localCacheDir)!==g(J(e.projectRoot)))return!1;let t=g(C()),r=g(h(t,"projects")),n=g(e.localCacheDir);if(!n.startsWith(`${r}${le}`))return!1;try{let i=x(t),s=x(r),a=x(n);if(!i.isDirectory()||i.isSymbolicLink()||!s.isDirectory()||s.isSymbolicLink()||!a.isDirectory()||a.isSymbolicLink())return!1;let o=de(r);return de(n).startsWith(`${o}${le}`)}catch{return!1}}function V(e,t=!1){for(let n of t?["index.lock"]:["index.lock","cache-lifecycle.lock"]){let i=$(h(e.localCacheDir,n));if(i!==void 0&&y(i))return!0}let r=$(w(e.localCacheDir).lockPath);return r!==void 0&&y(r)}function ge(e){try{let t=JSON.parse(N(e,"utf8"));return t.version!==1||typeof t.repositoryId!="string"||typeof t.worktreeId!="string"||typeof t.projectRoot!="string"||t.treeOid!==void 0&&typeof t.treeOid!="string"||typeof t.localCacheDir!="string"||t.baseGenerationId!==void 0&&typeof t.baseGenerationId!="string"||t.activeGenerationId!==void 0&&typeof t.activeGenerationId!="string"||typeof t.ownershipChecksum!="string"||!/^[a-f0-9]{64}$/.test(t.ownershipChecksum)||typeof t.lastAction!="string"||t.lastReason!==void 0&&typeof t.lastReason!="string"||typeof t.lastSeenAt!="string"?null:t}catch{return null}}function $(e){try{let t=JSON.parse(N(e,"utf8"));return typeof t.pid=="number"&&Number.isSafeInteger(t.pid)&&t.pid>0?t.pid:void 0}catch{return}}function me(e){try{let t=JSON.parse(N(e,"utf8"));return t.version!==1||typeof t.lastSweepAt!="string"||!Number.isFinite(Date.parse(t.lastSweepAt))||!t.unreferencedSince||typeof t.unreferencedSince!="object"||!t.lastResult?null:t}catch{return null}}function j(e){try{return he(e)}catch{return[]}}function ue(e){let t=0,r=[e];for(;r.length>0;){let n=r.pop();for(let i of he(n,{withFileTypes:!0})){let s=h(n,i.name);i.isDirectory()?r.push(s):i.isFile()&&(t+=fe(s).size)}}return t}export{Je as a,xe as b,Ke as c,Ye as d,Te as e,ae as f,Qe as g,Xe as h,ut as i,pt as j};
|
|
4
|
+
//# sourceMappingURL=chunk-VMNZB6WI.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{b as d}from"./chunk-UOAV44HR.js";import{n as f}from"./chunk-LBMJEAEW.js";import{d as r,t as m}from"./chunk-XYADIZHU.js";function g(t,o={}){let{limit:n=30,scope:e}=o,s=e?"AND def_d.relative_path LIKE ?":"",c=e?[`%${e}%`]:[],l=t.all(`SELECT
|
|
2
2
|
gs.symbol,
|
|
3
3
|
COUNT(*) AS ref_count,
|
|
4
4
|
COUNT(DISTINCT ref_d.id) AS file_count,
|
|
@@ -17,10 +17,10 @@ import{c as d}from"./chunk-EMIIOOTM.js";import{n as f}from"./chunk-DZXFZAZO.js";
|
|
|
17
17
|
JOIN documents def_d ON sym_def.document_id = def_d.id
|
|
18
18
|
WHERE m.role != 1
|
|
19
19
|
AND def_d.id != ref_d.id
|
|
20
|
-
${
|
|
21
|
-
${
|
|
20
|
+
${t.pathExclusionsFor("def_d")}
|
|
21
|
+
${t.symbolNoiseFor("gs")}
|
|
22
22
|
${s}
|
|
23
23
|
GROUP BY gs.id
|
|
24
24
|
ORDER BY ref_count DESC
|
|
25
|
-
LIMIT ?`,...c,n).filter(i=>!
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
LIMIT ?`,...c,n).filter(i=>!t.isIgnored(i.defined_in)).map(i=>({symbol:i.symbol,shortName:r(i.symbol),refCount:i.ref_count,fileCount:i.file_count,definedIn:i.defined_in}));return l.length>0?l:u(t,e,n)}function u(t,o,n){return m(t,{scope:o}).filter(e=>!t.isIgnored(e.relativePath)).map(e=>a(t,e)).filter(e=>e.refCount>0).sort((e,s)=>s.refCount-e.refCount||s.fileCount-e.fileCount).slice(0,n)}function a(t,o){let e=d(t,o,{limit:500,semanticEvidence:f}).filter(s=>s.file!==o.relativePath);return{symbol:o.symbol,shortName:r(o.symbol),refCount:e.length,fileCount:new Set(e.map(s=>s.file)).size,definedIn:o.relativePath}}export{g as a};
|
|
26
|
+
//# sourceMappingURL=chunk-VTKGCT3V.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as g}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as g}from"./chunk-XLTP42QA.js";import{c as d}from"./chunk-NH5ALKPW.js";import{a as c}from"./chunk-LBMJEAEW.js";import{d as p}from"./chunk-XYADIZHU.js";import{f as o}from"./chunk-X6D5IC6I.js";import{B as u}from"./chunk-YGAGTIDK.js";function F(r,a={}){let{scope:l,limit:s=30,scanLimit:b}=a,f=new d(r);return g({candidates:()=>f.productionCallableDefinitions({scope:l,files:a.files,minLoc:2,excludeRootedSymbols:!0,requireFunctionLikeSymbol:!0}),filterCandidate:e=>y(e.relativePath),scanLimit:b,profile:{name:"unused-params"},evaluate:e=>{let n=o(r,e.relativePath)?.callables.find(t=>t.startLine===e.startLine&&t.endLine===e.endLine);if(!n||n.params.length===0||n.params.some(t=>!t.simple)||n.paramsEndLine>=n.endLine)return null;let L=c(r,e.relativePath),m=[];for(let t=n.params.length-1;t>=0;t--){let i=n.params[t];if(i.name===""||i.name.startsWith("_")||h(L.get(i.name),n.paramsEndLine,n.endLine))break;m.unshift(i.name)}return m.length===0?null:{symbol:e.symbol,shortName:p(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,paramCount:n.paramCount,unusedTrailing:m}},orderResults:(e,n)=>n.unusedTrailing.length-e.unusedTrailing.length||e.file.localeCompare(n.file)||e.startLine-n.startLine,limit:s})}function y(r){let a=u(r);return a==="typescript"||a==="tsx"||a==="javascript"}function h(r,a,l){return r?r.some(s=>s>a&&s<=l):!1}export{F as a};
|
|
2
|
+
//# sourceMappingURL=chunk-VXQNNXJE.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as f}from"./chunk-
|
|
1
|
+
import{a as f}from"./chunk-54HA4ZXH.js";import{c as d}from"./chunk-NH5ALKPW.js";import{l as c}from"./chunk-U7DSEKOM.js";import{d as u}from"./chunk-XYADIZHU.js";function L(e,n,i={}){let t=f(e,n);if(!t)return null;let r=h(e,t);if(!r||e.isIgnored(r.relative_path))return null;let s=[],m=0,l=g(e,r.relative_path),p=i.semantic===!1?new Map:c(e,l);for(let o of l){let a=S(e,r,o,p.get(o.symbolId)??new Set);m+=a,s.push({symbol:o.symbol,shortName:u(o.symbol),startLine:o.startLine,endLine:o.endLine,externalConsumers:a,riskLevel:b(a)})}return{file:r.relative_path,symbols:s,totalExternalConsumers:m}}function h(e,n){return e.get(`SELECT id, relative_path FROM documents
|
|
2
2
|
WHERE relative_path = ?
|
|
3
3
|
${e.pathExclusionsFor("documents")}
|
|
4
4
|
LIMIT 1`,n)??null}function g(e,n){return new d(e).definitionsForFile(n).sort((i,t)=>i.startLine-t.startLine||i.endLine-t.endLine)}function S(e,n,i,t){let r=e.all(`SELECT DISTINCT consumer_d.relative_path
|
|
@@ -8,4 +8,4 @@ import{a as f}from"./chunk-SJ6XSCG7.js";import{a as d}from"./chunk-7TJJY2C3.js";
|
|
|
8
8
|
WHERE m.symbol_id = ?
|
|
9
9
|
AND m.role != 1
|
|
10
10
|
AND c.document_id != ?`,i.symbolId,n.id);return new Set([...r.map(s=>s.relative_path),...[...t].filter(s=>s!==n.relative_path)]).size}function b(e){return e>10?"high":e>0?"medium":"low"}export{L as a};
|
|
11
|
-
//# sourceMappingURL=chunk-
|
|
11
|
+
//# sourceMappingURL=chunk-WER3B7MI.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as g}from"./chunk-
|
|
1
|
+
import{a as g}from"./chunk-54HA4ZXH.js";import{j as p}from"./chunk-U7DSEKOM.js";import{a as f}from"./chunk-FECYOO5O.js";import{d as u,e as _,i as N}from"./chunk-XYADIZHU.js";import{p as d}from"./chunk-X6D5IC6I.js";import{B as l,b as c}from"./chunk-YGAGTIDK.js";import{y as b}from"./chunk-L7SPDE73.js";import{a as I}from"./chunk-64MNV6AB.js";function Y(e,t,r={}){return T(e,t,r)?.map(s=>({symbol:s.symbol,shortName:s.shortName,fromFile:s.fromFile}))??[]}function Z(e,t){let r=f(e,t),s=O(e,t);if(s.length>0&&!x(r))return s;let o=k(e,t,r);return h(t)&&o.length>0?o:D([...s,...o])}function G(e,t,r={}){let s=g(e,t);if(!s)return[];let o=S(e,s),n=r.semantic===!1?null:E(e,s);return(n?R(n,o):o).filter(m=>!m.used).map(m=>({symbol:m.symbol,shortName:m.shortName,importedIn:m.importer}))}function R(e,t){let r=new Map;for(let o of t){let n=r.get(o.shortName);n?n.push(o):r.set(o.shortName,[o])}let s=e.map(o=>{let n=r.get(o.shortName),i=n?.shift();return n?.length===0&&r.delete(o.shortName),i?{...o,used:o.used||i.used}:o});return s.push(...[...r.values()].flat()),s}function O(e,t){return e.all(`SELECT DISTINCT gs.symbol, d.relative_path AS importer
|
|
2
2
|
FROM mentions m
|
|
3
3
|
JOIN chunks c ON m.chunk_id = c.id
|
|
4
4
|
JOIN documents d ON c.document_id = d.id
|
|
@@ -32,4 +32,4 @@ import{a as g}from"./chunk-SJ6XSCG7.js";import{h as p}from"./chunk-US44MEVU.js";
|
|
|
32
32
|
WHERE imp_d.relative_path = ?
|
|
33
33
|
AND m.role = 2
|
|
34
34
|
ORDER BY def_d.relative_path, gs.symbol`,t).filter(n=>!e.isIgnored(n.importer));if(o.length>0){let n=r.semantic===!1?[]:p(e,t);return o.map(i=>({symbol:i.symbol,shortName:u(i.symbol),fromFile:i.from_file??"(external)",importer:i.importer,used:i.used!==0||n.some(m=>m.isUsed&&m.sourcePath===i.from_file)}))}return null}function E(e,t){let r=p(e,t);return r.length>0?r.map(s=>{let o=y(s.importedName,s.localName,s.kind);return{symbol:o,shortName:o,fromFile:s.sourcePath??"(external)",importer:t,used:s.kind==="side-effect"?!0:s.isUsed}}):null}function S(e,t){let r=A(t,b(e,t));return d(e,t).map(s=>{let o=y(s.importedName,s.localName,s.kind),n=s.kind==="side-effect"||v(t,s)||r.has(s.localName??s.importedName)?!0:s.used;return{symbol:o,shortName:o,fromFile:s.sourcePath??"(external)",importer:t,used:n}})}function A(e,t){let r=new Set;if(l(e)!=="python")return r;let s=/(?:^|\n)\s*__all__\s*(?:\+?=)\s*[[(]([\s\S]*?)[\])]/g;for(let o of t.matchAll(s)){let n=o[1]??"";for(let i of n.matchAll(/(['"])([A-Za-z_]\w*)\1/g))r.add(i[2])}return r}function v(e,t){if(l(e)!=="rust"||t.used||t.kind==="side-effect")return!1;let r=t.localName??t.importedName;return r==="_"||/^[A-Z]/.test(r)}function y(e,t,r){return r==="namespace"&&e==="*"&&t?`* as ${t}`:r==="default"&&t?`default as ${t}`:r==="side-effect"?"(side effect import)":t&&t!==e?`${e} as ${t}`:e}function $(e){return/\.(?:c|h|cc|cpp|cxx|hpp|hh|hxx)$/i.test(e)}export{Y as a,Z as b,G as c};
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-WQTAC523.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{A as Se,B as Q,C as G,D as He,E,F as Je,G as xe,H as Ke,I as Xe,b as ne,g as Oe,h as Me,i as _,j as ve,k as $e,l as Ue,m as B,n as qe,o as H,p as Be,q as ze,r as Ve,s as A,t as J,u as L,v as fe,w as de,x as S,y as ge,z as We}from"./chunk-
|
|
1
|
+
import{A as Se,B as Q,C as G,D as He,E,F as Je,G as xe,H as Ke,I as Xe,b as ne,g as Oe,h as Me,i as _,j as ve,k as $e,l as Ue,m as B,n as qe,o as H,p as Be,q as ze,r as Ve,s as A,t as J,u as L,v as fe,w as de,x as S,y as ge,z as We}from"./chunk-YGAGTIDK.js";import{a as De,c as q,f as re,h as W,o as he,v as K,x as X,y as k}from"./chunk-L7SPDE73.js";function O(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ft(e){return e.replace(/'''[\s\S]*?'''/g,w).replace(/"""[\s\S]*?"""/g,w).replace(/#.*$/gm,w).replace(/\/\/.*$/gm,w).replace(/\/\*[\s\S]*?\*\//g,w).replace(/`(?:\\[\s\S]|[^`])*`/g,w).replace(/'(?:\\.|[^'\\\r\n])*'/g,w).replace(/"(?:\\.|[^"\\\r\n])*"/g,w)}function zn(e){return Qe(e,{maskStrings:!1})}function Vn(e){return Qe(e,{maskStrings:!0})}function Qe(e,r){let t="",n=0,s=e.length;for(;n<s;){if(e[n]==="/"&&e[n+1]==="/"){let i=e.indexOf(`
|
|
2
2
|
`,n),a=i===-1?s:i;t+=ye(e,n,a),n=a;continue}if(e[n]==="/"&&e[n+1]==="*"){let i=e.indexOf("*/",n+2),a=i===-1?s:i+2;t+=ye(e,n,a),n=a;continue}let o=e[n];if(o==="`"||o==="'"||o==='"'){let i=o,a=n+1;for(;a<s;){if(e[a]==="\\"){a+=2;continue}if(e[a]===i){a+=1;break}if(i!=="`"&&e[a]===`
|
|
3
3
|
`)break;a+=1}t+=r.maskStrings?ye(e,n,a):e.slice(n,a),n=a;continue}t+=o,n+=1}return t}function ye(e,r,t){let n="";for(let s=r;s<t;s+=1)n+=e[s]===`
|
|
4
4
|
`?`
|
|
@@ -10,4 +10,4 @@ import{A as Se,B as Q,C as G,D as He,E,F as Je,G as xe,H as Ke,I as Xe,b as ne,g
|
|
|
10
10
|
`:" ",s+=1;continue}let o=e[s];if(o===";"){let i=ie(e,s);n+=ct(e.slice(s,i)),s=i;continue}if(o==='"'){let i=ee(e,s,0).index;n+=ct(e.slice(s,i)),s=i;continue}n+=o,s+=1}return n}function _r(e){let r=0;for(;r<e.length&&(r=Ae(e,r),!(r>=e.length));){let t=le(e,r);if(!t){r+=1;continue}if(gr(t.form))return t.form;r=t.index}return null}function le(e,r){let t=Ae(e,r);if(e.startsWith("#?@",t)||e.startsWith("#?",t))return Rr(e,t);if(e.startsWith("#_",t)){let s=le(e,t+2);return s?{form:{type:"atom",text:"",start:t,end:s.index},index:s.index}:null}for(;Ce(e[t]);)t+=1;let n=e[t];return n?n==="("?Re(e,t,"list",")"):n==="["?Re(e,t,"vector","]"):n==="{"?Re(e,t,"map","}"):n==='"'?{form:{type:"atom",text:"",start:t,end:ee(e,t,0).index},index:ee(e,t,0).index}:Tr(e,t):null}function Rr(e,r){let t=e.startsWith("#?@",r)?3:2,n=le(e,r+t);return n?{form:{type:"list",children:n.form.type==="list"||n.form.type==="vector"||n.form.type==="map"?Er(n.form.children):[],start:r,end:n.index},index:n.index}:null}function Er(e){let r=[];for(let t=0;t<e.length;t+=2){let n=P(e[t]),s=e[t+1];n?.startsWith(":")&&s&&r.push(s)}return r}function Re(e,r,t,n){let s=[],o=r+1;for(;o<e.length;){if(o=Ae(e,o),e[o]===n)return{form:{type:t,children:s,start:r,end:o+1},index:o+1};let i=le(e,o);if(!i){o+=1;continue}i.form.type==="atom"&&i.form.text===""||s.push(i.form),o=i.index}return{form:{type:t,children:s,start:r,end:e.length},index:e.length}}function Tr(e,r){let t=r;for(;t<e.length&&!Pe(e[t]);)t+=1;return{form:{type:"atom",text:e.slice(r,t),start:r,end:t},index:t}}function Ae(e,r){let t=r;for(;t<e.length;){let n=e[t];if(/\s|,/.test(n)){t+=1;continue}if(n===";"){t=ie(e,t);continue}break}return t}function ct(e){return e.replace(/[^\r\n]/g," ")}function pt(e,r,t){let n=[];for(let s of t.matchAll(/^[ \t]*import\s+['"]([^'"]+)['"](?:\s+as\s+([A-Za-z_]\w*))?[\s\S]*?;$/gm)){let o=s[1]?.trim(),i=s[2]?.trim()??null,a=s[0];if(!o||!a||typeof s.index!="number")continue;let c=j(t,s.index,s.index+a.length);n.push({importedName:o,localName:i,sourcePath:ge(e,r,o),kind:i?"namespace":"side-effect",used:i?x(c,i):!0,usedMembers:i?z(c,i):[]})}return n}function ut(e,r,t){let n=[];for(let s of t.matchAll(/^[ \t]*export\s+['"]([^'"]+)['"][\s\S]*?;$/gm)){let o=s[1]?.trim();o&&n.push({specifier:o,sourcePath:ge(e,r,o)})}return n}function mt(e,r,t){return ae(e,r,{csharp:n=>Ar(e,r,n),vb:n=>Fr(e,r,n)},()=>{let n=ze(r)?/^[ \t]*Imports\s+(.+?)\s*$/gm:/^[ \t]*using\s+(.+?)\s*;$/gm;return I(t,n,(s,o)=>{let i=s[1]?.trim();if(!i)return[];let[a,c]=i.split(/\s*=\s*/),l=!!c,p=(l?c:a)?.trim()??i,u=p.split(".").pop()??p,m=l?a?.trim()??u:u;return[R(e,r,o,p,u,m,S(e,p,B))]})})}function Fr(e,r,t){let n=g(t,new Set(["imports_statement"])),s=[];for(let o of t.rootNode.descendantsOfType("imports_statement")){let i=o.namedChildren.filter(m=>m.type==="namespace_name");if(i.length===0)continue;let a=i[i.length-1],c=i.length>1?i[0]:null,l=a.text,p=l.split(".").pop()??l,u=c?.text??p;s.push(d(p,u,S(e,l,B),n,c?"namespace":"named"))}return s}function Ar(e,r,t){let n=g(t,new Set(["using_directive"])),s=[];for(let o of t.rootNode.descendantsOfType("using_directive")){let i=o.namedChildren;if(i.length===0)continue;let a=null,c;i.length>=2&&i[0].type==="identifier"&&(i[1].type==="qualified_name"||i[1].type==="identifier")?(a=i[0],c=i[1]):c=i[i.length-1];let l=c.text,p=l.split(".").pop()??l,u=a?.text??p;s.push(d(p,u,S(e,l,B),n,a?"namespace":"named"))}return s}var Lr=q("vue-non-script-identifiers",{clearGroups:["whole-project","source-file"]});function ft(e,r){return Lr.get(e,r,()=>{let t=new Set,n=k(e,r);if(!n)return t;let o=n.replace(/<script\b[^>]*>[\s\S]*?<\/script>/g,i=>i.replace(/[^\r\n]/g," ")).replace(/<!--[\s\S]*?-->/g,i=>i.replace(/[^\r\n]/g," ")).replace(/\/\*[\s\S]*?\*\//g,i=>i.replace(/[^\r\n]/g," "));for(let i of o.matchAll(/[A-Za-z_$][\w$]*/g))t.add(i[0]);return t})}function Le(e,r,t){return C(e,r,n=>wr(e,r,n),()=>kr(e,r,t))}function kr(e,r,t){return Vr(t).flatMap(n=>Wr(e,r,n.clause,n.specifier,n.start,n.end,t))}function wr(e,r,t){let n=jr(e,r,t),s=[];for(let o of t.rootNode.descendantsOfType("import_statement"))s.push(...Dr(e,r,t,o,n));return s}function jr(e,r,t){let n=g(t,new Set(["import_statement"]));if(G(r))for(let s of ft(e,r))n.add(s);return n}function Dr(e,r,t,n,s){let o=Ur(n);if(!o)return[];let i=A(e,r,o),a=b(n,"import_clause");return a?Or(t,a,i,s,qr(n.text)):[M("*",i)]}function Or(e,r,t,n,s){let o=[];for(let i of r.namedChildren)if(i.type==="identifier")o.push(Mr(i.text,t,n,s));else if(i.type==="namespace_import"){let a=vr(e,i,t,n,s);a&&o.push(a)}else i.type==="named_imports"&&o.push(...$r(i,t,n,s));return o}function Mr(e,r,t,n){return d("default",e,r,t,"default",{isTypeOnly:n})}function vr(e,r,t,n,s){let i=b(r,"identifier")?.text??"";if(!i)return null;let a=zr(e,i);return v("*",t,{localName:i,usedMembers:a,isTypeOnly:s,used:a.length>0||n.has(i)})}function $r(e,r,t,n){let s=[];for(let o of e.namedChildren){if(o.type!=="import_specifier")continue;let i=o.namedChild(0),a=o.namedChild(1);if(!i)continue;let c=i.text,l=a?.text??c;s.push(d(c,l,r,t,"named",{isTypeOnly:n||Br(o.text)}))}return s}function Ur(e){let r=b(e,"string");if(!r)return null;let t=b(r,"string_fragment");return t?t.text:null}function qr(e){return/^\s*import\s+type\b/.test(e)}function Br(e){return/^\s*type\b/.test(e.trim())}function zr(e,r){let t=new Set;for(let n of e.rootNode.descendantsOfType("member_expression")){let s=n.namedChild(0),o=n.namedChild(1);!s||!o||s.type!=="identifier"||s.text!==r||(o.type==="property_identifier"||o.type==="identifier")&&t.add(o.text)}return[...t]}function Vr(e){let r=[],t=/^[ \t]*import\s+([\s\S]*?)\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let s of e.matchAll(t)){let o=s[0],i=s[1],a=s[2];!o||!a||typeof s.index!="number"||r.push({clause:i,specifier:a,start:s.index,end:s.index+o.length})}let n=/^[ \t]*import\s+['"]([^'"]+)['"]\s*;?/gm;for(let s of e.matchAll(n)){let o=s[0],i=s[1];!o||!i||typeof s.index!="number"||r.push({clause:null,specifier:i,start:s.index,end:s.index+o.length})}return r.sort((s,o)=>s.start-o.start)}function Wr(e,r,t,n,s,o,i){let a=A(e,r,n),c=j(i,s,o);return t?Hr(t).map(p=>({...p,sourcePath:a})).map(p=>{if(p.kind==="namespace"){let u=z(c,p.localName);return v(p.importedName,p.sourcePath,{localName:p.localName,usedMembers:u,used:u.length>0||x(c,p.localName),isTypeOnly:p.isTypeOnly})}return p.kind==="side-effect"?M(p.importedName,p.sourcePath):F(p.importedName,p.localName??"",p.sourcePath,p.localName?x(c,p.localName):!1,p.kind,[],{isTypeOnly:p.isTypeOnly})}):[M("*",a)]}function Hr(e){let r=e.trim(),t=/^type\b/.test(r),n=r.replace(/^type\s+/,""),[s,o]=Jr(n),i=[];return s&&i.push(...dt(s,t)),o&&i.push(...dt(o,t)),i}function dt(e,r){let t=e.trim();if(!t)return[];if(t.startsWith("{")){let n=t.slice(1,-1).trim();return n?y(n).map(s=>{let o=s.trim(),i=r||/^type\b/.test(o),a=o.replace(/^type\s+/,""),[c,l]=a.split(/\s+as\s+/);return{importedName:c.trim(),localName:(l??c).trim(),kind:"named",isTypeOnly:i}}):[]}return t.startsWith("* as ")?[{importedName:"*",localName:t.slice(5).trim(),kind:"namespace",isTypeOnly:r}]:[{importedName:"default",localName:t,kind:"default",isTypeOnly:r}]}function Jr(e){let r=0;for(let t=0;t<e.length;t++){let n=e[t];if(n==="{"&&r++,n==="}"&&r--,n===","&&r===0)return[e.slice(0,t).trim(),e.slice(t+1).trim()]}return[e.trim(),null]}function ke(e,r,t){let n=E(e,r);return n?Zr(e,r,n):Kr(e,r,t)}function Kr(e,r,t){return[...Xr(e,r,t),...Qr(e,r,t),...Gr(e,r,t)]}function Xr(e,r,t){let n=[],s=/^[ \t]*export\s+(?:type\s+)?\{([\s\S]*?)\}\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let o of t.matchAll(s)){if(typeof o.index!="number")continue;let i=o[1]??"",a=o[2]??"",c=y(i).map(u=>Yr(u.trim())).filter(u=>!!u),l=V(t,o.index),p=V(t,o.index+o[0].length-1);n.push({kind:"named",sourcePath:A(e,r,a),names:c,startLine:l,endLine:p})}return n}function Qr(e,r,t){let n=[],s=/^[ \t]*export\s+\*\s+as\s+(\w+)\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let o of t.matchAll(s)){if(typeof o.index!="number")continue;let i=o[2]??"",a=V(t,o.index),c=V(t,o.index+o[0].length-1);n.push({kind:"star-as",sourcePath:A(e,r,i),names:[],startLine:a,endLine:c})}return n}function Gr(e,r,t){let n=[],s=/^[ \t]*export\s+\*\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let o of t.matchAll(s)){if(typeof o.index!="number")continue;let i=o[1]??"",a=V(t,o.index),c=V(t,o.index+o[0].length-1);n.push({kind:"star",sourcePath:A(e,r,i),names:[],startLine:a,endLine:c})}return n}function Yr(e){if(!e)return null;let r=e.replace(/^type\s+/,"").trim();if(!r)return null;let t=r.match(/^(\w+)\s+as\s+(\w+)$/);if(t)return t[2]??null;let n=r.match(/^(\w+)$/);return n?n[1]??null:null}function V(e,r){let t=0;for(let n=0;n<r&&n<e.length;n++)e.charCodeAt(n)===10&&t++;return t}function Zr(e,r,t){let n=[];for(let s of t.rootNode.descendantsOfType("export_statement")){let o=en(e,r,s);if(o===void 0)continue;let i=s.startPosition.row,a=s.endPosition.row,c=tn(s,o,i,a);n.push(c)}return n}function en(e,r,t){let n=b(t,"string");if(!n)return;let s=b(n,"string_fragment");if(s)return A(e,r,s.text)}function tn(e,r,t,n){let s=b(e,"export_clause");if(s){let i=[];for(let a of s.namedChildren){if(a.type!=="export_specifier")continue;let c=a.namedChild(0),l=a.namedChild(1);c&&i.push((l??c).text)}return{kind:"named",sourcePath:r,names:i,startLine:t,endLine:n}}return b(e,"namespace_export")?{kind:"star-as",sourcePath:r,names:[],startLine:t,endLine:n}:{kind:"star",sourcePath:r,names:[],startLine:t,endLine:n}}function gt(e,r,t){return ae(e,r,{java:n=>rn(e,r,n),kotlin:n=>nn(e,r,n),scala:n=>sn(e,r,n)},()=>I(t,/^[ \t]*import\s+(?:static\s+)?(.+?)\s*;?$/gm,(n,s)=>{let o=n[1]?.trim();return o?on(e,r,o,s):[]}))}function rn(e,r,t){let n=g(t,new Set(["import_declaration"])),s=[];for(let o of t.rootNode.descendantsOfType("import_declaration")){let i=o.children.some(u=>u.type==="asterisk"),c=o.namedChildren.find(u=>u.type==="scoped_identifier")??o.namedChildren.find(u=>u.type==="identifier");if(!c)continue;let l=c.text;if(i){s.push(v("*",S(e,l,_)));continue}let p=l.split(".").pop()??l;s.push(d(p,p,S(e,l,_),n))}return s}function nn(e,r,t){let n=g(t,new Set(["import_header","import_list"])),s=[];for(let o of t.rootNode.descendantsOfType("import_header")){let i=o.namedChildren.find(f=>f.type==="identifier");if(!i)continue;let a=o.namedChildren.some(f=>f.type==="wildcard_import"),c=o.namedChildren.find(f=>f.type==="import_alias");if(a){s.push(v("*",S(e,i.text,_)));continue}let l=i.text,p=l.split(".").pop()??l,m=c?.namedChild(0)?.text??p;s.push(d(p,m,S(e,l,_),n))}return s}function sn(e,r,t){let n=g(t,new Set(["import_declaration"])),s=[];for(let o of t.rootNode.descendantsOfType("import_declaration")){let i=o.namedChildren.find(u=>u.type==="namespace_selectors"||u.type==="namespace_wildcard"),a=o.namedChildren.filter(u=>u!==i&&(u.type==="identifier"||u.type==="stable_identifier")),c=a.map(u=>u.text).join(".");if(!c)continue;if(i?.type==="namespace_wildcard"){s.push(v("*",S(e,c,_)));continue}if(i?.type==="namespace_selectors"){for(let u of i.namedChildren)if(u.type==="arrow_renamed_identifier"){let[m,f]=u.namedChildren;if(!m)continue;let h=m.text,$=f?.text??h;if(h==="_")continue;s.push(d(h,$,S(e,`${c}.${h}`,_),n))}else if(u.type==="identifier"){let m=u.text;s.push(d(m,m,S(e,`${c}.${m}`,_),n))}continue}let l=a[a.length-1]?.text??c,p=a.slice(0,-1).map(u=>u.text).join(".")||c;s.push(d(l,l,S(e,p&&a.length>1?`${p}.${l}`:c,_),n))}return s}function on(e,r,t,n){if(t.includes("{")&&t.includes("}")){let s=t.slice(0,t.indexOf("{")).replace(/\.$/,"").trim(),o=t.slice(t.indexOf("{")+1,t.lastIndexOf("}")).trim();return y(o).flatMap(i=>{let a=i.trim();if(!a)return[];let[c,l]=a.includes("=>")?a.split(/\s*=>\s*/):a.split(/\s+as\s+/),p=c?.trim();if(!p||p==="_")return[];let u=(l??p.split(".").pop()??p).trim(),m=p==="_"?s:`${s}.${p}`.replace(/\.\./g,".");return[R(e,r,n,m,p,u)]})}return[R(e,r,n,t,t.split(".").pop()??t,t.split(".").pop()??t)]}function ht(e,r,t){return C(e,r,n=>an(e,r,n),()=>I(t,/^[ \t]*use\s+(.+?)\s*;$/gm,(n,s)=>{let o=n[1]?.trim();return o?y(o).flatMap(i=>{let a=i.trim();if(!a)return[];let[c,l]=a.split(/\s+as\s+/i),p=c?.trim()??a,u=p.split("\\").pop()??p,m=(l??u).trim();return[R(e,r,s,p,u,m,S(e,p.replace(/\\/g,"."),H))]}):[]}))}function an(e,r,t){let n=g(t,new Set(["namespace_use_declaration"])),s=[],o=(i,a,c)=>{s.push(d(a,c,S(e,i.replace(/\\/g,"."),H),n))};for(let i of t.rootNode.descendantsOfType("namespace_use_declaration")){let a=i.namedChildren.find(c=>c.type==="namespace_use_group");if(a){let c=i.namedChildren.find(l=>l.type==="namespace_name")?.text??"";for(let l of a.namedChildren){if(l.type!=="namespace_use_clause")continue;let{importedName:p,localName:u,qualified:m}=St(l,c);p&&o(m,p,u)}continue}for(let c of i.namedChildren){if(c.type!=="namespace_use_clause")continue;let{importedName:l,localName:p,qualified:u}=St(c,"");l&&o(u,l,p)}}return s}function St(e,r){let t=e.namedChildren.find(l=>l.type==="qualified_name"),n=e.namedChildren.filter(l=>l.type==="name"),s="";t?s=t.text:n.length>=1&&(s=n[0].text);let o=t&&n.length>0?n[n.length-1]:null,i=s.split("\\").pop()??s,a=o?.text??i,c=r?`${r}\\${s}`:s;return{importedName:i,localName:a,qualified:c}}function yt(e,r,t){return C(e,r,n=>cn(e,r,n),()=>pn(t).flatMap(n=>mn(e,r,n,t)))}function cn(e,r,t){let n=g(t,new Set(["import_statement","import_from_statement"])),s=[];for(let o of t.rootNode.descendantsOfType("import_statement"))for(let i of o.namedChildren){let a=xt(i);if(!a)continue;let c=J(e,r,a.qualifiedName);s.push({importedName:a.qualifiedName,localName:a.localName,sourcePath:c,kind:"namespace",used:n.has(a.localName),usedMembers:[]})}for(let o of t.rootNode.descendantsOfType("import_from_statement")){let i=o.namedChild(0);if(!i)continue;let a=ln(i);if(a===null)continue;let c=J(e,r,a);for(let l=1;l<o.namedChildCount;l+=1){let p=o.namedChild(l);if(p.type==="wildcard_import"){s.push({importedName:"*",localName:null,sourcePath:c,kind:"side-effect",used:!0,usedMembers:[]});continue}let u=xt(p);u&&s.push({importedName:u.qualifiedName,localName:u.localName,sourcePath:c,kind:"named",used:n.has(u.localName),usedMembers:[]})}}return s}function xt(e){if(e.type==="aliased_import"){let r=e.namedChild(0),t=e.namedChild(1);return!r||!t?null:{qualifiedName:r.text,localName:t.text}}if(e.type==="dotted_name"){let r=e.text;return{qualifiedName:r,localName:r.split(".")[0]??r}}return e.type==="identifier"?{qualifiedName:e.text,localName:e.text}:null}function ln(e){if(e.type==="dotted_name")return e.text;if(e.type==="relative_import"){let r=b(e,"import_prefix")?.text??"",t=b(e,"dotted_name")?.text??"";return`${r}${t}`}return null}function pn(e){let r=e.split(`
|
|
11
11
|
`),t=[],n=0;for(let s=0;s<r.length;s++){let o=r[s],i=o.trimStart(),a=n;if(n+=o.length+1,!i.startsWith("import ")&&!i.startsWith("from "))continue;let c=o,l=a+o.length,p=be(o);for(;s+1<r.length&&(p>0||c.trimEnd().endsWith("\\"));){s++;let m=r[s];c+=`
|
|
12
12
|
${m}`,l+=1+m.length,p+=be(m),n+=m.length+1}let u=un(c);u&&t.push({...u,start:a,end:l})}return t}function un(e){let r=e.replace(/\\\s*\n/g," ").trim();if(r.startsWith("import "))return{kind:"import",module:null,clause:r.slice(7).trim()};let t=r.match(/^from\s+([.\w]+)\s+import\s+([\s\S]+)$/);if(!t)return null;let n=t[2].trim();return n.startsWith("(")&&n.endsWith(")")&&(n=n.slice(1,-1).trim()),{kind:"from",module:t[1],clause:n}}function mn(e,r,t,n){let s=j(n,t.start,t.end),o=t.clause.replace(/\n/g," ").trim();if(t.kind==="import")return y(o).flatMap(c=>{let l=c.trim().replace(/,$/,"");if(!l)return[];let[p,u]=l.split(/\s+as\s+/),m=p.trim(),f=(u??m.split(".")[0]??m).trim(),h=J(e,r,m),$=z(s,f);return[{importedName:m,localName:f,sourcePath:h,kind:"namespace",used:x(s,f)||$.length>0,usedMembers:$}]});let i=t.module?J(e,r,t.module):null,a=[];for(let c of y(o)){let l=c.trim().replace(/,$/,"");if(!l)continue;if(l==="*"){a.push({importedName:"*",localName:null,sourcePath:i,kind:"side-effect",used:!0,usedMembers:[]});continue}let[p,u]=l.split(/\s+as\s+/),m=(u??p).trim();a.push({importedName:p.trim(),localName:m,sourcePath:i,kind:"named",used:x(s,m),usedMembers:[]})}return a}import{basename as fn}from"path";function bt(e,r,t){return C(e,r,n=>gn(e,r,n),()=>dn(e,r,t))}function dn(e,r,t){return I(t,/^[ \t]*(require_relative|require)\s+["']([^"']+)["']\s*$/gm,(n,s)=>{let o=n[1],i=n[2];if(!o||!i)return[];let a=o==="require_relative"?fe(e,r,i):null;if(a){let c=Nt(i);return[F(c,c,a,x(s,c))]}return[M(i,a)]})}function gn(e,r,t){let n=g(t,new Set([])),s=[],o=new Set(["require","require_relative","load"]);for(let i of t.rootNode.descendantsOfType("call")){let a=i.namedChild(0);if(!a||a.type!=="identifier"||!o.has(a.text))continue;let l=i.namedChildren.find(f=>f.type==="argument_list")?.namedChild(0);if(!l||l.type!=="string")continue;let u=l.namedChildren.find(f=>f.type==="string_content")?.text;if(!u)continue;let m=a.text==="require_relative"?fe(e,r,u):null;if(m){let f=Nt(u);s.push(d(f,f,m,n))}else s.push(M(u,m))}return s}function Nt(e){return Xe(fn(e).replace(/\.[^.]+$/,""),/_/)}function It(e,r,t){return C(e,r,n=>Sn(e,r,n),()=>I(t,/^[ \t]*use\s+(.+?)\s*;$/gm,(n,s)=>{let o=n[1]?.trim();return o?hn(e,r,o,s):[]}))}function Sn(e,r,t){let n=g(t,new Set(["use_declaration"])),s=[];for(let o of t.rootNode.descendantsOfType("use_declaration")){let i=o.namedChild(0);if(i)for(let a of te(i,"")){if(!a.importedName||a.importedName==="*")continue;let c=L(e,r,a.qualifiedName)??L(e,r,a.qualifiedName.split("::").slice(0,-1).join("::"));s.push(d(a.importedName,a.localName,c,n))}}return s}function te(e,r){switch(e.type){case"identifier":case"super":case"crate":{let t=e.text;return[{qualifiedName:pe(r,t),importedName:t,localName:t}]}case"self":{let t=r.split("::").filter(Boolean).pop()??"self";return[{qualifiedName:r||"self",importedName:t,localName:t}]}case"scoped_identifier":{let t=e.text,n=t.split("::").pop()??t;return[{qualifiedName:pe(r,t),importedName:n,localName:n}]}case"scoped_use_list":{let t=e.namedChild(0),n=e.namedChild(1);if(!t||!n)return[];let s=pe(r,t.text),o=[];for(let i of n.namedChildren)o.push(...te(i,s));return o}case"use_list":{let t=[];for(let n of e.namedChildren)t.push(...te(n,r));return t}case"use_as_clause":{let t=e.namedChild(0),n=e.namedChild(1);if(!t||!n)return[];let s=te(t,r),o=n.text;return s.map(i=>({...i,localName:o}))}case"use_wildcard":{let t=e.namedChild(0),n=t?t.text:"";return[{qualifiedName:pe(r,`${n}::*`),importedName:"*",localName:"*"}]}default:return[]}}function pe(e,r){return e?r?`${e}::${r}`:e:r}function hn(e,r,t,n){let s=t.trim();if(s.includes("{")&&s.includes("}")){let p=s.slice(0,s.indexOf("{")).replace(/::$/,"").trim(),u=s.slice(s.indexOf("{")+1,s.lastIndexOf("}")).trim();return y(u).flatMap(m=>{let f=m.trim();if(!f)return[];if(f==="self"){let me=p.split("::").filter(Boolean).pop();return me?[R(e,r,n,p,me,me)]:[]}let[h,$]=f.split(/\s+as\s+/),U=h?.trim();if(!U)return[];let Et=($??U.split("::").pop()??U).trim(),Tt=`${p}::${U}`.replace(/::::/g,"::");return[R(e,r,n,Tt,U.split("::").pop()??U,Et,L(e,r,p))]})}let[o,i]=s.split(/\s+as\s+/),a=o?.trim()??s,c=(i??a.split("::").pop()??a).trim(),l=L(e,r,a)??L(e,r,a.split("::").slice(0,-1).join("::"));return[R(e,r,n,a,a.split("::").pop()??a,c,l)]}function Ct(e,r,t){let n=E(e,r);if(n)return xn(e,r,n);let s=[];for(let o of t.matchAll(/^[ \t]*pub\s+use\s+(.+?)\s*;$/gm)){let i=o[1]?.trim();i&&s.push(...bn(e,r,i))}return s}function xn(e,r,t){let n=[];for(let s of t.rootNode.descendantsOfType("use_declaration")){if(!yn(s))continue;let o=s.namedChildren.find(i=>i.type!=="visibility_modifier");if(o)for(let i of te(o,""))i.importedName&&n.push(we(e,r,i.qualifiedName))}return n}function yn(e){for(let r of e.children)if(r.type==="visibility_modifier"&&r.text.startsWith("pub"))return!0;return!1}function bn(e,r,t){let n=t.trim();if(n.includes("{")&&n.includes("}")){let s=n.slice(0,n.indexOf("{")).replace(/::$/,"").trim(),o=n.slice(n.indexOf("{")+1,n.lastIndexOf("}")).trim();return y(o).flatMap(i=>{let a=i.trim();if(!a||a==="self")return[];let[c]=a.split(/\s+as\s+/),l=`${s}::${c?.trim()??a}`.replace(/::::/g,"::");return[we(e,r,l)]})}return[we(e,r,n)]}function we(e,r,t){return{specifier:t,sourcePath:L(e,r,t)??L(e,r,t.split("::").slice(0,-1).join("::"))}}function D({language:e,extensions:r,imports:t,parseImports:n}){return{language:e,extensions:r,capabilities:{imports:t},parseImports:n}}function Pt(e,r){let t=r.toLowerCase();for(let n of e)for(let s of n.extensions)if(t.endsWith(s))return n;return null}var Nn={language:"javascript",extensions:Oe,capabilities:{imports:"ast-with-regex-fallback",reExports:"ast-with-regex-fallback"},parseImports:Le,parseReExports:ke},In=D({language:"python",extensions:Me,imports:"ast-with-regex-fallback",parseImports:yt}),Cn=D({language:"jvm",extensions:_,imports:"ast-dispatch-with-regex-fallback",parseImports:gt}),Pn={language:"rust",extensions:ve,capabilities:{imports:"ast-with-regex-fallback",exports:"ast-with-regex-fallback"},parseImports:It,parseExports:Ct},_n=D({language:"ruby",extensions:$e,imports:"ast-with-regex-fallback",parseImports:bt}),Rn=D({language:"c/cpp",extensions:Ue,imports:"ast-with-regex-fallback",parseImports:at}),En=D({language:"dotnet",extensions:B,imports:"ast-dispatch-with-regex-fallback",parseImports:mt}),Tn={language:"dart",extensions:qe,capabilities:{imports:"regex-only",exports:"regex-only"},parseImports:pt,parseExports:ut},Fn=D({language:"php",extensions:H,imports:"ast-with-regex-fallback",parseImports:ht}),An=D({language:"clojure",extensions:Be,imports:"regex-only",parseImports:lt}),Ln=[Nn,In,Cn,Pn,_n,Rn,En,Tn,Fn,An];function ue(e){return Pt(Ln,e)}var je={clearGroups:["whole-project","source-file"]},kn=q("source-imports",je),wn=q("source-exports",je),jn=q("source-reexports",je),_t=K({kind:"source-imports",invalidation:X("source-imports"),serialize:Dn,deserialize:On}),Rt=K({kind:"source-reexports",invalidation:X("source-reexports"),serialize:Mn,deserialize:vn});function Xo(e,r){let t=ne(r);return jn.get(e,t,()=>{let n=ue(t);if(!n?.parseReExports)return[];let s=k(e,t);if(!s)return[];let o=W(e,t,s),i=Se(e),a=Rt.read(e,t,o);if(a?.resolutionFingerprint===i)return a.reExports;let c=n.parseReExports(e,t,s);return Rt.write(e,t,o,{resolutionFingerprint:i,reExports:c}),c})}function Qo(e,r){let t=ne(r);return kn.get(e,t,()=>{let n=ue(t);if(!n)return[];let s=k(e,t);if(!s)return[];let o=W(e,t,s),i=Se(e),a=_t.read(e,t,o);if(a?.resolutionFingerprint===i)return a.imports;let c=n.parseImports(e,t,s);return _t.write(e,t,o,{resolutionFingerprint:i,imports:c}),c})}function Go(e,r){let t=ne(r);return wn.get(e,t,()=>{let n=ue(t);if(!n?.parseExports)return[];let s=k(e,t);return s?n.parseExports(e,t,s):[]})}function Dn(e){return JSON.stringify(e)}function On(e){try{let r=JSON.parse(e);return!he(r)||typeof r.resolutionFingerprint!="string"||!Array.isArray(r.imports)?null:{resolutionFingerprint:r.resolutionFingerprint,imports:r.imports}}catch{return null}}function Mn(e){return JSON.stringify(e)}function vn(e){try{let r=JSON.parse(e);return!he(r)||typeof r.resolutionFingerprint!="string"||!Array.isArray(r.reExports)?null:{resolutionFingerprint:r.resolutionFingerprint,reExports:r.reExports}}catch{return null}}export{O as a,Ft as b,zn as c,Vn as d,be as e,T as f,Yt as g,nr as h,sr as i,ar as j,cr as k,lr as l,pr as m,pe as n,Xo as o,Qo as p,Go as q};
|
|
13
|
-
//# sourceMappingURL=chunk-
|
|
13
|
+
//# sourceMappingURL=chunk-X6D5IC6I.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as o}from"./chunk-B75HZHUP.js";import{s as u}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as o}from"./chunk-B75HZHUP.js";import{s as u}from"./chunk-L7SPDE73.js";function P(e){let t=m(e.profile?.name),r=()=>{let d=e.candidates(),a=e.filterCandidate?d.filter(e.filterCandidate):d,C=e.orderCandidates?[...a].sort(e.orderCandidates):a,i=o(C,e.scanLimit);t={pipeline:e.profile?.name,loadedCandidates:d.length,filteredCandidates:a.length,scannedCandidates:i.length,evaluatedCandidates:0,matchedResults:0,emittedResults:0,scanLimitApplied:i.length<a.length,resultLimitApplied:!1};let f=e.prepare?.(i)??void 0,n=[];for(let c of i){t.evaluatedCandidates+=1;let s=e.evaluate(c,f);s&&n.push(s)}t.matchedResults=n.length,e.orderResults&&n.sort(e.orderResults);let l=typeof e.limit=="number"?n.slice(0,e.limit):n;return t.emittedResults=l.length,t.resultLimitApplied=l.length<n.length,e.onProfile?.({...t}),l};return e.profile?u(`candidate-pipeline:${e.profile.name}`,r,()=>({...p(e.profile?.metadata),...t})):r()}function m(e){return{pipeline:e,loadedCandidates:0,filteredCandidates:0,scannedCandidates:0,evaluatedCandidates:0,matchedResults:0,emittedResults:0,scanLimitApplied:!1,resultLimitApplied:!1}}function p(e){return typeof e=="function"?e():e??{}}export{P as a};
|
|
2
|
+
//# sourceMappingURL=chunk-XLTP42QA.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as M}from"./chunk-XLTP42QA.js";import{c as C}from"./chunk-3MJ5YA4Y.js";import{b as f,c as I}from"./chunk-NH5ALKPW.js";import{h as d}from"./chunk-U7DSEKOM.js";import{d as h}from"./chunk-MTDBHTSF.js";import{d as g}from"./chunk-XYADIZHU.js";import{f as y}from"./chunk-X6D5IC6I.js";var x=new Set(h());function N(e,n){let{scope:o,minLoc:r=10,limit:i=30,scanLimit:t}=n??{},s=new I(e);return M({candidates:()=>s.productionCallableDefinitions({scope:o,minLoc:r,requireFunctionLikeSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof t=="number"&&t>0}),scanLimit:t,filterCandidate:S,profile:{name:"complexity-hotspots"},prepare:a=>{let l=B(e,a),m=n?.semantic!==!1,c=m?d(e):null;c?.materializeReferences(a,{prefetchCallees:!0});let u=s.crossFileCallerMap(a,{semantic:!1});return{callerMap:c?f(u,c.callerMap(a)):u,calleeMap:s.calleeMap(a,{semantic:m}),languageByFile:l,clojureCallableIds:D(e,a,l),branchEstimates:C(e,a)}},evaluate:(a,l)=>L(a,l,r),orderResults:(a,l)=>l.score-a.score||l.loc-a.loc,limit:i})}function S(e){return e.symbol.startsWith("rust-analyzer ")?typeof e.kind=="number"&&x.has(e.kind):!0}function L(e,n,o){if(n.languageByFile.get(e.relativePath)==="clojure"&&!n.clojureCallableIds.has(e.symbolId))return null;let r=e.endLine-e.startLine+1;if(r<o)return null;let i=n.callerMap.get(e.symbolId)?.size??0,t=n.calleeMap.get(e.symbolId)??[],s=new Set,a=new Set;for(let p of t){let b=`${p.symbol}|${p.file}`;s.add(b),p.file!==e.relativePath&&a.add(b)}let l=a.size,m=s.size,c=n.branchEstimates.get(e.symbolId)??{branches:0,estimateBasis:"regex-fallback"},u=c.branches+1;return{symbol:e.symbol,shortName:g(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:r,fanIn:i,fanOut:l,calleeCount:m,branches:c.branches,estimateBasis:c.estimateBasis,score:Math.round(r/50*(i/5)*Math.max(l/5,1)*Math.max(u/5,1)*100)/100}}function B(e,n){let o=[...new Set(n.map(t=>t.relativePath))];if(o.length===0)return new Map;let r=o.map(()=>"?").join(", "),i=e.all(`SELECT relative_path, language
|
|
2
|
+
FROM documents
|
|
3
|
+
WHERE relative_path IN (${r})`,...o);return new Map(i.map(t=>[t.relative_path,t.language?.toLowerCase()??null]))}function D(e,n,o){let r=new Set,i=new Map;for(let t of n){if(o.get(t.relativePath)!=="clojure")continue;let s=i.get(t.relativePath);s||(s=new Set((y(e,t.relativePath)?.callables??[]).map(a=>`${a.name}:${a.startLine}`)),i.set(t.relativePath,s)),s.has(`${t.leaf}:${t.startLine}`)&&r.add(t.symbolId)}return r}export{N as a};
|
|
4
|
+
//# sourceMappingURL=chunk-XTX6QHOF.js.map
|