pando-ai 0.0.19 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +138 -138
- package/dist/watcher-process.js +136 -136
- package/dist/workers/{chunk-UIWCIYYF.mjs → chunk-HDFL4PL5.mjs} +15 -15
- package/dist/workers/indexer-worker.mjs +1 -1
- package/dist/workers/snapshot-worker.mjs +4 -4
- package/package.json +1 -1
- package/resources/tools/pando-tools.json +59 -555
- package/tools/clojure-editor/lib/pando-clojure-editor-standalone.jar +0 -0
- package/tools/clojure-indexer/lib/pando-clojure-indexer-standalone.jar +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{c as
|
|
1
|
+
import{c as wn,d as Y,e as z,f as Z,g as yt}from"./chunk-HQDE7M4W.mjs";import{a as Cn,b as ae}from"./chunk-AYCBSZ56.mjs";var G,oe=ae(()=>{"use strict";G={getAbbrev(t,e="ts"){return t},getKindFromAbbrev(t,e="ts"){return t}}});import{Node as L}from"ts-morph";function ye(t){let e=t.getKindName?.()||"Unknown",n=wt(t,e);return{kind:n.kind,semanticKind:n.semanticKind,rawKind:e,rawKindSource:Ct.TS_MORPH}}function Pt(t){let e=t.getKindName?.()||"Unknown";return{kind:wt(t,e).kind,rawKind:e,rawKindSource:Ct.TS_MORPH}}function we(t,e){if(!t.kind||!t.kind.trim())throw new Error(`Invalid normalized kind: missing kind ${e?JSON.stringify(e):""}`);if(!t.rawKind||!t.rawKind.trim())throw new Error(`Invalid normalized kind: missing rawKind ${e?JSON.stringify(e):""}`);if(!t.rawKindSource||!String(t.rawKindSource).trim())throw new Error(`Invalid normalized kind: missing rawKindSource ${e?JSON.stringify(e):""}`)}var Ct,wt,Pe=ae(()=>{"use strict";Ct={TS_MORPH:"ts-morph",PYTHON_AST:"python-ast",CLANG:"clang",ROSLYN:"roslyn",JAVA_AST:"java-ast",CLI:"cli",UNKNOWN:"unknown"},wt=(t,e)=>L.isFunctionDeclaration(t)||L.isFunctionExpression(t)||L.isArrowFunction(t)?{kind:"Function",semanticKind:"function"}:L.isGetAccessorDeclaration(t)||L.isSetAccessorDeclaration(t)?{kind:"Method",semanticKind:"property"}:L.isMethodDeclaration(t)||L.isMethodSignature(t)||L.isConstructorDeclaration(t)?{kind:"Method",semanticKind:"method"}:L.isClassDeclaration(t)||L.isClassExpression(t)?{kind:"Class",semanticKind:"class"}:L.isInterfaceDeclaration(t)?{kind:"Interface",semanticKind:"interface"}:L.isEnumDeclaration(t)?{kind:"Enum",semanticKind:"enum"}:L.isEnumMember(t)?{kind:"EnumMember",semanticKind:"enum"}:L.isTypeAliasDeclaration(t)?{kind:"TypeAlias",semanticKind:"type"}:L.isModuleDeclaration(t)?{kind:"Namespace",semanticKind:"namespace"}:L.isPropertyDeclaration(t)||L.isPropertySignature(t)?{kind:"Field",semanticKind:"property"}:L.isVariableDeclaration(t)?{kind:"Variable",semanticKind:"variable"}:{kind:e,semanticKind:null}});var Je=ae(()=>{"use strict";oe();Pe();Z()});function En(){return new Date().toISOString()}function Ee(t,e,n){let r=`[${En()}] [${t.toUpperCase()}] ${e}`;if(!n)return r;try{return r+" "+JSON.stringify(n)}catch{return r}}var Rn,Et=ae(()=>{"use strict";Rn={debug:(t,e)=>{try{process.stderr.write(Ee("debug",t,e)+`
|
|
2
2
|
`)}catch{}},info:(t,e)=>{try{process.stderr.write(Ee("info",t,e)+`
|
|
3
3
|
`)}catch{}},warn:(t,e)=>{try{process.stderr.write(Ee("warn",t,e)+`
|
|
4
4
|
`)}catch{}},error:(t,e)=>{try{process.stderr.write(Ee("error",t,e)+`
|
|
5
|
-
`)}catch{}}}});import{Node as Ti}from"ts-morph";var Rt=ae(()=>{"use strict";Xe();We();Et();Z()});import*as In from"xxhash-wasm";var Dn,Kn,Bi,Xe=ae(()=>{"use strict";Rt();Dn="__pando_xxhash_instance__",Kn=globalThis,Bi=Kn[Dn]??null});oe();function Ne(t){let e=`${t.sourceFile}#${t.sourceStart}-${t.sourceEnd}`,n=t.refKind??"",r=t.refName??"",i=t.targetFile??"",s=t.targetStart!=null&&t.targetEnd!=null?`#${t.targetStart}-${t.targetEnd}`:"",a=t.targetNodeId??"",o=`${e}:REF:${n}:${r}|${i}${s}|${a}`;return yt(o)}function bt(t){let e=[],n=new Set,r=i=>{!i?.name||n.has(i.name)||(n.add(i.name),e.push(i))};for(let i of t.exports??[])r(i);for(let i of t.explicitExports??[])r({name:i});for(let i of t.modulePublic??[])r({name:i});return e}Z();function ge(t,e,n){let r=new Date().toISOString();return{payload:{lang:t,fileRel:e,preDeleted:!1,exportRows:[],nodeRows:[],referenceRows:[],importRows:[],importBindingRows:[],fileRow:[e,n?.mtime??null,n?.size??null,"failed",r],fts:null},fileSize:n?.size,mtime:n?.mtime}}function me(t){let{lang:e,fileRel:n,content:r,meta:i,preDeleted:s,parsed:a,resolveNodeId:o,exportKind:u}=t,h=[];for(let d of a.nodes??[]){let v=d.rawKind??d.kind,E=d.rawKindSource??"cli",_=d.containerRawKind??d.containerKind??null,$=d.containerRawKindSource??(_?"cli":null),g=d.scopeChain??null,y=Array.isArray(g)?JSON.stringify(g):typeof g=="string"?g:null,N=`${n}#${d.start}-${d.end}:${G.getAbbrev(d.kind,e)}`,S=(e==="c"||e==="cpp"||e==="java"||e==="clojure")&&d.name?`${N}:${d.name}`:N,K=d.metadata&&Object.keys(d.metadata).length?JSON.stringify(d.metadata):null;h.push([S,d.name,d.kind,v,E,d.semanticKind??null,d.start,d.end,typeof d.isExported=="number"?d.isExported:0,d.containerKind??null,_,$,typeof d.paramCount=="number"?d.paramCount:null,d.qualifiedName??null,y,d.symbolKey??null,K])}let p=[],m=new Set;for(let d of bt(a)){if(!d.name||m.has(d.name))continue;m.add(d.name);let v=d.nodeId??(o?o(d.name):null);p.push([n,d.name,v??null,d.isReexport?1:0,d.reexportFrom??null,d.reexportName??null,d.exportKind??u??"cli",d.targetSymbolKey??null])}let b=[],A=new Map,C=new Map;for(let d of h){let v=d[0]!=null?String(d[0]):null,E=d[13]!=null?String(d[13]):null,_=d[15]!=null?String(d[15]):null;v&&(E&&!A.has(E)&&A.set(E,v),_&&!C.has(_)&&C.set(_,v))}if(Y()&&e==="clojure"&&(a.references??[]).length>0){let d=Array.from(A.keys()).slice(0,10),v=Array.from(C.keys()).slice(0,10),E=(a.references??[]).slice(0,10).map($=>$.containerQualifiedName),_={file:n,nodeCount:h.length,refCount:(a.references??[]).length,nodeQualifiedNames:d,nodeSymbolKeys:v,refContainers:E,qualifiedNameMapSize:A.size,symbolKeyMapSize:C.size};try{console.error("[CliPayload][CLOJURE-DEBUG] source_node_id lookup context",_)}catch{}}for(let d of a.references??[]){let v=d.targetNodeId??(o&&d.refName?o(d.refName):null),E=d.targetFile??(v?n:null),_=d.sourceNodeId??(d.containerQualifiedName?A.get(d.containerQualifiedName)??null:null)??(d.containerQualifiedName?C.get(d.containerQualifiedName)??null:null),$=Ne({sourceFile:n,sourceStart:d.sourceStart,sourceEnd:d.sourceEnd,refKind:d.refKind,refName:d.refName,targetFile:E??null,targetStart:d.targetStart??null,targetEnd:d.targetEnd??null,targetNodeId:v??d.targetNodeId??null}),g=d.metadata&&Object.keys(d.metadata).length?JSON.stringify(d.metadata):null;b.push([$,n,_,d.refName??null,d.refKind,d.sourceStart,d.sourceEnd,v??d.targetNodeId??null,E??null,v||d.targetNodeId||d.targetFile?"resolved":"unresolved",d.receiverName??null,typeof d.arity=="number"?d.arity:null,d.containerQualifiedName??null,d.targetSymbolKey??null,d.confidence??null,g])}if(Y()&&e==="clojure"&&b.length>0){let d=b.reduce((E,_)=>E+(_?.[2]!=null?1:0),0),v=b.reduce((E,_)=>E+(_?.[12]!=null?1:0),0);try{console.error("[CliPayload] clojure source-node summary",{file:n,refs:b.length,sourceNodeCount:d,containerCount:v,sample:b.slice(0,5).map(E=>({sourceNodeId:E[2]==null?null:String(E[2]),refName:E[3],refKind:E[4],containerQualifiedName:E[12]}))})}catch{}}let w=[];for(let d of a.imports??[])w.push([n,d.module??null,d.isTypeOnly??0]);let M=[];for(let d of a.importBindings??[])M.push([n,d.module??null,d.kind,d.localName,d.importedName,d.isTypeOnly??0]);let l=new Date().toISOString(),P=[n,i?.mtime??null,i?.size??null,"completed",l];return{payload:{lang:e,fileRel:n,preDeleted:!!s,exportRows:p,nodeRows:h,referenceRows:b,importRows:w,importBindingRows:M,fileRow:P,fts:typeof r=="string"?{blobOid:n,content:r}:null},fileSize:i?.size,mtime:i?.mtime}}var Ce=["ts","js","python","c","cpp","csharp","dart","java","clojure"];function xt(t){return typeof t=="string"&&Ce.includes(t)}Pn();Z();function St(){return["clojure"]}function En(t){let e=new Set;for(let n of t)xt(n)&&e.add(n);return Ce.filter(n=>e.has(n))}function vt(t){let e=new Set(En(t)),n={};for(let r of Ce){if(e.has(r)){n[r]={enabled:!0,source:"embedded"};continue}n[r]={enabled:!1,source:"none",reason:"disabled by language support config"}}return{byLanguage:n}}import Ge from"path";import Jn from"fs";import{Project as Wn,Node as x}from"ts-morph";import{Node as f,SyntaxKind as le}from"ts-morph";import*as J from"typescript";import{SyntaxKind as he}from"ts-morph";var Je={LINE_COMMENT:{kind:9001,name:"LineComment",triviaKind:he.SingleLineCommentTrivia},BLOCK_COMMENT:{kind:9002,name:"BlockComment",triviaKind:he.MultiLineCommentTrivia},JSDOC_COMMENT:{kind:9003,name:"JSDocComment",triviaKind:he.MultiLineCommentTrivia}};function Nt(t,e){return t===he.SingleLineCommentTrivia?Je.LINE_COMMENT:t===he.MultiLineCommentTrivia&&e.startsWith("/**")?Je.JSDOC_COMMENT:Je.BLOCK_COMMENT}Xe();We();import{Node as F,SyntaxKind as c,Scope as Ue}from"ts-morph";var Qi=new Set([c.ArrayLiteralExpression,c.ArrayType,c.ArrowFunction,c.AsExpression,c.AssertClause,c.AssertEntry,c.AwaitExpression,c.BigIntLiteral,c.BinaryExpression,c.BindingElement,c.Block,c.CallExpression,c.CallSignature,c.CaseClause,c.CatchClause,c.ClassDeclaration,c.ClassExpression,c.ClassStaticBlockDeclaration,c.ComputedPropertyName,c.ConditionalExpression,c.ConditionalType,c.ConstructSignature,c.Constructor,c.ConstructorType,c.Decorator,c.DefaultClause,c.DoStatement,c.ElementAccessExpression,c.EnumDeclaration,c.EnumMember,c.ExportAssignment,c.ExportDeclaration,c.ExportSpecifier,c.ExpressionStatement,c.ExpressionWithTypeArguments,c.FalseKeyword,c.ForInStatement,c.ForOfStatement,c.ForStatement,c.FunctionDeclaration,c.FunctionExpression,c.FunctionType,c.GetAccessor,c.Identifier,c.IfStatement,c.ImportAttribute,c.ImportAttributes,c.ImportClause,c.ImportDeclaration,c.ImportEqualsDeclaration,c.ImportSpecifier,c.ImportType,c.IndexSignature,c.IndexedAccessType,c.InferType,c.InterfaceDeclaration,c.IntersectionType,c.JsxAttribute,c.JsxClosingElement,c.JsxClosingFragment,c.JsxElement,c.JsxExpression,c.JsxFragment,c.JsxOpeningElement,c.JsxOpeningFragment,c.JsxSelfClosingElement,c.JsxSpreadAttribute,c.JsxText,c.LiteralType,c.MappedType,c.MetaProperty,c.MethodDeclaration,c.MethodSignature,c.ModuleDeclaration,c.NamedExports,c.NamedImports,c.NamedTupleMember,c.NamespaceExport,c.NamespaceExportDeclaration,c.NamespaceImport,c.NewExpression,c.NoSubstitutionTemplateLiteral,c.NonNullExpression,c.NullKeyword,c.NumericLiteral,c.ObjectLiteralExpression,c.OptionalType,c.Parameter,c.ParenthesizedType,c.PostfixUnaryExpression,c.PrefixUnaryExpression,c.PrivateIdentifier,c.PropertyAccessExpression,c.PropertyAssignment,c.PropertyDeclaration,c.PropertySignature,c.QualifiedName,c.RegularExpressionLiteral,c.RestType,c.ReturnStatement,c.SatisfiesExpression,c.SetAccessor,c.ShorthandPropertyAssignment,c.SourceFile,c.SpreadAssignment,c.SpreadElement,c.StringLiteral,c.SwitchStatement,c.TaggedTemplateExpression,c.TemplateExpression,c.TemplateLiteralType,c.ThisType,c.ThrowStatement,c.TrueKeyword,c.TryStatement,c.TupleType,c.TypeAliasDeclaration,c.TypeLiteral,c.TypeOfExpression,c.TypeOperator,c.TypeParameter,c.TypePredicate,c.TypeQuery,c.TypeReference,c.UnionType,c.VariableDeclaration,c.VariableStatement,c.WhileStatement,c.YieldExpression]);function Fn(t){try{let e=t.getDecorators;if(typeof e!="function")return[];let n=new Set;for(let r of e.call(t)){let i;try{i=r.getName?.()}catch{i=void 0}if(!i)try{i=r.getExpression?.()?.getText?.()}catch{i=void 0}if(i){let s=String(i).trim();s&&n.add(s)}}return Array.from(n)}catch{return[]}}function Mn(t){try{if(!F.isClassDeclaration(t))return[];let e=t.getImplements();if(!e||e.length===0)return[];let n=new Set;for(let r of e)try{let i=r.getExpression(),s=i?i.getText():r.getText();s&&n.add(s.trim())}catch{}return Array.from(n)}catch{return[]}}function On(t){try{let e=new Set;if(F.isClassDeclaration(t)){let n=t.getExtends();if(n)try{let r=n.getExpression(),i=r?r.getText():n.getText();i&&e.add(i.trim())}catch{}}else if(F.isInterfaceDeclaration(t)){let n=t.getExtends();for(let r of n)try{let i=r.getText();i&&e.add(i.trim())}catch{}}return Array.from(e)}catch{return[]}}function _t(t){try{if("getReturnTypeNode"in t&&typeof t.getReturnTypeNode=="function"){let e=t.getReturnTypeNode();if(e)return e.getText()}if("getReturnType"in t&&typeof t.getReturnType=="function"){let e=t.getReturnType();if(e&&typeof e.getText=="function"){let n=e.getText();if(n)return String(n)}}return null}catch{return null}}function Ln(t){try{if(typeof t.getScope!="function")return null;let e=t.getScope();return e===Ue.Private||e===Ue.Protected||e===Ue.Public?e:null}catch{return null}}function At(t){let e={kind:t.getKindName()},n=Fn(t);if(n.length&&(e.decorators=n),I(e,"flags",()=>t.getFlags()),(F.isFunctionDeclaration(t)||F.isMethodDeclaration(t)||F.isFunctionExpression(t))&&(I(e,"isAsync",()=>t.isAsync()),I(e,"isGenerator",()=>t.isGenerator()),I(e,"parameterCount",()=>t.getParameters().length),I(e,"returnType",()=>_t(t)),F.isFunctionDeclaration(t)&&I(e,"isExported",()=>t.isExported())),F.isClassDeclaration(t)){I(e,"isAbstract",()=>t.isAbstract()),I(e,"isExported",()=>t.isExported());let i=On(t);i.length&&(e.extends=i);let s=Mn(t);s.length&&(e.implements=s)}if(F.isVariableDeclaration(t)&&(I(e,"declarationKind",()=>t.getVariableStatement()?.getDeclarationKind()),I(e,"hasInitializer",()=>t.hasInitializer()),I(e,"type",()=>t.getTypeNode()?.getText())),(F.isPropertyDeclaration(t)||F.isPropertySignature(t)||F.isParameterDeclaration(t))&&(I(e,"isStatic",()=>t.isStatic?.()),I(e,"isReadonly",()=>t.isReadonly?.()),I(e,"isOptional",()=>t.hasQuestionToken?.()),I(e,"scope",()=>t.getScope?.())),(F.isMethodDeclaration(t)||F.isMethodSignature(t)||F.isGetAccessorDeclaration(t)||F.isSetAccessorDeclaration(t))&&(I(e,"isStatic",()=>t.isStatic?.()),I(e,"isAbstract",()=>t.isAbstract?.()),I(e,"isAsync",()=>t.isAsync?.()),I(e,"returnType",()=>_t(t)),I(e,"scope",()=>t.getScope?.())),F.isCallExpression(t)){let i=t.getExpression();if(F.isPropertyAccessExpression(i)){e.propertyName=i.getName();let s=i.getExpression();F.isIdentifier(s)&&(e.objectName=s.getText())}else F.isIdentifier(i)&&(e.functionName=i.getText());e.argumentCount=t.getArguments().length,e.callExpression=i.getText()}let r=Ln(t);return r&&(e.visibility=r),e.isReadonly||I(e,"isReadonly",()=>t.isReadonly?.()),F.isImportDeclaration(t)&&(I(e,"moduleSpecifier",()=>t.getModuleSpecifier()?.getLiteralText()),I(e,"isTypeOnly",()=>t.isTypeOnly()),I(e,"namedImports",()=>t.getNamedImports()?.map(i=>i.getName()).join(", ")),I(e,"defaultImport",()=>t.getDefaultImport()?.getText())),Object.keys(e).forEach(i=>{e[i]===void 0&&delete e[i]}),e}function I(t,e,n){try{let r=n();r!=null&&(t[e]=r)}catch{}}Pe();function jn(t){if(t.kind==="local"){let r=t.isDefault?"default":t.name;return r?{name:r,priority:t.isDefault?4:3}:null}if(t.kind==="alias")return t.exported?{name:t.exported,priority:2}:null;let e=t.isNamespace??!1,n=t.alias||t.name||(e?"*":null);return n?{name:n,priority:e?0:1}:null}function $n(t){if(t.length<2)return t;let e=new Map;for(let n of t){let r=jn(n);if(!r)continue;let i=e.get(r.name);(!i||r.priority>i.priority)&&e.set(r.name,{record:n,priority:r.priority})}return Array.from(e.values()).map(n=>n.record)}function Re(t){try{if(t&&typeof t.getName=="function"){let e=t.getName();if(typeof e=="string"&&e.length>0)return e}}catch{}return null}function Ve(t){let e;try{let r=t.getStart?.(!1);typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}if(e===void 0)try{let r=t.getStart?.();typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}if(e===void 0)try{let r=t.getFullStart?.();typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}e===void 0&&(e=0);let n;try{let r=t.getEnd?.();typeof r=="number"&&Number.isFinite(r)&&(n=r)}catch{}if(n===void 0)try{let r=t.getStart?.();typeof r=="number"&&Number.isFinite(r)&&(n=r)}catch{}return n===void 0&&(n=e),n<e&&(n=e),{start:e,end:n}}function Bn(t){try{if(f.isFunctionDeclaration(t)||f.isMethodDeclaration(t)||f.isConstructorDeclaration(t)||f.isFunctionExpression(t)||f.isArrowFunction(t)){let e=t.getParameters?.();if(Array.isArray(e))return e.length}}catch{}return null}function _e(t,e){try{return typeof t?.hasModifier=="function"&&t.hasModifier(e)}catch{return!1}}function zn(t,e,n){if(!f.isImportDeclaration(t))return;let i={moduleSpecifier:t.getModuleSpecifierValue(),isTypeOnly:t.isTypeOnly(),namedImports:[]};try{let s=t.getDefaultImport();if(s){let a=s.getText();i.defaultImport=a,n(a,s)}}catch{}try{let s=t.getNamespaceImport();if(s){let a=s.getText();i.namespaceImport=a,n(a,s)}}catch{}try{t.getNamedImports().forEach(s=>{try{let a=s.getName(),o=s.getAliasNode(),u=o?o.getText():void 0;a&&(i.namedImports.push({name:a,alias:u||void 0}),n(u||a,s.getNameNode()))}catch{}})}catch{}e.push(i)}function qn(t,e){if(f.isExportDeclaration(t)){let n=t.getModuleSpecifierValue();if(n){if(t.getNamedExports().length>0)try{t.getNamedExports().forEach(r=>{try{let i=r.getName(),s=r.getAliasNode(),a=s?s.getText():void 0;e.push({kind:"reexport",moduleSpecifier:n,name:i||void 0,alias:a||void 0,isNamespace:!1})}catch{}})}catch{}else if(t.isNamespaceExport())try{let i=t.getNamespaceExport()?.getName();e.push({kind:"reexport",moduleSpecifier:n,name:i||"*",alias:i||void 0,isNamespace:!0})}catch{e.push({kind:"reexport",moduleSpecifier:n,name:"*",isNamespace:!0})}else e.push({kind:"reexport",moduleSpecifier:n,name:"*",isNamespace:!0});return}try{t.getNamedExports().forEach(r=>{try{let i=r.getName();if(!i)return;let s=r.getAliasNode(),a=s?s.getText():i;e.push({kind:"alias",local:i,exported:a})}catch{}})}catch{}return}if(f.isExportAssignment(t))try{let n=t.getExpression();if(n&&f.isIdentifier(n)){let r=n.getText();e.push({kind:"alias",local:r,exported:"default"})}}catch{}}function Hn(t,e,n,r){if(!_e(t,le.ExportKeyword))return;let i=_e(t,le.DefaultKeyword);if(f.isVariableStatement(t)){try{let s=t.getDeclarationList().getDeclarations();for(let a of s){let o=Re(a)??a.getName?.()??null;if(o){n(o,a);let u=r(a);u&&e.push({kind:"local",name:o,isDefault:i,nodeId:u})}}}catch{}return}if(f.isFunctionDeclaration(t)||f.isClassDeclaration(t)||f.isInterfaceDeclaration(t)||f.isEnumDeclaration(t)||f.isTypeAliasDeclaration(t)||f.isModuleDeclaration(t)){let s=Re(t)||(i?"default":null),a=r(t);a&&e.push({kind:"local",name:s??"default",isDefault:i,nodeId:a})}}function Tt(t,e,n,r){let i=[],s=[],a=new Set,o=new Map,u=[],h=[],p=[{node:t,id:null,kind:"module",rawKind:"SourceFile",rawKindSource:"ts-morph",name:null,isExported:!1}],m=l=>{if(!l)return null;try{return e(l)}catch{return null}},b=(l,P)=>{if(l&&(a.has(l)||a.add(l),P&&!o.has(l))){let R=m(P);R&&o.set(l,R)}},A=l=>f.isFunctionDeclaration(l)||f.isFunctionExpression(l)||f.isArrowFunction(l)||f.isClassDeclaration(l)||f.isClassExpression(l)||f.isInterfaceDeclaration(l)||f.isEnumDeclaration(l)||f.isEnumMember(l)||f.isTypeAliasDeclaration(l)||f.isModuleDeclaration(l)||f.isMethodDeclaration(l)||f.isMethodSignature(l)||f.isPropertyDeclaration(l)||f.isPropertySignature(l)||f.isGetAccessorDeclaration(l)||f.isSetAccessorDeclaration(l)||f.isConstructorDeclaration(l)||f.isVariableDeclaration(l)||f.isReturnStatement(l)||f.isIfStatement(l)||f.isForStatement(l)||f.isForInStatement(l)||f.isForOfStatement(l)||f.isWhileStatement(l)||f.isDoStatement(l)||f.isSwitchStatement(l)||f.isCaseClause(l)||f.isDefaultClause(l)||f.isTryStatement(l)||f.isCatchClause(l)||f.isThrowStatement(l)||f.isExpressionStatement(l)||f.isBlock(l),C=l=>f.isSourceFile(l)||f.isFunctionDeclaration(l)||f.isFunctionExpression(l)||f.isArrowFunction(l)||f.isMethodDeclaration(l)||f.isConstructorDeclaration(l)||f.isClassDeclaration(l)||f.isClassExpression(l)||f.isModuleDeclaration(l),w=l=>{let P=Re(l);if(P)return P;if(f.isConstructorDeclaration(l))return"constructor";if(f.isArrowFunction(l)||f.isFunctionExpression(l)){let R=l.getParent();try{if(f.isVariableDeclaration(R))return R.getName();if(f.isPropertyAssignment(R)||f.isPropertyDeclaration(R)||f.isPropertySignature(R))return R.getName?.()??null;if(f.isShorthandPropertyAssignment(R))return R.getNameNode()?.getText()??null;if(f.isExportAssignment(R))return"default"}catch{}}if(f.isEnumMember(l))try{return l.getName()}catch{return null}if(f.isVariableDeclaration(l))try{return l.getName()}catch{return null}return null},M=l=>{let P=p[p.length-1],R=P?.id??null,d=P?.kind??"module",v=P?.name??null;if(f.isImportDeclaration(l))zn(l,u,b);else if(f.isImportEqualsDeclaration(l))try{let g=l.getModuleReference();if(g&&f.isExternalModuleReference(g)){let y=g.getExpression(),N;if(y&&f.isStringLiteral(y))N=y.getLiteralText();else if(y){let S=y.getText();N=typeof S=="string"?S.replace(/^['"]|['"]$/g,""):void 0}if(N){let K=l.getNameNode()?.getText(),j={moduleSpecifier:N,isTypeOnly:!1,namedImports:[]};K&&(j.defaultImport=K,b(K,l)),u.push(j)}}}catch{}(f.isExportDeclaration(l)||f.isExportAssignment(l))&&qn(l,h),Hn(l,h,b,m);let E=A(l),_=w(l);if(E){let g=e(l),y=_e(l,le.ExportKeyword)||P?.isExported||!1,N=l.getNameNode?.()?.getText?.()??null,S=_??Re(l)??N;_?b(_,l):S&&b(S,l);let K=Ve(l),j=Bn(l),T={...At(l)};if(R&&(T.containerId=R),d&&(T.containerKind=d),v&&(T.containerName=v),f.isModuleDeclaration(l))try{let B=l.getNameNode?.();if(B){let q=Ve(B);Number.isFinite(q.start)&&Number.isFinite(q.end)&&(T.moduleNameStart=q.start,T.moduleNameEnd=q.end)}}catch{}let D=Object.keys(T).length?T:null,O=ye(l);we(O,{source:"ts-node-collector",file:t.getFilePath(),name:S??null}),i.push({nodeId:g,nodeName:S??null,containerId:R,containerKind:d,containerRawKind:P?.rawKind??null,containerRawKindSource:P?.rawKindSource??null,containerName:v,isExported:y,kind:O.kind,rawKind:O.rawKind,rawKindSource:O.rawKindSource,semanticKind:O.semanticKind??null,start:K.start,end:K.end,paramCount:j,metadata:D})}if(f.isCallExpression(l)||f.isNewExpression(l)){let g=l.getExpression(),y=null,N;try{if(f.isIdentifier(g))y=g.getText();else if(f.isPropertyAccessExpression(g)){y=g.getName();let j=g.getExpression();f.isIdentifier(j)&&(N=j.getText())}}catch{}let S="";try{S=g.getText()}catch{}let K=Ve(l);if(s.push({name:y,kind:f.isNewExpression(l)?"new":"call",containerId:R,containerKind:d,containerName:v,expression:S,objectName:N,start:K.start,end:K.end}),f.isCallExpression(l))try{if(f.isIdentifier(g)&&g.getText()==="require"){let T=l.getArguments()[0],D;if(T&&(f.isStringLiteral(T)||f.isNoSubstitutionTemplateLiteral(T)))try{D=T.getLiteralText()}catch{let O=T.getText();D=typeof O=="string"?O.replace(/^['"]|['"]$/g,""):void 0}if(D){let O={moduleSpecifier:D,isTypeOnly:!1,namedImports:[]},B=l.getParent();if(B&&f.isVariableDeclaration(B)){let q=B.getNameNode();try{if(f.isIdentifier(q)){let V=q.getText();V&&(O.defaultImport=V,b(V,B))}}catch{}}u.push(O)}}else if(g?.getKind?.()===le.ImportKeyword){let T=l.getArguments()[0],D;if(T&&(f.isStringLiteral(T)||f.isNoSubstitutionTemplateLiteral(T)))try{D=T.getLiteralText()}catch{let O=T.getText();D=typeof O=="string"?O.replace(/^['"]|['"]$/g,""):void 0}D&&u.push({moduleSpecifier:D,isTypeOnly:!1,namedImports:[]})}}catch{}}if(f.isCallExpression(l)){let g=l.getExpression();try{if(f.isIdentifier(g)&&g.getText()==="require"){let y=l.getParent();if(!(y&&f.isExternalModuleReference(y))){let S=l.getArguments()[0],K;if(S&&(f.isStringLiteral(S)||f.isNoSubstitutionTemplateLiteral(S)))try{K=S.getLiteralText()}catch{K=S.getText().replace(/^['"]|['"]$/g,"")}if(K){let j={moduleSpecifier:K,isTypeOnly:!1,namedImports:[]};if(y&&f.isVariableDeclaration(y)){let T=y.getNameNode();try{if(f.isIdentifier(T)){let D=T.getText();D&&(j.defaultImport=D,b(D,y))}}catch{}}u.push(j)}}}else if(g?.getKind?.()===le.ImportKeyword){let N=l.getArguments()[0],S;if(N&&(f.isStringLiteral(N)||f.isNoSubstitutionTemplateLiteral(N)))try{S=N.getLiteralText()}catch{S=N.getText().replace(/^['"]|['"]$/g,"")}S&&u.push({moduleSpecifier:S,isTypeOnly:!1,namedImports:[]})}}catch{}}let $=!1;if(C(l)){let g=m(l)??e(l),y=Pt(l);p.push({node:l,id:g,kind:y.kind,rawKind:y.rawKind,rawKindSource:y.rawKindSource,name:_??v,isExported:_e(l,le.ExportKeyword)||P?.isExported||!1}),$=!0}l.forEachChild(M),$&&p.pop()};if(t.forEachChild(M),r?.includeComments===!0||process.env.AST_INDEX_COMMENTS==="1")try{let l=t.getFullText(),P=J.createScanner(J.ScriptTarget.Latest,!1,J.LanguageVariant.Standard,l),R=new Set;for(let d=P.scan();d!==J.SyntaxKind.EndOfFileToken;d=P.scan()){if(d!==J.SyntaxKind.SingleLineCommentTrivia&&d!==J.SyntaxKind.MultiLineCommentTrivia)continue;let v=P.getTokenPos(),E=P.getTextPos(),_=`${v}-${E}`;if(R.has(_)||(R.add(_),n.has(_)))continue;n.add(_);let $=l.substring(v,E),g=Nt(d,$),N=e({getKindName:()=>g.name,getKind:()=>g.kind,getPos:()=>v,getEnd:()=>E,getStart:()=>v,getFullStart:()=>v,getText:()=>$,getSourceFile:()=>t,getParent:()=>t,__isComment:!0,__commentPosition:"standalone",__attachedTo:null},"COM");i.push({nodeId:N,nodeName:$.substring(0,100),containerId:null,containerKind:"module",containerRawKind:"SourceFile",containerRawKindSource:"ts-morph",containerName:null,isExported:!1,kind:g.name,rawKind:g.name,rawKindSource:"ts-morph",semanticKind:null,start:v,end:E,paramCount:null,metadata:null})}}catch{}return{nodes:i,references:s,declaredNames:a,localDeclarations:o,imports:u,exports:$n(h)}}oe();function kt(t){let e;try{let r=t.getStart?.(!1);typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}if(e===void 0)try{let r=t.getStart?.();typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}if(e===void 0)try{let r=t.getFullStart?.();typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}e===void 0&&(e=0);let n;try{let r=t.getEnd?.();typeof r=="number"&&Number.isFinite(r)&&(n=r)}catch{}if(n===void 0)try{let r=t.getStart?.();typeof r=="number"&&Number.isFinite(r)&&(n=r)}catch{}return n===void 0&&(n=e),n<e&&(n=e),{start:e,end:n}}Pe();var Xn=100;function It(t,e,n,r){let{start:i,end:s}=kt(e),a=ye(e);we(a,{source:"ts-node-id",file:t,kind:a.kind});let o=r||G.getAbbrev(a.kind,n);return`${t}#${i}-${s}:${o}`}function Un(t,e){return Ge.relative(t,e).replace(/\\/g,"/")}function Dt(t,e){if(!t)return null;let n=t;try{let p=t.getAliasedSymbol();p&&(n=p)}catch{}let r=[];try{r=n.getDeclarations()??[]}catch{r=[]}if(!r.length)return null;let s=r.slice().sort((p,m)=>{let b=p.getSourceFile().getFilePath(),A=m.getSourceFile().getFilePath();if(b!==A)return b.localeCompare(A);let C=p.getStart(!1),w=m.getStart(!1);return C!==w?C-w:p.getEnd()-m.getEnd()})[0],a=Un(e,s.getSourceFile().getFilePath()),o=s.getStart(!1),u=s.getEnd(),h="";try{h=n.getEscapedName()}catch{try{h=n.getName()}catch{h=""}}return`${a}#${o}-${u}:${h}`}function Vn(t){return x.isFunctionDeclaration(t)||x.isFunctionExpression(t)||x.isArrowFunction(t)||x.isClassDeclaration(t)||x.isClassExpression(t)||x.isInterfaceDeclaration(t)||x.isEnumDeclaration(t)||x.isEnumMember(t)||x.isTypeAliasDeclaration(t)||x.isModuleDeclaration(t)||x.isMethodDeclaration(t)||x.isMethodSignature(t)||x.isPropertyDeclaration(t)||x.isPropertySignature(t)||x.isGetAccessorDeclaration(t)||x.isSetAccessorDeclaration(t)||x.isConstructorDeclaration(t)||x.isVariableDeclaration(t)||x.isReturnStatement(t)||x.isIfStatement(t)||x.isForStatement(t)||x.isForInStatement(t)||x.isForOfStatement(t)||x.isWhileStatement(t)||x.isDoStatement(t)||x.isSwitchStatement(t)||x.isCaseClause(t)||x.isDefaultClause(t)||x.isTryStatement(t)||x.isCatchClause(t)||x.isThrowStatement(t)||x.isExpressionStatement(t)||x.isBlock(t)}function Qn(t){try{return x.isVariableDeclaration(t)||x.isEnumMember(t)?t.getNameNode().getSymbol()??t.getSymbol():t.getSymbol()}catch{return}}function Gn(t,e){let n=t.getDescendantAtPos(e);if(!n)return;let r=n;if(!x.isCallExpression(r)&&!x.isNewExpression(r)&&(r=n.getFirstAncestor(s=>x.isCallExpression(s)||x.isNewExpression(s))??void 0),!r||!x.isCallExpression(r)&&!x.isNewExpression(r))return;let i=r.getExpression();try{return x.isIdentifier(i)?i.getSymbol():x.isPropertyAccessExpression(i)?i.getNameNode().getSymbol()??i.getSymbol():i.getSymbol()}catch{return}}async function Yn(t){let{sf:e,fileRel:n,preDeleted:r,meta:i,projectRoot:s,lang:a}=t,u=Tt(e,(g,y)=>It(n,g,a,y),new Set,{includeComments:!1}),h=new Map;e.forEachDescendant(g=>{if(!Vn(g))return;let y;try{y=It(n,g,a)}catch{return}let N=Dt(Qn(g),s);N&&(h.has(y)||h.set(y,N))});let p=[],m=new Map,b=u.exports.filter(g=>g.kind!=="reexport"),A=u.exports.filter(g=>g.kind==="reexport");for(let g of b)if(g.kind==="local"){let y=g.isDefault?"default":g.name;if(!y||m.has(y))continue;let N=g.nodeId;p.push([n,y,N,0,null,null,g.isDefault?"default":"named"]),m.set(y,N)}else if(g.kind==="alias"){let y=g.exported;if(!y||m.has(y))continue;p.push([n,y,null,0,null,g.local,"alias"]),m.set(y,"alias")}for(let g of A){let y=g.moduleSpecifier;if(!y)continue;let N=y;if(g.isNamespace){let S=g.alias||"*";if(m.has(S))continue;p.push([n,S,null,1,N,g.name||S,"reexport_star"]),m.set(S,"reexport")}else{let S=g.alias||g.name;if(!S||m.has(S))continue;p.push([n,S,null,1,N,g.name||S,"reexport_named"]),m.set(S,"reexport")}}let C=[],w=null;try{let g=e.getFullText?.();typeof g=="string"&&(w=g)}catch{w=null}if(w==null)try{let g=e.getFullText();w=typeof g=="string"?g:null}catch{w=null}for(let g of u.nodes){let{nodeId:y,nodeName:N,containerKind:S,containerRawKind:K,containerRawKindSource:j,isExported:T,kind:D,rawKind:O,rawKindSource:B,semanticKind:q,start:V,end:fe,paramCount:qe,metadata:Q}=g,He=Q&&Object.keys(Q).length?JSON.stringify(Q):null,Cn=h.get(y)??null;C.push([y,N??null,D,O??D,B??null,q??null,V,fe,T?1:0,S??"module",K??S??"module",j??null,qe,null,null,Cn,He])}let M=[];for(let g of u.references){let{name:y,kind:N,containerId:S,containerName:K,expression:j,objectName:T,start:D,end:O}=g,B=null,q=null,V=Dt(Gn(e,D),s),fe=y?u.localDeclarations.get(y):void 0;fe&&(B=fe,q=n,V||(V=h.get(fe)??null));let qe=Ne({sourceFile:n,sourceStart:D,sourceEnd:O,refKind:N,refName:y,targetFile:q,targetNodeId:B}),Q={};j&&(Q.expression=j),T&&(Q.objectName=T),K&&(Q.containerName=K);let He=Object.keys(Q).length?JSON.stringify(Q):null;M.push([qe,n,S,y,N,D,O,B,q,B?"resolved":"unresolved",T??null,null,null,V,He])}let l=[],P=[];for(let g of u.imports){let y=g.moduleSpecifier??null;l.push([n,y,g.isTypeOnly?1:0]),g.defaultImport&&P.push([n,y,"default",g.defaultImport,"default",g.isTypeOnly?1:0]),g.namespaceImport&&P.push([n,y,"namespace",g.namespaceImport,"*",g.isTypeOnly?1:0]);for(let N of g.namedImports){let S=N.alias||N.name;P.push([n,y,"named",S,N.name,g.isTypeOnly?1:0])}}let R=Ge.join(s,n),d=i?.size,v=i?.mtime;if(d===void 0||v===void 0)try{let g=Jn.statSync(R);d=g.size,v=Math.floor(g.mtimeMs)}catch{}let E=new Date().toISOString(),_=[n,v??null,d??null,"completed",E],$=null;if(typeof w=="string")$={blobOid:n,content:w};else try{let g=e.getFullText?.();typeof g=="string"&&($={blobOid:n,content:g})}catch(g){console.log(`[TypescriptIndexer] Failed to compute FTS payload for ${n}:`,g?.message??g)}return{payload:{lang:a,fileRel:n,preDeleted:r,exportRows:p,nodeRows:C,referenceRows:M,importRows:l,importBindingRows:P,fileRow:_,fts:$},fileSize:d,mtime:v}}var Qe=class{constructor(e,n){this.project=null;this.filesProcessed=0;this.projectRoot=e,this.lang=n}getProject(){return this.project||(this.project=new Wn({useInMemoryFileSystem:!0,skipAddingFilesFromTsConfig:!0})),this.project}disposeProject(){if(this.project){try{let e=this.project.getLanguageService().compilerObject;typeof e?.dispose=="function"&&e.dispose()}catch{}this.project=null}}async process(e){let r=this.getProject().createSourceFile(Ge.join(this.projectRoot,e.relPath),e.content,{overwrite:!0}),i=await Yn({sf:r,fileRel:e.relPath,preDeleted:!!e.preDeleted,meta:e.meta,projectRoot:this.projectRoot,lang:e.lang});return this.filesProcessed++,this.filesProcessed>=Xn&&(this.disposeProject(),this.filesProcessed=0),{payload:i.payload,fileSize:i.fileSize,mtime:i.mtime}}};function Zn(t){return t==="ts"?[".ts",".tsx",".mts",".cts"]:t==="js"?[".js",".jsx",".mjs",".cjs"]:[]}function Ye(t){return{id:t,extensions:Zn(t),indexingMode:"worker",createIndexer:e=>new Qe(e,t)}}import Ae from"fs";import ee from"path";import{spawn as rr,spawnSync as Lt}from"child_process";import er from"fs";var ce=class{constructor(e=5e3){this.maxEntries=e;this.cache=new Map}get(e,n){let r=this.cache.get(e);if(!r)return null;let i=n?.mtime??null,s=n?.size??null;return i!=null&&s!=null&&r.mtime===i&&r.size===s?r.result:null}set(e,n,r){let i=n?.mtime??null,s=n?.size??null;this.cache.set(e,{mtime:i,size:s,result:r}),this.cache.size>this.maxEntries&&this.cache.clear()}};oe();var Ze=class{constructor(e,n,r,i){this.projectRoot=e;this.lang=n;this.parse=r;this.exportKind=i;this.cache=new ce}async process(e){let n=e.meta?.mtime,r=e.meta?.size;if(n==null||r==null)try{let a=er.statSync(e.absPath);n=Math.floor(a.mtimeMs),r=a.size}catch{}let i=this.cache.get(e.absPath,{mtime:n,size:r});if(i)return me({lang:this.lang,fileRel:e.relPath,content:e.content,meta:{mtime:n,size:r},preDeleted:e.preDeleted,parsed:i,resolveNodeId:Kt(e.relPath,i,this.lang),exportKind:this.exportKind??"cli"});let s=null;try{s=await this.parse({absPath:e.absPath,relPath:e.relPath,content:e.content,meta:{mtime:n,size:r},projectRoot:this.projectRoot,lang:this.lang})}catch(a){try{console.log(`[CliContract:${this.lang}] parse threw for ${e.relPath}: ${a?.message||String(a)}`)}catch{}return ge(this.lang,e.relPath,{mtime:n,size:r})}return!s||s.error?ge(this.lang,e.relPath,{mtime:n,size:r}):(this.cache.set(e.absPath,{mtime:n,size:r},s),me({lang:this.lang,fileRel:e.relPath,content:e.content,meta:{mtime:n,size:r},preDeleted:e.preDeleted,parsed:s,resolveNodeId:Kt(e.relPath,s,this.lang),exportKind:this.exportKind??"cli"}))}};function Kt(t,e,n){let r=new Map;for(let i of e.nodes??[]){if(!i.name||i.containerKind||r.has(i.name))continue;let s=`${t}#${i.start}-${i.end}:${G.getAbbrev(i.kind,n)}`;r.set(i.name,s)}return i=>r.get(i)??null}function W(t){return{id:t.id,extensions:t.extensions,indexingMode:"worker",createIndexer:e=>new Ze(e,t.id,t.parse,t.exportKind),resolveSpan:t.resolve?async(e,n,r)=>t.resolve({projectRoot:e,absPath:n,nodePath:r,lang:t.id}):void 0}}import tr from"fs";import et from"path";var Ft=null;function nr(t){for(let e of t)if(tr.existsSync(e))return e;return null}function X(t){let e=Ft?.toolsRoot??process.env.PANDO_TOOLS_ROOT,n=Ft?.runtimeRoot??process.env.PANDO_RUNTIME_ROOT,r=[e?et.join(e,t):null,n?et.join(n,"tools",t):null,et.resolve(process.cwd(),"tools",t)].filter(i=>!!i);return nr(r)}function H(...t){try{let e=t.map(n=>{if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}).join(" ");process.stderr.write(e+`
|
|
6
|
-
`)}catch{}}var Te=class{constructor(e,n){this.interpreter=e;this.scriptPath=n;this.buffer=Buffer.alloc(0);this.pending=new Map;this.seq=1;this.closed=!1;if(this.proc=
|
|
5
|
+
`)}catch{}}}});import{Node as Ti}from"ts-morph";var Rt=ae(()=>{"use strict";We();Je();Et();Z()});import*as kn from"xxhash-wasm";var In,Dn,Bi,We=ae(()=>{"use strict";Rt();In="__pando_xxhash_instance__",Dn=globalThis,Bi=Dn[In]??null});oe();function Ne(t){let e=`${t.sourceFile}#${t.sourceStart}-${t.sourceEnd}`,n=t.refKind??"",r=t.refName??"",i=t.targetFile??"",s=t.targetStart!=null&&t.targetEnd!=null?`#${t.targetStart}-${t.targetEnd}`:"",a=t.targetNodeId??"",o=`${e}:REF:${n}:${r}|${i}${s}|${a}`;return yt(o)}function bt(t){let e=[],n=new Set,r=i=>{!i?.name||n.has(i.name)||(n.add(i.name),e.push(i))};for(let i of t.exports??[])r(i);for(let i of t.explicitExports??[])r({name:i});for(let i of t.modulePublic??[])r({name:i});return e}Z();function ge(t,e,n){let r=new Date().toISOString();return{payload:{lang:t,fileRel:e,preDeleted:!1,exportRows:[],nodeRows:[],referenceRows:[],importRows:[],importBindingRows:[],fileRow:[e,n?.mtime??null,n?.size??null,"failed",r],fts:null},fileSize:n?.size,mtime:n?.mtime}}function me(t){let{lang:e,fileRel:n,content:r,meta:i,preDeleted:s,parsed:a,resolveNodeId:o,exportKind:u}=t,h=[];for(let d of a.nodes??[]){let v=d.rawKind??d.kind,E=d.rawKindSource??"cli",_=d.containerRawKind??d.containerKind??null,$=d.containerRawKindSource??(_?"cli":null),g=d.scopeChain??null,y=Array.isArray(g)?JSON.stringify(g):typeof g=="string"?g:null,N=`${n}#${d.start}-${d.end}:${G.getAbbrev(d.kind,e)}`,S=(e==="c"||e==="cpp"||e==="java"||e==="clojure")&&d.name?`${N}:${d.name}`:N,K=d.metadata&&Object.keys(d.metadata).length?JSON.stringify(d.metadata):null;h.push([S,d.name,d.kind,v,E,d.semanticKind??null,d.start,d.end,typeof d.isExported=="number"?d.isExported:0,d.containerKind??null,_,$,typeof d.paramCount=="number"?d.paramCount:null,d.qualifiedName??null,y,d.symbolKey??null,K])}let p=[],m=new Set;for(let d of bt(a)){if(!d.name||m.has(d.name))continue;m.add(d.name);let v=d.nodeId??(o?o(d.name):null);p.push([n,d.name,v??null,d.isReexport?1:0,d.reexportFrom??null,d.reexportName??null,d.exportKind??u??"cli",d.targetSymbolKey??null])}let b=[],A=new Map,C=new Map;for(let d of h){let v=d[0]!=null?String(d[0]):null,E=d[13]!=null?String(d[13]):null,_=d[15]!=null?String(d[15]):null;v&&(E&&!A.has(E)&&A.set(E,v),_&&!C.has(_)&&C.set(_,v))}if(Y()&&e==="clojure"&&(a.references??[]).length>0){let d=Array.from(A.keys()).slice(0,10),v=Array.from(C.keys()).slice(0,10),E=(a.references??[]).slice(0,10).map($=>$.containerQualifiedName),_={file:n,nodeCount:h.length,refCount:(a.references??[]).length,nodeQualifiedNames:d,nodeSymbolKeys:v,refContainers:E,qualifiedNameMapSize:A.size,symbolKeyMapSize:C.size};try{console.error("[CliPayload][CLOJURE-DEBUG] source_node_id lookup context",_)}catch{}}for(let d of a.references??[]){let v=d.targetNodeId??(o&&d.refName?o(d.refName):null),E=d.targetFile??(v?n:null),_=d.sourceNodeId??(d.containerQualifiedName?A.get(d.containerQualifiedName)??null:null)??(d.containerQualifiedName?C.get(d.containerQualifiedName)??null:null),$=Ne({sourceFile:n,sourceStart:d.sourceStart,sourceEnd:d.sourceEnd,refKind:d.refKind,refName:d.refName,targetFile:E??null,targetStart:d.targetStart??null,targetEnd:d.targetEnd??null,targetNodeId:v??d.targetNodeId??null}),g=d.metadata&&Object.keys(d.metadata).length?JSON.stringify(d.metadata):null;b.push([$,n,_,d.refName??null,d.refKind,d.sourceStart,d.sourceEnd,v??d.targetNodeId??null,E??null,v||d.targetNodeId||d.targetFile?"resolved":"unresolved",d.receiverName??null,typeof d.arity=="number"?d.arity:null,d.containerQualifiedName??null,d.targetSymbolKey??null,d.confidence??null,g])}if(Y()&&e==="clojure"&&b.length>0){let d=b.reduce((E,_)=>E+(_?.[2]!=null?1:0),0),v=b.reduce((E,_)=>E+(_?.[12]!=null?1:0),0);try{console.error("[CliPayload] clojure source-node summary",{file:n,refs:b.length,sourceNodeCount:d,containerCount:v,sample:b.slice(0,5).map(E=>({sourceNodeId:E[2]==null?null:String(E[2]),refName:E[3],refKind:E[4],containerQualifiedName:E[12]}))})}catch{}}let w=[];for(let d of a.imports??[])w.push([n,d.module??null,d.isTypeOnly??0]);let M=[];for(let d of a.importBindings??[])M.push([n,d.module??null,d.kind,d.localName,d.importedName,d.isTypeOnly??0]);let l=new Date().toISOString(),P=[n,i?.mtime??null,i?.size??null,"completed",l];return{payload:{lang:e,fileRel:n,preDeleted:!!s,exportRows:p,nodeRows:h,referenceRows:b,importRows:w,importBindingRows:M,fileRow:P,fts:typeof r=="string"?{blobOid:n,content:r}:null},fileSize:i?.size,mtime:i?.mtime}}var Ce=["ts","js","python","c","cpp","csharp","dart","java","clojure"];function xt(t){return typeof t=="string"&&Ce.includes(t)}wn();Z();function St(){return["clojure"]}function Pn(t){let e=new Set;for(let n of t)xt(n)&&e.add(n);return Ce.filter(n=>e.has(n))}function vt(t){let e=new Set(Pn(t)),n={};for(let r of Ce){if(e.has(r)){n[r]={enabled:!0,source:"embedded"};continue}n[r]={enabled:!1,source:"none",reason:"disabled by language support config"}}return{byLanguage:n}}import Qe from"path";import Hn from"fs";import{Project as Jn,Node as x}from"ts-morph";import{Node as f,SyntaxKind as le}from"ts-morph";import*as J from"typescript";import{SyntaxKind as he}from"ts-morph";var He={LINE_COMMENT:{kind:9001,name:"LineComment",triviaKind:he.SingleLineCommentTrivia},BLOCK_COMMENT:{kind:9002,name:"BlockComment",triviaKind:he.MultiLineCommentTrivia},JSDOC_COMMENT:{kind:9003,name:"JSDocComment",triviaKind:he.MultiLineCommentTrivia}};function Nt(t,e){return t===he.SingleLineCommentTrivia?He.LINE_COMMENT:t===he.MultiLineCommentTrivia&&e.startsWith("/**")?He.JSDOC_COMMENT:He.BLOCK_COMMENT}We();Je();import{Node as F,SyntaxKind as c,Scope as Xe}from"ts-morph";var Qi=new Set([c.ArrayLiteralExpression,c.ArrayType,c.ArrowFunction,c.AsExpression,c.AssertClause,c.AssertEntry,c.AwaitExpression,c.BigIntLiteral,c.BinaryExpression,c.BindingElement,c.Block,c.CallExpression,c.CallSignature,c.CaseClause,c.CatchClause,c.ClassDeclaration,c.ClassExpression,c.ClassStaticBlockDeclaration,c.ComputedPropertyName,c.ConditionalExpression,c.ConditionalType,c.ConstructSignature,c.Constructor,c.ConstructorType,c.Decorator,c.DefaultClause,c.DoStatement,c.ElementAccessExpression,c.EnumDeclaration,c.EnumMember,c.ExportAssignment,c.ExportDeclaration,c.ExportSpecifier,c.ExpressionStatement,c.ExpressionWithTypeArguments,c.FalseKeyword,c.ForInStatement,c.ForOfStatement,c.ForStatement,c.FunctionDeclaration,c.FunctionExpression,c.FunctionType,c.GetAccessor,c.Identifier,c.IfStatement,c.ImportAttribute,c.ImportAttributes,c.ImportClause,c.ImportDeclaration,c.ImportEqualsDeclaration,c.ImportSpecifier,c.ImportType,c.IndexSignature,c.IndexedAccessType,c.InferType,c.InterfaceDeclaration,c.IntersectionType,c.JsxAttribute,c.JsxClosingElement,c.JsxClosingFragment,c.JsxElement,c.JsxExpression,c.JsxFragment,c.JsxOpeningElement,c.JsxOpeningFragment,c.JsxSelfClosingElement,c.JsxSpreadAttribute,c.JsxText,c.LiteralType,c.MappedType,c.MetaProperty,c.MethodDeclaration,c.MethodSignature,c.ModuleDeclaration,c.NamedExports,c.NamedImports,c.NamedTupleMember,c.NamespaceExport,c.NamespaceExportDeclaration,c.NamespaceImport,c.NewExpression,c.NoSubstitutionTemplateLiteral,c.NonNullExpression,c.NullKeyword,c.NumericLiteral,c.ObjectLiteralExpression,c.OptionalType,c.Parameter,c.ParenthesizedType,c.PostfixUnaryExpression,c.PrefixUnaryExpression,c.PrivateIdentifier,c.PropertyAccessExpression,c.PropertyAssignment,c.PropertyDeclaration,c.PropertySignature,c.QualifiedName,c.RegularExpressionLiteral,c.RestType,c.ReturnStatement,c.SatisfiesExpression,c.SetAccessor,c.ShorthandPropertyAssignment,c.SourceFile,c.SpreadAssignment,c.SpreadElement,c.StringLiteral,c.SwitchStatement,c.TaggedTemplateExpression,c.TemplateExpression,c.TemplateLiteralType,c.ThisType,c.ThrowStatement,c.TrueKeyword,c.TryStatement,c.TupleType,c.TypeAliasDeclaration,c.TypeLiteral,c.TypeOfExpression,c.TypeOperator,c.TypeParameter,c.TypePredicate,c.TypeQuery,c.TypeReference,c.UnionType,c.VariableDeclaration,c.VariableStatement,c.WhileStatement,c.YieldExpression]);function Kn(t){try{let e=t.getDecorators;if(typeof e!="function")return[];let n=new Set;for(let r of e.call(t)){let i;try{i=r.getName?.()}catch{i=void 0}if(!i)try{i=r.getExpression?.()?.getText?.()}catch{i=void 0}if(i){let s=String(i).trim();s&&n.add(s)}}return Array.from(n)}catch{return[]}}function Fn(t){try{if(!F.isClassDeclaration(t))return[];let e=t.getImplements();if(!e||e.length===0)return[];let n=new Set;for(let r of e)try{let i=r.getExpression(),s=i?i.getText():r.getText();s&&n.add(s.trim())}catch{}return Array.from(n)}catch{return[]}}function Mn(t){try{let e=new Set;if(F.isClassDeclaration(t)){let n=t.getExtends();if(n)try{let r=n.getExpression(),i=r?r.getText():n.getText();i&&e.add(i.trim())}catch{}}else if(F.isInterfaceDeclaration(t)){let n=t.getExtends();for(let r of n)try{let i=r.getText();i&&e.add(i.trim())}catch{}}return Array.from(e)}catch{return[]}}function _t(t){try{if("getReturnTypeNode"in t&&typeof t.getReturnTypeNode=="function"){let e=t.getReturnTypeNode();if(e)return e.getText()}if("getReturnType"in t&&typeof t.getReturnType=="function"){let e=t.getReturnType();if(e&&typeof e.getText=="function"){let n=e.getText();if(n)return String(n)}}return null}catch{return null}}function On(t){try{if(typeof t.getScope!="function")return null;let e=t.getScope();return e===Xe.Private||e===Xe.Protected||e===Xe.Public?e:null}catch{return null}}function At(t){let e={kind:t.getKindName()},n=Kn(t);if(n.length&&(e.decorators=n),I(e,"flags",()=>t.getFlags()),(F.isFunctionDeclaration(t)||F.isMethodDeclaration(t)||F.isFunctionExpression(t))&&(I(e,"isAsync",()=>t.isAsync()),I(e,"isGenerator",()=>t.isGenerator()),I(e,"parameterCount",()=>t.getParameters().length),I(e,"returnType",()=>_t(t)),F.isFunctionDeclaration(t)&&I(e,"isExported",()=>t.isExported())),F.isClassDeclaration(t)){I(e,"isAbstract",()=>t.isAbstract()),I(e,"isExported",()=>t.isExported());let i=Mn(t);i.length&&(e.extends=i);let s=Fn(t);s.length&&(e.implements=s)}if(F.isVariableDeclaration(t)&&(I(e,"declarationKind",()=>t.getVariableStatement()?.getDeclarationKind()),I(e,"hasInitializer",()=>t.hasInitializer()),I(e,"type",()=>t.getTypeNode()?.getText())),(F.isPropertyDeclaration(t)||F.isPropertySignature(t)||F.isParameterDeclaration(t))&&(I(e,"isStatic",()=>t.isStatic?.()),I(e,"isReadonly",()=>t.isReadonly?.()),I(e,"isOptional",()=>t.hasQuestionToken?.()),I(e,"scope",()=>t.getScope?.())),(F.isMethodDeclaration(t)||F.isMethodSignature(t)||F.isGetAccessorDeclaration(t)||F.isSetAccessorDeclaration(t))&&(I(e,"isStatic",()=>t.isStatic?.()),I(e,"isAbstract",()=>t.isAbstract?.()),I(e,"isAsync",()=>t.isAsync?.()),I(e,"returnType",()=>_t(t)),I(e,"scope",()=>t.getScope?.())),F.isCallExpression(t)){let i=t.getExpression();if(F.isPropertyAccessExpression(i)){e.propertyName=i.getName();let s=i.getExpression();F.isIdentifier(s)&&(e.objectName=s.getText())}else F.isIdentifier(i)&&(e.functionName=i.getText());e.argumentCount=t.getArguments().length,e.callExpression=i.getText()}let r=On(t);return r&&(e.visibility=r),e.isReadonly||I(e,"isReadonly",()=>t.isReadonly?.()),F.isImportDeclaration(t)&&(I(e,"moduleSpecifier",()=>t.getModuleSpecifier()?.getLiteralText()),I(e,"isTypeOnly",()=>t.isTypeOnly()),I(e,"namedImports",()=>t.getNamedImports()?.map(i=>i.getName()).join(", ")),I(e,"defaultImport",()=>t.getDefaultImport()?.getText())),Object.keys(e).forEach(i=>{e[i]===void 0&&delete e[i]}),e}function I(t,e,n){try{let r=n();r!=null&&(t[e]=r)}catch{}}Pe();function Ln(t){if(t.kind==="local"){let r=t.isDefault?"default":t.name;return r?{name:r,priority:t.isDefault?4:3}:null}if(t.kind==="alias")return t.exported?{name:t.exported,priority:2}:null;let e=t.isNamespace??!1,n=t.alias||t.name||(e?"*":null);return n?{name:n,priority:e?0:1}:null}function jn(t){if(t.length<2)return t;let e=new Map;for(let n of t){let r=Ln(n);if(!r)continue;let i=e.get(r.name);(!i||r.priority>i.priority)&&e.set(r.name,{record:n,priority:r.priority})}return Array.from(e.values()).map(n=>n.record)}function Re(t){try{if(t&&typeof t.getName=="function"){let e=t.getName();if(typeof e=="string"&&e.length>0)return e}}catch{}return null}function Ue(t){let e;try{let r=t.getStart?.(!1);typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}if(e===void 0)try{let r=t.getStart?.();typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}if(e===void 0)try{let r=t.getFullStart?.();typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}e===void 0&&(e=0);let n;try{let r=t.getEnd?.();typeof r=="number"&&Number.isFinite(r)&&(n=r)}catch{}if(n===void 0)try{let r=t.getStart?.();typeof r=="number"&&Number.isFinite(r)&&(n=r)}catch{}return n===void 0&&(n=e),n<e&&(n=e),{start:e,end:n}}function $n(t){try{if(f.isFunctionDeclaration(t)||f.isMethodDeclaration(t)||f.isConstructorDeclaration(t)||f.isFunctionExpression(t)||f.isArrowFunction(t)){let e=t.getParameters?.();if(Array.isArray(e))return e.length}}catch{}return null}function _e(t,e){try{return typeof t?.hasModifier=="function"&&t.hasModifier(e)}catch{return!1}}function Bn(t,e,n){if(!f.isImportDeclaration(t))return;let i={moduleSpecifier:t.getModuleSpecifierValue(),isTypeOnly:t.isTypeOnly(),namedImports:[]};try{let s=t.getDefaultImport();if(s){let a=s.getText();i.defaultImport=a,n(a,s)}}catch{}try{let s=t.getNamespaceImport();if(s){let a=s.getText();i.namespaceImport=a,n(a,s)}}catch{}try{t.getNamedImports().forEach(s=>{try{let a=s.getName(),o=s.getAliasNode(),u=o?o.getText():void 0;a&&(i.namedImports.push({name:a,alias:u||void 0}),n(u||a,s.getNameNode()))}catch{}})}catch{}e.push(i)}function zn(t,e){if(f.isExportDeclaration(t)){let n=t.getModuleSpecifierValue();if(n){if(t.getNamedExports().length>0)try{t.getNamedExports().forEach(r=>{try{let i=r.getName(),s=r.getAliasNode(),a=s?s.getText():void 0;e.push({kind:"reexport",moduleSpecifier:n,name:i||void 0,alias:a||void 0,isNamespace:!1})}catch{}})}catch{}else if(t.isNamespaceExport())try{let i=t.getNamespaceExport()?.getName();e.push({kind:"reexport",moduleSpecifier:n,name:i||"*",alias:i||void 0,isNamespace:!0})}catch{e.push({kind:"reexport",moduleSpecifier:n,name:"*",isNamespace:!0})}else e.push({kind:"reexport",moduleSpecifier:n,name:"*",isNamespace:!0});return}try{t.getNamedExports().forEach(r=>{try{let i=r.getName();if(!i)return;let s=r.getAliasNode(),a=s?s.getText():i;e.push({kind:"alias",local:i,exported:a})}catch{}})}catch{}return}if(f.isExportAssignment(t))try{let n=t.getExpression();if(n&&f.isIdentifier(n)){let r=n.getText();e.push({kind:"alias",local:r,exported:"default"})}}catch{}}function qn(t,e,n,r){if(!_e(t,le.ExportKeyword))return;let i=_e(t,le.DefaultKeyword);if(f.isVariableStatement(t)){try{let s=t.getDeclarationList().getDeclarations();for(let a of s){let o=Re(a)??a.getName?.()??null;if(o){n(o,a);let u=r(a);u&&e.push({kind:"local",name:o,isDefault:i,nodeId:u})}}}catch{}return}if(f.isFunctionDeclaration(t)||f.isClassDeclaration(t)||f.isInterfaceDeclaration(t)||f.isEnumDeclaration(t)||f.isTypeAliasDeclaration(t)||f.isModuleDeclaration(t)){let s=Re(t)||(i?"default":null),a=r(t);a&&e.push({kind:"local",name:s??"default",isDefault:i,nodeId:a})}}function Tt(t,e,n,r){let i=[],s=[],a=new Set,o=new Map,u=[],h=[],p=[{node:t,id:null,kind:"module",rawKind:"SourceFile",rawKindSource:"ts-morph",name:null,isExported:!1}],m=l=>{if(!l)return null;try{return e(l)}catch{return null}},b=(l,P)=>{if(l&&(a.has(l)||a.add(l),P&&!o.has(l))){let R=m(P);R&&o.set(l,R)}},A=l=>f.isFunctionDeclaration(l)||f.isFunctionExpression(l)||f.isArrowFunction(l)||f.isClassDeclaration(l)||f.isClassExpression(l)||f.isInterfaceDeclaration(l)||f.isEnumDeclaration(l)||f.isEnumMember(l)||f.isTypeAliasDeclaration(l)||f.isModuleDeclaration(l)||f.isMethodDeclaration(l)||f.isMethodSignature(l)||f.isPropertyDeclaration(l)||f.isPropertySignature(l)||f.isGetAccessorDeclaration(l)||f.isSetAccessorDeclaration(l)||f.isConstructorDeclaration(l)||f.isVariableDeclaration(l)||f.isReturnStatement(l)||f.isIfStatement(l)||f.isForStatement(l)||f.isForInStatement(l)||f.isForOfStatement(l)||f.isWhileStatement(l)||f.isDoStatement(l)||f.isSwitchStatement(l)||f.isCaseClause(l)||f.isDefaultClause(l)||f.isTryStatement(l)||f.isCatchClause(l)||f.isThrowStatement(l)||f.isExpressionStatement(l)||f.isBlock(l),C=l=>f.isSourceFile(l)||f.isFunctionDeclaration(l)||f.isFunctionExpression(l)||f.isArrowFunction(l)||f.isMethodDeclaration(l)||f.isConstructorDeclaration(l)||f.isClassDeclaration(l)||f.isClassExpression(l)||f.isModuleDeclaration(l),w=l=>{let P=Re(l);if(P)return P;if(f.isConstructorDeclaration(l))return"constructor";if(f.isArrowFunction(l)||f.isFunctionExpression(l)){let R=l.getParent();try{if(f.isVariableDeclaration(R))return R.getName();if(f.isPropertyAssignment(R)||f.isPropertyDeclaration(R)||f.isPropertySignature(R))return R.getName?.()??null;if(f.isShorthandPropertyAssignment(R))return R.getNameNode()?.getText()??null;if(f.isExportAssignment(R))return"default"}catch{}}if(f.isEnumMember(l))try{return l.getName()}catch{return null}if(f.isVariableDeclaration(l))try{return l.getName()}catch{return null}return null},M=l=>{let P=p[p.length-1],R=P?.id??null,d=P?.kind??"module",v=P?.name??null;if(f.isImportDeclaration(l))Bn(l,u,b);else if(f.isImportEqualsDeclaration(l))try{let g=l.getModuleReference();if(g&&f.isExternalModuleReference(g)){let y=g.getExpression(),N;if(y&&f.isStringLiteral(y))N=y.getLiteralText();else if(y){let S=y.getText();N=typeof S=="string"?S.replace(/^['"]|['"]$/g,""):void 0}if(N){let K=l.getNameNode()?.getText(),j={moduleSpecifier:N,isTypeOnly:!1,namedImports:[]};K&&(j.defaultImport=K,b(K,l)),u.push(j)}}}catch{}(f.isExportDeclaration(l)||f.isExportAssignment(l))&&zn(l,h),qn(l,h,b,m);let E=A(l),_=w(l);if(E){let g=e(l),y=_e(l,le.ExportKeyword)||P?.isExported||!1,N=l.getNameNode?.()?.getText?.()??null,S=_??Re(l)??N;_?b(_,l):S&&b(S,l);let K=Ue(l),j=$n(l),T={...At(l)};if(R&&(T.containerId=R),d&&(T.containerKind=d),v&&(T.containerName=v),f.isModuleDeclaration(l))try{let B=l.getNameNode?.();if(B){let q=Ue(B);Number.isFinite(q.start)&&Number.isFinite(q.end)&&(T.moduleNameStart=q.start,T.moduleNameEnd=q.end)}}catch{}let D=Object.keys(T).length?T:null,O=ye(l);we(O,{source:"ts-node-collector",file:t.getFilePath(),name:S??null}),i.push({nodeId:g,nodeName:S??null,containerId:R,containerKind:d,containerRawKind:P?.rawKind??null,containerRawKindSource:P?.rawKindSource??null,containerName:v,isExported:y,kind:O.kind,rawKind:O.rawKind,rawKindSource:O.rawKindSource,semanticKind:O.semanticKind??null,start:K.start,end:K.end,paramCount:j,metadata:D})}if(f.isCallExpression(l)||f.isNewExpression(l)){let g=l.getExpression(),y=null,N;try{if(f.isIdentifier(g))y=g.getText();else if(f.isPropertyAccessExpression(g)){y=g.getName();let j=g.getExpression();f.isIdentifier(j)&&(N=j.getText())}}catch{}let S="";try{S=g.getText()}catch{}let K=Ue(l);if(s.push({name:y,kind:f.isNewExpression(l)?"new":"call",containerId:R,containerKind:d,containerName:v,expression:S,objectName:N,start:K.start,end:K.end}),f.isCallExpression(l))try{if(f.isIdentifier(g)&&g.getText()==="require"){let T=l.getArguments()[0],D;if(T&&(f.isStringLiteral(T)||f.isNoSubstitutionTemplateLiteral(T)))try{D=T.getLiteralText()}catch{let O=T.getText();D=typeof O=="string"?O.replace(/^['"]|['"]$/g,""):void 0}if(D){let O={moduleSpecifier:D,isTypeOnly:!1,namedImports:[]},B=l.getParent();if(B&&f.isVariableDeclaration(B)){let q=B.getNameNode();try{if(f.isIdentifier(q)){let V=q.getText();V&&(O.defaultImport=V,b(V,B))}}catch{}}u.push(O)}}else if(g?.getKind?.()===le.ImportKeyword){let T=l.getArguments()[0],D;if(T&&(f.isStringLiteral(T)||f.isNoSubstitutionTemplateLiteral(T)))try{D=T.getLiteralText()}catch{let O=T.getText();D=typeof O=="string"?O.replace(/^['"]|['"]$/g,""):void 0}D&&u.push({moduleSpecifier:D,isTypeOnly:!1,namedImports:[]})}}catch{}}if(f.isCallExpression(l)){let g=l.getExpression();try{if(f.isIdentifier(g)&&g.getText()==="require"){let y=l.getParent();if(!(y&&f.isExternalModuleReference(y))){let S=l.getArguments()[0],K;if(S&&(f.isStringLiteral(S)||f.isNoSubstitutionTemplateLiteral(S)))try{K=S.getLiteralText()}catch{K=S.getText().replace(/^['"]|['"]$/g,"")}if(K){let j={moduleSpecifier:K,isTypeOnly:!1,namedImports:[]};if(y&&f.isVariableDeclaration(y)){let T=y.getNameNode();try{if(f.isIdentifier(T)){let D=T.getText();D&&(j.defaultImport=D,b(D,y))}}catch{}}u.push(j)}}}else if(g?.getKind?.()===le.ImportKeyword){let N=l.getArguments()[0],S;if(N&&(f.isStringLiteral(N)||f.isNoSubstitutionTemplateLiteral(N)))try{S=N.getLiteralText()}catch{S=N.getText().replace(/^['"]|['"]$/g,"")}S&&u.push({moduleSpecifier:S,isTypeOnly:!1,namedImports:[]})}}catch{}}let $=!1;if(C(l)){let g=m(l)??e(l),y=Pt(l);p.push({node:l,id:g,kind:y.kind,rawKind:y.rawKind,rawKindSource:y.rawKindSource,name:_??v,isExported:_e(l,le.ExportKeyword)||P?.isExported||!1}),$=!0}l.forEachChild(M),$&&p.pop()};if(t.forEachChild(M),r?.includeComments===!0||process.env.AST_INDEX_COMMENTS==="1")try{let l=t.getFullText(),P=J.createScanner(J.ScriptTarget.Latest,!1,J.LanguageVariant.Standard,l),R=new Set;for(let d=P.scan();d!==J.SyntaxKind.EndOfFileToken;d=P.scan()){if(d!==J.SyntaxKind.SingleLineCommentTrivia&&d!==J.SyntaxKind.MultiLineCommentTrivia)continue;let v=P.getTokenPos(),E=P.getTextPos(),_=`${v}-${E}`;if(R.has(_)||(R.add(_),n.has(_)))continue;n.add(_);let $=l.substring(v,E),g=Nt(d,$),N=e({getKindName:()=>g.name,getKind:()=>g.kind,getPos:()=>v,getEnd:()=>E,getStart:()=>v,getFullStart:()=>v,getText:()=>$,getSourceFile:()=>t,getParent:()=>t,__isComment:!0,__commentPosition:"standalone",__attachedTo:null},"COM");i.push({nodeId:N,nodeName:$.substring(0,100),containerId:null,containerKind:"module",containerRawKind:"SourceFile",containerRawKindSource:"ts-morph",containerName:null,isExported:!1,kind:g.name,rawKind:g.name,rawKindSource:"ts-morph",semanticKind:null,start:v,end:E,paramCount:null,metadata:null})}}catch{}return{nodes:i,references:s,declaredNames:a,localDeclarations:o,imports:u,exports:jn(h)}}oe();function kt(t){let e;try{let r=t.getStart?.(!1);typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}if(e===void 0)try{let r=t.getStart?.();typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}if(e===void 0)try{let r=t.getFullStart?.();typeof r=="number"&&Number.isFinite(r)&&(e=r)}catch{}e===void 0&&(e=0);let n;try{let r=t.getEnd?.();typeof r=="number"&&Number.isFinite(r)&&(n=r)}catch{}if(n===void 0)try{let r=t.getStart?.();typeof r=="number"&&Number.isFinite(r)&&(n=r)}catch{}return n===void 0&&(n=e),n<e&&(n=e),{start:e,end:n}}Pe();var Wn=100;function It(t,e,n,r){let{start:i,end:s}=kt(e),a=ye(e);we(a,{source:"ts-node-id",file:t,kind:a.kind});let o=r||G.getAbbrev(a.kind,n);return`${t}#${i}-${s}:${o}`}function Xn(t,e){return Qe.relative(t,e).replace(/\\/g,"/")}function Dt(t,e){if(!t)return null;let n=t;try{let p=t.getAliasedSymbol();p&&(n=p)}catch{}let r=[];try{r=n.getDeclarations()??[]}catch{r=[]}if(!r.length)return null;let s=r.slice().sort((p,m)=>{let b=p.getSourceFile().getFilePath(),A=m.getSourceFile().getFilePath();if(b!==A)return b.localeCompare(A);let C=p.getStart(!1),w=m.getStart(!1);return C!==w?C-w:p.getEnd()-m.getEnd()})[0],a=Xn(e,s.getSourceFile().getFilePath()),o=s.getStart(!1),u=s.getEnd(),h="";try{h=n.getEscapedName()}catch{try{h=n.getName()}catch{h=""}}return`${a}#${o}-${u}:${h}`}function Un(t){return x.isFunctionDeclaration(t)||x.isFunctionExpression(t)||x.isArrowFunction(t)||x.isClassDeclaration(t)||x.isClassExpression(t)||x.isInterfaceDeclaration(t)||x.isEnumDeclaration(t)||x.isEnumMember(t)||x.isTypeAliasDeclaration(t)||x.isModuleDeclaration(t)||x.isMethodDeclaration(t)||x.isMethodSignature(t)||x.isPropertyDeclaration(t)||x.isPropertySignature(t)||x.isGetAccessorDeclaration(t)||x.isSetAccessorDeclaration(t)||x.isConstructorDeclaration(t)||x.isVariableDeclaration(t)||x.isReturnStatement(t)||x.isIfStatement(t)||x.isForStatement(t)||x.isForInStatement(t)||x.isForOfStatement(t)||x.isWhileStatement(t)||x.isDoStatement(t)||x.isSwitchStatement(t)||x.isCaseClause(t)||x.isDefaultClause(t)||x.isTryStatement(t)||x.isCatchClause(t)||x.isThrowStatement(t)||x.isExpressionStatement(t)||x.isBlock(t)}function Vn(t){try{return x.isVariableDeclaration(t)||x.isEnumMember(t)?t.getNameNode().getSymbol()??t.getSymbol():t.getSymbol()}catch{return}}function Qn(t,e){let n=t.getDescendantAtPos(e);if(!n)return;let r=n;if(!x.isCallExpression(r)&&!x.isNewExpression(r)&&(r=n.getFirstAncestor(s=>x.isCallExpression(s)||x.isNewExpression(s))??void 0),!r||!x.isCallExpression(r)&&!x.isNewExpression(r))return;let i=r.getExpression();try{return x.isIdentifier(i)?i.getSymbol():x.isPropertyAccessExpression(i)?i.getNameNode().getSymbol()??i.getSymbol():i.getSymbol()}catch{return}}async function Gn(t){let{sf:e,fileRel:n,preDeleted:r,meta:i,projectRoot:s,lang:a}=t,u=Tt(e,(g,y)=>It(n,g,a,y),new Set,{includeComments:!1}),h=new Map;e.forEachDescendant(g=>{if(!Un(g))return;let y;try{y=It(n,g,a)}catch{return}let N=Dt(Vn(g),s);N&&(h.has(y)||h.set(y,N))});let p=[],m=new Map,b=u.exports.filter(g=>g.kind!=="reexport"),A=u.exports.filter(g=>g.kind==="reexport");for(let g of b)if(g.kind==="local"){let y=g.isDefault?"default":g.name;if(!y||m.has(y))continue;let N=g.nodeId;p.push([n,y,N,0,null,null,g.isDefault?"default":"named"]),m.set(y,N)}else if(g.kind==="alias"){let y=g.exported;if(!y||m.has(y))continue;p.push([n,y,null,0,null,g.local,"alias"]),m.set(y,"alias")}for(let g of A){let y=g.moduleSpecifier;if(!y)continue;let N=y;if(g.isNamespace){let S=g.alias||"*";if(m.has(S))continue;p.push([n,S,null,1,N,g.name||S,"reexport_star"]),m.set(S,"reexport")}else{let S=g.alias||g.name;if(!S||m.has(S))continue;p.push([n,S,null,1,N,g.name||S,"reexport_named"]),m.set(S,"reexport")}}let C=[],w=null;try{let g=e.getFullText?.();typeof g=="string"&&(w=g)}catch{w=null}if(w==null)try{let g=e.getFullText();w=typeof g=="string"?g:null}catch{w=null}for(let g of u.nodes){let{nodeId:y,nodeName:N,containerKind:S,containerRawKind:K,containerRawKindSource:j,isExported:T,kind:D,rawKind:O,rawKindSource:B,semanticKind:q,start:V,end:fe,paramCount:ze,metadata:Q}=g,qe=Q&&Object.keys(Q).length?JSON.stringify(Q):null,Nn=h.get(y)??null;C.push([y,N??null,D,O??D,B??null,q??null,V,fe,T?1:0,S??"module",K??S??"module",j??null,ze,null,null,Nn,qe])}let M=[];for(let g of u.references){let{name:y,kind:N,containerId:S,containerName:K,expression:j,objectName:T,start:D,end:O}=g,B=null,q=null,V=Dt(Qn(e,D),s),fe=y?u.localDeclarations.get(y):void 0;fe&&(B=fe,q=n,V||(V=h.get(fe)??null));let ze=Ne({sourceFile:n,sourceStart:D,sourceEnd:O,refKind:N,refName:y,targetFile:q,targetNodeId:B}),Q={};j&&(Q.expression=j),T&&(Q.objectName=T),K&&(Q.containerName=K);let qe=Object.keys(Q).length?JSON.stringify(Q):null;M.push([ze,n,S,y,N,D,O,B,q,B?"resolved":"unresolved",T??null,null,null,V,qe])}let l=[],P=[];for(let g of u.imports){let y=g.moduleSpecifier??null;l.push([n,y,g.isTypeOnly?1:0]),g.defaultImport&&P.push([n,y,"default",g.defaultImport,"default",g.isTypeOnly?1:0]),g.namespaceImport&&P.push([n,y,"namespace",g.namespaceImport,"*",g.isTypeOnly?1:0]);for(let N of g.namedImports){let S=N.alias||N.name;P.push([n,y,"named",S,N.name,g.isTypeOnly?1:0])}}let R=Qe.join(s,n),d=i?.size,v=i?.mtime;if(d===void 0||v===void 0)try{let g=Hn.statSync(R);d=g.size,v=Math.floor(g.mtimeMs)}catch{}let E=new Date().toISOString(),_=[n,v??null,d??null,"completed",E],$=null;if(typeof w=="string")$={blobOid:n,content:w};else try{let g=e.getFullText?.();typeof g=="string"&&($={blobOid:n,content:g})}catch(g){console.log(`[TypescriptIndexer] Failed to compute FTS payload for ${n}:`,g?.message??g)}return{payload:{lang:a,fileRel:n,preDeleted:r,exportRows:p,nodeRows:C,referenceRows:M,importRows:l,importBindingRows:P,fileRow:_,fts:$},fileSize:d,mtime:v}}var Ve=class{constructor(e,n){this.project=null;this.filesProcessed=0;this.projectRoot=e,this.lang=n}getProject(){return this.project||(this.project=new Jn({useInMemoryFileSystem:!0,skipAddingFilesFromTsConfig:!0})),this.project}disposeProject(){if(this.project){try{let e=this.project.getLanguageService().compilerObject;typeof e?.dispose=="function"&&e.dispose()}catch{}this.project=null}}async process(e){let r=this.getProject().createSourceFile(Qe.join(this.projectRoot,e.relPath),e.content,{overwrite:!0}),i=await Gn({sf:r,fileRel:e.relPath,preDeleted:!!e.preDeleted,meta:e.meta,projectRoot:this.projectRoot,lang:e.lang});return this.filesProcessed++,this.filesProcessed>=Wn&&(this.disposeProject(),this.filesProcessed=0),{payload:i.payload,fileSize:i.fileSize,mtime:i.mtime}}};function Yn(t){return t==="ts"?[".ts",".tsx",".mts",".cts"]:t==="js"?[".js",".jsx",".mjs",".cjs"]:[]}function Ge(t){return{id:t,extensions:Yn(t),indexingMode:"worker",createIndexer:e=>new Ve(e,t)}}import Ae from"fs";import ee from"path";import{spawn as nr,spawnSync as Lt}from"child_process";import Zn from"fs";var ce=class{constructor(e=5e3){this.maxEntries=e;this.cache=new Map}get(e,n){let r=this.cache.get(e);if(!r)return null;let i=n?.mtime??null,s=n?.size??null;return i!=null&&s!=null&&r.mtime===i&&r.size===s?r.result:null}set(e,n,r){let i=n?.mtime??null,s=n?.size??null;this.cache.set(e,{mtime:i,size:s,result:r}),this.cache.size>this.maxEntries&&this.cache.clear()}};oe();var Ye=class{constructor(e,n,r,i){this.projectRoot=e;this.lang=n;this.parse=r;this.exportKind=i;this.cache=new ce}async process(e){let n=e.meta?.mtime,r=e.meta?.size;if(n==null||r==null)try{let a=Zn.statSync(e.absPath);n=Math.floor(a.mtimeMs),r=a.size}catch{}let i=this.cache.get(e.absPath,{mtime:n,size:r});if(i)return me({lang:this.lang,fileRel:e.relPath,content:e.content,meta:{mtime:n,size:r},preDeleted:e.preDeleted,parsed:i,resolveNodeId:Kt(e.relPath,i,this.lang),exportKind:this.exportKind??"cli"});let s=null;try{s=await this.parse({absPath:e.absPath,relPath:e.relPath,content:e.content,meta:{mtime:n,size:r},projectRoot:this.projectRoot,lang:this.lang})}catch(a){try{console.log(`[CliContract:${this.lang}] parse threw for ${e.relPath}: ${a?.message||String(a)}`)}catch{}return ge(this.lang,e.relPath,{mtime:n,size:r})}return!s||s.error?ge(this.lang,e.relPath,{mtime:n,size:r}):(this.cache.set(e.absPath,{mtime:n,size:r},s),me({lang:this.lang,fileRel:e.relPath,content:e.content,meta:{mtime:n,size:r},preDeleted:e.preDeleted,parsed:s,resolveNodeId:Kt(e.relPath,s,this.lang),exportKind:this.exportKind??"cli"}))}};function Kt(t,e,n){let r=new Map;for(let i of e.nodes??[]){if(!i.name||i.containerKind||r.has(i.name))continue;let s=`${t}#${i.start}-${i.end}:${G.getAbbrev(i.kind,n)}`;r.set(i.name,s)}return i=>r.get(i)??null}function W(t){return{id:t.id,extensions:t.extensions,indexingMode:"worker",createIndexer:e=>new Ye(e,t.id,t.parse,t.exportKind),resolveSpan:t.resolve?async(e,n,r)=>t.resolve({projectRoot:e,absPath:n,nodePath:r,lang:t.id}):void 0}}import er from"fs";import Ze from"path";var Ft=null;function tr(t){for(let e of t)if(er.existsSync(e))return e;return null}function X(t){let e=Ft?.toolsRoot??process.env.PANDO_TOOLS_ROOT,n=Ft?.runtimeRoot??process.env.PANDO_RUNTIME_ROOT,r=[e?Ze.join(e,t):null,n?Ze.join(n,"tools",t):null,Ze.resolve(process.cwd(),"tools",t)].filter(i=>!!i);return tr(r)}function H(...t){try{let e=t.map(n=>{if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}).join(" ");process.stderr.write(e+`
|
|
6
|
+
`)}catch{}}var Te=class{constructor(e,n){this.interpreter=e;this.scriptPath=n;this.buffer=Buffer.alloc(0);this.pending=new Map;this.seq=1;this.closed=!1;if(this.proc=nr(this.interpreter,["-u",this.scriptPath],{stdio:["pipe","pipe","pipe"]}),!this.proc.stdout||!this.proc.stderr||!this.proc.stdin)throw new Error("python worker stdio unavailable");this.proc.stdout.on("data",r=>this.onData(r)),this.proc.stderr.on("data",r=>{H(`[PythonWorker] ${r.toString("utf8").trim()}`)}),this.proc.stdin.on("error",r=>this.handleError(r)),this.proc.on("error",r=>this.handleError(r)),this.proc.on("exit",r=>this.handleError(new Error(`python worker exited with code ${r}`))),this.ready=this.ping()}handleError(e){if(!this.closed){this.closed=!0;for(let[,n]of this.pending)n.timeout&&clearTimeout(n.timeout),n.summary&&H("[PythonCliAdapter] worker error",{interpreter:this.interpreter,error:e.message,...n.summary}),n.reject(e);this.pending.clear()}}onData(e){for(this.buffer=Buffer.concat([this.buffer,e]);this.buffer.length>=4;){let n=this.buffer.readUInt32BE(0);if(this.buffer.length<4+n)return;let r=this.buffer.slice(4,4+n);this.buffer=this.buffer.slice(4+n);let i=null;try{i=JSON.parse(r.toString("utf8"))}catch{continue}let s=this.pending.get(i.id);s&&(this.pending.delete(i.id),s.timeout&&clearTimeout(s.timeout),i.ok?s.resolve(i):s.reject(new Error(i.error||"python worker error")))}}sendMessage(e){if(this.closed)throw new Error("python worker is closed");let n=Buffer.from(JSON.stringify(e),"utf8"),r=Buffer.alloc(4);r.writeUInt32BE(n.length,0),this.proc.stdin.write(r),this.proc.stdin.write(n)}async requestRaw(e,n,r=1e4){let i=this.seq++,s={id:i,op:e,...n},a=Date.now(),o={op:e,id:i};return typeof n?.path=="string"&&(o.path=n.path),typeof n?.nodePath=="string"&&(o.nodePath=n.nodePath),typeof n?.content_b64=="string"&&(o.contentBytes=n.content_b64.length),new Promise((u,h)=>{let p=setTimeout(()=>{this.pending.delete(i),H("[PythonCliAdapter] worker timeout",{op:e,id:i,timeoutMs:r,pending:this.pending.size,interpreter:this.interpreter,...o}),h(new Error(`python worker timeout (${e})`))},r);this.pending.set(i,{resolve:u,reject:h,timeout:p,summary:o}),this.pending.size%200===0&&H("[PythonCliAdapter] worker pending",{op:e,pending:this.pending.size,interpreter:this.interpreter});try{this.sendMessage(s)}catch(m){clearTimeout(p),this.pending.delete(i),h(m)}})}async request(e,n,r=1e4){await this.ready;let i=Date.now(),s=await this.requestRaw(e,n,r),a=Date.now()-i;return a>2e3&&H("[PythonCliAdapter] worker slow",{op:e,ms:a,pending:this.pending.size,interpreter:this.interpreter,path:n?.path}),s}async ping(){await this.requestRaw("ping",{},5e3)}async parse(e){let n=Buffer.from(e.content,"utf8").toString("base64"),r=await this.request("parse",{path:e.path,content_b64:n,encoding:e.encoding});return r.nodes?r:null}async resolve(e){let n=Buffer.from(e.content,"utf8").toString("base64"),r=await this.request("resolve",{path:e.path,nodePath:e.nodePath,content_b64:n,encoding:e.encoding});return typeof r.start=="number"&&typeof r.end=="number"?r:null}},rr=`
|
|
7
7
|
import ast, json, sys, os
|
|
8
8
|
|
|
9
9
|
path = sys.argv[1]
|
|
@@ -423,7 +423,7 @@ try:
|
|
|
423
423
|
except Exception as e:
|
|
424
424
|
print(json.dumps({ 'error': str(e) }))
|
|
425
425
|
sys.exit(2)
|
|
426
|
-
`,
|
|
426
|
+
`,ir=`
|
|
427
427
|
import ast, json, sys
|
|
428
428
|
|
|
429
429
|
path = sys.argv[1]
|
|
@@ -505,18 +505,18 @@ try:
|
|
|
505
505
|
except Exception as e:
|
|
506
506
|
print(json.dumps({ 'error': str(e) }))
|
|
507
507
|
sys.exit(2)
|
|
508
|
-
`;function jt(t){let e=ee.resolve(t,"tools/python-indexer/pando_python_worker.py");if(Ae.existsSync(e))return e;let n=X("python-indexer/pando_python_worker.py");if(n)return n;let r=ee.resolve(__dirname,"../../../../../tools/python-indexer/pando_python_worker.py");return Ae.existsSync(r)?r:null}var de=new Map;function ue(t){try{return Ae.readFileSync(t,"utf8")}catch{return null}}function be(t){if(!t)return null;let e=t.match(/(\d+)\.(\d+)/);return e?{major:Number(e[1]),minor:Number(e[2])}:null}function
|
|
509
|
-
`)}catch{}}var
|
|
508
|
+
`;function jt(t){let e=ee.resolve(t,"tools/python-indexer/pando_python_worker.py");if(Ae.existsSync(e))return e;let n=X("python-indexer/pando_python_worker.py");if(n)return n;let r=ee.resolve(__dirname,"../../../../../tools/python-indexer/pando_python_worker.py");return Ae.existsSync(r)?r:null}var de=new Map;function ue(t){try{return Ae.readFileSync(t,"utf8")}catch{return null}}function be(t){if(!t)return null;let e=t.match(/(\d+)\.(\d+)/);return e?{major:Number(e[1]),minor:Number(e[2])}:null}function sr(t){let e=ue(ee.join(t,"pyproject.toml"));if(e){let o=e.match(/requires-python\s*=\s*"([^"]+)"/i),u=be(o?.[1]??null);if(u)return u}let n=ue(ee.join(t,"setup.cfg"));if(n){let o=n.match(/python_requires\s*=\s*([\w\d\.<>~=\s]+)/i),u=be(o?.[1]??null);if(u)return u}let r=ue(ee.join(t,"setup.py"));if(r){let o=r.match(/python_requires\s*=\s*['\"]([^'\"]+)['\"]/i),u=be(o?.[1]??null);if(u)return u}let i=ue(ee.join(t,"tox.ini"));if(i){let o=i.match(/envlist\s*=\s*([^\n]+)/i);if(o&&o[1]){let u=o[1].split(/[,\s]+/).filter(Boolean);for(let h of u){let p=h.match(/py(\d)(\d)/i);if(p)return{major:Number(p[1]),minor:Number(p[2])}}}}let s=ue(ee.join(t,".python-version"));if(s){let o=be(s.trim());if(o)return o}let a=ue(ee.join(t,"runtime.txt"));if(a){let o=a.match(/python-(\d+\.\d+)/i),u=be(o?.[1]??null);if(u)return u}return null}function ke(t){return sr(t)?.major===2?["python2","python","python3"]:["python3","python","python2"]}async function ar(t,e,n){let r=jt(t);if(!r)return null;let i=ke(t);for(let s of i){let a=`${s}::${r}`,o=de.get(a);if(!o)try{o=new Te(s,r),de.set(a,o)}catch{continue}try{let u=await o.parse({path:e,content:n,encoding:"utf-8"});if(u)return u}catch{H("[PythonCliAdapter] worker parse error",{file:e,interpreter:s}),de.delete(a)}}return null}async function or(t,e,n,r){let i=jt(t);if(!i)return null;let s=ke(t);for(let a of s){let o=`${a}::${i}`,u=de.get(o);if(!u)try{u=new Te(a,i),de.set(o,u)}catch{continue}try{let h=await u.resolve({path:e,nodePath:r,content:n,encoding:"utf-8"});if(h)return h}catch{H("[PythonCliAdapter] worker resolve error",{file:e,interpreter:a,nodePath:r}),de.delete(o)}}return null}function Mt(t,e){let n=Lt(t,["-c",rr,e],{encoding:"utf8"});if(n.error||typeof n.stdout!="string")return null;try{let r=JSON.parse(n.stdout.trim()||"{}");return r&&r.error?null:r}catch{return null}}function Ot(t,e,n){let r=Lt(t,["-c",ir,e,n],{encoding:"utf8"});if(r.error||typeof r.stdout!="string")return null;try{let i=JSON.parse(r.stdout.trim()||"{}");return i&&i.error||typeof i.start!="number"||typeof i.end!="number"?null:i}catch{return null}}async function lr(t){let e=Date.now(),n=!1,r=null;try{r=await ar(t.projectRoot,t.absPath,t.content),n=!!r}catch{}if(!r){let a=ke(t.projectRoot),o=null;for(let u of a)if(r=Mt(u,t.absPath),r){o=u;break}if(!r&&a.length>1){for(let u of a.slice().reverse())if(r=Mt(u,t.absPath),r){o=u;break}}if(!r){H(`[PythonCliAdapter] parse failed for ${t.relPath} (interpreters tried: ${a.join(", ")})`);let u=Date.now()-e;return u>2e3&&H("[PythonCliAdapter] parse slow (failed)",{file:t.relPath,ms:u}),null}o&&H(`[PythonCliAdapter] parse ok for ${t.relPath} via ${o}`)}let i=[];for(let a of r.references||[]){let o={};a.expression&&(o.expression=a.expression),a.objectName&&(o.objectName=a.objectName),a.containerName&&(o.containerName=a.containerName),a.containerKind&&(o.containerKind=a.containerKind),i.push({sourceStart:a.start,sourceEnd:a.end,refKind:a.kind,refName:a.name,receiverName:a.receiverName??a.objectName??null,arity:typeof a.arity=="number"?a.arity:null,containerQualifiedName:a.containerQualifiedName??null,targetSymbolKey:a.targetSymbolKey??null,metadata:Object.keys(o).length?o:null})}let s=Date.now()-e;return s>2e3&&H("[PythonCliAdapter] parse slow",{file:t.relPath,ms:s,usedWorker:n}),{nodes:r.nodes,imports:r.imports,importBindings:r.importBindings,references:i,modulePublic:r.modulePublic??void 0,explicitExports:r.explicitExports??void 0}}function $t(){return W({id:"python",extensions:[".py",".pyw",".pyi"],exportKind:"named",parse:({absPath:t,relPath:e,projectRoot:n,content:r})=>lr({absPath:t,relPath:e,projectRoot:n,content:r}),resolve:async({absPath:t,nodePath:e,projectRoot:n})=>{try{let i=Ae.readFileSync(t,"utf8"),s=await or(n,t,i,e);if(s)return s}catch{}let r=ke(n);for(let i of r){let s=Ot(i,t,e);if(s)return s}for(let i of r.slice().reverse()){let s=Ot(i,t,e);if(s)return s}return null}})}import Bt from"fs";import zt from"path";import{spawn as cr,spawnSync as Os}from"child_process";var ur=256e3,dr=32;function te(...t){try{let e=t.map(n=>{if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}).join(" ");process.stderr.write(e+`
|
|
509
|
+
`)}catch{}}var et=class{constructor(e){this.cmd=e;this.proc=null;this.buffer="";this.pending=new Map;this.seq=1;this.closed=!1;this.ensureProcess()}ensureProcess(){if(!(this.proc&&!this.closed)){if(this.closed=!1,this.proc=cr(this.cmd,["--server"],{stdio:["pipe","pipe","pipe"]}),!this.proc.stdout||!this.proc.stderr||!this.proc.stdin)throw this.closed=!0,new Error("csharp indexer stdio unavailable");this.proc.stdout.on("data",e=>this.onData(e)),this.proc.stderr.on("data",e=>{te(`[CSharpIndexer] ${e.toString("utf8").trim()}`)}),this.proc.on("error",e=>this.handleExit(e)),this.proc.on("exit",e=>this.handleExit(new Error(`csharp indexer exited with code ${e}`)))}}handleExit(e){if(!this.closed){this.closed=!0;for(let[,n]of this.pending)n.reject(e);this.pending.clear()}}onData(e){for(this.buffer+=e.toString("utf8");;){let n=this.buffer.indexOf(`
|
|
510
510
|
`);if(n<0)break;let r=this.buffer.slice(0,n).trim();if(this.buffer=this.buffer.slice(n+1),!r)continue;let i=null;try{i=JSON.parse(r)}catch{continue}let s=this.pending.get(i.id);s&&(this.pending.delete(i.id),i.ok?s.resolve(i):s.reject(new Error(i.error||"csharp server error")))}}async request(e,n=1){this.ensureProcess();let r=this.seq++;return new Promise((i,s)=>{let a={id:r,...e};this.pending.set(r,{resolve:i,reject:s});try{this.proc.stdin.write(`${JSON.stringify(a)}
|
|
511
|
-
`)}catch(o){if(this.pending.delete(r),n>0){try{this.handleExit(o)}catch{}return this.request(e,n-1).then(i,s)}s(o)}})}async parseBatch(e){let n=await this.request({op:"parse",files:e});return"results"in n?n.results.map(r=>r.ok&&r.result?r.result:null):"result"in n?[n.result]:e.map(()=>null)}async resolve(e){let n=await this.request({op:"resolve",...e});return"result"in n&&n.result&&typeof n.result.start=="number"?n.result:null}async resolveReferences(e){let n=await this.request({op:"resolve-references",...e});return"result"in n&&n.result?n.result:null}},
|
|
512
|
-
`||a===" "||a==="\r"){n&&(e.push(n),n="");continue}n+=a}return n&&e.push(n),e}function
|
|
513
|
-
`))}catch{return null}}function Qt(t){let e=k.join(t,"compile_commands.json");if(U.existsSync(e))return e;let n=["build","out","build-debug","build-release","cmake-build-debug","cmake-build-release"];for(let o of n){let u=k.join(t,o,"compile_commands.json");if(U.existsSync(u))return u}let r=n.map(o=>k.join(t,o)).filter(o=>U.existsSync(o));r.push(t);let i=10,s=new Set,a=(o,u)=>{if(u>i)return null;let h=k.resolve(o);if(s.has(h))return null;s.add(h);try{let p=U.readdirSync(o,{withFileTypes:!0});for(let m of p)if(m.isFile()&&m.name==="compile_commands.json")return k.join(o,m.name);for(let m of p){if(!m.isDirectory()||m.name==="node_modules"||m.name.startsWith("."))continue;let b=a(k.join(o,m.name),u+1);if(b)return b}}catch{}return null};for(let o of r){let u=a(o,0);if(u)return u}return null}function Sr(t,e){let n=k.resolve(t),r=k.resolve(e);for(;;){let i=Qt(n);if(i)return i;if(n===r)break;let s=k.dirname(n);if(s===n)break;n=s}return null}function Gt(t){let e=k.join(t,"compile_flags.txt");if(U.existsSync(e))return e;let n=["build","out","build-debug","build-release","cmake-build-debug","cmake-build-release"];for(let r of n){let i=k.join(t,r,"compile_flags.txt");if(U.existsSync(i))return i}return null}function vr(t,e){let n=k.resolve(t),r=k.resolve(e);for(;;){let i=Gt(n);if(i)return i;if(n===r)break;let s=k.dirname(n);if(s===n)break;n=s}return null}function De(t){if(t)try{return U.statSync(t).mtimeMs}catch{return}}function Xt(t,e){let n=e?`${k.resolve(t)}::${k.resolve(e)}`:k.resolve(t),r=Ie.get(n);if(r){let m=De(r.commandsPath);if(r.commandsPath&&m&&r.commandsMtime&&m!==r.commandsMtime)Ie.delete(n);else if(r.flagsPath){let b=De(r.flagsPath);b&&r.flagsMtime&&b!==r.flagsMtime&&Ie.delete(n)}else return r}let i=e?Sr(e,t):Qt(t),s=i?br(i)??void 0:void 0,a=De(i),o=s?null:e?vr(e,t):Gt(t),u=o?xr(o)??void 0:void 0,h=De(o),p={commands:s,flags:u,commandsPath:i,commandsMtime:a,flagsPath:o,flagsMtime:h};return Ie.set(n,p),p}function rt(t,e,n){let r=k.dirname(e),i=Xt(t);!i.commands&&!i.flags&&(i=Xt(t,r));let s=Vt(e);if(i.commands){let a=i.commands.get(s);if(a)return{args:a.args,cwd:a.cwd,source:"compile_commands"}}return i.flags?{args:i.flags,cwd:t,source:"compile_flags"}:it(t,n)}function it(t,e){let n=["-std="+(e==="cpp"?"c++20":"c17")];n.push("-I",t);for(let r of hr){let i=k.join(t,r);U.existsSync(i)&&n.push("-I",i)}return n.push("-ferror-limit=0"),{args:n,cwd:t,source:"fallback"}}function en(t){let e=[0];for(let n=0;n<t.length;n+=1)t.charCodeAt(n)===10&&e.push(n+1);return e}function Yt(t,e,n){if(!e||e<1)return 0;let r=Math.min(e-1,t.length-1),i=t[r]??0,s=Math.max((n??1)-1,0);return i+s}function pe(t){return t?Cr.resolve(t):null}function Zt(t,e,n){let r=Math.max(0,Math.min(n-1,t.length-1)),i=t[r]??0,s=r+1<t.length?t[r+1]:e;return Math.max(0,s-i)}function ne(t,e,n){let r=t.range?.begin??t.loc,i=t.range?.end??t.loc;if(!r?.line||r.line<1||r.line>e.length||r.col==null||r.col<1||i?.line&&(i.line<1||i.line>e.length)||i?.col!=null&&i.col<1)return null;let s=Zt(e,n,r.line);if((r.col??1)-1>s)return null;if(i?.line){let u=Zt(e,n,i.line);if((i.col??r.col??1)-1>u)return null}let a=Yt(e,r.line,r.col),o=Yt(e,i?.line??r.line,i?.col??r.col);return{start:a,end:Math.max(o,a)}}function Me(t){let e=t.range?.begin?.file||t.loc?.file||t.range?.end?.file||null;if(e)return pe(e);let n=t.range?.begin?.includedFrom?.file||t.range?.end?.includedFrom?.file||null;return pe(n)}function wr(t){let e=t.access;return typeof e=="string"?e:null}function Pr(t,e){let n={};e.containerName&&(n.containerName=e.containerName);let r=wr(t);r&&(n.visibility=r);let i=t.storageClass;i&&(n.storageClass=i);let s=t.isInline;typeof s=="boolean"&&(n.isInline=s);let a=t.isConstexpr;typeof a=="boolean"&&(n.isConstexpr=a);let o=t.isVirtual;typeof o=="boolean"&&(n.isVirtual=o);let u=t.isStatic;typeof u=="boolean"&&(n.isStatic=u);let h=t.type;return typeof h=="string"&&(n.type=h),n}function st(t,e,n){switch(t){case"FunctionDecl":return{kind:"Function",semanticKind:"function"};case"CXXMethodDecl":case"CXXConstructorDecl":case"CXXDestructorDecl":case"CXXConversionDecl":return{kind:"Method",semanticKind:"method"};case"FunctionTemplateDecl":case"ClassTemplateDecl":case"TypeAliasTemplateDecl":return{kind:"Template",semanticKind:"template"};case"ConceptDecl":return{kind:"Concept",semanticKind:"type"};case"TemplateTypeParmDecl":case"NonTypeTemplateParmDecl":case"TemplateTemplateParmDecl":return{kind:"TemplateParameter",semanticKind:"template"};case"NamespaceDecl":return{kind:"Namespace",semanticKind:"namespace"};case"NamespaceAliasDecl":return{kind:"NamespaceAlias",semanticKind:"namespace"};case"RecordDecl":return e==="struct"?{kind:"Struct",semanticKind:"struct"}:e==="union"?{kind:"Union",semanticKind:"union"}:{kind:"Class",semanticKind:"class"};case"EnumDecl":return{kind:"Enum",semanticKind:"enum"};case"EnumConstantDecl":return{kind:"EnumMember",semanticKind:"enum"};case"FieldDecl":return{kind:"Field",semanticKind:"field"};case"VarDecl":return{kind:n?"Field":"Variable",semanticKind:n?"field":"variable"};case"TypedefDecl":case"TypeAliasDecl":case"UsingDecl":case"UsingDirectiveDecl":case"UsingEnumDecl":return{kind:"TypeAlias",semanticKind:"type"};case"ParmVarDecl":return{kind:"Param",semanticKind:"variable"};case"MacroDefinition":return{kind:"Macro",semanticKind:"macro"};default:return null}}function Er(t,e,n,r){let i=[],s=pe(e),a=(o,u)=>{let h=Me(o),m=h&&(!s||h===s)?st(o.kind,o.tagUsed,u.containerKind):null,b=o.name;if(m&&b){m.kind==="Method"&&typeof b=="string"&&b.startsWith("operator")&&(m={kind:"Operator",semanticKind:"method"});let C=ne(o,n,r);if(C){let w=Pr(o,u);(m.kind==="Template"||m.kind==="TemplateParameter")&&(w.isTemplate=!0),m.kind==="Operator"&&(w.isOperator=!0),i.push({name:b,kind:m.kind,rawKind:o.kind??null,rawKindSource:"clang",semanticKind:m.semanticKind??null,start:C.start,end:C.end,isExported:u.containerKind?0:1,containerKind:u.containerKind??null,containerRawKind:u.containerRawKind??null,containerRawKindSource:u.containerRawKind?"clang":null,paramCount:null,metadata:Object.keys(w).length?w:null})}}let A=u;if(o.kind==="RecordDecl"&&o.name){let C=st(o.kind,o.tagUsed,u.containerKind);C&&(A={containerKind:C.kind,containerName:o.name,containerRawKind:o.kind??null})}o.kind==="EnumDecl"&&o.name&&(A={containerKind:"Enum",containerName:o.name,containerRawKind:o.kind??null}),o.kind==="NamespaceDecl"&&o.name&&(A={containerKind:"Namespace",containerName:o.name,containerRawKind:o.kind??null});for(let C of o.inner??[])a(C,A)};return a(t,{}),{nodes:i}}function at(t,e,n){let r=Nr(t,e,{encoding:"utf8",cwd:n});if(r.error)return null;let i=(r.stdout||"").trim();if(!i)return null;try{return JSON.parse(i)}catch{return null}}function tn(t){let e=`PANDO_${t.toUpperCase()}_INDEXER_CMD`;return process.env[e]||(t==="cpp"?"clang++":"clang")}function xe(t){let e=t?.referencedDecl?.name||t.name;if(e)return e;for(let n of t.inner??[]){let r=xe(n);if(r)return r}return null}function Rr(t,e){let n=[],r=pe(e),i=s=>{let a=Me(s);if(a&&(!r||a===r)&&s.kind==="InclusionDirective"){let h=s.spelling||s.includeName||null||s.file||s.filename||s.includedFile||s.headerName||null;h&&n.push({module:String(h),isTypeOnly:0})}for(let u of s.inner??[])i(u)};return i(t),{imports:n}}function Fe(t){if(t.kind==="MemberExpr"||t.kind==="ImplicitCastExpr")for(let e of t.inner??[]){if(e.kind==="DeclRefExpr"||e.kind==="MemberExpr")return e?.referencedDecl?.name||e.name||null;if(e.kind==="CXXThisExpr")return null;if(e.kind==="ImplicitCastExpr")return Fe(e)}if(t.kind==="CallExpr"||t.kind==="CXXMemberCallExpr"){for(let e of t.inner??[])if(e.kind==="MemberExpr")return Fe(e)}return null}function _r(t){return!t.inner||t.inner.length===0?null:t.kind==="CallExpr"?Math.max(0,t.inner.length-1):t.kind==="CXXConstructExpr"||t.kind==="CXXNewExpr"?t.inner.length:null}function Ar(t){if(t.kind!=="CallExpr")return null;let e=t.inner?.[0];return e&&e.kind==="MemberExpr"?Fe(e):null}function Ke(t,e){return t.containerQualifiedName?`${t.containerQualifiedName}::${e}`:e}function Tr(t,e,n,r){let i=[],s=pe(e),a=r.length,o=(p,m,b)=>{let A=Me(p),C=A&&(!s||A===s);if(C&&(p.kind==="CallExpr"||p.kind==="CXXConstructExpr"||p.kind==="CXXNewExpr")){let l=ne(p,n,a);if(l){let P=xe(p),R=p.kind==="CallExpr"?"call":"new",d=r.slice(l.start,l.end),v=Ar(p),E=_r(p);i.push({sourceStart:l.start,sourceEnd:l.end,refKind:R,refName:P,receiverName:v??void 0,arity:typeof E=="number"?E:void 0,containerQualifiedName:m.containerQualifiedName??void 0,metadata:d?{expression:d,containerName:m.containerName,containerKind:m.containerKind}:null})}}if(C&&p.kind==="TypeRef"){let l=ne(p,n,a);if(l){let P=xe(p);i.push({sourceStart:l.start,sourceEnd:l.end,refKind:"type",refName:P,containerQualifiedName:m.containerQualifiedName??void 0,metadata:{containerName:m.containerName,containerKind:m.containerKind}})}}if(C&&(p.kind==="DeclRefExpr"||p.kind==="MemberExpr")&&!(b.includes("CallExpr")||b.includes("CXXConstructExpr")||b.includes("CXXNewExpr"))){let P=ne(p,n,a);if(P){let R=xe(p),d=p.kind==="MemberExpr"?Fe(p):void 0;i.push({sourceStart:P.start,sourceEnd:P.end,refKind:"reference",refName:R,receiverName:d??void 0,containerQualifiedName:m.containerQualifiedName??void 0,metadata:{containerName:m.containerName,containerKind:m.containerKind}})}}if(C&&(p.kind==="MacroExpansion"||p.kind==="MacroInstantiation")){let l=ne(p,n,a);if(l){let P=xe(p);i.push({sourceStart:l.start,sourceEnd:l.end,refKind:"macro",refName:P,containerQualifiedName:m.containerQualifiedName??void 0,metadata:{containerName:m.containerName,containerKind:m.containerKind}})}}let w=m;if(p.kind==="RecordDecl"&&p.name){let l=st(p.kind,p.tagUsed,m.containerKind);l&&(w={containerKind:l.kind,containerName:p.name,containerQualifiedName:Ke(m,p.name)})}p.kind==="EnumDecl"&&p.name&&(w={containerKind:"Enum",containerName:p.name,containerQualifiedName:Ke(m,p.name)}),p.kind==="NamespaceDecl"&&p.name&&(w={containerKind:"Namespace",containerName:p.name,containerQualifiedName:Ke(m,p.name)}),(p.kind==="FunctionDecl"||p.kind==="CXXMethodDecl"||p.kind==="CXXConstructorDecl"||p.kind==="CXXDestructorDecl")&&p.name&&(w={...w,containerQualifiedName:Ke(m,p.name)});let M=b.slice();p.kind&&M.push(p.kind);for(let l of p.inner??[])o(l,w,M)};o(t,{},[]);let u=new Set,h=[];for(let p of i){let m=`${p.sourceStart}:${p.sourceEnd}:${p.refKind}:${p.refName??""}:${p.targetNodeId??""}:${p.targetFile??""}`;u.has(m)||(u.add(m),h.push(p))}return{references:h}}function kr(t){if(!t)return null;let e=t;(e.startsWith("SyntaxError:")||e.startsWith("CompileError:"))&&(e=e.substring(e.indexOf(":")+1)),e.includes("#")&&(e=e.split("#")[1]);let n=e.lastIndexOf(":"),r=n>=0?e.slice(0,n):e,[i,s]=r.split("-"),a=Number(i),o=Number(s);return!Number.isFinite(a)||!Number.isFinite(o)||o<a?null:{start:a,end:o}}function Ir(t,e,n,r,i){let s=kr(n);if(!s)return null;let a=tn(t),o=rt(i,e,t),u=[...o.args,"-Xclang","-ast-dump=json","-Xclang","-detailed-preprocessing-record","-fsyntax-only","-fno-color-diagnostics","-fno-diagnostics-color",...o.source==="fallback"?["-x",t==="cpp"?"c++":"c"]:[],e],h=at(a,u,o.cwd);if(!h||h.kind!=="TranslationUnitDecl")return null;let p=en(r),m=r.length,b=pe(e),A=null,C=M=>{if(A)return;let l=Me(M),R=l&&(!b||l===b)?ne(M,p,m):null;if(R&&R.start===s.start&&R.end===s.end){let d=null,v=null;for(let E of M.inner??[])if(E.kind==="CompoundStmt"){let _=ne(E,p,m);if(_){d=_.start,v=_.end;break}}A={start:R.start,end:R.end,bodyStart:d,bodyEnd:v};return}for(let d of M.inner??[])C(d)};if(C(h),!A)return null;let w=A;return{start:w.start,end:w.end,bodyStart:w.bodyStart??null,bodyEnd:w.bodyEnd??null,text:r.slice(w.start,w.end)}}function ot(t){return W({id:t,extensions:[],parse:({absPath:e,relPath:n,content:r,projectRoot:i})=>{let s=tn(t),a=rt(i,e,t),o=C=>[...C.args,"-Xclang","-ast-dump=json","-Xclang","-detailed-preprocessing-record","-fsyntax-only","-fno-color-diagnostics","-fno-diagnostics-color",...C.source==="fallback"?["-x",t==="cpp"?"c++":"c"]:[],e],u=at(s,o(a),a.cwd);if(!u&&a.source!=="fallback"){let C=it(i,t);u=at(s,o(C),C.cwd)}if(!u||u.kind!=="TranslationUnitDecl")return null;let h=en(r??""),p=(r??"").length,{nodes:m}=Er(u,e,h,p),{imports:b}=Rr(u,e),{references:A}=Tr(u,e,h,r??"");return{nodes:m,imports:b,importBindings:[],references:A}},resolve:({absPath:e,nodePath:n,projectRoot:r})=>{try{let i=wn("fs").readFileSync(e,"utf8");return Ir(t,e,n,i,r)}catch{return null}}})}import lt from"fs";import ct from"path";import{spawn as Dr,spawnSync as Zs}from"child_process";var Kr=256e3,Fr=32;function re(...t){try{let e=t.map(n=>{if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}).join(" ");process.stderr.write(e+`
|
|
514
|
-
`)}catch{}}var
|
|
511
|
+
`)}catch(o){if(this.pending.delete(r),n>0){try{this.handleExit(o)}catch{}return this.request(e,n-1).then(i,s)}s(o)}})}async parseBatch(e){let n=await this.request({op:"parse",files:e});return"results"in n?n.results.map(r=>r.ok&&r.result?r.result:null):"result"in n?[n.result]:e.map(()=>null)}async resolve(e){let n=await this.request({op:"resolve",...e});return"result"in n&&n.result&&typeof n.result.start=="number"?n.result:null}async resolveReferences(e){let n=await this.request({op:"resolve-references",...e});return"result"in n&&n.result?n.result:null}},tt=class{constructor(e){this.client=e;this.queue=[];this.scheduled=!1}enqueue(e){return new Promise((n,r)=>{this.queue.push({input:e,resolve:n,reject:r,startedAt:Date.now()}),this.scheduled||(this.scheduled=!0,setImmediate(()=>this.flush()))})}async flush(){for(this.scheduled=!1;this.queue.length;){let e=[],n=0;for(;this.queue.length&&e.length<dr;){let r=this.queue[0];if(e.length>0&&n+r.input.size>ur)break;e.push(this.queue.shift()),n+=r.input.size}try{let r=await this.client.parseBatch(e.map(i=>({file:i.input.file,root:i.input.root,lang:i.input.lang})));for(let i=0;i<e.length;i+=1){let s=e[i],a=r[i]??null,o=Date.now()-s.startedAt;o>2e3&&te(`[${new Date().toISOString()}] [CSharpCliAdapter] parse slow`,{file:s.input.file,ms:o,path:"custom",ok:!!a}),a||te(`[${new Date().toISOString()}] [CSharpCliAdapter] parse failed`,{file:s.input.file,ms:o,path:"custom"}),s.resolve(a)}}catch(r){for(let i of e)i.reject(r)}}}},qt=new Map,Ht=new Map;function pr(t){let e=process.platform==="win32"?".cmd":"",n=X(`csharp-indexer/bin/pando-csharp-indexer${e}`);if(n)return n;if(t){let i=zt.resolve(t,"tools/csharp-indexer/bin/pando-csharp-indexer"+e);if(Bt.existsSync(i))return i}let r=zt.resolve(__dirname,"../../../../../tools/csharp-indexer/bin/pando-csharp-indexer"+e);return Bt.existsSync(r)?r:null}function Jt(t){let e=process.env.PANDO_CSHARP_INDEXER_CMD||pr(t);if(!e)return null;let n=qt.get(e);n||(n=new et(e),qt.set(e,n));let r=Ht.get(e);return r||(r=new tt(n),Ht.set(e,r)),{client:n,batcher:r}}async function fr(t,e,n){let r=Jt(e);if(!r)return null;try{return await r.batcher.enqueue({file:t,root:e,lang:"csharp",size:n})}catch(i){return te(`[${new Date().toISOString()}] [CSharpCliAdapter] parse error`,{file:t,error:i?.message||i,path:"custom"}),null}}async function gr(t,e,n){let r=await fr(t,e,n);return r||null}function Wt(){return W({id:"csharp",extensions:[".cs",".csx",".cshtml",".razor"],parse:({absPath:t,projectRoot:e,content:n,meta:r})=>{let i=r?.size??Buffer.byteLength(n,"utf8");return gr(t,e,i)},resolve:({absPath:t,nodePath:e,projectRoot:n})=>{let r=Date.now(),i=Jt(n);return i?i.client.resolve({file:t,root:n,lang:"csharp",nodePath:e}).then(s=>{let a=Date.now()-r;return a>2e3&&te(`[${new Date().toISOString()}] [CSharpCliAdapter] resolve slow`,{file:t,ms:a}),s||te(`[${new Date().toISOString()}] [CSharpCliAdapter] resolve failed`,{file:t,ms:a,nodePath:e}),s}).catch(s=>{let a=Date.now()-r;return te(`[${new Date().toISOString()}] [CSharpCliAdapter] resolve error`,{file:t,ms:a,nodePath:e,error:s?.message||s}),null}):null}})}import{spawnSync as vr}from"child_process";import Nr from"path";import U from"fs";import k from"path";var Ie=new Map,mr=["include","src","lib","libs","third_party","third-party","deps","vendor"];function Ut(t){let e=[],n="",r=null,i=!1;for(let s=0;s<t.length;s+=1){let a=t[s];if(i){n+=a,i=!1;continue}if(a==="\\"){i=!0;continue}if(r){a===r?r=null:n+=a;continue}if(a==='"'||a==="'"){r=a;continue}if(a===" "||a===`
|
|
512
|
+
`||a===" "||a==="\r"){n&&(e.push(n),n="");continue}n+=a}return n&&e.push(n),e}function hr(t,e){let n=[];for(let r=0;r<t.length;r+=1){let i=t[r];if(i!=="-c"){if(i==="-o"){r+=1;continue}i!==e&&((i.endsWith(".c")||i.endsWith(".cc")||i.endsWith(".cpp")||i.endsWith(".cxx")||i.endsWith(".c++"))&&k.isAbsolute(i)||n.push(i))}}return n}function Vt(t,e){return k.isAbsolute(t)?k.resolve(t):e?k.resolve(e,t):k.resolve(t)}function yr(t){try{let e=U.readFileSync(t,"utf8"),n=JSON.parse(e),r=new Map;for(let i of n){let s=i.directory?k.resolve(i.directory):void 0,a=i.file?Vt(i.file,s):null;if(!a)continue;let o=s??k.dirname(a),u=Array.isArray(i.arguments)?i.arguments:i.command?Ut(i.command):[];if(u.length===0)continue;let h=hr(u.slice(1),a);r.set(a,{args:h,cwd:o})}return r}catch{return null}}function br(t){try{let e=U.readFileSync(t,"utf8");return Ut(e.replace(/\r/g,`
|
|
513
|
+
`))}catch{return null}}function Qt(t){let e=k.join(t,"compile_commands.json");if(U.existsSync(e))return e;let n=["build","out","build-debug","build-release","cmake-build-debug","cmake-build-release"];for(let o of n){let u=k.join(t,o,"compile_commands.json");if(U.existsSync(u))return u}let r=n.map(o=>k.join(t,o)).filter(o=>U.existsSync(o));r.push(t);let i=10,s=new Set,a=(o,u)=>{if(u>i)return null;let h=k.resolve(o);if(s.has(h))return null;s.add(h);try{let p=U.readdirSync(o,{withFileTypes:!0});for(let m of p)if(m.isFile()&&m.name==="compile_commands.json")return k.join(o,m.name);for(let m of p){if(!m.isDirectory()||m.name==="node_modules"||m.name.startsWith("."))continue;let b=a(k.join(o,m.name),u+1);if(b)return b}}catch{}return null};for(let o of r){let u=a(o,0);if(u)return u}return null}function xr(t,e){let n=k.resolve(t),r=k.resolve(e);for(;;){let i=Qt(n);if(i)return i;if(n===r)break;let s=k.dirname(n);if(s===n)break;n=s}return null}function Gt(t){let e=k.join(t,"compile_flags.txt");if(U.existsSync(e))return e;let n=["build","out","build-debug","build-release","cmake-build-debug","cmake-build-release"];for(let r of n){let i=k.join(t,r,"compile_flags.txt");if(U.existsSync(i))return i}return null}function Sr(t,e){let n=k.resolve(t),r=k.resolve(e);for(;;){let i=Gt(n);if(i)return i;if(n===r)break;let s=k.dirname(n);if(s===n)break;n=s}return null}function De(t){if(t)try{return U.statSync(t).mtimeMs}catch{return}}function Xt(t,e){let n=e?`${k.resolve(t)}::${k.resolve(e)}`:k.resolve(t),r=Ie.get(n);if(r){let m=De(r.commandsPath);if(r.commandsPath&&m&&r.commandsMtime&&m!==r.commandsMtime)Ie.delete(n);else if(r.flagsPath){let b=De(r.flagsPath);b&&r.flagsMtime&&b!==r.flagsMtime&&Ie.delete(n)}else return r}let i=e?xr(e,t):Qt(t),s=i?yr(i)??void 0:void 0,a=De(i),o=s?null:e?Sr(e,t):Gt(t),u=o?br(o)??void 0:void 0,h=De(o),p={commands:s,flags:u,commandsPath:i,commandsMtime:a,flagsPath:o,flagsMtime:h};return Ie.set(n,p),p}function nt(t,e,n){let r=k.dirname(e),i=Xt(t);!i.commands&&!i.flags&&(i=Xt(t,r));let s=Vt(e);if(i.commands){let a=i.commands.get(s);if(a)return{args:a.args,cwd:a.cwd,source:"compile_commands"}}return i.flags?{args:i.flags,cwd:t,source:"compile_flags"}:rt(t,n)}function rt(t,e){let n=["-std="+(e==="cpp"?"c++20":"c17")];n.push("-I",t);for(let r of mr){let i=k.join(t,r);U.existsSync(i)&&n.push("-I",i)}return n.push("-ferror-limit=0"),{args:n,cwd:t,source:"fallback"}}function en(t){let e=[0];for(let n=0;n<t.length;n+=1)t.charCodeAt(n)===10&&e.push(n+1);return e}function Yt(t,e,n){if(!e||e<1)return 0;let r=Math.min(e-1,t.length-1),i=t[r]??0,s=Math.max((n??1)-1,0);return i+s}function pe(t){return t?Nr.resolve(t):null}function Zt(t,e,n){let r=Math.max(0,Math.min(n-1,t.length-1)),i=t[r]??0,s=r+1<t.length?t[r+1]:e;return Math.max(0,s-i)}function ne(t,e,n){let r=t.range?.begin??t.loc,i=t.range?.end??t.loc;if(!r?.line||r.line<1||r.line>e.length||r.col==null||r.col<1||i?.line&&(i.line<1||i.line>e.length)||i?.col!=null&&i.col<1)return null;let s=Zt(e,n,r.line);if((r.col??1)-1>s)return null;if(i?.line){let u=Zt(e,n,i.line);if((i.col??r.col??1)-1>u)return null}let a=Yt(e,r.line,r.col),o=Yt(e,i?.line??r.line,i?.col??r.col);return{start:a,end:Math.max(o,a)}}function Me(t){let e=t.range?.begin?.file||t.loc?.file||t.range?.end?.file||null;if(e)return pe(e);let n=t.range?.begin?.includedFrom?.file||t.range?.end?.includedFrom?.file||null;return pe(n)}function Cr(t){let e=t.access;return typeof e=="string"?e:null}function wr(t,e){let n={};e.containerName&&(n.containerName=e.containerName);let r=Cr(t);r&&(n.visibility=r);let i=t.storageClass;i&&(n.storageClass=i);let s=t.isInline;typeof s=="boolean"&&(n.isInline=s);let a=t.isConstexpr;typeof a=="boolean"&&(n.isConstexpr=a);let o=t.isVirtual;typeof o=="boolean"&&(n.isVirtual=o);let u=t.isStatic;typeof u=="boolean"&&(n.isStatic=u);let h=t.type;return typeof h=="string"&&(n.type=h),n}function it(t,e,n){switch(t){case"FunctionDecl":return{kind:"Function",semanticKind:"function"};case"CXXMethodDecl":case"CXXConstructorDecl":case"CXXDestructorDecl":case"CXXConversionDecl":return{kind:"Method",semanticKind:"method"};case"FunctionTemplateDecl":case"ClassTemplateDecl":case"TypeAliasTemplateDecl":return{kind:"Template",semanticKind:"template"};case"ConceptDecl":return{kind:"Concept",semanticKind:"type"};case"TemplateTypeParmDecl":case"NonTypeTemplateParmDecl":case"TemplateTemplateParmDecl":return{kind:"TemplateParameter",semanticKind:"template"};case"NamespaceDecl":return{kind:"Namespace",semanticKind:"namespace"};case"NamespaceAliasDecl":return{kind:"NamespaceAlias",semanticKind:"namespace"};case"RecordDecl":return e==="struct"?{kind:"Struct",semanticKind:"struct"}:e==="union"?{kind:"Union",semanticKind:"union"}:{kind:"Class",semanticKind:"class"};case"EnumDecl":return{kind:"Enum",semanticKind:"enum"};case"EnumConstantDecl":return{kind:"EnumMember",semanticKind:"enum"};case"FieldDecl":return{kind:"Field",semanticKind:"field"};case"VarDecl":return{kind:n?"Field":"Variable",semanticKind:n?"field":"variable"};case"TypedefDecl":case"TypeAliasDecl":case"UsingDecl":case"UsingDirectiveDecl":case"UsingEnumDecl":return{kind:"TypeAlias",semanticKind:"type"};case"ParmVarDecl":return{kind:"Param",semanticKind:"variable"};case"MacroDefinition":return{kind:"Macro",semanticKind:"macro"};default:return null}}function Pr(t,e,n,r){let i=[],s=pe(e),a=(o,u)=>{let h=Me(o),m=h&&(!s||h===s)?it(o.kind,o.tagUsed,u.containerKind):null,b=o.name;if(m&&b){m.kind==="Method"&&typeof b=="string"&&b.startsWith("operator")&&(m={kind:"Operator",semanticKind:"method"});let C=ne(o,n,r);if(C){let w=wr(o,u);(m.kind==="Template"||m.kind==="TemplateParameter")&&(w.isTemplate=!0),m.kind==="Operator"&&(w.isOperator=!0),i.push({name:b,kind:m.kind,rawKind:o.kind??null,rawKindSource:"clang",semanticKind:m.semanticKind??null,start:C.start,end:C.end,isExported:u.containerKind?0:1,containerKind:u.containerKind??null,containerRawKind:u.containerRawKind??null,containerRawKindSource:u.containerRawKind?"clang":null,paramCount:null,metadata:Object.keys(w).length?w:null})}}let A=u;if(o.kind==="RecordDecl"&&o.name){let C=it(o.kind,o.tagUsed,u.containerKind);C&&(A={containerKind:C.kind,containerName:o.name,containerRawKind:o.kind??null})}o.kind==="EnumDecl"&&o.name&&(A={containerKind:"Enum",containerName:o.name,containerRawKind:o.kind??null}),o.kind==="NamespaceDecl"&&o.name&&(A={containerKind:"Namespace",containerName:o.name,containerRawKind:o.kind??null});for(let C of o.inner??[])a(C,A)};return a(t,{}),{nodes:i}}function st(t,e,n){let r=vr(t,e,{encoding:"utf8",cwd:n});if(r.error)return null;let i=(r.stdout||"").trim();if(!i)return null;try{return JSON.parse(i)}catch{return null}}function tn(t){let e=`PANDO_${t.toUpperCase()}_INDEXER_CMD`;return process.env[e]||(t==="cpp"?"clang++":"clang")}function xe(t){let e=t?.referencedDecl?.name||t.name;if(e)return e;for(let n of t.inner??[]){let r=xe(n);if(r)return r}return null}function Er(t,e){let n=[],r=pe(e),i=s=>{let a=Me(s);if(a&&(!r||a===r)&&s.kind==="InclusionDirective"){let h=s.spelling||s.includeName||null||s.file||s.filename||s.includedFile||s.headerName||null;h&&n.push({module:String(h),isTypeOnly:0})}for(let u of s.inner??[])i(u)};return i(t),{imports:n}}function Fe(t){if(t.kind==="MemberExpr"||t.kind==="ImplicitCastExpr")for(let e of t.inner??[]){if(e.kind==="DeclRefExpr"||e.kind==="MemberExpr")return e?.referencedDecl?.name||e.name||null;if(e.kind==="CXXThisExpr")return null;if(e.kind==="ImplicitCastExpr")return Fe(e)}if(t.kind==="CallExpr"||t.kind==="CXXMemberCallExpr"){for(let e of t.inner??[])if(e.kind==="MemberExpr")return Fe(e)}return null}function Rr(t){return!t.inner||t.inner.length===0?null:t.kind==="CallExpr"?Math.max(0,t.inner.length-1):t.kind==="CXXConstructExpr"||t.kind==="CXXNewExpr"?t.inner.length:null}function _r(t){if(t.kind!=="CallExpr")return null;let e=t.inner?.[0];return e&&e.kind==="MemberExpr"?Fe(e):null}function Ke(t,e){return t.containerQualifiedName?`${t.containerQualifiedName}::${e}`:e}function Ar(t,e,n,r){let i=[],s=pe(e),a=r.length,o=(p,m,b)=>{let A=Me(p),C=A&&(!s||A===s);if(C&&(p.kind==="CallExpr"||p.kind==="CXXConstructExpr"||p.kind==="CXXNewExpr")){let l=ne(p,n,a);if(l){let P=xe(p),R=p.kind==="CallExpr"?"call":"new",d=r.slice(l.start,l.end),v=_r(p),E=Rr(p);i.push({sourceStart:l.start,sourceEnd:l.end,refKind:R,refName:P,receiverName:v??void 0,arity:typeof E=="number"?E:void 0,containerQualifiedName:m.containerQualifiedName??void 0,metadata:d?{expression:d,containerName:m.containerName,containerKind:m.containerKind}:null})}}if(C&&p.kind==="TypeRef"){let l=ne(p,n,a);if(l){let P=xe(p);i.push({sourceStart:l.start,sourceEnd:l.end,refKind:"type",refName:P,containerQualifiedName:m.containerQualifiedName??void 0,metadata:{containerName:m.containerName,containerKind:m.containerKind}})}}if(C&&(p.kind==="DeclRefExpr"||p.kind==="MemberExpr")&&!(b.includes("CallExpr")||b.includes("CXXConstructExpr")||b.includes("CXXNewExpr"))){let P=ne(p,n,a);if(P){let R=xe(p),d=p.kind==="MemberExpr"?Fe(p):void 0;i.push({sourceStart:P.start,sourceEnd:P.end,refKind:"reference",refName:R,receiverName:d??void 0,containerQualifiedName:m.containerQualifiedName??void 0,metadata:{containerName:m.containerName,containerKind:m.containerKind}})}}if(C&&(p.kind==="MacroExpansion"||p.kind==="MacroInstantiation")){let l=ne(p,n,a);if(l){let P=xe(p);i.push({sourceStart:l.start,sourceEnd:l.end,refKind:"macro",refName:P,containerQualifiedName:m.containerQualifiedName??void 0,metadata:{containerName:m.containerName,containerKind:m.containerKind}})}}let w=m;if(p.kind==="RecordDecl"&&p.name){let l=it(p.kind,p.tagUsed,m.containerKind);l&&(w={containerKind:l.kind,containerName:p.name,containerQualifiedName:Ke(m,p.name)})}p.kind==="EnumDecl"&&p.name&&(w={containerKind:"Enum",containerName:p.name,containerQualifiedName:Ke(m,p.name)}),p.kind==="NamespaceDecl"&&p.name&&(w={containerKind:"Namespace",containerName:p.name,containerQualifiedName:Ke(m,p.name)}),(p.kind==="FunctionDecl"||p.kind==="CXXMethodDecl"||p.kind==="CXXConstructorDecl"||p.kind==="CXXDestructorDecl")&&p.name&&(w={...w,containerQualifiedName:Ke(m,p.name)});let M=b.slice();p.kind&&M.push(p.kind);for(let l of p.inner??[])o(l,w,M)};o(t,{},[]);let u=new Set,h=[];for(let p of i){let m=`${p.sourceStart}:${p.sourceEnd}:${p.refKind}:${p.refName??""}:${p.targetNodeId??""}:${p.targetFile??""}`;u.has(m)||(u.add(m),h.push(p))}return{references:h}}function Tr(t){if(!t)return null;let e=t;(e.startsWith("SyntaxError:")||e.startsWith("CompileError:"))&&(e=e.substring(e.indexOf(":")+1)),e.includes("#")&&(e=e.split("#")[1]);let n=e.lastIndexOf(":"),r=n>=0?e.slice(0,n):e,[i,s]=r.split("-"),a=Number(i),o=Number(s);return!Number.isFinite(a)||!Number.isFinite(o)||o<a?null:{start:a,end:o}}function kr(t,e,n,r,i){let s=Tr(n);if(!s)return null;let a=tn(t),o=nt(i,e,t),u=[...o.args,"-Xclang","-ast-dump=json","-Xclang","-detailed-preprocessing-record","-fsyntax-only","-fno-color-diagnostics","-fno-diagnostics-color",...o.source==="fallback"?["-x",t==="cpp"?"c++":"c"]:[],e],h=st(a,u,o.cwd);if(!h||h.kind!=="TranslationUnitDecl")return null;let p=en(r),m=r.length,b=pe(e),A=null,C=M=>{if(A)return;let l=Me(M),R=l&&(!b||l===b)?ne(M,p,m):null;if(R&&R.start===s.start&&R.end===s.end){let d=null,v=null;for(let E of M.inner??[])if(E.kind==="CompoundStmt"){let _=ne(E,p,m);if(_){d=_.start,v=_.end;break}}A={start:R.start,end:R.end,bodyStart:d,bodyEnd:v};return}for(let d of M.inner??[])C(d)};if(C(h),!A)return null;let w=A;return{start:w.start,end:w.end,bodyStart:w.bodyStart??null,bodyEnd:w.bodyEnd??null,text:r.slice(w.start,w.end)}}function at(t){return W({id:t,extensions:[],parse:({absPath:e,relPath:n,content:r,projectRoot:i})=>{let s=tn(t),a=nt(i,e,t),o=C=>[...C.args,"-Xclang","-ast-dump=json","-Xclang","-detailed-preprocessing-record","-fsyntax-only","-fno-color-diagnostics","-fno-diagnostics-color",...C.source==="fallback"?["-x",t==="cpp"?"c++":"c"]:[],e],u=st(s,o(a),a.cwd);if(!u&&a.source!=="fallback"){let C=rt(i,t);u=st(s,o(C),C.cwd)}if(!u||u.kind!=="TranslationUnitDecl")return null;let h=en(r??""),p=(r??"").length,{nodes:m}=Pr(u,e,h,p),{imports:b}=Er(u,e),{references:A}=Ar(u,e,h,r??"");return{nodes:m,imports:b,importBindings:[],references:A}},resolve:({absPath:e,nodePath:n,projectRoot:r})=>{try{let i=Cn("fs").readFileSync(e,"utf8");return kr(t,e,n,i,r)}catch{return null}}})}import ot from"fs";import lt from"path";import{spawn as Ir,spawnSync as Zs}from"child_process";var Dr=256e3,Kr=32;function re(...t){try{let e=t.map(n=>{if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}).join(" ");process.stderr.write(e+`
|
|
514
|
+
`)}catch{}}var ct=class{constructor(e){this.cmd=e;this.proc=null;this.buffer="";this.pending=new Map;this.seq=1;this.closed=!1;this.ensureProcess()}ensureProcess(){if(!(this.proc&&!this.closed)){if(this.closed=!1,this.proc=Ir(this.cmd,["--server"],{stdio:["pipe","pipe","pipe"]}),!this.proc.stdout||!this.proc.stderr||!this.proc.stdin)throw this.closed=!0,new Error("dart indexer stdio unavailable");this.proc.stdout.on("data",e=>this.onData(e)),this.proc.stderr.on("data",e=>{re(`[DartIndexer] ${e.toString("utf8").trim()}`)}),this.proc.on("error",e=>this.handleExit(e)),this.proc.on("exit",e=>this.handleExit(new Error(`dart indexer exited with code ${e}`)))}}handleExit(e){if(!this.closed){this.closed=!0;for(let[,n]of this.pending)n.reject(e);this.pending.clear()}}onData(e){for(this.buffer+=e.toString("utf8");;){let n=this.buffer.indexOf(`
|
|
515
515
|
`);if(n<0)break;let r=this.buffer.slice(0,n).trim();if(this.buffer=this.buffer.slice(n+1),!r)continue;let i=null;try{i=JSON.parse(r)}catch{continue}let s=this.pending.get(i.id);s&&(this.pending.delete(i.id),i.ok?s.resolve(i):s.reject(new Error(i.error||"dart server error")))}}async request(e,n=1){this.ensureProcess();let r=this.seq++;return new Promise((i,s)=>{let a={id:r,...e};this.pending.set(r,{resolve:i,reject:s});try{this.proc.stdin.write(`${JSON.stringify(a)}
|
|
516
|
-
`)}catch(o){if(this.pending.delete(r),n>0){try{this.handleExit(o)}catch{}return this.request(e,n-1).then(i,s)}s(o)}})}async parseBatch(e){let n=await this.request({op:"parse",files:e});return"results"in n&&Array.isArray(n.results)?n.results.map(r=>r.ok&&r.result?r.result:null):"result"in n&&n.result?[n.result]:e.map(()=>null)}async resolve(e){let n=await this.request({op:"resolve",...e});return"result"in n&&n.result&&typeof n.result.start=="number"?n.result:null}},
|
|
517
|
-
`)}catch{}}var
|
|
516
|
+
`)}catch(o){if(this.pending.delete(r),n>0){try{this.handleExit(o)}catch{}return this.request(e,n-1).then(i,s)}s(o)}})}async parseBatch(e){let n=await this.request({op:"parse",files:e});return"results"in n&&Array.isArray(n.results)?n.results.map(r=>r.ok&&r.result?r.result:null):"result"in n&&n.result?[n.result]:e.map(()=>null)}async resolve(e){let n=await this.request({op:"resolve",...e});return"result"in n&&n.result&&typeof n.result.start=="number"?n.result:null}},ut=class{constructor(e){this.client=e;this.queue=[];this.scheduled=!1}enqueue(e){return new Promise((n,r)=>{this.queue.push({input:e,resolve:n,reject:r,startedAt:Date.now()}),this.scheduled||(this.scheduled=!0,setImmediate(()=>this.flush()))})}async flush(){for(this.scheduled=!1;this.queue.length;){let e=[],n=0;for(;this.queue.length&&e.length<Kr;){let r=this.queue[0];if(e.length>0&&n+r.input.size>Dr)break;e.push(this.queue.shift()),n+=r.input.size}try{let r=await this.client.parseBatch(e.map(i=>({file:i.input.file,root:i.input.root,lang:i.input.lang})));for(let i=0;i<e.length;i+=1){let s=e[i],a=r[i]??null,o=Date.now()-s.startedAt;o>2e3&&re(`[${new Date().toISOString()}] [DartCliAdapter] parse slow`,{file:s.input.file,ms:o,ok:!!a}),a||re(`[${new Date().toISOString()}] [DartCliAdapter] parse failed`,{file:s.input.file,ms:o}),s.resolve(a)}}catch(r){for(let i of e)i.reject(r)}}}},nn=new Map,rn=new Map;function Fr(t){let e=process.platform==="win32"?".cmd":"",n=X(`dart-indexer/bin/pando-dart-indexer${e}`);if(n)return n;if(t){let s=lt.resolve(t,"tools/dart-indexer/bin/pando-dart-indexer"+e);if(ot.existsSync(s))return s}let r=process.env.PANDO_EXTENSION_ROOT;if(r){let s=lt.resolve(r,"tools/dart-indexer/bin/pando-dart-indexer"+e);if(ot.existsSync(s))return s}let i=lt.resolve(process.cwd(),"tools/dart-indexer/bin/pando-dart-indexer"+e);return ot.existsSync(i)?i:null}function sn(t){let e=process.env.PANDO_DART_INDEXER_CMD||Fr(t);if(!e)return null;let n=nn.get(e);n||(n=new ct(e),nn.set(e,n));let r=rn.get(e);return r||(r=new ut(n),rn.set(e,r)),{client:n,batcher:r}}async function Mr(t,e,n){let r=sn(e);if(!r)return null;try{return await r.batcher.enqueue({file:t,root:e,lang:"dart",size:n})}catch(i){return re(`[${new Date().toISOString()}] [DartCliAdapter] parse error`,{file:t,error:i?.message||i}),null}}function an(){return W({id:"dart",extensions:[".dart"],parse:async({absPath:t,projectRoot:e,content:n,meta:r})=>{let i=r?.size??Buffer.byteLength(n,"utf8");return Mr(t,e,i)},resolve:({absPath:t,nodePath:e,projectRoot:n})=>{let r=Date.now(),i=sn(n);return i?i.client.resolve({file:t,root:n,lang:"dart",nodePath:e}).then(s=>{let a=Date.now()-r;return a>2e3&&re(`[${new Date().toISOString()}] [DartCliAdapter] resolve slow`,{file:t,ms:a}),s||re(`[${new Date().toISOString()}] [DartCliAdapter] resolve failed`,{file:t,ms:a,nodePath:e}),s}).catch(s=>{let a=Date.now()-r;return re(`[${new Date().toISOString()}] [DartCliAdapter] resolve error`,{file:t,ms:a,nodePath:e,error:s?.message||s}),null}):null},exportKind:"dart"})}import dt from"fs";import Se from"path";import{spawn as Or,spawnSync as aa}from"child_process";var Lr=256e3,jr=32;function se(...t){try{let e=t.map(n=>{if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}).join(" ");process.stderr.write(e+`
|
|
517
|
+
`)}catch{}}var pt=class{constructor(e){this.cmd=e;this.proc=null;this.buffer="";this.pending=new Map;this.seq=1;this.closed=!1;this.ensureProcess()}ensureProcess(){if(!(this.proc&&!this.closed)){if(this.closed=!1,this.proc=Or(this.cmd,["--server"],{stdio:["pipe","pipe","pipe"]}),!this.proc.stdout||!this.proc.stderr||!this.proc.stdin)throw this.closed=!0,new Error("java indexer stdio unavailable");this.proc.stdout.on("data",e=>this.onData(e)),this.proc.stderr.on("data",e=>{se(`[JavaCliAdapter] ${e.toString("utf8").trim()}`)}),this.proc.on("error",e=>this.handleExit(e)),this.proc.on("exit",e=>this.handleExit(new Error(`java indexer exited with code ${e}`)))}}handleExit(e){if(!this.closed){this.closed=!0;for(let[,n]of this.pending)clearTimeout(n.timer),n.reject(e);this.pending.clear()}}onData(e){for(this.buffer+=e.toString("utf8");;){let n=this.buffer.indexOf(`
|
|
518
518
|
`);if(n<0)break;let r=this.buffer.slice(0,n).trim();if(this.buffer=this.buffer.slice(n+1),!r)continue;let i=null;try{i=JSON.parse(r)}catch{continue}let s=this.pending.get(i.id);s&&(clearTimeout(s.timer),this.pending.delete(i.id),i.ok?s.resolve(i):s.reject(new Error(i.error||"java server error")))}}async request(e,n=1){this.ensureProcess();let r=this.seq++;return new Promise((i,s)=>{let a={id:r,...e},o=setTimeout(()=>{this.pending.delete(r),s(new Error("java indexer request timed out after 30s"))},3e4);this.pending.set(r,{resolve:i,reject:s,timer:o});try{this.proc.stdin.write(`${JSON.stringify(a)}
|
|
519
|
-
`)}catch(u){if(clearTimeout(o),this.pending.delete(r),n>0){try{this.handleExit(u)}catch{}return this.request(e,n-1).then(i,s)}s(u)}})}async parseBatch(e){let n=await this.request({op:"parse",files:e});return"results"in n?n.results.map(r=>r.ok&&r.result?r.result:null):"result"in n?[n.result]:e.map(()=>null)}async resolve(e){let n=await this.request({op:"resolve",...e});return"result"in n&&n.result&&typeof n.result.start=="number"?n.result:null}},
|
|
519
|
+
`)}catch(u){if(clearTimeout(o),this.pending.delete(r),n>0){try{this.handleExit(u)}catch{}return this.request(e,n-1).then(i,s)}s(u)}})}async parseBatch(e){let n=await this.request({op:"parse",files:e});return"results"in n?n.results.map(r=>r.ok&&r.result?r.result:null):"result"in n?[n.result]:e.map(()=>null)}async resolve(e){let n=await this.request({op:"resolve",...e});return"result"in n&&n.result&&typeof n.result.start=="number"?n.result:null}},ft=class{constructor(e){this.client=e;this.queue=[];this.scheduled=!1}enqueue(e){return new Promise((n,r)=>{this.queue.push({input:e,resolve:n,reject:r,startedAt:Date.now()}),this.scheduled||(this.scheduled=!0,setImmediate(()=>this.flush()))})}async flush(){for(this.scheduled=!1;this.queue.length;){let e=[],n=0;for(;this.queue.length&&e.length<jr;){let r=this.queue[0];if(e.length>0&&n+r.input.size>Lr)break;e.push(this.queue.shift()),n+=r.input.size}try{let r=await this.client.parseBatch(e.map(i=>({file:i.input.file,root:i.input.root,lang:i.input.lang})));for(let i=0;i<e.length;i+=1){let s=e[i],a=r[i]??null,o=Date.now()-s.startedAt;o>2e3&&se(`[${new Date().toISOString()}] [JavaCliAdapter] parse slow`,{file:s.input.file,ms:o,path:"custom",ok:!!a}),a||se(`[${new Date().toISOString()}] [JavaCliAdapter] parse failed`,{file:s.input.file,ms:o,path:"custom"}),s.resolve(a)}}catch(r){for(let i of e)i.reject(r)}}}},on=new Map,ln=new Map;function $r(){return typeof __dirname=="string"?__dirname:process.cwd()}var ie,Br;function zr(t){if(ie!==void 0&&Br===t)return ie;let e=process.platform==="win32"?".cmd":"",n="tools/java-indexer/bin/pando-java-indexer"+e,r=X(`java-indexer/bin/pando-java-indexer${e}`);if(r)return ie=r,r;if(t){let s=Se.resolve(t,n);if(dt.existsSync(s))return ie=s,s}let i=$r();for(let s=0;s<8;s++){let a=Se.join(i,n);if(dt.existsSync(a))return ie=a,a;let o=Se.dirname(i);if(o===i)break;i=o}i=process.cwd();for(let s=0;s<8;s++){let a=Se.join(i,n);if(dt.existsSync(a))return ie=a,a;let o=Se.dirname(i);if(o===i)break;i=o}return ie=null,null}function cn(t){let e=process.env.PANDO_JAVA_INDEXER_CMD||zr(t);if(!e)return null;let n=on.get(e);n||(n=new pt(e),on.set(e,n));let r=ln.get(e);return r||(r=new ft(n),ln.set(e,r)),{client:n,batcher:r}}async function qr(t,e,n){let r=cn(e);if(!r)return null;try{return await r.batcher.enqueue({file:t,root:e,lang:"java",size:n})}catch(i){return se(`[${new Date().toISOString()}] [JavaCliAdapter] parse error`,{file:t,error:i?.message||i,path:"custom"}),null}}async function Hr(t,e,n){let r=await qr(t,e,n);return r||null}function un(){return W({id:"java",extensions:[".java"],exportKind:"named",parse:({absPath:t,projectRoot:e,content:n,meta:r})=>{let i=r?.size??Buffer.byteLength(n,"utf8");return Hr(t,e,i)},resolve:({absPath:t,nodePath:e,projectRoot:n})=>{let r=Date.now(),i=cn(n);return i?i.client.resolve({file:t,root:n,lang:"java",nodePath:e}).then(s=>{let a=Date.now()-r;return a>2e3&&se(`[${new Date().toISOString()}] [JavaCliAdapter] resolve slow`,{file:t,ms:a}),s||se(`[${new Date().toISOString()}] [JavaCliAdapter] resolve failed`,{file:t,ms:a,nodePath:e}),s}).catch(s=>{let a=Date.now()-r;return se(`[${new Date().toISOString()}] [JavaCliAdapter] resolve error`,{file:t,ms:a,nodePath:e,error:s?.message||s}),null}):null}})}Z();oe();import Vr from"fs";Z();Z();Z();import{spawn as Jr}from"child_process";import gt from"fs";import mt from"path";function dn(t,e){let n=process.platform==="win32"?".cmd":"",r=t==="clojure-editor"?"pando-clojure-editor":"pando-clojure-indexer",i=X(`${t}/bin/${r}${n}`);if(i)return i;if(e){let o=mt.resolve(e,`tools/${t}/bin/${r}${n}`);if(gt.existsSync(o))return o}let s=process.env.PANDO_EXTENSION_ROOT;if(s){let o=mt.resolve(s,`tools/${t}/bin/${r}${n}`);if(gt.existsSync(o))return o}let a=mt.resolve(process.cwd(),`tools/${t}/bin/${r}${n}`);return gt.existsSync(a)?a:null}var gn=3e4,Wr=Math.max(gn,Number(process.env.PANDO_CLOJURE_CHANGE_SIGNATURE_TIMEOUT_MS||`${5*60*1e3}`)),pn="__PANDO_CLOJURE_INDEX__";function Xr(...t){if(!Y())return;let e=t.map(n=>{if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}).join(" ");z("ClojureIndexer",e)}function ve(t,e){Y()&&z("ClojureIndex",t,e)}var Oe=class{constructor(e,n){this.cmd=e;this.projectRoot=n;this.proc=null;this.buffer="";this.stderrBuffer="";this.pending=new Map;this.seq=1;this.closed=!1;this.ensureProcess()}ensureProcess(){if(!(this.proc&&!this.closed)){if(this.closed=!1,ve("node.server.spawn",{projectRoot:this.projectRoot,cmd:this.cmd}),this.proc=Jr(this.cmd,["--server"],{cwd:this.projectRoot,stdio:["pipe","pipe","pipe"],env:{...process.env,PANDO_PROJECT_ROOT:this.projectRoot}}),!this.proc.stdout||!this.proc.stderr||!this.proc.stdin)throw this.closed=!0,new Error("clojure indexer stdio unavailable");this.proc.stdout.on("data",e=>this.onData(e)),this.proc.stderr.on("data",e=>this.onStderr(e)),this.proc.on("error",e=>this.handleExit(e)),this.proc.on("exit",e=>this.handleExit(new Error(`clojure indexer exited with code ${e}`)))}}handleExit(e){if(!this.closed){ve("node.server.exit",{projectRoot:this.projectRoot,error:e?.message||String(e),pendingRequestCount:this.pending.size}),this.closed=!0;for(let[,n]of this.pending)clearTimeout(n.timer),n.reject(e);this.pending.clear(),this.proc=null}}onData(e){for(this.buffer+=e.toString("utf8");;){let n=this.buffer.indexOf(`
|
|
520
520
|
`);if(n<0)break;let r=this.buffer.slice(0,n).trim();if(this.buffer=this.buffer.slice(n+1),!r)continue;let i=null;try{i=JSON.parse(r)}catch{continue}let s=this.pending.get(i.id);s&&(clearTimeout(s.timer),this.pending.delete(i.id),i.ok?s.resolve(i):s.reject(new Error(i.error||"clojure server error")))}}onStderr(e){for(this.stderrBuffer+=e.toString("utf8");;){let n=this.stderrBuffer.indexOf(`
|
|
521
|
-
`);if(n<0)break;let r=this.stderrBuffer.slice(0,n).trim();if(this.stderrBuffer=this.stderrBuffer.slice(n+1),!!r){if(r.startsWith(pn)){let i=r.slice(pn.length);try{let s=JSON.parse(i);ve(s.event||"jvm.trace",s)}catch(s){z("ClojureIndexer","stderr trace parse failed",{error:s?.message||String(s),line:r})}continue}
|
|
522
|
-
`)}catch(m){if(clearTimeout(p),this.pending.delete(r),i>0){try{this.handleExit(m)}catch{}return this.request(e,{retry:i-1,timeoutMs:s}).then(o,u)}u(m)}})}async parseBatch(e,n){let r=await this.request({op:"parse",files:e,traceBatchId:n?.batchId,traceBatchBytes:n?.batchBytes});return"results"in r?r.results.map(i=>i.ok&&i.result?i.result:null):[]}async resolve(e){let n=await this.request({op:"resolve",...e});if("result"in n){let r=n.result;if(r&&typeof r.start=="number"&&typeof r.end=="number")return r}return null}async changeSignature(e){let n=await this.request({op:"change-signature",...e},{timeoutMs:
|
|
521
|
+
`);if(n<0)break;let r=this.stderrBuffer.slice(0,n).trim();if(this.stderrBuffer=this.stderrBuffer.slice(n+1),!!r){if(r.startsWith(pn)){let i=r.slice(pn.length);try{let s=JSON.parse(i);ve(s.event||"jvm.trace",s)}catch(s){z("ClojureIndexer","stderr trace parse failed",{error:s?.message||String(s),line:r})}continue}Xr(r)}}}close(){if(this.closed)return;this.closed=!0;for(let[,n]of this.pending)clearTimeout(n.timer),n.reject(new Error("clojure indexer client closed"));this.pending.clear();let e=this.proc;if(this.proc=null,!!e){try{e.stdin?.end()}catch{}try{e.kill()}catch{}}}async request(e,n){this.ensureProcess();let r=this.seq++,i=n?.retry??1,s=n?.timeoutMs??gn,a=Date.now();return new Promise((o,u)=>{let h={id:r,...e},p=setTimeout(()=>{this.pending.delete(r),u(new Error(`clojure indexer request timed out after ${s}ms`))},s);this.pending.set(r,{resolve:m=>{ve("node.client.request.complete",{projectRoot:this.projectRoot,id:r,op:e.op,durationMs:Date.now()-a}),o(m)},reject:u,timer:p});try{ve("node.client.request.start",{projectRoot:this.projectRoot,id:r,op:e.op}),this.proc.stdin.write(`${JSON.stringify(h)}
|
|
522
|
+
`)}catch(m){if(clearTimeout(p),this.pending.delete(r),i>0){try{this.handleExit(m)}catch{}return this.request(e,{retry:i-1,timeoutMs:s}).then(o,u)}u(m)}})}async parseBatch(e,n){let r=await this.request({op:"parse",files:e,traceBatchId:n?.batchId,traceBatchBytes:n?.batchBytes});return"results"in r?r.results.map(i=>i.ok&&i.result?i.result:null):[]}async resolve(e){let n=await this.request({op:"resolve",...e});if("result"in n){let r=n.result;if(r&&typeof r.start=="number"&&typeof r.end=="number")return r}return null}async changeSignature(e){let n=await this.request({op:"change-signature",...e},{timeoutMs:Wr});return"result"in n&&n.result||null}},fn=new Map;function mn(t){return process.env.PANDO_CLOJURE_INDEXER_CMD||dn("clojure-indexer",t)}function hn(t){let e=mn(t);return e?new Oe(e,t):null}function yn(t){let e=mn(t);if(!e)return null;let n=`${e}::${t}`,r=fn.get(n);return r||(r=new Oe(e,t),fn.set(n,r)),r}var Ur=Math.max(1,Number(process.env.PANDO_CLOJURE_ANALYZER_POOL_SIZE||"3"));function Le(t,e){z("ClojureIndex",t,e)}function je(t,e){z("IndexTiming",t,e)}var $e=class{constructor(e,n=Ur){this.projectRoot=e;this.clients=[];this.idleClients=[];this.queue=[];this.inFlight=new Set;this.drainWaiters=[];this.batchSeq=1;this.closed=!1;let r=Math.max(1,n);for(let i=0;i<r;i+=1){let s=hn(e);if(!s)break;this.clients.push(s),this.idleClients.push(s)}if(!this.clients.length)throw new Error("clojure indexer command unavailable");Le("node.pool.init",{projectRoot:e,configuredPoolSize:r,actualClientCount:this.clients.length})}submit(e,n){return this.closed?Promise.reject(new Error("clojure analyzer pool is closed")):new Promise((r,i)=>{this.queue.push({batchId:this.batchSeq++,batchKey:e,files:n,enqueuedAt:Date.now(),resolve:r,reject:i}),this.pump()})}async flush(){for(;this.queue.length||this.inFlight.size;)await new Promise(e=>this.drainWaiters.push(e))}async close(){if(!this.closed){await this.flush(),this.closed=!0;for(let e of this.clients)try{e.close()}catch{}this.clients.length=0,this.idleClients.length=0}}pump(){for(;!this.closed&&this.queue.length&&this.idleClients.length;){let e=this.queue.shift(),n=this.idleClients.shift(),r=this.runJob(n,e).finally(()=>{this.inFlight.delete(r),this.closed||this.idleClients.push(n),this.pump(),this.notifyIfIdle()});this.inFlight.add(r)}this.notifyIfIdle()}async runJob(e,n){let r=n.files.reduce((a,o)=>a+Math.max(0,o.size||0),0),i=Date.now(),s=Math.max(0,i-n.enqueuedAt);Le("node.pool-batch.start",{batchId:n.batchId,batchKey:n.batchKey,fileCount:n.files.length,batchBytes:r,queueWaitMs:s,queuedBatchCount:this.queue.length,inFlightCount:this.inFlight.size});try{let a=await this.parseFiles(e,n.files,n.batchId,r);je("clojure-pool.job.complete",{projectRoot:this.projectRoot,batchId:n.batchId,batchKey:n.batchKey,fileCount:n.files.length,batchBytes:r,queueWaitMs:s,durationMs:Date.now()-i}),Le("node.pool-batch.complete",{batchId:n.batchId,batchKey:n.batchKey,fileCount:n.files.length,batchBytes:r,durationMs:Date.now()-i,successCount:Array.from(a.values()).filter(o=>!("error"in o)).length,errorCount:Array.from(a.values()).filter(o=>"error"in o).length}),n.resolve(a)}catch(a){let o=a instanceof Error?a:new Error(String(a));Le("node.pool-batch.error",{batchId:n.batchId,batchKey:n.batchKey,fileCount:n.files.length,batchBytes:r,durationMs:Date.now()-i,error:o.message}),n.reject(o)}}async parseFiles(e,n,r,i){let s=Date.now();try{let a=await e.parseBatch(n.map(u=>({file:u.absPath,root:this.projectRoot,lang:u.lang})),{batchId:r,batchBytes:i});je("clojure-parse-batch.complete",{projectRoot:this.projectRoot,batchId:r,fileCount:n.length,batchBytes:i,durationMs:Date.now()-s,split:!1});let o=new Map;for(let u=0;u<n.length;u+=1){let h=n[u],p=a[u]??null;p?o.set(h.fileKey,p):(z("IndexingAudit","clojure analysis returned no result",{projectRoot:this.projectRoot,batchId:r,file:h.absPath}),o.set(h.fileKey,{error:`clojure analysis returned no result for ${h.absPath}`}))}return o}catch(a){if(n.length>1){let h=Date.now(),p=Math.ceil(n.length/2),m=n.slice(0,p),b=n.slice(p),A=await this.parseFiles(e,m,r,m.reduce((w,M)=>w+Math.max(0,M.size||0),0)),C=await this.parseFiles(e,b,r,b.reduce((w,M)=>w+Math.max(0,M.size||0),0));return je("clojure-parse-batch.split",{projectRoot:this.projectRoot,batchId:r,fileCount:n.length,batchBytes:i,durationMs:Date.now()-h,leftCount:m.length,rightCount:b.length,error:a instanceof Error?a.message:String(a)}),new Map([...A,...C])}let o=a instanceof Error?a:new Error(String(a));je("clojure-parse-batch.error",{projectRoot:this.projectRoot,batchId:r,fileCount:n.length,batchBytes:i,durationMs:Date.now()-s,error:o.message});let u=new Map;for(let h of n)z("IndexingAudit","clojure analysis request failed",{projectRoot:this.projectRoot,batchId:r,file:h.absPath,error:o.message}),u.set(h.fileKey,{error:o.message});return u}}notifyIfIdle(){if(this.queue.length||this.inFlight.size)return;let e=this.drainWaiters.splice(0,this.drainWaiters.length);for(let n of e)try{n()}catch{}}};function Qr(t,e){if(typeof e?.size=="number"&&typeof e?.mtime=="number")return{size:e.size,mtime:e.mtime};try{let n=Vr.statSync(t);return{size:typeof e?.size=="number"?e.size:n.size,mtime:typeof e?.mtime=="number"?e.mtime:Math.floor(n.mtimeMs)}}catch{return{size:e?.size,mtime:e?.mtime}}}function Gr(t,e){let n=new Map;for(let r of e.nodes??[]){if(!r.name||r.containerKind||n.has(r.name))continue;let i=`${t}#${r.start}-${r.end}:${G.getAbbrev(r.kind,"clojure")}:${r.name}`;n.set(r.name,i)}return r=>n.get(r)??null}function Yr(t){let e=t?.error;return typeof e=="string"&&e.trim().length>0?e.trim():null}var Be=class{constructor(e){this.projectRoot=e;this.cache=new ce;this.pool=new $e(e)}prepare(e){let n=Qr(e.absPath,e.meta),r=this.cache.get(e.absPath,n);return{fileKey:e.relPath,absPath:e.absPath,relPath:e.relPath,meta:n,preDeleted:e.preDeleted,lang:e.lang,cachedParsed:r??void 0}}batchKey(e){return`${this.projectRoot}::clojure`}async analyzeBatch(e){let n=new Map,r=e.filter(s=>!s.cachedParsed);for(let s of e)s.cachedParsed&&n.set(s.fileKey,s.cachedParsed);if(!r.length)return n;let i=await this.pool.submit(this.batchKey(r[0]),r.map(s=>({fileKey:s.fileKey,absPath:s.absPath,lang:s.lang,size:s.meta?.size??0})));for(let s of r){let a=i.get(s.fileKey)??{error:`missing clojure analysis result for ${s.relPath}`};"error"in a||this.cache.set(s.absPath,s.meta??{},a),n.set(s.fileKey,a)}return n}buildProcessedFile(e,n,r){let i=Yr(r);return i?(z("IndexingAudit","clojure batch analysis failed",{projectRoot:this.projectRoot,relPath:e.relPath,error:i}),ge("clojure",e.relPath,n.meta)):me({lang:"clojure",fileRel:e.relPath,content:e.content,meta:n.meta,preDeleted:e.preDeleted,parsed:r,resolveNodeId:Gr(e.relPath,r),exportKind:"cli"})}async flush(){await this.pool.flush()}async close(){await this.pool.close()}};function Zr(...t){let e=t.map(n=>{if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}).join(" ");z("ClojureCliAdapter",e)}function bn(){return{id:"clojure",extensions:[".clj",".cljc",".cljs"],indexingMode:"batch",createBatchIndexer:t=>new Be(t),resolveSpan:(t,e,n)=>{let r=yn(t);return r?r.resolve({file:e,root:t,lang:"clojure",nodePath:n}).catch(i=>(Zr(`[${new Date().toISOString()}] [ClojureCliAdapter] resolve error`,{file:e,nodePath:n,error:i?.message||i}),null)):null}}}function Ba(t){return t.indexingMode==="worker"&&typeof t.createIndexer=="function"}var ht={ts:Ge("ts"),js:Ge("js"),python:$t(),c:{...at("c"),extensions:[".c",".h",".i",".inc"]},cpp:{...at("cpp"),extensions:[".cc",".cpp",".cxx",".c++",".cp",".ccm",".cppm",".cxxm",".ixx",".hpp",".hh",".hxx",".h++",".ii",".inl",".ipp",".tcc",".tpp",".txx"]},csharp:Wt(),dart:an(),java:un(),clojure:bn()},xn=new Map;for(let t of Object.values(ht))for(let e of t.extensions)xn.set(e,t.id);function ei(){return vt(St())}function za(t){let e=t.toLowerCase().match(/\.[a-z0-9+]+$/);return e?xn.get(e[0])??null:null}function qa(t){return ht[t]}function Ha(t){let e=t??ei(),n=new Set;for(let[i,s]of Object.entries(e.byLanguage))s.enabled&&n.add(i);let r=new Set;for(let i of Object.values(ht))if(n.has(i.id))for(let s of i.extensions)r.add(s);return r}import ti from"fs";import Sn from"path";import{promises as ni}from"fs";import Qa from"ignore";function vn(t,e){let n=t.split(/\r?\n/).map(s=>s.trim()).filter(Boolean);if(!n.length)return[];let r=e?`${e}/`:"";return n.map(s=>s.startsWith("\\#")||s.startsWith("\\!")?s.slice(1):s).filter(s=>!s.startsWith("#")).map(s=>{let a=s.startsWith("!"),o=a?s.slice(1):s;if(!o)return s;if((o.endsWith("/")?o.slice(0,-1):o).includes("/")){let m=o.startsWith("/")?o.slice(1):o,b=r?`${r}${m}`:m;return a?`!${b}`:b}let p=r?`${r}**/${o}`:o;return a?`!${p}`:p})}function Ga(t,e){let n=Sn.join(t,".gitignore");try{let r=ti.readFileSync(n,"utf8");return vn(r,e)}catch{return[]}}async function Ya(t,e){let n=Sn.join(t,".gitignore");try{let r=await ni.readFile(n,"utf8");return vn(r,e)}catch{return[]}}function ri(t,e="Operation cancelled"){let n=typeof t=="string"&&t.trim()?t.trim():t instanceof Error&&t.message.trim()?t.message.trim():e,r=new Error(n);return r.name="AbortError",r.code="ABORT_ERR",r}function eo(t,e){if(t?.aborted)throw ri(t.reason,e)}export{Rn as a,Et as b,ge as c,Ba as d,ei as e,za as f,qa as g,Ha as h,eo as i,Ga as j,Ya as k};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as b,d as O,e as L,f as D,g as E,h as A,
|
|
1
|
+
import{c as b,d as O,e as L,f as D,g as E,h as A,k as C}from"./chunk-HDFL4PL5.mjs";import{f as q}from"./chunk-HQDE7M4W.mjs";import{c as N}from"./chunk-AYCBSZ56.mjs";import{parentPort as i,threadId as se}from"worker_threads";import K from"fs";import z from"path";import{promises as X}from"fs";import G from"ignore";import{createHash as re}from"crypto";q();q();var ee=Math.max(1,Number(process.env.PANDO_BATCH_INDEX_MAX_FILES||"64")),te=Math.max(1,Number(process.env.PANDO_BATCH_INDEX_MAX_BYTES||`${1024*1024}`)),oe=Math.max(1,Number(process.env.PANDO_BATCH_INDEX_MAX_WAIT_MS||"15")),de=Math.max(ee,Number(process.env.PANDO_BATCH_INDEX_MAX_PENDING_FILES||"256")),le=Math.max(te,Number(process.env.PANDO_BATCH_INDEX_MAX_PENDING_BYTES||`${8*1024*1024}`));var xe=1*1024*1024,Pe=Math.max(3e4,Number(process.env.PANDO_WORKER_INIT_TIMEOUT_MS||12e4)),be=L();function U(e,t){return Buffer.from(e).toString(t)}function W(e,t,n,r,a){let l=Buffer.from(e),m=re("sha1").update(l).digest("hex"),s=l.toString(a),h=s?s.split(/\r?\n/).length:0;return{relPath:t,size:n,mtime:r,objectId:m,lineCount:h,encoding:a}}if(!i)throw new Error("Indexer worker must be spawned as a worker thread");N();function u(e,t){try{if(t===void 0){console.error(`[${new Date().toISOString()}] [IndexerWorker] ${e}`);return}console.error(`[${new Date().toISOString()}] [IndexerWorker] ${e} ${JSON.stringify({pid:process.pid,threadId:se,...t&&typeof t=="object"&&!Array.isArray(t)?t:{details:t}})}`)}catch{}}u("module loaded",{cwd:process.cwd(),hasParentPort:!!i,envWorkerRoot:process.env.PANDO_WORKER_SCRIPT_DIR??null,envRuntimeRoot:process.env.PANDO_RUNTIME_ROOT??null});var H=new Map,B="",F="index",I=new Map,S=new Set;function Y(e,t){return z.relative(e,t).replace(/\\/g,"/")}function ie(e,t){let n=(t||[]).map(r=>typeof r=="string"?r.trim():"").filter(Boolean).map(r=>r.replace(/^[\\/]+/,"").replace(/[\\/]+$/,"")).map(r=>r.endsWith("/")?r:`${r}/`);return n.length?r=>{let a=Y(e,r);if(!a||a.startsWith(".."))return!1;let l=a.endsWith("/")?a:`${a}/`;return n.some(m=>l.startsWith(m))}:null}async function ne(e){await new Promise(t=>{I.set(e,t)})}i.on("message",async e=>{if(e.cmd==="scan-ack"){let t=I.get(e.requestId);if(t){I.delete(e.requestId);try{t()}catch{}}return}if(e.cmd==="scan-cancel"){S.add(e.requestId);let t=I.get(e.requestId);if(t){I.delete(e.requestId);try{t()}catch{}}return}if(e.cmd==="init"){try{u("init received",{mode:e.mode??"index",projectRoot:typeof e.projectRoot=="string"?e.projectRoot:null}),typeof e.projectRoot=="string"&&(B=e.projectRoot),F=e.mode??"index",u("init completed",{mode:F,projectRoot:B}),i.postMessage({type:"ready"})}catch(t){u("init failed",{error:t?.message||String(t),stack:t?.stack??null}),i.postMessage({type:"error",message:`init failed: ${t?.message||t}`,stack:t?.stack})}return}if(e.cmd==="scan"){let t=e.requestId,n=typeof e.projectRoot=="string"?e.projectRoot:B;if(u("scan received",{requestId:t,projectRoot:n||null,batchSize:e.batchSize??null,maxFileBytes:e.maxFileBytes??null,excludeDirs:Array.isArray(e.excludeDirs)?e.excludeDirs.slice(0,20):[]}),!n){i.postMessage({type:"error",requestId:t,message:"worker not initialized"});return}let r=Math.max(1,Math.min(500,Number(e.batchSize||100))),a=Math.max(1,Number(e.maxFileBytes||1*1024*1024)),l=e.languageSupport,m=A(l),s=ie(n,e.excludeDirs??[]),h=new Set(["node_modules",".git",".pando-data"]),g=d=>d.replace(/\\/g,"/"),y=await C(n,""),w=G().add(y),o=[{dir:n,relDir:"",rules:y,ig:w}],p=0,c=0,v=[],$=async()=>{v.length&&(i.postMessage({type:"scan:batch",requestId:t,files:v}),v=[],await ne(t))};try{for(;o.length&&!S.has(t);){let d=o.pop(),j=[];try{j=await X.readdir(d.dir,{withFileTypes:!0})}catch{c+=1;continue}for(let f of j){if(S.has(t))break;let k=z.join(d.dir,f.name);if(f.isSymbolicLink?.()){c+=1;continue}if(f.isDirectory()){if(h.has(f.name)){c+=1;continue}if(s?.(k)){c+=1;continue}let Q=d.relDir?`${d.relDir}/${f.name}`:f.name,M=g(Q);if(d.ig.ignores(M)){c+=1;continue}let R=d.rules.slice(),T=await C(k,M);T.length&&R.push(...T);let V=G().add(R);o.push({dir:k,relDir:M,rules:R,ig:V});continue}if(!f.isFile()){c+=1;continue}if(s?.(k)){c+=1;continue}let x=Y(n,k);if(!x||x.startsWith("..")){c+=1;continue}if(d.ig.ignores(x)){c+=1;continue}let J=z.extname(f.name).toLowerCase();if(!m.has(J)){c+=1;continue}let _=D(x);if(!_){c+=1;continue}let P;try{P=await X.stat(k)}catch{c+=1;continue}if(P.size>a){c+=1;continue}v.push({relPath:x,absPath:k,mtimeMs:Math.floor(P.mtimeMs),size:P.size,lang:_}),p+=1,v.length>=r&&await $()}}S.has(t)||await $(),i.postMessage({type:"scan:done",requestId:t,discovered:p,skipped:c,cancelled:S.has(t)}),u("scan complete",{requestId:t,discovered:p,skipped:c,cancelled:S.has(t)})}catch(d){u("scan failed",{requestId:t,error:d?.message||String(d),stack:d?.stack??null}),i.postMessage({type:"error",requestId:t,message:d?.message||String(d),stack:d?.stack})}finally{S.delete(t),I.delete(t)}return}if(e.cmd==="process"){let t=e.role??F,n=typeof e.projectRoot=="string"?e.projectRoot:B;if(!n){i.postMessage({type:"error",requestId:e.requestId,message:"worker not initialized"});return}let{file:r}=e,a=r.encoding??"utf8",l=r.sharedBuffer,m={size:r.size,mtime:r.mtime};try{if(t==="index"){let s=r.lang??"ts",h=`${n}:${s}`,g=H.get(h);if(!g)try{u("creating language indexer",{role:t,requestId:e.requestId,lang:s,projectRoot:n});let o=E(s);if(!O(o))throw new Error(`${s} is not a worker-indexed language`);g=o.createIndexer(n),H.set(h,g),u("language indexer ready",{role:t,requestId:e.requestId,lang:s,projectRoot:n})}catch(o){if(u("language indexer create failed",{role:t,requestId:e.requestId,lang:s,error:o?.message||String(o),stack:o?.stack??null}),s!=="ts"&&s!=="js"){let p=b(s,r.relPath,m);i.postMessage({type:"result",requestId:e.requestId,role:"index",relPath:r.relPath,result:{payload:p.payload,meta:{size:p.fileSize,mtime:p.mtime}}});return}throw o}let y;l instanceof SharedArrayBuffer?y=U(l,a):l instanceof ArrayBuffer?y=Buffer.from(l).toString(a):y=K.readFileSync(r.absPath,a);let w;try{w=await g.process({absPath:r.absPath,relPath:r.relPath,content:y,meta:m,preDeleted:!!r.preDeleted,lang:s})}catch(o){if(u("process failed",{role:t,requestId:e.requestId,lang:s,relPath:r.relPath,error:o?.message||String(o),stack:o?.stack??null}),s!=="ts"&&s!=="js"){let p=b(s,r.relPath,m);i.postMessage({type:"result",requestId:e.requestId,role:"index",relPath:r.relPath,result:{payload:p.payload,meta:{size:p.fileSize,mtime:p.mtime}}});return}throw o}i.postMessage({type:"result",requestId:e.requestId,role:"index",relPath:r.relPath,result:{payload:w.payload,meta:{size:w.fileSize,mtime:w.mtime}}})}else if(l instanceof SharedArrayBuffer){let s=W(l,r.relPath,r.size,r.mtime,a);i.postMessage({type:"result",requestId:e.requestId,role:"snapshot",relPath:r.relPath,result:s})}else if(l instanceof ArrayBuffer){let s=Buffer.from(l),h=new SharedArrayBuffer(s.byteLength);new Uint8Array(h).set(s);let g=W(h,r.relPath,r.size,r.mtime,a);i.postMessage({type:"result",requestId:e.requestId,role:"snapshot",relPath:r.relPath,result:g})}else{let s=K.readFileSync(r.absPath),h=new SharedArrayBuffer(s.byteLength);new Uint8Array(h).set(s);let g=W(h,r.relPath,r.size,r.mtime,a);i.postMessage({type:"result",requestId:e.requestId,role:"snapshot",relPath:r.relPath,result:g})}}catch(s){u("process wrapper failed",{role:t,requestId:e.requestId,relPath:r.relPath,error:s?.message||String(s),stack:s?.stack??null}),i.postMessage({type:"error",requestId:e.requestId,message:s?.message||String(s),stack:s?.stack})}return}e.cmd==="close"&&i.postMessage({type:"closed"})});process.on("uncaughtException",e=>{try{i.postMessage({type:"error",message:e?.message||String(e),stack:e?.stack})}catch{}});process.on("unhandledRejection",e=>{try{i.postMessage({type:"error",message:String(e)})}catch{}});
|