@magic5644/graph-it-live 1.9.1 → 1.9.2
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/dist/graph-it.js +474 -345
- package/dist/mcpServer.mjs +38 -38
- package/dist/mcpWorker.js +1 -1
- package/docs/CLI.md +71 -0
- package/docs/README.md +4 -2
- package/package.json +5 -2
package/dist/mcpWorker.js
CHANGED
|
@@ -42158,7 +42158,7 @@ Node text: ${this.#t}`),new I.errors.InvalidOperationError(i)}return this.#e}con
|
|
|
42158
42158
|
`)}function Izt(d){let i=typeof d.name=="string"?d.name:void 0,s=typeof d.message=="string"?d.message:void 0,m=typeof d.stack=="string"?d.stack:void 0;if(!i&&!s)return null;let u=`${i??"Error"}: ${s??""}`;return m?`${u}
|
|
42159
42159
|
${m}`:u}function Dzt(d){if(typeof d=="string")return d;if(d instanceof Error)return`${d.name}: ${d.message}`;if(d&&typeof d=="object"){let i=Izt(d);if(i)return i}try{return JSON.stringify(d)}catch{return String(d)}}function ont(d){return d.length===0?"":" "+d.map(Dzt).join(" ")}var jre=class{_level;prefix;constructor(i="",s="info"){this.prefix=i?`[${i}]`:"",this._level=s}get level(){return this._level}setLevel(i){this._level=i}shouldLog(i){return fU[i]>=fU[this._level]}formatMessage(i,s){return`${new Date().toISOString()} ${this.prefix} [${i.toUpperCase()}] ${s}`}logTo(i,s,m,u){this.shouldLog(s)&&int(rnt(i),this.formatMessage(s,m+ont(u)))}debug(i,...s){this.logTo("stdout","debug",i,s)}info(i,...s){this.logTo("stdout","info",i,s)}warn(i,...s){this.logTo("stderr","warn",i,s)}error(i,...s){this.logTo("stderr","error",i,s)}},Ure=class{_level;prefix;constructor(i="",s="info"){this.prefix=i?`[${i}]`:"",this._level=s}get level(){return this._level}setLevel(i){this._level=i}shouldLog(i){return fU[i]>=fU[this._level]}formatMessage(i,s){return`${new Date().toISOString()} ${this.prefix} [${i.toUpperCase()}] ${s}`}log(i,s,m){this.shouldLog(i)&&int(rnt("stderr"),this.formatMessage(i,s+ont(m)))}debug(i,...s){this.log("debug",i,s)}info(i,...s){this.log("info",i,s)}warn(i,...s){this.log("warn",i,s)}error(i,...s){this.log("error",i,s)}},GPe=class{level="none";setLevel(){}debug(){}info(){}warn(){}error(){}},Hre=class{delegate;constructor(i){this.delegate=i}get level(){return this.delegate.level}setLevel(i){this.delegate.setLevel(i)}setDelegate(i){this.delegate=i}debug(i,...s){this.delegate.debug(i,...s)}info(i,...s){this.delegate.info(i,...s)}warn(i,...s){this.delegate.warn(i,...s)}error(i,...s){this.delegate.error(i,...s)}},VPe=class{defaultLevel="info";loggers=new Map;backend;setDefaultLevel(i){this.defaultLevel=i;for(let s of this.loggers.values())s.setLevel(i)}getDefaultLevel(){return this.defaultLevel}getLogger(i){let s=this.loggers.get(i);if(!s){let m=this.backend?this.backend.createLogger(i,this.defaultLevel):new jre(i,this.defaultLevel);s=new Hre(m),this.loggers.set(i,s)}return s}getNullLogger(){let i=new GPe;return new Hre(i)}clear(){this.loggers.clear()}setBackend(i){this.backend=i;for(let[s,m]of this.loggers.entries()){let u=m.level??this.defaultLevel,y=i?i.createLogger(s,u):new jre(s,u);m.setDelegate(y)}}getBackend(){return this.backend}},Kre=new VPe;function ld(d){return Kre.getLogger(d)}function ant(d){Kre.setBackend(d)}function snt(d="LOG_LEVEL"){let i=process.env[d]?.toLowerCase();return i&&i in fU?i:"info"}var nN=ld("AstWorkerHost"),qM=class{worker=null;nextId=1;pendingRequests=new Map;workerPath;extensionPath;constructor(i,s){if(this.extensionPath=s,i)this.workerPath=i;else{let m=[u3.join(__dirname,"astWorker.js"),u3.join(__dirname,"../../../dist/astWorker.js"),u3.join(__dirname,"../../../../dist/astWorker.js"),u3.join(process.cwd(),"dist/astWorker.js")],u="";for(let y of m)if(lnt.existsSync(y)){u=y;break}this.workerPath=u||u3.join(process.cwd(),"dist/astWorker.js")}}async start(){if(this.worker){nN.warn("AstWorker already started");return}nN.info(`Starting AstWorker from ${this.workerPath}`);try{this.worker=new cnt.Worker(this.workerPath,{workerData:{extensionPath:this.extensionPath}}),this.worker.on("message",i=>{this.handleResponse(i)}),this.worker.on("error",i=>{nN.error("AstWorker error:",i);for(let[s,m]of this.pendingRequests)m.reject(new Error(`AstWorker crashed: ${i.message}`)),this.pendingRequests.delete(s)}),this.worker.on("exit",i=>{i!==0&&nN.error(`AstWorker exited with code ${i}`),this.worker=null}),nN.info("AstWorker started successfully")}catch(i){let s=i instanceof Error?i.message:String(i);throw nN.error(`Failed to start AstWorker: ${s}`),new Error(`Failed to start AstWorker: ${s}`,{cause:i})}}async stop(){if(this.worker){nN.info("Stopping AstWorker");for(let[i,s]of this.pendingRequests)s.reject(new Error("AstWorker stopped")),this.pendingRequests.delete(i);await this.worker.terminate(),this.worker=null,nN.info("AstWorker stopped")}}async analyzeFile(i,s){return await this.sendRequest({type:"analyzeFile",id:0,filePath:i,content:s})}async getInternalExportDependencyGraph(i,s){let u=await this.sendRequest({type:"getInternalExportDeps",id:0,filePath:i,content:s});return new Map(Object.entries(u).map(([y,A])=>[y,new Set(A)]))}async extractSignatures(i,s){return await this.sendRequest({type:"extractSignatures",id:0,filePath:i,content:s})}async extractInterfaceMembers(i,s){let u=await this.sendRequest({type:"extractInterfaceMembers",id:0,filePath:i,content:s});return new Map(Object.entries(u))}async extractTypeAliases(i,s){return await this.sendRequest({type:"extractTypeAliases",id:0,filePath:i,content:s})}async compareSignatures(i,s){return await this.sendRequest({type:"compareSignatures",id:0,oldSig:i,newSig:s})}async analyzeBreakingChanges(i,s,m){return await this.sendRequest({type:"analyzeBreakingChanges",id:0,filePath:i,oldContent:s,newContent:m})}async reset(){await this.sendRequest({type:"reset",id:0})}async getFileCount(){return await this.sendRequest({type:"getFileCount",id:0})}async sendRequest(i){this.worker||await this.start();let s=this.nextId++,m={...i,id:s};return new Promise((u,y)=>{this.pendingRequests.set(s,{resolve:u,reject:y}),this.worker?.postMessage(m)})}handleResponse(i){let s=this.pendingRequests.get(i.id);if(!s){nN.warn(`Received response for unknown request ${i.id}`);return}if(this.pendingRequests.delete(i.id),i.type==="success")s.resolve(i.result);else{let m=new Error(i.error);i.stack&&(m.stack=i.stack),s.reject(m)}}};var hO=Kl(require("node:fs/promises")),$re=Kl(require("node:fs"));var Jre=Kl(require("node:path"));function Di(d){if(!d)return d;let i=d.replaceAll("\\","/");return i=i.replaceAll(/\/+/g,"/"),/^[A-Za-z]:\//.test(i)&&(i=i[0].toLowerCase()+i.slice(1)),i.length>1&&i.endsWith("/")&&!/^[a-zA-Z]:\/$/.test(i)&&(i=i.slice(0,-1)),i}function jPe(d){if(!d)return d;let i=Di(d);return/^[A-Za-z]:\//.test(i)&&(i=i[0].toLowerCase()+i.slice(1)),i.length>1&&i.endsWith("/")&&!/^[a-zA-Z]:\/$/.test(i)&&(i=i.slice(0,-1)),i}function dnt(d,i){let s=Jre.relative(i,d);return s.startsWith("..")||Jre.isAbsolute(s)?d:Di(s)}var Pd=class d extends Error{code;filePath;cause;timestamp;constructor(i,s,m){super(i),this.name="SpiderError",this.code=s,this.filePath=m?.filePath,this.cause=m?.cause,this.timestamp=Date.now(),Error.captureStackTrace&&Error.captureStackTrace(this,d)}static fromError(i,s){if(i instanceof d)return i;let m=i instanceof Error?i:void 0,u=m?.message??(i!==null&&typeof i=="object"?JSON.stringify(i):String(i)),y="UNKNOWN";if(m){let A=m.code;A==="ENOENT"?y="FILE_NOT_FOUND":A==="EACCES"||A==="EPERM"?y="PERMISSION_DENIED":u.includes("too large")||A==="EFBIG"?y="FILE_TOO_LARGE":u.includes("parse")||u.includes("syntax")?y="PARSE_ERROR":(u.includes("timeout")||A==="ETIMEDOUT")&&(y="TIMEOUT")}return new d(u,y,{filePath:s,cause:m})}isRecoverable(){return["FILE_NOT_FOUND","PERMISSION_DENIED","PARSE_ERROR","RESOLUTION_FAILED"].includes(this.code)}toUserMessage(){switch(this.code){case"FILE_NOT_FOUND":return`File not found: ${this.filePath||"unknown"}`;case"PERMISSION_DENIED":return`Permission denied: ${this.filePath||"unknown"}`;case"FILE_TOO_LARGE":return`File too large to process: ${this.filePath||"unknown"}`;case"PARSE_ERROR":return`Failed to parse: ${this.filePath||"unknown"}`;case"RESOLUTION_FAILED":return`Could not resolve module in: ${this.filePath||"unknown"}`;case"TIMEOUT":return"Operation timed out";case"CIRCULAR_DEPENDENCY":return"Circular dependency detected";default:return this.message}}toJSON(){return{name:this.name,code:this.code,message:this.message,filePath:this.filePath,timestamp:this.timestamp,stack:this.stack}}};var Pzt=ld("FileReader"),Nzt=5*1024*1024,Rzt=64*1024,Mzt=3e4,Nm=class{maxSize;chunkSize;timeout;constructor(i={}){this.maxSize=i.maxSize??Nzt,this.chunkSize=i.chunkSize??Rzt,this.timeout=i.timeout??Mzt}async getFileSize(i){try{let s=await hO.stat(i);return{size:s.size,isLarge:s.size>this.maxSize,path:i}}catch(s){throw Pd.fromError(s,i)}}async readFile(i,s){let m=s?.maxSize??this.maxSize,u=s?.timeout??this.timeout,y=s?.streaming??!1,A=new Promise((k,J)=>{setTimeout(()=>{J(new Pd(`File read timed out after ${u}ms: ${i}`,"TIMEOUT",{filePath:i}))},u)});try{let k=await hO.stat(i);if(k.size>m)throw new Pd(`File too large: ${i} (${this.formatSize(k.size)} > ${this.formatSize(m)})`,"FILE_TOO_LARGE",{filePath:i});return y||k.size>1024*1024?(Pzt.debug(`Streaming read for large file: ${i} (${this.formatSize(k.size)})`),await Promise.race([this.readFileStreaming(i),A])):await Promise.race([hO.readFile(i,"utf-8"),A])}catch(k){throw k instanceof Pd?k:Pd.fromError(k,i)}}async readFileStreaming(i){return new Promise((s,m)=>{let u=[],y=$re.createReadStream(i,{highWaterMark:this.chunkSize});y.on("data",A=>{u.push(Buffer.isBuffer(A)?A:Buffer.from(A))}),y.on("end",()=>{let A=Buffer.concat(u).toString("utf-8");s(A)}),y.on("error",A=>{m(Pd.fromError(A,i))})})}async readFileIfExists(i){try{return await this.readFile(i)}catch(s){if(s instanceof Pd&&s.code==="FILE_NOT_FOUND")return null;throw s}}async canRead(i){try{return await hO.access(i,$re.constants.R_OK),!0}catch{return!1}}formatSize(i){return i<1024?`${i}B`:i<1024*1024?`${(i/1024).toFixed(1)}KB`:`${(i/(1024*1024)).toFixed(1)}MB`}};function V_(d){let s=/^(.+\.(ts|tsx|js|jsx|mjs|cjs|py|pyi|rs|vue|svelte|gql|graphql)):(.+)$/i.exec(d);if(!s)return d;let m=s[1];return s[3]?(m.length>1&&m[1]===":"&&/^[a-zA-Z]:/.test(m),ld("PathExtractor").warn(`Symbol ID detected where file path expected: ${d}. Extracting file path: ${m}`),m):d}var XM=Kl(require("node:fs/promises")),Al=Kl(require("node:path"));var unt=[".ts",".tsx"],pnt=[".js",".jsx",".mjs",".cjs"],qre=[".py",".pyi"],fnt=[".rs"],Lzt=[".vue"],kzt=[".svelte"],wzt=[".gql",".graphql"],Ozt=[".toml"],Fzt=[".cs",".csproj"],Wzt=[".go"],zzt=[".java"],p3=[...unt,...pnt,...Lzt,...kzt,...wzt,...qre,...fnt,...Ozt,...Fzt,...Wzt,...zzt],mU=[...unt,...pnt,...qre,...fnt];var f3=["node_modules",".git","dist","build","out","coverage",".next",".nuxt","__pycache__",".venv","venv","target"];var zh={typescript:"#3178c6",javascript:"#f7df1e",python:"#3776ab",rust:"#ce422b",vue:"#41b883",svelte:"#ff3e00",graphql:"#e535ab",toml:"#9c4221",csharp:"#9b4f96",go:"#00acd7",java:"#f8981d",unknown:"#6b6b6b"},B$t={".ts":zh.typescript,".tsx":zh.typescript,".mts":zh.typescript,".cts":zh.typescript,".js":zh.javascript,".jsx":zh.javascript,".mjs":zh.javascript,".cjs":zh.javascript,".py":zh.python,".pyi":zh.python,".rs":zh.rust,".vue":zh.vue,".svelte":zh.svelte,".gql":zh.graphql,".graphql":zh.graphql,".toml":zh.toml,".cs":zh.csharp,".csproj":zh.csharp,".go":zh.go,".java":zh.java};var l1=class{pathAliases=new Map;tsConfigPromise;tsConfigPath;isConfigLoaded=!1;excludeNodeModules;workspaceRoot;directoryToPackageJson=new Map;directoryToTsConfig=new Map;tsConfigPathAliases=new Map;packageJsonImports=new Map;packageJsonLoadPromises=new Map;tsConfigLoadPromises=new Map;constructor(i,s=!0,m){this.excludeNodeModules=s,this.tsConfigPath=i,this.workspaceRoot=m??(i?Al.dirname(i):void 0)}updateConfig(i){this.excludeNodeModules=i}async ensureTsConfigLoaded(){this.isConfigLoaded||!this.tsConfigPath||(this.tsConfigPromise??=this.loadTsConfig(this.tsConfigPath),await this.tsConfigPromise,this.tsConfigPromise=void 0,this.isConfigLoaded=!0)}async loadTsConfig(i){try{let s=await XM.readFile(i,"utf-8"),m=JSON.parse(s),u=m?.compilerOptions?.paths,y=m?.compilerOptions?.baseUrl||".";if(u)for(let[A,k]of Object.entries(u)){let J=A.replace(/\/\*$/,""),ce=k[0]?.replace(/\/\*$/,"");if(ce){let _e=Al.dirname(i),Me=Al.resolve(_e,y,ce);this.pathAliases.set(J,Di(Me))}}}catch{}}async tryTsConfigAliases(i,s){let m=this.resolveAlias(s);if(m)return this.resolveWithExtensions(m);let u=await this.resolveDynamicTsConfigAlias(i,s);return u?this.resolveWithExtensions(u):null}async tryPythonImports(i,s){if(!this.isPythonFile(i))return null;if(this.isPythonRelativeImport(s)){let m=await this.resolvePythonRelativeImport(i,s);if(m)return m}if(s.includes(".")&&!s.includes("/")){let m=await this.resolvePythonModule(i,s);if(m)return m}return null}async trySpecialModulePatterns(i,s){if(this.isSubpathImport(s))return this.resolveSubpathImport(i,s);let m=await this.resolveRustModule(i,s);return m||(this.isPackageJsonAliasCandidate(s)?this.resolveScopedPackage(i,s):null)}async tryRelativePath(i,s){if(!this.isRelativePath(s))return null;let m=Al.dirname(i),u=Al.resolve(m,s);if(this.isPythonFile(i)&&!this.hasFileExtension(s)){let y=await this.resolveWithExtensions(u);if(y)return y}return this.resolveWithExtensions(u)}async resolve(i,s){await this.ensureTsConfigLoaded();let m=await this.tryTsConfigAliases(i,s);if(m)return m;let u=await this.trySpecialModulePatterns(i,s);if(u)return u;let y=await this.tryPythonImports(i,s);return y||(this.isNodeModule(s)?this.excludeNodeModules?null:s:this.tryRelativePath(i,s))}async resolveSubpathImport(i,s){let m=await this.resolvePackageJsonImport(i,s);return m?this.resolveWithExtensions(m):null}async resolveScopedPackage(i,s){let m=await this.resolvePackageJsonImport(i,s);if(m)return this.resolveWithExtensions(m);let u=await this.resolveWorkspacePackage(i,s);return u||(this.excludeNodeModules?null:s)}async resolveDynamicTsConfigAlias(i,s){if(!this.isPackageJsonAliasCandidate(s))return null;let m=await this.findNearestTsConfig(i);if(!m)return null;let u=await this.getTsConfigPathAliases(m);for(let[y,A]of u.entries())if(s===y||s.startsWith(y+"/")){let k=s.replace(y,A);return Di(k)}return null}async findNearestTsConfig(i){let s=Al.dirname(i);return this.directoryToTsConfig.has(s)?this.directoryToTsConfig.get(s)??null:await this.searchTsConfigUpward(s)}async searchTsConfigUpward(i){let s=[],m=i;for(;!this.shouldStopSearch(m);){s.push(m);let u=this.directoryToTsConfig.get(m);if(u!==void 0)return this.cacheTsConfigResultForDirs(s,u),u;let y=Al.join(m,"tsconfig.json");if(await this.fileExists(y))return this.cacheTsConfigResultForDirs(s,y),y;let k=Al.dirname(m);if(k===m)break;m=k}return this.cacheTsConfigResultForDirs(s,null),null}cacheTsConfigResultForDirs(i,s){for(let m of i)this.directoryToTsConfig.set(m,s)}async getTsConfigPathAliases(i){if(this.tsConfigPathAliases.has(i))return this.tsConfigPathAliases.get(i);if(this.tsConfigLoadPromises.has(i))return this.tsConfigLoadPromises.get(i);let s=this.loadTsConfigPathAliases(i);this.tsConfigLoadPromises.set(i,s);try{let m=await s;return this.tsConfigPathAliases.set(i,m),m}finally{this.tsConfigLoadPromises.delete(i)}}async loadTsConfigPathAliases(i){let s=new Map,m=new Set;return await this.loadTsConfigPathAliasesRecursive(i,s,m),s}async loadTsConfigPathAliasesRecursive(i,s,m){let u=Al.resolve(i);if(!m.has(u)){m.add(u);try{let y=await XM.readFile(i,"utf-8"),A=JSON.parse(y),k=Al.dirname(i);if(A.extends){let _e=Al.resolve(k,A.extends),Me=_e.endsWith(".json")?_e:_e+".json",se=await this.fileExists(Me)?Me:_e;await this.fileExists(se)&&await this.loadTsConfigPathAliasesRecursive(se,s,m)}let J=A?.compilerOptions?.paths,ce=A?.compilerOptions?.baseUrl||".";if(J)for(let[_e,Me]of Object.entries(J)){let se=_e.replace(/\/\*$/,""),ft=Me[0]?.replace(/\/\*$/,"");if(ft){let Je=Al.resolve(k,ce,ft);s.set(se,Di(Je))}}}catch{}}}resolveAlias(i){for(let[s,m]of this.pathAliases.entries())if(i===s||i.startsWith(s+"/"))return i.replace(s,m);return null}async resolveWithExtensions(i){let s=p3;if(await this.fileExists(i))return Di(i);for(let m of s){let u=i+m;if(await this.fileExists(u))return Di(u)}for(let m of s){let u=Al.join(i,`index${m}`);if(await this.fileExists(u))return Di(u)}return null}async fileExists(i){try{return(await XM.stat(i)).isFile()}catch{return!1}}isRelativePath(i){return i.startsWith("./")||i.startsWith("../")}async resolveRustModule(i,s){if(!i.endsWith(".rs")||s.startsWith(".")||s.startsWith("@")||s.startsWith("#")||s.startsWith("/")||!/^\w+(?:::\w+)*$/u.test(s))return null;let u=Al.dirname(i),y=s.replaceAll("::",Al.sep),A=[Al.join(u,`${y}.rs`),Al.join(u,y,"mod.rs")];for(let k of A)if(await this.fileExists(k))return Di(k);return null}isNodeModule(i){return!i.startsWith(".")&&!i.startsWith("/")&&!i.startsWith("#")&&!i.startsWith("@")}isSubpathImport(i){return i.startsWith("#")}isPackageJsonAliasCandidate(i){return i.startsWith("@")}isPythonFile(i){return qre.some(s=>i.endsWith(s))}hasFileExtension(i){let s=Al.basename(i);return s.includes(".")&&!s.startsWith(".")}isPythonRelativeImport(i){return(i.startsWith(".")||i.startsWith(".."))&&!i.includes("/")&&i!=="."&&i!==".."}async resolvePythonRelativeImport(i,s){let m=Al.dirname(i),u=0,y=s;for(;y.startsWith(".");)u++,y=y.substring(1);let A=m;for(let k=1;k<u;k++)A=Al.dirname(A);if(y){let k=Al.join(A,y+".py");if(await this.fileExists(k))return Di(k);let J=Al.join(A,y,"__init__.py");if(await this.fileExists(J))return Di(J)}return null}async resolvePythonModule(i,s){let m=s.replaceAll(".","/"),u=Al.dirname(i),y=this.workspaceRoot||u,A=u;for(;;){let k=Al.resolve(A,m+".py");if(await this.fileExists(k))return Di(k);let J=Al.resolve(A,m,"__init__.py");if(await this.fileExists(J))return Di(J);if(Di(A)===Di(y))break;let ce=Al.dirname(A);if(ce===A)break;A=ce}return null}async resolvePackageJsonImport(i,s){let m=await this.findNearestPackageJson(i);if(!m)return null;let u=await this.getPackageJsonImports(m),y=Al.dirname(m);if(u.has(s)){let A=u.get(s);return Di(Al.resolve(y,A))}for(let[A,k]of u.entries())if(A.endsWith("/*")){let J=A.slice(0,-2);if(s.startsWith(J+"/")){let ce=s.slice(J.length+1),_e=k.endsWith("/*")?k.slice(0,-2):k,Me=Al.resolve(y,_e,ce);return Di(Me)}}return null}async findNearestPackageJson(i){let s=Al.dirname(i);return this.directoryToPackageJson.has(s)?this.directoryToPackageJson.get(s)??null:await this.searchPackageJsonUpward(s)}async searchPackageJsonUpward(i){let s=[],m=i;for(;!this.shouldStopSearch(m);){s.push(m);let u=this.directoryToPackageJson.get(m);if(u!==void 0)return this.cacheResultForDirs(s,u),u;let y=Al.join(m,"package.json");if(await this.fileExists(y))return this.cacheResultForDirs(s,y),y;let A=Al.dirname(m);if(A===m)break;m=A}return this.cacheResultForDirs(s,null),null}shouldStopSearch(i){return!!(this.workspaceRoot&&i===Al.dirname(this.workspaceRoot))}cacheResultForDirs(i,s){for(let m of i)this.directoryToPackageJson.set(m,s)}async getPackageJsonImports(i){if(this.packageJsonImports.has(i))return this.packageJsonImports.get(i);if(this.packageJsonLoadPromises.has(i))return this.packageJsonLoadPromises.get(i);let s=this.loadPackageJsonImports(i);this.packageJsonLoadPromises.set(i,s);try{let m=await s;return this.packageJsonImports.set(i,m),m}finally{this.packageJsonLoadPromises.delete(i)}}async loadPackageJsonImports(i){let s=new Map;try{let m=await XM.readFile(i,"utf-8"),u=JSON.parse(m);this.parseImportsField(u?.imports,s),this.parseAliasesField(u?.aliases,s)}catch{}return s}parseImportsField(i,s){if(!(!i||typeof i!="object"))for(let[m,u]of Object.entries(i)){let y=this.resolveImportTarget(u);y&&s.set(m,y)}}resolveImportTarget(i){if(typeof i=="string")return i;if(typeof i=="object"&&i!==null){let s=i,m=s.default??s.import??s.require??s.node;if(typeof m=="string")return m}return null}parseAliasesField(i,s){if(!(!i||typeof i!="object"))for(let[m,u]of Object.entries(i))typeof u=="string"&&s.set(m,u)}async resolveWorkspacePackage(i,s){if(!s.startsWith("@"))return null;let u=/^@([^/]+)\/([^/]+)(\/.*)?$/.exec(s);if(!u)return null;let[,,y,A]=u,k=s.split("/").slice(0,2).join("/"),J=await this.resolveFileDependency(i,k);if(J)return this.resolvePackageEntry(J,s,A);if(this.workspaceRoot){let ce=await this.findWorkspacePackageDir(y);if(ce)return this.resolvePackageEntry(ce,s,A)}return null}async resolveFileDependency(i,s){let u=Al.dirname(i);for(;!this.shouldStopSearch(u);){let y=Al.join(u,"package.json");if(await this.fileExists(y)){let k=await this.findFileDependencyInPackageJson(y,s);if(k)return k}let A=Al.dirname(u);if(A===u)break;u=A}return null}async findFileDependencyInPackageJson(i,s){try{let m=await XM.readFile(i,"utf-8"),u=JSON.parse(m),y=Al.dirname(i),k={...u.dependencies,...u.devDependencies,...u.peerDependencies}[s];if(typeof k=="string"&&k.startsWith("file:")){let J=k.slice(5),ce=Al.resolve(y,J),_e=Di(ce),Me=Al.join(ce,"package.json");if(await this.fileExists(Me))return _e}}catch{}return null}async findWorkspacePackageDir(i){if(!this.workspaceRoot)return null;let s=["packages","libs","modules"];for(let m of s){let u=Al.join(this.workspaceRoot,m,i),y=Al.join(u,"package.json");if(await this.fileExists(y))return u}return null}async resolvePackageEntry(i,s,m){let u=Al.join(i,"package.json");try{let y=await XM.readFile(u,"utf-8"),A=JSON.parse(y),k=s.split("/").slice(0,2).join("/"),J=s.split("/").slice(1,2).join("/"),ce=A.name;if(ce!==k&&ce!==J)return null;if(m){let _e=A.source?Al.dirname(A.source):"src",Me=Al.join(i,_e,m);return this.resolveWithExtensions(Me)}return this.findPackageEntryPoint(i,A)}catch{return null}}async findPackageEntryPoint(i,s){let m=s.main||s.module||"index",u=[Al.join(i,"src","index"),Al.join(i,m),Al.join(i,"index")];for(let y of u){let A=await this.resolveWithExtensions(y);if(A)return A}return null}};var m3=class{fileReader;pathResolver;constructor(i){this.fileReader=new Nm,this.pathResolver=new l1(i)}patterns={importFrom:/import\s+(?:[^;'"]|'[^']*'|"[^"]*")*?\s+from\s+['"]([^'"]+)['"]/g,exportFrom:/export\s+(?:[^;'"]|'[^']*'|"[^"]*")*?\s+from\s+['"]([^'"]+)['"]/g,require:/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,dynamicImport:/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,graphqlImport:/#import\s+['"]([^'"]+)['"]/g};parse(i,s){s&&(s.endsWith(".vue")||s.endsWith(".svelte"))&&(i=this.extractScript(i));let m=[],u=new Set;return s?.endsWith(".gql")||s?.endsWith(".graphql")?(this.extractImports(i,this.patterns.graphqlImport,"import",m,u),m):(i=this.stripComments(i),this.extractImports(i,this.patterns.importFrom,"import",m,u),this.extractImports(i,this.patterns.exportFrom,"export",m,u),this.extractImports(i,this.patterns.require,"require",m,u),this.extractImports(i,this.patterns.dynamicImport,"dynamic",m,u),m)}extractScript(i){let s=/<script[^>]*>([\s\S]*?)<\/script\s*[^>]*>/gi;return[...i.matchAll(s)].map(u=>u[1]).join(`
|
|
42160
42160
|
`)}stripComments(i){let s=/'[^']*'|"[^"]*"/,m=/\/\/[^\n]*|\/\*[\s\S]*?\*\//,u=new RegExp(`(${s.source})|(${m.source})`,"g");return i.replaceAll(u,(y,A,k)=>A||k.replaceAll(/[^\n]/g," "))}extractImports(i,s,m,u,y){let A;for(s.lastIndex=0;(A=s.exec(i))!==null;){let k=A[1];if(y.has(k))continue;y.add(k);let J=this.getLineNumber(i,A.index);u.push({module:k,type:m,line:J})}}getLineNumber(i,s){return i.substring(0,s).split(`
|
|
42161
|
-
`).length}async parseImports(i){let s=V_(i),m=await this.fileReader.readFile(s);return this.parse(m,s).map(y=>({path:"",type:y.type,line:y.line,module:y.module}))}async resolvePath(i,s){let m=V_(i);return this.pathResolver.resolve(m,s)}};var YM=class{cache=new Map;maxSize;enableLRU;hits=0;misses=0;evictions=0;constructor(i={}){this.maxSize=i.maxSize??0,this.enableLRU=i.enableLRU??!0}get(i){let s=this.cache.get(i);if(s!==void 0)return this.hits++,this.enableLRU&&this.maxSize>0&&(this.cache.delete(i),this.cache.set(i,s)),s;this.misses++}set(i,s){this.cache.has(i)?this.cache.delete(i):this.maxSize>0&&this.cache.size>=this.maxSize&&this.evictOldest(),this.cache.set(i,s)}has(i){return this.cache.has(i)}clear(){this.cache.clear(),this.resetStats()}delete(i){return this.cache.delete(i)}get size(){return this.cache.size}getStats(){let i=this.hits+this.misses;return{hits:this.hits,misses:this.misses,evictions:this.evictions,size:this.cache.size,maxSize:this.maxSize,hitRate:i>0?this.hits/i:0}}resetStats(){this.hits=0,this.misses=0,this.evictions=0}keys(){return this.cache.keys()}entries(){return this.cache.entries()}evictOldest(){let i=this.cache.keys().next().value;i!==void 0&&(this.cache.delete(i),this.evictions++)}};var Bzt=ld("IndexerStatus"),_3=class{_state="idle";_processed=0;_total=0;_currentFile;_startTime;_errorMessage;_cancelled=!1;_listeners=new Set;_lastNotifyTime=0;_notifyThrottleMs;constructor(i){this._notifyThrottleMs=i?.notifyThrottleMs??250}subscribe(i){return this._listeners.add(i),i(this.getSnapshot()),()=>this._listeners.delete(i)}getSnapshot(){let i=this._total>0?Math.round(this._processed/this._total*100):0,s;if(this._startTime&&this._processed>0&&this._total>0&&this._state==="indexing"){let u=(Date.now()-this._startTime)/this._processed,y=this._total-this._processed;s=Math.round(u*y)}return{state:this._state,processed:this._processed,total:this._total,currentFile:this._currentFile,percentage:i,startTime:this._startTime,estimatedTimeRemaining:s,errorMessage:this._errorMessage,cancelled:this._cancelled}}startCounting(){this._state="counting",this._processed=0,this._total=0,this._currentFile=void 0,this._startTime=Date.now(),this._errorMessage=void 0,this._cancelled=!1,this._notifyListeners(!0)}setTotal(i){this._total=i,this._notifyListeners(!0)}startIndexing(){this._state="indexing",this._startTime=Date.now(),this._notifyListeners(!0)}startValidating(){this._state="validating",this._notifyListeners(!0)}updateProgress(i,s){this._processed=i,this._currentFile=s,this._notifyListeners(!1)}complete(){this._state="complete",this._currentFile=void 0,this._notifyListeners(!0)}setError(i){this._state="error",this._errorMessage=i,this._currentFile=void 0,this._notifyListeners(!0)}setCancelled(){this._cancelled=!0,this._state="idle",this._currentFile=void 0,this._notifyListeners(!0)}reset(){this._state="idle",this._processed=0,this._total=0,this._currentFile=void 0,this._startTime=void 0,this._errorMessage=void 0,this._cancelled=!1,this._notifyListeners(!0)}isActive(){return this._state==="counting"||this._state==="indexing"||this._state==="validating"}isReady(){return this._state==="complete"}_notifyListeners(i){let s=Date.now();if(!i&&s-this._lastNotifyTime<this._notifyThrottleMs)return;this._lastNotifyTime=s;let m=this.getSnapshot();for(let u of this._listeners)try{u(m)}catch(y){Bzt.error("Listener error:",y)}}get state(){return this._state}get total(){return this._total}get processed(){return this._processed}};var Ust=Kl(require("node:path"));var yu=Kl(zst());function ZMe(d){switch(d){case"FunctionDeclaration":case"ArrowFunction":case"MethodDeclaration":case"GetAccessor":case"SetAccessor":return"function";case"ClassDeclaration":return"class";case"InterfaceDeclaration":return"interface";case"TypeAliasDeclaration":return"type";case"VariableDeclaration":case"PropertyDeclaration":case"EnumDeclaration":return"variable";default:return"other"}}var Bst=ld("SymbolAnalyzer"),Nce=class{project;maxFiles;fileCount=0;fileReader;constructor(i,s={}){this.maxFiles=s.maxFiles??100,this.project=this.createProject(),this.fileReader=new Nm}createProject(){return new yu.Project({skipAddingFilesFromTsConfig:!0,useInMemoryFileSystem:!0,compilerOptions:{target:99,module:99}})}maybeResetProject(){this.fileCount>=this.maxFiles&&(Bst.debug(`Resetting ts-morph project (${this.fileCount} files in memory)`),this.project=this.createProject(),this.fileCount=0)}getFileCount(){return this.fileCount}reset(){Bst.debug("Forcing ts-morph project reset"),this.project=this.createProject(),this.fileCount=0}analyzeFileContent(i,s){this.maybeResetProject();let m=this.getOrCreateSourceFile(i,s),u=[],y=[],A=this.extractExportedSymbols(m,i,u);return this.extractNonExportedSymbols(m,i,A,u),this.buildDependencies(m,y),{symbols:u,dependencies:y}}getOrCreateSourceFile(i,s){let m=this.project.getSourceFile(i);return m?m.replaceWithText(s):(m=this.project.createSourceFile(i,s),this.fileCount++),m}extractExportedSymbols(i,s,m){let u=i.getExportedDeclarations(),y=new Set(u.keys());for(let[A,k]of u){let J=k[0];J&&(this.addSymbol(m,A,J.getKindName(),J.getStartLineNumber(),s,!0),J.getKindName()==="ClassDeclaration"&&yu.Node.isClassDeclaration(J)&&this.extractClassMembers(J,s,m))}return y}extractNonExportedSymbols(i,s,m,u){let y=i.getStatements();for(let A of y)yu.Node.isVariableStatement(A)?this.extractVariableDeclarations(A,s,m,u):this.extractOtherDeclarations(A,s,m,u)}extractVariableDeclarations(i,s,m,u){let y=i.getDeclarations();for(let A of y){let k=A.getName();m.has(k)||this.addSymbol(u,k,"VariableDeclaration",A.getStartLineNumber(),s,!1)}}extractOtherDeclarations(i,s,m,u){let y=this.getDeclarationInfo(i);!y||m.has(y.name)||(this.addSymbol(u,y.name,y.kind,i.getStartLineNumber(),s,!1),y.isClass&&yu.Node.isClassDeclaration(i)&&this.extractClassMembers(i,s,u))}getDeclarationInfo(i){if(yu.Node.isClassDeclaration(i)){let s=i.getName();if(s)return{name:s,kind:"ClassDeclaration",isClass:!0}}else if(yu.Node.isFunctionDeclaration(i)){let s=i.getName();if(s)return{name:s,kind:"FunctionDeclaration",isClass:!1}}else{if(yu.Node.isInterfaceDeclaration(i))return{name:i.getName(),kind:"InterfaceDeclaration",isClass:!1};if(yu.Node.isTypeAliasDeclaration(i))return{name:i.getName(),kind:"TypeAliasDeclaration",isClass:!1};if(yu.Node.isEnumDeclaration(i))return{name:i.getName(),kind:"EnumDeclaration",isClass:!1}}return null}addSymbol(i,s,m,u,y,A){i.push({name:s,kind:m,line:u,isExported:A,id:`${y}:${s}`,category:ZMe(m)})}buildDependencies(i,s){let m=this.buildImportMap(i),u=this.findSymbolUsage(i,m);for(let[y,A]of Object.entries(u))for(let k of A)s.push({sourceSymbolId:y,targetSymbolId:k.symbolId,targetFilePath:k.filePath,isTypeOnly:k.isTypeOnly})}getInternalExportDependencyGraph(i,s){this.maybeResetProject();let u=this.getOrCreateSourceFile(i,s).getExportedDeclarations(),y=new Set(u.keys()),A=new Map;for(let[k,J]of u){let ce=`${i}:${k}`,_e=this.getOrCreateDependencySet(A,ce);this.collectExportDependencies(J,k,y,i,_e)}return A}getOrCreateDependencySet(i,s){let m=i.get(s);return m||(m=new Set,i.set(s,m)),m}collectExportDependencies(i,s,m,u,y){for(let A of i){let k=A.getDescendantsOfKind(yu.SyntaxKind.Identifier);for(let J of k){let ce=J.getText();this.isValidDependency(ce,s,m)&&y.add(`${u}:${ce}`)}}}isValidDependency(i,s,m){return m.has(i)&&i!==s}buildImportMap(i){let s=new Map,m=i.getImportDeclarations();for(let u of m){let y=u.getModuleSpecifierValue(),A=u.isTypeOnly(),k=u.getDefaultImport();if(k){let _e=k.getText();s.set(_e,{originalName:"default",modulePath:y,isType:A})}let J=u.getNamedImports();for(let _e of J){let Me=_e.getNameNode().getText(),se=_e.getAliasNode(),ft=se?se.getText():Me;s.set(ft,{originalName:Me,modulePath:y,isType:A||_e.isTypeOnly()})}let ce=u.getNamespaceImport();if(ce){let _e=ce.getText();s.set(_e,{originalName:"*",modulePath:y,isType:A})}}return s}extractIntraFileCalls(i,s){let m=[],u=s.getFilePath(),y=this.collectFunctionNames(s),A=i.getDescendantsOfKind(yu.SyntaxKind.CallExpression);for(let k of A)this.processCallExpression(k,y,u,m);return m}collectFunctionNames(i){let s=new Set;for(let m of i.getFunctions()){let u=m.getName();u&&s.add(u)}for(let m of i.getClasses())for(let u of m.getMethods()){let y=u.getName();y&&s.add(y)}return s}processCallExpression(i,s,m,u){if(!yu.Node.isCallExpression(i))return;let y=i.getExpression();if(yu.Node.isIdentifier(y)){this.addDirectFunctionCall(y,s,m,u);return}yu.Node.isPropertyAccessExpression(y)&&this.addPropertyAccessCall(y,s,m,u)}addDirectFunctionCall(i,s,m,u){let y=i.getText();s.has(y)&&u.push({symbolId:`${m}:${y}`,filePath:m,isTypeOnly:!1})}addPropertyAccessCall(i,s,m,u){if(yu.Node.isPropertyAccessExpression(i)){let y=i.getName();s.has(y)&&u.push({symbolId:`${m}:${y}`,filePath:m,isTypeOnly:!1})}}findSymbolUsage(i,s){let m={},u=i.getFilePath(),y=[...i.getFunctions(),...i.getClasses(),...i.getVariableDeclarations()];for(let J of y){let ce=J.getName();if(!ce)continue;let _e=`${u}:${ce}`,Me=this.extractSymbolDependencies(J,s),se=this.extractIntraFileCalls(J,i);Me.push(...se),m[_e]=Me}let A=i.getStatements(),k=[];for(let J of A){if(yu.Node.isFunctionDeclaration(J)||yu.Node.isClassDeclaration(J)||yu.Node.isVariableStatement(J)||yu.Node.isInterfaceDeclaration(J)||yu.Node.isTypeAliasDeclaration(J)||yu.Node.isEnumDeclaration(J)||yu.Node.isImportDeclaration(J))continue;let ce=this.extractSymbolDependencies(J,s);k.push(...ce)}if(k.length>0){let J=`${u}:(file)`;m[J]=k}return m}extractSymbolDependencies(i,s){let m=[];return this.extractStaticImportDependencies(i,s,m),this.extractDynamicImportDependencies(i,m),m}extractStaticImportDependencies(i,s,m){let u=i.getDescendantsOfKind(yu.SyntaxKind.Identifier);for(let y of u){let A=s.get(y.getText());if(!A)continue;let k=this.buildTargetSymbolId(A);m.some(J=>J.symbolId===k)||m.push({symbolId:k,filePath:A.modulePath,isTypeOnly:A.isType})}}extractDynamicImportDependencies(i,s){let m=i.getDescendantsOfKind(yu.SyntaxKind.CallExpression);for(let u of m){let y=this.extractDynamicImportPath(u);if(!y)continue;let A=`${y}:default`;s.some(k=>k.symbolId===A)||s.push({symbolId:A,filePath:y,isTypeOnly:!1})}}extractDynamicImportPath(i){if(!yu.Node.isCallExpression(i)||i.getExpression().getKind()!==yu.SyntaxKind.ImportKeyword)return null;let m=i.getArguments();if(m.length===0)return null;let u=m[0];return yu.Node.isStringLiteral(u)?u.getLiteralValue():null}buildTargetSymbolId(i){return i.originalName==="default"?`${i.modulePath}:default`:`${i.modulePath}:${i.originalName}`}extractClassMembers(i,s,m){let u=i.getName();if(!u)return;let y=`${s}:${u}`,A=i.getMembers();for(let k of A){let J=k.getKindName();if(!yu.Node.isMethodDeclaration(k)&&!yu.Node.isPropertyDeclaration(k)&&!yu.Node.isGetAccessorDeclaration(k)&&!yu.Node.isSetAccessorDeclaration(k))continue;let ce=k.getName();if(!ce)continue;let _e=k.isStatic()??!1,Me=`${u}.${ce}`,se=_e?`Static${J}`:J;m.push({name:Me,kind:se,line:k.getStartLineNumber(),isExported:!1,id:`${s}:${Me}`,parentSymbolId:y,category:ZMe(J)})}}getExportedSymbols(i,s){let m=this.project.getSourceFile(i);m?m.replaceWithText(s):m=this.project.createSourceFile(i,s);let u=[],y=m.getExportedDeclarations();for(let[A,k]of y){let J=k[0];if(!J)continue;let ce=J.getKindName();u.push({name:A,kind:ce,line:J.getStartLineNumber(),isExported:!0,id:`${i}:${A}`,category:ZMe(ce)})}return u}filterRuntimeSymbols(i){let s=new Set(["InterfaceDeclaration","TypeAliasDeclaration","TypeParameter"]);return i.filter(m=>!s.has(m.kind))}async analyzeFile(i){let s=await this.fileReader.readFile(i),m=this.analyzeFileContent(i,s),u=new Map;for(let y of m.symbols)u.set(y.id,y);return u}async getSymbolDependencies(i){let s=await this.fileReader.readFile(i);return this.analyzeFileContent(i,s).dependencies}};var QMe=Kl(require("node:fs/promises")),E1=Kl(require("node:path"));var Gst=Kl(require("node:fs/promises")),V3=require("web-tree-sitter"),dy=class d{static instance=null;initPromise=null;parsers=new Map;parserPromises=new Map;languages=new Map;initialized=!1;textEncoder=new TextEncoder;constructor(){}static getInstance(){return d.instance??=new d,d.instance}async init(i){if(!this.initialized){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{try{await V3.Parser.init({locateFile:()=>i}),this.initialized=!0}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize web-tree-sitter from ${i}: ${m}. Ensure the WASM file exists and is not corrupted.`,{cause:s})}})(),await this.initPromise}}async getParser(i,s){if(!this.initialized)throw new Error("WasmParserFactory must be initialized with init() before creating parsers");if(this.parsers.has(i))return this.parsers.get(i);if(this.parserPromises.has(i))return this.parserPromises.get(i);let m=(async()=>{try{this.languages.has(i)||await this.loadLanguage(i,s);let u=new V3.Parser,y=this.languages.get(i);return u.setLanguage(y),this.parsers.set(i,u),u}finally{this.parserPromises.delete(i)}})();return this.parserPromises.set(i,m),m}async loadLanguage(i,s){try{let m;try{let u=await Gst.default.readFile(s),y=this.normalizeLegacyDylinkSection(new Uint8Array(u));m=await V3.Language.load(y)}catch(u){let y=u instanceof Error?u.message:String(u);if(y.includes("ENOENT")||y.includes("not found"))m=await V3.Language.load(s);else throw u}this.languages.set(i,m)}catch(m){let u=m instanceof Error?m.message:String(m);throw u.includes("ENOENT")||u.includes("not found")?new Error(`Language WASM file not found: ${s}. Ensure the extension is properly installed and WASM files are in the dist directory.`,{cause:m}):u.includes("magic")||u.includes("invalid")?new Error(`Failed to load language WASM from ${s}: ${u}. The WASM file may be corrupted. Try reinstalling the extension.`,{cause:m}):new Error(`Failed to load language WASM from ${s}: ${u}`,{cause:m})}}normalizeLegacyDylinkSection(i){try{if(i.length<12||i[0]!==0||i[1]!==97||i[2]!==115||i[3]!==109)return i;let s=8;if(i[s]!==0)return i;let m=this.readUnsignedLeb128(i,s+1),u=m.nextOffset,y=u+m.value;if(y>i.length)return i;let A=this.readUnsignedLeb128(i,u),k=A.nextOffset,J=k+A.value;if(J>y||Buffer.from(i.subarray(k,J)).toString("utf8")!=="dylink")return i;let _e=J,Me=this.readUnsignedLeb128(i,_e);_e=Me.nextOffset;let se=this.readUnsignedLeb128(i,_e);_e=se.nextOffset;let ft=this.readUnsignedLeb128(i,_e);_e=ft.nextOffset;let Je=this.readUnsignedLeb128(i,_e);_e=Je.nextOffset;let Ze=this.readUnsignedLeb128(i,_e);_e=Ze.nextOffset;let Nr=[];for(let cr=0;cr<Ze.value;cr++){let Ni=this.readUnsignedLeb128(i,_e);_e=Ni.nextOffset;let dd=_e+Ni.value;if(dd>y)return i;Nr.push(i.subarray(_e,dd)),_e=dd}let Jr=this.concatUint8Arrays(this.encodeUnsignedLeb128(Me.value),this.encodeUnsignedLeb128(se.value),this.encodeUnsignedLeb128(ft.value),this.encodeUnsignedLeb128(Je.value)),Ei=this.concatUint8Arrays(this.encodeUnsignedLeb128(Nr.length),...Nr.flatMap(cr=>[this.encodeUnsignedLeb128(cr.length),cr])),Wo=1,Ga=2,So=this.concatUint8Arrays(Uint8Array.of(Wo),this.encodeUnsignedLeb128(Jr.length),Jr),On=this.concatUint8Arrays(Uint8Array.of(Ga),this.encodeUnsignedLeb128(Ei.length),Ei),fn=this.textEncoder.encode("dylink.0"),hi=this.concatUint8Arrays(this.encodeUnsignedLeb128(fn.length),fn,So,On),jr=this.concatUint8Arrays(Uint8Array.of(0),this.encodeUnsignedLeb128(hi.length),hi);return this.concatUint8Arrays(i.subarray(0,8),jr,i.subarray(y))}catch{return i}}readUnsignedLeb128(i,s){let m=0,u=0,y=s;for(;y<i.length;){let A=i[y];if(m|=(A&127)<<u,y++,(A&128)===0)return{value:m,nextOffset:y};if(u+=7,u>35)throw new Error("Invalid LEB128 value")}throw new Error("Unexpected EOF while reading LEB128")}encodeUnsignedLeb128(i){let s=[],m=i>>>0;do{let u=m&127;m>>>=7,m!==0&&(u|=128),s.push(u)}while(m!==0);return Uint8Array.from(s)}concatUint8Arrays(...i){let s=i.reduce((y,A)=>y+A.length,0),m=new Uint8Array(s),u=0;for(let y of i)m.set(y,u),u+=y.length;return m}isInitialized(){return this.initialized}reset(){this.parsers.clear(),this.parserPromises.clear(),this.languages.clear(),this.initialized=!1,this.initPromise=null}};var Rce=class d{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i??process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser)return this.initPromise!==null?this.initPromise:(this.initPromise=(async()=>{let i=this.extensionPath;if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure CSharpParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=E1.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=E1.default.join(i,"dist","wasm","tree-sitter-c_sharp.wasm");this.parser=await s.getParser("c_sharp",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize C# WASM parser: ${m}`,{cause:s})}})(),this.initPromise)}async parseImports(i){let s=V_(i),m;try{m=await this.fileReader.readFile(s)}catch(A){throw Pd.fromError(A,s)}if(await this.ensureInitialized(),!this.parser)return[];let u=this.parser.parse(m);if(!u)return[];let y=[];return this.extractUsings(u.rootNode,s,y),y}extractUsings(i,s,m){if(i.type==="using_directive"){let u=i.children.find(y=>y.type==="identifier"||y.type==="qualified_name"||y.type==="member_access_expression");if(u){let y=u.text.trim();y&&m.push({path:Di(s),type:"import",line:u.startPosition.row+1,module:y})}}for(let u of i.children)this.extractUsings(u,s,m)}async resolvePath(i,s){if(this.isFrameworkNamespace(s))return null;let m=s.split(".");return m.length<2||m.some(d.isUnsafeSegment)?null:this.resolveNamespace(m)}async resolveNamespace(i){try{return await this.resolveViaSuffix(i)??await this.resolveViaLastSegment(i)}catch{return null}}static isUnsafeSegment(i){return i===""||i===".."||i.includes("/")}async resolveViaSuffix(i){for(let s=i.length-1;s>=1;s--){let m=E1.default.resolve(this.rootDir,i.slice(s).join(E1.default.sep));if(!this.isWithinRoot(m))continue;let u=await this.findFirstCsFile(m);if(u)return Di(u)}return null}async resolveViaLastSegment(i){let s=i.at(-1)??"";if(!s)return null;let m=await this.findDirectory(this.rootDir,s,3);if(!m||!this.isWithinRoot(m))return null;let u=await this.findFirstCsFile(m);return u?Di(u):null}isWithinRoot(i){let s=Di(E1.default.resolve(i)),m=Di(E1.default.resolve(this.rootDir));return s===m||s.startsWith(m+"/")}isFrameworkNamespace(i){return["System","Microsoft","Newtonsoft","NUnit","Xunit","MSTest","AutoMapper","FluentValidation","MediatR","Serilog"].some(m=>i===m||i.startsWith(m+"."))}async findFirstCsFile(i){try{let m=(await QMe.default.readdir(i,{withFileTypes:!0})).filter(u=>u.isFile()&&u.name.endsWith(".cs")).sort((u,y)=>u.name.localeCompare(y.name));return m.length>0?E1.default.join(i,m[0].name):null}catch{return null}}async findDirectory(i,s,m){if(m<=0)return null;try{let y=(await QMe.default.readdir(i,{withFileTypes:!0})).filter(d.isTraversableDir);for(let A of y){if(A.name===s)return E1.default.join(i,A.name);let k=await this.findDirectory(E1.default.join(i,A.name),s,m-1);if(k)return k}}catch{}return null}static isTraversableDir(i){return i.isDirectory()&&!i.name.startsWith(".")&&i.name!=="node_modules"}};var Mce=Kl(require("node:fs/promises")),yx=Kl(require("node:path"));var Lce=class d{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i??process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser)return this.initPromise!==null?this.initPromise:(this.initPromise=(async()=>{let i=this.extensionPath;if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure GoParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=yx.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=yx.default.join(i,"dist","wasm","tree-sitter-go.wasm");this.parser=await s.getParser("go",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Go WASM parser: ${m}`,{cause:s})}})(),this.initPromise)}async parseImports(i){let s=V_(i),m;try{m=await this.fileReader.readFile(s)}catch(A){throw Pd.fromError(A,s)}if(await this.ensureInitialized(),!this.parser)return[];let u=this.parser.parse(m);if(!u)return[];let y=[];return this.extractImports(u.rootNode,s,y),y}extractImports(i,s,m){if(i.type==="import_spec"){let u=i.children.find(y=>y.type==="interpreted_string_literal"||y.type==="raw_string_literal");if(u){let y=u.text.replaceAll(/^["`]|["`]$/g,"").trim();y&&m.push({path:Di(s),type:"import",line:u.startPosition.row+1,module:y})}}for(let u of i.children)this.extractImports(u,s,m)}async resolvePath(i,s){if(this.isGoStdlibImport(s))return null;let m=s.split("/");return m.some(d.isUnsafePart)?null:this.resolveGoImport(V_(i),s,m)}async resolveGoImport(i,s,m){try{let u=await this.resolveViaGoMod(i,s)??await this.resolveViaLastSegment(m);return u?Di(u):null}catch{return null}}static isUnsafePart(i){return i===".."||i===""}async resolveViaGoMod(i,s){let m=await this.findGoModuleInfo(yx.default.dirname(i));if(!m||!s.startsWith(m.moduleName+"/"))return null;let y=s.slice(m.moduleName.length+1).split("/");if(y.some(d.isUnsafePart))return null;let A=yx.default.resolve(m.moduleDir,...y);return this.isWithinRoot(A)?this.findFirstGoFile(A):null}async resolveViaLastSegment(i){let s=i.at(-1)??"";if(!s)return null;let m=await this.findDirectory(this.rootDir,s,3);return!m||!this.isWithinRoot(m)?null:this.findFirstGoFile(m)}isWithinRoot(i){let s=Di(yx.default.resolve(i)),m=Di(yx.default.resolve(this.rootDir));return s===m||s.startsWith(m+"/")}isGoStdlibImport(i){return!(i.split("/")[0]??"").includes(".")}async findGoModuleInfo(i){let s=i,m=Di(this.rootDir);for(;;){let u=await this.readGoModuleName(yx.default.join(s,"go.mod"));if(u)return{moduleDir:s,moduleName:u};let y=yx.default.dirname(s);if(y===s||!Di(y).startsWith(m))break;s=y}return null}async readGoModuleName(i){try{let s=await Mce.default.readFile(i,"utf-8"),m=/^module\s+(\S+)/mu.exec(s);return m?m[1]:null}catch{return null}}async findFirstGoFile(i){try{let m=(await Mce.default.readdir(i,{withFileTypes:!0})).filter(u=>u.isFile()&&u.name.endsWith(".go")&&!u.name.endsWith("_test.go")).sort((u,y)=>u.name.localeCompare(y.name));return m.length>0?yx.default.join(i,m[0].name):null}catch{return null}}async findDirectory(i,s,m){if(m<=0)return null;try{let y=(await Mce.default.readdir(i,{withFileTypes:!0})).filter(d.isTraversableDir);for(let A of y){if(A.name===s)return yx.default.join(i,A.name);let k=await this.findDirectory(yx.default.join(i,A.name),s,m-1);if(k)return k}}catch{}return null}static isTraversableDir(i){return i.isDirectory()&&!i.name.startsWith(".")&&i.name!=="node_modules"}};var eLe=Kl(require("node:fs/promises")),cN=Kl(require("node:path"));var kce=class{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i??process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser)return this.initPromise!==null?this.initPromise:(this.initPromise=(async()=>{let i=this.extensionPath;if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure JavaParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=cN.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=cN.default.join(i,"dist","wasm","tree-sitter-java.wasm");this.parser=await s.getParser("java",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Java WASM parser: ${m}`,{cause:s})}})(),this.initPromise)}async parseImports(i){let s=V_(i),m;try{m=await this.fileReader.readFile(s)}catch(A){throw Pd.fromError(A,s)}if(await this.ensureInitialized(),!this.parser)return[];let u=this.parser.parse(m);if(!u)return[];let y=[];return this.extractImports(u.rootNode,s,y),y}extractImports(i,s,m){if(i.type==="import_declaration"){let u=i.children.find(y=>y.type==="identifier"||y.type==="scoped_identifier");if(u){let y=u.text.trim();y&&m.push({path:Di(s),type:"import",line:u.startPosition.row+1,module:y})}}for(let u of i.children)this.extractImports(u,s,m)}async resolvePath(i,s){try{if(this.isJavaStdlibImport(s)||s.endsWith(".*"))return null;let m=s.split(".");if(m.some(J=>J===""||J===".."||J.includes("/")))return null;let u=m.at(-1)??"",y=m.join(cN.default.sep)+".java",A=cN.default.resolve(this.rootDir,y);if(this.isWithinRoot(A)&&await this.fileExists(A))return Di(A);let k=await this.findFile(this.rootDir,u+".java",4);return k?Di(k):null}catch{return null}}isWithinRoot(i){let s=Di(cN.default.resolve(i)),m=Di(cN.default.resolve(this.rootDir));return s===m||s.startsWith(m+"/")}isJavaStdlibImport(i){return["java.","javax.","sun.","com.sun.","org.w3c.","org.xml.","org.ietf.","org.omg.","jdk.","javafx."].some(m=>i.startsWith(m))}async findFile(i,s,m){if(m<=0)return null;try{let u=await eLe.default.readdir(i,{withFileTypes:!0});for(let y of u)if(y.isFile()&&y.name===s)return cN.default.join(i,y.name);for(let y of u)if(y.isDirectory()&&!y.name.startsWith(".")&&y.name!=="node_modules"){let A=await this.findFile(cN.default.join(i,y.name),s,m-1);if(A)return A}}catch{}return null}async fileExists(i){try{return await eLe.default.access(i),!0}catch{return!1}}};var tLe=Kl(require("node:fs/promises")),jb=Kl(require("node:path"));var wce=class{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i||process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{let i=await this.resolveExtensionPath();if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure PythonParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=jb.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=jb.default.join(i,"dist","wasm","tree-sitter-python.wasm");this.parser=await s.getParser("python",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Python WASM parser: ${m}`,{cause:s})}})(),await this.initPromise}}async resolveExtensionPath(){if(this.extensionPath)return this.extensionPath;let i=process.cwd(),s=jb.default.join(i,"dist","wasm","tree-sitter.wasm");try{return await tLe.default.access(s),i}catch{return}}async parseImports(i){try{await this.ensureInitialized();let s=V_(i),m=await this.fileReader.readFile(s),u=this.parser.parse(m);if(!u)throw new Error(`Failed to parse Python file: ${s}`);let y=[],A=new Set;return this.traverseTree(u.rootNode,k=>{k.type==="import_statement"?this.extractImportStatement(k,y,A,m):k.type==="import_from_statement"&&this.extractImportFromStatement(k,y,A,m)}),y}catch(s){throw Pd.fromError(s,i)}}async resolvePath(i,s){try{await this.ensureInitialized();let m=V_(i),u=jb.default.dirname(m);return s.startsWith(".")?await this.resolveRelativeImport(u,s):await this.resolveAbsoluteImport(u,s)}catch{return null}}extractImportStatement(i,s,m,u){let y=this.findChildrenByType(i,"dotted_name");for(let A of y){let k=this.getNodeText(A,u);k&&!m.has(k)&&(m.add(k),s.push({path:"",type:"import",line:A.startPosition.row+1,module:k}))}}extractImportFromStatement(i,s,m,u){let y=null,A=this.findChildByType(i,"relative_import");if(A)y=this.getNodeText(A,u);else{let k=this.findChildByType(i,"dotted_name");k&&(y=this.getNodeText(k,u))}y&&!m.has(y)&&(m.add(y),s.push({path:"",type:"import",line:i.startPosition.row+1,module:y}))}async resolveRelativeImport(i,s){let m=/^\.*/u.exec(s),u=m?m[0].length:0,y=s.slice(u).replaceAll(".","/"),A=i;for(let J=1;J<u;J++)A=jb.default.dirname(A);let k=[jb.default.join(A,y+".py"),jb.default.join(A,y+".pyi"),jb.default.join(A,y,"__init__.py"),jb.default.join(A,y,"__init__.pyi")];for(let J of k)if(await this.fileExists(J))return Di(J);return null}async resolveAbsoluteImport(i,s){let m=s.replaceAll(".","/"),u=Di(this.rootDir),y=new Set,A=async J=>{let ce=Di(J);if(y.has(ce))return null;y.add(ce);let _e=[jb.default.join(J,m+".py"),jb.default.join(J,m+".pyi"),jb.default.join(J,m,"__init__.py"),jb.default.join(J,m,"__init__.pyi")];for(let Me of _e)if(await this.fileExists(Me))return Di(Me);return null},k=i;for(;;){let J=await A(k);if(J)return J;let ce=jb.default.dirname(k);if(ce===k)break;if(Di(ce)===u){let _e=await A(ce);if(_e)return _e;break}k=ce}if(!y.has(u)){let J=await A(this.rootDir);if(J)return J}return null}async fileExists(i){try{return await tLe.default.access(i),!0}catch{return!1}}traverseTree(i,s){s(i);for(let m of i.children)this.traverseTree(m,s)}findChildrenByType(i,s){let m=[];for(let u of i.children)u.type===s&&m.push(u);return m}findChildByType(i,s){for(let m of i.children)if(m.type===s)return m;return null}getNodeText(i,s){return s.slice(i.startIndex,i.endIndex)}};var Vst=Kl(require("node:fs/promises")),Oce=Kl(require("node:path"));var Fce=class{parser=null;fileReader;initPromise=null;extensionPath;constructor(i,s){this.extensionPath=s??i,this.fileReader=new Nm}async ensureInitialized(){if(!this.parser){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{let i=await this.resolveExtensionPath();if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure PythonSymbolAnalyzer is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=Oce.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=Oce.default.join(i,"dist","wasm","tree-sitter-python.wasm");this.parser=await s.getParser("python",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Python WASM parser for symbol analysis: ${m}`,{cause:s})}})(),await this.initPromise}}async resolveExtensionPath(){if(this.extensionPath)return this.extensionPath;let i=process.cwd(),s=Oce.default.join(i,"dist","wasm","tree-sitter.wasm");try{return await Vst.default.access(s),i}catch{return}}async analyzeFile(i){try{await this.ensureInitialized();let s=await this.fileReader.readFile(i);return this.analyzeFileFromContent(i,s)}catch(s){throw Pd.fromError(s,i)}}analyzeFileFromContent(i,s){if(!this.parser)throw new Error("Parser not initialized. Call ensureInitialized() before using analyzeFileFromContent().");let m=this.parser.parse(s);if(!m)throw new Error(`Failed to parse Python file: ${i}`);let u=new Map,y=Di(i);return this.extractSymbols(m.rootNode,y,s,u),u}analyzeFileContent(i,s){if(!this.parser)throw new Error("Parser not initialized. Call ensureInitialized() before using analyzeFileContent().");let m=this.parser.parse(s);if(!m)throw new Error(`Failed to parse Python file: ${i}`);let u=new Map,y=[],A=Di(i);this.extractSymbols(m.rootNode,A,s,u);let k=this.buildImportMap(m.rootNode,s);return this.extractDependencies(m.rootNode,A,s,y,u,void 0,k),{symbols:Array.from(u.values()),dependencies:y}}async getSymbolDependencies(i){try{await this.ensureInitialized();let s=await this.fileReader.readFile(i);return this.analyzeFileContent(i,s).dependencies}catch(s){throw Pd.fromError(s,i)}}extractSymbols(i,s,m,u,y){this.tryExtractSymbolFromNode(i,s,m,u,y)||this.extractSymbolsFromChildren(i,s,m,u,y)}tryExtractSymbolFromNode(i,s,m,u,y){return i.type==="function_definition"?(this.handleFunctionDefinition(i,s,m,u,y),!0):i.type==="class_definition"?(this.handleClassDefinition(i,s,m,u,y),!0):i.type==="decorated_definition"?(this.handleDecoratedDefinition(i,s,m,u,y),!0):!1}handleFunctionDefinition(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasChild(i,"async");u.set(J,{name:k,kind:ce?"AsyncFunction":"FunctionDeclaration",line:A.startPosition.row+1,isExported:this.isExported(i,m),id:J,parentSymbolId:y,category:"function"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleClassDefinition(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`;u.set(J,{name:k,kind:"ClassDeclaration",line:A.startPosition.row+1,isExported:this.isExported(i,m),id:J,parentSymbolId:y,category:"class"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleDecoratedDefinition(i,s,m,u,y){for(let A of i.children)(A.type==="function_definition"||A.type==="class_definition")&&this.extractSymbols(A,s,m,u,y)}extractSymbolsFromChildren(i,s,m,u,y){for(let A of i.children)this.extractSymbols(A,s,m,u,y)}buildImportMap(i,s){let m=new Map;return this.traverseForImports(i,m,s),m}traverseForImports(i,s,m){i.type==="import_from_statement"?this.processFromImport(i,s,m):i.type==="import_statement"&&this.processImportStatement(i,s,m);for(let u of i.children)this.traverseForImports(u,s,m)}processFromImport(i,s,m){let u=i.childForFieldName("module_name");if(!u)return;let y=this.getNodeText(u,m);for(let A of i.children)this.processFromImportChild(A,s,m,y)}processFromImportChild(i,s,m,u){if(i.type==="aliased_import"){this.addAliasedFromImport(i,s,m,u);return}if(i.type==="dotted_name"||i.type==="identifier"){let y=this.getNodeText(i,m);if(y===u||i.parent?.type==="aliased_import")return;s.set(y,u)}}addAliasedFromImport(i,s,m,u){let y=i.childForFieldName("name");if(!y)return;let A=this.getNodeText(y,m),k=i.childForFieldName("alias"),J=k?this.getNodeText(k,m):A;s.set(J,u)}processImportStatement(i,s,m){for(let u of i.children)this.processImportStatementChild(u,s,m)}processImportStatementChild(i,s,m){if(i.type==="aliased_import"){let u=i.childForFieldName("name");if(!u)return;let y=this.getNodeText(u,m),A=i.childForFieldName("alias"),k=A?this.getNodeText(A,m):y;s.set(k,y);return}if(i.type==="dotted_name"||i.type==="identifier"){let u=this.getNodeText(i,m);u!=="import"&&s.set(u,u)}}extractDependencies(i,s,m,u,y,A,k){let J=this.getScopeForNode(i,s,m,A);this.addCallDependencyIfAny(i,s,m,u,y,J,k);for(let ce of i.children)this.extractDependencies(ce,s,m,u,y,J,k)}getScopeForNode(i,s,m,u){if(i.type!=="function_definition"&&i.type!=="class_definition")return u;let y=i.childForFieldName("name");if(!y)return u;let A=this.getNodeText(y,m);return`${s}:${A}`}addCallDependencyIfAny(i,s,m,u,y,A,k){if(i.type!=="call")return;let J=i.childForFieldName("function");if(!J||!A)return;let ce=this.getCalledName(J,m),_e=`${s}:${ce}`;if(y.has(_e)){u.push({sourceSymbolId:A,targetSymbolId:_e,targetFilePath:s,isTypeOnly:!1});return}if(k?.has(ce)){let Me=k.get(ce);u.push({sourceSymbolId:A,targetSymbolId:`${Me}:${ce}`,targetFilePath:Me,isTypeOnly:!1})}}getCalledName(i,s){if(i.type!=="attribute")return this.getNodeText(i,s);let m=i.childForFieldName("attribute");return m?this.getNodeText(m,s):this.getNodeText(i,s)}isExported(i,s){let m=i.childForFieldName("name");return m?!this.getNodeText(m,s).startsWith("_"):!1}hasChild(i,s){for(let m of i.children)if(m.type===s)return!0;return!1}getNodeText(i,s){return s.slice(i.startIndex,i.endIndex)}};var nLe=Kl(require("node:fs/promises")),dN=Kl(require("node:path"));var Wce=class{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i||process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{let i=await this.resolveExtensionPath();if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure RustParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=dN.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=dN.default.join(i,"dist","wasm","tree-sitter-rust.wasm");this.parser=await s.getParser("rust",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Rust WASM parser: ${m}`,{cause:s})}})(),await this.initPromise}}async resolveExtensionPath(){if(this.extensionPath)return this.extensionPath;let i=process.cwd(),s=dN.default.join(i,"dist","wasm","tree-sitter.wasm");try{return await nLe.default.access(s),i}catch{return}}async parseImports(i){try{await this.ensureInitialized();let s=V_(i),m=await this.fileReader.readFile(s),u=this.parser.parse(m);if(!u)throw new Error(`Failed to parse Rust file: ${s}`);let y=[],A=new Set;return this.traverseTree(u.rootNode,k=>{k.type==="use_declaration"?this.extractUseDeclaration(k,y,A,m):k.type==="mod_item"?this.extractModItem(k,y,A,m,i):k.type==="extern_crate_declaration"&&this.extractExternCrate(k,y,A,m)}),y}catch(s){throw Pd.fromError(s,i)}}async resolvePath(i,s){try{await this.ensureInitialized();let m=s.split("::")[0];if(new Set(["std","core","alloc","proc_macro","test","serde","tokio","async_std","futures","vm","rustpython_vm","rustpython","rustpython_parser","rustpython_compiler","num_traits","enum_dispatch","dashmap"]).has(m))return null;let y=V_(i),A=dN.default.dirname(y);return s.startsWith("self::")||s.startsWith("super::")||s.startsWith("crate::")?await this.resolveRelativeModule(i,s):await this.resolveModDeclaration(A,s)}catch{return null}}extractUseDeclaration(i,s,m,u){let y=this.collectIdentifiers(i,u);for(let A of y){if(!A)continue;let k=A.split("::")[0];if(new Set(["std","core","alloc","proc_macro","test","serde","tokio","async_std","futures","vm","rustpython_vm","rustpython","rustpython_parser","rustpython_compiler","num_traits","enum_dispatch","dashmap"]).has(k))continue;let ce=A.toLowerCase();m.has(ce)||(m.add(ce),s.push({path:"",type:"import",line:i.startPosition.row+1,module:ce}))}}extractModItem(i,s,m,u,y){if(this.findChildByType(i,"declaration_list"))return;let k=this.findChildByType(i,"identifier");if(k){let J=this.getNodeText(k,u);J=J.toLowerCase(),J&&!m.has(J)&&(m.add(J),s.push({path:"",type:"import",line:i.startPosition.row+1,module:J}))}}extractExternCrate(i,s,m,u){let y=this.findChildByType(i,"identifier");if(y){let A=this.getNodeText(y,u);if(!A||new Set(["std","core","alloc","proc_macro","test","serde","tokio","async_std","futures","vm","rustpython_vm","rustpython","rustpython_parser","rustpython_compiler","num_traits","enum_dispatch","dashmap"]).has(A))return;let J=A.toLowerCase();m.has(J)||(m.add(J),s.push({path:"",type:"import",line:i.startPosition.row+1,module:J}))}}collectIdentifiers(i,s){let m=[],u=this.findAllByType(i,"scoped_identifier");for(let A of u){let k=this.getNodeText(A,s);k&&m.push(k)}let y=this.findAllByType(i,"identifier");for(let A of y){let k=this.getNodeText(A,s);if(!k||k==="self"||k==="super"||k==="crate")continue;let J=k.charAt(0);J===J.toUpperCase()&&J!==J.toLowerCase()||m.push(k)}return m}async resolveRelativeModule(i,s){let m=dN.default.dirname(i);if(s.startsWith("crate::")){let u=s.slice(7).replaceAll("::","/");return await this.resolveModDeclaration(this.rootDir,u)}if(s.startsWith("super::")){let u=dN.default.dirname(m),y=s.slice(7).replaceAll("::","/");return await this.resolveModDeclaration(u,y)}if(s.startsWith("self::")){let u=s.slice(6).replaceAll("::","/");return await this.resolveModDeclaration(m,u)}return null}async resolveModDeclaration(i,s){if(s!==s.toLowerCase())return null;let m=s.replaceAll("::","/");m=m.toLowerCase();let u=[dN.default.join(i,m+".rs"),dN.default.join(i,m,"mod.rs")];for(let y of u)if(await this.fileExists(y))return Di(y);return null}async fileExists(i){try{return await nLe.default.access(i),!0}catch{return!1}}traverseTree(i,s){s(i);for(let m of i.children)this.traverseTree(m,s)}findChildByType(i,s){for(let m of i.children)if(m.type===s)return m;return null}findAllByType(i,s){let m=[],u=y=>{y.type===s&&m.push(y);for(let A of y.children)u(A)};return u(i),m}getNodeText(i,s){return s.slice(i.startIndex,i.endIndex)}};var jst=Kl(require("node:fs/promises")),zce=Kl(require("node:path"));var Bce=class{parser=null;fileReader;initPromise=null;extensionPath;constructor(i,s){this.extensionPath=s??i,this.fileReader=new Nm}async ensureInitialized(){if(!this.parser){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{let i=await this.resolveExtensionPath();if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure RustSymbolAnalyzer is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=zce.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=zce.default.join(i,"dist","wasm","tree-sitter-rust.wasm");this.parser=await s.getParser("rust",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Rust WASM parser for symbol analysis: ${m}`,{cause:s})}})(),await this.initPromise}}async resolveExtensionPath(){if(this.extensionPath)return this.extensionPath;let i=process.cwd(),s=zce.default.join(i,"dist","wasm","tree-sitter.wasm");try{return await jst.default.access(s),i}catch{return}}async analyzeFile(i){try{await this.ensureInitialized();let s=await this.fileReader.readFile(i);return this.analyzeFileFromContent(i,s)}catch(s){throw Pd.fromError(s,i)}}analyzeFileFromContent(i,s){if(!this.parser)throw new Error("Parser not initialized. Call ensureInitialized() before using analyzeFileFromContent().");let m=this.parser.parse(s);if(!m)throw new Error(`Failed to parse Rust file: ${i}`);let u=new Map,y=Di(i);return this.extractSymbols(m.rootNode,y,s,u),u}analyzeFileContent(i,s){if(!this.parser)throw new Error("Parser not initialized. Call ensureInitialized() before using analyzeFileContent().");let m=this.parser.parse(s);if(!m)throw new Error(`Failed to parse Rust file: ${i}`);let u=new Map,y=[],A=Di(i);this.extractSymbols(m.rootNode,A,s,u);let k=this.buildImportMap(m.rootNode,s);return this.extractDependencies(m.rootNode,A,s,y,u,void 0,k),{symbols:Array.from(u.values()),dependencies:y}}async getSymbolDependencies(i){try{await this.ensureInitialized();let s=await this.fileReader.readFile(i);return this.analyzeFileContent(i,s).dependencies}catch(s){throw Pd.fromError(s,i)}}extractSymbols(i,s,m,u,y){this.tryExtractSymbolFromNode(i,s,m,u,y)||this.extractSymbolsFromChildren(i,s,m,u,y)}tryExtractSymbolFromNode(i,s,m,u,y){return i.type==="function_item"?(this.handleFunctionItem(i,s,m,u,y),!0):i.type==="struct_item"?(this.handleStructItem(i,s,m,u,y),!0):i.type==="enum_item"?(this.handleEnumItem(i,s,m,u,y),!0):i.type==="trait_item"?(this.handleTraitItem(i,s,m,u,y),!0):i.type==="impl_item"?(this.handleImplItem(i,s,m,u,y),!0):!1}handleFunctionItem(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasModifier(i,"async"),_e=this.hasVisibilityModifier(i,"pub");u.set(J,{name:k,kind:ce?"AsyncFunction":"FunctionDeclaration",line:A.startPosition.row+1,isExported:_e,id:J,parentSymbolId:y,category:"function"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleStructItem(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasVisibilityModifier(i,"pub");u.set(J,{name:k,kind:"StructDeclaration",line:A.startPosition.row+1,isExported:ce,id:J,parentSymbolId:y,category:"class"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleEnumItem(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasVisibilityModifier(i,"pub");u.set(J,{name:k,kind:"EnumDeclaration",line:A.startPosition.row+1,isExported:ce,id:J,parentSymbolId:y,category:"type"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleTraitItem(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasVisibilityModifier(i,"pub");u.set(J,{name:k,kind:"InterfaceDeclaration",line:A.startPosition.row+1,isExported:ce,id:J,parentSymbolId:y,category:"type"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleImplItem(i,s,m,u,y){this.extractSymbolsFromChildren(i,s,m,u,y)}extractSymbolsFromChildren(i,s,m,u,y){for(let A of i.children)this.extractSymbols(A,s,m,u,y)}buildImportMap(i,s){let m=new Map,u=y=>{if(y.type==="use_declaration"&&this.extractUseDeclarationImports(y,s,m),y.type==="mod_item"){let A=y.childForFieldName("name");if(A){let k=this.getNodeText(A,s);m.set(k,k)}}for(let A of y.children)u(A)};return u(i),m}extractUseDeclarationImports(i,s,m){this.extractFromUseLists(i,s,m),this.extractFromScopedIdentifiers(i,s,m),this.extractFromUseAsClauses(i,s,m)}extractFromUseLists(i,s,m){let u=this.findAllByType(i,"use_list");for(let y of u){let A=this.findBaseModuleForUseList(y,s);this.extractIdentifiersFromUseList(y,A,s,m)}}findBaseModuleForUseList(i,s){let m=i.parent;for(;m;){if(m.type==="scoped_use_list"){let u=this.findScopedIdentifierInChildren(m,s);if(u)return u}m=m.parent}return""}findScopedIdentifierInChildren(i,s){for(let m of i.children)if(m.type==="scoped_identifier")return this.getNodeText(m,s);return""}extractIdentifiersFromUseList(i,s,m,u){for(let y of i.children)if(y.type==="identifier"){let A=this.getNodeText(y,m);u.set(A,s)}}extractFromScopedIdentifiers(i,s,m){let u=this.findAllByType(i,"scoped_identifier");for(let y of u){if(this.hasAncestorOfType(y,"use_list"))continue;let A=this.getNodeText(y,s),{localName:k,modulePath:J}=this.splitModulePath(A);m.set(k,J)}}splitModulePath(i){let s=i.split("::"),m=s.at(-1),u=s.slice(0,-1).join("::");return{localName:m,modulePath:u}}extractFromUseAsClauses(i,s,m){let u=this.findAllByType(i,"use_as_clause");for(let y of u){let A=y.childForFieldName("path"),k=y.childForFieldName("alias");if(A&&k){let J=this.getNodeText(A,s),ce=this.getNodeText(k,s);m.set(ce,J)}}}extractDependencies(i,s,m,u,y,A,k){let J=this.getScopeForNode(i,s,m,A);this.addCallDependencyIfAny(i,s,m,u,y,J,k);for(let ce of i.children)this.extractDependencies(ce,s,m,u,y,J,k)}getScopeForNode(i,s,m,u){if(i.type!=="function_item")return u;let y=i.childForFieldName("name");if(!y)return u;let A=this.getNodeText(y,m);return`${s}:${A}`}addCallDependencyIfAny(i,s,m,u,y,A,k){if(i.type!=="call_expression")return;let J=i.childForFieldName("function");if(!J||!A)return;let{moduleName:ce,symbolName:_e}=this.extractModuleAndSymbolName(J,m),Me=`${s}:${_e}`;if(y.has(Me)){u.push({sourceSymbolId:A,targetSymbolId:Me,targetFilePath:s,isTypeOnly:!1});return}if(ce&&k?.has(ce)){let se=k.get(ce);u.push({sourceSymbolId:A,targetSymbolId:`${se}:${_e}`,targetFilePath:se,isTypeOnly:!1});return}if(k?.has(_e)){let se=k.get(_e);u.push({sourceSymbolId:A,targetSymbolId:`${se}:${_e}`,targetFilePath:se,isTypeOnly:!1})}}extractModuleAndSymbolName(i,s){if(i.type==="field_expression"){let m=i.childForFieldName("field");if(m)return{moduleName:void 0,symbolName:this.getNodeText(m,s)}}if(i.type==="scoped_identifier"){let u=this.getNodeText(i,s).split("::");if(u.length>=2){let y=u.at(-1);return{moduleName:u.slice(0,-1).join("::"),symbolName:y}}return{moduleName:void 0,symbolName:u[0]}}return{moduleName:void 0,symbolName:this.getNodeText(i,s)}}hasVisibilityModifier(i,s){if(i.childForFieldName("visibility_modifier"))return!0;for(let u of i.children)if(u.type==="visibility_modifier")return!0;return!1}hasAncestorOfType(i,s){let m=i.parent;for(;m;){if(m.type===s)return!0;m=m.parent}return!1}hasModifier(i,s){for(let m of i.children)if(m.type===s)return!0;return!1}findAllByType(i,s){let m=[],u=y=>{y.type===s&&m.push(y);for(let A of y.children)u(A)};return u(i),m}getNodeText(i,s){return s.slice(i.startIndex,i.endIndex)}};var j3=class d{static typeScriptParsers=new Map;static typeScriptSymbolAnalyzers=new Map;static pythonParsers=new Map;static pythonSymbolAnalyzers=new Map;static rustParsers=new Map;static rustSymbolAnalyzers=new Map;static csharpParsers=new Map;static goParsers=new Map;static javaParsers=new Map;rootDir;extensionPath;constructor(i,s,m){this.rootDir=i,this.extensionPath=m}getAnalyzer(i){let s=V_(i);return d.getAnalyzer(s,this.rootDir,this.extensionPath)}getSymbolAnalyzer(i){let s=V_(i);return d.getSymbolAnalyzer(s,this.rootDir,this.extensionPath)}static detectLanguage(i){let s=V_(i);switch(Ust.default.extname(s).toLowerCase()){case".ts":case".tsx":case".js":case".jsx":case".mjs":case".cjs":case".vue":case".svelte":case".gql":case".graphql":return"typescript";case".py":case".pyi":return"python";case".rs":case".toml":return"rust";case".cs":case".csproj":return"csharp";case".go":return"go";case".java":return"java";default:return"unknown"}}static getAnalyzer(i,s,m){let u=V_(i);switch(this.detectLanguage(u)){case"typescript":{let A=this.buildCacheKey(s),k=this.typeScriptParsers.get(A);if(k)return k;let J=new m3(s);return this.typeScriptParsers.set(A,J),J}case"python":{let A=this.buildCacheKey(s,m),k=this.pythonParsers.get(A);if(k)return k;let J=new wce(s,m);return this.pythonParsers.set(A,J),J}case"rust":{let A=this.buildCacheKey(s,m),k=this.rustParsers.get(A);if(k)return k;let J=new Wce(s,m);return this.rustParsers.set(A,J),J}case"csharp":{let A=this.buildCacheKey(s,m),k=this.csharpParsers.get(A);if(k)return k;let J=new Rce(s,m);return this.csharpParsers.set(A,J),J}case"go":{let A=this.buildCacheKey(s,m),k=this.goParsers.get(A);if(k)return k;let J=new Lce(s,m);return this.goParsers.set(A,J),J}case"java":{let A=this.buildCacheKey(s,m),k=this.javaParsers.get(A);if(k)return k;let J=new kce(s,m);return this.javaParsers.set(A,J),J}default:throw new Error(`Unsupported language for file: ${i}`)}}static getSymbolAnalyzer(i,s,m){let u=V_(i);switch(this.detectLanguage(u)){case"typescript":{let A=this.buildCacheKey(s),k=this.typeScriptSymbolAnalyzers.get(A);if(k)return k;let J=new Nce(s);return this.typeScriptSymbolAnalyzers.set(A,J),J}case"python":{let A=this.buildCacheKey(s,m),k=this.pythonSymbolAnalyzers.get(A);if(k)return k;let J=new Fce(s,m);return this.pythonSymbolAnalyzers.set(A,J),J}case"rust":{let A=this.buildCacheKey(s,m),k=this.rustSymbolAnalyzers.get(A);if(k)return k;let J=new Bce(s,m);return this.rustSymbolAnalyzers.set(A,J),J}default:throw new Error(`Unsupported language for file: ${i}`)}}static isSupported(i){return this.detectLanguage(i)!=="unknown"}static reset(){this.typeScriptParsers.clear(),this.typeScriptSymbolAnalyzers.clear(),this.pythonParsers.clear(),this.pythonSymbolAnalyzers.clear(),this.rustParsers.clear(),this.rustSymbolAnalyzers.clear(),this.csharpParsers.clear(),this.goParsers.clear(),this.javaParsers.clear()}static buildCacheKey(...i){return i.map(s=>s??"").join("\0")}};var Hst=ld("ReferencingFilesFinder"),U3=class{sourceFileCollector;getRootDir;getConcurrency;findReferenceInFile;constructor(i){this.sourceFileCollector=i.sourceFileCollector,this.getRootDir=i.getRootDir,this.getConcurrency=i.getConcurrency,this.findReferenceInFile=i.findReferenceInFile}async findReferencingFilesFallback(i){let s=Di(i),m=this.extractBasename(s);if(!m)return[];Hst.debug("findReferencingFilesFallback for",s,"basename:",m);let u=await this.sourceFileCollector.collectAllSourceFiles(this.getRootDir()),y=[],A=this.getConcurrency()??8;for(let k=0;k<u.length;k+=A){let J=u.slice(k,k+A),ce=await Promise.all(J.filter(_e=>Di(_e)!==s).map(_e=>this.findReferenceInFile(_e,s,m)));for(let _e of ce)_e&&y.push(_e)}return Hst.debug("findReferencingFilesFallback found",y.length,"referencing files"),y}extractBasename(i){return i.split(/[/\\]/).pop()?.replace(/\.[^/.]+$/,"")}};var Jst=Kl(require("node:fs/promises"));var Kst=ld("ReverseIndex"),rLe=1,uL=class d{reverseMap=new Map;fileHashes=new Map;rootDir;constructor(i){this.rootDir=Di(i)}addDependencies(i,s,m){let u=Di(i);this.removeDependenciesFromSource(u);for(let y of s){let A=Di(y.path),k={sourcePath:u,type:y.type,line:y.line,module:y.module},J=this.reverseMap.get(A);J||(J=new Map,this.reverseMap.set(A,J)),J.set(u,k)}m&&this.fileHashes.set(u,m)}removeDependenciesFromSource(i){let s=Di(i);for(let[,m]of this.reverseMap)m.delete(s);this.fileHashes.delete(s)}getReferencingFiles(i){let s=Di(i),m=this.reverseMap.get(s);return m?.size===0?(this.reverseMap.delete(s),[]):m?Array.from(m.values()).map(u=>({path:u.sourcePath,type:u.type,line:u.line,module:u.module})):[]}getCallerCount(i){let s=Di(i);return this.reverseMap.get(s)?.size??0}isFileStale(i,s){let m=Di(i),u=this.fileHashes.get(m);return u?u.mtime!==s.mtime||u.size!==s.size:!0}getFileHash(i){return this.fileHashes.get(Di(i))}updateFileHash(i,s){this.fileHashes.set(Di(i),s)}hasEntries(){return this.reverseMap.size>0}hasFile(i){return this.fileHashes.has(Di(i))}get indexedFileCount(){return this.fileHashes.size}get targetFileCount(){return this.reverseMap.size}clear(){this.reverseMap.clear(),this.fileHashes.clear()}cleanup(){let i=0,s=[];for(let[m,u]of this.reverseMap)u.size===0&&s.push(m);for(let m of s)this.reverseMap.delete(m),i++;return i}static async getFileHashFromDisk(i){try{let s=await Jst.stat(i);return{mtime:s.mtimeMs,size:s.size}}catch{return null}}serialize(){let i={};for(let[m,u]of this.reverseMap)i[m]=Array.from(u.values());let s={};for(let[m,u]of this.fileHashes)s[m]=u;return{version:rLe,timestamp:Date.now(),rootDir:this.rootDir,reverseMap:i,fileHashes:s}}static deserialize(i,s){let m=Di(s),u=Di(i.rootDir);if(i.version!==rLe)return Kst.warn("Version mismatch:",i.version,"!==",rLe),null;if(u!==m)return Kst.warn("Root dir mismatch:",i.rootDir,"!==",s),null;let y=new d(s);for(let[A,k]of Object.entries(i.fileHashes))y.fileHashes.set(Di(A),k);for(let[A,k]of Object.entries(i.reverseMap)){let J=Di(A),ce=new Map;for(let _e of k){let Me=Di(_e.sourcePath);ce.set(Me,{..._e,sourcePath:Me})}y.reverseMap.set(J,ce)}return y}async validateIndex(i=.2){let s=[],m=[];for(let k of this.fileHashes.keys()){let J=await d.getFileHashFromDisk(k);if(!J){m.push(k);continue}this.isFileStale(k,J)&&s.push(k)}let u=this.fileHashes.size,y=s.length+m.length,A=u>0?y/u:0;return{isValid:A<=i,staleFiles:s,stalePercentage:A,missingFiles:m}}getStats(){let i=0;for(let s of this.reverseMap.values())i+=s.size;return{indexedFiles:this.fileHashes.size,targetFiles:this.reverseMap.size,totalReferences:i}}};var K3=Kl(require("node:fs/promises")),qst=Kl(require("node:path"));var $st=1,H3=class{reverseMap=new Map;fileHashes=new Map;rootDir;lastUpdated=0;constructor(i){this.rootDir=Di(i)}addDependencies(i,s,m){let u=Di(i);this.removeDependenciesFromSource(u);for(let y of s){let A={callerSymbolId:y.sourceSymbolId,callerFilePath:u,isTypeOnly:y.isTypeOnly??!1},k=this.reverseMap.get(y.targetSymbolId);k||(k=new Map,this.reverseMap.set(y.targetSymbolId,k)),k.set(y.sourceSymbolId,A)}m&&this.fileHashes.set(u,m),this.lastUpdated=Date.now()}removeDependenciesFromSource(i){let s=Di(i);for(let[,m]of this.reverseMap)for(let[u,y]of m)y.callerFilePath===s&&m.delete(u);this.fileHashes.delete(s),this.lastUpdated=Date.now()}getCallers(i){let s=this.reverseMap.get(i);return s?.size===0?(this.reverseMap.delete(i),[]):s?Array.from(s.values()):[]}getCallersFiltered(i,s=!0){let m=this.getCallers(i);return s?m:m.filter(u=>!u.isTypeOnly)}getRuntimeCallers(i){return this.getCallersFiltered(i,!1)}getTypeOnlyCallers(i){return this.getCallers(i).filter(s=>s.isTypeOnly)}hasCallers(i){let s=this.reverseMap.get(i);return s!==void 0&&s.size>0}getCallerCount(i){return this.reverseMap.get(i)?.size??0}getCallerFiles(i){let s=this.getCallers(i),m=new Set;for(let u of s)m.add(u.callerFilePath);return Array.from(m)}getStats(){let i=0;for(let s of this.reverseMap.values())i+=s.size;return{targetSymbolCount:this.reverseMap.size,totalCallerCount:i,sourceFileCount:this.fileHashes.size,lastUpdated:this.lastUpdated}}isFileStale(i,s){let m=Di(i),u=this.fileHashes.get(m);return u?u.mtime!==s.mtime||u.size!==s.size:!0}clear(){this.reverseMap.clear(),this.fileHashes.clear(),this.lastUpdated=Date.now()}cleanup(){let i=0,s=[];for(let[m,u]of this.reverseMap)u.size===0&&s.push(m);for(let m of s)this.reverseMap.delete(m),i++;return i}serialize(){let i={};for(let[m,u]of this.reverseMap)i[m]=Array.from(u.values());let s={};for(let[m,u]of this.fileHashes)s[m]=u;return{version:$st,timestamp:Date.now(),rootDir:this.rootDir,reverseMap:i,fileHashes:s}}deserialize(i){if(i.version!==$st||Di(i.rootDir)!==this.rootDir)return!1;this.clear();for(let[s,m]of Object.entries(i.reverseMap)){let u=new Map;for(let y of m)u.set(y.callerSymbolId,y);this.reverseMap.set(s,u)}for(let[s,m]of Object.entries(i.fileHashes))this.fileHashes.set(s,m);return this.lastUpdated=i.timestamp,!0}async saveToFile(i){let s=this.serialize(),m=JSON.stringify(s,null,2);await K3.mkdir(qst.dirname(i),{recursive:!0}),await K3.writeFile(i,m,"utf-8")}async loadFromFile(i){try{let s=await K3.readFile(i,"utf-8"),m=JSON.parse(s);return this.deserialize(m)}catch{return!1}}};var J3=class{constructor(i){this.rootDir=i}rootDir;reverseIndex=null;symbolReverseIndex=null;enable(i){let s=!1;if(this.reverseIndex??=new uL(this.rootDir),this.symbolReverseIndex??=new H3(this.rootDir),i)try{let m=JSON.parse(i),u=uL.deserialize(m,this.rootDir);u&&(this.reverseIndex=u,s=!0)}catch{s=!1}return s}disable(){this.reverseIndex?.clear(),this.reverseIndex=null,this.symbolReverseIndex?.clear(),this.symbolReverseIndex=null}clear(){this.reverseIndex?.clear(),this.symbolReverseIndex?.clear()}isEnabled(){return this.reverseIndex!==null}hasEntries(){return this.reverseIndex?.hasEntries()??!1}ensure(){this.reverseIndex??=new uL(this.rootDir)}addDependencies(i,s,m){this.reverseIndex?.addDependencies(i,s,m)}removeDependenciesFromSource(i){this.reverseIndex?.removeDependenciesFromSource(i)}getReferencingFiles(i){return this.reverseIndex?this.reverseIndex.getReferencingFiles(i):[]}getCallerCount(i){return this.reverseIndex?this.reverseIndex.getCallerCount(i):0}getSerialized(){return this.reverseIndex?JSON.stringify(this.reverseIndex.serialize()):null}validate(i=.2){return this.reverseIndex?.validateIndex(i)??null}getStats(){return this.reverseIndex?.getStats()}addSymbolDependencies(i,s,m){this.symbolReverseIndex?.addDependencies(i,s,m)}removeSymbolDependenciesFromSource(i){this.symbolReverseIndex?.removeDependenciesFromSource(i)}getSymbolReferencingFiles(i){return this.symbolReverseIndex?.getCallerFiles(i)??[]}getSymbolStats(){return this.symbolReverseIndex?.getStats()}};var Zst=Kl(require("node:fs/promises")),Qst=Kl(require("node:path"));var tUt=new Set(f3.filter(d=>d!=="node_modules"));function Xst(d){return p3.some(i=>d.endsWith(i))}function Yst(d,i){return i&&d==="node_modules"||tUt.has(d)?!0:d.startsWith(".")}var nUt=ld("SourceFileCollector"),x1=class{excludeNodeModules;yieldIntervalMs;yieldCallback;isCancelled;constructor(i){this.excludeNodeModules=i.excludeNodeModules,this.yieldIntervalMs=i.yieldIntervalMs??50,this.yieldCallback=i.yieldCallback??(async()=>{}),this.isCancelled=i.isCancelled??(()=>!1)}updateOptions(i){i.excludeNodeModules!==void 0&&(this.excludeNodeModules=i.excludeNodeModules)}async collectAllSourceFiles(i){let s=[],m=Date.now(),u=async(A,k)=>{let J=Qst.join(k,A.name);A.isDirectory()&&!Yst(A.name,this.excludeNodeModules)?await y(J):A.isFile()&&Xst(A.name)&&s.push(J)},y=async A=>{if(this.isCancelled())return;Date.now()-m>=this.yieldIntervalMs&&(await this.yieldCallback(),m=Date.now());try{let J=await Zst.readdir(A,{withFileTypes:!0});for(let ce of J){if(this.isCancelled())return;await u(ce,A)}}catch(J){J.code!=="ENOENT"&&J.code!=="EACCES"&&nUt.error("Error reading directory",A,J)}};return await y(i),s}};var $3=class{constructor(i,s,m){this.dependencyCache=i;this.symbolCache=s;this.reverseIndexManager=m}dependencyCache;symbolCache;reverseIndexManager;clearAll(){this.dependencyCache.clear(),this.symbolCache.clear(),this.reverseIndexManager.clear()}invalidateFile(i){let s=Di(i),m=this.dependencyCache.has(s);return this.dependencyCache.delete(s),this.symbolCache.delete(s),this.reverseIndexManager.removeDependenciesFromSource(s),m}invalidateFiles(i){let s=0;for(let m of i)this.invalidateFile(m)&&s++;return s}handleFileDeleted(i){let s=Di(i);this.dependencyCache.delete(s),this.symbolCache.delete(s),this.reverseIndexManager.removeDependenciesFromSource(s)}};var q3=ld("SpiderDependencyAnalyzer"),X3=class{constructor(i,s,m,u){this.languageService=i;this.resolver=s;this.dependencyCache=m;this.reverseIndexManager=u}languageService;resolver;dependencyCache;reverseIndexManager;async analyze(i){let s=Di(i),m=this.dependencyCache.get(s);if(m)return q3.debug(`Returning ${m.length} cached dependencies for ${i}`),await this.updateReverseIndexIfEnabled(i,s,m),m;q3.debug(`Analyzing ${i}...`);try{let u=this.languageService.getAnalyzer(i),y=await u.parseImports(i);q3.debug(`Parsed ${y.length} imports from ${i}`);let A=[],k=new Set;for(let J of y){let ce=await u.resolvePath(i,J.module);if(!ce){q3.debug(`Failed to resolve module "${J.module}" from ${i}`);continue}let _e=Di(ce);k.has(_e)||(k.add(_e),A.push({path:_e,type:J.type,line:J.line,module:J.module}))}return q3.debug(`Resolved ${A.length} dependencies for ${i}`),this.dependencyCache.set(s,A),await this.updateReverseIndexIfEnabled(i,s,A),A}catch(u){let y=Pd.fromError(u,i);throw q3.error("Analysis failed:",y.toUserMessage(),y.code),y}}async resolveModuleSpecifier(i,s){try{return await this.resolver.resolve(i,s)}catch{return null}}invalidateDependencyCache(i){this.dependencyCache.delete(Di(i))}async updateReverseIndexIfEnabled(i,s,m){if(!this.reverseIndexManager.isEnabled()||m.length===0)return;let u=await uL.getFileHashFromDisk(i);u&&this.reverseIndexManager.addDependencies(s,m,u)}};function OO(d){let s=Di(d).split("/");for(let m=0;m<s.length-1;m++)if(f3.includes(s[m]))return!0;return!1}var pL=ld("SpiderGraphCrawler"),Y3=class{constructor(i,s){this.dependencyAnalyzer=i;this.getConfig=s}dependencyAnalyzer;getConfig;async crawl(i){let s=new Set,m=[],u=new Set,y=new Set,A={};pL.debug(`Starting crawl from: ${i}`);let k=async(J,ce)=>{let _e=Di(J),Me=this.getConfig().maxDepth??3;if(ce>Me){pL.debug(`Skipping ${J}: max depth ${Me} reached`);return}if(y.has(_e)){pL.debug(`Skipping ${J}: already visited`);return}y.add(_e),s.add(_e);try{let se=await this.dependencyAnalyzer.analyze(J);pL.debug(`Found ${se.length} dependencies for ${J}`);for(let ft of se){s.add(ft.path);let Je=`${_e}->${ft.path}`;u.has(Je)||(u.add(Je),m.push({source:_e,target:ft.path}),pL.debug(`Added edge: ${_e} -> ${ft.path}`)),ft.module.startsWith("@")&&ft.module.includes("/")&&!ft.module.startsWith("@/")&&(A[ft.path]=ft.module),OO(ft.path)?pL.debug(`Skipping ${ft.path}: in ignored directory`):await k(ft.path,ce+1)}}catch(se){pL.debug(`Failed to analyze ${J}: ${se}`)}};return await k(i,0),pL.debug(`Crawl completed: ${s.size} nodes, ${m.length} edges`),{nodes:Array.from(s),edges:m,nodeLabels:Object.keys(A).length>0?A:void 0}}async crawlFrom(i,s,m=10,u){let y=new Set,A=[],k=new Set,J={},ce=new Set(Array.from(s).map(On=>Di(On))),_e=Di(i),Me=new Set,se=[],ft=new Set,Je={},Ze=u?.batchSize??200,Nr=()=>{if(u?.signal?.aborted){let On=new Error("Expansion cancelled");throw On.name="AbortError",On}},Jr=(On,fn)=>fn>m?!0:On===_e?fn!==0&&k.has(On):k.has(On),Ei=On=>{ce.has(On)||(y.add(On),Me.add(On))},Wo=(On,fn)=>{let hi=`${fn}->${On.path}`;ft.has(hi)||(ft.add(hi),A.push({source:fn,target:On.path}),se.push({source:fn,target:On.path})),!k.has(On.path)&&!ce.has(On.path)&&(y.add(On.path),Me.add(On.path)),On.module.startsWith("@")&&On.module.includes("/")&&!On.module.startsWith("@/")&&(J[On.path]=On.module,Je[On.path]=On.module)},Ga=async()=>{if(!u?.onBatch){Me.clear(),se.length=0;return}if(Me.size===0&&se.length===0)return;let On={nodes:Array.from(Me),edges:[...se],nodeLabels:Object.keys(Je).length>0?{...Je}:void 0};Me.clear(),se.length=0;for(let fn of Object.keys(Je))delete Je[fn];await u.onBatch(On)},So=async(On,fn)=>{Nr();let hi=Di(On);if(!Jr(hi,fn)){k.add(hi),Ei(hi);try{let jr=await this.dependencyAnalyzer.analyze(On);for(let cr of jr)Wo(cr,hi),OO(cr.path)||await So(cr.path,fn+1);Me.size+se.length>=Ze&&await Ga()}catch{}}};return await So(i,0),await Ga(),{nodes:Array.from(y),edges:A,nodeLabels:Object.keys(J).length>0?J:void 0}}};var Z3=class{cancelled=!1;reset(){this.cancelled=!1}cancel(){this.cancelled=!0}isCancelled(){return this.cancelled}};function Q3(){return new Promise(d=>setTimeout(d,1))}var ez=50;var FO=ld("SpiderIndexingService"),tz=class{constructor(i,s,m,u,y,A,k,J,ce,_e){this.dependencyAnalyzer=i;this.dependencyCache=s;this.reverseIndexManager=m;this.sourceFileCollector=u;this.indexerStatus=y;this.workerManager=A;this.cancellation=k;this.getConfig=J;this.yieldToEventLoop=ce;this.getSymbolGraph=_e}dependencyAnalyzer;dependencyCache;reverseIndexManager;sourceFileCollector;indexerStatus;workerManager;cancellation;getConfig;yieldToEventLoop;getSymbolGraph;cancel(){this.cancellation.cancel(),this.workerManager.cancel()}disposeWorker(){this.workerManager.dispose()}async analyzeFileForIndex(i,s){try{if(await this.dependencyAnalyzer.analyze(i),this.getSymbolGraph&&s<(this.getConfig().maxSymbolAnalyzerFiles??100))try{let m=await this.getSymbolGraph(i);m.dependencies.length>0&&this.reverseIndexManager.addSymbolDependencies(i,m.dependencies)}catch{}return!0}catch{return!1}}checkCancellation(i){if(this.cancellation.isCancelled())return this.indexerStatus.setCancelled(),{indexedFiles:i,duration:Date.now()-(this.indexerStatus.getSnapshot().startTime??Date.now()),cancelled:!0}}async buildFullIndex(i){this.reverseIndexManager.ensure(),this.cancellation.reset(),this.indexerStatus.startCounting();let s=await this.sourceFileCollector.collectAllSourceFiles(this.getConfig().rootDir),m=this.checkCancellation(0);if(m)return m;let u=s.length;this.indexerStatus.setTotal(u),await this.yieldToEventLoop(),this.indexerStatus.startIndexing();let y=0,A=Date.now();try{for(let ce of s){let _e=this.checkCancellation(y);if(_e)return _e;await this.analyzeFileForIndex(ce,y),y++,this.indexerStatus.updateProgress(y,ce),i?.(y,u,ce),Date.now()-A>=ez&&(await this.yieldToEventLoop(),A=Date.now())}this.indexerStatus.complete();let k=this.indexerStatus.getSnapshot(),J=Date.now()-(k.startTime??Date.now());return{indexedFiles:y,duration:J,cancelled:!1}}catch(k){let J=Pd.fromError(k);throw this.indexerStatus.setError(J.toUserMessage()),FO.error("Indexing failed:",J.toUserMessage(),J.code),J}}async buildFullIndexInWorker(i,s){let m=this.getConfig();return this.workerManager.buildFullIndexInWorker({workerPath:i,progressCallback:s,config:{rootDir:m.rootDir,excludeNodeModules:m.excludeNodeModules,tsConfigPath:m.tsConfigPath,progressInterval:m.indexingProgressInterval,extensionPath:m.extensionPath}})}async reindexStaleFiles(i,s){if(!this.reverseIndexManager.isEnabled())return 0;FO.info(`Re-indexing ${i.length} stale files`);let m=this.getConfig().indexingConcurrency??8,u=0;for(let y=0;y<i.length;y+=m){let A=i.slice(y,y+m);await Promise.all(A.map(async k=>{let J=Di(k);FO.debug(`Re-indexing stale file: ${k}`);try{this.reverseIndexManager.removeDependenciesFromSource(J),this.dependencyCache.delete(J),FO.debug(`Deleted cache for ${k}, re-analyzing...`),await this.dependencyAnalyzer.analyze(k),FO.debug(`Successfully re-analyzed ${k}`)}catch(ce){FO.error(`Failed to re-index ${k}:`,ce),this.reverseIndexManager.removeDependenciesFromSource(J)}})),u+=A.length,s?.(u,i.length,A.at(-1)),await this.yieldToEventLoop()}return FO.info(`Completed re-indexing ${u} files`),u}};var nz=class{constructor(i,s,m){this.reverseIndexManager=i;this.dependencyAnalyzer=s;this.fileReader=m}reverseIndexManager;dependencyAnalyzer;fileReader;fallbackFinder=null;_fallbackCache=new Map;_fallbackCacheVersion=0;_fallbackCacheEntryVersion=new Map;setFallbackFinder(i){this.fallbackFinder=i}clearFallbackCache(){this._fallbackCacheVersion++}async findReferencingFiles(i){if(this.reverseIndexManager.hasEntries())return this.reverseIndexManager.getReferencingFiles(i);if(this._fallbackCacheEntryVersion.get(i)===this._fallbackCacheVersion){let u=this._fallbackCache.get(i);if(u!==void 0)return u}let m=this.fallbackFinder?await this.fallbackFinder.findReferencingFilesFallback(i):[];return this._fallbackCache.set(i,m),this._fallbackCacheEntryVersion.set(i,this._fallbackCacheVersion),m}async findReferenceInFile(i,s,m){try{if(!(await this.fileReader.readFile(i)).includes(m))return null;let A=(await this.dependencyAnalyzer.analyze(i)).find(k=>Di(k.path)===s);return A?{path:Di(i),type:A.type,line:A.line,module:A.module}:null}catch{return null}}};var iLe=Kl(require("node:path"));var fL=ld("SpiderSymbolService"),rz=class{constructor(i,s,m,u,y,A,k,J){this.astWorkerHost=i;this.symbolCache=s;this.fileReader=m;this.resolver=u;this.symbolDependencyHelper=y;this.getConfig=A;this.findReferencingFiles=k;this.languageService=J}astWorkerHost;symbolCache;fileReader;resolver;symbolDependencyHelper;getConfig;findReferencingFiles;languageService;async getSymbolGraph(i){if(!iLe.default.isAbsolute(i))try{let u=await this.resolveModuleSpecifier(this.getConfig().rootDir,i);u&&(i=u)}catch{}let s=Di(i),m=this.symbolCache.get(s);if(m)return m;try{let u=await this.fileReader.readFile(i),y=await this.astWorkerHost.analyzeFile(s,u),A=await Promise.all(y.dependencies.map(async J=>{try{let _e=await this.languageService.getAnalyzer(s).resolvePath(s,J.targetFilePath);if(_e)return{...J,targetFilePath:Di(_e)}}catch{}return J})),k={symbols:y.symbols,dependencies:A};return this.symbolCache.set(s,k),k}catch(u){let y=Pd.fromError(u,i);if(fL.error("Symbol analysis failed:",y.toUserMessage()),y.isRecoverable())return{symbols:[],dependencies:[]};throw y}}async findUnusedSymbols(i){try{let s=Di(i),{symbols:m}=await this.getSymbolGraph(s),u=m.filter(_e=>_e.isExported);if(u.length===0)return[];let y=await this.findReferencingFiles(s),A=await this.collectUsedSymbolIds(y,s),k=await this.fileReader.readFile(s),J=await this.astWorkerHost.getInternalExportDependencyGraph(s,k),ce=this.expandUsedSymbolsViaInternalGraph(A,J);return u.filter(_e=>!ce.has(_e.id))}catch(s){let m=Pd.fromError(s,i);return fL.error("Find unused symbols failed:",m.toUserMessage()),[]}}async getSymbolDependents(i,s){let m=await this.findReferencingFiles(i);return this.collectSymbolDependents(m,i,s)}async traceFunctionExecution(i,s,m=10){let u=`${i}:${s}`,y=[],A=new Set,k=!1,J=async(ce,_e,Me)=>{if(Me>m){k=!0;return}let se=`${ce}:${_e}`;if(!A.has(se)){A.add(se);try{let{symbols:ft,dependencies:Je}=await this.getSymbolGraph(ce),Ze=ft.find(Jr=>Jr.name===_e);if(!Ze)return;let Nr=Je.filter(Jr=>Jr.sourceSymbolId===Ze.id);for(let Jr of Nr){let Ei=null;try{Ei=await this.resolver.resolve(ce,Jr.targetFilePath)}catch{}let Wo=Jr.targetSymbolId.split(":").pop()||"";y.push({depth:Me,callerSymbolId:se,calledSymbolId:Jr.targetSymbolId,calledFilePath:Jr.targetFilePath,resolvedFilePath:Ei}),Ei&&!OO(Ei)&&await J(Ei,Wo,Me+1)}}catch(ft){let Je=Pd.fromError(ft,ce);fL.error("Trace execution failed:",se,Je.toUserMessage())}}};return await J(i,s,1),{rootSymbol:{id:u,filePath:i,symbolName:s},callChain:y,visitedSymbols:Array.from(A),maxDepthReached:k}}async resolveModuleSpecifier(i,s){try{return await this.resolver.resolve(i,s)}catch{return null}}expandUsedSymbolsViaInternalGraph(i,s){let m=new Set(i),u=Array.from(m);for(;u.length>0;){let y=u.pop(),A=s.get(y);if(A)for(let k of A)m.has(k)||(m.add(k),u.push(k))}return m}async collectUsedSymbolIds(i,s){let m=new Set;for(let u of i){let{dependencies:y}=await this.getSymbolGraph(u.path);for(let A of y)if(await this.symbolDependencyHelper.doesDependencyTargetFile(A,u.path,s)){let J=this.symbolDependencyHelper.extractSymbolName(A.targetSymbolId);m.add(this.symbolDependencyHelper.buildUsedSymbolId(s,J))}}return m}async collectSymbolDependents(i,s,m){let u=[],y=Di(s);for(let A of i){let{dependencies:k}=await this.getSymbolGraph(A.path);for(let J of k)await this.symbolDependencyHelper.doesDependencyTargetFile(J,A.path,y)&&this.symbolDependencyHelper.extractSymbolName(J.targetSymbolId)===m&&u.push(J)}return u}async verifyDependencyUsage(i,s){try{let m=Di(i),u=Di(s);if(OO(u))return!0;if(this.isAstUnsupportedFile(m))return fL.debug(`Skipping symbol analysis for unsupported file type: ${m}`),!0;let{dependencies:y}=await this.getSymbolGraph(m);if(y.length===0)return!1;let A=u.split("/").pop()||"",k=y.filter(J=>J.targetFilePath===u||J.targetFilePath.includes(A)||!J.targetFilePath.startsWith("/"));for(let J of k)if(await this.symbolDependencyHelper.doesDependencyTargetFile(J,m,u))return!0;return!1}catch(m){let u=Pd.fromError(m,i);return fL.warn("Usage verification failed, assuming used:",u.message),!0}}async verifyDependencyUsageBatch(i,s){try{let m=Di(i);if(this.isAstUnsupportedFile(m))return fL.debug(`Skipping symbol analysis for unsupported file type: ${m}`),this.markAllAsUsed(s);let{dependencies:u}=await this.getSymbolGraph(m);if(u.length===0)return this.markAllAsUnused(s);let y=await this.buildResolvedTargetsSet(u,m);return this.checkTargetsAgainstResolved(s,y)}catch(m){let u=Pd.fromError(m,i);return fL.warn("Batch usage verification failed, assuming all used:",u.message),this.markAllAsUsed(s)}}markAllAsUsed(i){let s=new Map;for(let m of i)s.set(Di(m),!0);return s}markAllAsUnused(i){let s=new Map;for(let m of i)s.set(Di(m),!1);return s}async buildResolvedTargetsSet(i,s){let m=new Set;for(let u of i)try{let y=await this.symbolDependencyHelper.resolveTargetPath(u,s);y&&m.add(Di(y))}catch{}return m}checkTargetsAgainstResolved(i,s){let m=new Map;for(let u of i){let y=Di(u);if(OO(y)){m.set(y,!0);continue}m.set(y,s.has(y))}return m}isAstUnsupportedFile(i){return i.endsWith(".gql")||i.endsWith(".graphql")||i.endsWith(".cs")||i.endsWith(".csproj")||i.endsWith(".go")||i.endsWith(".java")}async scanDeadCode(i,s){let{maxFiles:m=500,hasReverseIndex:u}=s;if(!u)throw new Pd("Dead code scan requires the reverse index. Wait for indexing to complete or call rebuild_index first.","INDEX_NOT_READY");let y=this.getConfig(),k=await new x1({excludeNodeModules:y.excludeNodeModules}).collectAllSourceFiles(i),J=new Set(mU),_e=k.filter(ft=>{let Je=iLe.default.extname(ft).toLowerCase();return J.has(Je)}).slice(0,m),Me=[],se=0;for(let ft of _e)try{let Je=await this.findUnusedSymbols(ft);Je.length>0&&Me.push({filePath:ft,unusedSymbols:Je})}catch(Je){let Ze=Pd.fromError(Je,ft);fL.warn("scanDeadCode: skipping file due to error:",ft,Ze.message),se++}return{entries:Me,scannedFiles:_e.length,skippedFiles:se}}};var elt=require("node:worker_threads"),tlt=Kl(require("node:path")),Gce=class{worker=null;statusCallbacks=new Set;currentState="idle";currentProgress=0;currentTotal=0;currentFile="";startTime=void 0;cancelled=!1;workerPath;constructor(i){this.workerPath=i??tlt.join(__dirname,"indexerWorker.js")}subscribeToStatus(i){return this.statusCallbacks.add(i),i(this.getSnapshot()),()=>this.statusCallbacks.delete(i)}getSnapshot(){let i=this.currentTotal>0?Math.round(this.currentProgress/this.currentTotal*100):0;return{state:this.currentState,processed:this.currentProgress,total:this.currentTotal,currentFile:this.currentFile,percentage:i,startTime:this.startTime,cancelled:this.cancelled}}notifySubscribers(){let i=this.getSnapshot();for(let s of this.statusCallbacks)try{s(i)}catch{}}updateState(i,s=0,m=0,u=""){this.currentState=i,this.currentProgress=s,this.currentTotal=m,this.currentFile=u,this.notifySubscribers()}async startIndexing(i){if(this.worker)throw new Error("Indexing already in progress");return this.cancelled=!1,this.startTime=Date.now(),this.updateState("counting"),new Promise((s,m)=>{try{this.worker=new elt.Worker(this.workerPath,{workerData:i});let u={indexedFiles:0,duration:0,cancelled:!1,data:[]};this.worker.on("message",y=>{switch(y.type){case"counting":this.updateState("counting");break;case"progress":y.data&&this.updateState("indexing",y.data.processed??0,y.data.total??0,y.data.currentFile??"");break;case"complete":y.data&&(u={indexedFiles:y.data.processed??0,duration:y.data.duration??0,cancelled:this.cancelled,data:y.data.indexData??[]}),this.updateState("complete"),this.cleanupWorker(),s(u);break;case"error":this.updateState("error"),this.cleanupWorker(),m(new Error(y.error??"Unknown worker error"));break}}),this.worker.on("error",y=>{this.updateState("error"),this.cleanupWorker(),m(y)}),this.worker.on("exit",y=>{y!==0&&this.currentState!=="complete"&&this.currentState!=="error"&&(this.updateState("error"),this.cleanupWorker(),m(new Error(`Worker stopped with exit code ${y}`)))}),this.worker.postMessage({type:"start"})}catch(u){this.updateState("error"),this.cleanupWorker(),m(u)}})}cancel(){this.cancelled=!0,this.worker&&this.worker.postMessage({type:"cancel"})}isIndexing(){return this.currentState==="indexing"||this.currentState==="counting"}cleanupWorker(){this.worker&&(this.worker.removeAllListeners(),this.worker.terminate().catch(()=>{}),this.worker=null)}dispose(){this.cancel(),this.cleanupWorker(),this.statusCallbacks.clear()}};var iz=class{constructor(i,s,m){this.indexerStatus=i;this.reverseIndexManager=s;this.dependencyCache=m}indexerStatus;reverseIndexManager;dependencyCache;workerHost=null;async buildFullIndexInWorker(i){let{workerPath:s,config:m,progressCallback:u}=i;this.workerHost??=new Gce(s),this.reverseIndexManager.ensure();let y=this.workerHost.subscribeToStatus(A=>{switch(A.state){case"counting":this.indexerStatus.startCounting();break;case"indexing":A.total>0&&(this.indexerStatus.setTotal(A.total),this.indexerStatus.startIndexing()),this.indexerStatus.updateProgress(A.processed,A.currentFile);break;case"complete":this.indexerStatus.complete();break;case"error":this.indexerStatus.setError(A.errorMessage??"Unknown error");break}u&&A.state==="indexing"&&u(A.processed,A.total,A.currentFile)});try{let A=await this.workerHost.startIndexing({rootDir:m.rootDir,excludeNodeModules:m.excludeNodeModules,tsConfigPath:m.tsConfigPath,extensionPath:m.extensionPath});return this.importWorkerResult(A),{indexedFiles:A.indexedFiles,duration:A.duration,cancelled:A.cancelled}}finally{y()}}cancel(){this.workerHost?.cancel()}dispose(){this.workerHost?.dispose(),this.workerHost=null}importWorkerResult(i){for(let s of i.data){let m=Di(s.filePath);this.dependencyCache.set(m,s.dependencies),this.reverseIndexManager.addDependencies(m,s.dependencies,{mtime:s.mtime,size:s.size})}}};var oz=ld("SymbolDependencyHelper"),az=class{resolveFn;constructor(i){this.resolveFn=i.resolve}async doesDependencyTargetFile(i,s,m){let u=Di(i.targetFilePath),y=Di(m);if(oz.debug(`Comparing: dep.targetFilePath='${u}' vs targetFilePath='${y}'`),u===y)return oz.debug("\u2713 Direct match"),!0;oz.debug(`Attempting fallback resolution for '${i.targetFilePath}' from '${s}'`);let A=await this.resolveFn(s,i.targetFilePath);if(A){let k=Di(A);oz.debug(`Resolved to: '${k}'`);let J=k===y;return oz.debug(J?"\u2713 Fallback match":"\u2717 No match after resolution"),J}return oz.debug("\u2717 Resolution failed, no match"),!1}extractSymbolName(i){return i.split(":").pop()||""}extractBasename(i){return i.split(/[/\\]/).pop()?.replace(/\.[^/.]+$/,"")}buildUsedSymbolId(i,s){return`${Di(i)}:${s}`}async resolveTargetPath(i,s){let m=Di(i.targetFilePath);if(m.startsWith("/")||/^[a-zA-Z]:\//.test(m))return m;try{let u=await this.resolveFn(s,i.targetFilePath);return u?Di(u):null}catch{return null}}};var Vce=class{config;languageService;resolver;cache;symbolCache;fileReader;astWorkerHost;reverseIndexManager;indexerStatus;workerManager;cancellation;sourceFileCollector;referencingFilesFinder;symbolDependencyHelper;dependencyAnalyzer;referenceLookup;symbolService;graphCrawler;indexingService;cacheCoordinator;constructor(i){if("dependencyAnalyzer"in i){let s=i;this.config=s.config,this.languageService=s.languageService,this.resolver=s.resolver,this.cache=s.cache,this.symbolCache=s.symbolCache,this.fileReader=s.fileReader,this.astWorkerHost=s.astWorkerHost,this.reverseIndexManager=s.reverseIndexManager,this.indexerStatus=s.indexerStatus,this.workerManager=s.workerManager,this.cancellation=s.cancellation,this.sourceFileCollector=s.sourceFileCollector,this.referencingFilesFinder=s.referencingFilesFinder,this.symbolDependencyHelper=s.symbolDependencyHelper,this.dependencyAnalyzer=s.dependencyAnalyzer,this.referenceLookup=s.referenceLookup,this.symbolService=s.symbolService,this.graphCrawler=s.graphCrawler,this.indexingService=s.indexingService,this.cacheCoordinator=s.cacheCoordinator}else{let s=i;this.config={maxDepth:50,excludeNodeModules:!0,enableReverseIndex:!1,indexingConcurrency:4,maxCacheSize:500,maxSymbolCacheSize:200,maxSymbolAnalyzerFiles:100,...s},this.languageService=new j3(s.rootDir,s.tsConfigPath,s.extensionPath),this.resolver=new l1(s.tsConfigPath,this.config.excludeNodeModules,s.rootDir),this.cache=new YM({maxSize:this.config.maxCacheSize,enableLRU:!0}),this.symbolCache=new YM({maxSize:this.config.maxSymbolCacheSize,enableLRU:!0}),this.astWorkerHost=new qM(void 0,s.extensionPath),this.reverseIndexManager=new J3(this.config.rootDir),this.fileReader=new Nm,this.indexerStatus=new _3,this.cancellation=new Z3,this.workerManager=new iz(this.indexerStatus,this.reverseIndexManager,this.cache),this.dependencyAnalyzer=new X3(this.languageService,this.resolver,this.cache,this.reverseIndexManager),this.sourceFileCollector=new x1({excludeNodeModules:this.config.excludeNodeModules??!0,yieldIntervalMs:ez,yieldCallback:()=>Q3(),isCancelled:()=>this.cancellation.isCancelled()}),this.referenceLookup=new nz(this.reverseIndexManager,this.dependencyAnalyzer,this.fileReader),this.referencingFilesFinder=new U3({sourceFileCollector:this.sourceFileCollector,getRootDir:()=>this.config.rootDir,getConcurrency:()=>this.config.indexingConcurrency,findReferenceInFile:(m,u,y)=>this.referenceLookup.findReferenceInFile(m,u,y)}),this.referenceLookup.setFallbackFinder(this.referencingFilesFinder),this.symbolDependencyHelper=new az({resolve:async(m,u)=>{try{return await this.resolver.resolve(m,u)}catch{return null}}}),this.symbolService=new rz(this.astWorkerHost,this.symbolCache,this.fileReader,this.resolver,this.symbolDependencyHelper,()=>this.config,m=>this.findReferencingFiles(m),this.languageService),this.graphCrawler=new Y3(this.dependencyAnalyzer,()=>this.config),this.indexingService=new tz(this.dependencyAnalyzer,this.cache,this.reverseIndexManager,this.sourceFileCollector,this.indexerStatus,this.workerManager,this.cancellation,()=>this.config,()=>Q3(),m=>this.symbolService.getSymbolGraph(m)),this.cacheCoordinator=new $3(this.cache,this.symbolCache,this.reverseIndexManager),s.enableReverseIndex&&this.enableReverseIndex()}}async dispose(){await this.astWorkerHost.stop()}updateConfig(i){this.config.excludeNodeModules=i.excludeNodeModules??this.config.excludeNodeModules,this.config.maxDepth=i.maxDepth??this.config.maxDepth,i.excludeNodeModules!==void 0&&(this.resolver.updateConfig(i.excludeNodeModules),this.sourceFileCollector.updateOptions({excludeNodeModules:i.excludeNodeModules})),i.enableReverseIndex!==void 0&&(this.config.enableReverseIndex=i.enableReverseIndex,i.enableReverseIndex?this.reverseIndexManager.enable():this.reverseIndexManager.disable()),i.indexingConcurrency!==void 0&&(this.config.indexingConcurrency=i.indexingConcurrency),this.clearCache()}async analyze(i){return this.dependencyAnalyzer.analyze(i)}clearCache(){this.cacheCoordinator.clearAll(),this.referenceLookup.clearFallbackCache()}invalidateFile(i){return this.referenceLookup.clearFallbackCache(),this.cacheCoordinator.invalidateFile(i)}invalidateFiles(i){return this.cacheCoordinator.invalidateFiles(i)}async reanalyzeFile(i){this.invalidateFile(i);try{return await this.analyze(i)}catch{return null}}handleFileDeleted(i){this.cacheCoordinator.handleFileDeleted(i)}enableReverseIndex(i){let s=this.reverseIndexManager.enable(i);return this.config.enableReverseIndex=!0,s}disableReverseIndex(){this.config.enableReverseIndex=!1,this.reverseIndexManager.disable()}getSerializedReverseIndex(){return this.reverseIndexManager.getSerialized()}async validateReverseIndex(i=.2){return this.reverseIndexManager.validate(i)}getIndexStatus(){return this.indexerStatus.getSnapshot()}subscribeToIndexStatus(i){return this.indexerStatus.subscribe(i)}hasReverseIndex(){return this.reverseIndexManager.hasEntries()}getCallerCount(i){return this.reverseIndexManager.hasEntries()?this.reverseIndexManager.getCallerCount(i):0}cancelIndexing(){this.indexingService.cancel()}async buildFullIndex(i){return this.indexingService.buildFullIndex(i)}async buildFullIndexInWorker(i,s){return this.indexingService.buildFullIndexInWorker(i,s)}disposeWorker(){this.indexingService.disposeWorker()}async reindexStaleFiles(i,s){return this.indexingService.reindexStaleFiles(i,s)}async crawl(i){return this.graphCrawler.crawl(i)}async crawlFrom(i,s,m=10,u){return this.graphCrawler.crawlFrom(i,s,m,u)}async findReferencingFiles(i){return this.referenceLookup.findReferencingFiles(i)}getSymbolReferencingFiles(i){if(!this.reverseIndexManager.hasEntries())return new Set;let s=this.reverseIndexManager.getSymbolReferencingFiles(i);return new Set(s)}async getSymbolGraph(i){return this.symbolService.getSymbolGraph(i)}async resolveModuleSpecifier(i,s){return this.dependencyAnalyzer.resolveModuleSpecifier(i,s)}async findUnusedSymbols(i){return this.symbolService.findUnusedSymbols(i)}async scanDeadCode(i,s){let m=i??this.config.rootDir;return this.symbolService.scanDeadCode(m,{maxFiles:s?.maxFiles,hasReverseIndex:this.hasReverseIndex()})}async verifyDependencyUsage(i,s){return this.symbolService.verifyDependencyUsage(i,s)}async verifyDependencyUsageBatch(i,s){return this.symbolService.verifyDependencyUsageBatch(i,s)}async getSymbolDependents(i,s){return this.symbolService.getSymbolDependents(i,s)}async traceFunctionExecution(i,s,m=10){return this.symbolService.traceFunctionExecution(i,s,m)}getCacheStats(){return{dependencyCache:this.cache.getStats(),symbolCache:this.symbolCache.getStats(),symbolAnalyzerFileCount:0,reverseIndexStats:this.reverseIndexManager.getStats()}}async getCacheStatsAsync(){let i=0;try{i=await this.astWorkerHost.getFileCount()}catch{}return{dependencyCache:this.cache.getStats(),symbolCache:this.symbolCache.getStats(),symbolAnalyzerFileCount:i,reverseIndexStats:this.reverseIndexManager.getStats()}}};var jce=class{rootDir;tsConfigPath;extensionPath;maxDepth=50;excludeNodeModules=!0;enableReverseIndex=!1;indexingConcurrency=4;maxCacheSize=500;maxSymbolCacheSize=200;maxSymbolAnalyzerFiles=100;indexingProgressInterval;customCache;customSymbolCache;customLanguageService;customPathResolver;customAstWorkerHost;customReverseIndexManager;withRootDir(i){return this.rootDir=i,this}withTsConfigPath(i){return this.tsConfigPath=i,this}withExtensionPath(i){return this.extensionPath=i,this}withMaxDepth(i){return this.maxDepth=i,this}withExcludeNodeModules(i){return this.excludeNodeModules=i,this}withReverseIndex(i){return this.enableReverseIndex=i,this}withIndexingConcurrency(i){return this.indexingConcurrency=i,this}withCacheConfig(i){return i.maxCacheSize!==void 0&&(this.maxCacheSize=i.maxCacheSize),i.maxSymbolCacheSize!==void 0&&(this.maxSymbolCacheSize=i.maxSymbolCacheSize),i.maxSymbolAnalyzerFiles!==void 0&&(this.maxSymbolAnalyzerFiles=i.maxSymbolAnalyzerFiles),this}withIndexingProgressInterval(i){return this.indexingProgressInterval=i,this}withConfig(i){return this.rootDir=i.rootDir,i.tsConfigPath!==void 0&&(this.tsConfigPath=i.tsConfigPath),i.extensionPath!==void 0&&(this.extensionPath=i.extensionPath),i.maxDepth!==void 0&&(this.maxDepth=i.maxDepth),i.excludeNodeModules!==void 0&&(this.excludeNodeModules=i.excludeNodeModules),i.enableReverseIndex!==void 0&&(this.enableReverseIndex=i.enableReverseIndex),i.indexingConcurrency!==void 0&&(this.indexingConcurrency=i.indexingConcurrency),i.maxCacheSize!==void 0&&(this.maxCacheSize=i.maxCacheSize),i.maxSymbolCacheSize!==void 0&&(this.maxSymbolCacheSize=i.maxSymbolCacheSize),i.maxSymbolAnalyzerFiles!==void 0&&(this.maxSymbolAnalyzerFiles=i.maxSymbolAnalyzerFiles),i.indexingProgressInterval!==void 0&&(this.indexingProgressInterval=i.indexingProgressInterval),this}withCache(i){return this.customCache=i,this}withSymbolCache(i){return this.customSymbolCache=i,this}withLanguageService(i){return this.customLanguageService=i,this}withPathResolver(i){return this.customPathResolver=i,this}withAstWorkerHost(i){return this.customAstWorkerHost=i,this}withReverseIndexManager(i){return this.customReverseIndexManager=i,this}build(){this.validate();let i=this.initializeServices();return new Vce(i)}initializeServices(){let i=this.buildConfig(),s=this.customLanguageService??new j3(this.rootDir,this.tsConfigPath,this.extensionPath),m=this.customPathResolver??new l1(this.tsConfigPath,this.excludeNodeModules,this.rootDir),u=this.customCache??new YM({maxSize:this.maxCacheSize,enableLRU:!0}),y=this.customSymbolCache??new YM({maxSize:this.maxSymbolCacheSize,enableLRU:!0}),A=this.customAstWorkerHost??new qM(void 0,this.extensionPath),k=this.customReverseIndexManager??new J3(this.rootDir),J=new Nm,ce=new _3,_e=new Z3,Me=new iz(ce,k,u),se=new X3(s,m,u,k),ft=new x1({excludeNodeModules:this.excludeNodeModules,yieldIntervalMs:ez,yieldCallback:()=>Q3(),isCancelled:()=>_e.isCancelled()}),Je=new nz(k,se,J),Ze=new U3({sourceFileCollector:ft,getRootDir:()=>this.rootDir,getConcurrency:()=>this.indexingConcurrency,findReferenceInFile:(So,On,fn)=>Je.findReferenceInFile(So,On,fn)});Je.setFallbackFinder(Ze);let Nr=new az({resolve:async(So,On)=>{try{return await m.resolve(So,On)}catch{return null}}}),Jr=new rz(A,y,J,m,Nr,()=>i,So=>Je.findReferencingFiles(So),s),Ei=new Y3(se,()=>i),Wo=new tz(se,u,k,ft,ce,Me,_e,()=>i,()=>Q3(),So=>Jr.getSymbolGraph(So)),Ga=new $3(u,y,k);return this.enableReverseIndex&&k.enable(),{config:i,languageService:s,resolver:m,cache:u,symbolCache:y,fileReader:J,astWorkerHost:A,reverseIndexManager:k,indexerStatus:ce,workerManager:Me,cancellation:_e,sourceFileCollector:ft,referencingFilesFinder:Ze,symbolDependencyHelper:Nr,dependencyAnalyzer:se,referenceLookup:Je,symbolService:Jr,graphCrawler:Ei,indexingService:Wo,cacheCoordinator:Ga}}validate(){if(!this.rootDir)throw new Error("rootDir is required");if(this.maxDepth<0)throw new Error("maxDepth must be non-negative");if(this.indexingConcurrency<1)throw new Error("indexingConcurrency must be at least 1");if(this.maxCacheSize<0)throw new Error("maxCacheSize must be non-negative");if(this.maxSymbolCacheSize<0)throw new Error("maxSymbolCacheSize must be non-negative");if(this.maxSymbolAnalyzerFiles<0)throw new Error("maxSymbolAnalyzerFiles must be non-negative")}buildConfig(){return{rootDir:this.rootDir,tsConfigPath:this.tsConfigPath,extensionPath:this.extensionPath,maxDepth:this.maxDepth,excludeNodeModules:this.excludeNodeModules,enableReverseIndex:this.enableReverseIndex,indexingConcurrency:this.indexingConcurrency,maxCacheSize:this.maxCacheSize,maxSymbolCacheSize:this.maxSymbolCacheSize,maxSymbolAnalyzerFiles:this.maxSymbolAnalyzerFiles,indexingProgressInterval:this.indexingProgressInterval}}};var oLe=class{_spider=null;_parser=null;_resolver=null;_astWorkerHost=null;_symbolReverseIndex=null;_config=null;_isReady=!1;_warmupInfo={completed:!1};_fileWatcher=null;_pendingInvalidations=new Map;_callGraphIndexer=null;_graphExtractor=null;_callGraphIndexedRoot=null;get spider(){return this._spider}set spider(i){this._spider=i}get parser(){return this._parser}set parser(i){this._parser=i}get resolver(){return this._resolver}set resolver(i){this._resolver=i}get astWorkerHost(){return this._astWorkerHost}set astWorkerHost(i){this._astWorkerHost=i}get symbolReverseIndex(){return this._symbolReverseIndex}set symbolReverseIndex(i){this._symbolReverseIndex=i}get callGraphIndexer(){return this._callGraphIndexer}set callGraphIndexer(i){this._callGraphIndexer=i}get graphExtractor(){return this._graphExtractor}set graphExtractor(i){this._graphExtractor=i}get callGraphIndexedRoot(){return this._callGraphIndexedRoot}set callGraphIndexedRoot(i){this._callGraphIndexedRoot=i}get config(){return this._config}set config(i){this._config=i}get isReady(){return this._isReady}set isReady(i){this._isReady=i}get warmupInfo(){return this._warmupInfo}set warmupInfo(i){this._warmupInfo=i}get fileWatcher(){return this._fileWatcher}set fileWatcher(i){this._fileWatcher=i}get pendingInvalidations(){return this._pendingInvalidations}requireReady(){if(!this._isReady||!this._spider||!this._parser||!this._resolver||!this._config)throw new Error("Worker not initialized. Call init() first. Missing: "+[!this._spider&&"spider",!this._parser&&"parser",!this._resolver&&"resolver",!this._config&&"config",!this._isReady&&"ready flag"].filter(Boolean).join(", "))}getSpider(){this.requireReady();let i=this._spider;if(!i)throw new Error("Spider not available after requireReady()");return i}getParser(){this.requireReady();let i=this._parser;if(!i)throw new Error("Parser not available after requireReady()");return i}getResolver(){this.requireReady();let i=this._resolver;if(!i)throw new Error("Resolver not available after requireReady()");return i}getAstWorkerHost(){if(!this._astWorkerHost)throw new Error("AstWorkerHost not initialized");return this._astWorkerHost}getConfig(){if(!this._config)throw new Error("Config not set. Call init() first.");return this._config}reset(){for(let i of this._pendingInvalidations.values())clearTimeout(i);this._pendingInvalidations.clear(),this._fileWatcher&&(this._fileWatcher.close(),this._fileWatcher=null),this._astWorkerHost&&(this._astWorkerHost.stop(),this._astWorkerHost=null),this._symbolReverseIndex=null,this._graphExtractor&&(this._graphExtractor.dispose(),this._graphExtractor=null),this._callGraphIndexer&&(this._callGraphIndexer.dispose(),this._callGraphIndexer=null),this._callGraphIndexedRoot=null,this._spider=null,this._parser=null,this._resolver=null,this._config=null,this._isReady=!1,this._warmupInfo={completed:!1}}getStateSummary(){return{isReady:this._isReady,hasSpider:this._spider!==null,hasParser:this._parser!==null,hasResolver:this._resolver!==null,hasAstWorkerHost:this._astWorkerHost!==null,hasSymbolReverseIndex:this._symbolReverseIndex!==null,hasConfig:this._config!==null,warmupCompleted:this._warmupInfo.completed,hasFileWatcher:this._fileWatcher!==null,pendingInvalidationCount:this._pendingInvalidations.size,hasCallGraphIndexer:this._callGraphIndexer!==null,callGraphIndexedRoot:this._callGraphIndexedRoot}}},no=new oLe;var glt=require("node:events"),ylt=require("node:fs"),Yce=require("node:fs/promises"),Fd=Kl(require("node:path"),1);var uN=require("node:fs/promises"),pN=require("node:path"),olt=require("node:stream"),NE={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},aLe={root:".",fileFilter:d=>!0,directoryFilter:d=>!0,type:NE.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(aLe);var alt="READDIRP_RECURSIVE_ERROR",rUt=new Set(["ENOENT","EPERM","EACCES","ELOOP",alt]),nlt=[NE.DIR_TYPE,NE.EVERYTHING_TYPE,NE.FILE_DIR_TYPE,NE.FILE_TYPE],iUt=new Set([NE.DIR_TYPE,NE.EVERYTHING_TYPE,NE.FILE_DIR_TYPE]),oUt=new Set([NE.EVERYTHING_TYPE,NE.FILE_DIR_TYPE,NE.FILE_TYPE]),aUt=d=>rUt.has(d.code),sUt=process.platform==="win32",rlt=d=>!0,ilt=d=>{if(d===void 0)return rlt;if(typeof d=="function")return d;if(typeof d=="string"){let i=d.trim();return s=>s.basename===i}if(Array.isArray(d)){let i=d.map(s=>s.trim());return s=>i.some(m=>s.basename===m)}return rlt},sLe=class extends olt.Readable{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(i={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:i.highWaterMark});let s={...aLe,...i},{root:m,type:u}=s;this._fileFilter=ilt(s.fileFilter),this._directoryFilter=ilt(s.directoryFilter);let y=s.lstat?uN.lstat:uN.stat;sUt?this._stat=A=>y(A,{bigint:!0}):this._stat=y,this._maxDepth=s.depth!=null&&Number.isSafeInteger(s.depth)?s.depth:aLe.depth,this._wantsDir=u?iUt.has(u):!1,this._wantsFile=u?oUt.has(u):!1,this._wantsEverything=u===NE.EVERYTHING_TYPE,this._root=(0,pN.resolve)(m),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(m,1)],this.reading=!1,this.parent=void 0}async _read(i){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&i>0;){let s=this.parent,m=s&&s.files;if(m&&m.length>0){let{path:u,depth:y}=s,A=m.splice(0,i).map(J=>this._formatEntry(J,u)),k=await Promise.all(A);for(let J of k){if(!J)continue;if(this.destroyed)return;let ce=await this._getEntryType(J);ce==="directory"&&this._directoryFilter(J)?(y<=this._maxDepth&&this.parents.push(this._exploreDir(J.fullPath,y+1)),this._wantsDir&&(this.push(J),i--)):(ce==="file"||this._includeAsFile(J))&&this._fileFilter(J)&&this._wantsFile&&(this.push(J),i--)}}else{let u=this.parents.pop();if(!u){this.push(null);break}if(this.parent=await u,this.destroyed)return}}}catch(s){this.destroy(s)}finally{this.reading=!1}}}async _exploreDir(i,s){let m;try{m=await(0,uN.readdir)(i,this._rdOptions)}catch(u){this._onError(u)}return{files:m,depth:s,path:i}}async _formatEntry(i,s){let m,u=this._isDirent?i.name:i;try{let y=(0,pN.resolve)((0,pN.join)(s,u));m={path:(0,pN.relative)(this._root,y),fullPath:y,basename:u},m[this._statsProp]=this._isDirent?i:await this._stat(y)}catch(y){this._onError(y);return}return m}_onError(i){aUt(i)&&!this.destroyed?this.emit("warn",i):this.destroy(i)}async _getEntryType(i){if(!i&&this._statsProp in i)return"";let s=i[this._statsProp];if(s.isFile())return"file";if(s.isDirectory())return"directory";if(s&&s.isSymbolicLink()){let m=i.fullPath;try{let u=await(0,uN.realpath)(m),y=await(0,uN.lstat)(u);if(y.isFile())return"file";if(y.isDirectory()){let A=u.length;if(m.startsWith(u)&&m.substr(A,1)===pN.sep){let k=new Error(`Circular symlink detected: "${m}" points to "${u}"`);return k.code=alt,this._onError(k)}return"directory"}}catch(u){return this._onError(u),""}}}_includeAsFile(i){let s=i&&i[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function slt(d,i={}){let s=i.entryType||i.type;if(s==="both"&&(s=NE.FILE_DIR_TYPE),s&&(i.type=s),d){if(typeof d!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(s&&!nlt.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${nlt.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return i.root=d,new sLe(i)}var zO=require("node:fs"),tI=require("node:fs/promises"),clt=require("node:os"),Mm=Kl(require("node:path"),1),lUt="data",dLe="end",dlt="close",$ce=()=>{};var qce=process.platform,uLe=qce==="win32",cUt=qce==="darwin",dUt=qce==="linux",uUt=qce==="freebsd",ult=(0,clt.type)()==="OS400",l_={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},eI=l_,pUt="watch",fUt={lstat:tI.lstat,stat:tI.stat},WO="listeners",Uce="errHandlers",sz="rawEmitters",mUt=[WO,Uce,sz],_Ut=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),hUt=d=>_Ut.has(Mm.extname(d).slice(1).toLowerCase()),cLe=(d,i)=>{d instanceof Set?d.forEach(i):i(d)},JU=(d,i,s)=>{let m=d[i];m instanceof Set||(d[i]=m=new Set([m])),m.add(s)},gUt=d=>i=>{let s=d[i];s instanceof Set?s.clear():delete d[i]},$U=(d,i,s)=>{let m=d[i];m instanceof Set?m.delete(s):m===s&&delete d[i]},plt=d=>d instanceof Set?d.size===0:!d,Hce=new Map;function llt(d,i,s,m,u){let y=(A,k)=>{s(d),u(A,k,{watchedPath:d}),k&&d!==k&&Kce(Mm.resolve(d,k),WO,Mm.join(d,k))};try{return(0,zO.watch)(d,{persistent:i.persistent},y)}catch(A){m(A);return}}var Kce=(d,i,s,m,u)=>{let y=Hce.get(d);y&&cLe(y[i],A=>{A(s,m,u)})},yUt=(d,i,s,m)=>{let{listener:u,errHandler:y,rawEmitter:A}=m,k=Hce.get(i),J;if(!s.persistent)return J=llt(d,s,u,y,A),J?J.close.bind(J):void 0;if(k)JU(k,WO,u),JU(k,Uce,y),JU(k,sz,A);else{if(J=llt(d,s,Kce.bind(null,i,WO),y,Kce.bind(null,i,sz)),!J)return;J.on(eI.ERROR,async ce=>{let _e=Kce.bind(null,i,Uce);if(k&&(k.watcherUnusable=!0),uLe&&ce.code==="EPERM")try{await(await(0,tI.open)(d,"r")).close(),_e(ce)}catch{}else _e(ce)}),k={listeners:u,errHandlers:y,rawEmitters:A,watcher:J},Hce.set(i,k)}return()=>{$U(k,WO,u),$U(k,Uce,y),$U(k,sz,A),plt(k.listeners)&&(k.watcher.close(),Hce.delete(i),mUt.forEach(gUt(k)),k.watcher=void 0,Object.freeze(k))}},lLe=new Map,vUt=(d,i,s,m)=>{let{listener:u,rawEmitter:y}=m,A=lLe.get(i),k=A&&A.options;return k&&(k.persistent<s.persistent||k.interval>s.interval)&&((0,zO.unwatchFile)(i),A=void 0),A?(JU(A,WO,u),JU(A,sz,y)):(A={listeners:u,rawEmitters:y,options:s,watcher:(0,zO.watchFile)(i,s,(J,ce)=>{cLe(A.rawEmitters,Me=>{Me(eI.CHANGE,i,{curr:J,prev:ce})});let _e=J.mtimeMs;(J.size!==ce.size||_e>ce.mtimeMs||_e===0)&&cLe(A.listeners,Me=>Me(d,J))})},lLe.set(i,A)),()=>{$U(A,WO,u),$U(A,sz,y),plt(A.listeners)&&(lLe.delete(i),(0,zO.unwatchFile)(i),A.options=A.watcher=void 0,Object.freeze(A))}},Jce=class{fsw;_boundHandleError;constructor(i){this.fsw=i,this._boundHandleError=s=>i._handleError(s)}_watchWithNodeFs(i,s){let m=this.fsw.options,u=Mm.dirname(i),y=Mm.basename(i);this.fsw._getWatchedDir(u).add(y);let k=Mm.resolve(i),J={persistent:m.persistent};s||(s=$ce);let ce;if(m.usePolling){let _e=m.interval!==m.binaryInterval;J.interval=_e&&hUt(y)?m.binaryInterval:m.interval,ce=vUt(i,k,J,{listener:s,rawEmitter:this.fsw._emitRaw})}else ce=yUt(i,k,J,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return ce}_handleFile(i,s,m){if(this.fsw.closed)return;let u=Mm.dirname(i),y=Mm.basename(i),A=this.fsw._getWatchedDir(u),k=s;if(A.has(y))return;let J=async(_e,Me)=>{if(this.fsw._throttle(pUt,i,5)){if(!Me||Me.mtimeMs===0)try{let se=await(0,tI.stat)(i);if(this.fsw.closed)return;let ft=se.atimeMs,Je=se.mtimeMs;if((!ft||ft<=Je||Je!==k.mtimeMs)&&this.fsw._emit(eI.CHANGE,i,se),(cUt||dUt||uUt)&&k.ino!==se.ino){this.fsw._closeFile(_e),k=se;let Ze=this._watchWithNodeFs(i,J);Ze&&this.fsw._addPathCloser(_e,Ze)}else k=se}catch{this.fsw._remove(u,y)}else if(A.has(y)){let se=Me.atimeMs,ft=Me.mtimeMs;(!se||se<=ft||ft!==k.mtimeMs)&&this.fsw._emit(eI.CHANGE,i,Me),k=Me}}},ce=this._watchWithNodeFs(i,J);if(!(m&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(i)){if(!this.fsw._throttle(eI.ADD,i,0))return;this.fsw._emit(eI.ADD,i,s)}return ce}async _handleSymlink(i,s,m,u){if(this.fsw.closed)return;let y=i.fullPath,A=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let k;try{k=await(0,tI.realpath)(m)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(A.has(u)?this.fsw._symlinkPaths.get(y)!==k&&(this.fsw._symlinkPaths.set(y,k),this.fsw._emit(eI.CHANGE,m,i.stats)):(A.add(u),this.fsw._symlinkPaths.set(y,k),this.fsw._emit(eI.ADD,m,i.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(y))return!0;this.fsw._symlinkPaths.set(y,!0)}_handleRead(i,s,m,u,y,A,k){i=Mm.join(i,"");let J=u?`${i}:${u}`:i;if(k=this.fsw._throttle("readdir",J,1e3),!k)return;let ce=this.fsw._getWatchedDir(m.path),_e=new Set,Me=this.fsw._readdirp(i,{fileFilter:se=>m.filterPath(se),directoryFilter:se=>m.filterDir(se)});if(Me)return Me.on(lUt,async se=>{if(this.fsw.closed){Me=void 0;return}let ft=se.path,Je=Mm.join(i,ft);if(_e.add(ft),!(se.stats.isSymbolicLink()&&await this._handleSymlink(se,i,Je,ft))){if(this.fsw.closed){Me=void 0;return}(ft===u||!u&&!ce.has(ft))&&(this.fsw._incrReadyCount(),Je=Mm.join(y,Mm.relative(y,Je)),this._addToNodeFs(Je,s,m,A+1))}}).on(eI.ERROR,this._boundHandleError),new Promise((se,ft)=>{if(!Me)return ft();Me.once(dLe,()=>{if(this.fsw.closed){Me=void 0;return}let Je=k?k.clear():!1;se(void 0),ce.getChildren().filter(Ze=>Ze!==i&&!_e.has(Ze)).forEach(Ze=>{this.fsw._remove(i,Ze)}),Me=void 0,Je&&this._handleRead(i,!1,m,u,y,A,k)})})}async _handleDir(i,s,m,u,y,A,k){let J=this.fsw._getWatchedDir(Mm.dirname(i)),ce=J.has(Mm.basename(i));!(m&&this.fsw.options.ignoreInitial)&&!y&&!ce&&this.fsw._emit(eI.ADD_DIR,i,s),J.add(Mm.basename(i)),this.fsw._getWatchedDir(i);let _e,Me,se=this.fsw.options.depth;if((se==null||u<=se)&&!this.fsw._symlinkPaths.has(k)){if(!y&&(await this._handleRead(i,m,A,y,i,u,_e),this.fsw.closed))return;Me=this._watchWithNodeFs(i,(ft,Je)=>{Je&&Je.mtimeMs===0||this._handleRead(ft,!1,A,y,i,u,_e)})}return Me}async _addToNodeFs(i,s,m,u,y){let A=this.fsw._emitReady;if(this.fsw._isIgnored(i)||this.fsw.closed)return A(),!1;let k=this.fsw._getWatchHelpers(i);m&&(k.filterPath=J=>m.filterPath(J),k.filterDir=J=>m.filterDir(J));try{let J=await fUt[k.statMethod](k.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(k.watchPath,J))return A(),!1;let ce=this.fsw.options.followSymlinks,_e;if(J.isDirectory()){let Me=Mm.resolve(i),se=ce?await(0,tI.realpath)(i):i;if(this.fsw.closed||(_e=await this._handleDir(k.watchPath,J,s,u,y,k,se),this.fsw.closed))return;Me!==se&&se!==void 0&&this.fsw._symlinkPaths.set(Me,se)}else if(J.isSymbolicLink()){let Me=ce?await(0,tI.realpath)(i):i;if(this.fsw.closed)return;let se=Mm.dirname(k.watchPath);if(this.fsw._getWatchedDir(se).add(k.watchPath),this.fsw._emit(eI.ADD,k.watchPath,J),_e=await this._handleDir(se,J,s,u,i,k,Me),this.fsw.closed)return;Me!==void 0&&this.fsw._symlinkPaths.set(Mm.resolve(i),Me)}else _e=this._handleFile(k.watchPath,J,s);return A(),_e&&this.fsw._addPathCloser(i,_e),!1}catch(J){if(this.fsw._handleError(J))return A(),i}}};var pLe="/",bUt="//",vlt=".",SUt="..",TUt="string",EUt=/\\/g,blt=/\/\//g,xUt=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,AUt=/^\.[/\\]/;function Xce(d){return Array.isArray(d)?d:[d]}var fLe=d=>typeof d=="object"&&d!==null&&!(d instanceof RegExp);function IUt(d){return typeof d=="function"?d:typeof d=="string"?i=>d===i:d instanceof RegExp?i=>d.test(i):typeof d=="object"&&d!==null?i=>{if(d.path===i)return!0;if(d.recursive){let s=Fd.relative(d.path,i);return s?!s.startsWith("..")&&!Fd.isAbsolute(s):!1}return!1}:()=>!1}function DUt(d){if(typeof d!="string")throw new Error("string expected");d=Fd.normalize(d),d=d.replace(/\\/g,"/");let i=!1;return d.startsWith("//")&&(i=!0),d=d.replace(blt,"/"),i&&(d="/"+d),d}function flt(d,i,s){let m=DUt(i);for(let u=0;u<d.length;u++){let y=d[u];if(y(m,s))return!0}return!1}function CUt(d,i){if(d==null)throw new TypeError("anymatch: specify first argument");let m=Xce(d).map(u=>IUt(u));return i==null?(u,y)=>flt(m,u,y):flt(m,i)}var mlt=d=>{let i=Xce(d).flat();if(!i.every(s=>typeof s===TUt))throw new TypeError(`Non-string provided as watch path: ${i}`);return i.map(Slt)},_lt=d=>{let i=d.replace(EUt,pLe),s=!1;return i.startsWith(bUt)&&(s=!0),i=i.replace(blt,pLe),s&&(i=pLe+i),i},Slt=d=>_lt(Fd.normalize(_lt(d))),hlt=(d="")=>i=>typeof i=="string"?Slt(Fd.isAbsolute(i)?i:Fd.join(d,i)):i,PUt=(d,i)=>Fd.isAbsolute(d)?d:Fd.join(i,d),NUt=Object.freeze(new Set),mLe=class{path;_removeWatcher;items;constructor(i,s){this.path=i,this._removeWatcher=s,this.items=new Set}add(i){let{items:s}=this;s&&i!==vlt&&i!==SUt&&s.add(i)}async remove(i){let{items:s}=this;if(!s||(s.delete(i),s.size>0))return;let m=this.path;try{await(0,Yce.readdir)(m)}catch{this._removeWatcher&&this._removeWatcher(Fd.dirname(m),Fd.basename(m))}}has(i){let{items:s}=this;if(s)return s.has(i)}getChildren(){let{items:i}=this;return i?[...i.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=$ce,this.items=NUt,Object.freeze(this)}},RUt="stat",MUt="lstat",_Le=class{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(i,s,m){this.fsw=m;let u=i;this.path=i=i.replace(AUt,""),this.watchPath=u,this.fullWatchPath=Fd.resolve(u),this.dirParts=[],this.dirParts.forEach(y=>{y.length>1&&y.pop()}),this.followSymlinks=s,this.statMethod=s?RUt:MUt}entryPath(i){return Fd.join(this.watchPath,Fd.relative(this.watchPath,i.fullPath))}filterPath(i){let{stats:s}=i;if(s&&s.isSymbolicLink())return this.filterDir(i);let m=this.entryPath(i);return this.fsw._isntIgnored(m,s)&&this.fsw._hasReadPermissions(s)}filterDir(i){return this.fsw._isntIgnored(this.entryPath(i),i.stats)}},hLe=class extends glt.EventEmitter{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(i={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let s=i.awaitWriteFinish,m={stabilityThreshold:2e3,pollInterval:100},u={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...i,ignored:i.ignored?Xce(i.ignored):Xce([]),awaitWriteFinish:s===!0?m:typeof s=="object"?{...m,...s}:!1};ult&&(u.usePolling=!0),u.atomic===void 0&&(u.atomic=!u.usePolling);let y=process.env.CHOKIDAR_USEPOLLING;if(y!==void 0){let J=y.toLowerCase();J==="false"||J==="0"?u.usePolling=!1:J==="true"||J==="1"?u.usePolling=!0:u.usePolling=!!J}let A=process.env.CHOKIDAR_INTERVAL;A&&(u.interval=Number.parseInt(A,10));let k=0;this._emitReady=()=>{k++,k>=this._readyCount&&(this._emitReady=$ce,this._readyEmitted=!0,process.nextTick(()=>this.emit(l_.READY)))},this._emitRaw=(...J)=>this.emit(l_.RAW,...J),this._boundRemove=this._remove.bind(this),this.options=u,this._nodeFsHandler=new Jce(this),Object.freeze(u)}_addIgnoredPath(i){if(fLe(i)){for(let s of this._ignoredPaths)if(fLe(s)&&s.path===i.path&&s.recursive===i.recursive)return}this._ignoredPaths.add(i)}_removeIgnoredPath(i){if(this._ignoredPaths.delete(i),typeof i=="string")for(let s of this._ignoredPaths)fLe(s)&&s.path===i&&this._ignoredPaths.delete(s)}add(i,s,m){let{cwd:u}=this.options;this.closed=!1,this._closePromise=void 0;let y=mlt(i);return u&&(y=y.map(A=>PUt(A,u))),y.forEach(A=>{this._removeIgnoredPath(A)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=y.length,Promise.all(y.map(async A=>{let k=await this._nodeFsHandler._addToNodeFs(A,!m,void 0,0,s);return k&&this._emitReady(),k})).then(A=>{this.closed||A.forEach(k=>{k&&this.add(Fd.dirname(k),Fd.basename(s||k))})}),this}unwatch(i){if(this.closed)return this;let s=mlt(i),{cwd:m}=this.options;return s.forEach(u=>{!Fd.isAbsolute(u)&&!this._closers.has(u)&&(m&&(u=Fd.join(m,u)),u=Fd.resolve(u)),this._closePath(u),this._addIgnoredPath(u),this._watched.has(u)&&this._addIgnoredPath({path:u,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let i=[];return this._closers.forEach(s=>s.forEach(m=>{let u=m();u instanceof Promise&&i.push(u)})),this._streams.forEach(s=>s.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(s=>s.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=i.length?Promise.all(i).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let i={};return this._watched.forEach((s,m)=>{let y=(this.options.cwd?Fd.relative(this.options.cwd,m):m)||vlt;i[y]=s.getChildren().sort()}),i}emitWithAll(i,s){this.emit(i,...s),i!==l_.ERROR&&this.emit(l_.ALL,i,...s)}async _emit(i,s,m){if(this.closed)return;let u=this.options;uLe&&(s=Fd.normalize(s)),u.cwd&&(s=Fd.relative(u.cwd,s));let y=[s];m!=null&&y.push(m);let A=u.awaitWriteFinish,k;if(A&&(k=this._pendingWrites.get(s)))return k.lastChange=new Date,this;if(u.atomic){if(i===l_.UNLINK)return this._pendingUnlinks.set(s,[i,...y]),setTimeout(()=>{this._pendingUnlinks.forEach((J,ce)=>{this.emit(...J),this.emit(l_.ALL,...J),this._pendingUnlinks.delete(ce)})},typeof u.atomic=="number"?u.atomic:100),this;i===l_.ADD&&this._pendingUnlinks.has(s)&&(i=l_.CHANGE,this._pendingUnlinks.delete(s))}if(A&&(i===l_.ADD||i===l_.CHANGE)&&this._readyEmitted){let J=(ce,_e)=>{ce?(i=l_.ERROR,y[0]=ce,this.emitWithAll(i,y)):_e&&(y.length>1?y[1]=_e:y.push(_e),this.emitWithAll(i,y))};return this._awaitWriteFinish(s,A.stabilityThreshold,i,J),this}if(i===l_.CHANGE&&!this._throttle(l_.CHANGE,s,50))return this;if(u.alwaysStat&&m===void 0&&(i===l_.ADD||i===l_.ADD_DIR||i===l_.CHANGE)){let J=u.cwd?Fd.join(u.cwd,s):s,ce;try{ce=await(0,Yce.stat)(J)}catch{}if(!ce||this.closed)return;y.push(ce)}return this.emitWithAll(i,y),this}_handleError(i){let s=i&&i.code;return i&&s!=="ENOENT"&&s!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||s!=="EPERM"&&s!=="EACCES")&&this.emit(l_.ERROR,i),i||this.closed}_throttle(i,s,m){this._throttled.has(i)||this._throttled.set(i,new Map);let u=this._throttled.get(i);if(!u)throw new Error("invalid throttle");let y=u.get(s);if(y)return y.count++,!1;let A,k=()=>{let ce=u.get(s),_e=ce?ce.count:0;return u.delete(s),clearTimeout(A),ce&&clearTimeout(ce.timeoutObject),_e};A=setTimeout(k,m);let J={timeoutObject:A,clear:k,count:0};return u.set(s,J),J}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(i,s,m,u){let y=this.options.awaitWriteFinish;if(typeof y!="object")return;let A=y.pollInterval,k,J=i;this.options.cwd&&!Fd.isAbsolute(i)&&(J=Fd.join(this.options.cwd,i));let ce=new Date,_e=this._pendingWrites;function Me(se){(0,ylt.stat)(J,(ft,Je)=>{if(ft||!_e.has(i)){ft&&ft.code!=="ENOENT"&&u(ft);return}let Ze=Number(new Date);se&&Je.size!==se.size&&(_e.get(i).lastChange=Ze);let Nr=_e.get(i);Ze-Nr.lastChange>=s?(_e.delete(i),u(void 0,Je)):k=setTimeout(Me,A,Je)})}_e.has(i)||(_e.set(i,{lastChange:ce,cancelWait:()=>(_e.delete(i),clearTimeout(k),m)}),k=setTimeout(Me,A))}_isIgnored(i,s){if(this.options.atomic&&xUt.test(i))return!0;if(!this._userIgnored){let{cwd:m}=this.options,y=(this.options.ignored||[]).map(hlt(m)),k=[...[...this._ignoredPaths].map(hlt(m)),...y];this._userIgnored=CUt(k,void 0)}return this._userIgnored(i,s)}_isntIgnored(i,s){return!this._isIgnored(i,s)}_getWatchHelpers(i){return new _Le(i,this.options.followSymlinks,this)}_getWatchedDir(i){let s=Fd.resolve(i);return this._watched.has(s)||this._watched.set(s,new mLe(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(i){return this.options.ignorePermissionErrors?!0:!!(Number(i.mode)&256)}_remove(i,s,m){let u=Fd.join(i,s),y=Fd.resolve(u);if(m=m??(this._watched.has(u)||this._watched.has(y)),!this._throttle("remove",u,100))return;!m&&this._watched.size===1&&this.add(i,s,!0),this._getWatchedDir(u).getChildren().forEach(se=>this._remove(u,se));let J=this._getWatchedDir(i),ce=J.has(s);J.remove(s),this._symlinkPaths.has(y)&&this._symlinkPaths.delete(y);let _e=u;if(this.options.cwd&&(_e=Fd.relative(this.options.cwd,u)),this.options.awaitWriteFinish&&this._pendingWrites.has(_e)&&this._pendingWrites.get(_e).cancelWait()===l_.ADD)return;this._watched.delete(u),this._watched.delete(y);let Me=m?l_.UNLINK_DIR:l_.UNLINK;ce&&!this._isIgnored(u)&&this._emit(Me,u),this._closePath(u)}_closePath(i){this._closeFile(i);let s=Fd.dirname(i);this._getWatchedDir(s).remove(Fd.basename(i))}_closeFile(i){let s=this._closers.get(i);s&&(s.forEach(m=>m()),this._closers.delete(i))}_addPathCloser(i,s){if(!s)return;let m=this._closers.get(i);m||(m=[],this._closers.set(i,m)),m.push(s)}_readdirp(i,s){if(this.closed)return;let m={type:l_.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},u=slt(i,m);return this._streams.add(u),u.once(dlt,()=>{u=void 0}),u.once(dLe,()=>{u&&(this._streams.delete(u),u=void 0)}),u}};function Tlt(d,i={}){let s=new hLe(i);return s.add(d),s}var Elt=Kl(require("node:path"));var mL=ld("McpWorker"),LUt=300,kUt=p3;function xlt(d){if(!no.config?.rootDir){mL.warn("Cannot setup file watcher: no rootDir configured");return}let i=`${no.config.rootDir}/**/*{${kUt.join(",")}}`;mL.debug("Setting up file watcher for:",i);try{no.fileWatcher=Tlt(i,{ignored:f3.map(s=>`**/${s}/**`),persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}}),no.fileWatcher.on("change",s=>{gLe(d,"change",s)}),no.fileWatcher.on("add",s=>{gLe(d,"add",s)}),no.fileWatcher.on("unlink",s=>{gLe(d,"unlink",s)}),no.fileWatcher.on("error",s=>{let m=s instanceof Error?s.message:String(s);mL.error("File watcher error:",m)}),no.fileWatcher.on("ready",()=>{mL.debug("File watcher ready")})}catch(s){let m=s instanceof Error?s.message:"Unknown error";mL.error("Failed to setup file watcher:",m)}}function Alt(){no.fileWatcher&&(mL.debug("Stopping file watcher..."),no.fileWatcher.close().catch(d=>{mL.error("Error closing file watcher:",d.message)}),no.fileWatcher=null);for(let d of no.pendingInvalidations.values())clearTimeout(d);no.pendingInvalidations.clear()}function gLe(d,i,s){let m=no.pendingInvalidations.get(s);m&&clearTimeout(m);let u=setTimeout(()=>{no.pendingInvalidations.delete(s),wUt(d,i,s)},LUt);no.pendingInvalidations.set(s,u)}function wUt(d,i,s){if(no.spider){switch(mL.debug("File",i+":",Elt.basename(s)),i){case"change":case"add":no.spider.invalidateFile(s),no.symbolReverseIndex&&no.symbolReverseIndex.removeDependenciesFromSource(s);break;case"unlink":no.spider.handleFileDeleted(s),no.symbolReverseIndex&&no.symbolReverseIndex.removeDependenciesFromSource(s);break}d({type:"file-invalidated",filePath:s,event:i})}}var Cut=Kl(require("node:fs/promises"));var Clt=Kl(require("node:fs/promises")),RE=Kl(require("node:path"));var Ilt=Kl(require("node:path")),OUt={".ts":"typescript",".tsx":"typescript",".mts":"typescript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".rs":"rust",".vue":"vue",".svelte":"svelte",".gql":"graphql",".graphql":"graphql",".cs":"csharp",".csproj":"csharp",".go":"go",".java":"java"};function Zce(d){let i=d;return d.includes("/")||d.includes("\\")?i=Ilt.extname(d).toLowerCase():(i.startsWith(".")||(i="."+i),i=i.toLowerCase()),OUt[i]||"unknown"}function Dlt(d){switch(d.toLowerCase()){case"function":case"method":return 12;case"class":return 5;case"variable":case"property":return 13;case"interface":return 11;default:return 13}}function qU(d,i){let s=Di(i),m=k=>{let J=k.lastIndexOf(":");return J<0||J===k.length-1?k:k.slice(J+1)},u=d.symbols.map(k=>({name:k.name,kind:Dlt(k.kind),range:{start:k.line,end:k.line},containerName:void 0,uri:s})),y=new Map,A=new Map;for(let k of u)y.set(k.name,{name:k.name,kind:k.kind,uri:s,range:k.range});for(let k of d.dependencies){let J=m(k.sourceSymbolId),ce=`${s}:${J}`;A.has(ce)||A.set(ce,[]);let _e=m(k.targetSymbolId);A.get(ce)?.push({to:{name:_e,kind:12,uri:s,range:{start:0,end:0}},fromRanges:[{start:0,end:0}]})}return{symbols:u,callHierarchyItems:y,outgoingCalls:A}}function Nf(d,i){let s=RE.relative(i,d);return s.startsWith("..")||RE.isAbsolute(s)?d:s.replaceAll("\\","/")}function yLe(d){let i=new Map,s=new Map;for(let m of d)i.set(m.source,(i.get(m.source)??0)+1),s.set(m.target,(s.get(m.target)??0)+1);return{dependencyCount:i,dependentCount:s}}function Plt(d,i,s,m){return d.map(u=>({path:u,relativePath:Nf(u,m),extension:u.split(".").pop()??"",dependencyCount:i.get(u)??0,dependentCount:s.get(u)??0}))}function Nlt(d,i){return d.map(s=>({source:s.source,target:s.target,sourceRelative:Nf(s.source,i),targetRelative:Nf(s.target,i)}))}function Rlt(d,i){let{dependencyCount:s,dependentCount:m}=yLe(i);for(let u of d)u.dependencyCount=s.get(u.path)||0,u.dependentCount=m.get(u.path)||0}function Mlt(d,i,s,m=0){let u=s===void 0?void 0:m+s,y=d.slice(m,u),A=new Set(y.map(J=>J.path)),k=i.filter(J=>A.has(J.source)&&A.has(J.target));return{nodes:y,edges:k}}function Llt(d){let i=new Map;for(let k of d)i.has(k.source)||i.set(k.source,new Set),i.get(k.source)?.add(k.target);let s=[],m=new Set,u=new Set,y=[];function A(k){m.add(k),u.add(k),y.push(k);let J=i.get(k);if(J){for(let ce of J)if(!m.has(ce))A(ce);else if(u.has(ce)){let _e=y.indexOf(ce),Me=y.slice(_e);Me.push(ce),s.push(Me)}}y.pop(),u.delete(k)}for(let k of i.keys())m.has(k)||A(k);return s}async function H_(d){try{if(!(await Clt.stat(d)).isFile())throw new Error(`Path is not a file: ${d}`)}catch(i){throw i.code==="ENOENT"?new Error(`File not found: ${d}`,{cause:i}):i}}async function klt(d){if(!RE.isAbsolute(d))throw new Error(`FILE_NOT_FOUND: Path must be absolute. Got relative path: ${d}`);try{await H_(d)}catch(m){let u=m instanceof Error?m.message:String(m);throw new Error(`FILE_NOT_FOUND: Cannot access file '${d}'. ${u}`,{cause:m})}let i=RE.extname(d).toLowerCase();if(!mU.includes(i))throw new Error(`UNSUPPORTED_FILE_TYPE: File extension '${i}' is not supported for symbol analysis. Supported extensions: ${mU.join(", ")}. File: ${d}`);let s=Zce(i);return{ext:i,language:s}}function wlt(d,i){if(d.includes("\0"))throw new Error(`INVALID_SCOPE_PATH: Path contains null bytes: ${d}`);if(!RE.isAbsolute(d))throw new Error(`INVALID_SCOPE_PATH: Scope path must be absolute. Got: ${d}`);let s=RE.resolve(d),m=RE.resolve(i);if(!(s===m||s.startsWith(m+RE.sep)||s.startsWith(m+"/")))throw new Error(`INVALID_SCOPE_PATH: Scope path '${d}' is outside workspace root '${i}'`)}var Bue=Kl(require("node:path"));var Jl={};tN(Jl,{$brand:()=>Qce,$input:()=>Wwe,$output:()=>Fwe,NEVER:()=>vLe,TimePrecision:()=>Vwe,ZodAny:()=>ROe,ZodArray:()=>wOe,ZodBase64:()=>Iue,ZodBase64URL:()=>Due,ZodBigInt:()=>Fz,ZodBigIntFormat:()=>Nue,ZodBoolean:()=>Oz,ZodCIDRv4:()=>xue,ZodCIDRv6:()=>Aue,ZodCUID:()=>gue,ZodCUID2:()=>yue,ZodCatch:()=>rFe,ZodCodec:()=>Wue,ZodCustom:()=>DH,ZodCustomStringFormat:()=>kz,ZodDate:()=>TH,ZodDefault:()=>YOe,ZodDiscriminatedUnion:()=>FOe,ZodE164:()=>Cue,ZodEmail:()=>mue,ZodEmoji:()=>_ue,ZodEnum:()=>Mz,ZodError:()=>dJt,ZodExactOptional:()=>$Oe,ZodFile:()=>KOe,ZodFirstPartyTypeKind:()=>_Fe,ZodFunction:()=>pFe,ZodGUID:()=>gH,ZodIPv4:()=>Tue,ZodIPv6:()=>Eue,ZodISODate:()=>lue,ZodISODateTime:()=>sue,ZodISODuration:()=>due,ZodISOTime:()=>cue,ZodIntersection:()=>WOe,ZodIssueCode:()=>pJt,ZodJWT:()=>Pue,ZodKSUID:()=>Sue,ZodLazy:()=>cFe,ZodLiteral:()=>HOe,ZodMAC:()=>xOe,ZodMap:()=>jOe,ZodNaN:()=>oFe,ZodNanoID:()=>hue,ZodNever:()=>LOe,ZodNonOptional:()=>Oue,ZodNull:()=>POe,ZodNullable:()=>XOe,ZodNumber:()=>wz,ZodNumberFormat:()=>JO,ZodObject:()=>xH,ZodOptional:()=>wue,ZodPipe:()=>Fue,ZodPrefault:()=>QOe,ZodPromise:()=>uFe,ZodReadonly:()=>aFe,ZodRealError:()=>tT,ZodRecord:()=>IH,ZodSet:()=>UOe,ZodString:()=>Lz,ZodStringFormat:()=>af,ZodSuccess:()=>nFe,ZodSymbol:()=>DOe,ZodTemplateLiteral:()=>lFe,ZodTransform:()=>JOe,ZodTuple:()=>BOe,ZodType:()=>Uc,ZodULID:()=>vue,ZodURL:()=>SH,ZodUUID:()=>C1,ZodUndefined:()=>COe,ZodUnion:()=>AH,ZodUnknown:()=>MOe,ZodVoid:()=>kOe,ZodXID:()=>bue,ZodXor:()=>OOe,_ZodString:()=>fue,_default:()=>ZOe,_function:()=>mut,any:()=>Kdt,array:()=>EH,base64:()=>Pdt,base64url:()=>Ndt,bigint:()=>Gdt,boolean:()=>IOe,catch:()=>iFe,check:()=>_ut,cidrv4:()=>Ddt,cidrv6:()=>Cdt,clone:()=>Ub,codec:()=>uut,coerce:()=>hFe,config:()=>K_,core:()=>_N,cuid:()=>vdt,cuid2:()=>bdt,custom:()=>hut,date:()=>$dt,decode:()=>gOe,decodeAsync:()=>vOe,describe:()=>gut,discriminatedUnion:()=>eut,e164:()=>Rdt,email:()=>cdt,emoji:()=>gdt,encode:()=>hOe,encodeAsync:()=>yOe,endsWith:()=>Tz,enum:()=>Lue,exactOptional:()=>qOe,file:()=>sut,flattenError:()=>iH,float32:()=>Fdt,float64:()=>Wdt,formatError:()=>oH,fromJSONSchema:()=>xut,function:()=>mut,getErrorMap:()=>mJt,globalRegistry:()=>Jy,gt:()=>I1,gte:()=>Hb,guid:()=>ddt,hash:()=>Odt,hex:()=>wdt,hostname:()=>kdt,httpUrl:()=>hdt,includes:()=>bz,instanceof:()=>vut,int:()=>pue,int32:()=>zdt,int64:()=>Vdt,intersection:()=>zOe,ipv4:()=>xdt,ipv6:()=>Idt,iso:()=>Rz,json:()=>Sut,jwt:()=>Mdt,keyof:()=>qdt,ksuid:()=>Edt,lazy:()=>dFe,length:()=>HO,literal:()=>aut,locales:()=>fH,looseObject:()=>Zdt,looseRecord:()=>nut,lowercase:()=>yz,lt:()=>A1,lte:()=>LE,mac:()=>Adt,map:()=>rut,maxLength:()=>UO,maxSize:()=>SL,meta:()=>yut,mime:()=>Ez,minLength:()=>mN,minSize:()=>D1,multipleOf:()=>bL,nan:()=>dut,nanoid:()=>ydt,nativeEnum:()=>out,negative:()=>Yde,never:()=>Rue,nonnegative:()=>Qde,nonoptional:()=>tFe,nonpositive:()=>Zde,normalize:()=>xz,null:()=>NOe,nullable:()=>vH,nullish:()=>lut,number:()=>AOe,object:()=>Xdt,optional:()=>yH,overwrite:()=>rI,parse:()=>pOe,parseAsync:()=>fOe,partialRecord:()=>tut,pipe:()=>bH,positive:()=>Xde,prefault:()=>eFe,preprocess:()=>Tut,prettifyError:()=>RLe,promise:()=>fut,property:()=>eue,readonly:()=>sFe,record:()=>VOe,refine:()=>fFe,regex:()=>gz,regexes:()=>bx,registry:()=>Pde,safeDecode:()=>SOe,safeDecodeAsync:()=>EOe,safeEncode:()=>bOe,safeEncodeAsync:()=>TOe,safeParse:()=>mOe,safeParseAsync:()=>_Oe,set:()=>iut,setErrorMap:()=>fJt,size:()=>jO,slugify:()=>Cz,startsWith:()=>Sz,strictObject:()=>Ydt,string:()=>uue,stringFormat:()=>Ldt,stringbool:()=>but,success:()=>cut,superRefine:()=>mFe,symbol:()=>Udt,templateLiteral:()=>put,toJSONSchema:()=>iue,toLowerCase:()=>Iz,toUpperCase:()=>Dz,transform:()=>kue,treeifyError:()=>NLe,trim:()=>Az,tuple:()=>GOe,uint32:()=>Bdt,uint64:()=>jdt,ulid:()=>Sdt,undefined:()=>Hdt,union:()=>Mue,unknown:()=>KO,uppercase:()=>vz,url:()=>_dt,util:()=>jo,uuid:()=>udt,uuidv4:()=>pdt,uuidv6:()=>fdt,uuidv7:()=>mdt,void:()=>Jdt,xid:()=>Tdt,xor:()=>Qdt});var _N={};tN(_N,{$ZodAny:()=>owe,$ZodArray:()=>dwe,$ZodAsyncError:()=>nI,$ZodBase64:()=>qke,$ZodBase64URL:()=>Xke,$ZodBigInt:()=>Tde,$ZodBigIntFormat:()=>twe,$ZodBoolean:()=>cH,$ZodCIDRv4:()=>Kke,$ZodCIDRv6:()=>Jke,$ZodCUID:()=>kke,$ZodCUID2:()=>wke,$ZodCatch:()=>Cwe,$ZodCheck:()=>Rf,$ZodCheckBigIntFormat:()=>dke,$ZodCheckEndsWith:()=>Tke,$ZodCheckGreaterThan:()=>_de,$ZodCheckIncludes:()=>bke,$ZodCheckLengthEquals:()=>hke,$ZodCheckLessThan:()=>mde,$ZodCheckLowerCase:()=>yke,$ZodCheckMaxLength:()=>mke,$ZodCheckMaxSize:()=>uke,$ZodCheckMimeType:()=>xke,$ZodCheckMinLength:()=>_ke,$ZodCheckMinSize:()=>pke,$ZodCheckMultipleOf:()=>lke,$ZodCheckNumberFormat:()=>cke,$ZodCheckOverwrite:()=>Ake,$ZodCheckProperty:()=>Eke,$ZodCheckRegex:()=>gke,$ZodCheckSizeEquals:()=>fke,$ZodCheckStartsWith:()=>Ske,$ZodCheckStringFormat:()=>_z,$ZodCheckUpperCase:()=>vke,$ZodCodec:()=>uH,$ZodCustom:()=>Owe,$ZodCustomStringFormat:()=>Qke,$ZodDate:()=>cwe,$ZodDefault:()=>xwe,$ZodDiscriminatedUnion:()=>fwe,$ZodE164:()=>Yke,$ZodEmail:()=>Nke,$ZodEmoji:()=>Mke,$ZodEncodeError:()=>_L,$ZodEnum:()=>ywe,$ZodError:()=>rH,$ZodExactOptional:()=>Twe,$ZodFile:()=>bwe,$ZodFunction:()=>Lwe,$ZodGUID:()=>Cke,$ZodIPv4:()=>jke,$ZodIPv6:()=>Uke,$ZodISODate:()=>Bke,$ZodISODateTime:()=>zke,$ZodISODuration:()=>Vke,$ZodISOTime:()=>Gke,$ZodIntersection:()=>mwe,$ZodJWT:()=>Zke,$ZodKSUID:()=>Wke,$ZodLazy:()=>wwe,$ZodLiteral:()=>vwe,$ZodMAC:()=>Hke,$ZodMap:()=>hwe,$ZodNaN:()=>Pwe,$ZodNanoID:()=>Lke,$ZodNever:()=>swe,$ZodNonOptional:()=>Iwe,$ZodNull:()=>iwe,$ZodNullable:()=>Ewe,$ZodNumber:()=>Sde,$ZodNumberFormat:()=>ewe,$ZodObject:()=>lct,$ZodObjectJIT:()=>uwe,$ZodOptional:()=>xde,$ZodPipe:()=>Nwe,$ZodPrefault:()=>Awe,$ZodPromise:()=>kwe,$ZodReadonly:()=>Rwe,$ZodRealError:()=>eT,$ZodRecord:()=>_we,$ZodRegistry:()=>Cde,$ZodSet:()=>gwe,$ZodString:()=>VO,$ZodStringFormat:()=>of,$ZodSuccess:()=>Dwe,$ZodSymbol:()=>nwe,$ZodTemplateLiteral:()=>Mwe,$ZodTransform:()=>Swe,$ZodTuple:()=>Ede,$ZodType:()=>dc,$ZodULID:()=>Oke,$ZodURL:()=>Rke,$ZodUUID:()=>Pke,$ZodUndefined:()=>rwe,$ZodUnion:()=>dH,$ZodUnknown:()=>awe,$ZodVoid:()=>lwe,$ZodXID:()=>Fke,$ZodXor:()=>pwe,$brand:()=>Qce,$constructor:()=>gr,$input:()=>Wwe,$output:()=>Fwe,Doc:()=>lH,JSONSchema:()=>sdt,JSONSchemaGenerator:()=>oue,NEVER:()=>vLe,TimePrecision:()=>Vwe,_any:()=>c2e,_array:()=>h2e,_base64:()=>Kde,_base64url:()=>Jde,_bigint:()=>n2e,_boolean:()=>e2e,_catch:()=>nJt,_check:()=>adt,_cidrv4:()=>Ude,_cidrv6:()=>Hde,_coercedBigint:()=>r2e,_coercedBoolean:()=>t2e,_coercedDate:()=>m2e,_coercedNumber:()=>$we,_coercedString:()=>Bwe,_cuid:()=>Fde,_cuid2:()=>Wde,_custom:()=>y2e,_date:()=>f2e,_decode:()=>ode,_decodeAsync:()=>sde,_default:()=>QKt,_discriminatedUnion:()=>GKt,_e164:()=>$de,_email:()=>Nde,_emoji:()=>wde,_encode:()=>ide,_encodeAsync:()=>ade,_endsWith:()=>Tz,_enum:()=>JKt,_file:()=>g2e,_float32:()=>Xwe,_float64:()=>Ywe,_gt:()=>I1,_gte:()=>Hb,_guid:()=>mH,_includes:()=>bz,_int:()=>qwe,_int32:()=>Zwe,_int64:()=>i2e,_intersection:()=>VKt,_ipv4:()=>Vde,_ipv6:()=>jde,_isoDate:()=>Uwe,_isoDateTime:()=>jwe,_isoDuration:()=>Kwe,_isoTime:()=>Hwe,_jwt:()=>qde,_ksuid:()=>Gde,_lazy:()=>aJt,_length:()=>HO,_literal:()=>qKt,_lowercase:()=>yz,_lt:()=>A1,_lte:()=>LE,_mac:()=>Gwe,_map:()=>HKt,_max:()=>LE,_maxLength:()=>UO,_maxSize:()=>SL,_mime:()=>Ez,_min:()=>Hb,_minLength:()=>mN,_minSize:()=>D1,_multipleOf:()=>bL,_nan:()=>_2e,_nanoid:()=>Ode,_nativeEnum:()=>$Kt,_negative:()=>Yde,_never:()=>u2e,_nonnegative:()=>Qde,_nonoptional:()=>eJt,_nonpositive:()=>Zde,_normalize:()=>xz,_null:()=>l2e,_nullable:()=>ZKt,_number:()=>Jwe,_optional:()=>YKt,_overwrite:()=>rI,_parse:()=>uz,_parseAsync:()=>pz,_pipe:()=>rJt,_positive:()=>Xde,_promise:()=>sJt,_property:()=>eue,_readonly:()=>iJt,_record:()=>UKt,_refine:()=>v2e,_regex:()=>gz,_safeDecode:()=>cde,_safeDecodeAsync:()=>ude,_safeEncode:()=>lde,_safeEncodeAsync:()=>dde,_safeParse:()=>fz,_safeParseAsync:()=>mz,_set:()=>KKt,_size:()=>jO,_slugify:()=>Cz,_startsWith:()=>Sz,_string:()=>zwe,_stringFormat:()=>Pz,_stringbool:()=>E2e,_success:()=>tJt,_superRefine:()=>b2e,_symbol:()=>a2e,_templateLiteral:()=>oJt,_toLowerCase:()=>Iz,_toUpperCase:()=>Dz,_transform:()=>XKt,_trim:()=>Az,_tuple:()=>jKt,_uint32:()=>Qwe,_uint64:()=>o2e,_ulid:()=>zde,_undefined:()=>s2e,_union:()=>zKt,_unknown:()=>d2e,_uppercase:()=>vz,_url:()=>_H,_uuid:()=>Rde,_uuidv4:()=>Mde,_uuidv6:()=>Lde,_uuidv7:()=>kde,_void:()=>p2e,_xid:()=>Bde,_xor:()=>BKt,clone:()=>Ub,config:()=>K_,createStandardJSONSchemaMethod:()=>Nz,createToJSONSchemaMethod:()=>x2e,decode:()=>dHt,decodeAsync:()=>pHt,describe:()=>S2e,encode:()=>cHt,encodeAsync:()=>uHt,extractDefs:()=>EL,finalize:()=>xL,flattenError:()=>iH,formatError:()=>oH,globalConfig:()=>XU,globalRegistry:()=>Jy,initializeContext:()=>TL,isValidBase64:()=>$ke,isValidBase64URL:()=>ict,isValidJWT:()=>oct,locales:()=>fH,meta:()=>T2e,parse:()=>nde,parseAsync:()=>rde,prettifyError:()=>RLe,process:()=>Tp,regexes:()=>bx,registry:()=>Pde,safeDecode:()=>mHt,safeDecodeAsync:()=>hHt,safeEncode:()=>fHt,safeEncodeAsync:()=>_Ht,safeParse:()=>MLe,safeParseAsync:()=>LLe,toDotPath:()=>Blt,toJSONSchema:()=>iue,treeifyError:()=>NLe,util:()=>jo,version:()=>Ike});var vLe=Object.freeze({status:"aborted"});function gr(d,i,s){function m(k,J){if(k._zod||Object.defineProperty(k,"_zod",{value:{def:J,constr:A,traits:new Set},enumerable:!1}),k._zod.traits.has(d))return;k._zod.traits.add(d),i(k,J);let ce=A.prototype,_e=Object.keys(ce);for(let Me=0;Me<_e.length;Me++){let se=_e[Me];se in k||(k[se]=ce[se].bind(k))}}let u=s?.Parent??Object;class y extends u{}Object.defineProperty(y,"name",{value:d});function A(k){var J;let ce=s?.Parent?new y:this;m(ce,k),(J=ce._zod).deferred??(J.deferred=[]);for(let _e of ce._zod.deferred)_e();return ce}return Object.defineProperty(A,"init",{value:m}),Object.defineProperty(A,Symbol.hasInstance,{value:k=>s?.Parent&&k instanceof s.Parent?!0:k?._zod?.traits?.has(d)}),Object.defineProperty(A,"name",{value:d}),A}var Qce=Symbol("zod_brand"),nI=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},_L=class extends Error{constructor(i){super(`Encountered unidirectional transform during encode: ${i}`),this.name="ZodEncodeError"}},XU={};function K_(d){return d&&Object.assign(XU,d),XU}var jo={};tN(jo,{BIGINT_FORMAT_RANGES:()=>PLe,Class:()=>SLe,NUMBER_FORMAT_RANGES:()=>CLe,aborted:()=>vL,allowsEval:()=>xLe,assert:()=>GUt,assertEqual:()=>FUt,assertIs:()=>zUt,assertNever:()=>BUt,assertNotEqual:()=>WUt,assignProp:()=>gL,base64ToUint8Array:()=>Flt,base64urlToUint8Array:()=>iHt,cached:()=>cz,captureStackTrace:()=>tde,cleanEnum:()=>rHt,cleanRegex:()=>QU,clone:()=>Ub,cloneDef:()=>jUt,createTransparentProxy:()=>qUt,defineLazy:()=>cd,esc:()=>ede,escapeRegex:()=>vx,extend:()=>ZUt,finalizeIssue:()=>QS,floatSafeRemainder:()=>TLe,getElementAtPath:()=>UUt,getEnumValues:()=>ZU,getLengthableOrigin:()=>nH,getParsedType:()=>$Ut,getSizableOrigin:()=>tH,hexToUint8Array:()=>aHt,isObject:()=>BO,isPlainObject:()=>yL,issue:()=>dz,joinValues:()=>mi,jsonStringifyReplacer:()=>lz,merge:()=>eHt,mergeDefs:()=>fN,normalizeParams:()=>ra,nullish:()=>hL,numKeys:()=>JUt,objectClone:()=>VUt,omit:()=>YUt,optionalKeys:()=>DLe,parsedType:()=>Vo,partial:()=>tHt,pick:()=>XUt,prefixIssues:()=>ME,primitiveTypes:()=>ILe,promiseAllObject:()=>HUt,propertyKeyTypes:()=>eH,randomString:()=>KUt,required:()=>nHt,safeExtend:()=>QUt,shallowClone:()=>ALe,slugify:()=>ELe,stringifyPrimitive:()=>ko,uint8ArrayToBase64:()=>Wlt,uint8ArrayToBase64url:()=>oHt,uint8ArrayToHex:()=>sHt,unwrapMessage:()=>YU});function FUt(d){return d}function WUt(d){return d}function zUt(d){}function BUt(d){throw new Error("Unexpected value in exhaustive check")}function GUt(d){}function ZU(d){let i=Object.values(d).filter(m=>typeof m=="number");return Object.entries(d).filter(([m,u])=>i.indexOf(+m)===-1).map(([m,u])=>u)}function mi(d,i="|"){return d.map(s=>ko(s)).join(i)}function lz(d,i){return typeof i=="bigint"?i.toString():i}function cz(d){return{get value(){{let s=d();return Object.defineProperty(this,"value",{value:s}),s}throw new Error("cached value already set")}}}function hL(d){return d==null}function QU(d){let i=d.startsWith("^")?1:0,s=d.endsWith("$")?d.length-1:d.length;return d.slice(i,s)}function TLe(d,i){let s=(d.toString().split(".")[1]||"").length,m=i.toString(),u=(m.split(".")[1]||"").length;if(u===0&&/\d?e-\d?/.test(m)){let J=m.match(/\d?e-(\d?)/);J?.[1]&&(u=Number.parseInt(J[1]))}let y=s>u?s:u,A=Number.parseInt(d.toFixed(y).replace(".","")),k=Number.parseInt(i.toFixed(y).replace(".",""));return A%k/10**y}var Olt=Symbol("evaluating");function cd(d,i,s){let m;Object.defineProperty(d,i,{get(){if(m!==Olt)return m===void 0&&(m=Olt,m=s()),m},set(u){Object.defineProperty(d,i,{value:u})},configurable:!0})}function VUt(d){return Object.create(Object.getPrototypeOf(d),Object.getOwnPropertyDescriptors(d))}function gL(d,i,s){Object.defineProperty(d,i,{value:s,writable:!0,enumerable:!0,configurable:!0})}function fN(...d){let i={};for(let s of d){let m=Object.getOwnPropertyDescriptors(s);Object.assign(i,m)}return Object.defineProperties({},i)}function jUt(d){return fN(d._zod.def)}function UUt(d,i){return i?i.reduce((s,m)=>s?.[m],d):d}function HUt(d){let i=Object.keys(d),s=i.map(m=>d[m]);return Promise.all(s).then(m=>{let u={};for(let y=0;y<i.length;y++)u[i[y]]=m[y];return u})}function KUt(d=10){let i="abcdefghijklmnopqrstuvwxyz",s="";for(let m=0;m<d;m++)s+=i[Math.floor(Math.random()*i.length)];return s}function ede(d){return JSON.stringify(d)}function ELe(d){return d.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var tde="captureStackTrace"in Error?Error.captureStackTrace:(...d)=>{};function BO(d){return typeof d=="object"&&d!==null&&!Array.isArray(d)}var xLe=cz(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let d=Function;return new d(""),!0}catch{return!1}});function yL(d){if(BO(d)===!1)return!1;let i=d.constructor;if(i===void 0||typeof i!="function")return!0;let s=i.prototype;return!(BO(s)===!1||Object.prototype.hasOwnProperty.call(s,"isPrototypeOf")===!1)}function ALe(d){return yL(d)?{...d}:Array.isArray(d)?[...d]:d}function JUt(d){let i=0;for(let s in d)Object.prototype.hasOwnProperty.call(d,s)&&i++;return i}var $Ut=d=>{let i=typeof d;switch(i){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(d)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(d)?"array":d===null?"null":d.then&&typeof d.then=="function"&&d.catch&&typeof d.catch=="function"?"promise":typeof Map<"u"&&d instanceof Map?"map":typeof Set<"u"&&d instanceof Set?"set":typeof Date<"u"&&d instanceof Date?"date":typeof File<"u"&&d instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${i}`)}},eH=new Set(["string","number","symbol"]),ILe=new Set(["string","number","bigint","boolean","symbol","undefined"]);function vx(d){return d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ub(d,i,s){let m=new d._zod.constr(i??d._zod.def);return(!i||s?.parent)&&(m._zod.parent=d),m}function ra(d){let i=d;if(!i)return{};if(typeof i=="string")return{error:()=>i};if(i?.message!==void 0){if(i?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");i.error=i.message}return delete i.message,typeof i.error=="string"?{...i,error:()=>i.error}:i}function qUt(d){let i;return new Proxy({},{get(s,m,u){return i??(i=d()),Reflect.get(i,m,u)},set(s,m,u,y){return i??(i=d()),Reflect.set(i,m,u,y)},has(s,m){return i??(i=d()),Reflect.has(i,m)},deleteProperty(s,m){return i??(i=d()),Reflect.deleteProperty(i,m)},ownKeys(s){return i??(i=d()),Reflect.ownKeys(i)},getOwnPropertyDescriptor(s,m){return i??(i=d()),Reflect.getOwnPropertyDescriptor(i,m)},defineProperty(s,m,u){return i??(i=d()),Reflect.defineProperty(i,m,u)}})}function ko(d){return typeof d=="bigint"?d.toString()+"n":typeof d=="string"?`"${d}"`:`${d}`}function DLe(d){return Object.keys(d).filter(i=>d[i]._zod.optin==="optional"&&d[i]._zod.optout==="optional")}var CLe={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},PLe={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function XUt(d,i){let s=d._zod.def,m=s.checks;if(m&&m.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let y=fN(d._zod.def,{get shape(){let A={};for(let k in i){if(!(k in s.shape))throw new Error(`Unrecognized key: "${k}"`);i[k]&&(A[k]=s.shape[k])}return gL(this,"shape",A),A},checks:[]});return Ub(d,y)}function YUt(d,i){let s=d._zod.def,m=s.checks;if(m&&m.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let y=fN(d._zod.def,{get shape(){let A={...d._zod.def.shape};for(let k in i){if(!(k in s.shape))throw new Error(`Unrecognized key: "${k}"`);i[k]&&delete A[k]}return gL(this,"shape",A),A},checks:[]});return Ub(d,y)}function ZUt(d,i){if(!yL(i))throw new Error("Invalid input to extend: expected a plain object");let s=d._zod.def.checks;if(s&&s.length>0){let y=d._zod.def.shape;for(let A in i)if(Object.getOwnPropertyDescriptor(y,A)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let u=fN(d._zod.def,{get shape(){let y={...d._zod.def.shape,...i};return gL(this,"shape",y),y}});return Ub(d,u)}function QUt(d,i){if(!yL(i))throw new Error("Invalid input to safeExtend: expected a plain object");let s=fN(d._zod.def,{get shape(){let m={...d._zod.def.shape,...i};return gL(this,"shape",m),m}});return Ub(d,s)}function eHt(d,i){let s=fN(d._zod.def,{get shape(){let m={...d._zod.def.shape,...i._zod.def.shape};return gL(this,"shape",m),m},get catchall(){return i._zod.def.catchall},checks:[]});return Ub(d,s)}function tHt(d,i,s){let u=i._zod.def.checks;if(u&&u.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let A=fN(i._zod.def,{get shape(){let k=i._zod.def.shape,J={...k};if(s)for(let ce in s){if(!(ce in k))throw new Error(`Unrecognized key: "${ce}"`);s[ce]&&(J[ce]=d?new d({type:"optional",innerType:k[ce]}):k[ce])}else for(let ce in k)J[ce]=d?new d({type:"optional",innerType:k[ce]}):k[ce];return gL(this,"shape",J),J},checks:[]});return Ub(i,A)}function nHt(d,i,s){let m=fN(i._zod.def,{get shape(){let u=i._zod.def.shape,y={...u};if(s)for(let A in s){if(!(A in y))throw new Error(`Unrecognized key: "${A}"`);s[A]&&(y[A]=new d({type:"nonoptional",innerType:u[A]}))}else for(let A in u)y[A]=new d({type:"nonoptional",innerType:u[A]});return gL(this,"shape",y),y}});return Ub(i,m)}function vL(d,i=0){if(d.aborted===!0)return!0;for(let s=i;s<d.issues.length;s++)if(d.issues[s]?.continue!==!0)return!0;return!1}function ME(d,i){return i.map(s=>{var m;return(m=s).path??(m.path=[]),s.path.unshift(d),s})}function YU(d){return typeof d=="string"?d:d?.message}function QS(d,i,s){let m={...d,path:d.path??[]};if(!d.message){let u=YU(d.inst?._zod.def?.error?.(d))??YU(i?.error?.(d))??YU(s.customError?.(d))??YU(s.localeError?.(d))??"Invalid input";m.message=u}return delete m.inst,delete m.continue,i?.reportInput||delete m.input,m}function tH(d){return d instanceof Set?"set":d instanceof Map?"map":d instanceof File?"file":"unknown"}function nH(d){return Array.isArray(d)?"array":typeof d=="string"?"string":"unknown"}function Vo(d){let i=typeof d;switch(i){case"number":return Number.isNaN(d)?"nan":"number";case"object":{if(d===null)return"null";if(Array.isArray(d))return"array";let s=d;if(s&&Object.getPrototypeOf(s)!==Object.prototype&&"constructor"in s&&s.constructor)return s.constructor.name}}return i}function dz(...d){let[i,s,m]=d;return typeof i=="string"?{message:i,code:"custom",input:s,inst:m}:{...i}}function rHt(d){return Object.entries(d).filter(([i,s])=>Number.isNaN(Number.parseInt(i,10))).map(i=>i[1])}function Flt(d){let i=atob(d),s=new Uint8Array(i.length);for(let m=0;m<i.length;m++)s[m]=i.charCodeAt(m);return s}function Wlt(d){let i="";for(let s=0;s<d.length;s++)i+=String.fromCharCode(d[s]);return btoa(i)}function iHt(d){let i=d.replace(/-/g,"+").replace(/_/g,"/"),s="=".repeat((4-i.length%4)%4);return Flt(i+s)}function oHt(d){return Wlt(d).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function aHt(d){let i=d.replace(/^0x/,"");if(i.length%2!==0)throw new Error("Invalid hex string length");let s=new Uint8Array(i.length/2);for(let m=0;m<i.length;m+=2)s[m/2]=Number.parseInt(i.slice(m,m+2),16);return s}function sHt(d){return Array.from(d).map(i=>i.toString(16).padStart(2,"0")).join("")}var SLe=class{constructor(...i){}};var zlt=(d,i)=>{d.name="$ZodError",Object.defineProperty(d,"_zod",{value:d._zod,enumerable:!1}),Object.defineProperty(d,"issues",{value:i,enumerable:!1}),d.message=JSON.stringify(i,lz,2),Object.defineProperty(d,"toString",{value:()=>d.message,enumerable:!1})},rH=gr("$ZodError",zlt),eT=gr("$ZodError",zlt,{Parent:Error});function iH(d,i=s=>s.message){let s={},m=[];for(let u of d.issues)u.path.length>0?(s[u.path[0]]=s[u.path[0]]||[],s[u.path[0]].push(i(u))):m.push(i(u));return{formErrors:m,fieldErrors:s}}function oH(d,i=s=>s.message){let s={_errors:[]},m=u=>{for(let y of u.issues)if(y.code==="invalid_union"&&y.errors.length)y.errors.map(A=>m({issues:A}));else if(y.code==="invalid_key")m({issues:y.issues});else if(y.code==="invalid_element")m({issues:y.issues});else if(y.path.length===0)s._errors.push(i(y));else{let A=s,k=0;for(;k<y.path.length;){let J=y.path[k];k===y.path.length-1?(A[J]=A[J]||{_errors:[]},A[J]._errors.push(i(y))):A[J]=A[J]||{_errors:[]},A=A[J],k++}}};return m(d),s}function NLe(d,i=s=>s.message){let s={errors:[]},m=(u,y=[])=>{var A,k;for(let J of u.issues)if(J.code==="invalid_union"&&J.errors.length)J.errors.map(ce=>m({issues:ce},J.path));else if(J.code==="invalid_key")m({issues:J.issues},J.path);else if(J.code==="invalid_element")m({issues:J.issues},J.path);else{let ce=[...y,...J.path];if(ce.length===0){s.errors.push(i(J));continue}let _e=s,Me=0;for(;Me<ce.length;){let se=ce[Me],ft=Me===ce.length-1;typeof se=="string"?(_e.properties??(_e.properties={}),(A=_e.properties)[se]??(A[se]={errors:[]}),_e=_e.properties[se]):(_e.items??(_e.items=[]),(k=_e.items)[se]??(k[se]={errors:[]}),_e=_e.items[se]),ft&&_e.errors.push(i(J)),Me++}}};return m(d),s}function Blt(d){let i=[],s=d.map(m=>typeof m=="object"?m.key:m);for(let m of s)typeof m=="number"?i.push(`[${m}]`):typeof m=="symbol"?i.push(`[${JSON.stringify(String(m))}]`):/[^\w$]/.test(m)?i.push(`[${JSON.stringify(m)}]`):(i.length&&i.push("."),i.push(m));return i.join("")}function RLe(d){let i=[],s=[...d.issues].sort((m,u)=>(m.path??[]).length-(u.path??[]).length);for(let m of s)i.push(`\u2716 ${m.message}`),m.path?.length&&i.push(` \u2192 at ${Blt(m.path)}`);return i.join(`
|
|
42161
|
+
`).length}async parseImports(i){let s=V_(i),m=await this.fileReader.readFile(s);return this.parse(m,s).map(y=>({path:"",type:y.type,line:y.line,module:y.module}))}async resolvePath(i,s){let m=V_(i);return this.pathResolver.resolve(m,s)}};var YM=class{cache=new Map;maxSize;enableLRU;hits=0;misses=0;evictions=0;constructor(i={}){this.maxSize=i.maxSize??0,this.enableLRU=i.enableLRU??!0}get(i){let s=this.cache.get(i);if(s!==void 0)return this.hits++,this.enableLRU&&this.maxSize>0&&(this.cache.delete(i),this.cache.set(i,s)),s;this.misses++}set(i,s){this.cache.has(i)?this.cache.delete(i):this.maxSize>0&&this.cache.size>=this.maxSize&&this.evictOldest(),this.cache.set(i,s)}has(i){return this.cache.has(i)}clear(){this.cache.clear(),this.resetStats()}delete(i){return this.cache.delete(i)}get size(){return this.cache.size}getStats(){let i=this.hits+this.misses;return{hits:this.hits,misses:this.misses,evictions:this.evictions,size:this.cache.size,maxSize:this.maxSize,hitRate:i>0?this.hits/i:0}}resetStats(){this.hits=0,this.misses=0,this.evictions=0}keys(){return this.cache.keys()}entries(){return this.cache.entries()}evictOldest(){let i=this.cache.keys().next().value;i!==void 0&&(this.cache.delete(i),this.evictions++)}};var Bzt=ld("IndexerStatus"),_3=class{_state="idle";_processed=0;_total=0;_currentFile;_startTime;_errorMessage;_cancelled=!1;_listeners=new Set;_lastNotifyTime=0;_notifyThrottleMs;constructor(i){this._notifyThrottleMs=i?.notifyThrottleMs??250}subscribe(i){return this._listeners.add(i),i(this.getSnapshot()),()=>this._listeners.delete(i)}getSnapshot(){let i=this._total>0?Math.round(this._processed/this._total*100):0,s;if(this._startTime&&this._processed>0&&this._total>0&&this._state==="indexing"){let u=(Date.now()-this._startTime)/this._processed,y=this._total-this._processed;s=Math.round(u*y)}return{state:this._state,processed:this._processed,total:this._total,currentFile:this._currentFile,percentage:i,startTime:this._startTime,estimatedTimeRemaining:s,errorMessage:this._errorMessage,cancelled:this._cancelled}}startCounting(){this._state="counting",this._processed=0,this._total=0,this._currentFile=void 0,this._startTime=Date.now(),this._errorMessage=void 0,this._cancelled=!1,this._notifyListeners(!0)}setTotal(i){this._total=i,this._notifyListeners(!0)}startIndexing(){this._state="indexing",this._startTime=Date.now(),this._notifyListeners(!0)}startValidating(){this._state="validating",this._notifyListeners(!0)}updateProgress(i,s){this._processed=i,this._currentFile=s,this._notifyListeners(!1)}complete(){this._state="complete",this._currentFile=void 0,this._notifyListeners(!0)}setError(i){this._state="error",this._errorMessage=i,this._currentFile=void 0,this._notifyListeners(!0)}setCancelled(){this._cancelled=!0,this._state="idle",this._currentFile=void 0,this._notifyListeners(!0)}reset(){this._state="idle",this._processed=0,this._total=0,this._currentFile=void 0,this._startTime=void 0,this._errorMessage=void 0,this._cancelled=!1,this._notifyListeners(!0)}isActive(){return this._state==="counting"||this._state==="indexing"||this._state==="validating"}isReady(){return this._state==="complete"}_notifyListeners(i){let s=Date.now();if(!i&&s-this._lastNotifyTime<this._notifyThrottleMs)return;this._lastNotifyTime=s;let m=this.getSnapshot();for(let u of this._listeners)try{u(m)}catch(y){Bzt.error("Listener error:",y)}}get state(){return this._state}get total(){return this._total}get processed(){return this._processed}};var Ust=Kl(require("node:path"));var yu=Kl(zst());function ZMe(d){switch(d){case"FunctionDeclaration":case"ArrowFunction":case"MethodDeclaration":case"GetAccessor":case"SetAccessor":return"function";case"ClassDeclaration":return"class";case"InterfaceDeclaration":return"interface";case"TypeAliasDeclaration":return"type";case"VariableDeclaration":case"PropertyDeclaration":case"EnumDeclaration":return"variable";default:return"other"}}var Bst=ld("SymbolAnalyzer"),Nce=class{project;maxFiles;fileCount=0;fileReader;constructor(i,s={}){this.maxFiles=s.maxFiles??100,this.project=this.createProject(),this.fileReader=new Nm}createProject(){return new yu.Project({skipAddingFilesFromTsConfig:!0,useInMemoryFileSystem:!0,compilerOptions:{target:99,module:99}})}maybeResetProject(){this.fileCount>=this.maxFiles&&(Bst.debug(`Resetting ts-morph project (${this.fileCount} files in memory)`),this.project=this.createProject(),this.fileCount=0)}getFileCount(){return this.fileCount}reset(){Bst.debug("Forcing ts-morph project reset"),this.project=this.createProject(),this.fileCount=0}analyzeFileContent(i,s){this.maybeResetProject();let m=this.getOrCreateSourceFile(i,s),u=[],y=[],A=this.extractExportedSymbols(m,i,u);return this.extractNonExportedSymbols(m,i,A,u),this.buildDependencies(m,y),{symbols:u,dependencies:y}}getOrCreateSourceFile(i,s){let m=this.project.getSourceFile(i);return m?m.replaceWithText(s):(m=this.project.createSourceFile(i,s),this.fileCount++),m}extractExportedSymbols(i,s,m){let u=i.getExportedDeclarations(),y=new Set(u.keys());for(let[A,k]of u){let J=k[0];J&&(this.addSymbol(m,A,J.getKindName(),J.getStartLineNumber(),s,!0),J.getKindName()==="ClassDeclaration"&&yu.Node.isClassDeclaration(J)&&this.extractClassMembers(J,s,m))}return y}extractNonExportedSymbols(i,s,m,u){let y=i.getStatements();for(let A of y)yu.Node.isVariableStatement(A)?this.extractVariableDeclarations(A,s,m,u):this.extractOtherDeclarations(A,s,m,u)}extractVariableDeclarations(i,s,m,u){let y=i.getDeclarations();for(let A of y){let k=A.getName();m.has(k)||this.addSymbol(u,k,"VariableDeclaration",A.getStartLineNumber(),s,!1)}}extractOtherDeclarations(i,s,m,u){let y=this.getDeclarationInfo(i);!y||m.has(y.name)||(this.addSymbol(u,y.name,y.kind,i.getStartLineNumber(),s,!1),y.isClass&&yu.Node.isClassDeclaration(i)&&this.extractClassMembers(i,s,u))}getDeclarationInfo(i){if(yu.Node.isClassDeclaration(i)){let s=i.getName();if(s)return{name:s,kind:"ClassDeclaration",isClass:!0}}else if(yu.Node.isFunctionDeclaration(i)){let s=i.getName();if(s)return{name:s,kind:"FunctionDeclaration",isClass:!1}}else{if(yu.Node.isInterfaceDeclaration(i))return{name:i.getName(),kind:"InterfaceDeclaration",isClass:!1};if(yu.Node.isTypeAliasDeclaration(i))return{name:i.getName(),kind:"TypeAliasDeclaration",isClass:!1};if(yu.Node.isEnumDeclaration(i))return{name:i.getName(),kind:"EnumDeclaration",isClass:!1}}return null}addSymbol(i,s,m,u,y,A){i.push({name:s,kind:m,line:u,isExported:A,id:`${y}:${s}`,category:ZMe(m)})}buildDependencies(i,s){let m=this.buildImportMap(i),u=this.findSymbolUsage(i,m);for(let[y,A]of Object.entries(u))for(let k of A)s.push({sourceSymbolId:y,targetSymbolId:k.symbolId,targetFilePath:k.filePath,isTypeOnly:k.isTypeOnly})}getInternalExportDependencyGraph(i,s){this.maybeResetProject();let u=this.getOrCreateSourceFile(i,s).getExportedDeclarations(),y=new Set(u.keys()),A=new Map;for(let[k,J]of u){let ce=`${i}:${k}`,_e=this.getOrCreateDependencySet(A,ce);this.collectExportDependencies(J,k,y,i,_e)}return A}getOrCreateDependencySet(i,s){let m=i.get(s);return m||(m=new Set,i.set(s,m)),m}collectExportDependencies(i,s,m,u,y){for(let A of i){let k=A.getDescendantsOfKind(yu.SyntaxKind.Identifier);for(let J of k){let ce=J.getText();this.isValidDependency(ce,s,m)&&y.add(`${u}:${ce}`)}}}isValidDependency(i,s,m){return m.has(i)&&i!==s}buildImportMap(i){let s=new Map,m=i.getImportDeclarations();for(let u of m){let y=u.getModuleSpecifierValue(),A=u.isTypeOnly(),k=u.getDefaultImport();if(k){let _e=k.getText();s.set(_e,{originalName:"default",modulePath:y,isType:A})}let J=u.getNamedImports();for(let _e of J){let Me=_e.getNameNode().getText(),se=_e.getAliasNode(),ft=se?se.getText():Me;s.set(ft,{originalName:Me,modulePath:y,isType:A||_e.isTypeOnly()})}let ce=u.getNamespaceImport();if(ce){let _e=ce.getText();s.set(_e,{originalName:"*",modulePath:y,isType:A})}}return s}extractIntraFileCalls(i,s){let m=[],u=s.getFilePath(),y=this.collectFunctionNames(s),A=i.getDescendantsOfKind(yu.SyntaxKind.CallExpression);for(let k of A)this.processCallExpression(k,y,u,m);return m}collectFunctionNames(i){let s=new Set;for(let m of i.getFunctions()){let u=m.getName();u&&s.add(u)}for(let m of i.getClasses())for(let u of m.getMethods()){let y=u.getName();y&&s.add(y)}return s}processCallExpression(i,s,m,u){if(!yu.Node.isCallExpression(i))return;let y=i.getExpression();if(yu.Node.isIdentifier(y)){this.addDirectFunctionCall(y,s,m,u);return}yu.Node.isPropertyAccessExpression(y)&&this.addPropertyAccessCall(y,s,m,u)}addDirectFunctionCall(i,s,m,u){let y=i.getText();s.has(y)&&u.push({symbolId:`${m}:${y}`,filePath:m,isTypeOnly:!1})}addPropertyAccessCall(i,s,m,u){if(yu.Node.isPropertyAccessExpression(i)){let y=i.getName();s.has(y)&&u.push({symbolId:`${m}:${y}`,filePath:m,isTypeOnly:!1})}}findSymbolUsage(i,s){let m={},u=i.getFilePath(),y=[...i.getFunctions(),...i.getClasses(),...i.getVariableDeclarations()];for(let J of y){let ce=J.getName();if(!ce)continue;let _e=`${u}:${ce}`,Me=this.extractSymbolDependencies(J,s),se=this.extractIntraFileCalls(J,i);Me.push(...se),m[_e]=Me}let A=i.getStatements(),k=[];for(let J of A){if(yu.Node.isFunctionDeclaration(J)||yu.Node.isClassDeclaration(J)||yu.Node.isVariableStatement(J)||yu.Node.isInterfaceDeclaration(J)||yu.Node.isTypeAliasDeclaration(J)||yu.Node.isEnumDeclaration(J)||yu.Node.isImportDeclaration(J))continue;let ce=this.extractSymbolDependencies(J,s);k.push(...ce)}if(k.length>0){let J=`${u}:(file)`;m[J]=k}return m}extractSymbolDependencies(i,s){let m=[];return this.extractStaticImportDependencies(i,s,m),this.extractDynamicImportDependencies(i,m),m}extractStaticImportDependencies(i,s,m){let u=i.getDescendantsOfKind(yu.SyntaxKind.Identifier);for(let y of u){let A=s.get(y.getText());if(!A)continue;let k=this.buildTargetSymbolId(A);m.some(J=>J.symbolId===k)||m.push({symbolId:k,filePath:A.modulePath,isTypeOnly:A.isType})}}extractDynamicImportDependencies(i,s){let m=i.getDescendantsOfKind(yu.SyntaxKind.CallExpression);for(let u of m){let y=this.extractDynamicImportPath(u);if(!y)continue;let A=`${y}:default`;s.some(k=>k.symbolId===A)||s.push({symbolId:A,filePath:y,isTypeOnly:!1})}}extractDynamicImportPath(i){if(!yu.Node.isCallExpression(i)||i.getExpression().getKind()!==yu.SyntaxKind.ImportKeyword)return null;let m=i.getArguments();if(m.length===0)return null;let u=m[0];return yu.Node.isStringLiteral(u)?u.getLiteralValue():null}buildTargetSymbolId(i){return i.originalName==="default"?`${i.modulePath}:default`:`${i.modulePath}:${i.originalName}`}extractClassMembers(i,s,m){let u=i.getName();if(!u)return;let y=`${s}:${u}`,A=i.getMembers();for(let k of A){let J=k.getKindName();if(!yu.Node.isMethodDeclaration(k)&&!yu.Node.isPropertyDeclaration(k)&&!yu.Node.isGetAccessorDeclaration(k)&&!yu.Node.isSetAccessorDeclaration(k))continue;let ce=k.getName();if(!ce)continue;let _e=k.isStatic()??!1,Me=`${u}.${ce}`,se=_e?`Static${J}`:J;m.push({name:Me,kind:se,line:k.getStartLineNumber(),isExported:!1,id:`${s}:${Me}`,parentSymbolId:y,category:ZMe(J)})}}getExportedSymbols(i,s){let m=this.project.getSourceFile(i);m?m.replaceWithText(s):m=this.project.createSourceFile(i,s);let u=[],y=m.getExportedDeclarations();for(let[A,k]of y){let J=k[0];if(!J)continue;let ce=J.getKindName();u.push({name:A,kind:ce,line:J.getStartLineNumber(),isExported:!0,id:`${i}:${A}`,category:ZMe(ce)})}return u}filterRuntimeSymbols(i){let s=new Set(["InterfaceDeclaration","TypeAliasDeclaration","TypeParameter"]);return i.filter(m=>!s.has(m.kind))}async analyzeFile(i){let s=await this.fileReader.readFile(i),m=this.analyzeFileContent(i,s),u=new Map;for(let y of m.symbols)u.set(y.id,y);return u}async getSymbolDependencies(i){let s=await this.fileReader.readFile(i);return this.analyzeFileContent(i,s).dependencies}};var QMe=Kl(require("node:fs/promises")),E1=Kl(require("node:path"));var Gst=Kl(require("node:fs/promises")),V3=require("web-tree-sitter"),dy=class d{static instance=null;initPromise=null;parsers=new Map;parserPromises=new Map;languages=new Map;initialized=!1;textEncoder=new TextEncoder;constructor(){}static getInstance(){return d.instance??=new d,d.instance}async init(i){if(!this.initialized){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{try{await V3.Parser.init({locateFile:()=>i}),this.initialized=!0}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize web-tree-sitter from ${i}: ${m}. Ensure the WASM file exists and is not corrupted.`,{cause:s})}})(),await this.initPromise}}async getParser(i,s){if(!this.initialized)throw new Error("WasmParserFactory must be initialized with init() before creating parsers");if(this.parsers.has(i))return this.parsers.get(i);if(this.parserPromises.has(i))return this.parserPromises.get(i);let m=(async()=>{try{this.languages.has(i)||await this.loadLanguage(i,s);let u=new V3.Parser,y=this.languages.get(i);return u.setLanguage(y),this.parsers.set(i,u),u}finally{this.parserPromises.delete(i)}})();return this.parserPromises.set(i,m),m}async loadLanguage(i,s){try{let m;try{let u=await Gst.default.readFile(s),y=this.normalizeLegacyDylinkSection(new Uint8Array(u));m=await V3.Language.load(y)}catch(u){let y=u instanceof Error?u.message:String(u);if(y.includes("ENOENT")||y.includes("not found"))m=await V3.Language.load(s);else throw u}this.languages.set(i,m)}catch(m){let u=m instanceof Error?m.message:String(m);throw u.includes("ENOENT")||u.includes("not found")?new Error(`Language WASM file not found: ${s}. Ensure the extension is properly installed and WASM files are in the dist directory.`,{cause:m}):u.includes("magic")||u.includes("invalid")?new Error(`Failed to load language WASM from ${s}: ${u}. The WASM file may be corrupted. Try reinstalling the extension.`,{cause:m}):new Error(`Failed to load language WASM from ${s}: ${u}`,{cause:m})}}normalizeLegacyDylinkSection(i){try{if(i.length<12||i[0]!==0||i[1]!==97||i[2]!==115||i[3]!==109)return i;let s=8;if(i[s]!==0)return i;let m=this.readUnsignedLeb128(i,s+1),u=m.nextOffset,y=u+m.value;if(y>i.length)return i;let A=this.readUnsignedLeb128(i,u),k=A.nextOffset,J=k+A.value;if(J>y||Buffer.from(i.subarray(k,J)).toString("utf8")!=="dylink")return i;let _e=J,Me=this.readUnsignedLeb128(i,_e);_e=Me.nextOffset;let se=this.readUnsignedLeb128(i,_e);_e=se.nextOffset;let ft=this.readUnsignedLeb128(i,_e);_e=ft.nextOffset;let Je=this.readUnsignedLeb128(i,_e);_e=Je.nextOffset;let Ze=this.readUnsignedLeb128(i,_e);_e=Ze.nextOffset;let Nr=[];for(let cr=0;cr<Ze.value;cr++){let Ni=this.readUnsignedLeb128(i,_e);_e=Ni.nextOffset;let dd=_e+Ni.value;if(dd>y)return i;Nr.push(i.subarray(_e,dd)),_e=dd}let Jr=this.concatUint8Arrays(this.encodeUnsignedLeb128(Me.value),this.encodeUnsignedLeb128(se.value),this.encodeUnsignedLeb128(ft.value),this.encodeUnsignedLeb128(Je.value)),Ei=this.concatUint8Arrays(this.encodeUnsignedLeb128(Nr.length),...Nr.flatMap(cr=>[this.encodeUnsignedLeb128(cr.length),cr])),Wo=1,Ga=2,So=this.concatUint8Arrays(Uint8Array.of(Wo),this.encodeUnsignedLeb128(Jr.length),Jr),On=this.concatUint8Arrays(Uint8Array.of(Ga),this.encodeUnsignedLeb128(Ei.length),Ei),fn=this.textEncoder.encode("dylink.0"),hi=this.concatUint8Arrays(this.encodeUnsignedLeb128(fn.length),fn,So,On),jr=this.concatUint8Arrays(Uint8Array.of(0),this.encodeUnsignedLeb128(hi.length),hi);return this.concatUint8Arrays(i.subarray(0,8),jr,i.subarray(y))}catch{return i}}readUnsignedLeb128(i,s){let m=0,u=0,y=s;for(;y<i.length;){let A=i[y];if(m|=(A&127)<<u,y++,(A&128)===0)return{value:m,nextOffset:y};if(u+=7,u>35)throw new Error("Invalid LEB128 value")}throw new Error("Unexpected EOF while reading LEB128")}encodeUnsignedLeb128(i){let s=[],m=i>>>0;do{let u=m&127;m>>>=7,m!==0&&(u|=128),s.push(u)}while(m!==0);return Uint8Array.from(s)}concatUint8Arrays(...i){let s=i.reduce((y,A)=>y+A.length,0),m=new Uint8Array(s),u=0;for(let y of i)m.set(y,u),u+=y.length;return m}isInitialized(){return this.initialized}reset(){this.parsers.clear(),this.parserPromises.clear(),this.languages.clear(),this.initialized=!1,this.initPromise=null}};var Rce=class d{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i??process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser)return this.initPromise!==null?this.initPromise:(this.initPromise=(async()=>{let i=this.extensionPath;if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure CSharpParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=E1.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=E1.default.join(i,"dist","wasm","tree-sitter-c_sharp.wasm");this.parser=await s.getParser("c_sharp",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize C# WASM parser: ${m}`,{cause:s})}})(),this.initPromise)}async parseImports(i){let s=V_(i),m;try{m=await this.fileReader.readFile(s)}catch(A){throw Pd.fromError(A,s)}if(await this.ensureInitialized(),!this.parser)return[];let u=this.parser.parse(m);if(!u)return[];let y=[];return this.extractUsings(u.rootNode,s,y),y}extractUsings(i,s,m){if(i.type==="using_directive"){let u=i.children.find(y=>y.type==="identifier"||y.type==="qualified_name"||y.type==="member_access_expression");if(u){let y=u.text.trim();y&&m.push({path:Di(s),type:"import",line:u.startPosition.row+1,module:y})}}for(let u of i.children)this.extractUsings(u,s,m)}async resolvePath(i,s){if(this.isFrameworkNamespace(s))return null;let m=s.split(".");return m.length<2||m.some(d.isUnsafeSegment)?null:this.resolveNamespace(m)}async resolveNamespace(i){try{return await this.resolveViaSuffix(i)??await this.resolveViaLastSegment(i)}catch{return null}}static isUnsafeSegment(i){return i===""||i===".."||i.includes("/")}async resolveViaSuffix(i){for(let s=i.length-1;s>=1;s--){let m=E1.default.resolve(this.rootDir,i.slice(s).join(E1.default.sep));if(!this.isWithinRoot(m))continue;let u=await this.findFirstCsFile(m);if(u)return Di(u)}return null}async resolveViaLastSegment(i){let s=i.at(-1)??"";if(!s)return null;let m=await this.findDirectory(this.rootDir,s,3);if(!m||!this.isWithinRoot(m))return null;let u=await this.findFirstCsFile(m);return u?Di(u):null}isWithinRoot(i){let s=Di(E1.default.resolve(i)),m=Di(E1.default.resolve(this.rootDir));return s===m||s.startsWith(m+"/")}isFrameworkNamespace(i){return["System","Microsoft","Newtonsoft","NUnit","Xunit","MSTest","AutoMapper","FluentValidation","MediatR","Serilog"].some(m=>i===m||i.startsWith(m+"."))}async findFirstCsFile(i){try{let m=(await QMe.default.readdir(i,{withFileTypes:!0})).filter(u=>u.isFile()&&u.name.endsWith(".cs")).sort((u,y)=>u.name.localeCompare(y.name));return m.length>0?E1.default.join(i,m[0].name):null}catch{return null}}async findDirectory(i,s,m){if(m<=0)return null;try{let y=(await QMe.default.readdir(i,{withFileTypes:!0})).filter(d.isTraversableDir);for(let A of y){if(A.name===s)return E1.default.join(i,A.name);let k=await this.findDirectory(E1.default.join(i,A.name),s,m-1);if(k)return k}}catch{}return null}static isTraversableDir(i){return i.isDirectory()&&!i.name.startsWith(".")&&i.name!=="node_modules"}};var Mce=Kl(require("node:fs/promises")),yx=Kl(require("node:path"));var Lce=class d{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i??process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser)return this.initPromise!==null?this.initPromise:(this.initPromise=(async()=>{let i=this.extensionPath;if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure GoParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=yx.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=yx.default.join(i,"dist","wasm","tree-sitter-go.wasm");this.parser=await s.getParser("go",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Go WASM parser: ${m}`,{cause:s})}})(),this.initPromise)}async parseImports(i){let s=V_(i),m;try{m=await this.fileReader.readFile(s)}catch(A){throw Pd.fromError(A,s)}if(await this.ensureInitialized(),!this.parser)return[];let u=this.parser.parse(m);if(!u)return[];let y=[];return this.extractImports(u.rootNode,s,y),y}extractImports(i,s,m){if(i.type==="import_spec"){let u=i.children.find(y=>y.type==="interpreted_string_literal"||y.type==="raw_string_literal");if(u){let y=u.text.replaceAll(/^["`]|["`]$/g,"").trim();y&&m.push({path:Di(s),type:"import",line:u.startPosition.row+1,module:y})}}for(let u of i.children)this.extractImports(u,s,m)}async resolvePath(i,s){if(this.isGoStdlibImport(s))return null;let m=s.split("/");return m.some(d.isUnsafePart)?null:this.resolveGoImport(V_(i),s,m)}async resolveGoImport(i,s,m){try{let u=await this.resolveViaGoMod(i,s)??await this.resolveViaLastSegment(m);return u?Di(u):null}catch{return null}}static isUnsafePart(i){return i===".."||i===""}async resolveViaGoMod(i,s){let m=await this.findGoModuleInfo(yx.default.dirname(i));if(!m||!s.startsWith(m.moduleName+"/"))return null;let y=s.slice(m.moduleName.length+1).split("/");if(y.some(d.isUnsafePart))return null;let A=yx.default.resolve(m.moduleDir,...y);return this.isWithinRoot(A)?this.findFirstGoFile(A):null}async resolveViaLastSegment(i){let s=i.at(-1)??"";if(!s)return null;let m=await this.findDirectory(this.rootDir,s,3);return!m||!this.isWithinRoot(m)?null:this.findFirstGoFile(m)}isWithinRoot(i){let s=Di(yx.default.resolve(i)),m=Di(yx.default.resolve(this.rootDir));return s===m||s.startsWith(m+"/")}isGoStdlibImport(i){return!(i.split("/")[0]??"").includes(".")}async findGoModuleInfo(i){let s=i,m=Di(this.rootDir);for(;;){let u=await this.readGoModuleName(yx.default.join(s,"go.mod"));if(u)return{moduleDir:s,moduleName:u};let y=yx.default.dirname(s);if(y===s||!Di(y).startsWith(m))break;s=y}return null}async readGoModuleName(i){try{let s=await Mce.default.readFile(i,"utf-8"),m=/^module\s+(\S+)/mu.exec(s);return m?m[1]:null}catch{return null}}async findFirstGoFile(i){try{let m=(await Mce.default.readdir(i,{withFileTypes:!0})).filter(u=>u.isFile()&&u.name.endsWith(".go")&&!u.name.endsWith("_test.go")).sort((u,y)=>u.name.localeCompare(y.name));return m.length>0?yx.default.join(i,m[0].name):null}catch{return null}}async findDirectory(i,s,m){if(m<=0)return null;try{let y=(await Mce.default.readdir(i,{withFileTypes:!0})).filter(d.isTraversableDir);for(let A of y){if(A.name===s)return yx.default.join(i,A.name);let k=await this.findDirectory(yx.default.join(i,A.name),s,m-1);if(k)return k}}catch{}return null}static isTraversableDir(i){return i.isDirectory()&&!i.name.startsWith(".")&&i.name!=="node_modules"}};var eLe=Kl(require("node:fs/promises")),cN=Kl(require("node:path"));var kce=class{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i??process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser)return this.initPromise!==null?this.initPromise:(this.initPromise=(async()=>{let i=this.extensionPath;if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure JavaParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=cN.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=cN.default.join(i,"dist","wasm","tree-sitter-java.wasm");this.parser=await s.getParser("java",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Java WASM parser: ${m}`,{cause:s})}})(),this.initPromise)}async parseImports(i){let s=V_(i),m;try{m=await this.fileReader.readFile(s)}catch(A){throw Pd.fromError(A,s)}if(await this.ensureInitialized(),!this.parser)return[];let u=this.parser.parse(m);if(!u)return[];let y=[];return this.extractImports(u.rootNode,s,y),y}extractImports(i,s,m){if(i.type==="import_declaration"){let u=i.children.find(y=>y.type==="identifier"||y.type==="scoped_identifier");if(u){let y=u.text.trim();y&&m.push({path:Di(s),type:"import",line:u.startPosition.row+1,module:y})}}for(let u of i.children)this.extractImports(u,s,m)}async resolvePath(i,s){try{if(this.isJavaStdlibImport(s)||s.endsWith(".*"))return null;let m=s.split(".");if(m.some(J=>J===""||J===".."||J.includes("/")))return null;let u=m.at(-1)??"",y=m.join(cN.default.sep)+".java",A=cN.default.resolve(this.rootDir,y);if(this.isWithinRoot(A)&&await this.fileExists(A))return Di(A);let k=await this.findFile(this.rootDir,u+".java",4);return k?Di(k):null}catch{return null}}isWithinRoot(i){let s=Di(cN.default.resolve(i)),m=Di(cN.default.resolve(this.rootDir));return s===m||s.startsWith(m+"/")}isJavaStdlibImport(i){return["java.","javax.","sun.","com.sun.","org.w3c.","org.xml.","org.ietf.","org.omg.","jdk.","javafx."].some(m=>i.startsWith(m))}async findFile(i,s,m){if(m<=0)return null;try{let u=await eLe.default.readdir(i,{withFileTypes:!0});for(let y of u)if(y.isFile()&&y.name===s)return cN.default.join(i,y.name);for(let y of u)if(y.isDirectory()&&!y.name.startsWith(".")&&y.name!=="node_modules"){let A=await this.findFile(cN.default.join(i,y.name),s,m-1);if(A)return A}}catch{}return null}async fileExists(i){try{return await eLe.default.access(i),!0}catch{return!1}}};var tLe=Kl(require("node:fs/promises")),jb=Kl(require("node:path"));var wce=class{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i||process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{let i=await this.resolveExtensionPath();if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure PythonParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=jb.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=jb.default.join(i,"dist","wasm","tree-sitter-python.wasm");this.parser=await s.getParser("python",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Python WASM parser: ${m}`,{cause:s})}})(),await this.initPromise}}async resolveExtensionPath(){if(this.extensionPath)return this.extensionPath;let i=process.cwd(),s=jb.default.join(i,"dist","wasm","tree-sitter.wasm");try{return await tLe.default.access(s),i}catch{return}}async parseImports(i){try{await this.ensureInitialized();let s=V_(i),m=await this.fileReader.readFile(s),u=this.parser.parse(m);if(!u)throw new Error(`Failed to parse Python file: ${s}`);let y=[],A=new Set;return this.traverseTree(u.rootNode,k=>{k.type==="import_statement"?this.extractImportStatement(k,y,A,m):k.type==="import_from_statement"&&this.extractImportFromStatement(k,y,A,m)}),y}catch(s){throw Pd.fromError(s,i)}}async resolvePath(i,s){try{await this.ensureInitialized();let m=V_(i),u=jb.default.dirname(m);return s.startsWith(".")?await this.resolveRelativeImport(u,s):await this.resolveAbsoluteImport(u,s)}catch{return null}}extractImportStatement(i,s,m,u){let y=this.findChildrenByType(i,"dotted_name");for(let A of y){let k=this.getNodeText(A,u);k&&!m.has(k)&&(m.add(k),s.push({path:"",type:"import",line:A.startPosition.row+1,module:k}))}}extractImportFromStatement(i,s,m,u){let y=null,A=this.findChildByType(i,"relative_import");if(A)y=this.getNodeText(A,u);else{let k=this.findChildByType(i,"dotted_name");k&&(y=this.getNodeText(k,u))}y&&!m.has(y)&&(m.add(y),s.push({path:"",type:"import",line:i.startPosition.row+1,module:y}))}async resolveRelativeImport(i,s){let m=/^\.*/u.exec(s),u=m?m[0].length:0,y=s.slice(u).replaceAll(".","/"),A=i;for(let J=1;J<u;J++)A=jb.default.dirname(A);let k=[jb.default.join(A,y+".py"),jb.default.join(A,y+".pyi"),jb.default.join(A,y,"__init__.py"),jb.default.join(A,y,"__init__.pyi")];for(let J of k)if(await this.fileExists(J))return Di(J);return null}async resolveAbsoluteImport(i,s){let m=s.replaceAll(".","/"),u=Di(this.rootDir),y=new Set,A=async J=>{let ce=Di(J);if(y.has(ce))return null;y.add(ce);let _e=[jb.default.join(J,m+".py"),jb.default.join(J,m+".pyi"),jb.default.join(J,m,"__init__.py"),jb.default.join(J,m,"__init__.pyi")];for(let Me of _e)if(await this.fileExists(Me))return Di(Me);return null},k=i;for(;;){let J=await A(k);if(J)return J;let ce=jb.default.dirname(k);if(ce===k)break;if(Di(ce)===u){let _e=await A(ce);if(_e)return _e;break}k=ce}if(!y.has(u)){let J=await A(this.rootDir);if(J)return J}return null}async fileExists(i){try{return await tLe.default.access(i),!0}catch{return!1}}traverseTree(i,s){s(i);for(let m of i.children)this.traverseTree(m,s)}findChildrenByType(i,s){let m=[];for(let u of i.children)u.type===s&&m.push(u);return m}findChildByType(i,s){for(let m of i.children)if(m.type===s)return m;return null}getNodeText(i,s){return s.slice(i.startIndex,i.endIndex)}};var Vst=Kl(require("node:fs/promises")),Oce=Kl(require("node:path"));var Fce=class{parser=null;fileReader;initPromise=null;extensionPath;constructor(i,s){this.extensionPath=s??i,this.fileReader=new Nm}async ensureInitialized(){if(!this.parser){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{let i=await this.resolveExtensionPath();if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure PythonSymbolAnalyzer is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=Oce.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=Oce.default.join(i,"dist","wasm","tree-sitter-python.wasm");this.parser=await s.getParser("python",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Python WASM parser for symbol analysis: ${m}`,{cause:s})}})(),await this.initPromise}}async resolveExtensionPath(){if(this.extensionPath)return this.extensionPath;let i=process.cwd(),s=Oce.default.join(i,"dist","wasm","tree-sitter.wasm");try{return await Vst.default.access(s),i}catch{return}}async analyzeFile(i){try{await this.ensureInitialized();let s=await this.fileReader.readFile(i);return this.analyzeFileFromContent(i,s)}catch(s){throw Pd.fromError(s,i)}}analyzeFileFromContent(i,s){if(!this.parser)throw new Error("Parser not initialized. Call ensureInitialized() before using analyzeFileFromContent().");let m=this.parser.parse(s);if(!m)throw new Error(`Failed to parse Python file: ${i}`);let u=new Map,y=Di(i);return this.extractSymbols(m.rootNode,y,s,u),u}analyzeFileContent(i,s){if(!this.parser)throw new Error("Parser not initialized. Call ensureInitialized() before using analyzeFileContent().");let m=this.parser.parse(s);if(!m)throw new Error(`Failed to parse Python file: ${i}`);let u=new Map,y=[],A=Di(i);this.extractSymbols(m.rootNode,A,s,u);let k=this.buildImportMap(m.rootNode,s);return this.extractDependencies(m.rootNode,A,s,y,u,void 0,k),{symbols:Array.from(u.values()),dependencies:y}}async getSymbolDependencies(i){try{await this.ensureInitialized();let s=await this.fileReader.readFile(i);return this.analyzeFileContent(i,s).dependencies}catch(s){throw Pd.fromError(s,i)}}extractSymbols(i,s,m,u,y){this.tryExtractSymbolFromNode(i,s,m,u,y)||this.extractSymbolsFromChildren(i,s,m,u,y)}tryExtractSymbolFromNode(i,s,m,u,y){return i.type==="function_definition"?(this.handleFunctionDefinition(i,s,m,u,y),!0):i.type==="class_definition"?(this.handleClassDefinition(i,s,m,u,y),!0):i.type==="decorated_definition"?(this.handleDecoratedDefinition(i,s,m,u,y),!0):!1}handleFunctionDefinition(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasChild(i,"async");u.set(J,{name:k,kind:ce?"AsyncFunction":"FunctionDeclaration",line:A.startPosition.row+1,isExported:this.isExported(i,m),id:J,parentSymbolId:y,category:"function"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleClassDefinition(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`;u.set(J,{name:k,kind:"ClassDeclaration",line:A.startPosition.row+1,isExported:this.isExported(i,m),id:J,parentSymbolId:y,category:"class"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleDecoratedDefinition(i,s,m,u,y){for(let A of i.children)(A.type==="function_definition"||A.type==="class_definition")&&this.extractSymbols(A,s,m,u,y)}extractSymbolsFromChildren(i,s,m,u,y){for(let A of i.children)this.extractSymbols(A,s,m,u,y)}buildImportMap(i,s){let m=new Map;return this.traverseForImports(i,m,s),m}traverseForImports(i,s,m){i.type==="import_from_statement"?this.processFromImport(i,s,m):i.type==="import_statement"&&this.processImportStatement(i,s,m);for(let u of i.children)this.traverseForImports(u,s,m)}processFromImport(i,s,m){let u=i.childForFieldName("module_name");if(!u)return;let y=this.getNodeText(u,m);for(let A of i.children)this.processFromImportChild(A,s,m,y)}processFromImportChild(i,s,m,u){if(i.type==="aliased_import"){this.addAliasedFromImport(i,s,m,u);return}if(i.type==="dotted_name"||i.type==="identifier"){let y=this.getNodeText(i,m);if(y===u||i.parent?.type==="aliased_import")return;s.set(y,u)}}addAliasedFromImport(i,s,m,u){let y=i.childForFieldName("name");if(!y)return;let A=this.getNodeText(y,m),k=i.childForFieldName("alias"),J=k?this.getNodeText(k,m):A;s.set(J,u)}processImportStatement(i,s,m){for(let u of i.children)this.processImportStatementChild(u,s,m)}processImportStatementChild(i,s,m){if(i.type==="aliased_import"){let u=i.childForFieldName("name");if(!u)return;let y=this.getNodeText(u,m),A=i.childForFieldName("alias"),k=A?this.getNodeText(A,m):y;s.set(k,y);return}if(i.type==="dotted_name"||i.type==="identifier"){let u=this.getNodeText(i,m);u!=="import"&&s.set(u,u)}}extractDependencies(i,s,m,u,y,A,k){let J=this.getScopeForNode(i,s,m,A);this.addCallDependencyIfAny(i,s,m,u,y,J,k);for(let ce of i.children)this.extractDependencies(ce,s,m,u,y,J,k)}getScopeForNode(i,s,m,u){if(i.type!=="function_definition"&&i.type!=="class_definition")return u;let y=i.childForFieldName("name");if(!y)return u;let A=this.getNodeText(y,m);return`${s}:${A}`}addCallDependencyIfAny(i,s,m,u,y,A,k){if(i.type!=="call")return;let J=i.childForFieldName("function");if(!J||!A)return;let ce=this.getCalledName(J,m),_e=`${s}:${ce}`;if(y.has(_e)){u.push({sourceSymbolId:A,targetSymbolId:_e,targetFilePath:s,isTypeOnly:!1});return}if(k?.has(ce)){let Me=k.get(ce);u.push({sourceSymbolId:A,targetSymbolId:`${Me}:${ce}`,targetFilePath:Me,isTypeOnly:!1})}}getCalledName(i,s){if(i.type!=="attribute")return this.getNodeText(i,s);let m=i.childForFieldName("attribute");return m?this.getNodeText(m,s):this.getNodeText(i,s)}isExported(i,s){let m=i.childForFieldName("name");return m?!this.getNodeText(m,s).startsWith("_"):!1}hasChild(i,s){for(let m of i.children)if(m.type===s)return!0;return!1}getNodeText(i,s){return s.slice(i.startIndex,i.endIndex)}};var nLe=Kl(require("node:fs/promises")),dN=Kl(require("node:path"));var Wce=class{parser=null;fileReader;rootDir;extensionPath;initPromise=null;constructor(i,s){this.fileReader=new Nm,this.rootDir=i||process.cwd(),this.extensionPath=s}async ensureInitialized(){if(!this.parser){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{let i=await this.resolveExtensionPath();if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure RustParser is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=dN.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=dN.default.join(i,"dist","wasm","tree-sitter-rust.wasm");this.parser=await s.getParser("rust",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Rust WASM parser: ${m}`,{cause:s})}})(),await this.initPromise}}async resolveExtensionPath(){if(this.extensionPath)return this.extensionPath;let i=process.cwd(),s=dN.default.join(i,"dist","wasm","tree-sitter.wasm");try{return await nLe.default.access(s),i}catch{return}}async parseImports(i){try{await this.ensureInitialized();let s=V_(i),m=await this.fileReader.readFile(s),u=this.parser.parse(m);if(!u)throw new Error(`Failed to parse Rust file: ${s}`);let y=[],A=new Set;return this.traverseTree(u.rootNode,k=>{k.type==="use_declaration"?this.extractUseDeclaration(k,y,A,m):k.type==="mod_item"?this.extractModItem(k,y,A,m,i):k.type==="extern_crate_declaration"&&this.extractExternCrate(k,y,A,m)}),y}catch(s){throw Pd.fromError(s,i)}}async resolvePath(i,s){try{await this.ensureInitialized();let m=s.split("::")[0];if(new Set(["std","core","alloc","proc_macro","test","serde","tokio","async_std","futures","vm","rustpython_vm","rustpython","rustpython_parser","rustpython_compiler","num_traits","enum_dispatch","dashmap"]).has(m))return null;let y=V_(i),A=dN.default.dirname(y);return s.startsWith("self::")||s.startsWith("super::")||s.startsWith("crate::")?await this.resolveRelativeModule(i,s):await this.resolveModDeclaration(A,s)}catch{return null}}extractUseDeclaration(i,s,m,u){let y=this.collectIdentifiers(i,u);for(let A of y){if(!A)continue;let k=A.split("::")[0];if(new Set(["std","core","alloc","proc_macro","test","serde","tokio","async_std","futures","vm","rustpython_vm","rustpython","rustpython_parser","rustpython_compiler","num_traits","enum_dispatch","dashmap"]).has(k))continue;let ce=A.toLowerCase();m.has(ce)||(m.add(ce),s.push({path:"",type:"import",line:i.startPosition.row+1,module:ce}))}}extractModItem(i,s,m,u,y){if(this.findChildByType(i,"declaration_list"))return;let k=this.findChildByType(i,"identifier");if(k){let J=this.getNodeText(k,u);J=J.toLowerCase(),J&&!m.has(J)&&(m.add(J),s.push({path:"",type:"import",line:i.startPosition.row+1,module:J}))}}extractExternCrate(i,s,m,u){let y=this.findChildByType(i,"identifier");if(y){let A=this.getNodeText(y,u);if(!A||new Set(["std","core","alloc","proc_macro","test","serde","tokio","async_std","futures","vm","rustpython_vm","rustpython","rustpython_parser","rustpython_compiler","num_traits","enum_dispatch","dashmap"]).has(A))return;let J=A.toLowerCase();m.has(J)||(m.add(J),s.push({path:"",type:"import",line:i.startPosition.row+1,module:J}))}}collectIdentifiers(i,s){let m=[],u=this.findAllByType(i,"scoped_identifier");for(let A of u){let k=this.getNodeText(A,s);k&&m.push(k)}let y=this.findAllByType(i,"identifier");for(let A of y){let k=this.getNodeText(A,s);if(!k||k==="self"||k==="super"||k==="crate")continue;let J=k.charAt(0);J===J.toUpperCase()&&J!==J.toLowerCase()||m.push(k)}return m}async resolveRelativeModule(i,s){let m=dN.default.dirname(i);if(s.startsWith("crate::")){let u=s.slice(7).replaceAll("::","/");return await this.resolveModDeclaration(this.rootDir,u)}if(s.startsWith("super::")){let u=dN.default.dirname(m),y=s.slice(7).replaceAll("::","/");return await this.resolveModDeclaration(u,y)}if(s.startsWith("self::")){let u=s.slice(6).replaceAll("::","/");return await this.resolveModDeclaration(m,u)}return null}async resolveModDeclaration(i,s){if(s!==s.toLowerCase())return null;let m=s.replaceAll("::","/");m=m.toLowerCase();let u=[dN.default.join(i,m+".rs"),dN.default.join(i,m,"mod.rs")];for(let y of u)if(await this.fileExists(y))return Di(y);return null}async fileExists(i){try{return await nLe.default.access(i),!0}catch{return!1}}traverseTree(i,s){s(i);for(let m of i.children)this.traverseTree(m,s)}findChildByType(i,s){for(let m of i.children)if(m.type===s)return m;return null}findAllByType(i,s){let m=[],u=y=>{y.type===s&&m.push(y);for(let A of y.children)u(A)};return u(i),m}getNodeText(i,s){return s.slice(i.startIndex,i.endIndex)}};var jst=Kl(require("node:fs/promises")),zce=Kl(require("node:path"));var Bce=class{parser=null;fileReader;initPromise=null;extensionPath;constructor(i,s){this.extensionPath=s??i,this.fileReader=new Nm}async ensureInitialized(){if(!this.parser){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{let i=await this.resolveExtensionPath();if(!i)throw new Error("Extension path required for WASM parser initialization. Ensure RustSymbolAnalyzer is constructed with extensionPath parameter.");try{let s=dy.getInstance(),m=zce.default.join(i,"dist","wasm","tree-sitter.wasm");await s.init(m);let u=zce.default.join(i,"dist","wasm","tree-sitter-rust.wasm");this.parser=await s.getParser("rust",u)}catch(s){this.initPromise=null;let m=s instanceof Error?s.message:String(s);throw new Error(`Failed to initialize Rust WASM parser for symbol analysis: ${m}`,{cause:s})}})(),await this.initPromise}}async resolveExtensionPath(){if(this.extensionPath)return this.extensionPath;let i=process.cwd(),s=zce.default.join(i,"dist","wasm","tree-sitter.wasm");try{return await jst.default.access(s),i}catch{return}}async analyzeFile(i){try{await this.ensureInitialized();let s=await this.fileReader.readFile(i);return this.analyzeFileFromContent(i,s)}catch(s){throw Pd.fromError(s,i)}}analyzeFileFromContent(i,s){if(!this.parser)throw new Error("Parser not initialized. Call ensureInitialized() before using analyzeFileFromContent().");let m=this.parser.parse(s);if(!m)throw new Error(`Failed to parse Rust file: ${i}`);let u=new Map,y=Di(i);return this.extractSymbols(m.rootNode,y,s,u),u}analyzeFileContent(i,s){if(!this.parser)throw new Error("Parser not initialized. Call ensureInitialized() before using analyzeFileContent().");let m=this.parser.parse(s);if(!m)throw new Error(`Failed to parse Rust file: ${i}`);let u=new Map,y=[],A=Di(i);this.extractSymbols(m.rootNode,A,s,u);let k=this.buildImportMap(m.rootNode,s);return this.extractDependencies(m.rootNode,A,s,y,u,void 0,k),{symbols:Array.from(u.values()),dependencies:y}}async getSymbolDependencies(i){try{await this.ensureInitialized();let s=await this.fileReader.readFile(i);return this.analyzeFileContent(i,s).dependencies}catch(s){throw Pd.fromError(s,i)}}extractSymbols(i,s,m,u,y){this.tryExtractSymbolFromNode(i,s,m,u,y)||this.extractSymbolsFromChildren(i,s,m,u,y)}tryExtractSymbolFromNode(i,s,m,u,y){return i.type==="function_item"?(this.handleFunctionItem(i,s,m,u,y),!0):i.type==="struct_item"?(this.handleStructItem(i,s,m,u,y),!0):i.type==="enum_item"?(this.handleEnumItem(i,s,m,u,y),!0):i.type==="trait_item"?(this.handleTraitItem(i,s,m,u,y),!0):i.type==="impl_item"?(this.handleImplItem(i,s,m,u,y),!0):!1}handleFunctionItem(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasModifier(i,"async"),_e=this.hasVisibilityModifier(i,"pub");u.set(J,{name:k,kind:ce?"AsyncFunction":"FunctionDeclaration",line:A.startPosition.row+1,isExported:_e,id:J,parentSymbolId:y,category:"function"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleStructItem(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasVisibilityModifier(i,"pub");u.set(J,{name:k,kind:"StructDeclaration",line:A.startPosition.row+1,isExported:ce,id:J,parentSymbolId:y,category:"class"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleEnumItem(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasVisibilityModifier(i,"pub");u.set(J,{name:k,kind:"EnumDeclaration",line:A.startPosition.row+1,isExported:ce,id:J,parentSymbolId:y,category:"type"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleTraitItem(i,s,m,u,y){let A=i.childForFieldName("name");if(!A)return;let k=this.getNodeText(A,m),J=`${s}:${k}`,ce=this.hasVisibilityModifier(i,"pub");u.set(J,{name:k,kind:"InterfaceDeclaration",line:A.startPosition.row+1,isExported:ce,id:J,parentSymbolId:y,category:"type"}),this.extractSymbolsFromChildren(i,s,m,u,J)}handleImplItem(i,s,m,u,y){this.extractSymbolsFromChildren(i,s,m,u,y)}extractSymbolsFromChildren(i,s,m,u,y){for(let A of i.children)this.extractSymbols(A,s,m,u,y)}buildImportMap(i,s){let m=new Map,u=y=>{if(y.type==="use_declaration"&&this.extractUseDeclarationImports(y,s,m),y.type==="mod_item"){let A=y.childForFieldName("name");if(A){let k=this.getNodeText(A,s);m.set(k,k)}}for(let A of y.children)u(A)};return u(i),m}extractUseDeclarationImports(i,s,m){this.extractFromUseLists(i,s,m),this.extractFromScopedIdentifiers(i,s,m),this.extractFromUseAsClauses(i,s,m)}extractFromUseLists(i,s,m){let u=this.findAllByType(i,"use_list");for(let y of u){let A=this.findBaseModuleForUseList(y,s);this.extractIdentifiersFromUseList(y,A,s,m)}}findBaseModuleForUseList(i,s){let m=i.parent;for(;m;){if(m.type==="scoped_use_list"){let u=this.findScopedIdentifierInChildren(m,s);if(u)return u}m=m.parent}return""}findScopedIdentifierInChildren(i,s){for(let m of i.children)if(m.type==="scoped_identifier")return this.getNodeText(m,s);return""}extractIdentifiersFromUseList(i,s,m,u){for(let y of i.children)if(y.type==="identifier"){let A=this.getNodeText(y,m);u.set(A,s)}}extractFromScopedIdentifiers(i,s,m){let u=this.findAllByType(i,"scoped_identifier");for(let y of u){if(this.hasAncestorOfType(y,"use_list"))continue;let A=this.getNodeText(y,s),{localName:k,modulePath:J}=this.splitModulePath(A);m.set(k,J)}}splitModulePath(i){let s=i.split("::"),m=s.at(-1),u=s.slice(0,-1).join("::");return{localName:m,modulePath:u}}extractFromUseAsClauses(i,s,m){let u=this.findAllByType(i,"use_as_clause");for(let y of u){let A=y.childForFieldName("path"),k=y.childForFieldName("alias");if(A&&k){let J=this.getNodeText(A,s),ce=this.getNodeText(k,s);m.set(ce,J)}}}extractDependencies(i,s,m,u,y,A,k){let J=this.getScopeForNode(i,s,m,A);this.addCallDependencyIfAny(i,s,m,u,y,J,k);for(let ce of i.children)this.extractDependencies(ce,s,m,u,y,J,k)}getScopeForNode(i,s,m,u){if(i.type!=="function_item")return u;let y=i.childForFieldName("name");if(!y)return u;let A=this.getNodeText(y,m);return`${s}:${A}`}addCallDependencyIfAny(i,s,m,u,y,A,k){if(i.type!=="call_expression")return;let J=i.childForFieldName("function");if(!J||!A)return;let{moduleName:ce,symbolName:_e}=this.extractModuleAndSymbolName(J,m),Me=`${s}:${_e}`;if(y.has(Me)){u.push({sourceSymbolId:A,targetSymbolId:Me,targetFilePath:s,isTypeOnly:!1});return}if(ce&&k?.has(ce)){let se=k.get(ce);u.push({sourceSymbolId:A,targetSymbolId:`${se}:${_e}`,targetFilePath:se,isTypeOnly:!1});return}if(k?.has(_e)){let se=k.get(_e);u.push({sourceSymbolId:A,targetSymbolId:`${se}:${_e}`,targetFilePath:se,isTypeOnly:!1})}}extractModuleAndSymbolName(i,s){if(i.type==="field_expression"){let m=i.childForFieldName("field");if(m)return{moduleName:void 0,symbolName:this.getNodeText(m,s)}}if(i.type==="scoped_identifier"){let u=this.getNodeText(i,s).split("::");if(u.length>=2){let y=u.at(-1);return{moduleName:u.slice(0,-1).join("::"),symbolName:y}}return{moduleName:void 0,symbolName:u[0]}}return{moduleName:void 0,symbolName:this.getNodeText(i,s)}}hasVisibilityModifier(i,s){if(i.childForFieldName("visibility_modifier"))return!0;for(let u of i.children)if(u.type==="visibility_modifier")return!0;return!1}hasAncestorOfType(i,s){let m=i.parent;for(;m;){if(m.type===s)return!0;m=m.parent}return!1}hasModifier(i,s){for(let m of i.children)if(m.type===s)return!0;return!1}findAllByType(i,s){let m=[],u=y=>{y.type===s&&m.push(y);for(let A of y.children)u(A)};return u(i),m}getNodeText(i,s){return s.slice(i.startIndex,i.endIndex)}};var j3=class d{static typeScriptParsers=new Map;static typeScriptSymbolAnalyzers=new Map;static pythonParsers=new Map;static pythonSymbolAnalyzers=new Map;static rustParsers=new Map;static rustSymbolAnalyzers=new Map;static csharpParsers=new Map;static goParsers=new Map;static javaParsers=new Map;rootDir;extensionPath;constructor(i,s,m){this.rootDir=i,this.extensionPath=m}getAnalyzer(i){let s=V_(i);return d.getAnalyzer(s,this.rootDir,this.extensionPath)}getSymbolAnalyzer(i){let s=V_(i);return d.getSymbolAnalyzer(s,this.rootDir,this.extensionPath)}static detectLanguage(i){let s=V_(i);switch(Ust.default.extname(s).toLowerCase()){case".ts":case".tsx":case".js":case".jsx":case".mjs":case".cjs":case".vue":case".svelte":case".gql":case".graphql":return"typescript";case".py":case".pyi":return"python";case".rs":case".toml":return"rust";case".cs":case".csproj":return"csharp";case".go":return"go";case".java":return"java";default:return"unknown"}}static getAnalyzer(i,s,m){let u=V_(i);switch(this.detectLanguage(u)){case"typescript":{let A=this.buildCacheKey(s),k=this.typeScriptParsers.get(A);if(k)return k;let J=new m3(s);return this.typeScriptParsers.set(A,J),J}case"python":{let A=this.buildCacheKey(s,m),k=this.pythonParsers.get(A);if(k)return k;let J=new wce(s,m);return this.pythonParsers.set(A,J),J}case"rust":{let A=this.buildCacheKey(s,m),k=this.rustParsers.get(A);if(k)return k;let J=new Wce(s,m);return this.rustParsers.set(A,J),J}case"csharp":{let A=this.buildCacheKey(s,m),k=this.csharpParsers.get(A);if(k)return k;let J=new Rce(s,m);return this.csharpParsers.set(A,J),J}case"go":{let A=this.buildCacheKey(s,m),k=this.goParsers.get(A);if(k)return k;let J=new Lce(s,m);return this.goParsers.set(A,J),J}case"java":{let A=this.buildCacheKey(s,m),k=this.javaParsers.get(A);if(k)return k;let J=new kce(s,m);return this.javaParsers.set(A,J),J}default:throw new Error(`Unsupported language for file: ${i}`)}}static getSymbolAnalyzer(i,s,m){let u=V_(i);switch(this.detectLanguage(u)){case"typescript":{let A=this.buildCacheKey(s),k=this.typeScriptSymbolAnalyzers.get(A);if(k)return k;let J=new Nce(s);return this.typeScriptSymbolAnalyzers.set(A,J),J}case"python":{let A=this.buildCacheKey(s,m),k=this.pythonSymbolAnalyzers.get(A);if(k)return k;let J=new Fce(s,m);return this.pythonSymbolAnalyzers.set(A,J),J}case"rust":{let A=this.buildCacheKey(s,m),k=this.rustSymbolAnalyzers.get(A);if(k)return k;let J=new Bce(s,m);return this.rustSymbolAnalyzers.set(A,J),J}default:throw new Error(`Unsupported language for file: ${i}`)}}static isSupported(i){return this.detectLanguage(i)!=="unknown"}static reset(){this.typeScriptParsers.clear(),this.typeScriptSymbolAnalyzers.clear(),this.pythonParsers.clear(),this.pythonSymbolAnalyzers.clear(),this.rustParsers.clear(),this.rustSymbolAnalyzers.clear(),this.csharpParsers.clear(),this.goParsers.clear(),this.javaParsers.clear()}static buildCacheKey(...i){return i.map(s=>s??"").join("\0")}};var Hst=ld("ReferencingFilesFinder"),U3=class{sourceFileCollector;getRootDir;getConcurrency;findReferenceInFile;constructor(i){this.sourceFileCollector=i.sourceFileCollector,this.getRootDir=i.getRootDir,this.getConcurrency=i.getConcurrency,this.findReferenceInFile=i.findReferenceInFile}async findReferencingFilesFallback(i){let s=Di(i),m=this.extractBasename(s);if(!m)return[];Hst.debug("findReferencingFilesFallback for",s,"basename:",m);let u=await this.sourceFileCollector.collectAllSourceFiles(this.getRootDir()),y=[],A=this.getConcurrency()??8;for(let k=0;k<u.length;k+=A){let J=u.slice(k,k+A),ce=await Promise.all(J.filter(_e=>Di(_e)!==s).map(_e=>this.findReferenceInFile(_e,s,m)));for(let _e of ce)_e&&y.push(_e)}return Hst.debug("findReferencingFilesFallback found",y.length,"referencing files"),y}extractBasename(i){return i.split(/[/\\]/).pop()?.replace(/\.[^/.]+$/,"")}};var Jst=Kl(require("node:fs/promises"));var Kst=ld("ReverseIndex"),rLe=1,uL=class d{reverseMap=new Map;fileHashes=new Map;rootDir;constructor(i){this.rootDir=Di(i)}addDependencies(i,s,m){let u=Di(i);this.removeDependenciesFromSource(u);for(let y of s){let A=Di(y.path),k={sourcePath:u,type:y.type,line:y.line,module:y.module},J=this.reverseMap.get(A);J||(J=new Map,this.reverseMap.set(A,J)),J.set(u,k)}m&&this.fileHashes.set(u,m)}removeDependenciesFromSource(i){let s=Di(i);for(let[,m]of this.reverseMap)m.delete(s);this.fileHashes.delete(s)}getReferencingFiles(i){let s=Di(i),m=this.reverseMap.get(s);return m?.size===0?(this.reverseMap.delete(s),[]):m?Array.from(m.values()).map(u=>({path:u.sourcePath,type:u.type,line:u.line,module:u.module})):[]}getCallerCount(i){let s=Di(i);return this.reverseMap.get(s)?.size??0}isFileStale(i,s){let m=Di(i),u=this.fileHashes.get(m);return u?u.mtime!==s.mtime||u.size!==s.size:!0}getFileHash(i){return this.fileHashes.get(Di(i))}updateFileHash(i,s){this.fileHashes.set(Di(i),s)}hasEntries(){return this.reverseMap.size>0}hasFile(i){return this.fileHashes.has(Di(i))}get indexedFileCount(){return this.fileHashes.size}get targetFileCount(){return this.reverseMap.size}clear(){this.reverseMap.clear(),this.fileHashes.clear()}cleanup(){let i=0,s=[];for(let[m,u]of this.reverseMap)u.size===0&&s.push(m);for(let m of s)this.reverseMap.delete(m),i++;return i}static async getFileHashFromDisk(i){try{let s=await Jst.stat(i);return{mtime:s.mtimeMs,size:s.size}}catch{return null}}serialize(){let i={};for(let[m,u]of this.reverseMap)i[m]=Array.from(u.values());let s={};for(let[m,u]of this.fileHashes)s[m]=u;return{version:rLe,timestamp:Date.now(),rootDir:this.rootDir,reverseMap:i,fileHashes:s}}static deserialize(i,s){let m=Di(s),u=Di(i.rootDir);if(i.version!==rLe)return Kst.warn("Version mismatch:",i.version,"!==",rLe),null;if(u!==m)return Kst.warn("Root dir mismatch:",i.rootDir,"!==",s),null;let y=new d(s);for(let[A,k]of Object.entries(i.fileHashes))y.fileHashes.set(Di(A),k);for(let[A,k]of Object.entries(i.reverseMap)){let J=Di(A),ce=new Map;for(let _e of k){let Me=Di(_e.sourcePath);ce.set(Me,{..._e,sourcePath:Me})}y.reverseMap.set(J,ce)}return y}async validateIndex(i=.2){let s=[],m=[];for(let k of this.fileHashes.keys()){let J=await d.getFileHashFromDisk(k);if(!J){m.push(k);continue}this.isFileStale(k,J)&&s.push(k)}let u=this.fileHashes.size,y=s.length+m.length,A=u>0?y/u:0;return{isValid:A<=i,staleFiles:s,stalePercentage:A,missingFiles:m}}getStats(){let i=0;for(let s of this.reverseMap.values())i+=s.size;return{indexedFiles:this.fileHashes.size,targetFiles:this.reverseMap.size,totalReferences:i}}};var K3=Kl(require("node:fs/promises")),qst=Kl(require("node:path"));var $st=1,H3=class{reverseMap=new Map;fileHashes=new Map;rootDir;lastUpdated=0;constructor(i){this.rootDir=Di(i)}addDependencies(i,s,m){let u=Di(i);this.removeDependenciesFromSource(u);for(let y of s){let A={callerSymbolId:y.sourceSymbolId,callerFilePath:u,isTypeOnly:y.isTypeOnly??!1},k=this.reverseMap.get(y.targetSymbolId);k||(k=new Map,this.reverseMap.set(y.targetSymbolId,k)),k.set(y.sourceSymbolId,A)}m&&this.fileHashes.set(u,m),this.lastUpdated=Date.now()}removeDependenciesFromSource(i){let s=Di(i);for(let[,m]of this.reverseMap)for(let[u,y]of m)y.callerFilePath===s&&m.delete(u);this.fileHashes.delete(s),this.lastUpdated=Date.now()}getCallers(i){let s=this.reverseMap.get(i);return s?.size===0?(this.reverseMap.delete(i),[]):s?Array.from(s.values()):[]}getCallersFiltered(i,s=!0){let m=this.getCallers(i);return s?m:m.filter(u=>!u.isTypeOnly)}getRuntimeCallers(i){return this.getCallersFiltered(i,!1)}getTypeOnlyCallers(i){return this.getCallers(i).filter(s=>s.isTypeOnly)}hasCallers(i){let s=this.reverseMap.get(i);return s!==void 0&&s.size>0}getCallerCount(i){return this.reverseMap.get(i)?.size??0}getCallerFiles(i){let s=this.getCallers(i),m=new Set;for(let u of s)m.add(u.callerFilePath);return Array.from(m)}getStats(){let i=0;for(let s of this.reverseMap.values())i+=s.size;return{targetSymbolCount:this.reverseMap.size,totalCallerCount:i,sourceFileCount:this.fileHashes.size,lastUpdated:this.lastUpdated}}isFileStale(i,s){let m=Di(i),u=this.fileHashes.get(m);return u?u.mtime!==s.mtime||u.size!==s.size:!0}clear(){this.reverseMap.clear(),this.fileHashes.clear(),this.lastUpdated=Date.now()}cleanup(){let i=0,s=[];for(let[m,u]of this.reverseMap)u.size===0&&s.push(m);for(let m of s)this.reverseMap.delete(m),i++;return i}serialize(){let i={};for(let[m,u]of this.reverseMap)i[m]=Array.from(u.values());let s={};for(let[m,u]of this.fileHashes)s[m]=u;return{version:$st,timestamp:Date.now(),rootDir:this.rootDir,reverseMap:i,fileHashes:s}}deserialize(i){if(i.version!==$st||Di(i.rootDir)!==this.rootDir)return!1;this.clear();for(let[s,m]of Object.entries(i.reverseMap)){let u=new Map;for(let y of m)u.set(y.callerSymbolId,y);this.reverseMap.set(s,u)}for(let[s,m]of Object.entries(i.fileHashes))this.fileHashes.set(s,m);return this.lastUpdated=i.timestamp,!0}async saveToFile(i){let s=this.serialize(),m=JSON.stringify(s,null,2);await K3.mkdir(qst.dirname(i),{recursive:!0}),await K3.writeFile(i,m,"utf-8")}async loadFromFile(i){try{let s=await K3.readFile(i,"utf-8"),m=JSON.parse(s);return this.deserialize(m)}catch{return!1}}};var J3=class{constructor(i){this.rootDir=i}rootDir;reverseIndex=null;symbolReverseIndex=null;enable(i){let s=!1;if(this.reverseIndex??=new uL(this.rootDir),this.symbolReverseIndex??=new H3(this.rootDir),i)try{let m=JSON.parse(i),u=uL.deserialize(m,this.rootDir);u&&(this.reverseIndex=u,s=!0)}catch{s=!1}return s}disable(){this.reverseIndex?.clear(),this.reverseIndex=null,this.symbolReverseIndex?.clear(),this.symbolReverseIndex=null}clear(){this.reverseIndex?.clear(),this.symbolReverseIndex?.clear()}isEnabled(){return this.reverseIndex!==null}hasEntries(){return this.reverseIndex?.hasEntries()??!1}ensure(){this.reverseIndex??=new uL(this.rootDir)}addDependencies(i,s,m){this.reverseIndex?.addDependencies(i,s,m)}removeDependenciesFromSource(i){this.reverseIndex?.removeDependenciesFromSource(i)}getReferencingFiles(i){return this.reverseIndex?this.reverseIndex.getReferencingFiles(i):[]}getCallerCount(i){return this.reverseIndex?this.reverseIndex.getCallerCount(i):0}getSerialized(){return this.reverseIndex?JSON.stringify(this.reverseIndex.serialize()):null}validate(i=.2){return this.reverseIndex?.validateIndex(i)??null}getStats(){return this.reverseIndex?.getStats()}addSymbolDependencies(i,s,m){this.symbolReverseIndex?.addDependencies(i,s,m)}removeSymbolDependenciesFromSource(i){this.symbolReverseIndex?.removeDependenciesFromSource(i)}getSymbolReferencingFiles(i){return this.symbolReverseIndex?.getCallerFiles(i)??[]}getSymbolStats(){return this.symbolReverseIndex?.getStats()}};var Zst=Kl(require("node:fs/promises")),Qst=Kl(require("node:path"));var tUt=new Set(f3.filter(d=>d!=="node_modules"));function Xst(d){return p3.some(i=>d.endsWith(i))}function Yst(d,i){return i&&d==="node_modules"||tUt.has(d)?!0:d.startsWith(".")}var nUt=ld("SourceFileCollector"),x1=class{excludeNodeModules;yieldIntervalMs;yieldCallback;isCancelled;constructor(i){this.excludeNodeModules=i.excludeNodeModules,this.yieldIntervalMs=i.yieldIntervalMs??50,this.yieldCallback=i.yieldCallback??(async()=>{}),this.isCancelled=i.isCancelled??(()=>!1)}updateOptions(i){i.excludeNodeModules!==void 0&&(this.excludeNodeModules=i.excludeNodeModules)}async collectAllSourceFiles(i){let s=[],m=Date.now(),u=async(A,k)=>{let J=Qst.join(k,A.name);A.isDirectory()&&!Yst(A.name,this.excludeNodeModules)?await y(J):A.isFile()&&Xst(A.name)&&s.push(J)},y=async A=>{if(this.isCancelled())return;Date.now()-m>=this.yieldIntervalMs&&(await this.yieldCallback(),m=Date.now());try{let J=await Zst.readdir(A,{withFileTypes:!0});for(let ce of J){if(this.isCancelled())return;await u(ce,A)}}catch(J){J.code!=="ENOENT"&&J.code!=="EACCES"&&nUt.error("Error reading directory",A,J)}};return await y(i),s}};var $3=class{constructor(i,s,m){this.dependencyCache=i;this.symbolCache=s;this.reverseIndexManager=m}dependencyCache;symbolCache;reverseIndexManager;clearAll(){this.dependencyCache.clear(),this.symbolCache.clear(),this.reverseIndexManager.clear()}invalidateFile(i){let s=Di(i),m=this.dependencyCache.has(s);return this.dependencyCache.delete(s),this.symbolCache.delete(s),this.reverseIndexManager.removeDependenciesFromSource(s),m}invalidateFiles(i){let s=0;for(let m of i)this.invalidateFile(m)&&s++;return s}handleFileDeleted(i){let s=Di(i);this.dependencyCache.delete(s),this.symbolCache.delete(s),this.reverseIndexManager.removeDependenciesFromSource(s)}};var q3=ld("SpiderDependencyAnalyzer"),X3=class{constructor(i,s,m,u){this.languageService=i;this.resolver=s;this.dependencyCache=m;this.reverseIndexManager=u}languageService;resolver;dependencyCache;reverseIndexManager;async analyze(i){let s=Di(i),m=this.dependencyCache.get(s);if(m)return q3.debug(`Returning ${m.length} cached dependencies for ${i}`),await this.updateReverseIndexIfEnabled(i,s,m),m;q3.debug(`Analyzing ${i}...`);try{let u=this.languageService.getAnalyzer(i),y=await u.parseImports(i);q3.debug(`Parsed ${y.length} imports from ${i}`);let A=[],k=new Set;for(let J of y){let ce=await u.resolvePath(i,J.module);if(!ce){q3.debug(`Failed to resolve module "${J.module}" from ${i}`);continue}let _e=Di(ce);k.has(_e)||(k.add(_e),A.push({path:_e,type:J.type,line:J.line,module:J.module}))}return q3.debug(`Resolved ${A.length} dependencies for ${i}`),this.dependencyCache.set(s,A),await this.updateReverseIndexIfEnabled(i,s,A),A}catch(u){let y=Pd.fromError(u,i);throw q3.error("Analysis failed:",y.toUserMessage(),y.code),y}}async resolveModuleSpecifier(i,s){try{return await this.resolver.resolve(i,s)}catch{return null}}invalidateDependencyCache(i){this.dependencyCache.delete(Di(i))}async updateReverseIndexIfEnabled(i,s,m){if(!this.reverseIndexManager.isEnabled()||m.length===0)return;let u=await uL.getFileHashFromDisk(i);u&&this.reverseIndexManager.addDependencies(s,m,u)}};function OO(d){let s=Di(d).split("/");for(let m=0;m<s.length-1;m++)if(f3.includes(s[m]))return!0;return!1}var pL=ld("SpiderGraphCrawler"),Y3=class{constructor(i,s){this.dependencyAnalyzer=i;this.getConfig=s}dependencyAnalyzer;getConfig;async crawl(i){let s=new Set,m=[],u=new Set,y=new Set,A={};pL.debug(`Starting crawl from: ${i}`);let k=async(J,ce)=>{let _e=Di(J),Me=this.getConfig().maxDepth??3;if(ce>Me){pL.debug(`Skipping ${J}: max depth ${Me} reached`);return}if(y.has(_e)){pL.debug(`Skipping ${J}: already visited`);return}y.add(_e),s.add(_e);try{let se=await this.dependencyAnalyzer.analyze(J);pL.debug(`Found ${se.length} dependencies for ${J}`);for(let ft of se){s.add(ft.path);let Je=`${_e}->${ft.path}`;u.has(Je)||(u.add(Je),m.push({source:_e,target:ft.path}),pL.debug(`Added edge: ${_e} -> ${ft.path}`)),ft.module.startsWith("@")&&ft.module.includes("/")&&!ft.module.startsWith("@/")&&(A[ft.path]=ft.module),OO(ft.path)?pL.debug(`Skipping ${ft.path}: in ignored directory`):await k(ft.path,ce+1)}}catch(se){pL.debug(`Failed to analyze ${J}: ${se}`)}};return await k(i,0),pL.debug(`Crawl completed: ${s.size} nodes, ${m.length} edges`),{nodes:Array.from(s),edges:m,nodeLabels:Object.keys(A).length>0?A:void 0}}async crawlFrom(i,s,m=10,u){let y=new Set,A=[],k=new Set,J={},ce=new Set(Array.from(s).map(On=>Di(On))),_e=Di(i),Me=new Set,se=[],ft=new Set,Je={},Ze=u?.batchSize??200,Nr=()=>{if(u?.signal?.aborted){let On=new Error("Expansion cancelled");throw On.name="AbortError",On}},Jr=(On,fn)=>fn>m?!0:On===_e?fn!==0&&k.has(On):k.has(On),Ei=On=>{ce.has(On)||(y.add(On),Me.add(On))},Wo=(On,fn)=>{let hi=`${fn}->${On.path}`;ft.has(hi)||(ft.add(hi),A.push({source:fn,target:On.path}),se.push({source:fn,target:On.path})),!k.has(On.path)&&!ce.has(On.path)&&(y.add(On.path),Me.add(On.path)),On.module.startsWith("@")&&On.module.includes("/")&&!On.module.startsWith("@/")&&(J[On.path]=On.module,Je[On.path]=On.module)},Ga=async()=>{if(!u?.onBatch){Me.clear(),se.length=0;return}if(Me.size===0&&se.length===0)return;let On={nodes:Array.from(Me),edges:[...se],nodeLabels:Object.keys(Je).length>0?{...Je}:void 0};Me.clear(),se.length=0;for(let fn of Object.keys(Je))delete Je[fn];await u.onBatch(On)},So=async(On,fn)=>{Nr();let hi=Di(On);if(!Jr(hi,fn)){k.add(hi),Ei(hi);try{let jr=await this.dependencyAnalyzer.analyze(On);for(let cr of jr)Wo(cr,hi),OO(cr.path)||await So(cr.path,fn+1);Me.size+se.length>=Ze&&await Ga()}catch{}}};return await So(i,0),await Ga(),{nodes:Array.from(y),edges:A,nodeLabels:Object.keys(J).length>0?J:void 0}}};var Z3=class{cancelled=!1;reset(){this.cancelled=!1}cancel(){this.cancelled=!0}isCancelled(){return this.cancelled}};function Q3(){return new Promise(d=>setTimeout(d,1))}var ez=50;var FO=ld("SpiderIndexingService"),tz=class{constructor(i,s,m,u,y,A,k,J,ce,_e){this.dependencyAnalyzer=i;this.dependencyCache=s;this.reverseIndexManager=m;this.sourceFileCollector=u;this.indexerStatus=y;this.workerManager=A;this.cancellation=k;this.getConfig=J;this.yieldToEventLoop=ce;this.getSymbolGraph=_e}dependencyAnalyzer;dependencyCache;reverseIndexManager;sourceFileCollector;indexerStatus;workerManager;cancellation;getConfig;yieldToEventLoop;getSymbolGraph;cancel(){this.cancellation.cancel(),this.workerManager.cancel()}disposeWorker(){this.workerManager.dispose()}async analyzeFileForIndex(i,s){try{if(await this.dependencyAnalyzer.analyze(i),this.getSymbolGraph&&s<(this.getConfig().maxSymbolAnalyzerFiles??100))try{let m=await this.getSymbolGraph(i);m.dependencies.length>0&&this.reverseIndexManager.addSymbolDependencies(i,m.dependencies)}catch{}return!0}catch{return!1}}checkCancellation(i){if(this.cancellation.isCancelled())return this.indexerStatus.setCancelled(),{indexedFiles:i,duration:Date.now()-(this.indexerStatus.getSnapshot().startTime??Date.now()),cancelled:!0}}async buildFullIndex(i){this.reverseIndexManager.ensure(),this.cancellation.reset(),this.indexerStatus.startCounting();let s=await this.sourceFileCollector.collectAllSourceFiles(this.getConfig().rootDir),m=this.checkCancellation(0);if(m)return m;let u=s.length;this.indexerStatus.setTotal(u),await this.yieldToEventLoop(),this.indexerStatus.startIndexing();let y=0,A=Date.now();try{for(let ce of s){let _e=this.checkCancellation(y);if(_e)return _e;await this.analyzeFileForIndex(ce,y),y++,this.indexerStatus.updateProgress(y,ce),i?.(y,u,ce),Date.now()-A>=ez&&(await this.yieldToEventLoop(),A=Date.now())}this.indexerStatus.complete();let k=this.indexerStatus.getSnapshot(),J=Date.now()-(k.startTime??Date.now());return{indexedFiles:y,duration:J,cancelled:!1}}catch(k){let J=Pd.fromError(k);throw this.indexerStatus.setError(J.toUserMessage()),FO.error("Indexing failed:",J.toUserMessage(),J.code),J}}async buildFullIndexInWorker(i,s){let m=this.getConfig();return this.workerManager.buildFullIndexInWorker({workerPath:i,progressCallback:s,config:{rootDir:m.rootDir,excludeNodeModules:m.excludeNodeModules,tsConfigPath:m.tsConfigPath,progressInterval:m.indexingProgressInterval,extensionPath:m.extensionPath}})}async reindexStaleFiles(i,s){if(!this.reverseIndexManager.isEnabled())return 0;FO.info(`Re-indexing ${i.length} stale files`);let m=this.getConfig().indexingConcurrency??8,u=0;for(let y=0;y<i.length;y+=m){let A=i.slice(y,y+m);await Promise.all(A.map(async k=>{let J=Di(k);FO.debug(`Re-indexing stale file: ${k}`);try{this.reverseIndexManager.removeDependenciesFromSource(J),this.dependencyCache.delete(J),FO.debug(`Deleted cache for ${k}, re-analyzing...`),await this.dependencyAnalyzer.analyze(k),FO.debug(`Successfully re-analyzed ${k}`)}catch(ce){FO.error(`Failed to re-index ${k}:`,ce),this.reverseIndexManager.removeDependenciesFromSource(J)}})),u+=A.length,s?.(u,i.length,A.at(-1)),await this.yieldToEventLoop()}return FO.info(`Completed re-indexing ${u} files`),u}};var nz=class{constructor(i,s,m){this.reverseIndexManager=i;this.dependencyAnalyzer=s;this.fileReader=m}reverseIndexManager;dependencyAnalyzer;fileReader;fallbackFinder=null;_fallbackCache=new Map;_fallbackCacheVersion=0;_fallbackCacheEntryVersion=new Map;setFallbackFinder(i){this.fallbackFinder=i}clearFallbackCache(){this._fallbackCacheVersion++}async findReferencingFiles(i){if(this.reverseIndexManager.hasEntries())return this.reverseIndexManager.getReferencingFiles(i);if(this._fallbackCacheEntryVersion.get(i)===this._fallbackCacheVersion){let u=this._fallbackCache.get(i);if(u!==void 0)return u}let m=this.fallbackFinder?await this.fallbackFinder.findReferencingFilesFallback(i):[];return this._fallbackCache.set(i,m),this._fallbackCacheEntryVersion.set(i,this._fallbackCacheVersion),m}async findReferenceInFile(i,s,m){try{if(!(await this.fileReader.readFile(i)).includes(m))return null;let A=(await this.dependencyAnalyzer.analyze(i)).find(k=>Di(k.path)===s);return A?{path:Di(i),type:A.type,line:A.line,module:A.module}:null}catch{return null}}};var iLe=Kl(require("node:path"));var fL=ld("SpiderSymbolService"),rz=class{constructor(i,s,m,u,y,A,k,J){this.astWorkerHost=i;this.symbolCache=s;this.fileReader=m;this.resolver=u;this.symbolDependencyHelper=y;this.getConfig=A;this.findReferencingFiles=k;this.languageService=J}astWorkerHost;symbolCache;fileReader;resolver;symbolDependencyHelper;getConfig;findReferencingFiles;languageService;async getSymbolGraph(i){if(!iLe.default.isAbsolute(i))try{let u=await this.resolveModuleSpecifier(this.getConfig().rootDir,i);u&&(i=u)}catch{}let s=Di(i),m=this.symbolCache.get(s);if(m)return m;try{let u=await this.fileReader.readFile(i),y=await this.astWorkerHost.analyzeFile(s,u),A=await Promise.all(y.dependencies.map(async J=>{try{let _e=await this.languageService.getAnalyzer(s).resolvePath(s,J.targetFilePath);if(_e)return{...J,targetFilePath:Di(_e)}}catch{}return J})),k={symbols:y.symbols,dependencies:A};return this.symbolCache.set(s,k),k}catch(u){let y=Pd.fromError(u,i);if(fL.error("Symbol analysis failed:",y.toUserMessage()),y.isRecoverable())return{symbols:[],dependencies:[]};throw y}}async findUnusedSymbols(i){try{let s=Di(i),{symbols:m}=await this.getSymbolGraph(s),u=m.filter(_e=>_e.isExported);if(u.length===0)return[];let y=await this.findReferencingFiles(s),A=await this.collectUsedSymbolIds(y,s),k=await this.fileReader.readFile(s),J=await this.astWorkerHost.getInternalExportDependencyGraph(s,k),ce=this.expandUsedSymbolsViaInternalGraph(A,J);return u.filter(_e=>!ce.has(_e.id))}catch(s){let m=Pd.fromError(s,i);return fL.error("Find unused symbols failed:",m.toUserMessage()),[]}}async getSymbolDependents(i,s){let m=await this.findReferencingFiles(i);return this.collectSymbolDependents(m,i,s)}async traceFunctionExecution(i,s,m=10){let u=`${i}:${s}`,y=[],A=new Set,k=!1,J=async(ce,_e,Me)=>{if(Me>m){k=!0;return}let se=`${ce}:${_e}`;if(!A.has(se)){A.add(se);try{let{symbols:ft,dependencies:Je}=await this.getSymbolGraph(ce),Ze=ft.find(Jr=>Jr.name===_e);if(!Ze)return;let Nr=Je.filter(Jr=>Jr.sourceSymbolId===Ze.id);for(let Jr of Nr){let Ei=null;try{Ei=await this.resolver.resolve(ce,Jr.targetFilePath)}catch{}let Wo=Jr.targetSymbolId.split(":").pop()||"";y.push({depth:Me,callerSymbolId:se,calledSymbolId:Jr.targetSymbolId,calledFilePath:Jr.targetFilePath,resolvedFilePath:Ei}),Ei&&!OO(Ei)&&await J(Ei,Wo,Me+1)}}catch(ft){let Je=Pd.fromError(ft,ce);fL.error("Trace execution failed:",se,Je.toUserMessage())}}};return await J(i,s,1),{rootSymbol:{id:u,filePath:i,symbolName:s},callChain:y,visitedSymbols:Array.from(A),maxDepthReached:k}}async resolveModuleSpecifier(i,s){try{return await this.resolver.resolve(i,s)}catch{return null}}expandUsedSymbolsViaInternalGraph(i,s){let m=new Set(i),u=Array.from(m);for(;u.length>0;){let y=u.pop(),A=s.get(y);if(A)for(let k of A)m.has(k)||(m.add(k),u.push(k))}return m}async collectUsedSymbolIds(i,s){let m=new Set;for(let u of i){let{dependencies:y}=await this.getSymbolGraph(u.path);for(let A of y)if(await this.symbolDependencyHelper.doesDependencyTargetFile(A,u.path,s)){let J=this.symbolDependencyHelper.extractSymbolName(A.targetSymbolId);m.add(this.symbolDependencyHelper.buildUsedSymbolId(s,J))}}return m}async collectSymbolDependents(i,s,m){let u=[],y=Di(s);for(let A of i){let{dependencies:k}=await this.getSymbolGraph(A.path);for(let J of k)await this.symbolDependencyHelper.doesDependencyTargetFile(J,A.path,y)&&this.symbolDependencyHelper.extractSymbolName(J.targetSymbolId)===m&&u.push(J)}return u}async verifyDependencyUsage(i,s){try{let m=Di(i),u=Di(s);if(OO(u))return!0;if(this.isAstUnsupportedFile(m))return fL.debug(`Skipping symbol analysis for unsupported file type: ${m}`),!0;let{dependencies:y}=await this.getSymbolGraph(m);if(y.length===0)return!1;let A=u.split("/").pop()||"",k=y.filter(J=>J.targetFilePath===u||J.targetFilePath.includes(A)||!J.targetFilePath.startsWith("/"));for(let J of k)if(await this.symbolDependencyHelper.doesDependencyTargetFile(J,m,u))return!0;return!1}catch(m){let u=Pd.fromError(m,i);return fL.warn("Usage verification failed, assuming used:",u.message),!0}}async verifyDependencyUsageBatch(i,s){try{let m=Di(i);if(this.isAstUnsupportedFile(m))return fL.debug(`Skipping symbol analysis for unsupported file type: ${m}`),this.markAllAsUsed(s);let{dependencies:u}=await this.getSymbolGraph(m);if(u.length===0)return this.markAllAsUnused(s);let y=await this.buildResolvedTargetsSet(u,m);return this.checkTargetsAgainstResolved(s,y)}catch(m){let u=Pd.fromError(m,i);return fL.warn("Batch usage verification failed, assuming all used:",u.message),this.markAllAsUsed(s)}}markAllAsUsed(i){let s=new Map;for(let m of i)s.set(Di(m),!0);return s}markAllAsUnused(i){let s=new Map;for(let m of i)s.set(Di(m),!1);return s}async buildResolvedTargetsSet(i,s){let m=new Set;for(let u of i)try{let y=await this.symbolDependencyHelper.resolveTargetPath(u,s);y&&m.add(Di(y))}catch{}return m}checkTargetsAgainstResolved(i,s){let m=new Map;for(let u of i){let y=Di(u);if(OO(y)){m.set(y,!0);continue}m.set(y,s.has(y))}return m}isAstUnsupportedFile(i){return i.endsWith(".gql")||i.endsWith(".graphql")||i.endsWith(".cs")||i.endsWith(".csproj")||i.endsWith(".go")||i.endsWith(".java")}async scanDeadCode(i,s){let{maxFiles:m=500,hasReverseIndex:u}=s;if(!u)throw new Pd("Dead code scan requires the reverse index. Wait for indexing to complete or call rebuild_index first.","INDEX_NOT_READY");let y=this.getConfig(),k=await new x1({excludeNodeModules:y.excludeNodeModules??!0}).collectAllSourceFiles(i),J=new Set(mU),_e=k.filter(ft=>{let Je=iLe.default.extname(ft).toLowerCase();return J.has(Je)}).slice(0,m),Me=[],se=0;for(let ft of _e)try{let Je=await this.findUnusedSymbols(ft);Je.length>0&&Me.push({filePath:ft,unusedSymbols:Je})}catch(Je){let Ze=Pd.fromError(Je,ft);fL.warn("scanDeadCode: skipping file due to error:",ft,Ze.message),se++}return{entries:Me,scannedFiles:_e.length,skippedFiles:se}}};var elt=require("node:worker_threads"),tlt=Kl(require("node:path")),Gce=class{worker=null;statusCallbacks=new Set;currentState="idle";currentProgress=0;currentTotal=0;currentFile="";startTime=void 0;cancelled=!1;workerPath;constructor(i){this.workerPath=i??tlt.join(__dirname,"indexerWorker.js")}subscribeToStatus(i){return this.statusCallbacks.add(i),i(this.getSnapshot()),()=>this.statusCallbacks.delete(i)}getSnapshot(){let i=this.currentTotal>0?Math.round(this.currentProgress/this.currentTotal*100):0;return{state:this.currentState,processed:this.currentProgress,total:this.currentTotal,currentFile:this.currentFile,percentage:i,startTime:this.startTime,cancelled:this.cancelled}}notifySubscribers(){let i=this.getSnapshot();for(let s of this.statusCallbacks)try{s(i)}catch{}}updateState(i,s=0,m=0,u=""){this.currentState=i,this.currentProgress=s,this.currentTotal=m,this.currentFile=u,this.notifySubscribers()}async startIndexing(i){if(this.worker)throw new Error("Indexing already in progress");return this.cancelled=!1,this.startTime=Date.now(),this.updateState("counting"),new Promise((s,m)=>{try{this.worker=new elt.Worker(this.workerPath,{workerData:i});let u={indexedFiles:0,duration:0,cancelled:!1,data:[]};this.worker.on("message",y=>{switch(y.type){case"counting":this.updateState("counting");break;case"progress":y.data&&this.updateState("indexing",y.data.processed??0,y.data.total??0,y.data.currentFile??"");break;case"complete":y.data&&(u={indexedFiles:y.data.processed??0,duration:y.data.duration??0,cancelled:this.cancelled,data:y.data.indexData??[]}),this.updateState("complete"),this.cleanupWorker(),s(u);break;case"error":this.updateState("error"),this.cleanupWorker(),m(new Error(y.error??"Unknown worker error"));break}}),this.worker.on("error",y=>{this.updateState("error"),this.cleanupWorker(),m(y)}),this.worker.on("exit",y=>{y!==0&&this.currentState!=="complete"&&this.currentState!=="error"&&(this.updateState("error"),this.cleanupWorker(),m(new Error(`Worker stopped with exit code ${y}`)))}),this.worker.postMessage({type:"start"})}catch(u){this.updateState("error"),this.cleanupWorker(),m(u)}})}cancel(){this.cancelled=!0,this.worker&&this.worker.postMessage({type:"cancel"})}isIndexing(){return this.currentState==="indexing"||this.currentState==="counting"}cleanupWorker(){this.worker&&(this.worker.removeAllListeners(),this.worker.terminate().catch(()=>{}),this.worker=null)}dispose(){this.cancel(),this.cleanupWorker(),this.statusCallbacks.clear()}};var iz=class{constructor(i,s,m){this.indexerStatus=i;this.reverseIndexManager=s;this.dependencyCache=m}indexerStatus;reverseIndexManager;dependencyCache;workerHost=null;async buildFullIndexInWorker(i){let{workerPath:s,config:m,progressCallback:u}=i;this.workerHost??=new Gce(s),this.reverseIndexManager.ensure();let y=this.workerHost.subscribeToStatus(A=>{switch(A.state){case"counting":this.indexerStatus.startCounting();break;case"indexing":A.total>0&&(this.indexerStatus.setTotal(A.total),this.indexerStatus.startIndexing()),this.indexerStatus.updateProgress(A.processed,A.currentFile);break;case"complete":this.indexerStatus.complete();break;case"error":this.indexerStatus.setError(A.errorMessage??"Unknown error");break}u&&A.state==="indexing"&&u(A.processed,A.total,A.currentFile)});try{let A=await this.workerHost.startIndexing({rootDir:m.rootDir,excludeNodeModules:m.excludeNodeModules,tsConfigPath:m.tsConfigPath,extensionPath:m.extensionPath});return this.importWorkerResult(A),{indexedFiles:A.indexedFiles,duration:A.duration,cancelled:A.cancelled}}finally{y()}}cancel(){this.workerHost?.cancel()}dispose(){this.workerHost?.dispose(),this.workerHost=null}importWorkerResult(i){for(let s of i.data){let m=Di(s.filePath);this.dependencyCache.set(m,s.dependencies),this.reverseIndexManager.addDependencies(m,s.dependencies,{mtime:s.mtime,size:s.size})}}};var oz=ld("SymbolDependencyHelper"),az=class{resolveFn;constructor(i){this.resolveFn=i.resolve}async doesDependencyTargetFile(i,s,m){let u=Di(i.targetFilePath),y=Di(m);if(oz.debug(`Comparing: dep.targetFilePath='${u}' vs targetFilePath='${y}'`),u===y)return oz.debug("\u2713 Direct match"),!0;oz.debug(`Attempting fallback resolution for '${i.targetFilePath}' from '${s}'`);let A=await this.resolveFn(s,i.targetFilePath);if(A){let k=Di(A);oz.debug(`Resolved to: '${k}'`);let J=k===y;return oz.debug(J?"\u2713 Fallback match":"\u2717 No match after resolution"),J}return oz.debug("\u2717 Resolution failed, no match"),!1}extractSymbolName(i){return i.split(":").pop()||""}extractBasename(i){return i.split(/[/\\]/).pop()?.replace(/\.[^/.]+$/,"")}buildUsedSymbolId(i,s){return`${Di(i)}:${s}`}async resolveTargetPath(i,s){let m=Di(i.targetFilePath);if(m.startsWith("/")||/^[a-zA-Z]:\//.test(m))return m;try{let u=await this.resolveFn(s,i.targetFilePath);return u?Di(u):null}catch{return null}}};var Vce=class{config;languageService;resolver;cache;symbolCache;fileReader;astWorkerHost;reverseIndexManager;indexerStatus;workerManager;cancellation;sourceFileCollector;referencingFilesFinder;symbolDependencyHelper;dependencyAnalyzer;referenceLookup;symbolService;graphCrawler;indexingService;cacheCoordinator;constructor(i){if("dependencyAnalyzer"in i){let s=i;this.config=s.config,this.languageService=s.languageService,this.resolver=s.resolver,this.cache=s.cache,this.symbolCache=s.symbolCache,this.fileReader=s.fileReader,this.astWorkerHost=s.astWorkerHost,this.reverseIndexManager=s.reverseIndexManager,this.indexerStatus=s.indexerStatus,this.workerManager=s.workerManager,this.cancellation=s.cancellation,this.sourceFileCollector=s.sourceFileCollector,this.referencingFilesFinder=s.referencingFilesFinder,this.symbolDependencyHelper=s.symbolDependencyHelper,this.dependencyAnalyzer=s.dependencyAnalyzer,this.referenceLookup=s.referenceLookup,this.symbolService=s.symbolService,this.graphCrawler=s.graphCrawler,this.indexingService=s.indexingService,this.cacheCoordinator=s.cacheCoordinator}else{let s=i;this.config={maxDepth:50,excludeNodeModules:!0,enableReverseIndex:!1,indexingConcurrency:4,maxCacheSize:500,maxSymbolCacheSize:200,maxSymbolAnalyzerFiles:100,...s},this.languageService=new j3(s.rootDir,s.tsConfigPath,s.extensionPath),this.resolver=new l1(s.tsConfigPath,this.config.excludeNodeModules,s.rootDir),this.cache=new YM({maxSize:this.config.maxCacheSize,enableLRU:!0}),this.symbolCache=new YM({maxSize:this.config.maxSymbolCacheSize,enableLRU:!0}),this.astWorkerHost=new qM(void 0,s.extensionPath),this.reverseIndexManager=new J3(this.config.rootDir),this.fileReader=new Nm,this.indexerStatus=new _3,this.cancellation=new Z3,this.workerManager=new iz(this.indexerStatus,this.reverseIndexManager,this.cache),this.dependencyAnalyzer=new X3(this.languageService,this.resolver,this.cache,this.reverseIndexManager),this.sourceFileCollector=new x1({excludeNodeModules:this.config.excludeNodeModules??!0,yieldIntervalMs:ez,yieldCallback:()=>Q3(),isCancelled:()=>this.cancellation.isCancelled()}),this.referenceLookup=new nz(this.reverseIndexManager,this.dependencyAnalyzer,this.fileReader),this.referencingFilesFinder=new U3({sourceFileCollector:this.sourceFileCollector,getRootDir:()=>this.config.rootDir,getConcurrency:()=>this.config.indexingConcurrency,findReferenceInFile:(m,u,y)=>this.referenceLookup.findReferenceInFile(m,u,y)}),this.referenceLookup.setFallbackFinder(this.referencingFilesFinder),this.symbolDependencyHelper=new az({resolve:async(m,u)=>{try{return await this.resolver.resolve(m,u)}catch{return null}}}),this.symbolService=new rz(this.astWorkerHost,this.symbolCache,this.fileReader,this.resolver,this.symbolDependencyHelper,()=>this.config,m=>this.findReferencingFiles(m),this.languageService),this.graphCrawler=new Y3(this.dependencyAnalyzer,()=>this.config),this.indexingService=new tz(this.dependencyAnalyzer,this.cache,this.reverseIndexManager,this.sourceFileCollector,this.indexerStatus,this.workerManager,this.cancellation,()=>this.config,()=>Q3(),m=>this.symbolService.getSymbolGraph(m)),this.cacheCoordinator=new $3(this.cache,this.symbolCache,this.reverseIndexManager),s.enableReverseIndex&&this.enableReverseIndex()}}async dispose(){await this.astWorkerHost.stop()}updateConfig(i){this.config.excludeNodeModules=i.excludeNodeModules??this.config.excludeNodeModules,this.config.maxDepth=i.maxDepth??this.config.maxDepth,i.excludeNodeModules!==void 0&&(this.resolver.updateConfig(i.excludeNodeModules),this.sourceFileCollector.updateOptions({excludeNodeModules:i.excludeNodeModules})),i.enableReverseIndex!==void 0&&(this.config.enableReverseIndex=i.enableReverseIndex,i.enableReverseIndex?this.reverseIndexManager.enable():this.reverseIndexManager.disable()),i.indexingConcurrency!==void 0&&(this.config.indexingConcurrency=i.indexingConcurrency),this.clearCache()}async analyze(i){return this.dependencyAnalyzer.analyze(i)}clearCache(){this.cacheCoordinator.clearAll(),this.referenceLookup.clearFallbackCache()}invalidateFile(i){return this.referenceLookup.clearFallbackCache(),this.cacheCoordinator.invalidateFile(i)}invalidateFiles(i){return this.cacheCoordinator.invalidateFiles(i)}async reanalyzeFile(i){this.invalidateFile(i);try{return await this.analyze(i)}catch{return null}}handleFileDeleted(i){this.cacheCoordinator.handleFileDeleted(i)}enableReverseIndex(i){let s=this.reverseIndexManager.enable(i);return this.config.enableReverseIndex=!0,s}disableReverseIndex(){this.config.enableReverseIndex=!1,this.reverseIndexManager.disable()}getSerializedReverseIndex(){return this.reverseIndexManager.getSerialized()}async validateReverseIndex(i=.2){return this.reverseIndexManager.validate(i)}getIndexStatus(){return this.indexerStatus.getSnapshot()}subscribeToIndexStatus(i){return this.indexerStatus.subscribe(i)}hasReverseIndex(){return this.reverseIndexManager.hasEntries()}getCallerCount(i){return this.reverseIndexManager.hasEntries()?this.reverseIndexManager.getCallerCount(i):0}cancelIndexing(){this.indexingService.cancel()}async buildFullIndex(i){return this.indexingService.buildFullIndex(i)}async buildFullIndexInWorker(i,s){return this.indexingService.buildFullIndexInWorker(i,s)}disposeWorker(){this.indexingService.disposeWorker()}async reindexStaleFiles(i,s){return this.indexingService.reindexStaleFiles(i,s)}async crawl(i){return this.graphCrawler.crawl(i)}async crawlFrom(i,s,m=10,u){return this.graphCrawler.crawlFrom(i,s,m,u)}async findReferencingFiles(i){return this.referenceLookup.findReferencingFiles(i)}getSymbolReferencingFiles(i){if(!this.reverseIndexManager.hasEntries())return new Set;let s=this.reverseIndexManager.getSymbolReferencingFiles(i);return new Set(s)}async getSymbolGraph(i){return this.symbolService.getSymbolGraph(i)}async resolveModuleSpecifier(i,s){return this.dependencyAnalyzer.resolveModuleSpecifier(i,s)}async findUnusedSymbols(i){return this.symbolService.findUnusedSymbols(i)}async scanDeadCode(i,s){let m=i??this.config.rootDir;return this.symbolService.scanDeadCode(m,{maxFiles:s?.maxFiles,hasReverseIndex:this.hasReverseIndex()})}async verifyDependencyUsage(i,s){return this.symbolService.verifyDependencyUsage(i,s)}async verifyDependencyUsageBatch(i,s){return this.symbolService.verifyDependencyUsageBatch(i,s)}async getSymbolDependents(i,s){return this.symbolService.getSymbolDependents(i,s)}async traceFunctionExecution(i,s,m=10){return this.symbolService.traceFunctionExecution(i,s,m)}getCacheStats(){return{dependencyCache:this.cache.getStats(),symbolCache:this.symbolCache.getStats(),symbolAnalyzerFileCount:0,reverseIndexStats:this.reverseIndexManager.getStats()}}async getCacheStatsAsync(){let i=0;try{i=await this.astWorkerHost.getFileCount()}catch{}return{dependencyCache:this.cache.getStats(),symbolCache:this.symbolCache.getStats(),symbolAnalyzerFileCount:i,reverseIndexStats:this.reverseIndexManager.getStats()}}};var jce=class{rootDir;tsConfigPath;extensionPath;maxDepth=50;excludeNodeModules=!0;enableReverseIndex=!1;indexingConcurrency=4;maxCacheSize=500;maxSymbolCacheSize=200;maxSymbolAnalyzerFiles=100;indexingProgressInterval;customCache;customSymbolCache;customLanguageService;customPathResolver;customAstWorkerHost;customReverseIndexManager;withRootDir(i){return this.rootDir=i,this}withTsConfigPath(i){return this.tsConfigPath=i,this}withExtensionPath(i){return this.extensionPath=i,this}withMaxDepth(i){return this.maxDepth=i,this}withExcludeNodeModules(i){return this.excludeNodeModules=i,this}withReverseIndex(i){return this.enableReverseIndex=i,this}withIndexingConcurrency(i){return this.indexingConcurrency=i,this}withCacheConfig(i){return i.maxCacheSize!==void 0&&(this.maxCacheSize=i.maxCacheSize),i.maxSymbolCacheSize!==void 0&&(this.maxSymbolCacheSize=i.maxSymbolCacheSize),i.maxSymbolAnalyzerFiles!==void 0&&(this.maxSymbolAnalyzerFiles=i.maxSymbolAnalyzerFiles),this}withIndexingProgressInterval(i){return this.indexingProgressInterval=i,this}withConfig(i){return this.rootDir=i.rootDir,i.tsConfigPath!==void 0&&(this.tsConfigPath=i.tsConfigPath),i.extensionPath!==void 0&&(this.extensionPath=i.extensionPath),i.maxDepth!==void 0&&(this.maxDepth=i.maxDepth),i.excludeNodeModules!==void 0&&(this.excludeNodeModules=i.excludeNodeModules),i.enableReverseIndex!==void 0&&(this.enableReverseIndex=i.enableReverseIndex),i.indexingConcurrency!==void 0&&(this.indexingConcurrency=i.indexingConcurrency),i.maxCacheSize!==void 0&&(this.maxCacheSize=i.maxCacheSize),i.maxSymbolCacheSize!==void 0&&(this.maxSymbolCacheSize=i.maxSymbolCacheSize),i.maxSymbolAnalyzerFiles!==void 0&&(this.maxSymbolAnalyzerFiles=i.maxSymbolAnalyzerFiles),i.indexingProgressInterval!==void 0&&(this.indexingProgressInterval=i.indexingProgressInterval),this}withCache(i){return this.customCache=i,this}withSymbolCache(i){return this.customSymbolCache=i,this}withLanguageService(i){return this.customLanguageService=i,this}withPathResolver(i){return this.customPathResolver=i,this}withAstWorkerHost(i){return this.customAstWorkerHost=i,this}withReverseIndexManager(i){return this.customReverseIndexManager=i,this}build(){this.validate();let i=this.initializeServices();return new Vce(i)}initializeServices(){let i=this.buildConfig(),s=this.customLanguageService??new j3(this.rootDir,this.tsConfigPath,this.extensionPath),m=this.customPathResolver??new l1(this.tsConfigPath,this.excludeNodeModules,this.rootDir),u=this.customCache??new YM({maxSize:this.maxCacheSize,enableLRU:!0}),y=this.customSymbolCache??new YM({maxSize:this.maxSymbolCacheSize,enableLRU:!0}),A=this.customAstWorkerHost??new qM(void 0,this.extensionPath),k=this.customReverseIndexManager??new J3(this.rootDir),J=new Nm,ce=new _3,_e=new Z3,Me=new iz(ce,k,u),se=new X3(s,m,u,k),ft=new x1({excludeNodeModules:this.excludeNodeModules,yieldIntervalMs:ez,yieldCallback:()=>Q3(),isCancelled:()=>_e.isCancelled()}),Je=new nz(k,se,J),Ze=new U3({sourceFileCollector:ft,getRootDir:()=>this.rootDir,getConcurrency:()=>this.indexingConcurrency,findReferenceInFile:(So,On,fn)=>Je.findReferenceInFile(So,On,fn)});Je.setFallbackFinder(Ze);let Nr=new az({resolve:async(So,On)=>{try{return await m.resolve(So,On)}catch{return null}}}),Jr=new rz(A,y,J,m,Nr,()=>i,So=>Je.findReferencingFiles(So),s),Ei=new Y3(se,()=>i),Wo=new tz(se,u,k,ft,ce,Me,_e,()=>i,()=>Q3(),So=>Jr.getSymbolGraph(So)),Ga=new $3(u,y,k);return this.enableReverseIndex&&k.enable(),{config:i,languageService:s,resolver:m,cache:u,symbolCache:y,fileReader:J,astWorkerHost:A,reverseIndexManager:k,indexerStatus:ce,workerManager:Me,cancellation:_e,sourceFileCollector:ft,referencingFilesFinder:Ze,symbolDependencyHelper:Nr,dependencyAnalyzer:se,referenceLookup:Je,symbolService:Jr,graphCrawler:Ei,indexingService:Wo,cacheCoordinator:Ga}}validate(){if(!this.rootDir)throw new Error("rootDir is required");if(this.maxDepth<0)throw new Error("maxDepth must be non-negative");if(this.indexingConcurrency<1)throw new Error("indexingConcurrency must be at least 1");if(this.maxCacheSize<0)throw new Error("maxCacheSize must be non-negative");if(this.maxSymbolCacheSize<0)throw new Error("maxSymbolCacheSize must be non-negative");if(this.maxSymbolAnalyzerFiles<0)throw new Error("maxSymbolAnalyzerFiles must be non-negative")}buildConfig(){return{rootDir:this.rootDir,tsConfigPath:this.tsConfigPath,extensionPath:this.extensionPath,maxDepth:this.maxDepth,excludeNodeModules:this.excludeNodeModules,enableReverseIndex:this.enableReverseIndex,indexingConcurrency:this.indexingConcurrency,maxCacheSize:this.maxCacheSize,maxSymbolCacheSize:this.maxSymbolCacheSize,maxSymbolAnalyzerFiles:this.maxSymbolAnalyzerFiles,indexingProgressInterval:this.indexingProgressInterval}}};var oLe=class{_spider=null;_parser=null;_resolver=null;_astWorkerHost=null;_symbolReverseIndex=null;_config=null;_isReady=!1;_warmupInfo={completed:!1};_fileWatcher=null;_pendingInvalidations=new Map;_callGraphIndexer=null;_graphExtractor=null;_callGraphIndexedRoot=null;get spider(){return this._spider}set spider(i){this._spider=i}get parser(){return this._parser}set parser(i){this._parser=i}get resolver(){return this._resolver}set resolver(i){this._resolver=i}get astWorkerHost(){return this._astWorkerHost}set astWorkerHost(i){this._astWorkerHost=i}get symbolReverseIndex(){return this._symbolReverseIndex}set symbolReverseIndex(i){this._symbolReverseIndex=i}get callGraphIndexer(){return this._callGraphIndexer}set callGraphIndexer(i){this._callGraphIndexer=i}get graphExtractor(){return this._graphExtractor}set graphExtractor(i){this._graphExtractor=i}get callGraphIndexedRoot(){return this._callGraphIndexedRoot}set callGraphIndexedRoot(i){this._callGraphIndexedRoot=i}get config(){return this._config}set config(i){this._config=i}get isReady(){return this._isReady}set isReady(i){this._isReady=i}get warmupInfo(){return this._warmupInfo}set warmupInfo(i){this._warmupInfo=i}get fileWatcher(){return this._fileWatcher}set fileWatcher(i){this._fileWatcher=i}get pendingInvalidations(){return this._pendingInvalidations}requireReady(){if(!this._isReady||!this._spider||!this._parser||!this._resolver||!this._config)throw new Error("Worker not initialized. Call init() first. Missing: "+[!this._spider&&"spider",!this._parser&&"parser",!this._resolver&&"resolver",!this._config&&"config",!this._isReady&&"ready flag"].filter(Boolean).join(", "))}getSpider(){this.requireReady();let i=this._spider;if(!i)throw new Error("Spider not available after requireReady()");return i}getParser(){this.requireReady();let i=this._parser;if(!i)throw new Error("Parser not available after requireReady()");return i}getResolver(){this.requireReady();let i=this._resolver;if(!i)throw new Error("Resolver not available after requireReady()");return i}getAstWorkerHost(){if(!this._astWorkerHost)throw new Error("AstWorkerHost not initialized");return this._astWorkerHost}getConfig(){if(!this._config)throw new Error("Config not set. Call init() first.");return this._config}reset(){for(let i of this._pendingInvalidations.values())clearTimeout(i);this._pendingInvalidations.clear(),this._fileWatcher&&(this._fileWatcher.close(),this._fileWatcher=null),this._astWorkerHost&&(this._astWorkerHost.stop(),this._astWorkerHost=null),this._symbolReverseIndex=null,this._graphExtractor&&(this._graphExtractor.dispose(),this._graphExtractor=null),this._callGraphIndexer&&(this._callGraphIndexer.dispose(),this._callGraphIndexer=null),this._callGraphIndexedRoot=null,this._spider=null,this._parser=null,this._resolver=null,this._config=null,this._isReady=!1,this._warmupInfo={completed:!1}}getStateSummary(){return{isReady:this._isReady,hasSpider:this._spider!==null,hasParser:this._parser!==null,hasResolver:this._resolver!==null,hasAstWorkerHost:this._astWorkerHost!==null,hasSymbolReverseIndex:this._symbolReverseIndex!==null,hasConfig:this._config!==null,warmupCompleted:this._warmupInfo.completed,hasFileWatcher:this._fileWatcher!==null,pendingInvalidationCount:this._pendingInvalidations.size,hasCallGraphIndexer:this._callGraphIndexer!==null,callGraphIndexedRoot:this._callGraphIndexedRoot}}},no=new oLe;var glt=require("node:events"),ylt=require("node:fs"),Yce=require("node:fs/promises"),Fd=Kl(require("node:path"),1);var uN=require("node:fs/promises"),pN=require("node:path"),olt=require("node:stream"),NE={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},aLe={root:".",fileFilter:d=>!0,directoryFilter:d=>!0,type:NE.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(aLe);var alt="READDIRP_RECURSIVE_ERROR",rUt=new Set(["ENOENT","EPERM","EACCES","ELOOP",alt]),nlt=[NE.DIR_TYPE,NE.EVERYTHING_TYPE,NE.FILE_DIR_TYPE,NE.FILE_TYPE],iUt=new Set([NE.DIR_TYPE,NE.EVERYTHING_TYPE,NE.FILE_DIR_TYPE]),oUt=new Set([NE.EVERYTHING_TYPE,NE.FILE_DIR_TYPE,NE.FILE_TYPE]),aUt=d=>rUt.has(d.code),sUt=process.platform==="win32",rlt=d=>!0,ilt=d=>{if(d===void 0)return rlt;if(typeof d=="function")return d;if(typeof d=="string"){let i=d.trim();return s=>s.basename===i}if(Array.isArray(d)){let i=d.map(s=>s.trim());return s=>i.some(m=>s.basename===m)}return rlt},sLe=class extends olt.Readable{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(i={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:i.highWaterMark});let s={...aLe,...i},{root:m,type:u}=s;this._fileFilter=ilt(s.fileFilter),this._directoryFilter=ilt(s.directoryFilter);let y=s.lstat?uN.lstat:uN.stat;sUt?this._stat=A=>y(A,{bigint:!0}):this._stat=y,this._maxDepth=s.depth!=null&&Number.isSafeInteger(s.depth)?s.depth:aLe.depth,this._wantsDir=u?iUt.has(u):!1,this._wantsFile=u?oUt.has(u):!1,this._wantsEverything=u===NE.EVERYTHING_TYPE,this._root=(0,pN.resolve)(m),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(m,1)],this.reading=!1,this.parent=void 0}async _read(i){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&i>0;){let s=this.parent,m=s&&s.files;if(m&&m.length>0){let{path:u,depth:y}=s,A=m.splice(0,i).map(J=>this._formatEntry(J,u)),k=await Promise.all(A);for(let J of k){if(!J)continue;if(this.destroyed)return;let ce=await this._getEntryType(J);ce==="directory"&&this._directoryFilter(J)?(y<=this._maxDepth&&this.parents.push(this._exploreDir(J.fullPath,y+1)),this._wantsDir&&(this.push(J),i--)):(ce==="file"||this._includeAsFile(J))&&this._fileFilter(J)&&this._wantsFile&&(this.push(J),i--)}}else{let u=this.parents.pop();if(!u){this.push(null);break}if(this.parent=await u,this.destroyed)return}}}catch(s){this.destroy(s)}finally{this.reading=!1}}}async _exploreDir(i,s){let m;try{m=await(0,uN.readdir)(i,this._rdOptions)}catch(u){this._onError(u)}return{files:m,depth:s,path:i}}async _formatEntry(i,s){let m,u=this._isDirent?i.name:i;try{let y=(0,pN.resolve)((0,pN.join)(s,u));m={path:(0,pN.relative)(this._root,y),fullPath:y,basename:u},m[this._statsProp]=this._isDirent?i:await this._stat(y)}catch(y){this._onError(y);return}return m}_onError(i){aUt(i)&&!this.destroyed?this.emit("warn",i):this.destroy(i)}async _getEntryType(i){if(!i&&this._statsProp in i)return"";let s=i[this._statsProp];if(s.isFile())return"file";if(s.isDirectory())return"directory";if(s&&s.isSymbolicLink()){let m=i.fullPath;try{let u=await(0,uN.realpath)(m),y=await(0,uN.lstat)(u);if(y.isFile())return"file";if(y.isDirectory()){let A=u.length;if(m.startsWith(u)&&m.substr(A,1)===pN.sep){let k=new Error(`Circular symlink detected: "${m}" points to "${u}"`);return k.code=alt,this._onError(k)}return"directory"}}catch(u){return this._onError(u),""}}}_includeAsFile(i){let s=i&&i[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function slt(d,i={}){let s=i.entryType||i.type;if(s==="both"&&(s=NE.FILE_DIR_TYPE),s&&(i.type=s),d){if(typeof d!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(s&&!nlt.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${nlt.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return i.root=d,new sLe(i)}var zO=require("node:fs"),tI=require("node:fs/promises"),clt=require("node:os"),Mm=Kl(require("node:path"),1),lUt="data",dLe="end",dlt="close",$ce=()=>{};var qce=process.platform,uLe=qce==="win32",cUt=qce==="darwin",dUt=qce==="linux",uUt=qce==="freebsd",ult=(0,clt.type)()==="OS400",l_={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},eI=l_,pUt="watch",fUt={lstat:tI.lstat,stat:tI.stat},WO="listeners",Uce="errHandlers",sz="rawEmitters",mUt=[WO,Uce,sz],_Ut=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),hUt=d=>_Ut.has(Mm.extname(d).slice(1).toLowerCase()),cLe=(d,i)=>{d instanceof Set?d.forEach(i):i(d)},JU=(d,i,s)=>{let m=d[i];m instanceof Set||(d[i]=m=new Set([m])),m.add(s)},gUt=d=>i=>{let s=d[i];s instanceof Set?s.clear():delete d[i]},$U=(d,i,s)=>{let m=d[i];m instanceof Set?m.delete(s):m===s&&delete d[i]},plt=d=>d instanceof Set?d.size===0:!d,Hce=new Map;function llt(d,i,s,m,u){let y=(A,k)=>{s(d),u(A,k,{watchedPath:d}),k&&d!==k&&Kce(Mm.resolve(d,k),WO,Mm.join(d,k))};try{return(0,zO.watch)(d,{persistent:i.persistent},y)}catch(A){m(A);return}}var Kce=(d,i,s,m,u)=>{let y=Hce.get(d);y&&cLe(y[i],A=>{A(s,m,u)})},yUt=(d,i,s,m)=>{let{listener:u,errHandler:y,rawEmitter:A}=m,k=Hce.get(i),J;if(!s.persistent)return J=llt(d,s,u,y,A),J?J.close.bind(J):void 0;if(k)JU(k,WO,u),JU(k,Uce,y),JU(k,sz,A);else{if(J=llt(d,s,Kce.bind(null,i,WO),y,Kce.bind(null,i,sz)),!J)return;J.on(eI.ERROR,async ce=>{let _e=Kce.bind(null,i,Uce);if(k&&(k.watcherUnusable=!0),uLe&&ce.code==="EPERM")try{await(await(0,tI.open)(d,"r")).close(),_e(ce)}catch{}else _e(ce)}),k={listeners:u,errHandlers:y,rawEmitters:A,watcher:J},Hce.set(i,k)}return()=>{$U(k,WO,u),$U(k,Uce,y),$U(k,sz,A),plt(k.listeners)&&(k.watcher.close(),Hce.delete(i),mUt.forEach(gUt(k)),k.watcher=void 0,Object.freeze(k))}},lLe=new Map,vUt=(d,i,s,m)=>{let{listener:u,rawEmitter:y}=m,A=lLe.get(i),k=A&&A.options;return k&&(k.persistent<s.persistent||k.interval>s.interval)&&((0,zO.unwatchFile)(i),A=void 0),A?(JU(A,WO,u),JU(A,sz,y)):(A={listeners:u,rawEmitters:y,options:s,watcher:(0,zO.watchFile)(i,s,(J,ce)=>{cLe(A.rawEmitters,Me=>{Me(eI.CHANGE,i,{curr:J,prev:ce})});let _e=J.mtimeMs;(J.size!==ce.size||_e>ce.mtimeMs||_e===0)&&cLe(A.listeners,Me=>Me(d,J))})},lLe.set(i,A)),()=>{$U(A,WO,u),$U(A,sz,y),plt(A.listeners)&&(lLe.delete(i),(0,zO.unwatchFile)(i),A.options=A.watcher=void 0,Object.freeze(A))}},Jce=class{fsw;_boundHandleError;constructor(i){this.fsw=i,this._boundHandleError=s=>i._handleError(s)}_watchWithNodeFs(i,s){let m=this.fsw.options,u=Mm.dirname(i),y=Mm.basename(i);this.fsw._getWatchedDir(u).add(y);let k=Mm.resolve(i),J={persistent:m.persistent};s||(s=$ce);let ce;if(m.usePolling){let _e=m.interval!==m.binaryInterval;J.interval=_e&&hUt(y)?m.binaryInterval:m.interval,ce=vUt(i,k,J,{listener:s,rawEmitter:this.fsw._emitRaw})}else ce=yUt(i,k,J,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return ce}_handleFile(i,s,m){if(this.fsw.closed)return;let u=Mm.dirname(i),y=Mm.basename(i),A=this.fsw._getWatchedDir(u),k=s;if(A.has(y))return;let J=async(_e,Me)=>{if(this.fsw._throttle(pUt,i,5)){if(!Me||Me.mtimeMs===0)try{let se=await(0,tI.stat)(i);if(this.fsw.closed)return;let ft=se.atimeMs,Je=se.mtimeMs;if((!ft||ft<=Je||Je!==k.mtimeMs)&&this.fsw._emit(eI.CHANGE,i,se),(cUt||dUt||uUt)&&k.ino!==se.ino){this.fsw._closeFile(_e),k=se;let Ze=this._watchWithNodeFs(i,J);Ze&&this.fsw._addPathCloser(_e,Ze)}else k=se}catch{this.fsw._remove(u,y)}else if(A.has(y)){let se=Me.atimeMs,ft=Me.mtimeMs;(!se||se<=ft||ft!==k.mtimeMs)&&this.fsw._emit(eI.CHANGE,i,Me),k=Me}}},ce=this._watchWithNodeFs(i,J);if(!(m&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(i)){if(!this.fsw._throttle(eI.ADD,i,0))return;this.fsw._emit(eI.ADD,i,s)}return ce}async _handleSymlink(i,s,m,u){if(this.fsw.closed)return;let y=i.fullPath,A=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let k;try{k=await(0,tI.realpath)(m)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(A.has(u)?this.fsw._symlinkPaths.get(y)!==k&&(this.fsw._symlinkPaths.set(y,k),this.fsw._emit(eI.CHANGE,m,i.stats)):(A.add(u),this.fsw._symlinkPaths.set(y,k),this.fsw._emit(eI.ADD,m,i.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(y))return!0;this.fsw._symlinkPaths.set(y,!0)}_handleRead(i,s,m,u,y,A,k){i=Mm.join(i,"");let J=u?`${i}:${u}`:i;if(k=this.fsw._throttle("readdir",J,1e3),!k)return;let ce=this.fsw._getWatchedDir(m.path),_e=new Set,Me=this.fsw._readdirp(i,{fileFilter:se=>m.filterPath(se),directoryFilter:se=>m.filterDir(se)});if(Me)return Me.on(lUt,async se=>{if(this.fsw.closed){Me=void 0;return}let ft=se.path,Je=Mm.join(i,ft);if(_e.add(ft),!(se.stats.isSymbolicLink()&&await this._handleSymlink(se,i,Je,ft))){if(this.fsw.closed){Me=void 0;return}(ft===u||!u&&!ce.has(ft))&&(this.fsw._incrReadyCount(),Je=Mm.join(y,Mm.relative(y,Je)),this._addToNodeFs(Je,s,m,A+1))}}).on(eI.ERROR,this._boundHandleError),new Promise((se,ft)=>{if(!Me)return ft();Me.once(dLe,()=>{if(this.fsw.closed){Me=void 0;return}let Je=k?k.clear():!1;se(void 0),ce.getChildren().filter(Ze=>Ze!==i&&!_e.has(Ze)).forEach(Ze=>{this.fsw._remove(i,Ze)}),Me=void 0,Je&&this._handleRead(i,!1,m,u,y,A,k)})})}async _handleDir(i,s,m,u,y,A,k){let J=this.fsw._getWatchedDir(Mm.dirname(i)),ce=J.has(Mm.basename(i));!(m&&this.fsw.options.ignoreInitial)&&!y&&!ce&&this.fsw._emit(eI.ADD_DIR,i,s),J.add(Mm.basename(i)),this.fsw._getWatchedDir(i);let _e,Me,se=this.fsw.options.depth;if((se==null||u<=se)&&!this.fsw._symlinkPaths.has(k)){if(!y&&(await this._handleRead(i,m,A,y,i,u,_e),this.fsw.closed))return;Me=this._watchWithNodeFs(i,(ft,Je)=>{Je&&Je.mtimeMs===0||this._handleRead(ft,!1,A,y,i,u,_e)})}return Me}async _addToNodeFs(i,s,m,u,y){let A=this.fsw._emitReady;if(this.fsw._isIgnored(i)||this.fsw.closed)return A(),!1;let k=this.fsw._getWatchHelpers(i);m&&(k.filterPath=J=>m.filterPath(J),k.filterDir=J=>m.filterDir(J));try{let J=await fUt[k.statMethod](k.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(k.watchPath,J))return A(),!1;let ce=this.fsw.options.followSymlinks,_e;if(J.isDirectory()){let Me=Mm.resolve(i),se=ce?await(0,tI.realpath)(i):i;if(this.fsw.closed||(_e=await this._handleDir(k.watchPath,J,s,u,y,k,se),this.fsw.closed))return;Me!==se&&se!==void 0&&this.fsw._symlinkPaths.set(Me,se)}else if(J.isSymbolicLink()){let Me=ce?await(0,tI.realpath)(i):i;if(this.fsw.closed)return;let se=Mm.dirname(k.watchPath);if(this.fsw._getWatchedDir(se).add(k.watchPath),this.fsw._emit(eI.ADD,k.watchPath,J),_e=await this._handleDir(se,J,s,u,i,k,Me),this.fsw.closed)return;Me!==void 0&&this.fsw._symlinkPaths.set(Mm.resolve(i),Me)}else _e=this._handleFile(k.watchPath,J,s);return A(),_e&&this.fsw._addPathCloser(i,_e),!1}catch(J){if(this.fsw._handleError(J))return A(),i}}};var pLe="/",bUt="//",vlt=".",SUt="..",TUt="string",EUt=/\\/g,blt=/\/\//g,xUt=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,AUt=/^\.[/\\]/;function Xce(d){return Array.isArray(d)?d:[d]}var fLe=d=>typeof d=="object"&&d!==null&&!(d instanceof RegExp);function IUt(d){return typeof d=="function"?d:typeof d=="string"?i=>d===i:d instanceof RegExp?i=>d.test(i):typeof d=="object"&&d!==null?i=>{if(d.path===i)return!0;if(d.recursive){let s=Fd.relative(d.path,i);return s?!s.startsWith("..")&&!Fd.isAbsolute(s):!1}return!1}:()=>!1}function DUt(d){if(typeof d!="string")throw new Error("string expected");d=Fd.normalize(d),d=d.replace(/\\/g,"/");let i=!1;return d.startsWith("//")&&(i=!0),d=d.replace(blt,"/"),i&&(d="/"+d),d}function flt(d,i,s){let m=DUt(i);for(let u=0;u<d.length;u++){let y=d[u];if(y(m,s))return!0}return!1}function CUt(d,i){if(d==null)throw new TypeError("anymatch: specify first argument");let m=Xce(d).map(u=>IUt(u));return i==null?(u,y)=>flt(m,u,y):flt(m,i)}var mlt=d=>{let i=Xce(d).flat();if(!i.every(s=>typeof s===TUt))throw new TypeError(`Non-string provided as watch path: ${i}`);return i.map(Slt)},_lt=d=>{let i=d.replace(EUt,pLe),s=!1;return i.startsWith(bUt)&&(s=!0),i=i.replace(blt,pLe),s&&(i=pLe+i),i},Slt=d=>_lt(Fd.normalize(_lt(d))),hlt=(d="")=>i=>typeof i=="string"?Slt(Fd.isAbsolute(i)?i:Fd.join(d,i)):i,PUt=(d,i)=>Fd.isAbsolute(d)?d:Fd.join(i,d),NUt=Object.freeze(new Set),mLe=class{path;_removeWatcher;items;constructor(i,s){this.path=i,this._removeWatcher=s,this.items=new Set}add(i){let{items:s}=this;s&&i!==vlt&&i!==SUt&&s.add(i)}async remove(i){let{items:s}=this;if(!s||(s.delete(i),s.size>0))return;let m=this.path;try{await(0,Yce.readdir)(m)}catch{this._removeWatcher&&this._removeWatcher(Fd.dirname(m),Fd.basename(m))}}has(i){let{items:s}=this;if(s)return s.has(i)}getChildren(){let{items:i}=this;return i?[...i.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=$ce,this.items=NUt,Object.freeze(this)}},RUt="stat",MUt="lstat",_Le=class{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(i,s,m){this.fsw=m;let u=i;this.path=i=i.replace(AUt,""),this.watchPath=u,this.fullWatchPath=Fd.resolve(u),this.dirParts=[],this.dirParts.forEach(y=>{y.length>1&&y.pop()}),this.followSymlinks=s,this.statMethod=s?RUt:MUt}entryPath(i){return Fd.join(this.watchPath,Fd.relative(this.watchPath,i.fullPath))}filterPath(i){let{stats:s}=i;if(s&&s.isSymbolicLink())return this.filterDir(i);let m=this.entryPath(i);return this.fsw._isntIgnored(m,s)&&this.fsw._hasReadPermissions(s)}filterDir(i){return this.fsw._isntIgnored(this.entryPath(i),i.stats)}},hLe=class extends glt.EventEmitter{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(i={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let s=i.awaitWriteFinish,m={stabilityThreshold:2e3,pollInterval:100},u={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...i,ignored:i.ignored?Xce(i.ignored):Xce([]),awaitWriteFinish:s===!0?m:typeof s=="object"?{...m,...s}:!1};ult&&(u.usePolling=!0),u.atomic===void 0&&(u.atomic=!u.usePolling);let y=process.env.CHOKIDAR_USEPOLLING;if(y!==void 0){let J=y.toLowerCase();J==="false"||J==="0"?u.usePolling=!1:J==="true"||J==="1"?u.usePolling=!0:u.usePolling=!!J}let A=process.env.CHOKIDAR_INTERVAL;A&&(u.interval=Number.parseInt(A,10));let k=0;this._emitReady=()=>{k++,k>=this._readyCount&&(this._emitReady=$ce,this._readyEmitted=!0,process.nextTick(()=>this.emit(l_.READY)))},this._emitRaw=(...J)=>this.emit(l_.RAW,...J),this._boundRemove=this._remove.bind(this),this.options=u,this._nodeFsHandler=new Jce(this),Object.freeze(u)}_addIgnoredPath(i){if(fLe(i)){for(let s of this._ignoredPaths)if(fLe(s)&&s.path===i.path&&s.recursive===i.recursive)return}this._ignoredPaths.add(i)}_removeIgnoredPath(i){if(this._ignoredPaths.delete(i),typeof i=="string")for(let s of this._ignoredPaths)fLe(s)&&s.path===i&&this._ignoredPaths.delete(s)}add(i,s,m){let{cwd:u}=this.options;this.closed=!1,this._closePromise=void 0;let y=mlt(i);return u&&(y=y.map(A=>PUt(A,u))),y.forEach(A=>{this._removeIgnoredPath(A)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=y.length,Promise.all(y.map(async A=>{let k=await this._nodeFsHandler._addToNodeFs(A,!m,void 0,0,s);return k&&this._emitReady(),k})).then(A=>{this.closed||A.forEach(k=>{k&&this.add(Fd.dirname(k),Fd.basename(s||k))})}),this}unwatch(i){if(this.closed)return this;let s=mlt(i),{cwd:m}=this.options;return s.forEach(u=>{!Fd.isAbsolute(u)&&!this._closers.has(u)&&(m&&(u=Fd.join(m,u)),u=Fd.resolve(u)),this._closePath(u),this._addIgnoredPath(u),this._watched.has(u)&&this._addIgnoredPath({path:u,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let i=[];return this._closers.forEach(s=>s.forEach(m=>{let u=m();u instanceof Promise&&i.push(u)})),this._streams.forEach(s=>s.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(s=>s.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=i.length?Promise.all(i).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let i={};return this._watched.forEach((s,m)=>{let y=(this.options.cwd?Fd.relative(this.options.cwd,m):m)||vlt;i[y]=s.getChildren().sort()}),i}emitWithAll(i,s){this.emit(i,...s),i!==l_.ERROR&&this.emit(l_.ALL,i,...s)}async _emit(i,s,m){if(this.closed)return;let u=this.options;uLe&&(s=Fd.normalize(s)),u.cwd&&(s=Fd.relative(u.cwd,s));let y=[s];m!=null&&y.push(m);let A=u.awaitWriteFinish,k;if(A&&(k=this._pendingWrites.get(s)))return k.lastChange=new Date,this;if(u.atomic){if(i===l_.UNLINK)return this._pendingUnlinks.set(s,[i,...y]),setTimeout(()=>{this._pendingUnlinks.forEach((J,ce)=>{this.emit(...J),this.emit(l_.ALL,...J),this._pendingUnlinks.delete(ce)})},typeof u.atomic=="number"?u.atomic:100),this;i===l_.ADD&&this._pendingUnlinks.has(s)&&(i=l_.CHANGE,this._pendingUnlinks.delete(s))}if(A&&(i===l_.ADD||i===l_.CHANGE)&&this._readyEmitted){let J=(ce,_e)=>{ce?(i=l_.ERROR,y[0]=ce,this.emitWithAll(i,y)):_e&&(y.length>1?y[1]=_e:y.push(_e),this.emitWithAll(i,y))};return this._awaitWriteFinish(s,A.stabilityThreshold,i,J),this}if(i===l_.CHANGE&&!this._throttle(l_.CHANGE,s,50))return this;if(u.alwaysStat&&m===void 0&&(i===l_.ADD||i===l_.ADD_DIR||i===l_.CHANGE)){let J=u.cwd?Fd.join(u.cwd,s):s,ce;try{ce=await(0,Yce.stat)(J)}catch{}if(!ce||this.closed)return;y.push(ce)}return this.emitWithAll(i,y),this}_handleError(i){let s=i&&i.code;return i&&s!=="ENOENT"&&s!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||s!=="EPERM"&&s!=="EACCES")&&this.emit(l_.ERROR,i),i||this.closed}_throttle(i,s,m){this._throttled.has(i)||this._throttled.set(i,new Map);let u=this._throttled.get(i);if(!u)throw new Error("invalid throttle");let y=u.get(s);if(y)return y.count++,!1;let A,k=()=>{let ce=u.get(s),_e=ce?ce.count:0;return u.delete(s),clearTimeout(A),ce&&clearTimeout(ce.timeoutObject),_e};A=setTimeout(k,m);let J={timeoutObject:A,clear:k,count:0};return u.set(s,J),J}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(i,s,m,u){let y=this.options.awaitWriteFinish;if(typeof y!="object")return;let A=y.pollInterval,k,J=i;this.options.cwd&&!Fd.isAbsolute(i)&&(J=Fd.join(this.options.cwd,i));let ce=new Date,_e=this._pendingWrites;function Me(se){(0,ylt.stat)(J,(ft,Je)=>{if(ft||!_e.has(i)){ft&&ft.code!=="ENOENT"&&u(ft);return}let Ze=Number(new Date);se&&Je.size!==se.size&&(_e.get(i).lastChange=Ze);let Nr=_e.get(i);Ze-Nr.lastChange>=s?(_e.delete(i),u(void 0,Je)):k=setTimeout(Me,A,Je)})}_e.has(i)||(_e.set(i,{lastChange:ce,cancelWait:()=>(_e.delete(i),clearTimeout(k),m)}),k=setTimeout(Me,A))}_isIgnored(i,s){if(this.options.atomic&&xUt.test(i))return!0;if(!this._userIgnored){let{cwd:m}=this.options,y=(this.options.ignored||[]).map(hlt(m)),k=[...[...this._ignoredPaths].map(hlt(m)),...y];this._userIgnored=CUt(k,void 0)}return this._userIgnored(i,s)}_isntIgnored(i,s){return!this._isIgnored(i,s)}_getWatchHelpers(i){return new _Le(i,this.options.followSymlinks,this)}_getWatchedDir(i){let s=Fd.resolve(i);return this._watched.has(s)||this._watched.set(s,new mLe(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(i){return this.options.ignorePermissionErrors?!0:!!(Number(i.mode)&256)}_remove(i,s,m){let u=Fd.join(i,s),y=Fd.resolve(u);if(m=m??(this._watched.has(u)||this._watched.has(y)),!this._throttle("remove",u,100))return;!m&&this._watched.size===1&&this.add(i,s,!0),this._getWatchedDir(u).getChildren().forEach(se=>this._remove(u,se));let J=this._getWatchedDir(i),ce=J.has(s);J.remove(s),this._symlinkPaths.has(y)&&this._symlinkPaths.delete(y);let _e=u;if(this.options.cwd&&(_e=Fd.relative(this.options.cwd,u)),this.options.awaitWriteFinish&&this._pendingWrites.has(_e)&&this._pendingWrites.get(_e).cancelWait()===l_.ADD)return;this._watched.delete(u),this._watched.delete(y);let Me=m?l_.UNLINK_DIR:l_.UNLINK;ce&&!this._isIgnored(u)&&this._emit(Me,u),this._closePath(u)}_closePath(i){this._closeFile(i);let s=Fd.dirname(i);this._getWatchedDir(s).remove(Fd.basename(i))}_closeFile(i){let s=this._closers.get(i);s&&(s.forEach(m=>m()),this._closers.delete(i))}_addPathCloser(i,s){if(!s)return;let m=this._closers.get(i);m||(m=[],this._closers.set(i,m)),m.push(s)}_readdirp(i,s){if(this.closed)return;let m={type:l_.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},u=slt(i,m);return this._streams.add(u),u.once(dlt,()=>{u=void 0}),u.once(dLe,()=>{u&&(this._streams.delete(u),u=void 0)}),u}};function Tlt(d,i={}){let s=new hLe(i);return s.add(d),s}var Elt=Kl(require("node:path"));var mL=ld("McpWorker"),LUt=300,kUt=p3;function xlt(d){if(!no.config?.rootDir){mL.warn("Cannot setup file watcher: no rootDir configured");return}let i=`${no.config.rootDir}/**/*{${kUt.join(",")}}`;mL.debug("Setting up file watcher for:",i);try{no.fileWatcher=Tlt(i,{ignored:f3.map(s=>`**/${s}/**`),persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}}),no.fileWatcher.on("change",s=>{gLe(d,"change",s)}),no.fileWatcher.on("add",s=>{gLe(d,"add",s)}),no.fileWatcher.on("unlink",s=>{gLe(d,"unlink",s)}),no.fileWatcher.on("error",s=>{let m=s instanceof Error?s.message:String(s);mL.error("File watcher error:",m)}),no.fileWatcher.on("ready",()=>{mL.debug("File watcher ready")})}catch(s){let m=s instanceof Error?s.message:"Unknown error";mL.error("Failed to setup file watcher:",m)}}function Alt(){no.fileWatcher&&(mL.debug("Stopping file watcher..."),no.fileWatcher.close().catch(d=>{mL.error("Error closing file watcher:",d.message)}),no.fileWatcher=null);for(let d of no.pendingInvalidations.values())clearTimeout(d);no.pendingInvalidations.clear()}function gLe(d,i,s){let m=no.pendingInvalidations.get(s);m&&clearTimeout(m);let u=setTimeout(()=>{no.pendingInvalidations.delete(s),wUt(d,i,s)},LUt);no.pendingInvalidations.set(s,u)}function wUt(d,i,s){if(no.spider){switch(mL.debug("File",i+":",Elt.basename(s)),i){case"change":case"add":no.spider.invalidateFile(s),no.symbolReverseIndex&&no.symbolReverseIndex.removeDependenciesFromSource(s);break;case"unlink":no.spider.handleFileDeleted(s),no.symbolReverseIndex&&no.symbolReverseIndex.removeDependenciesFromSource(s);break}d({type:"file-invalidated",filePath:s,event:i})}}var Cut=Kl(require("node:fs/promises"));var Clt=Kl(require("node:fs/promises")),RE=Kl(require("node:path"));var Ilt=Kl(require("node:path")),OUt={".ts":"typescript",".tsx":"typescript",".mts":"typescript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".rs":"rust",".vue":"vue",".svelte":"svelte",".gql":"graphql",".graphql":"graphql",".cs":"csharp",".csproj":"csharp",".go":"go",".java":"java"};function Zce(d){let i=d;return d.includes("/")||d.includes("\\")?i=Ilt.extname(d).toLowerCase():(i.startsWith(".")||(i="."+i),i=i.toLowerCase()),OUt[i]||"unknown"}function Dlt(d){switch(d.toLowerCase()){case"function":case"method":return 12;case"class":return 5;case"variable":case"property":return 13;case"interface":return 11;default:return 13}}function qU(d,i){let s=Di(i),m=k=>{let J=k.lastIndexOf(":");return J<0||J===k.length-1?k:k.slice(J+1)},u=d.symbols.map(k=>({name:k.name,kind:Dlt(k.kind),range:{start:k.line,end:k.line},containerName:void 0,uri:s})),y=new Map,A=new Map;for(let k of u)y.set(k.name,{name:k.name,kind:k.kind,uri:s,range:k.range});for(let k of d.dependencies){let J=m(k.sourceSymbolId),ce=`${s}:${J}`;A.has(ce)||A.set(ce,[]);let _e=m(k.targetSymbolId);A.get(ce)?.push({to:{name:_e,kind:12,uri:s,range:{start:0,end:0}},fromRanges:[{start:0,end:0}]})}return{symbols:u,callHierarchyItems:y,outgoingCalls:A}}function Nf(d,i){let s=RE.relative(i,d);return s.startsWith("..")||RE.isAbsolute(s)?d:s.replaceAll("\\","/")}function yLe(d){let i=new Map,s=new Map;for(let m of d)i.set(m.source,(i.get(m.source)??0)+1),s.set(m.target,(s.get(m.target)??0)+1);return{dependencyCount:i,dependentCount:s}}function Plt(d,i,s,m){return d.map(u=>({path:u,relativePath:Nf(u,m),extension:u.split(".").pop()??"",dependencyCount:i.get(u)??0,dependentCount:s.get(u)??0}))}function Nlt(d,i){return d.map(s=>({source:s.source,target:s.target,sourceRelative:Nf(s.source,i),targetRelative:Nf(s.target,i)}))}function Rlt(d,i){let{dependencyCount:s,dependentCount:m}=yLe(i);for(let u of d)u.dependencyCount=s.get(u.path)||0,u.dependentCount=m.get(u.path)||0}function Mlt(d,i,s,m=0){let u=s===void 0?void 0:m+s,y=d.slice(m,u),A=new Set(y.map(J=>J.path)),k=i.filter(J=>A.has(J.source)&&A.has(J.target));return{nodes:y,edges:k}}function Llt(d){let i=new Map;for(let k of d)i.has(k.source)||i.set(k.source,new Set),i.get(k.source)?.add(k.target);let s=[],m=new Set,u=new Set,y=[];function A(k){m.add(k),u.add(k),y.push(k);let J=i.get(k);if(J){for(let ce of J)if(!m.has(ce))A(ce);else if(u.has(ce)){let _e=y.indexOf(ce),Me=y.slice(_e);Me.push(ce),s.push(Me)}}y.pop(),u.delete(k)}for(let k of i.keys())m.has(k)||A(k);return s}async function H_(d){try{if(!(await Clt.stat(d)).isFile())throw new Error(`Path is not a file: ${d}`)}catch(i){throw i.code==="ENOENT"?new Error(`File not found: ${d}`,{cause:i}):i}}async function klt(d){if(!RE.isAbsolute(d))throw new Error(`FILE_NOT_FOUND: Path must be absolute. Got relative path: ${d}`);try{await H_(d)}catch(m){let u=m instanceof Error?m.message:String(m);throw new Error(`FILE_NOT_FOUND: Cannot access file '${d}'. ${u}`,{cause:m})}let i=RE.extname(d).toLowerCase();if(!mU.includes(i))throw new Error(`UNSUPPORTED_FILE_TYPE: File extension '${i}' is not supported for symbol analysis. Supported extensions: ${mU.join(", ")}. File: ${d}`);let s=Zce(i);return{ext:i,language:s}}function wlt(d,i){if(d.includes("\0"))throw new Error(`INVALID_SCOPE_PATH: Path contains null bytes: ${d}`);if(!RE.isAbsolute(d))throw new Error(`INVALID_SCOPE_PATH: Scope path must be absolute. Got: ${d}`);let s=RE.resolve(d),m=RE.resolve(i);if(!(s===m||s.startsWith(m+RE.sep)||s.startsWith(m+"/")))throw new Error(`INVALID_SCOPE_PATH: Scope path '${d}' is outside workspace root '${i}'`)}var Bue=Kl(require("node:path"));var Jl={};tN(Jl,{$brand:()=>Qce,$input:()=>Wwe,$output:()=>Fwe,NEVER:()=>vLe,TimePrecision:()=>Vwe,ZodAny:()=>ROe,ZodArray:()=>wOe,ZodBase64:()=>Iue,ZodBase64URL:()=>Due,ZodBigInt:()=>Fz,ZodBigIntFormat:()=>Nue,ZodBoolean:()=>Oz,ZodCIDRv4:()=>xue,ZodCIDRv6:()=>Aue,ZodCUID:()=>gue,ZodCUID2:()=>yue,ZodCatch:()=>rFe,ZodCodec:()=>Wue,ZodCustom:()=>DH,ZodCustomStringFormat:()=>kz,ZodDate:()=>TH,ZodDefault:()=>YOe,ZodDiscriminatedUnion:()=>FOe,ZodE164:()=>Cue,ZodEmail:()=>mue,ZodEmoji:()=>_ue,ZodEnum:()=>Mz,ZodError:()=>dJt,ZodExactOptional:()=>$Oe,ZodFile:()=>KOe,ZodFirstPartyTypeKind:()=>_Fe,ZodFunction:()=>pFe,ZodGUID:()=>gH,ZodIPv4:()=>Tue,ZodIPv6:()=>Eue,ZodISODate:()=>lue,ZodISODateTime:()=>sue,ZodISODuration:()=>due,ZodISOTime:()=>cue,ZodIntersection:()=>WOe,ZodIssueCode:()=>pJt,ZodJWT:()=>Pue,ZodKSUID:()=>Sue,ZodLazy:()=>cFe,ZodLiteral:()=>HOe,ZodMAC:()=>xOe,ZodMap:()=>jOe,ZodNaN:()=>oFe,ZodNanoID:()=>hue,ZodNever:()=>LOe,ZodNonOptional:()=>Oue,ZodNull:()=>POe,ZodNullable:()=>XOe,ZodNumber:()=>wz,ZodNumberFormat:()=>JO,ZodObject:()=>xH,ZodOptional:()=>wue,ZodPipe:()=>Fue,ZodPrefault:()=>QOe,ZodPromise:()=>uFe,ZodReadonly:()=>aFe,ZodRealError:()=>tT,ZodRecord:()=>IH,ZodSet:()=>UOe,ZodString:()=>Lz,ZodStringFormat:()=>af,ZodSuccess:()=>nFe,ZodSymbol:()=>DOe,ZodTemplateLiteral:()=>lFe,ZodTransform:()=>JOe,ZodTuple:()=>BOe,ZodType:()=>Uc,ZodULID:()=>vue,ZodURL:()=>SH,ZodUUID:()=>C1,ZodUndefined:()=>COe,ZodUnion:()=>AH,ZodUnknown:()=>MOe,ZodVoid:()=>kOe,ZodXID:()=>bue,ZodXor:()=>OOe,_ZodString:()=>fue,_default:()=>ZOe,_function:()=>mut,any:()=>Kdt,array:()=>EH,base64:()=>Pdt,base64url:()=>Ndt,bigint:()=>Gdt,boolean:()=>IOe,catch:()=>iFe,check:()=>_ut,cidrv4:()=>Ddt,cidrv6:()=>Cdt,clone:()=>Ub,codec:()=>uut,coerce:()=>hFe,config:()=>K_,core:()=>_N,cuid:()=>vdt,cuid2:()=>bdt,custom:()=>hut,date:()=>$dt,decode:()=>gOe,decodeAsync:()=>vOe,describe:()=>gut,discriminatedUnion:()=>eut,e164:()=>Rdt,email:()=>cdt,emoji:()=>gdt,encode:()=>hOe,encodeAsync:()=>yOe,endsWith:()=>Tz,enum:()=>Lue,exactOptional:()=>qOe,file:()=>sut,flattenError:()=>iH,float32:()=>Fdt,float64:()=>Wdt,formatError:()=>oH,fromJSONSchema:()=>xut,function:()=>mut,getErrorMap:()=>mJt,globalRegistry:()=>Jy,gt:()=>I1,gte:()=>Hb,guid:()=>ddt,hash:()=>Odt,hex:()=>wdt,hostname:()=>kdt,httpUrl:()=>hdt,includes:()=>bz,instanceof:()=>vut,int:()=>pue,int32:()=>zdt,int64:()=>Vdt,intersection:()=>zOe,ipv4:()=>xdt,ipv6:()=>Idt,iso:()=>Rz,json:()=>Sut,jwt:()=>Mdt,keyof:()=>qdt,ksuid:()=>Edt,lazy:()=>dFe,length:()=>HO,literal:()=>aut,locales:()=>fH,looseObject:()=>Zdt,looseRecord:()=>nut,lowercase:()=>yz,lt:()=>A1,lte:()=>LE,mac:()=>Adt,map:()=>rut,maxLength:()=>UO,maxSize:()=>SL,meta:()=>yut,mime:()=>Ez,minLength:()=>mN,minSize:()=>D1,multipleOf:()=>bL,nan:()=>dut,nanoid:()=>ydt,nativeEnum:()=>out,negative:()=>Yde,never:()=>Rue,nonnegative:()=>Qde,nonoptional:()=>tFe,nonpositive:()=>Zde,normalize:()=>xz,null:()=>NOe,nullable:()=>vH,nullish:()=>lut,number:()=>AOe,object:()=>Xdt,optional:()=>yH,overwrite:()=>rI,parse:()=>pOe,parseAsync:()=>fOe,partialRecord:()=>tut,pipe:()=>bH,positive:()=>Xde,prefault:()=>eFe,preprocess:()=>Tut,prettifyError:()=>RLe,promise:()=>fut,property:()=>eue,readonly:()=>sFe,record:()=>VOe,refine:()=>fFe,regex:()=>gz,regexes:()=>bx,registry:()=>Pde,safeDecode:()=>SOe,safeDecodeAsync:()=>EOe,safeEncode:()=>bOe,safeEncodeAsync:()=>TOe,safeParse:()=>mOe,safeParseAsync:()=>_Oe,set:()=>iut,setErrorMap:()=>fJt,size:()=>jO,slugify:()=>Cz,startsWith:()=>Sz,strictObject:()=>Ydt,string:()=>uue,stringFormat:()=>Ldt,stringbool:()=>but,success:()=>cut,superRefine:()=>mFe,symbol:()=>Udt,templateLiteral:()=>put,toJSONSchema:()=>iue,toLowerCase:()=>Iz,toUpperCase:()=>Dz,transform:()=>kue,treeifyError:()=>NLe,trim:()=>Az,tuple:()=>GOe,uint32:()=>Bdt,uint64:()=>jdt,ulid:()=>Sdt,undefined:()=>Hdt,union:()=>Mue,unknown:()=>KO,uppercase:()=>vz,url:()=>_dt,util:()=>jo,uuid:()=>udt,uuidv4:()=>pdt,uuidv6:()=>fdt,uuidv7:()=>mdt,void:()=>Jdt,xid:()=>Tdt,xor:()=>Qdt});var _N={};tN(_N,{$ZodAny:()=>owe,$ZodArray:()=>dwe,$ZodAsyncError:()=>nI,$ZodBase64:()=>qke,$ZodBase64URL:()=>Xke,$ZodBigInt:()=>Tde,$ZodBigIntFormat:()=>twe,$ZodBoolean:()=>cH,$ZodCIDRv4:()=>Kke,$ZodCIDRv6:()=>Jke,$ZodCUID:()=>kke,$ZodCUID2:()=>wke,$ZodCatch:()=>Cwe,$ZodCheck:()=>Rf,$ZodCheckBigIntFormat:()=>dke,$ZodCheckEndsWith:()=>Tke,$ZodCheckGreaterThan:()=>_de,$ZodCheckIncludes:()=>bke,$ZodCheckLengthEquals:()=>hke,$ZodCheckLessThan:()=>mde,$ZodCheckLowerCase:()=>yke,$ZodCheckMaxLength:()=>mke,$ZodCheckMaxSize:()=>uke,$ZodCheckMimeType:()=>xke,$ZodCheckMinLength:()=>_ke,$ZodCheckMinSize:()=>pke,$ZodCheckMultipleOf:()=>lke,$ZodCheckNumberFormat:()=>cke,$ZodCheckOverwrite:()=>Ake,$ZodCheckProperty:()=>Eke,$ZodCheckRegex:()=>gke,$ZodCheckSizeEquals:()=>fke,$ZodCheckStartsWith:()=>Ske,$ZodCheckStringFormat:()=>_z,$ZodCheckUpperCase:()=>vke,$ZodCodec:()=>uH,$ZodCustom:()=>Owe,$ZodCustomStringFormat:()=>Qke,$ZodDate:()=>cwe,$ZodDefault:()=>xwe,$ZodDiscriminatedUnion:()=>fwe,$ZodE164:()=>Yke,$ZodEmail:()=>Nke,$ZodEmoji:()=>Mke,$ZodEncodeError:()=>_L,$ZodEnum:()=>ywe,$ZodError:()=>rH,$ZodExactOptional:()=>Twe,$ZodFile:()=>bwe,$ZodFunction:()=>Lwe,$ZodGUID:()=>Cke,$ZodIPv4:()=>jke,$ZodIPv6:()=>Uke,$ZodISODate:()=>Bke,$ZodISODateTime:()=>zke,$ZodISODuration:()=>Vke,$ZodISOTime:()=>Gke,$ZodIntersection:()=>mwe,$ZodJWT:()=>Zke,$ZodKSUID:()=>Wke,$ZodLazy:()=>wwe,$ZodLiteral:()=>vwe,$ZodMAC:()=>Hke,$ZodMap:()=>hwe,$ZodNaN:()=>Pwe,$ZodNanoID:()=>Lke,$ZodNever:()=>swe,$ZodNonOptional:()=>Iwe,$ZodNull:()=>iwe,$ZodNullable:()=>Ewe,$ZodNumber:()=>Sde,$ZodNumberFormat:()=>ewe,$ZodObject:()=>lct,$ZodObjectJIT:()=>uwe,$ZodOptional:()=>xde,$ZodPipe:()=>Nwe,$ZodPrefault:()=>Awe,$ZodPromise:()=>kwe,$ZodReadonly:()=>Rwe,$ZodRealError:()=>eT,$ZodRecord:()=>_we,$ZodRegistry:()=>Cde,$ZodSet:()=>gwe,$ZodString:()=>VO,$ZodStringFormat:()=>of,$ZodSuccess:()=>Dwe,$ZodSymbol:()=>nwe,$ZodTemplateLiteral:()=>Mwe,$ZodTransform:()=>Swe,$ZodTuple:()=>Ede,$ZodType:()=>dc,$ZodULID:()=>Oke,$ZodURL:()=>Rke,$ZodUUID:()=>Pke,$ZodUndefined:()=>rwe,$ZodUnion:()=>dH,$ZodUnknown:()=>awe,$ZodVoid:()=>lwe,$ZodXID:()=>Fke,$ZodXor:()=>pwe,$brand:()=>Qce,$constructor:()=>gr,$input:()=>Wwe,$output:()=>Fwe,Doc:()=>lH,JSONSchema:()=>sdt,JSONSchemaGenerator:()=>oue,NEVER:()=>vLe,TimePrecision:()=>Vwe,_any:()=>c2e,_array:()=>h2e,_base64:()=>Kde,_base64url:()=>Jde,_bigint:()=>n2e,_boolean:()=>e2e,_catch:()=>nJt,_check:()=>adt,_cidrv4:()=>Ude,_cidrv6:()=>Hde,_coercedBigint:()=>r2e,_coercedBoolean:()=>t2e,_coercedDate:()=>m2e,_coercedNumber:()=>$we,_coercedString:()=>Bwe,_cuid:()=>Fde,_cuid2:()=>Wde,_custom:()=>y2e,_date:()=>f2e,_decode:()=>ode,_decodeAsync:()=>sde,_default:()=>QKt,_discriminatedUnion:()=>GKt,_e164:()=>$de,_email:()=>Nde,_emoji:()=>wde,_encode:()=>ide,_encodeAsync:()=>ade,_endsWith:()=>Tz,_enum:()=>JKt,_file:()=>g2e,_float32:()=>Xwe,_float64:()=>Ywe,_gt:()=>I1,_gte:()=>Hb,_guid:()=>mH,_includes:()=>bz,_int:()=>qwe,_int32:()=>Zwe,_int64:()=>i2e,_intersection:()=>VKt,_ipv4:()=>Vde,_ipv6:()=>jde,_isoDate:()=>Uwe,_isoDateTime:()=>jwe,_isoDuration:()=>Kwe,_isoTime:()=>Hwe,_jwt:()=>qde,_ksuid:()=>Gde,_lazy:()=>aJt,_length:()=>HO,_literal:()=>qKt,_lowercase:()=>yz,_lt:()=>A1,_lte:()=>LE,_mac:()=>Gwe,_map:()=>HKt,_max:()=>LE,_maxLength:()=>UO,_maxSize:()=>SL,_mime:()=>Ez,_min:()=>Hb,_minLength:()=>mN,_minSize:()=>D1,_multipleOf:()=>bL,_nan:()=>_2e,_nanoid:()=>Ode,_nativeEnum:()=>$Kt,_negative:()=>Yde,_never:()=>u2e,_nonnegative:()=>Qde,_nonoptional:()=>eJt,_nonpositive:()=>Zde,_normalize:()=>xz,_null:()=>l2e,_nullable:()=>ZKt,_number:()=>Jwe,_optional:()=>YKt,_overwrite:()=>rI,_parse:()=>uz,_parseAsync:()=>pz,_pipe:()=>rJt,_positive:()=>Xde,_promise:()=>sJt,_property:()=>eue,_readonly:()=>iJt,_record:()=>UKt,_refine:()=>v2e,_regex:()=>gz,_safeDecode:()=>cde,_safeDecodeAsync:()=>ude,_safeEncode:()=>lde,_safeEncodeAsync:()=>dde,_safeParse:()=>fz,_safeParseAsync:()=>mz,_set:()=>KKt,_size:()=>jO,_slugify:()=>Cz,_startsWith:()=>Sz,_string:()=>zwe,_stringFormat:()=>Pz,_stringbool:()=>E2e,_success:()=>tJt,_superRefine:()=>b2e,_symbol:()=>a2e,_templateLiteral:()=>oJt,_toLowerCase:()=>Iz,_toUpperCase:()=>Dz,_transform:()=>XKt,_trim:()=>Az,_tuple:()=>jKt,_uint32:()=>Qwe,_uint64:()=>o2e,_ulid:()=>zde,_undefined:()=>s2e,_union:()=>zKt,_unknown:()=>d2e,_uppercase:()=>vz,_url:()=>_H,_uuid:()=>Rde,_uuidv4:()=>Mde,_uuidv6:()=>Lde,_uuidv7:()=>kde,_void:()=>p2e,_xid:()=>Bde,_xor:()=>BKt,clone:()=>Ub,config:()=>K_,createStandardJSONSchemaMethod:()=>Nz,createToJSONSchemaMethod:()=>x2e,decode:()=>dHt,decodeAsync:()=>pHt,describe:()=>S2e,encode:()=>cHt,encodeAsync:()=>uHt,extractDefs:()=>EL,finalize:()=>xL,flattenError:()=>iH,formatError:()=>oH,globalConfig:()=>XU,globalRegistry:()=>Jy,initializeContext:()=>TL,isValidBase64:()=>$ke,isValidBase64URL:()=>ict,isValidJWT:()=>oct,locales:()=>fH,meta:()=>T2e,parse:()=>nde,parseAsync:()=>rde,prettifyError:()=>RLe,process:()=>Tp,regexes:()=>bx,registry:()=>Pde,safeDecode:()=>mHt,safeDecodeAsync:()=>hHt,safeEncode:()=>fHt,safeEncodeAsync:()=>_Ht,safeParse:()=>MLe,safeParseAsync:()=>LLe,toDotPath:()=>Blt,toJSONSchema:()=>iue,treeifyError:()=>NLe,util:()=>jo,version:()=>Ike});var vLe=Object.freeze({status:"aborted"});function gr(d,i,s){function m(k,J){if(k._zod||Object.defineProperty(k,"_zod",{value:{def:J,constr:A,traits:new Set},enumerable:!1}),k._zod.traits.has(d))return;k._zod.traits.add(d),i(k,J);let ce=A.prototype,_e=Object.keys(ce);for(let Me=0;Me<_e.length;Me++){let se=_e[Me];se in k||(k[se]=ce[se].bind(k))}}let u=s?.Parent??Object;class y extends u{}Object.defineProperty(y,"name",{value:d});function A(k){var J;let ce=s?.Parent?new y:this;m(ce,k),(J=ce._zod).deferred??(J.deferred=[]);for(let _e of ce._zod.deferred)_e();return ce}return Object.defineProperty(A,"init",{value:m}),Object.defineProperty(A,Symbol.hasInstance,{value:k=>s?.Parent&&k instanceof s.Parent?!0:k?._zod?.traits?.has(d)}),Object.defineProperty(A,"name",{value:d}),A}var Qce=Symbol("zod_brand"),nI=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},_L=class extends Error{constructor(i){super(`Encountered unidirectional transform during encode: ${i}`),this.name="ZodEncodeError"}},XU={};function K_(d){return d&&Object.assign(XU,d),XU}var jo={};tN(jo,{BIGINT_FORMAT_RANGES:()=>PLe,Class:()=>SLe,NUMBER_FORMAT_RANGES:()=>CLe,aborted:()=>vL,allowsEval:()=>xLe,assert:()=>GUt,assertEqual:()=>FUt,assertIs:()=>zUt,assertNever:()=>BUt,assertNotEqual:()=>WUt,assignProp:()=>gL,base64ToUint8Array:()=>Flt,base64urlToUint8Array:()=>iHt,cached:()=>cz,captureStackTrace:()=>tde,cleanEnum:()=>rHt,cleanRegex:()=>QU,clone:()=>Ub,cloneDef:()=>jUt,createTransparentProxy:()=>qUt,defineLazy:()=>cd,esc:()=>ede,escapeRegex:()=>vx,extend:()=>ZUt,finalizeIssue:()=>QS,floatSafeRemainder:()=>TLe,getElementAtPath:()=>UUt,getEnumValues:()=>ZU,getLengthableOrigin:()=>nH,getParsedType:()=>$Ut,getSizableOrigin:()=>tH,hexToUint8Array:()=>aHt,isObject:()=>BO,isPlainObject:()=>yL,issue:()=>dz,joinValues:()=>mi,jsonStringifyReplacer:()=>lz,merge:()=>eHt,mergeDefs:()=>fN,normalizeParams:()=>ra,nullish:()=>hL,numKeys:()=>JUt,objectClone:()=>VUt,omit:()=>YUt,optionalKeys:()=>DLe,parsedType:()=>Vo,partial:()=>tHt,pick:()=>XUt,prefixIssues:()=>ME,primitiveTypes:()=>ILe,promiseAllObject:()=>HUt,propertyKeyTypes:()=>eH,randomString:()=>KUt,required:()=>nHt,safeExtend:()=>QUt,shallowClone:()=>ALe,slugify:()=>ELe,stringifyPrimitive:()=>ko,uint8ArrayToBase64:()=>Wlt,uint8ArrayToBase64url:()=>oHt,uint8ArrayToHex:()=>sHt,unwrapMessage:()=>YU});function FUt(d){return d}function WUt(d){return d}function zUt(d){}function BUt(d){throw new Error("Unexpected value in exhaustive check")}function GUt(d){}function ZU(d){let i=Object.values(d).filter(m=>typeof m=="number");return Object.entries(d).filter(([m,u])=>i.indexOf(+m)===-1).map(([m,u])=>u)}function mi(d,i="|"){return d.map(s=>ko(s)).join(i)}function lz(d,i){return typeof i=="bigint"?i.toString():i}function cz(d){return{get value(){{let s=d();return Object.defineProperty(this,"value",{value:s}),s}throw new Error("cached value already set")}}}function hL(d){return d==null}function QU(d){let i=d.startsWith("^")?1:0,s=d.endsWith("$")?d.length-1:d.length;return d.slice(i,s)}function TLe(d,i){let s=(d.toString().split(".")[1]||"").length,m=i.toString(),u=(m.split(".")[1]||"").length;if(u===0&&/\d?e-\d?/.test(m)){let J=m.match(/\d?e-(\d?)/);J?.[1]&&(u=Number.parseInt(J[1]))}let y=s>u?s:u,A=Number.parseInt(d.toFixed(y).replace(".","")),k=Number.parseInt(i.toFixed(y).replace(".",""));return A%k/10**y}var Olt=Symbol("evaluating");function cd(d,i,s){let m;Object.defineProperty(d,i,{get(){if(m!==Olt)return m===void 0&&(m=Olt,m=s()),m},set(u){Object.defineProperty(d,i,{value:u})},configurable:!0})}function VUt(d){return Object.create(Object.getPrototypeOf(d),Object.getOwnPropertyDescriptors(d))}function gL(d,i,s){Object.defineProperty(d,i,{value:s,writable:!0,enumerable:!0,configurable:!0})}function fN(...d){let i={};for(let s of d){let m=Object.getOwnPropertyDescriptors(s);Object.assign(i,m)}return Object.defineProperties({},i)}function jUt(d){return fN(d._zod.def)}function UUt(d,i){return i?i.reduce((s,m)=>s?.[m],d):d}function HUt(d){let i=Object.keys(d),s=i.map(m=>d[m]);return Promise.all(s).then(m=>{let u={};for(let y=0;y<i.length;y++)u[i[y]]=m[y];return u})}function KUt(d=10){let i="abcdefghijklmnopqrstuvwxyz",s="";for(let m=0;m<d;m++)s+=i[Math.floor(Math.random()*i.length)];return s}function ede(d){return JSON.stringify(d)}function ELe(d){return d.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var tde="captureStackTrace"in Error?Error.captureStackTrace:(...d)=>{};function BO(d){return typeof d=="object"&&d!==null&&!Array.isArray(d)}var xLe=cz(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let d=Function;return new d(""),!0}catch{return!1}});function yL(d){if(BO(d)===!1)return!1;let i=d.constructor;if(i===void 0||typeof i!="function")return!0;let s=i.prototype;return!(BO(s)===!1||Object.prototype.hasOwnProperty.call(s,"isPrototypeOf")===!1)}function ALe(d){return yL(d)?{...d}:Array.isArray(d)?[...d]:d}function JUt(d){let i=0;for(let s in d)Object.prototype.hasOwnProperty.call(d,s)&&i++;return i}var $Ut=d=>{let i=typeof d;switch(i){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(d)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(d)?"array":d===null?"null":d.then&&typeof d.then=="function"&&d.catch&&typeof d.catch=="function"?"promise":typeof Map<"u"&&d instanceof Map?"map":typeof Set<"u"&&d instanceof Set?"set":typeof Date<"u"&&d instanceof Date?"date":typeof File<"u"&&d instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${i}`)}},eH=new Set(["string","number","symbol"]),ILe=new Set(["string","number","bigint","boolean","symbol","undefined"]);function vx(d){return d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ub(d,i,s){let m=new d._zod.constr(i??d._zod.def);return(!i||s?.parent)&&(m._zod.parent=d),m}function ra(d){let i=d;if(!i)return{};if(typeof i=="string")return{error:()=>i};if(i?.message!==void 0){if(i?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");i.error=i.message}return delete i.message,typeof i.error=="string"?{...i,error:()=>i.error}:i}function qUt(d){let i;return new Proxy({},{get(s,m,u){return i??(i=d()),Reflect.get(i,m,u)},set(s,m,u,y){return i??(i=d()),Reflect.set(i,m,u,y)},has(s,m){return i??(i=d()),Reflect.has(i,m)},deleteProperty(s,m){return i??(i=d()),Reflect.deleteProperty(i,m)},ownKeys(s){return i??(i=d()),Reflect.ownKeys(i)},getOwnPropertyDescriptor(s,m){return i??(i=d()),Reflect.getOwnPropertyDescriptor(i,m)},defineProperty(s,m,u){return i??(i=d()),Reflect.defineProperty(i,m,u)}})}function ko(d){return typeof d=="bigint"?d.toString()+"n":typeof d=="string"?`"${d}"`:`${d}`}function DLe(d){return Object.keys(d).filter(i=>d[i]._zod.optin==="optional"&&d[i]._zod.optout==="optional")}var CLe={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},PLe={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function XUt(d,i){let s=d._zod.def,m=s.checks;if(m&&m.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let y=fN(d._zod.def,{get shape(){let A={};for(let k in i){if(!(k in s.shape))throw new Error(`Unrecognized key: "${k}"`);i[k]&&(A[k]=s.shape[k])}return gL(this,"shape",A),A},checks:[]});return Ub(d,y)}function YUt(d,i){let s=d._zod.def,m=s.checks;if(m&&m.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let y=fN(d._zod.def,{get shape(){let A={...d._zod.def.shape};for(let k in i){if(!(k in s.shape))throw new Error(`Unrecognized key: "${k}"`);i[k]&&delete A[k]}return gL(this,"shape",A),A},checks:[]});return Ub(d,y)}function ZUt(d,i){if(!yL(i))throw new Error("Invalid input to extend: expected a plain object");let s=d._zod.def.checks;if(s&&s.length>0){let y=d._zod.def.shape;for(let A in i)if(Object.getOwnPropertyDescriptor(y,A)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let u=fN(d._zod.def,{get shape(){let y={...d._zod.def.shape,...i};return gL(this,"shape",y),y}});return Ub(d,u)}function QUt(d,i){if(!yL(i))throw new Error("Invalid input to safeExtend: expected a plain object");let s=fN(d._zod.def,{get shape(){let m={...d._zod.def.shape,...i};return gL(this,"shape",m),m}});return Ub(d,s)}function eHt(d,i){let s=fN(d._zod.def,{get shape(){let m={...d._zod.def.shape,...i._zod.def.shape};return gL(this,"shape",m),m},get catchall(){return i._zod.def.catchall},checks:[]});return Ub(d,s)}function tHt(d,i,s){let u=i._zod.def.checks;if(u&&u.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let A=fN(i._zod.def,{get shape(){let k=i._zod.def.shape,J={...k};if(s)for(let ce in s){if(!(ce in k))throw new Error(`Unrecognized key: "${ce}"`);s[ce]&&(J[ce]=d?new d({type:"optional",innerType:k[ce]}):k[ce])}else for(let ce in k)J[ce]=d?new d({type:"optional",innerType:k[ce]}):k[ce];return gL(this,"shape",J),J},checks:[]});return Ub(i,A)}function nHt(d,i,s){let m=fN(i._zod.def,{get shape(){let u=i._zod.def.shape,y={...u};if(s)for(let A in s){if(!(A in y))throw new Error(`Unrecognized key: "${A}"`);s[A]&&(y[A]=new d({type:"nonoptional",innerType:u[A]}))}else for(let A in u)y[A]=new d({type:"nonoptional",innerType:u[A]});return gL(this,"shape",y),y}});return Ub(i,m)}function vL(d,i=0){if(d.aborted===!0)return!0;for(let s=i;s<d.issues.length;s++)if(d.issues[s]?.continue!==!0)return!0;return!1}function ME(d,i){return i.map(s=>{var m;return(m=s).path??(m.path=[]),s.path.unshift(d),s})}function YU(d){return typeof d=="string"?d:d?.message}function QS(d,i,s){let m={...d,path:d.path??[]};if(!d.message){let u=YU(d.inst?._zod.def?.error?.(d))??YU(i?.error?.(d))??YU(s.customError?.(d))??YU(s.localeError?.(d))??"Invalid input";m.message=u}return delete m.inst,delete m.continue,i?.reportInput||delete m.input,m}function tH(d){return d instanceof Set?"set":d instanceof Map?"map":d instanceof File?"file":"unknown"}function nH(d){return Array.isArray(d)?"array":typeof d=="string"?"string":"unknown"}function Vo(d){let i=typeof d;switch(i){case"number":return Number.isNaN(d)?"nan":"number";case"object":{if(d===null)return"null";if(Array.isArray(d))return"array";let s=d;if(s&&Object.getPrototypeOf(s)!==Object.prototype&&"constructor"in s&&s.constructor)return s.constructor.name}}return i}function dz(...d){let[i,s,m]=d;return typeof i=="string"?{message:i,code:"custom",input:s,inst:m}:{...i}}function rHt(d){return Object.entries(d).filter(([i,s])=>Number.isNaN(Number.parseInt(i,10))).map(i=>i[1])}function Flt(d){let i=atob(d),s=new Uint8Array(i.length);for(let m=0;m<i.length;m++)s[m]=i.charCodeAt(m);return s}function Wlt(d){let i="";for(let s=0;s<d.length;s++)i+=String.fromCharCode(d[s]);return btoa(i)}function iHt(d){let i=d.replace(/-/g,"+").replace(/_/g,"/"),s="=".repeat((4-i.length%4)%4);return Flt(i+s)}function oHt(d){return Wlt(d).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function aHt(d){let i=d.replace(/^0x/,"");if(i.length%2!==0)throw new Error("Invalid hex string length");let s=new Uint8Array(i.length/2);for(let m=0;m<i.length;m+=2)s[m/2]=Number.parseInt(i.slice(m,m+2),16);return s}function sHt(d){return Array.from(d).map(i=>i.toString(16).padStart(2,"0")).join("")}var SLe=class{constructor(...i){}};var zlt=(d,i)=>{d.name="$ZodError",Object.defineProperty(d,"_zod",{value:d._zod,enumerable:!1}),Object.defineProperty(d,"issues",{value:i,enumerable:!1}),d.message=JSON.stringify(i,lz,2),Object.defineProperty(d,"toString",{value:()=>d.message,enumerable:!1})},rH=gr("$ZodError",zlt),eT=gr("$ZodError",zlt,{Parent:Error});function iH(d,i=s=>s.message){let s={},m=[];for(let u of d.issues)u.path.length>0?(s[u.path[0]]=s[u.path[0]]||[],s[u.path[0]].push(i(u))):m.push(i(u));return{formErrors:m,fieldErrors:s}}function oH(d,i=s=>s.message){let s={_errors:[]},m=u=>{for(let y of u.issues)if(y.code==="invalid_union"&&y.errors.length)y.errors.map(A=>m({issues:A}));else if(y.code==="invalid_key")m({issues:y.issues});else if(y.code==="invalid_element")m({issues:y.issues});else if(y.path.length===0)s._errors.push(i(y));else{let A=s,k=0;for(;k<y.path.length;){let J=y.path[k];k===y.path.length-1?(A[J]=A[J]||{_errors:[]},A[J]._errors.push(i(y))):A[J]=A[J]||{_errors:[]},A=A[J],k++}}};return m(d),s}function NLe(d,i=s=>s.message){let s={errors:[]},m=(u,y=[])=>{var A,k;for(let J of u.issues)if(J.code==="invalid_union"&&J.errors.length)J.errors.map(ce=>m({issues:ce},J.path));else if(J.code==="invalid_key")m({issues:J.issues},J.path);else if(J.code==="invalid_element")m({issues:J.issues},J.path);else{let ce=[...y,...J.path];if(ce.length===0){s.errors.push(i(J));continue}let _e=s,Me=0;for(;Me<ce.length;){let se=ce[Me],ft=Me===ce.length-1;typeof se=="string"?(_e.properties??(_e.properties={}),(A=_e.properties)[se]??(A[se]={errors:[]}),_e=_e.properties[se]):(_e.items??(_e.items=[]),(k=_e.items)[se]??(k[se]={errors:[]}),_e=_e.items[se]),ft&&_e.errors.push(i(J)),Me++}}};return m(d),s}function Blt(d){let i=[],s=d.map(m=>typeof m=="object"?m.key:m);for(let m of s)typeof m=="number"?i.push(`[${m}]`):typeof m=="symbol"?i.push(`[${JSON.stringify(String(m))}]`):/[^\w$]/.test(m)?i.push(`[${JSON.stringify(m)}]`):(i.length&&i.push("."),i.push(m));return i.join("")}function RLe(d){let i=[],s=[...d.issues].sort((m,u)=>(m.path??[]).length-(u.path??[]).length);for(let m of s)i.push(`\u2716 ${m.message}`),m.path?.length&&i.push(` \u2192 at ${Blt(m.path)}`);return i.join(`
|
|
42162
42162
|
`)}var uz=d=>(i,s,m,u)=>{let y=m?Object.assign(m,{async:!1}):{async:!1},A=i._zod.run({value:s,issues:[]},y);if(A instanceof Promise)throw new nI;if(A.issues.length){let k=new(u?.Err??d)(A.issues.map(J=>QS(J,y,K_())));throw tde(k,u?.callee),k}return A.value},nde=uz(eT),pz=d=>async(i,s,m,u)=>{let y=m?Object.assign(m,{async:!0}):{async:!0},A=i._zod.run({value:s,issues:[]},y);if(A instanceof Promise&&(A=await A),A.issues.length){let k=new(u?.Err??d)(A.issues.map(J=>QS(J,y,K_())));throw tde(k,u?.callee),k}return A.value},rde=pz(eT),fz=d=>(i,s,m)=>{let u=m?{...m,async:!1}:{async:!1},y=i._zod.run({value:s,issues:[]},u);if(y instanceof Promise)throw new nI;return y.issues.length?{success:!1,error:new(d??rH)(y.issues.map(A=>QS(A,u,K_())))}:{success:!0,data:y.value}},MLe=fz(eT),mz=d=>async(i,s,m)=>{let u=m?Object.assign(m,{async:!0}):{async:!0},y=i._zod.run({value:s,issues:[]},u);return y instanceof Promise&&(y=await y),y.issues.length?{success:!1,error:new d(y.issues.map(A=>QS(A,u,K_())))}:{success:!0,data:y.value}},LLe=mz(eT),ide=d=>(i,s,m)=>{let u=m?Object.assign(m,{direction:"backward"}):{direction:"backward"};return uz(d)(i,s,u)},cHt=ide(eT),ode=d=>(i,s,m)=>uz(d)(i,s,m),dHt=ode(eT),ade=d=>async(i,s,m)=>{let u=m?Object.assign(m,{direction:"backward"}):{direction:"backward"};return pz(d)(i,s,u)},uHt=ade(eT),sde=d=>async(i,s,m)=>pz(d)(i,s,m),pHt=sde(eT),lde=d=>(i,s,m)=>{let u=m?Object.assign(m,{direction:"backward"}):{direction:"backward"};return fz(d)(i,s,u)},fHt=lde(eT),cde=d=>(i,s,m)=>fz(d)(i,s,m),mHt=cde(eT),dde=d=>async(i,s,m)=>{let u=m?Object.assign(m,{direction:"backward"}):{direction:"backward"};return mz(d)(i,s,u)},_Ht=dde(eT),ude=d=>async(i,s,m)=>mz(d)(i,s,m),hHt=ude(eT);var bx={};tN(bx,{base64:()=>qLe,base64url:()=>pde,bigint:()=>tke,boolean:()=>rke,browserEmail:()=>xHt,cidrv4:()=>JLe,cidrv6:()=>$Le,cuid:()=>kLe,cuid2:()=>wLe,date:()=>YLe,datetime:()=>QLe,domain:()=>DHt,duration:()=>BLe,e164:()=>XLe,email:()=>VLe,emoji:()=>jLe,extendedDuration:()=>gHt,guid:()=>GLe,hex:()=>CHt,hostname:()=>IHt,html5Email:()=>SHt,idnEmail:()=>EHt,integer:()=>nke,ipv4:()=>ULe,ipv6:()=>HLe,ksuid:()=>WLe,lowercase:()=>ake,mac:()=>KLe,md5_base64:()=>NHt,md5_base64url:()=>RHt,md5_hex:()=>PHt,nanoid:()=>zLe,null:()=>ike,number:()=>fde,rfc5322Email:()=>THt,sha1_base64:()=>LHt,sha1_base64url:()=>kHt,sha1_hex:()=>MHt,sha256_base64:()=>OHt,sha256_base64url:()=>FHt,sha256_hex:()=>wHt,sha384_base64:()=>zHt,sha384_base64url:()=>BHt,sha384_hex:()=>WHt,sha512_base64:()=>VHt,sha512_base64url:()=>jHt,sha512_hex:()=>GHt,string:()=>eke,time:()=>ZLe,ulid:()=>OLe,undefined:()=>oke,unicodeEmail:()=>Glt,uppercase:()=>ske,uuid:()=>GO,uuid4:()=>yHt,uuid6:()=>vHt,uuid7:()=>bHt,xid:()=>FLe});var kLe=/^[cC][^\s-]{8,}$/,wLe=/^[0-9a-z]+$/,OLe=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,FLe=/^[0-9a-vA-V]{20}$/,WLe=/^[A-Za-z0-9]{27}$/,zLe=/^[a-zA-Z0-9_-]{21}$/,BLe=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,gHt=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,GLe=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,GO=d=>d?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${d}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,yHt=GO(4),vHt=GO(6),bHt=GO(7),VLe=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,SHt=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,THt=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,Glt=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,EHt=Glt,xHt=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,AHt="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function jLe(){return new RegExp(AHt,"u")}var ULe=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,HLe=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,KLe=d=>{let i=vx(d??":");return new RegExp(`^(?:[0-9A-F]{2}${i}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${i}){5}[0-9a-f]{2}$`)},JLe=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,$Le=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,qLe=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,pde=/^[A-Za-z0-9_-]*$/,IHt=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,DHt=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,XLe=/^\+[1-9]\d{6,14}$/,Vlt="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",YLe=new RegExp(`^${Vlt}$`);function jlt(d){let i="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof d.precision=="number"?d.precision===-1?`${i}`:d.precision===0?`${i}:[0-5]\\d`:`${i}:[0-5]\\d\\.\\d{${d.precision}}`:`${i}(?::[0-5]\\d(?:\\.\\d+)?)?`}function ZLe(d){return new RegExp(`^${jlt(d)}$`)}function QLe(d){let i=jlt({precision:d.precision}),s=["Z"];d.local&&s.push(""),d.offset&&s.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let m=`${i}(?:${s.join("|")})`;return new RegExp(`^${Vlt}T(?:${m})$`)}var eke=d=>{let i=d?`[\\s\\S]{${d?.minimum??0},${d?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${i}$`)},tke=/^-?\d+n?$/,nke=/^-?\d+$/,fde=/^-?\d+(?:\.\d+)?$/,rke=/^(?:true|false)$/i,ike=/^null$/i;var oke=/^undefined$/i;var ake=/^[^A-Z]*$/,ske=/^[^a-z]*$/,CHt=/^[0-9a-fA-F]*$/;function aH(d,i){return new RegExp(`^[A-Za-z0-9+/]{${d}}${i}$`)}function sH(d){return new RegExp(`^[A-Za-z0-9_-]{${d}}$`)}var PHt=/^[0-9a-fA-F]{32}$/,NHt=aH(22,"=="),RHt=sH(22),MHt=/^[0-9a-fA-F]{40}$/,LHt=aH(27,"="),kHt=sH(27),wHt=/^[0-9a-fA-F]{64}$/,OHt=aH(43,"="),FHt=sH(43),WHt=/^[0-9a-fA-F]{96}$/,zHt=aH(64,""),BHt=sH(64),GHt=/^[0-9a-fA-F]{128}$/,VHt=aH(86,"=="),jHt=sH(86);var Rf=gr("$ZodCheck",(d,i)=>{var s;d._zod??(d._zod={}),d._zod.def=i,(s=d._zod).onattach??(s.onattach=[])}),Hlt={number:"number",bigint:"bigint",object:"date"},mde=gr("$ZodCheckLessThan",(d,i)=>{Rf.init(d,i);let s=Hlt[typeof i.value];d._zod.onattach.push(m=>{let u=m._zod.bag,y=(i.inclusive?u.maximum:u.exclusiveMaximum)??Number.POSITIVE_INFINITY;i.value<y&&(i.inclusive?u.maximum=i.value:u.exclusiveMaximum=i.value)}),d._zod.check=m=>{(i.inclusive?m.value<=i.value:m.value<i.value)||m.issues.push({origin:s,code:"too_big",maximum:typeof i.value=="object"?i.value.getTime():i.value,input:m.value,inclusive:i.inclusive,inst:d,continue:!i.abort})}}),_de=gr("$ZodCheckGreaterThan",(d,i)=>{Rf.init(d,i);let s=Hlt[typeof i.value];d._zod.onattach.push(m=>{let u=m._zod.bag,y=(i.inclusive?u.minimum:u.exclusiveMinimum)??Number.NEGATIVE_INFINITY;i.value>y&&(i.inclusive?u.minimum=i.value:u.exclusiveMinimum=i.value)}),d._zod.check=m=>{(i.inclusive?m.value>=i.value:m.value>i.value)||m.issues.push({origin:s,code:"too_small",minimum:typeof i.value=="object"?i.value.getTime():i.value,input:m.value,inclusive:i.inclusive,inst:d,continue:!i.abort})}}),lke=gr("$ZodCheckMultipleOf",(d,i)=>{Rf.init(d,i),d._zod.onattach.push(s=>{var m;(m=s._zod.bag).multipleOf??(m.multipleOf=i.value)}),d._zod.check=s=>{if(typeof s.value!=typeof i.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof s.value=="bigint"?s.value%i.value===BigInt(0):TLe(s.value,i.value)===0)||s.issues.push({origin:typeof s.value,code:"not_multiple_of",divisor:i.value,input:s.value,inst:d,continue:!i.abort})}}),cke=gr("$ZodCheckNumberFormat",(d,i)=>{Rf.init(d,i),i.format=i.format||"float64";let s=i.format?.includes("int"),m=s?"int":"number",[u,y]=CLe[i.format];d._zod.onattach.push(A=>{let k=A._zod.bag;k.format=i.format,k.minimum=u,k.maximum=y,s&&(k.pattern=nke)}),d._zod.check=A=>{let k=A.value;if(s){if(!Number.isInteger(k)){A.issues.push({expected:m,format:i.format,code:"invalid_type",continue:!1,input:k,inst:d});return}if(!Number.isSafeInteger(k)){k>0?A.issues.push({input:k,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:d,origin:m,inclusive:!0,continue:!i.abort}):A.issues.push({input:k,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:d,origin:m,inclusive:!0,continue:!i.abort});return}}k<u&&A.issues.push({origin:"number",input:k,code:"too_small",minimum:u,inclusive:!0,inst:d,continue:!i.abort}),k>y&&A.issues.push({origin:"number",input:k,code:"too_big",maximum:y,inclusive:!0,inst:d,continue:!i.abort})}}),dke=gr("$ZodCheckBigIntFormat",(d,i)=>{Rf.init(d,i);let[s,m]=PLe[i.format];d._zod.onattach.push(u=>{let y=u._zod.bag;y.format=i.format,y.minimum=s,y.maximum=m}),d._zod.check=u=>{let y=u.value;y<s&&u.issues.push({origin:"bigint",input:y,code:"too_small",minimum:s,inclusive:!0,inst:d,continue:!i.abort}),y>m&&u.issues.push({origin:"bigint",input:y,code:"too_big",maximum:m,inclusive:!0,inst:d,continue:!i.abort})}}),uke=gr("$ZodCheckMaxSize",(d,i)=>{var s;Rf.init(d,i),(s=d._zod.def).when??(s.when=m=>{let u=m.value;return!hL(u)&&u.size!==void 0}),d._zod.onattach.push(m=>{let u=m._zod.bag.maximum??Number.POSITIVE_INFINITY;i.maximum<u&&(m._zod.bag.maximum=i.maximum)}),d._zod.check=m=>{let u=m.value;u.size<=i.maximum||m.issues.push({origin:tH(u),code:"too_big",maximum:i.maximum,inclusive:!0,input:u,inst:d,continue:!i.abort})}}),pke=gr("$ZodCheckMinSize",(d,i)=>{var s;Rf.init(d,i),(s=d._zod.def).when??(s.when=m=>{let u=m.value;return!hL(u)&&u.size!==void 0}),d._zod.onattach.push(m=>{let u=m._zod.bag.minimum??Number.NEGATIVE_INFINITY;i.minimum>u&&(m._zod.bag.minimum=i.minimum)}),d._zod.check=m=>{let u=m.value;u.size>=i.minimum||m.issues.push({origin:tH(u),code:"too_small",minimum:i.minimum,inclusive:!0,input:u,inst:d,continue:!i.abort})}}),fke=gr("$ZodCheckSizeEquals",(d,i)=>{var s;Rf.init(d,i),(s=d._zod.def).when??(s.when=m=>{let u=m.value;return!hL(u)&&u.size!==void 0}),d._zod.onattach.push(m=>{let u=m._zod.bag;u.minimum=i.size,u.maximum=i.size,u.size=i.size}),d._zod.check=m=>{let u=m.value,y=u.size;if(y===i.size)return;let A=y>i.size;m.issues.push({origin:tH(u),...A?{code:"too_big",maximum:i.size}:{code:"too_small",minimum:i.size},inclusive:!0,exact:!0,input:m.value,inst:d,continue:!i.abort})}}),mke=gr("$ZodCheckMaxLength",(d,i)=>{var s;Rf.init(d,i),(s=d._zod.def).when??(s.when=m=>{let u=m.value;return!hL(u)&&u.length!==void 0}),d._zod.onattach.push(m=>{let u=m._zod.bag.maximum??Number.POSITIVE_INFINITY;i.maximum<u&&(m._zod.bag.maximum=i.maximum)}),d._zod.check=m=>{let u=m.value;if(u.length<=i.maximum)return;let A=nH(u);m.issues.push({origin:A,code:"too_big",maximum:i.maximum,inclusive:!0,input:u,inst:d,continue:!i.abort})}}),_ke=gr("$ZodCheckMinLength",(d,i)=>{var s;Rf.init(d,i),(s=d._zod.def).when??(s.when=m=>{let u=m.value;return!hL(u)&&u.length!==void 0}),d._zod.onattach.push(m=>{let u=m._zod.bag.minimum??Number.NEGATIVE_INFINITY;i.minimum>u&&(m._zod.bag.minimum=i.minimum)}),d._zod.check=m=>{let u=m.value;if(u.length>=i.minimum)return;let A=nH(u);m.issues.push({origin:A,code:"too_small",minimum:i.minimum,inclusive:!0,input:u,inst:d,continue:!i.abort})}}),hke=gr("$ZodCheckLengthEquals",(d,i)=>{var s;Rf.init(d,i),(s=d._zod.def).when??(s.when=m=>{let u=m.value;return!hL(u)&&u.length!==void 0}),d._zod.onattach.push(m=>{let u=m._zod.bag;u.minimum=i.length,u.maximum=i.length,u.length=i.length}),d._zod.check=m=>{let u=m.value,y=u.length;if(y===i.length)return;let A=nH(u),k=y>i.length;m.issues.push({origin:A,...k?{code:"too_big",maximum:i.length}:{code:"too_small",minimum:i.length},inclusive:!0,exact:!0,input:m.value,inst:d,continue:!i.abort})}}),_z=gr("$ZodCheckStringFormat",(d,i)=>{var s,m;Rf.init(d,i),d._zod.onattach.push(u=>{let y=u._zod.bag;y.format=i.format,i.pattern&&(y.patterns??(y.patterns=new Set),y.patterns.add(i.pattern))}),i.pattern?(s=d._zod).check??(s.check=u=>{i.pattern.lastIndex=0,!i.pattern.test(u.value)&&u.issues.push({origin:"string",code:"invalid_format",format:i.format,input:u.value,...i.pattern?{pattern:i.pattern.toString()}:{},inst:d,continue:!i.abort})}):(m=d._zod).check??(m.check=()=>{})}),gke=gr("$ZodCheckRegex",(d,i)=>{_z.init(d,i),d._zod.check=s=>{i.pattern.lastIndex=0,!i.pattern.test(s.value)&&s.issues.push({origin:"string",code:"invalid_format",format:"regex",input:s.value,pattern:i.pattern.toString(),inst:d,continue:!i.abort})}}),yke=gr("$ZodCheckLowerCase",(d,i)=>{i.pattern??(i.pattern=ake),_z.init(d,i)}),vke=gr("$ZodCheckUpperCase",(d,i)=>{i.pattern??(i.pattern=ske),_z.init(d,i)}),bke=gr("$ZodCheckIncludes",(d,i)=>{Rf.init(d,i);let s=vx(i.includes),m=new RegExp(typeof i.position=="number"?`^.{${i.position}}${s}`:s);i.pattern=m,d._zod.onattach.push(u=>{let y=u._zod.bag;y.patterns??(y.patterns=new Set),y.patterns.add(m)}),d._zod.check=u=>{u.value.includes(i.includes,i.position)||u.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:i.includes,input:u.value,inst:d,continue:!i.abort})}}),Ske=gr("$ZodCheckStartsWith",(d,i)=>{Rf.init(d,i);let s=new RegExp(`^${vx(i.prefix)}.*`);i.pattern??(i.pattern=s),d._zod.onattach.push(m=>{let u=m._zod.bag;u.patterns??(u.patterns=new Set),u.patterns.add(s)}),d._zod.check=m=>{m.value.startsWith(i.prefix)||m.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:i.prefix,input:m.value,inst:d,continue:!i.abort})}}),Tke=gr("$ZodCheckEndsWith",(d,i)=>{Rf.init(d,i);let s=new RegExp(`.*${vx(i.suffix)}$`);i.pattern??(i.pattern=s),d._zod.onattach.push(m=>{let u=m._zod.bag;u.patterns??(u.patterns=new Set),u.patterns.add(s)}),d._zod.check=m=>{m.value.endsWith(i.suffix)||m.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:i.suffix,input:m.value,inst:d,continue:!i.abort})}});function Ult(d,i,s){d.issues.length&&i.issues.push(...ME(s,d.issues))}var Eke=gr("$ZodCheckProperty",(d,i)=>{Rf.init(d,i),d._zod.check=s=>{let m=i.schema._zod.run({value:s.value[i.property],issues:[]},{});if(m instanceof Promise)return m.then(u=>Ult(u,s,i.property));Ult(m,s,i.property)}}),xke=gr("$ZodCheckMimeType",(d,i)=>{Rf.init(d,i);let s=new Set(i.mime);d._zod.onattach.push(m=>{m._zod.bag.mime=i.mime}),d._zod.check=m=>{s.has(m.value.type)||m.issues.push({code:"invalid_value",values:i.mime,input:m.value.type,inst:d,continue:!i.abort})}}),Ake=gr("$ZodCheckOverwrite",(d,i)=>{Rf.init(d,i),d._zod.check=s=>{s.value=i.tx(s.value)}});var lH=class{constructor(i=[]){this.content=[],this.indent=0,this&&(this.args=i)}indented(i){this.indent+=1,i(this),this.indent-=1}write(i){if(typeof i=="function"){i(this,{execution:"sync"}),i(this,{execution:"async"});return}let m=i.split(`
|
|
42163
42163
|
`).filter(A=>A),u=Math.min(...m.map(A=>A.length-A.trimStart().length)),y=m.map(A=>A.slice(u)).map(A=>" ".repeat(this.indent*2)+A);for(let A of y)this.content.push(A)}compile(){let i=Function,s=this?.args,u=[...(this?.content??[""]).map(y=>` ${y}`)];return new i(...s,u.join(`
|
|
42164
42164
|
`))}};var Ike={major:4,minor:3,patch:6};var dc=gr("$ZodType",(d,i)=>{var s;d??(d={}),d._zod.def=i,d._zod.bag=d._zod.bag||{},d._zod.version=Ike;let m=[...d._zod.def.checks??[]];d._zod.traits.has("$ZodCheck")&&m.unshift(d);for(let u of m)for(let y of u._zod.onattach)y(d);if(m.length===0)(s=d._zod).deferred??(s.deferred=[]),d._zod.deferred?.push(()=>{d._zod.run=d._zod.parse});else{let u=(A,k,J)=>{let ce=vL(A),_e;for(let Me of k){if(Me._zod.def.when){if(!Me._zod.def.when(A))continue}else if(ce)continue;let se=A.issues.length,ft=Me._zod.check(A);if(ft instanceof Promise&&J?.async===!1)throw new nI;if(_e||ft instanceof Promise)_e=(_e??Promise.resolve()).then(async()=>{await ft,A.issues.length!==se&&(ce||(ce=vL(A,se)))});else{if(A.issues.length===se)continue;ce||(ce=vL(A,se))}}return _e?_e.then(()=>A):A},y=(A,k,J)=>{if(vL(A))return A.aborted=!0,A;let ce=u(k,m,J);if(ce instanceof Promise){if(J.async===!1)throw new nI;return ce.then(_e=>d._zod.parse(_e,J))}return d._zod.parse(ce,J)};d._zod.run=(A,k)=>{if(k.skipChecks)return d._zod.parse(A,k);if(k.direction==="backward"){let ce=d._zod.parse({value:A.value,issues:[]},{...k,skipChecks:!0});return ce instanceof Promise?ce.then(_e=>y(_e,A,k)):y(ce,A,k)}let J=d._zod.parse(A,k);if(J instanceof Promise){if(k.async===!1)throw new nI;return J.then(ce=>u(ce,m,k))}return u(J,m,k)}}cd(d,"~standard",()=>({validate:u=>{try{let y=MLe(d,u);return y.success?{value:y.data}:{issues:y.error?.issues}}catch{return LLe(d,u).then(A=>A.success?{value:A.data}:{issues:A.error?.issues})}},vendor:"zod",version:1}))}),VO=gr("$ZodString",(d,i)=>{dc.init(d,i),d._zod.pattern=[...d?._zod.bag?.patterns??[]].pop()??eke(d._zod.bag),d._zod.parse=(s,m)=>{if(i.coerce)try{s.value=String(s.value)}catch{}return typeof s.value=="string"||s.issues.push({expected:"string",code:"invalid_type",input:s.value,inst:d}),s}}),of=gr("$ZodStringFormat",(d,i)=>{_z.init(d,i),VO.init(d,i)}),Cke=gr("$ZodGUID",(d,i)=>{i.pattern??(i.pattern=GLe),of.init(d,i)}),Pke=gr("$ZodUUID",(d,i)=>{if(i.version){let m={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[i.version];if(m===void 0)throw new Error(`Invalid UUID version: "${i.version}"`);i.pattern??(i.pattern=GO(m))}else i.pattern??(i.pattern=GO());of.init(d,i)}),Nke=gr("$ZodEmail",(d,i)=>{i.pattern??(i.pattern=VLe),of.init(d,i)}),Rke=gr("$ZodURL",(d,i)=>{of.init(d,i),d._zod.check=s=>{try{let m=s.value.trim(),u=new URL(m);i.hostname&&(i.hostname.lastIndex=0,i.hostname.test(u.hostname)||s.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:i.hostname.source,input:s.value,inst:d,continue:!i.abort})),i.protocol&&(i.protocol.lastIndex=0,i.protocol.test(u.protocol.endsWith(":")?u.protocol.slice(0,-1):u.protocol)||s.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:i.protocol.source,input:s.value,inst:d,continue:!i.abort})),i.normalize?s.value=u.href:s.value=m;return}catch{s.issues.push({code:"invalid_format",format:"url",input:s.value,inst:d,continue:!i.abort})}}}),Mke=gr("$ZodEmoji",(d,i)=>{i.pattern??(i.pattern=jLe()),of.init(d,i)}),Lke=gr("$ZodNanoID",(d,i)=>{i.pattern??(i.pattern=zLe),of.init(d,i)}),kke=gr("$ZodCUID",(d,i)=>{i.pattern??(i.pattern=kLe),of.init(d,i)}),wke=gr("$ZodCUID2",(d,i)=>{i.pattern??(i.pattern=wLe),of.init(d,i)}),Oke=gr("$ZodULID",(d,i)=>{i.pattern??(i.pattern=OLe),of.init(d,i)}),Fke=gr("$ZodXID",(d,i)=>{i.pattern??(i.pattern=FLe),of.init(d,i)}),Wke=gr("$ZodKSUID",(d,i)=>{i.pattern??(i.pattern=WLe),of.init(d,i)}),zke=gr("$ZodISODateTime",(d,i)=>{i.pattern??(i.pattern=QLe(i)),of.init(d,i)}),Bke=gr("$ZodISODate",(d,i)=>{i.pattern??(i.pattern=YLe),of.init(d,i)}),Gke=gr("$ZodISOTime",(d,i)=>{i.pattern??(i.pattern=ZLe(i)),of.init(d,i)}),Vke=gr("$ZodISODuration",(d,i)=>{i.pattern??(i.pattern=BLe),of.init(d,i)}),jke=gr("$ZodIPv4",(d,i)=>{i.pattern??(i.pattern=ULe),of.init(d,i),d._zod.bag.format="ipv4"}),Uke=gr("$ZodIPv6",(d,i)=>{i.pattern??(i.pattern=HLe),of.init(d,i),d._zod.bag.format="ipv6",d._zod.check=s=>{try{new URL(`http://[${s.value}]`)}catch{s.issues.push({code:"invalid_format",format:"ipv6",input:s.value,inst:d,continue:!i.abort})}}}),Hke=gr("$ZodMAC",(d,i)=>{i.pattern??(i.pattern=KLe(i.delimiter)),of.init(d,i),d._zod.bag.format="mac"}),Kke=gr("$ZodCIDRv4",(d,i)=>{i.pattern??(i.pattern=JLe),of.init(d,i)}),Jke=gr("$ZodCIDRv6",(d,i)=>{i.pattern??(i.pattern=$Le),of.init(d,i),d._zod.check=s=>{let m=s.value.split("/");try{if(m.length!==2)throw new Error;let[u,y]=m;if(!y)throw new Error;let A=Number(y);if(`${A}`!==y)throw new Error;if(A<0||A>128)throw new Error;new URL(`http://[${u}]`)}catch{s.issues.push({code:"invalid_format",format:"cidrv6",input:s.value,inst:d,continue:!i.abort})}}});function $ke(d){if(d==="")return!0;if(d.length%4!==0)return!1;try{return atob(d),!0}catch{return!1}}var qke=gr("$ZodBase64",(d,i)=>{i.pattern??(i.pattern=qLe),of.init(d,i),d._zod.bag.contentEncoding="base64",d._zod.check=s=>{$ke(s.value)||s.issues.push({code:"invalid_format",format:"base64",input:s.value,inst:d,continue:!i.abort})}});function ict(d){if(!pde.test(d))return!1;let i=d.replace(/[-_]/g,m=>m==="-"?"+":"/"),s=i.padEnd(Math.ceil(i.length/4)*4,"=");return $ke(s)}var Xke=gr("$ZodBase64URL",(d,i)=>{i.pattern??(i.pattern=pde),of.init(d,i),d._zod.bag.contentEncoding="base64url",d._zod.check=s=>{ict(s.value)||s.issues.push({code:"invalid_format",format:"base64url",input:s.value,inst:d,continue:!i.abort})}}),Yke=gr("$ZodE164",(d,i)=>{i.pattern??(i.pattern=XLe),of.init(d,i)});function oct(d,i=null){try{let s=d.split(".");if(s.length!==3)return!1;let[m]=s;if(!m)return!1;let u=JSON.parse(atob(m));return!("typ"in u&&u?.typ!=="JWT"||!u.alg||i&&(!("alg"in u)||u.alg!==i))}catch{return!1}}var Zke=gr("$ZodJWT",(d,i)=>{of.init(d,i),d._zod.check=s=>{oct(s.value,i.alg)||s.issues.push({code:"invalid_format",format:"jwt",input:s.value,inst:d,continue:!i.abort})}}),Qke=gr("$ZodCustomStringFormat",(d,i)=>{of.init(d,i),d._zod.check=s=>{i.fn(s.value)||s.issues.push({code:"invalid_format",format:i.format,input:s.value,inst:d,continue:!i.abort})}}),Sde=gr("$ZodNumber",(d,i)=>{dc.init(d,i),d._zod.pattern=d._zod.bag.pattern??fde,d._zod.parse=(s,m)=>{if(i.coerce)try{s.value=Number(s.value)}catch{}let u=s.value;if(typeof u=="number"&&!Number.isNaN(u)&&Number.isFinite(u))return s;let y=typeof u=="number"?Number.isNaN(u)?"NaN":Number.isFinite(u)?void 0:"Infinity":void 0;return s.issues.push({expected:"number",code:"invalid_type",input:u,inst:d,...y?{received:y}:{}}),s}}),ewe=gr("$ZodNumberFormat",(d,i)=>{cke.init(d,i),Sde.init(d,i)}),cH=gr("$ZodBoolean",(d,i)=>{dc.init(d,i),d._zod.pattern=rke,d._zod.parse=(s,m)=>{if(i.coerce)try{s.value=!!s.value}catch{}let u=s.value;return typeof u=="boolean"||s.issues.push({expected:"boolean",code:"invalid_type",input:u,inst:d}),s}}),Tde=gr("$ZodBigInt",(d,i)=>{dc.init(d,i),d._zod.pattern=tke,d._zod.parse=(s,m)=>{if(i.coerce)try{s.value=BigInt(s.value)}catch{}return typeof s.value=="bigint"||s.issues.push({expected:"bigint",code:"invalid_type",input:s.value,inst:d}),s}}),twe=gr("$ZodBigIntFormat",(d,i)=>{dke.init(d,i),Tde.init(d,i)}),nwe=gr("$ZodSymbol",(d,i)=>{dc.init(d,i),d._zod.parse=(s,m)=>{let u=s.value;return typeof u=="symbol"||s.issues.push({expected:"symbol",code:"invalid_type",input:u,inst:d}),s}}),rwe=gr("$ZodUndefined",(d,i)=>{dc.init(d,i),d._zod.pattern=oke,d._zod.values=new Set([void 0]),d._zod.optin="optional",d._zod.optout="optional",d._zod.parse=(s,m)=>{let u=s.value;return typeof u>"u"||s.issues.push({expected:"undefined",code:"invalid_type",input:u,inst:d}),s}}),iwe=gr("$ZodNull",(d,i)=>{dc.init(d,i),d._zod.pattern=ike,d._zod.values=new Set([null]),d._zod.parse=(s,m)=>{let u=s.value;return u===null||s.issues.push({expected:"null",code:"invalid_type",input:u,inst:d}),s}}),owe=gr("$ZodAny",(d,i)=>{dc.init(d,i),d._zod.parse=s=>s}),awe=gr("$ZodUnknown",(d,i)=>{dc.init(d,i),d._zod.parse=s=>s}),swe=gr("$ZodNever",(d,i)=>{dc.init(d,i),d._zod.parse=(s,m)=>(s.issues.push({expected:"never",code:"invalid_type",input:s.value,inst:d}),s)}),lwe=gr("$ZodVoid",(d,i)=>{dc.init(d,i),d._zod.parse=(s,m)=>{let u=s.value;return typeof u>"u"||s.issues.push({expected:"void",code:"invalid_type",input:u,inst:d}),s}}),cwe=gr("$ZodDate",(d,i)=>{dc.init(d,i),d._zod.parse=(s,m)=>{if(i.coerce)try{s.value=new Date(s.value)}catch{}let u=s.value,y=u instanceof Date;return y&&!Number.isNaN(u.getTime())||s.issues.push({expected:"date",code:"invalid_type",input:u,...y?{received:"Invalid Date"}:{},inst:d}),s}});function Jlt(d,i,s){d.issues.length&&i.issues.push(...ME(s,d.issues)),i.value[s]=d.value}var dwe=gr("$ZodArray",(d,i)=>{dc.init(d,i),d._zod.parse=(s,m)=>{let u=s.value;if(!Array.isArray(u))return s.issues.push({expected:"array",code:"invalid_type",input:u,inst:d}),s;s.value=Array(u.length);let y=[];for(let A=0;A<u.length;A++){let k=u[A],J=i.element._zod.run({value:k,issues:[]},m);J instanceof Promise?y.push(J.then(ce=>Jlt(ce,s,A))):Jlt(J,s,A)}return y.length?Promise.all(y).then(()=>s):s}});function bde(d,i,s,m,u){if(d.issues.length){if(u&&!(s in m))return;i.issues.push(...ME(s,d.issues))}d.value===void 0?s in m&&(i.value[s]=void 0):i.value[s]=d.value}function act(d){let i=Object.keys(d.shape);for(let m of i)if(!d.shape?.[m]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${m}": expected a Zod schema`);let s=DLe(d.shape);return{...d,keys:i,keySet:new Set(i),numKeys:i.length,optionalKeys:new Set(s)}}function sct(d,i,s,m,u,y){let A=[],k=u.keySet,J=u.catchall._zod,ce=J.def.type,_e=J.optout==="optional";for(let Me in i){if(k.has(Me))continue;if(ce==="never"){A.push(Me);continue}let se=J.run({value:i[Me],issues:[]},m);se instanceof Promise?d.push(se.then(ft=>bde(ft,s,Me,i,_e))):bde(se,s,Me,i,_e)}return A.length&&s.issues.push({code:"unrecognized_keys",keys:A,input:i,inst:y}),d.length?Promise.all(d).then(()=>s):s}var lct=gr("$ZodObject",(d,i)=>{if(dc.init(d,i),!Object.getOwnPropertyDescriptor(i,"shape")?.get){let k=i.shape;Object.defineProperty(i,"shape",{get:()=>{let J={...k};return Object.defineProperty(i,"shape",{value:J}),J}})}let m=cz(()=>act(i));cd(d._zod,"propValues",()=>{let k=i.shape,J={};for(let ce in k){let _e=k[ce]._zod;if(_e.values){J[ce]??(J[ce]=new Set);for(let Me of _e.values)J[ce].add(Me)}}return J});let u=BO,y=i.catchall,A;d._zod.parse=(k,J)=>{A??(A=m.value);let ce=k.value;if(!u(ce))return k.issues.push({expected:"object",code:"invalid_type",input:ce,inst:d}),k;k.value={};let _e=[],Me=A.shape;for(let se of A.keys){let ft=Me[se],Je=ft._zod.optout==="optional",Ze=ft._zod.run({value:ce[se],issues:[]},J);Ze instanceof Promise?_e.push(Ze.then(Nr=>bde(Nr,k,se,ce,Je))):bde(Ze,k,se,ce,Je)}return y?sct(_e,ce,k,J,m.value,d):_e.length?Promise.all(_e).then(()=>k):k}}),uwe=gr("$ZodObjectJIT",(d,i)=>{lct.init(d,i);let s=d._zod.parse,m=cz(()=>act(i)),u=se=>{let ft=new lH(["shape","payload","ctx"]),Je=m.value,Ze=Wo=>{let Ga=ede(Wo);return`shape[${Ga}]._zod.run({ value: input[${Ga}], issues: [] }, ctx)`};ft.write("const input = payload.value;");let Nr=Object.create(null),Jr=0;for(let Wo of Je.keys)Nr[Wo]=`key_${Jr++}`;ft.write("const newResult = {};");for(let Wo of Je.keys){let Ga=Nr[Wo],So=ede(Wo),fn=se[Wo]?._zod?.optout==="optional";ft.write(`const ${Ga} = ${Ze(Wo)};`),fn?ft.write(`
|