effect-analyzer 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";var Cn=Object.defineProperty;var Wc=Object.getOwnPropertyDescriptor;var Kc=Object.getOwnPropertyNames;var Bc=Object.prototype.hasOwnProperty;var qc=(e,t)=>{for(var r in t)Cn(e,r,{get:t[r],enumerable:!0})},jc=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Kc(t))!Bc.call(e,o)&&o!==r&&Cn(e,o,{get:()=>t[o],enumerable:!(n=Wc(t,o))||n.enumerable});return e};var _c=e=>jc(Cn({},"__esModule",{value:!0}),e);var jf={};qc(jf,{DEFAULT_LINT_RULES:()=>Xr,DEFAULT_THRESHOLDS:()=>mr,analyze:()=>ft,analyzeConfig:()=>Ha,analyzeEffectFile:()=>Qt,analyzeEffectSource:()=>Zt,analyzeErrorFlow:()=>Ke,analyzeErrorPropagation:()=>yt,analyzeFiberLeaks:()=>Dc,analyzeGenYields:()=>oc,analyzeMatch:()=>Va,analyzeObservability:()=>ka,analyzePlatformUsage:()=>Ga,analyzeProgramGraph:()=>fa,analyzeProject:()=>Es,analyzeProjectComposition:()=>Sa,analyzeRequestBatching:()=>cc,analyzeRpcPatterns:()=>ac,analyzeScopeResource:()=>Na,analyzeServiceFlow:()=>Et,analyzeSqlPatterns:()=>ic,analyzeStateFlow:()=>ba,analyzeStm:()=>lc,analyzeTestingPatterns:()=>ec,assessComplexity:()=>$i,buildDataFlowGraph:()=>gt,buildLayerDependencyGraph:()=>_e,buildProjectServiceMap:()=>Pt,buildTopOffendersReport:()=>zi,calculateComplexity:()=>me,calculateGraphComplexity:()=>ma,calculatePathStatistics:()=>Mi,catchAllVsCatchTagRule:()=>Gr,checkDICompleteness:()=>Aa,checkVersionCompat:()=>rc,complexLayerRule:()=>Vr,computeFileDiagramQuality:()=>_i,computeProgramDiagramQuality:()=>yr,constValueToJS:()=>En,createConstCache:()=>Cc,deadCodeRule:()=>Ur,decodePlaygroundPayload:()=>fc,detectDiamondDependencies:()=>Ei,detectLayerCycles:()=>fr,diffPrograms:()=>Wr,encodePlaygroundPayload:()=>uc,errorTypeTooWideRule:()=>Jr,exportForPlayground:()=>dc,extractCauseTypeSignature:()=>To,extractEffectTypeSignature:()=>Le,extractHttpApiStructure:()=>Ya,extractLayerTypeSignature:()=>jt,extractScheduleTypeSignature:()=>wo,extractSchemaInfo:()=>ko,extractServiceRequirements:()=>ot,extractStreamTypeSignature:()=>vo,extractString:()=>vc,extractStringArray:()=>Nc,filterPaths:()=>Li,findCycles:()=>er,findMigrationOpportunities:()=>Xn,findMigrationOpportunitiesInProject:()=>Ns,findUnsatisfiedServices:()=>bi,formatComplexitySummary:()=>Di,formatConfigReport:()=>Ua,formatDICompletenessReport:()=>Fa,formatDiagnostics:()=>Wa,formatDiagnosticsJSON:()=>Ka,formatErrorSummary:()=>Ks,formatFiberLeakReport:()=>Pc,formatLintReport:()=>Oc,formatMigrationReport:()=>vs,formatTestChecklist:()=>za,formatTestMatrixAsCode:()=>_a,formatTestMatrixMarkdown:()=>ja,formatTypeSignature:()=>No,generateMultipleShowcase:()=>ua,generatePaths:()=>Nt,generatePathsWithMetadata:()=>hr,generateShowcase:()=>Nr,generateTestMatrix:()=>qa,getCached:()=>xc,getConsumers:()=>As,getDataFlowOrder:()=>ks,getDependencies:()=>pa,getDependents:()=>ga,getEffectVersion:()=>$r,getErrorProducers:()=>Ls,getErrorsAtPoint:()=>Ms,getProducers:()=>Is,getStaticChildren:()=>v,getSummary:()=>Ba,getTopologicalOrder:()=>Tr,getTransitiveDependencies:()=>Fs,inferBestDiagramType:()=>dn,isSchemaType:()=>wn,isStaticCauseNode:()=>co,isStaticConcurrencyPrimitiveNode:()=>mo,isStaticConditionalNode:()=>so,isStaticEffectNode:()=>Me,isStaticErrorHandlerNode:()=>rt,isStaticExitNode:()=>lo,isStaticFiberNode:()=>ho,isStaticGeneratorNode:()=>At,isStaticLayerNode:()=>ao,isStaticLoopNode:()=>io,isStaticMatchNode:()=>fo,isStaticParallelNode:()=>Kt,isStaticPipeNode:()=>Wt,isStaticRaceNode:()=>to,isStaticResourceNode:()=>oo,isStaticRetryNode:()=>no,isStaticScheduleNode:()=>uo,isStaticStreamNode:()=>go,isStaticTimeoutNode:()=>ro,isStaticTransformNode:()=>po,isStaticUnknownNode:()=>Bt,lintEffectProgram:()=>Lc,loadDiagramQualityHintsFromEslintJson:()=>Vi,missingErrorHandlerRule:()=>Hr,orDieWarningRule:()=>Zr,parseSourceArg:()=>jr,redundantPipeRule:()=>Qr,renderApiDocsMarkdown:()=>Qa,renderApiDocsMermaid:()=>Za,renderCausesMermaid:()=>pi,renderCompositionMermaid:()=>ya,renderCompositionWithServicesMermaid:()=>xa,renderConcurrencyMermaid:()=>hi,renderDataFlowMermaid:()=>$s,renderDataflowMermaid:()=>Ri,renderDecisionsMermaid:()=>li,renderDependencyMatrix:()=>Xi,renderDependencyMatrixFromServiceMap:()=>ea,renderDiffJSON:()=>Br,renderDiffMarkdown:()=>Kr,renderDiffMermaid:()=>qr,renderDocumentation:()=>br,renderEnhancedMermaid:()=>rr,renderEnhancedMermaidEffect:()=>Vs,renderErrorFlowMermaid:()=>Ws,renderErrorsMermaid:()=>oi,renderExplanation:()=>Sr,renderGraphMermaid:()=>ha,renderInteractiveHTML:()=>ia,renderJSON:()=>ra,renderLayerGraphMermaid:()=>Ci,renderLayersMermaid:()=>Ni,renderMermaid:()=>Hs,renderMultiProgramDocs:()=>la,renderMultipleExplanations:()=>Ji,renderMultipleJSON:()=>oa,renderMultipleSummaries:()=>Zi,renderOpenApiPaths:()=>Xa,renderPathsMermaid:()=>Us,renderRailwayMermaid:()=>ei,renderRetryGanttMermaid:()=>Qs,renderRetryMermaid:()=>Ti,renderSequenceMermaid:()=>Js,renderServiceGraphMermaid:()=>Zs,renderServicesMermaid:()=>ni,renderServicesMermaidFromMap:()=>ri,renderStaticMermaid:()=>de,renderSummary:()=>Qi,renderTestabilityMermaid:()=>ki,renderTimelineMermaid:()=>yi,resetIdCounter:()=>st,resolveConst:()=>xn,resolveGitSource:()=>_r,resolveNode:()=>$e,runCoverageAudit:()=>bs,schemaToJsonSchema:()=>wt,selectFormats:()=>Fc,setCached:()=>Ec,summarizePathSteps:()=>Mt,trackTypeTransformation:()=>Co,unboundedParallelismRule:()=>Yr,untaggedYieldRule:()=>zr,validateDataFlow:()=>Rs,validateStrict:()=>Ra,validateWorkflowErrors:()=>Os});module.exports=_c(jf);var V=require("effect");var O=require("effect"),Se=class extends Error{code;location;constructor(t,r,n){super(r),this.code=t,this.location=n,this.name="AnalysisError"}},Me=e=>e.type==="effect",At=e=>e.type==="generator",Wt=e=>e.type==="pipe",Kt=e=>e.type==="parallel",to=e=>e.type==="race",rt=e=>e.type==="error-handler",no=e=>e.type==="retry",ro=e=>e.type==="timeout",oo=e=>e.type==="resource",so=e=>e.type==="conditional",io=e=>e.type==="loop",ao=e=>e.type==="layer",co=e=>e.type==="cause",lo=e=>e.type==="exit",uo=e=>e.type==="schedule",fo=e=>e.type==="match",po=e=>e.type==="transform",go=e=>e.type==="stream";var mo=e=>e.type==="concurrency-primitive",ho=e=>e.type==="fiber";var Bt=e=>e.type==="unknown";var v=e=>{switch(e.type){case"program":return O.Option.some(e.children);case"generator":return O.Option.some(e.yields.map(t=>t.effect));case"pipe":return O.Option.some([e.initial,...e.transformations]);case"parallel":case"race":return O.Option.some([...e.children]);case"error-handler":return O.Option.some(e.handler?[e.source,e.handler]:[e.source]);case"retry":{let t=e,r=[t.source,t.scheduleNode].filter(n=>n!==void 0);return r.length>0?O.Option.some(r):O.Option.none()}case"timeout":{let t=e.source;return t?O.Option.some([t]):O.Option.none()}case"resource":return O.Option.some(e.use?[e.acquire,e.release,e.use]:[e.acquire,e.release]);case"conditional":return O.Option.some(e.onFalse?[e.onTrue,e.onFalse]:[e.onTrue]);case"loop":return O.Option.some([e.body]);case"cause":return e.children&&e.children.length>0?O.Option.some(e.children):O.Option.none();case"exit":case"schedule":case"match":return O.Option.none();case"transform":return e.source?O.Option.some([e.source]):O.Option.none();case"layer":return O.Option.some([...e.operations]);case"stream":return O.Option.some([e.source]);case"channel":return e.source?O.Option.some([e.source]):O.Option.none();case"sink":return e.source?O.Option.some([e.source]):O.Option.none();case"concurrency-primitive":return e.source?O.Option.some([e.source]):O.Option.none();case"fiber":return e.fiberSource?O.Option.some([e.fiberSource]):O.Option.none();case"interruption":{let t=[];return e.source&&t.push(e.source),e.handler&&t.push(e.handler),t.length>0?O.Option.some(t):O.Option.none()}case"effect":return e.callbackBody&&e.callbackBody.length>0?O.Option.some([...e.callbackBody]):O.Option.none();case"decision":return O.Option.some([...e.onTrue,...e.onFalse??[]]);case"switch":return O.Option.some(e.cases.flatMap(t=>[...t.body]));case"try-catch":return O.Option.some([...e.tryBody,...e.catchBody??[],...e.finallyBody??[]]);case"terminal":return e.value?O.Option.some([...e.value]):O.Option.none();case"opaque":return O.Option.none();default:return O.Option.none()}};var Te=require("effect");var So=require("module"),zc={},Nn=null,yo=new Map,I=()=>{if(!Nn)try{Nn=(0,So.createRequire)(zc.url)("ts-morph")}catch{throw new Error("ts-morph is required but not installed. Please install it as a peer dependency: npm install ts-morph")}return Nn},xo=e=>{let t=e??"__default__",r=yo.get(t);if(r)return r;let{Project:n}=I(),o={};e&&(o.tsConfigFilePath=e);let s=new n(o);return yo.set(t,s),s};var Eo=(e,t="temp.ts")=>{let{Project:r}=I();return new r({useInMemoryFileSystem:!0,compilerOptions:{strict:!0,esModuleInterop:!0}}).createSourceFile(t,e)};var Tn=require("effect");var Hc=/Effect(?:\.Effect)?<([^,]+),\s*([^,]+),\s*([^>]+)>/,Uc=/Effect(?:\.Effect)?<([^,>]+),\s*([^,>]+)>/;function vn(e){let t=o=>o.replace(/import\([^)]+\)\./g,"").replace(/typeof\s+/g,"").trim().substring(0,200),r=Hc.exec(e);if(r)return{successType:t(r[1]),errorType:t(r[2]),requirementsType:t(r[3]),isInferred:!1,typeConfidence:"inferred",rawTypeString:e};let n=Uc.exec(e);if(n)return{successType:t(n[1]),errorType:t(n[2]),requirementsType:"never",isInferred:!1,typeConfidence:"inferred",rawTypeString:e}}var Le=(e,t)=>{let r;try{r=e.getType()}catch{return}if(!Gc(r))return;let n=qt(r);if(n){let[i,c,d]=n;return{successType:be(i),errorType:be(c),requirementsType:be(d),isInferred:!0,typeConfidence:"declared",rawTypeString:r.getText()}}let o=r.getText(),s=vn(o);if(s)return s;let a=Vc(e);return a||{successType:"unknown",errorType:"never",requirementsType:"never",isInferred:!1,typeConfidence:"unknown",rawTypeString:o}};function Vc(e){try{if(!("getExpression"in e))return;let r=e.getExpression(),o=r.getType().getCallSignatures();if(o.length>0){let a=o[0].getReturnType(),i=qt(a);if(i){let[l,f,u]=i;return{successType:be(l),errorType:be(f),requirementsType:be(u),isInferred:!0,typeConfidence:"inferred",rawTypeString:a.getText()}}let c=a.getText(),d=vn(c);if(d)return d}let s=r.getSymbol();if(!s)return;for(let a of s.getDeclarations()){let i;if("getReturnType"in a)i=a.getReturnType().getText();else if("getType"in a){let d=a.getType().getCallSignatures();if(d.length>0){let l=d[0].getReturnType(),f=qt(l);if(f){let[u,p,g]=f;return{successType:be(u),errorType:be(p),requirementsType:be(g),isInferred:!0,typeConfidence:"inferred",rawTypeString:l.getText()}}i=l.getText()}}if(i){let c=vn(i);if(c)return{...c,typeConfidence:"inferred"}}}}catch{}}var Gc=e=>{let t=e.getSymbol(),r=e.getText();if(t){let o=t.getName();if(o==="Effect"||o.includes("Effect"))return!0}if(r.includes("Effect<")||r.startsWith("Effect."))return!0;let n=e.getAliasSymbol();if(n){let o=n.getName();if(o==="Effect"||o.includes("Effect"))return!0}return!1},qt=e=>{try{let t=e.getTypeArguments?.();if(!t||t.length<3){let r=e.getAliasTypeArguments?.();return r&&r.length>=3?[r[0],r[1],r[2]]:void 0}return[t[0],t[1],t[2]]}catch{return}},be=e=>e.getText().replace(/import\([^)]+\)\./g,"").replace(/typeof\s+/g,"").substring(0,200),ot=(e,t)=>{let r=[],n=e.getType(),o=e,s;try{s=typeof n.getTypeArguments=="function"?n.getTypeArguments():void 0}catch{s=void 0}if(!s||s.length<3){let c=e.getParent();if(c?.getKindName()==="VariableDeclaration"){let d=c,l=d.getType();l&&(n=l,o=d)}}let a=Jc(n);if(!a)return r;let i=Yc(a);for(let c of i){let d=o.getSourceFile(),{line:l,column:f}=d.getLineAndColumnAtPos(o.getStart()),u={filePath:d.getFilePath(),line:l,column:f};r.push({serviceId:c.id,serviceType:c.typeName,requiredAt:u})}return r},Jc=e=>{let t=qt(e);if(t)return t[2]},Yc=e=>{let t=[],r=e.getText(),n=/Context<([^>]+)>/.exec(r);if(n){let o=n[1];t.push({id:bo(o),typeName:o})}if(r.includes("|")){let o=Ie(r);for(let s of o){let a=/Context<([^>]+)>/.exec(s);a&&t.push({id:bo(a[1]),typeName:a[1]})}}return r==="never"||r==="{}"?[]:t},bo=e=>{let t=/Tag<["']([^"']+)["']/.exec(e);return t?t[1]:e.split("<")[0].trim()},Co=(e,t,r)=>{let n=[];return e.successType!==r.successType&&n.push(`${e.successType} \u2192 ${r.successType}`),e.errorType!==r.errorType&&n.push(`${e.errorType} \u2192 ${r.errorType}`),e.requirementsType!==r.requirementsType&&n.push(`${e.requirementsType} \u2192 ${r.requirementsType}`),{operation:t,typeChange:n.length>0?n.join(", "):"no change"}};function Ie(e){let t=[],r="",n=0,o=null;for(let a=0;a<e.length;a++){let i=e[a];if(o){r+=i,i===o&&e[a-1]!=="\\"&&(o=null);continue}if(i==='"'||i==="'"||i==="`"){o=i,r+=i;continue}if(i==="<"||i==="("){n++,r+=i;continue}if(i===">"||i===")"){n=Math.max(0,n-1),r+=i;continue}if(i==="|"&&n===0){t.push(r.trim()),r="";continue}r+=i}let s=r.trim();return s&&t.push(s),t.filter(Boolean)}var No=e=>`Effect<${e.successType}, ${e.errorType}, ${e.requirementsType}>`,we=e=>e.replace(/import\([^)]+\)\./g,"").replace(/typeof\s+/g,"").trim().substring(0,200),Qc=/Stream<([^,]+),\s*([^,]+),\s*([^>]+)>/,Zc=/Layer<([^,]+),\s*([^,]+),\s*([^>]+)>/,Xc=/Schedule<([^,]+),\s*([^,]+),\s*([^>]+)>/,el=/Cause<([^>]+)>/;function vo(e){let t=e.getType().getText(),r=Qc.exec(t);if(r)return{successType:we(r[1]),errorType:we(r[2]),requirementsType:we(r[3]),rawTypeString:t}}function jt(e){let t=e.getType().getText(),r=Zc.exec(t);if(r)return{providedType:we(r[1]),errorType:we(r[2]),requiredType:we(r[3]),rawTypeString:t}}function wo(e){let t=e.getType().getText(),r=Xc.exec(t);if(r)return{outputType:we(r[1]),inputType:we(r[2]),requirementsType:we(r[3]),rawTypeString:t}}function To(e){let t=e.getType().getText(),r=el.exec(t);if(r)return{errorType:we(r[1]),rawTypeString:t}}var wn=e=>{let t=e.getSymbol();if(t){let n=t.getName();return n==="Schema"||n.includes("Schema")}let r=e.getText();return r.includes("Schema<")||r.startsWith("Schema.")},ko=e=>{if(!wn(e))return;let t=e.getTypeArguments();if(t.length>=2)return{encoded:be(t[1]),decoded:be(t[0])}};var kn={tsConfigPath:"./tsconfig.json",resolveReferences:!0,maxReferenceDepth:5,includeLocations:!0,assumeImported:!1,enableEffectWorkflow:!1,knownEffectInternalsRoot:void 0,minDiscoveryConfidence:"low",onlyExportedPrograms:!1,enableEffectFlow:!1},Ao=0,st=()=>{Ao=0},T=()=>`effect-${++Ao}`,Io=new WeakMap;function _t(e){let t=Io.get(e);return t===void 0&&(t=e.getText(),Io.set(e,t)),t}function Fo(e){let t=new Set,r=n=>{for(let o of n){if(o.type==="effect"){let a=o.typeSignature?.errorType?.trim();if(a&&a!=="never")for(let i of Ie(a))t.add(i)}let s=Tn.Option.getOrElse(v(o),()=>[]);s.length>0&&r(s)}};return r(e),Array.from(t).sort()}function Ro(e){let t=new Map,r=n=>{for(let o of n){if(o.type==="effect"){let a=o.requiredServices;if(a)for(let i of a)t.has(i.serviceId)||t.set(i.serviceId,{name:i.serviceId,typeSignature:i.serviceType,isLayer:!1});if((o.semanticRole==="environment"||o.semanticRole==="side-effect")&&o.callee){let i=o.callee;/^[A-Z]/.test(i)&&!i.startsWith("Effect.")&&!i.startsWith("Schema.")&&!i.startsWith("Data.")&&!i.startsWith("Config.")&&!i.startsWith("Command.")&&!i.startsWith("Stream.")&&!i.startsWith("Option.")&&!i.startsWith("Either.")&&!i.startsWith("Cause.")&&!i.startsWith("Exit.")&&!t.has(i)&&t.set(i,{name:i,typeSignature:o.typeSignature?.requirementsType,isLayer:!1})}}let s=Tn.Option.getOrElse(v(o),()=>[]);s.length>0&&r(s)}};return r(e),Array.from(t.values())}var W=(e,t,r)=>{if(!r)return;let n=e.getSourceFile(),o=e.getStart(),{line:s,column:a}=n.getLineAndColumnAtPos(o),i=e.getEnd(),c=n.getLineAndColumnAtPos(i);return{filePath:t,line:s,column:a,endLine:c.line,endColumn:c.column}},Ge=e=>{let t=e.getJsDocs?.();if(t&&t.length>0){let n=t[0];if(!n)return;let o=n.getComment?.();if(o){let i;if(typeof o=="string")i=o;else if(Array.isArray(o))i=o.map(d=>d.text).join(`
2
2
  `);else return;let c=i.search(/\n\s*@/);return c!==-1&&(i=i.substring(0,c)),i.trim()||void 0}let s=n.getText(),a=/\/\*\*\s*\n?\s*\*\s*([^@]*?)(?=\n\s*\*\s*@|\*\/)/.exec(s);if(a?.[1])return a[1].replace(/\n\s*\*\s*/g," ").trim()||void 0}let r=e.getLeadingCommentRanges();if(r.length>0){let n=r[r.length-1];if(!n)return;let o=n.getText();if(o.startsWith("/**")){let s=o.replace(/^\/\*\*\s*/,"").replace(/\s*\*\/\s*$/,"").replace(/^\s*\*\s?/gm,"").trim(),a=s.search(/\n@/);return a!==-1?s.substring(0,a).trim()||void 0:s||void 0}}},it=e=>{let t=n=>{let o=n.getJsDocs?.();if(o&&o.length>0)return o[0].getText();let s=n.getLeadingCommentRanges();if(s.length>0){let a=s[s.length-1];if(a){let i=a.getText();if(i.startsWith("/**"))return i}}},r=t(e);if(!r){let{SyntaxKind:n}=I(),o=e.getParent();for(;o&&!r;){let s=o.getKind();if(s===n.VariableStatement){r=t(o);break}if(s===n.VariableDeclarationList){let a=o.getParent();a&&(r=t(a));break}if(s===n.CallExpression||s===n.ArrowFunction||s===n.VariableDeclaration||s===n.ParenthesizedExpression)o=o.getParent();else break}}if(r)return tl(r)};function tl(e){let t=e.replace(/^\/\*\*/,"").replace(/\*\/$/,"").split(`
3
3
  `).map(c=>c.replace(/^\s*\*\s?/,"")).join(`
4
- `),r=[],n,o=[],s,a=/@(param|returns?|throws?|exception|example)\s*(.*)/gi,i;for(;(i=a.exec(t))!==null;){let c=i[1].toLowerCase(),d=i[2].trim();if(c==="param"){let l=/^(?:\{[^}]*\}\s*)?(\[?\w+(?:=[^\]]*)?]?)\s*(?:-\s*(.*))?$/.exec(d);if(l){let f=l[1].replace(/^\[|\]$/g,"").replace(/=.*/,""),u=l[2]?.trim();r.push(u?{name:f,description:u}:{name:f})}}else if(c==="returns"||c==="return")n=d.replace(/^\{[^}]*\}\s*/,"").trim()||void 0;else if(c==="throws"||c==="throw"||c==="exception"){let l=d.replace(/^\{[^}]*\}\s*/,"").trim();l&&o.push(l)}else if(c==="example"){let l=i.index+i[0].length,f=/\n\s*@\w/.exec(t.slice(l));f?s=t.slice(i.index+i[0].length-d.length,l+f.index).trim()||void 0:s=t.slice(i.index+i[0].length-d.length).trim()||void 0}}if(!(r.length===0&&!n&&o.length===0&&!s))return{params:r,returns:n,throws:o,example:s}}var $o=e=>{let t=e.getParent(),{SyntaxKind:r}=I();if(t){let n=t.getKind();if(n===r.VariableDeclaration)return Ge(t);if(n===r.ArrowFunction){let o=t.getParent();if(o?.getKind()===r.VariableDeclaration)return Ge(o)}}};function Do(e){return e.endsWith(".js")||e.endsWith(".jsx")}var zt=e=>{let t=e.getParent(),{SyntaxKind:r}=I();if(t?.getKind()===r.VariableDeclaration)return t.getName()},Je=e=>{let{SyntaxKind:t}=I(),r=s=>{let a=s;for(;a!==void 0;){if(a.getKind()===t.VariableDeclaration)return a.getName();a=a.getParent()}},n=e.getParent();if(n){let s=n.getKind();if(s===t.VariableDeclaration)return n.getName();if(s===t.AwaitExpression){let a=n.getParent();if(a?.getKind()===t.VariableDeclaration)return a.getName()}if(s===t.PropertyAssignment){let i=n.getName(),c=r(n);return c?`${c}.${i}`:i}if(s===t.ArrowFunction){let a=n.getParent();if(a?.getKind()===t.VariableDeclaration)return a.getName();if(a?.getKind()===t.PropertyAssignment){let c=a.getName(),d=r(a);return d?`${d}.${c}`:c}}}let o=e;for(let s=0;o&&s<6&&(o=o.getParent(),!!o);s++){let a=o.getKind();if(a===t.VariableDeclaration)return o.getName();if(a===t.PropertyAssignment){let c=o.getName(),d=r(o);return d?`${d}.${c}`:c}if(a===t.Block||a===t.SourceFile)break}},Po=e=>{let{SyntaxKind:t}=I(),r=e.getParent();for(let n=0;r&&n<10;n++){if(r.getKind()===t.CallExpression){let o=r,s=o.getExpression().getText();if(s==="Effect.fn"||s.endsWith(".fn")){let a=o.getArguments();if(a.length>0){let i=a[0].getText(),c=/^["'](.+)["']$/.exec(i);if(c?.[1])return c[1]}}}r=r.getParent()}},Mo=()=>({totalEffects:0,parallelCount:0,raceCount:0,errorHandlerCount:0,retryCount:0,timeoutCount:0,resourceCount:0,loopCount:0,conditionalCount:0,layerCount:0,interruptionCount:0,unknownCount:0,decisionCount:0,switchCount:0,tryCatchCount:0,terminalCount:0,opaqueCount:0}),Ft=(e,t)=>e.length<=t?e:`${e.slice(0,t)}\u2026`;function j(e,t){switch(e.type){case"effect":{let r=t??e.name;return r?`${r} <- ${e.callee}`:e.callee}case"generator":return`Generator (${e.yields.length} yields)`;case"pipe":return`Pipe (${e.transformations.length} steps)`;case"parallel":return`${e.callee} (${e.children.length})`;case"race":return`${e.callee} (${e.children.length} racing)`;case"error-handler":return e.name?`${e.name}: ${e.handlerType}`:e.handlerType;case"retry":return e.schedule?`retry: ${e.schedule}`:"retry";case"timeout":return e.duration?`timeout: ${e.duration}`:"timeout";case"resource":return"Resource";case"conditional":return Ft(e.condition,30);case"loop":return e.iterSource?`${e.loopType}(${e.iterSource})`:e.loopType;case"layer":return e.isMerged?"Layer (merged)":"Layer";case"stream":{let n=["Stream",...e.pipeline.map(o=>o.operation)];return e.sink&&n.push(e.sink),n.join(" \u2192 ")}case"concurrency-primitive":return`${e.primitive}.${e.operation}`;case"fiber":{let r=e.operation;return e.isDaemon?`${r} (daemon)`:e.isScoped?`${r} (scoped)`:r}case"transform":return e.transformType;case"match":return`Match.${e.matchOp}`;case"cause":return`Cause.${e.causeOp}`;case"exit":return`Exit.${e.exitOp}`;case"schedule":return`Schedule.${e.scheduleOp}`;case"interruption":return e.interruptionType;case"channel":{let r=e.pipeline.map(n=>n.operation);return r.length>0?`Channel: ${r.join(" \u2192 ")}`:"Channel"}case"sink":{let r=e.pipeline.map(n=>n.operation);return r.length>0?`Sink: ${r.join(" \u2192 ")}`:"Sink"}case"decision":return Ft(e.condition,30);case"switch":return`switch(${Ft(e.expression,25)})`;case"try-catch":return"try/catch";case"terminal":return e.label?`${e.terminalKind} ${e.label}`:e.terminalKind;case"opaque":return`Opaque: ${Ft(e.reason,25)}`;case"unknown":return`Unknown: ${Ft(e.reason,30)}`}}function U(e){switch(e.type){case"effect":{if(e.serviceCall||e.serviceMethod)return"service-call";let t=e.description?.toLowerCase()??"";if(t.includes("service"))return"service-call";if(t.includes("layer")||e.provideKind==="layer")return"layer";let r=e.callee.toLowerCase();return/^[A-Z][A-Za-z0-9_]*$/.test(e.callee)&&!e.constructorKind?"environment":r.includes("sync")||r.includes("promise")||r.includes("async")||r.includes("log")||r.includes("console")?"side-effect":r.includes("succeed")||r.includes("fail")||r.includes("die")||r.includes("void")||r.includes("never")||r.includes("gen")||r.includes("make")||e.constructorKind?"constructor":"side-effect"}case"generator":case"pipe":return"constructor";case"parallel":case"race":case"concurrency-primitive":return"concurrency";case"error-handler":case"cause":case"exit":return"error-handler";case"retry":case"timeout":case"schedule":return"scheduling";case"resource":return"resource";case"conditional":case"loop":case"match":case"decision":case"switch":case"terminal":return"control-flow";case"try-catch":return"error-handler";case"opaque":return"unknown";case"layer":return"layer";case"stream":case"channel":case"sink":return"stream";case"fiber":case"interruption":return"fiber";case"transform":return"transform";case"unknown":return"unknown"}}var In=[".catchAll",".catchTag",".catchAllCause",".catchIf",".catchSome",".catchSomeCause",".catchSomeDefect",".catchAllDefect",".catchTags",".orElse",".orElseFail",".orElseSucceed",".orDie",".orDieWith",".flip",".mapError",".mapErrorCause",".mapBoth",".sandbox",".unsandbox",".parallelErrors",".filterOrDie",".filterOrDieMessage",".filterOrElse",".filterOrFail",".match",".matchCause",".matchEffect",".matchCauseEffect",".firstSuccessOf",".ignore",".ignoreLogged",".eventually"],An=[".if",".when",".whenEffect",".whenFiberRef",".whenRef",".unless",".unlessEffect",".option",".either",".exit",".liftPredicate"],nl=[".acquireRelease",".acquireUseRelease",".ensuring",".addFinalizer",".onExit",".onError",".parallelFinalizers",".sequentialFinalizers",".finalizersMask",".using",".withEarlyRelease"],Fn=[".forEach",".loop",".filter",".filterMap",".partition",".reduce",".reduceRight",".reduceWhile",".reduceEffect",".dropUntil",".dropWhile",".takeUntil",".takeWhile",".every",".exists",".findFirst",".head",".mergeAll",".replicate",".replicateEffect",".validateAll",".validateFirst",".validate",".validateWith"],Rn=["Effect.fork",".fork",".forkAll",".forkIn",".forkWithErrorHandler","Fiber."],$n={"Effect.map":"map","Effect.flatMap":"flatMap","Effect.andThen":"andThen","Effect.tap":"tap","Effect.tapBoth":"tapBoth","Effect.tapError":"tapError","Effect.tapErrorTag":"tapErrorTag","Effect.tapErrorCause":"tapErrorCause","Effect.tapDefect":"tapDefect","Effect.zipLeft":"zipLeft","Effect.zipRight":"zipRight","Effect.zipWith":"zipWith","Effect.zip":"zip","Effect.as":"as","Effect.asVoid":"asVoid","Effect.asSome":"asSome","Effect.asSomeError":"asSomeError","Effect.flatten":"flatten","Effect.ap":"ap","Effect.negate":"negate","Effect.merge":"merge"},Oo=new Set(["flatMap","andThen","tapBoth","tapError","tapErrorTag","tapErrorCause","tapDefect","zipWith","zipLeft","zipRight","zip","ap","flatten"]),Wo=e=>e in $n,Dn={"Match.type":"type","Match.tag":"tag","Match.value":"value","Match.when":"when","Match.whenOr":"whenOr","Match.whenAnd":"whenAnd","Match.not":"not","Match.is":"is","Match.exhaustive":"exhaustive","Match.orElse":"orElse","Match.option":"option","Match.either":"either","Match.discriminator":"discriminator","Match.discriminatorsExhaustive":"discriminatorsExhaustive","Match.tags":"tags","Match.tagsExhaustive":"tagsExhaustive","Match.withReturnType":"withReturnType","Match.run":"run"},Ko=new Set(["exhaustive","discriminatorsExhaustive","tagsExhaustive"]),Bo=e=>e.startsWith("Match.")&&e in Dn,Pn={"Cause.fail":"fail","Cause.die":"die","Cause.interrupt":"interrupt","Cause.parallel":"parallel","Cause.sequential":"sequential","Cause.empty":"empty","Cause.failures":"failures","Cause.defects":"defects","Cause.interruptors":"interruptors","Cause.squash":"squash","Cause.squashWith":"squashWith","Cause.pretty":"pretty","Cause.flatten":"flatten","Cause.isDie":"isDie","Cause.isFailure":"isFailure","Cause.isInterrupted":"isInterrupted","Cause.isEmpty":"isEmpty","Cause.map":"map","Cause.filter":"filter"},qo=new Set(["fail","die","interrupt","parallel","sequential","empty"]),jo=e=>e.startsWith("Cause.")&&e in Pn,Mn={"Exit.succeed":"succeed","Exit.fail":"fail","Exit.die":"die","Exit.interrupt":"interrupt","Exit.void":"void","Exit.unit":"unit","Exit.match":"match","Exit.isSuccess":"isSuccess","Exit.isFailure":"isFailure","Exit.isInterrupted":"isInterrupted","Exit.when":"when","Exit.whenEffect":"whenEffect","Exit.exists":"exists","Exit.contains":"contains","Exit.flatten":"flatten","Exit.map":"map","Exit.mapBoth":"mapBoth","Exit.mapError":"mapError","Exit.flatMap":"flatMap","Exit.zipWith":"zipWith","Exit.tap":"tap","Exit.tapBoth":"tapBoth","Exit.tapError":"tapError"},_o=new Set(["succeed","fail","die","interrupt","void","unit"]),zo=e=>e.startsWith("Exit.")&&(e in Mn||/^Exit\.\w+$/.test(e)),Ln={"Schedule.exponential":"exponential","Schedule.fibonacci":"fibonacci","Schedule.spaced":"spaced","Schedule.fixed":"fixed","Schedule.linear":"linear","Schedule.cron":"cron","Schedule.windowed":"windowed","Schedule.duration":"duration","Schedule.elapsed":"elapsed","Schedule.delays":"delays","Schedule.once":"once","Schedule.stop":"stop","Schedule.count":"count","Schedule.forever":"forever","Schedule.jittered":"jittered","Schedule.andThen":"andThen","Schedule.intersect":"intersect","Schedule.union":"union","Schedule.compose":"compose","Schedule.zipWith":"zipWith","Schedule.addDelay":"addDelay","Schedule.modifyDelay":"modifyDelay","Schedule.check":"check","Schedule.resetAfter":"resetAfter","Schedule.resetWhen":"resetWhen","Schedule.ensure":"ensure","Schedule.driver":"driver","Schedule.mapInput":"mapInput"},Ho=e=>e.startsWith("Schedule.")&&(e in Ln||/^Schedule\.\w+$/.test(e)),On=[".interruptible",".uninterruptible",".interruptibleMask",".uninterruptibleMask",".onInterrupt",".disconnect",".allowInterrupt","Effect.interrupt",".interruptWith"],rl=[".Do",".bind",".bindAll",".bindTo"],ol=[".cached",".cachedWithTTL",".cachedInvalidateWithTTL",".cachedFunction",".once","Cache.","ScopedCache."],Wn=["Effect.","Layer.","Schedule.","Stream.","Queue.","PubSub.","Deferred.","Semaphore.","Mailbox.","SubscriptionRef.","Scope.","Fiber.","Runtime.","ManagedRuntime.","NodeRuntime.","BunRuntime.","DenoRuntime.","Cause.","Exit.","Data.","Option.","Either.","Chunk.","HashMap.","HashSet.","List.","SortedMap.","SortedSet.","RedBlackTree.","Trie.","Graph.","Match.","Config.","Schema.","Cache.","ScopedCache.","RcRef.","RcMap.","Reloadable.","Cache.","ScopedCache.","RateLimiter.","PartitionedSemaphore.","FiberSet.","FiberMap.","FiberHandle.","Metric.","Logger.","Tracer.","Context.","HttpClient.","HttpRouter.","HttpApi.","FileSystem.","Command.","Socket.","SocketServer.","Worker.","Terminal.","KeyValueStore.","Multipart.","Ndjson.","MsgPack.","OpenApi.","OpenApiJsonSchema.","Brand.","Encoding.","Predicate.","DateTime.","Cron.","BigDecimal.","HashRing.","Redacted.","GlobalValue.","Channel.","Sink.","CliApp.","Args.","Options.","AiModel.","AiToolkit.","Completions.","AiInput.","AiResponse.","NodeSdk.","WebSdk.","Entity.","ClusterSchema.","MessageState.","Sharding.","RpcGroup.","RpcApi.","RpcClient.","RpcRouter.","SqlResolver.","SqlMigrator.","Printer.","Doc.","DocTree.","PageWidth.","Optimize."],Uo=new Set(["Array","ReadonlyArray","String","Number","Boolean","Object","Function","Promise","Math","Date","RegExp","Error","Map","Set","WeakMap","WeakSet","Symbol","BigInt","JSON","Console","process","Buffer","EventEmitter","Window","Document","AbortController"]),Kn=new Set(["Effect","Layer","Stream","Queue","PubSub","Deferred","Semaphore","Mailbox","SubscriptionRef","Scope","Fiber","Runtime","ManagedRuntime","Cause","Exit","Data","Option","Either","Chunk","HashMap","HashSet","List","SortedMap","SortedSet","Match","Config","Schema","Schedule","Metric","Tracer","Logger","FiberRef","FiberHandle","FiberSet","FiberMap","Cache","ScopedCache","RateLimiter","Supervisor"]),Vo=e=>e.includes(".")||Kn.has(e)?!1:/^[A-Z][A-Za-z0-9]*$/.test(e),Lo=e=>{if(e.startsWith("Channel."))return"channel";if(e.startsWith("Sink."))return"sink";if(e.endsWith(".never"))return"never";if(e.endsWith(".void"))return"void-effect";if(e.endsWith(".fromNullable"))return"null-coalescing";if(e.endsWith(".fn")||e.endsWith(".fnUntraced"))return"function-lift";if(e.includes(".async")||e.includes(".asyncEffect")||e.includes(".promise")||e.includes(".sync")||e.includes(".suspend")||e.includes(".succeed")||e.includes(".fail")||e.includes(".try"))return"constructor";if(On.some(t=>e.includes(t)))return"interruption";if(rl.some(t=>e.includes(t)))return"do-notation";if(ol.some(t=>e.includes(t)||e.startsWith(t)))return"caching";if(In.some(t=>e.includes(t)))return"error-handler";if(An.some(t=>e.includes(t)))return"conditional";if(nl.some(t=>e.includes(t)))return"resource";if(Fn.some(t=>e.includes(t)))return"collection";if(Rn.some(t=>e.includes(t)))return"fiber";if(e.startsWith("Stream."))return"stream";if(e.startsWith("Layer."))return"layer";if(e.startsWith("Schema."))return"schema";if(e.startsWith("Config."))return"config";if(e.startsWith("Cause."))return"cause";if(e.startsWith("Exit."))return"exit";if(e==="Data.tagged"||e==="Data.taggedEnum")return"tagged-enum";if(e.startsWith("Data."))return"data";if(e.startsWith("Option."))return"option";if(e.startsWith("Either."))return"either";if(e.startsWith("Match."))return"match";if(e.startsWith("ManagedRuntime.")||e.startsWith("Runtime.")||e.startsWith("NodeRuntime.")||e.startsWith("BunRuntime.")||e.startsWith("DenoRuntime."))return"runtime";if(e.startsWith("Scope."))return"scope";if(e.startsWith("ScopedRef.")||e.startsWith("RcRef.")||e.startsWith("RcMap."))return"resource-ref";if(e.startsWith("Reloadable.")||e.startsWith("Resource."))return"reloadable";if(e.startsWith("Micro."))return"micro";if(e.startsWith("Brand."))return"brand";if(e.startsWith("Encoding."))return"encoding";if(e.startsWith("Predicate."))return"predicate";if(e.startsWith("DateTime."))return"datetime";if(e.startsWith("Cron."))return"cron";if(e.startsWith("Redacted."))return"redacted";if(e.startsWith("GlobalValue."))return"global-value";if(e.startsWith("Supervisor."))return"supervisor";if(e.includes(".locally")||e.includes(".locallyWith")||e.includes(".locallyScoped")||e.includes(".getFiberRefs")||e.includes(".setFiberRefs")||e.includes(".inheritFiberRefs")||e.includes("FiberRef."))return"fiberref";if(e.includes(".withConcurrency")||e.includes(".withScheduler")||e.includes(".withSchedulingPriority")||e.includes(".daemonChildren")||e.includes(".awaitAllChildren")||e.includes(".supervised"))return"structured-concurrency";if(e.startsWith("Context.pick")||e.startsWith("Context.omit")||e==="Effect.provide"||e.startsWith("Effect.")&&e.includes(".provide")&&!e.includes("provideService"))return"context";if(e.includes(".serviceOption")||e.includes(".serviceOptional")||e.includes(".serviceFunction")||e.includes(".serviceFunctionEffect")||e.includes(".serviceFunctions")||e.includes(".serviceConstants")||e.includes(".serviceMembers")||e.includes(".updateService"))return"service";if(e.startsWith("CliApp.")||e.startsWith("Args.")||e.startsWith("Options."))return"cli";if(e.startsWith("AiModel.")||e.startsWith("AiToolkit.")||e.startsWith("Completions.")||e.startsWith("AiInput.")||e.startsWith("AiResponse."))return"ai";if(e.startsWith("NodeSdk.")||e.startsWith("WebSdk.")||e.startsWith("OtelMetrics."))return"opentelemetry";if(e.startsWith("Entity.")||e.startsWith("ClusterSchema.")||e.startsWith("MessageState.")||e.startsWith("Sharding."))return"cluster";if(e.startsWith("RpcGroup.")||e.startsWith("RpcApi.")||e.startsWith("RpcClient.")||e.startsWith("RpcRouter."))return"rpc";if(e.startsWith("SqlResolver.")||e.startsWith("SqlMigrator."))return"sql";if(e.startsWith("DevTools.")||e.startsWith("Server."))return"devtools";if(e.startsWith("BigDecimal."))return"big-decimal";if(e.startsWith("Graph."))return"graph";if(e.startsWith("HashRing."))return"hash-ring";if(e.startsWith("Chunk."))return"chunk";if(e.startsWith("HashMap.")||e.startsWith("HashSet.")||e.startsWith("List.")||e.startsWith("SortedMap.")||e.startsWith("SortedSet.")||e.startsWith("RedBlackTree.")||e.startsWith("Trie."))return"immutable-collection";if(e.includes(".map")||e.includes(".flatMap")||e.includes(".andThen")||e.includes(".tap")||e.includes(".tapBoth")||e.includes(".tapError")||e.includes(".tapErrorTag")||e.includes(".tapErrorCause")||e.includes(".tapDefect")||e.includes(".zip")||e.includes(".zipLeft")||e.includes(".zipRight")||e.includes(".zipWith")||e.includes(".as")||e.includes(".asVoid")||e.includes(".flatten")||e.includes(".merge")||e.includes(".ap")||e.includes(".validate")||e.includes(".negate"))return"transformation";if(e.startsWith("Printer.")||e.startsWith("Doc.")||e.startsWith("DocTree.")||e.startsWith("PageWidth.")||e.startsWith("Optimize."))return"printer";if(e.startsWith("Http")||e.startsWith("FileSystem.")||e.startsWith("Command.")||e.startsWith("Socket.")||e.startsWith("Worker."))return"platform";if(e.includes("channel.")&&!e.includes("Channel"))return"channel"},Go=(e,t)=>{let r=Lo(e);if(r)return r;if(t){let n=e.indexOf(".");if(n>0){let o=e.substring(0,n);if(t.has(o)){let s=e.substring(n+1);return Lo(`Effect.${s}`)}}}},re=(e,t,r=new Set)=>{let{SyntaxKind:n}=I(),o=f=>r.has(f),s=f=>/\.run(?:Promise(?:Exit)?|Sync(?:Exit)?|Fork|Callback|Main)$/.test(f)||/^Runtime\.run(?:Promise|Sync|Fork)$/.test(f),a=f=>{if(s(f))return!1;let u=f==="pipe"||f.endsWith(".pipe"),p=f.indexOf(".");return p>0&&o(f.slice(0,p))?!1:u||[...t].some(g=>f.startsWith(`${g}.`))},i=f=>{let u=f.getExpression(),p=u.getText();if(s(p))return!1;let g=p==="pipe",m=u.getKind()===n.PropertyAccessExpression&&u.getName()==="pipe";if(g||m){if(f.getArguments().some(h=>re(h,t,r)))return!0;if(m){let h=u.getExpression();return re(h,t,r)}return!1}return u.getKind()===n.Identifier&&t.has(p)&&!o(p)||a(p)||u.getKind()===n.PropertyAccessExpression&&re(u.getExpression(),t,r)?!0:f.getArguments().some(S=>re(S,t,r))},c=(f,u)=>{let p=f.getParent();for(;p&&p!==u;){let g=p.getKind();if(g===n.FunctionDeclaration||g===n.FunctionExpression||g===n.ArrowFunction||g===n.MethodDeclaration||g===n.GetAccessor||g===n.SetAccessor||g===n.ClassDeclaration||g===n.ClassExpression||g===n.Constructor||g===n.ClassStaticBlockDeclaration)return!1;p=p.getParent()}return!0},d=f=>f.getDescendantsOfKind(n.CallExpression).some(m=>c(m,f)&&i(m))||f.getDescendantsOfKind(n.AwaitExpression).some(m=>c(m,f)&&re(m,t,r))?!0:f.getDescendantsOfKind(n.PropertyAccessExpression).some(m=>c(m,f)&&re(m,t,r)),l=f=>f.getDescendantsOfKind(n.CallExpression).some(u=>c(u,f)&&s(u.getExpression().getText()));if(e.getKind()===n.ObjectLiteralExpression)return e.getProperties().some(u=>{if(u.getKind()===n.PropertyAssignment||u.getKind()===n.ShorthandPropertyAssignment){let p=u.getKind()===n.PropertyAssignment?u.getInitializer():void 0;return p?re(p,t,r):!1}if(u.getKind()===n.MethodDeclaration||u.getKind()===n.GetAccessor||u.getKind()===n.SetAccessor){let p=u.getBody();return p?d(p):!1}return!1});if(e.getKind()===n.ArrowFunction||e.getKind()===n.FunctionExpression){let u=e.getBody();if(u.getKind()===n.Block){let p=u;return p.getDescendantsOfKind(n.ReturnStatement).some(S=>{if(!c(S,p))return!1;let h=S.getExpression();return h!==void 0&&re(h,t,r)})?!0:l(p)?!1:d(p)}return re(u,t,r)}if(e.getKind()===n.CallExpression)return i(e);if(e.getKind()===n.AwaitExpression){let f=e.getExpression();return f.getKind()!==n.CallExpression?!1:i(f)}if(e.getKind()===n.ConditionalExpression){let f=e;return re(f.getWhenTrue(),t,r)||re(f.getWhenFalse(),t,r)}if(e.getKind()===n.PropertyAccessExpression){let f=e.getText(),u=f.indexOf(".");return u>0&&o(f.slice(0,u))?!1:[...t].some(p=>f.startsWith(`${p}.`))}return!1};function Oe(e){return e==="effect"||e.startsWith("effect/")||e.startsWith("@effect/")}var Bn=new Set(["Effect","Layer","Schedule","Stream","Queue","PubSub","Deferred","Semaphore","Mailbox","SubscriptionRef","Scope","Fiber","Runtime","ManagedRuntime","Cause","Exit","Data","Option","Either","Chunk","HashMap","HashSet","Match","Config","Schema","Cache","ScopedCache","Metric","Logger","Tracer","Context","Brand","Encoding","Predicate","DateTime","Cron","BigDecimal","Graph","HashRing","Redacted","GlobalValue","NodeRuntime","BunRuntime","DenoRuntime","Channel","Sink"]),Jo=new Set(["core","core-effect","core-stream","fiberRuntime","effectable","channel","sink","layer","schedule","mailbox","pubsub"]);function Yo(e){let t=new Set(["never","unknown","any","{}","object"]),r=e.trim();return!r||t.has(r)?[]:r.split(/[\s|&]+/).map(o=>o.trim().split("<")[0]?.trim()??"").filter(o=>o.length>0&&!t.has(o))}function Rt(e){let{SyntaxKind:t}=I(),r=e.getKind();if(r===t.NumericLiteral){let n=e.getText(),o=Number(n);return Number.isFinite(o)?o:void 0}if(r===t.PrefixUnaryExpression){let n=e;if(n.getOperatorToken()===t.MinusToken){let o=n.getOperand(),s=Rt(o);return s!==void 0?-s:void 0}}}var es=require("fs"),Y=require("path");var Qo=new WeakMap,Zo=new WeakMap;function qn(e){let t=new Set;for(let r of e.getExportDeclarations()){let n=r.getModuleSpecifierValue();if(!(!n||!Oe(n))){if(r.isNamespaceExport()){Bn.forEach(o=>t.add(o));continue}for(let o of r.getNamedExports()){t.add(o.getName());let s=o.getAliasNode()?.getText();s&&t.add(s)}}}return t}function at(e,t,r){if(!r.startsWith("."))return;let n=(0,Y.dirname)(t),o=(0,Y.resolve)(n,r),s=[o,`${o}.ts`,`${o}.tsx`,`${o}.js`,`${o}.jsx`,(0,Y.join)(o,"index.ts"),(0,Y.join)(o,"index.tsx"),(0,Y.join)(o,"index.js"),(0,Y.join)(o,"index.jsx")];for(let a of s){let i=e.getSourceFile(a);if(i)return i}}function $t(e,t){if(!t.startsWith("."))return;let r=(0,Y.dirname)(e),n=(0,Y.resolve)(r,t);return[n,`${n}.ts`,`${n}.tsx`,`${n}.js`,`${n}.jsx`,(0,Y.join)(n,"index.ts"),(0,Y.join)(n,"index.tsx"),(0,Y.join)(n,"index.js"),(0,Y.join)(n,"index.jsx")].find(s=>(0,es.existsSync)(s))}function Ht(e,t,r){if(!r||!t.startsWith("."))return!1;let n=t.replace(/\\/g,"/"),o=(0,Y.resolve)((0,Y.dirname)(e),t),s=(0,Y.resolve)(o),a=(0,Y.resolve)(r);return s===a||s.startsWith(a+Y.sep)?!0:e==="temp.ts"||e.endsWith(`${Y.sep}temp.ts`)?n.startsWith("./internal/")||n.startsWith("../internal/"):!1}function sl(e){let t=new Set(Bn),r=e.getProject(),n=e.getFilePath();for(let o of e.getImportDeclarations()){let s=o.getModuleSpecifierValue();if(Oe(s)){let a=o.getDefaultImport();a&&t.add(a.getText());let i=o.getNamespaceImport();i&&t.add(i.getText());for(let c of o.getNamedImports()){let d=c.getAliasNode()?.getText();t.add(d??c.getName())}continue}if(s.startsWith(".")){let a=at(r,n,s);if(!a)continue;let i=qn(a);if(i.size===0)continue;let c=o.getDefaultImport();if(c){let l=c.getText();i.has(l)&&t.add(l)}let d=o.getNamespaceImport();if(d){let l=d.getText();i.has(l)&&t.add(l)}for(let l of o.getNamedImports())i.has(l.getName())&&t.add(l.getAliasNode()?.getText()??l.getName())}}return t}function jn(e,t){let r=sl(e);for(let n of e.getImportDeclarations()){let o=n.getModuleSpecifierValue(),s=n.getNamespaceImport();if(!s)continue;let a=s.getText();if(o.startsWith("effect")||o.startsWith("@effect/")){r.add(a);continue}if(Ht(e.getFilePath(),o,t)){r.add(a);continue}let i=o.replace(/\.(js|ts)$/,"").split("/").pop()??"";Jo.has(i)&&r.add(a)}return r}var il=new Set(["BigDecimal","BigInt","Brand","Cause","Chunk","Data","Exit","Option","Either","HashMap","HashSet","List","Redacted"]);function ts(e){let t=new Set;for(let r of e.getImportDeclarations()){let s=r.getModuleSpecifierValue().replace(/\\/g,"/").replace(/\.(js|ts|tsx|jsx)$/,"").split("/").pop()??"";if(!il.has(s))continue;let a=r.getDefaultImport();a&&t.add(a.getText());let i=r.getNamespaceImport();i&&t.add(i.getText());for(let c of r.getNamedImports())t.add(c.getAliasNode()?.getText()??c.getName())}return t}function We(e){let t=Qo.get(e);return t||(t=jn(e),Qo.set(e,t)),t}var Xo=new WeakMap;function al(e){let t=e.replace(/\\/g,"/").replace(/\.(js|ts|mts|cts)$/,"");return t==="effect"||t.endsWith("/Effect")?"Effect":(t.split("/").pop()??"")||"Effect"}function cl(e){let t=Xo.get(e);if(t)return t;t=new Map;for(let r of e.getImportDeclarations()){let n=r.getModuleSpecifierValue();if(!n||!Oe(n))continue;let o=r.getNamespaceImport();if(!o)continue;let s=o.getText(),a=al(n);t.set(s,a)}return Xo.set(e,t),t}function _n(e,t){let r=e.indexOf(".");if(r<=0)return e;let n=e.slice(0,r),o=e.slice(r+1),a=cl(t).get(n);return a?`${a}.${o}`:e}function ll(e,t){let r=Zo.get(t);r||(r=new Map,Zo.set(t,r));let n=e.indexOf("."),o=n>0?e.slice(0,n):e,s=r.get(o);if(s!==void 0)return s;let a=!1;try{for(let i of t.getImportDeclarations()){let c=i.getModuleSpecifierValue();if(i.getNamespaceImport()?.getText()===o){a=Oe(c);break}if(i.getDefaultImport()?.getText()===o){a=Oe(c);break}for(let f of i.getNamedImports())if((f.getAliasNode()?.getText()??f.getName())===o){if(Oe(c))a=!0;else if(c.startsWith(".")){let g=at(t.getProject(),t.getFilePath(),c);g&&(a=qn(g).has(f.getName()))}break}if(a)break}}catch{a=!1}return r.set(o,a),a}function dl(e,t){let n=e.getExpression().getText();for(let o of t.getImportDeclarations()){let s=o.getModuleSpecifierValue();if(o.getNamespaceImport()?.getText()===n||o.getDefaultImport()?.getText()===n)return s;for(let c of o.getNamedImports())if((c.getAliasNode()?.getText()??c.getName())===n)return s}}function ct(e,t,r,n){let o=e.getExpression(),s=o.getText();if(Wn.some(d=>s.startsWith(d))||s.startsWith("pipe("))return!0;for(let d of r)if(s.startsWith(`${d}.`))return!0;let{SyntaxKind:a}=I();if(o.getKind()!==a.PropertyAccessExpression)return!1;let i=o,c=dl(i,t);if(!c)return!1;if(Oe(c))return!0;if(c.startsWith(".")){let d=at(t.getProject(),t.getFilePath(),c);if(d){let l=qn(d),f=i.getExpression().getText();for(let u of t.getImportDeclarations())if(u.getModuleSpecifierValue()===c){for(let p of u.getNamedImports())if((p.getAliasNode()?.getText()??p.getName())===f&&l.has(p.getName()))return!0}}if(Ht(t.getFilePath(),c,n))return!0}return!1}function Ut(e,t,r){if(Wn.some(n=>e.startsWith(n))||e.startsWith("pipe("))return!0;if(t){for(let n of t)if(e.startsWith(`${n}.`))return!0}return r&&e.includes(".")?ll(e,r):!1}var ul=new Set(["createWorkflow","createSagaWorkflow","runSaga"]),fl=e=>Array.from(ul).some(t=>e===t||e.endsWith(`.${t}`)),ns=e=>{let t=e.getExpression();if(t.getKind()!==I().SyntaxKind.PropertyAccessExpression)return!1;let r=t,n=e.getArguments();if(r.getName()!=="make"||n.length<3||!n[2])return!1;let o=n[2].getKind(),{SyntaxKind:s}=I();return o===s.ArrowFunction||o===s.FunctionExpression};function is(e,t){let r=e.replace(/\\/g,"/");return!!(r==="@effect/workflow"||r==="effect/workflow"||r.endsWith("/workflow")||r.includes("/workflow/")||r.endsWith("/Workflow.js")||r.endsWith("/Workflow.ts")||r.endsWith("/Activity.js")||r.endsWith("/Activity.ts")||r.startsWith(".")&&(r.endsWith("Workflow.js")||r.endsWith("Workflow.ts")||r.endsWith("Activity.js")||r.endsWith("Activity.ts")))}function pl(e,t,r){return e!=="Workflow"?!1:is(t,r)}function gl(e,t,r){return e!=="Activity"?!1:is(t,r)}function as(e,t){let{SyntaxKind:r}=I(),n=e.getArguments();if(n.length!==1||!n[0])return!1;let o=n[0];if(o.getKind()!==r.ObjectLiteralExpression)return!1;let a=o.getProperties(),i=new Set(t);for(let c of a)if(c.getKind()===r.PropertyAssignment){let d=c.getName();if(i.has(d))return!0}return!1}function ml(e,t,r){let{SyntaxKind:n}=I(),o=e.getExpression();if(o.getKind()!==n.PropertyAccessExpression)return!1;let s=o;if(s.getName()!=="make")return!1;let a=s.getExpression().getText(),i=t.get(a);return!i||!pl(a,i,r)?!1:as(e,["name","payload","idempotencyKey"])}function hl(e,t,r){let{SyntaxKind:n}=I(),o=e.getExpression();if(o.getKind()!==n.PropertyAccessExpression)return!1;let s=o;if(s.getName()!=="make")return!1;let a=s.getExpression().getText(),i=t.get(a);return!i||!gl(a,i,r)?!1:as(e,["name","execute"])}var cs=(e,t)=>{let r=e.getExpression();if(r.getKind()!==I().SyntaxKind.PropertyAccessExpression||r.getName()!=="run")return null;let o=e.getArguments();if(o.length<1||!o[0])return null;let s=o[0],{SyntaxKind:a}=I();if(s.getKind()===a.CallExpression){let l=s;return ns(l)?l.getArguments()[2]??null:null}if(s.getKind()!==a.Identifier)return null;let c=s.getText(),d=t.getDescendantsOfKind(a.VariableDeclaration);for(let l of d){if(l.getName()!==c)continue;let f=l.getInitializer();if(f?.getKind()===a.CallExpression&&ns(f))return f.getArguments()[2]??null}return null},yl=e=>{let{SyntaxKind:t}=I(),r=e.getParent();for(;r;){if(r.getKind()===t.CallExpression){let o=r.getExpression().getText();if(o.includes(".gen")||o==="gen")return!0}r=r.getParent()}return!1},Sl=e=>{let{SyntaxKind:t}=I();return e.getFirstAncestorByKind(t.VariableStatement)?.getParent()?.getKind()===t.SourceFile},xl=e=>{let{SyntaxKind:t}=I(),r=e.getInitializer();return r?r.getKind()===t.YieldExpression||r.getKind()===t.AwaitExpression&&r.getExpression().getKind()===t.YieldExpression:!1},rs=e=>{let{SyntaxKind:t}=I();if(e.getKind()===t.CallExpression)return e;if(e.getKind()===t.AwaitExpression){let r=e.getExpression();if(r.getKind()===t.CallExpression)return r}},_=(e,t)=>({discoveryConfidence:e,discoveryReason:t}),El=["Effect<","Layer<","Layer.Layer<","Stream<","Stream.Stream<","Channel<","Channel.Channel<","Sink<","Sink.Sink<","STM<","STM.STM<","Schedule<","Schedule.Schedule<"],Vt=e=>e!==void 0&&El.some(t=>e.includes(t)),os={low:0,medium:1,high:2},zn=e=>{let t=e.getExpression().getText();return t.includes(".runPromise")||t.includes(".runPromiseExit")||t.includes(".runSync")||t.includes(".runSyncExit")||t.includes(".runFork")||t.includes(".runCallback")||t.includes(".runMain")||t.includes("Runtime.runPromise")||t.includes("Runtime.runSync")||t.includes("Runtime.runFork")};function ss(e){let t=e.getBody?.();if(!t)return!1;let r=t.getText();return r.includes(".runMain")||r.includes(".runPromise")||r.includes(".runSync")||r.includes(".runFork")||r.includes("Runtime.runPromise")||r.includes("Runtime.runSync")||r.includes("NodeRuntime.runMain")||r.includes("BunRuntime.runMain")||r.includes("DenoRuntime.runMain")}function bl(e,t){let r=e.getExpression();if(r.getKind()!==I().SyntaxKind.Identifier)return!1;let s=r.getSymbol()?.getValueDeclaration();if(!s)return!1;let a=s.getKind(),{SyntaxKind:i}=I();if(a===i.FunctionDeclaration||a===i.ArrowFunction||a===i.FunctionExpression)return ss(s);if(a===i.VariableDeclaration){let c=s.getInitializer();if(c&&(c.getKind()===i.ArrowFunction||c.getKind()===i.FunctionExpression))return ss(c)}return!1}function Cl(e){let t=e.getExpression();if(e.getArguments().length!==1)return!1;let{SyntaxKind:r}=I();if(t.getKind()!==r.CallExpression)return!1;let n=t;if(n.getArguments().length!==1)return!1;let o=n.getExpression().getText();return o.includes(".runPromise")||o.includes(".runSync")||o.includes(".runFork")||o.includes(".runCallback")||o.includes("Runtime.runPromise")||o.includes("Runtime.runSync")||o.includes("Runtime.runFork")}var Hn=(e,t)=>{let r=[],{SyntaxKind:n}=I(),o=new Set,s=new Set,a=jn(e,t.knownEffectInternalsRoot),i=ts(e),c=new Map;for(let E of e.getImportDeclarations()){let y=E.getModuleSpecifierValue(),w=E.getDefaultImport();w&&c.set(w.getText(),y);let k=E.getNamespaceImport();k&&c.set(k.getText(),y);for(let b of E.getNamedImports())c.set(b.getAliasNode()?.getText()??b.getName(),y)}let d=E=>{let y=c.get(E);if(y){if(y.startsWith("effect")||y.startsWith("@effect/"))return _("high",`imported from ${y}`);if(Ht(e.getFilePath(),y,t.knownEffectInternalsRoot))return _("high","namespace import resolved under knownEffectInternalsRoot");if(y.startsWith(".")&&/(?:^|\/)Effect(?:\.[jt]sx?)?$/.test(y))return _("high",`relative Effect module namespace import (${y})`)}},l=E=>{let y=k=>{let b=k.getDescendantsOfKind(n.PropertyAccessExpression);for(let F of b){let L=F.getExpression().getText();if(a.has(L)&&!i.has(L))return d(L)?.discoveryConfidence==="high"?_("high",`function body uses ${L}.* from trusted Effect alias`):_("medium",`function body uses Effect-like alias ${L}.*`)}let M=k.getDescendantsOfKind(n.CallExpression);for(let F of M){let L=F.getExpression();if(L.getKind()===n.Identifier){let A=L.getText();if(a.has(A)&&!i.has(A))return d(A)?.discoveryConfidence==="high"?_("high",`function body calls trusted Effect import ${A}(...)`):_("medium",`function body calls Effect-like import ${A}(...)`)}}};if(E.getKind()===n.ArrowFunction||E.getKind()===n.FunctionExpression){let b=E.getBody();if(b.getKind()===n.Block){let M=y(b);if(M)return M}else{let M=y(b);if(M)return M}}let w=rs(E);if(w){let k=w.getExpression(),b=k.getText();if(k.getKind()===n.Identifier){let M=b;if(a.has(M)&&!i.has(M))return d(M)??_("high",`named import call (${M})`);if(M==="pipe")return _("medium","exact pipe() call detection")}if(k.getKind()===n.PropertyAccessExpression){let M=k,F=M.getExpression().getText();if(a.has(F)&&!i.has(F))return d(F)??_("medium",`Effect-like namespace prefix (${F}.*)`);if(M.getName()==="pipe")return _("medium","exact .pipe() call detection")}}if(E.getKind()===n.PropertyAccessExpression){let b=E.getExpression().getText();if(a.has(b)&&!i.has(b))return d(b)??_("medium",`Effect-like namespace property access (${b}.*)`)}if(E.getKind()===n.AwaitExpression){let k=E.getExpression();if(k.getKind()===n.CallExpression)return l(k)}return _("low","heuristic direct initializer match")},f=E=>{let w=(b=>b.getTypeNode?.()?.getText())(E);if(Vt(w))return _("high","explicit Effect-family type annotation");let k=E.getKind()===n.VariableDeclaration?E.getFirstAncestorByKind(n.VariableStatement)?.isExported()??!1:E.getKind()===n.PropertyDeclaration||E.getKind()===n.MethodDeclaration||E.getKind()===n.GetAccessor?E.getFirstAncestorByKind(n.ClassDeclaration)?.isExported()??!1:!1;if(E.getKind()===n.VariableDeclaration||E.getKind()===n.PropertyDeclaration){let b=E.getInitializer();if(b&&(b.getKind()===n.ArrowFunction||b.getKind()===n.FunctionExpression)){let F=b.getReturnTypeNode()?.getText();if(Vt(F))return _("high","function return type annotated as Effect-family");if(k&&w)return _("medium","explicit exported function API type signature")}if(b?.getKind()===n.CallExpression){let F=b.getTypeArguments().map(L=>L.getText()).join(" ");if(Vt(F))return _("high","call type arguments reference Effect-family types");if(k&&w)return _("medium","explicit exported call-based API type signature")}}if(E.getKind()===n.MethodDeclaration||E.getKind()===n.GetAccessor){let b=E.getReturnTypeNode?.()?.getText();if(Vt(b))return _("high","method/getter return type annotated as Effect-family");if(k&&w)return _("medium","explicit exported method/getter API type signature")}},u=E=>{let y=E.node,w=y.getKind();return w===n.CallExpression?!0:w===n.VariableDeclaration?y.getFirstAncestorByKind(n.VariableStatement)?.isExported()??!1:w===n.FunctionDeclaration||w===n.ClassDeclaration?y.isExported():w===n.PropertyDeclaration||w===n.MethodDeclaration||w===n.GetAccessor?y.getFirstAncestorByKind(n.ClassDeclaration)?.isExported()??!1:!0},p=E=>{for(let y of E){let w=y.getExpression();if(w&&re(w,a,i))return l(w)}return _("low","heuristic method return match")},g=e.getFilePath(),m=e.getDescendantsOfKind(n.VariableDeclaration);for(let E of m){let y=E.getInitializer();if(y?.getKind()===n.CallExpression&&fl(y.getExpression().getText())&&s.add(E.getName()),t.enableEffectWorkflow&&y?.getKind()===n.CallExpression){let w=y;(ml(w,c,g)||hl(w,c,g))&&s.add(E.getName())}}let S=e.getDescendantsOfKind(n.CallExpression);for(let E of S){let y=E.getExpression(),w=y.getText(),k=E.getStart(),b=!1;if(y.getKind()===n.Identifier)b=s.has(w);else if(y.getKind()===n.PropertyAccessExpression){let F=y,L=F.getExpression().getText(),A=F.getName();if(b=s.has(L)&&A==="run",t.enableEffectWorkflow&&!b&&A==="run"&&E.getArguments().length===1&&!w.includes("runPromise")&&!w.includes("runSync")&&!w.includes("runFork")&&!w.includes("runCallback")&&!o.has(k)){let K=Je(E)??`workflow-${r.length+1}`;r.push({name:K,node:E,type:"run",..._("low","workflow-like .run(...) shape heuristic")}),o.add(k);continue}}if(b&&!o.has(k)){let F=Je(E)??`workflow-${r.length+1}`;r.push({name:F,node:E,type:"run",..._("medium","workflow builder invocation")}),o.add(k);continue}if(t.enableEffectWorkflow&&y.getKind()===n.PropertyAccessExpression){let F=y,L=F.getExpression().getText(),A=F.getName();if((A==="execute"||A==="executeEncoded")&&s.has(L)&&!o.has(k)){let q=Je(E)??`${L}.${A}`;r.push({name:q,node:E,type:"workflow-execute",..._("medium","workflow/activity .execute entrypoint")}),o.add(k);continue}}if((w==="gen"||w.includes(".gen")&&ct(E,e,a,t.knownEffectInternalsRoot))&&!o.has(k)){let F=Je(E)??Po(E)??`program-${r.length+1}`;r.push({name:F,node:E,type:"generator",...w==="gen"?_("medium","unqualified gen(...) call"):_("high","Effect-like .gen(...) call")}),o.add(k)}let M=Je(E);if(w.includes("pipe")&&Nl(E,a)&&!o.has(k)&&y.getKind()!==n.PropertyAccessExpression&&M!==void 0&&!yl(E)&&(r.push({name:M,node:E,type:"pipe",..._("medium","exact pipe(...) call with Effect-like args")}),o.add(k)),(zn(E)||Cl(E))&&!o.has(k)){let F=Je(E)??`run-${r.length+1}`;r.push({name:F,node:E,type:"run",..._("high","recognized Runtime/Effect run* entrypoint")}),o.add(k)}}for(let E of m){if(!Sl(E)||xl(E))continue;let y=E.getInitializer();if(y){let w=E.getName(),k=rs(y);if(k&&zn(k)||y.getKind()===n.ObjectLiteralExpression)continue;re(y,a,i)&&!r.some(M=>M.name===w)&&r.push({name:w,node:E,type:"direct",...f(E)??l(y)})}}let h=e.getStatements();for(let E of h){if(E.getKind()!==n.ExpressionStatement)continue;let y=E.getExpression();if(y.getKind()!==n.CallExpression)continue;let w=y,k=w.getStart();if(o.has(k))continue;let b=w.getExpression(),M=b.getText();if(zn(w)){let F=`run-${r.length+1}`;r.push({name:F,node:w,type:"run",..._("high","recognized top-level run* entrypoint")}),o.add(k);continue}if(M.endsWith(".pipe")||M==="pipe"){let F=w.getArguments(),L=F[F.length-1];if(!L)continue;let A=L.getText();if(A.includes(".runMain")||A.includes(".runPromise")||A.includes(".runSync")||A.includes(".runFork")){let q;b.getKind()===n.PropertyAccessExpression&&(q=b.getExpression().getText().split(".").pop());let Z=q&&!r.some(J=>J.name===q)?q:`entrypoint-${r.length+1}`;r.push({name:Z,node:w,type:"run",..._("medium","top-level pipe(...).run* terminator pattern")}),o.add(k)}}if(b.getKind()===n.Identifier&&w.getArguments().length>=1){let F=b.getText();bl(w,e)&&!r.some(A=>A.name===F)&&(r.push({name:F,node:w,type:"run",..._("low","indirect run wrapper body heuristic")}),o.add(k))}}let N=["Data.TaggedError","Data.TaggedClass","Data.Class","Data.Error","Schema.Class","Schema.TaggedClass","Schema.TaggedError","Schema.TaggedRequest","Context.Tag","Context.Reference","Effect.Service"],x=e.getDescendantsOfKind(n.ClassDeclaration);for(let E of x){let y=E.getName();if(!y||r.some(b=>b.name===y))continue;E.getHeritageClauses().some(b=>{let M=b.getText();return N.some(F=>M.includes(F))})&&r.push({name:y,node:E,type:"class",..._("medium","known Data/Schema/Context class pattern")})}let C=x.filter(E=>{let y=E.getParent();return y===e||y?.getParent()===e});for(let E of C){let y=E.getName()??"Anonymous",w=E.getMembers(),k=w.filter(F=>F.getKind()===n.PropertyDeclaration);for(let F of k){let L=F.getInitializer();if(!L)continue;let A=F.getName(),K=`${y}.${A}`;r.some(q=>q.name===K)||re(L,a,i)&&r.push({name:K,node:F,type:"classProperty",...f(F)??l(L)})}let b=w.filter(F=>F.getKind()===n.MethodDeclaration);for(let F of b){let L=F.getName(),A=`${y}.${L}`;if(r.some(J=>J.name===A))continue;let K=F.getBody();if(!K)continue;let q=K.getDescendantsOfKind(n.ReturnStatement);q.some(J=>{let P=J.getExpression();return P?re(P,a,i):!1})&&r.push({name:A,node:F,type:"classMethod",...f(F)??p(q)})}let M=w.filter(F=>F.getKind()===n.GetAccessor);for(let F of M){let L=F.getName(),A=`${y}.${L}`;if(r.some(J=>J.name===A))continue;let K=F.getBody();if(!K)continue;let q=K.getDescendantsOfKind(n.ReturnStatement);q.some(J=>{let P=J.getExpression();return P?re(P,a,i):!1})&&r.push({name:A,node:F,type:"classMethod",...f(F)??p(q)})}}return r.filter(E=>{let y=t.minDiscoveryConfidence??"low",w=E.discoveryConfidence??"low";return!(os[w]<os[y]||t.onlyExportedPrograms&&!u(E))})},Nl=(e,t)=>e.getArguments().map(o=>o.getText()).some(o=>[...t].some(s=>o.includes(`${s}.`)));function ls(e){let{SyntaxKind:t}=I(),r=[],n=e.getProject().getTypeChecker(),o=e.getDescendantsOfKind(t.ClassDeclaration);for(let s of o){let a=s.getName();if(!a)continue;let i=s.getExtends();if(!i)continue;let c=i.getText();if(!c.includes("Context.Tag")&&!c.includes("Effect.Service"))continue;let d=i.getTypeArguments();if(d.length<2){let f=i.getExpression();f&&"getTypeArguments"in f&&typeof f.getTypeArguments=="function"&&(d=f.getTypeArguments())}if(d.length<2)continue;let l=d[1];if(l)try{let f=n.getTypeAtLocation(l),u=[],p=[];for(let h of f.getProperties()){let N=h.getName();if(N.startsWith("_")||N==="constructor")continue;n.getTypeOfSymbolAtLocation(h,l).getCallSignatures().length>0?u.push(N):p.push(N)}let g=s.getText(),m=g.includes("Equal.symbol")||g.includes("[Equal")||g.includes("equal("),S=g.includes("Hash.symbol")||g.includes("[Hash")||g.includes("hash(");r.push({tagId:a,methods:u,properties:p,...m?{hasCustomEquality:m}:{},...S?{hasCustomHash:S}:{}})}catch{}}for(let s of o){let a=s.getName();if(!a)continue;let i=s.getExtends();if(!i)continue;let c=i.getText();if(!c.includes("Data.Class")&&!c.includes("Data.TaggedClass")||r.some(u=>u.tagId===a))continue;let d=s.getText(),l=d.includes("Equal.symbol")||d.includes("[Equal")||d.includes("equal("),f=d.includes("Hash.symbol")||d.includes("[Hash")||d.includes("hash(");(l||f)&&r.push({tagId:a,methods:[],properties:[],hasCustomEquality:l,hasCustomHash:f})}return r}var X=require("effect");var G=require("effect");var Jt=(e,t,r,n,o,s)=>G.Effect.gen(function*(){let{SyntaxKind:a}=I(),i=e.getArguments(),c=e.getExpression(),d=c.getKind()===a.PropertyAccessExpression&&c.getName()==="pipe",l=d?c.getExpression():i[0],f=d?i:i.slice(1);if(!l)return[];let u=us(l),p=u.getSourceFile(),g=p.getFilePath(),m=t.getProject();if(m.getSourceFile(g)){let E=m.getSourceFile(g);E&&(p=E)}else{let E=m.addSourceFileAtPath(g);E&&(p=E)}let S=yield*D(u,p,p.getFilePath(),n,o,s),h=[];for(let E of f)if(E){let y=yield*D(E,t,r,n,o,s);h.push(y)}let N;try{let E=t.getProject().getTypeChecker(),y=[],w=Le(l,E);w&&y.push(w);for(let k of f)if(k){let b=Le(k,E);b&&y.push(b)}y.length>0&&(N=y)}catch{}let x={id:T(),type:"pipe",initial:S,transformations:h,...N?{typeFlow:N}:{}};return[{...x,displayName:j(x),semanticRole:U(x)}]}),D=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let{SyntaxKind:i}=I();if(e.getKind()===i.ArrowFunction||e.getKind()===i.FunctionExpression){let l=e.getBody();if(!l){let u={id:T(),type:"unknown",reason:"Function has no body",sourceCode:e.getText().slice(0,100),location:W(e,r,n.includeLocations??!1)};return s.unknownCount++,u}if(l.getKind()===i.Block){let g=l.getStatements().find(m=>m.getKind()===i.ReturnStatement)?.getExpression();if(g)return yield*D(g,t,r,n,o,s,a)}else return yield*D(l,t,r,n,o,s,a);let f={id:T(),type:"unknown",reason:"Function does not return an Effect expression",sourceCode:e.getText().slice(0,100),location:W(e,r,n.includeLocations??!1)};return s.unknownCount++,f}if(e.getKind()===i.CallExpression)return yield*Un(e,t,r,n,o,s,a);if(e.getKind()===i.PropertyAccessExpression){let d=e.getText();if(d==="Fiber.roots"||d==="Fiber.getCurrentFiber"){let l=d==="Fiber.roots"?"roots":"getCurrentFiber";return{id:T(),type:"fiber",operation:l,isScoped:!1,isDaemon:!1,location:W(e,r,n.includeLocations??!1)}}if(Ut(d,We(t),t)){let l={id:T(),type:"effect",callee:d,location:W(e,r,n.includeLocations??!1)};return s.totalEffects++,l}}if(e.getKind()===i.Identifier){let d={id:T(),type:"effect",callee:e.getText(),location:W(e,r,n.includeLocations??!1)};return s.totalEffects++,d}if(e.getKind()===i.ObjectLiteralExpression){let d=e,l=new Set(["onNone","onSome","onFailure","onSuccess","onLeft","onRight"]),f=d.getProperties(),u=[],p=!1;for(let g of f){if(g.getKind()!==i.PropertyAssignment)continue;let m=g,S=m.getName();if(!l.has(S))continue;p=!0;let h=m.getInitializer();if(h){let N=yield*D(h,t,r,n,o,s,a);u.push(N)}}if(p&&u.length>0)return u.length===1?u[0]:{id:T(),type:"parallel",callee:"match-handlers",mode:"sequential",children:u,location:W(e,r,n.includeLocations??!1)}}let c={id:T(),type:"unknown",reason:"Could not determine effect type",sourceCode:e.getText().slice(0,100),location:W(e,r,n.includeLocations??!1)};return s.unknownCount++,c}),Un=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let{SyntaxKind:i}=I(),c=e.getExpression().getText(),d=_n(c,t),l=/([A-Za-z_$][\w$]*)$/.exec(d)?.[1]??d,f=W(e,r,n.includeLocations??!1);if(c==="pipe"&&e.getArguments().length>=1){let P=yield*Jt(e,t,r,n,o,s);if(P.length>0&&P[0])return P[0]}if(d==="Context.pick"||d==="Context.omit"){let P={id:T(),type:"effect",callee:d,description:"context",location:f};return s.totalEffects++,{...P,displayName:j(P),semanticRole:U(P)}}if(d.startsWith("Layer."))return yield*kl(e,d,t,r,n,o,s);if(d.startsWith("Stream."))return yield*Il(e,d,t,r,n,o,s);if(d.startsWith("Channel."))return yield*Fl(e,d,t,r,n,o,s);if(c.startsWith("Sink."))return yield*$l(e,c,t,r,n,o,s);if(c.startsWith("Queue.")||c.startsWith("PubSub.")||c.startsWith("Deferred.")||c.startsWith("Semaphore.")||c.startsWith("Mailbox.")||c.startsWith("SubscriptionRef.")||c.startsWith("RateLimiter.")||c.startsWith("PartitionedSemaphore.")||c.startsWith("FiberHandle.")||c.startsWith("FiberSet.")||c.startsWith("FiberMap.")||c.startsWith("Cache.")||c.startsWith("ScopedCache.")||c.startsWith("RcRef.")||c.includes(".RcRef.")||c.startsWith("RcMap.")||c.includes(".RcMap.")||c.startsWith("Reloadable.")||c.includes(".Reloadable.")||c.includes("makeLatch")||c.includes("Latch."))return yield*Dl(e,c,t,r,n,o,s);if(Rn.some(P=>c.includes(P)||c.startsWith(P)))return yield*Pl(e,c,t,r,n,o,s);if(On.some(P=>c.includes(P)))return yield*Ml(e,c,t,r,n,o,s);if(c.includes(".all")||c==="all")return yield*Ol(e,c,t,r,n,o,s);if(c.includes(".race")||c==="race")return yield*Wl(e,c,t,r,n,o,s);if(In.some(P=>c.includes(P)))return yield*Kl(e,c,t,r,n,o,s);if(c.includes(".retry"))return yield*Bl(e,t,r,n,o,s);if(c.includes(".timeout"))return yield*ql(e,t,r,n,o,s);let p=new Set(["acquireRelease","acquireUseRelease","ensuring","addFinalizer","onExit","onError","parallelFinalizers","sequentialFinalizers","finalizersMask","using","withEarlyRelease"]),g=["acquireRelease","acquireUseRelease"],m=P=>p.has(P)||g.some(H=>P.startsWith(H));if(l==="pipe"&&e.getExpression().getKind()===i.PropertyAccessExpression){let H=e.getExpression().getExpression();if(H.getKind()===i.CallExpression){let ye=H,pe=ye.getExpression().getText(),ne=/([A-Za-z_$][\w$]*)$/.exec(pe)?.[1]??pe;if(m(ne))return yield*ds(ye,ne,t,r,n,o,s)}}if(m(l))return yield*ds(e,l,t,r,n,o,s);if(An.some(P=>c.includes(P)))return yield*jl(e,c,t,r,n,o,s);if(Fn.some(P=>c.includes(P)))return yield*_l(e,c,t,r,n,o,s);if(Wo(c))return yield*Gl(e,c,t,r,n,o,s);if(Bo(c))return zl(e,c,r,n);if(jo(c))return yield*Hl(e,c,t,r,n,o,s);if(zo(c))return Ul(e,c,r,n);if(Ho(c))return yield*Vl(e,c,r,n);s.totalEffects++;let S,N=["Effect.sync","Effect.promise","Effect.async","Effect.asyncEffect","Effect.tryPromise","Effect.suspend"].some(P=>c.includes(P))&&e.getArguments().length>0&&e.getArguments()[0],x;if(N){let P=e.getArguments()[0],{SyntaxKind:H}=I();if(P.getKind()===H.ArrowFunction||P.getKind()===H.FunctionExpression){let pe=P,ne=pe.getBody(),De=[];if(ne){if(ne.getKind()===H.Block){let Pe=ne;for(let Ue of Pe.getStatements())if(Ue.getKind()===H.ReturnStatement){let ve=Ue.getExpression();if(ve&&Ut(ve.getText(),We(t),t)){let Ve=yield*D(ve,t,r,n,o,s,void 0);De.push(Ve)}}else if(Ue.getKind()===H.ExpressionStatement){let ve=Ue.getExpression();if(ve.getKind()===H.CallExpression&&ct(ve,t,We(t),n.knownEffectInternalsRoot)){let Ve=yield*D(ve,t,r,n,o,s,void 0);De.push(Ve)}}}else if(Ut(ne.getText(),We(t),t)){let Pe=yield*D(ne,t,r,n,o,s,void 0);De.push(Pe)}}if(De.length>0&&(S=De),c.includes("Effect.async")||c.includes("Effect.asyncEffect")){let Pe=pe.getParameters()[0]?.getName?.()??"resume",Ue=0,ve=kt=>{if(kt.getKind()===H.CallExpression){let It=kt.getExpression();It.getKind()===H.Identifier&&It.getText()===Pe&&Ue++}kt.getChildren().forEach(ve)};ne&&ve(ne);let Ve=!1;if(ne?.getKind()===H.Block){let kt=ne;for(let bn of kt.getStatements())if(bn.getKind()===H.ReturnStatement){let It=bn.getExpression();if(It){let eo=It.getKind();if(eo===H.ArrowFunction||eo===H.FunctionExpression){Ve=!0;break}}}}else ne&&(ne.getKind()===H.ArrowFunction||ne.getKind()===H.FunctionExpression)&&(Ve=!0);x={resumeParamName:Pe,resumeCallCount:Ue,returnsCanceller:Ve}}}}let C=Ge(e),E=t.getProject().getTypeChecker(),y=Le(e,E),w=ot(e,E),k=vl(e,t),b,M=e.getExpression();if(M.getKind()===I().SyntaxKind.PropertyAccessExpression){let P=M,H=P.getExpression().getText(),ye=P.getName();if(a){let pe=a.get(H);pe&&(b={serviceId:pe,methodName:ye})}!b&&w?.length===1&&w[0]&&(b={serviceId:w[0].serviceId,methodName:ye})}let F;if(c==="Effect.provide"||c.startsWith("Effect.")&&c.includes(".provide")&&!c.includes("provideService")){let P=e.getArguments(),H=(P.length>=2?P[1]:P[0])?.getText()??"";/Runtime\.|defaultRuntime|\.runSync|\.runPromise|\.runFork|\.runCallback/.test(H)||/^\s*runtime\s*$|^\s*rt\s*$/i.test(H.trim())?F="runtime":H.includes("Layer.")?F="layer":F="context"}let L;c.endsWith(".sync")||c.endsWith(".succeed")||c.endsWith(".fail")||c.endsWith(".try")||c.endsWith(".suspend")?L="sync":c.endsWith(".promise")?L="promise":c.endsWith(".async")||c.endsWith(".asyncEffect")?L="async":c.endsWith(".never")?L="never":c.endsWith(".void")?L="void":c.endsWith(".fromNullable")?L="fromNullable":c.endsWith(".fn")?L="fn":c.endsWith(".fnUntraced")&&(L="fnUntraced");let A,K=["currentConcurrency","currentLogLevel","currentScheduler","currentTracerEnabled","currentLogSpan","currentLogAnnotations","currentContext","currentRequestBatching","currentMaxOpsBeforeYield","currentSupervisor","currentMetricLabels","interruptedCause","unhandledLogLevel"];for(let P of K)if(c.includes(P)){A=P;break}let q;if(L==="fn"||L==="fnUntraced"){let P=e.getArguments();if(P.length>0){let H=P[0].getText(),ye=/^["'`](.+?)["'`]$/.exec(H);ye&&(q=ye[1])}}let Z={id:T(),type:"effect",callee:c,description:k?"service-call":Go(c,We(t)),location:f,jsdocDescription:C,jsdocTags:it(e),typeSignature:y,requiredServices:w,serviceCall:k,serviceMethod:b,callbackBody:S,...x?{asyncCallback:x}:{},...F?{provideKind:F}:{},...L?{constructorKind:L}:{},...A?{fiberRefName:A}:{},...q?{tracedName:q}:{}};return{...Z,displayName:j(Z),semanticRole:U(Z)}}),vl=(e,t)=>{let{SyntaxKind:r}=I(),n=e.getExpression();if(n.getKind()!==r.PropertyAccessExpression)return;let o=n,s=o.getExpression(),a=o.getName(),i=s.getText(),c=i.split(".")[0]??i;if(!Kn.has(c))try{let d=s.getType(),l=d.getSymbol()??d.getAliasSymbol();if(!l)return;let f=l.getName();return!f||f==="__type"||f==="unknown"||f==="any"||Uo.has(f)?void 0:{serviceType:f,methodName:a,objectName:i}}catch{return}};function Gt(e){let t=e.getExpression().getText(),r=e.getSourceFile(),n=_n(t,r);return n.startsWith("Layer.")||n.startsWith("Effect.")||t==="pipe"||t.endsWith(".pipe")}function wl(e,t,r){let{SyntaxKind:n}=I(),o=e.getSourceFile(),s=o.getProject(),a=o.getFilePath(),c=t.getImportDeclaration().getModuleSpecifierValue();if(!c?.startsWith("."))return;let d=at(s,a,c);if(!d){let m=$t(a,c);if(m){let S=s.addSourceFileAtPath(m);S&&(d=S)}}if(!d)return;d=s.getSourceFile(d.getFilePath())??d;let l=m=>{if(m.getKind()===n.VariableDeclaration){let h=m.getInitializer();if(h?.getKind()===n.CallExpression&&r(h))return h}if(m.getKind()===n.VariableStatement){let S=m.getDeclarationList();for(let h of S.getDeclarations()){let N=h.getInitializer();if(N?.getKind()===n.CallExpression&&r(N))return N}}},f=t.getName(),u=d.getExportedDeclarations(),p=u.get(f)??[];for(let m of p){let S=l(m);if(S)return S}let g=t.getTargetName?.();if(g&&g!==f)for(let m of u.get(g)??[]){let S=l(m);if(S)return S}for(let[,m]of u)for(let S of m){let h=l(S);if(h)return h}}function Tl(e,t,r){let{SyntaxKind:n}=I(),o=e.getSourceFile(),s=o.getProject(),a=o.getFilePath(),i=t.getModuleSpecifierValue();if(!i?.startsWith("."))return;let c=at(s,a,i);if(!c){let l=$t(a,i);if(l){let f=s.addSourceFileAtPath(l);f&&(c=f)}}if(!c)return;c=s.getSourceFile(c.getFilePath())??c;let d=l=>{if(l.getKind()===n.VariableDeclaration){let u=l.getInitializer();if(u?.getKind()===n.CallExpression&&r(u))return u}if(l.getKind()===n.VariableStatement){let f=l.getDeclarationList();for(let u of f.getDeclarations()){let p=u.getInitializer();if(p?.getKind()===n.CallExpression&&r(p))return p}}};for(let l of c.getDefaultExportSymbol()?.getDeclarations()??[]){let f=d(l);if(f)return f}for(let l of c.getExportedDeclarations().get("default")??[]){let f=d(l);if(f)return f}}function us(e){let{SyntaxKind:t}=I();if(e.getKind()!==t.Identifier)return e;let r=e,n=r.getText(),o=r.getSymbol(),s=o?.getValueDeclaration(),a=s?.getKind()===t.ImportSpecifier?s:void 0;if(!a&&o){let i=o.getDeclarations().find(c=>c.getKind()===t.ImportSpecifier);i&&(a=i)}if(!a){let i=r.getSourceFile();for(let c of i.getImportDeclarations()){if(c.getDefaultImport()?.getText()===n){let f=Tl(r,c,Gt);if(f)return f}let l=c.getNamedImports().find(f=>f.getName()===n||f.getAliasNode()?.getText()===n);if(l){a=l;break}}}if(a){let i=wl(r,a,Gt);if(i)return i;o=o?.getImmediatelyAliasedSymbol()??o?.getAliasedSymbol(),s=o?.getValueDeclaration()}if(s?.getKind()===t.ExportSpecifier&&(o=o?.getImmediatelyAliasedSymbol()??o?.getAliasedSymbol(),s=o?.getValueDeclaration()),o&&s?.getKind()!==t.VariableDeclaration){for(let i of o.getDeclarations())if(i.getKind()===t.VariableDeclaration){let d=i.getInitializer();if(d?.getKind()===t.CallExpression&&Gt(d))return d}}if(s?.getKind()===t.VariableDeclaration){let c=s.getInitializer();if(c?.getKind()===t.CallExpression&&Gt(c))return c}return e}var kl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=[],{SyntaxKind:d}=I();if(i.length>0&&i[0]){let y=i[0];if(t.includes("mergeAll")&&y.getKind()===d.ArrayLiteralExpression){let k=y.getElements();for(let b of k){let M=yield*D(b,r,n,o,s,a);c.push(M)}}else for(let k of i){if(!k)continue;let b=us(k),M=b.getSourceFile(),F=yield*D(b,M,M.getFilePath(),o,s,a);c.push(F)}}let l=t.includes("merge")||t.includes("mergeAll"),f;t.includes("fresh")?f="fresh":t.includes("memoize")?f="memoized":t.includes("scoped")?f="scoped":f="default";let u=[],p=y=>{if(y.getKind()===d.Identifier)return y.getText();if(y.getKind()===d.PropertyAccessExpression){let w=y,k=w.getExpression();return k.getKind()===d.Identifier?k.getText():w.getText().split(".")[0]}};if((t.includes("succeed")||t.includes("sync")||t.includes("effect")||t.includes("scoped")||t.includes("scopedDiscard")||t.includes("effectDiscard"))&&i.length>0&&i[0]){let y=p(i[0]);y&&u.push(y)}let g=t.includes("provide")&&!t.includes("provideService"),m=new Set;if(g&&i.length>=1&&i[0]){let y=p(i[0]);y&&m.add(y)}if(g&&i.length>=2&&i[1]){let y=p(i[1]);y&&m.add(y);let w=p(i[0]);w&&u.push(w)}if(t.includes("provideService")&&i.length>0&&i[0]){let y=p(i[0]);y&&u.push(y)}let S=y=>{if(y.type==="effect"){let k=y;for(let M of k.requiredServices??[])m.add(M.serviceId);let b=k.callee??"";(/^[A-Z][A-Za-z0-9_]*(Service|Tag)$/.test(b)||b.endsWith(".Tag"))&&m.add(b)}else if(y.type==="layer"){let k=y;for(let b of k.requires??[])m.add(b)}G.Option.getOrElse(v(y),()=>[]).forEach(S)};if(c.forEach(S),m.size===0)try{let y=jt(e);y?.requiredType&&y.requiredType!=="never"&&Yo(y.requiredType).forEach(k=>m.add(k))}catch{}let h=t.replace(/^Layer\./,"").replace(/^[a-zA-Z]+\./,""),x=new Set(["catchAll","catchAllCause","orDie","orElse","retry","tap","mapError","mapErrorCause","build","launch","toRuntime","passthrough","project","flatMap","flatten","annotateLogs","annotateSpans","setConfigProvider","setClock","setTracer","locally","withSpan","withLogger","withTracer","withClock","mock","suspend","unwrapEffect","unwrapScoped"]).has(h)?`Layer.${h}`:void 0,C=t.includes("MemoMap")||c.some(y=>y.type==="layer"&&y.isMemoMap===!0),E={id:T(),type:"layer",name:x,operations:c,isMerged:l,provides:u.length>0?u:void 0,requires:m.size>0?Array.from(m).sort():void 0,lifecycle:f,...C?{isMemoMap:!0}:{},location:W(e,n,o.includeLocations??!1)};return{...E,displayName:j(E),semanticRole:U(E)}});function Il(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),c;i.length>0&&i[0]?c=yield*D(i[0],r,n,o,s,a):c={id:T(),type:"unknown",reason:"Stream source not determined"};let d=t.replace(/^Stream\./,"")||"unknown",l;t.startsWith("Stream.")&&(d==="fromIterable"||d==="fromChunk"||d==="fromChunkQueue"?l="fromIterable":d==="fromArray"?l="fromArray":d==="fromQueue"||d==="fromChunkQueue"?l="fromQueue":d==="fromPubSub"||d==="fromChunkPubSub"?l="fromPubSub":d==="fromEffect"||d==="unwrap"||d==="unwrapScoped"?l="fromEffect":d==="fromAsyncIterable"?l="fromAsyncIterable":d==="fromReadableStream"||d==="fromReadableStreamByob"?l="fromReadableStream":d==="fromEventListener"?l="fromEventListener":d==="fromSchedule"?l="fromSchedule":d==="range"?l="range":d==="tick"?l="tick":d==="iterate"||d==="iterateEffect"?l="iterate":d==="unfold"||d==="unfoldEffect"||d==="unfoldChunk"||d==="unfoldChunkEffect"?l="unfold":d==="make"?l="make":d==="empty"?l="empty":d==="never"?l="never":d==="succeed"||d==="sync"?l="succeed":(d==="fail"||d==="failSync"||d==="failCause"||d==="failCauseSync")&&(l="fail"));let f=b=>l!==void 0?"constructor":b.startsWith("run")?"sink":b==="toQueue"||b==="toPubSub"||b==="toReadableStream"||b==="toAsyncIterable"||b==="toChannel"?"conversion":b.includes("pipeThroughChannel")||b.includes("Channel")||b.includes("channel")||b.includes("duplex")?"channel":b.includes("grouped")||b.includes("sliding")||b.includes("groupBy")||b.includes("aggregate")||b.includes("window")?"windowing":b.includes("broadcast")||b==="share"?"broadcasting":b.includes("haltAfter")||b.includes("haltWhen")||b.includes("interruptAfter")?"halting":b.includes("decodeText")||b.includes("encodeText")||b.includes("splitLines")?"text":b.includes("merge")||b==="concat"||b.includes("interleave")||b.includes("zip")?"merge":b.includes("buffer")||b.includes("debounce")||b.includes("throttle")?"backpressure":b.includes("catchAll")||b.includes("catchTag")||b.includes("orElse")||b.includes("orDie")||b.includes("retry")?"error":b.includes("filter")||b.includes("take")||b.includes("drop")||b.includes("head")||b==="first"||b==="last"?"filter":b.includes("acquireRelease")||b.includes("scoped")||b.includes("ensuring")||b.includes("onDone")||b.includes("onError")?"resource":b.includes("provide")||b.includes("withSpan")||b.includes("annotate")?"context":b.includes("map")||b.includes("tap")||b.includes("flatMap")||b.includes("mapChunk")||b.includes("scan")||b.includes("transduce")?"transform":"other",u=d.includes("Effect")||d.startsWith("run")||d.includes("tap"),p=f(d),g=p==="filter"?"fewer":p==="merge"||p==="broadcasting"?"more":p==="halting"||p==="sink"||p==="windowing"?"fewer":"unknown",m,S;(d==="grouped"||d==="groupedWithin"||d.includes("sliding")||d.includes("Sliding"))&&i.length>0&&i[0]&&(m=Rt(i[0]),(d.includes("sliding")||d.includes("Sliding"))&&i.length>1&&i[1]&&(S=Rt(i[1])));let N={operation:d,isEffectful:u,estimatedCardinality:g,category:p,...m!==void 0?{windowSize:m}:{},...S!==void 0?{stride:S}:{}},x;d.startsWith("run")&&(x=d);let C;d.includes("buffer")?C="buffer":d.includes("drop")||d.includes("Drop")?C="drop":(d.includes("sliding")||d.includes("Sliding"))&&(C="sliding");let E=c,y=[N],w=l;if(c.type==="stream"){let b=c;y=[...b.pipeline,N],E=b.source,!w&&b.constructorType&&(w=b.constructorType),!x&&b.sink&&(x=b.sink),!C&&b.backpressureStrategy&&(C=b.backpressureStrategy)}let k={id:T(),type:"stream",source:E,pipeline:y,sink:x,backpressureStrategy:C,constructorType:w,location:W(e,n,o.includeLocations??!1)};return{...k,displayName:j(k),semanticRole:U(k)}})}function Al(e){return e==="fromReadableStream"||e==="fromWritableStream"||e==="fromDuplexStream"||e==="make"||e==="succeed"||e==="fail"||e==="empty"||e==="never"?"constructor":e.includes("map")||e.includes("flatMap")||e.includes("filter")||e.includes("concat")||e.includes("zip")?"transform":e.includes("pipe")||e==="pipeTo"||e==="pipeThrough"?"pipe":"other"}function Fl(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),c;i.length>0&&i[0]&&(c=yield*D(i[0],r,n,o,s,a));let d=t.replace(/^Channel\./,"")||"unknown",l=[{operation:d,category:Al(d)}];if(c?.type==="channel"){let u=c;l.unshift(...u.pipeline),c=u.source}let f={id:T(),type:"channel",source:c,pipeline:l,location:W(e,n,o.includeLocations??!1)};return{...f,displayName:j(f),semanticRole:U(f)}})}function Rl(e){return e==="forEach"||e==="forEachWhile"||e==="run"||e==="runDrain"||e==="runFor"||e==="make"||e==="fromEffect"||e==="fromQueue"?"constructor":e.includes("map")||e.includes("contramap")||e.includes("filter")||e.includes("zip")?"transform":"other"}function $l(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),c;i.length>0&&i[0]&&(c=yield*D(i[0],r,n,o,s,a));let d=t.replace(/^Sink\./,"")||"unknown",l=[{operation:d,category:Rl(d)}];if(c?.type==="sink"){let u=c;l.unshift(...u.pipeline),c=u.source}let f={id:T(),type:"sink",source:c,pipeline:l,location:W(e,n,o.includeLocations??!1)};return{...f,displayName:j(f),semanticRole:U(f)}})}function Dl(e,t,r,n,o,s,a){let{SyntaxKind:i}=I(),c="queue",d="create",l,f,u;t.startsWith("Queue.")?(c="queue",t.includes("bounded")?l="bounded":t.includes("unbounded")?l="unbounded":t.includes("sliding")?l="sliding":t.includes("dropping")&&(l="dropping"),t.includes("offer")||t.includes("offerAll")?d="offer":t.includes("take")||t.includes("takeAll")||t.includes("poll")?d="take":d="create"):t.startsWith("PubSub.")?(c="pubsub",t.includes("bounded")?l="bounded":t.includes("unbounded")&&(l="unbounded"),t.includes("publish")?d="publish":t.includes("subscribe")?d="subscribe":d="create"):t.startsWith("Deferred.")?(c="deferred",t.includes("succeed")?d="succeed":t.includes("fail")?d="fail":t.includes("await")?d="await":d="create"):t.startsWith("Semaphore.")?(c="semaphore",t.includes("withPermit")?d="withPermit":t.includes("take")?d="take":t.includes("release")?d="release":t.includes("available")?d="available":d="create"):t.startsWith("Mailbox.")?(c="mailbox",t.includes("offer")?d="offer":t.includes("takeAll")?d="takeAll":t.includes("take")?d="take":t.includes("end")?d="end":t.includes("toStream")?d="toStream":d="create"):t.startsWith("SubscriptionRef.")?(c="subscriptionRef",t.includes("changes")?d="changes":t.includes("get")?d="get":t.includes("set")?d="set":t.includes("update")?d="update":d="create"):t.includes("makeLatch")||t.includes("Latch.")?(c="latch",t.includes("open")?d="open":t.includes("close")?d="close":t.includes("await")||t.includes("whenOpen")?d="await":d="create"):t.startsWith("FiberHandle.")?(c="fiberHandle",t.includes("run")?d="run":t.includes("await")?d="await":d="create"):t.startsWith("FiberSet.")?(c="fiberSet",t.includes("run")?d="run":t.includes("join")?d="await":d="create"):t.startsWith("FiberMap.")?(c="fiberMap",t.includes("run")?d="run":t.includes("join")?d="await":d="create"):t.startsWith("RateLimiter.")?(c="rateLimiter",t.includes("withCost")?d="withPermit":d="create"):t.startsWith("ScopedCache.")?(c="scopedCache",t.includes("make")||t.includes("Make")?d="create":t.includes("get")&&!t.includes("getOrElse")||t.includes("getOrElse")?d="get":t.includes("set")||t.includes("Set")?d="set":t.includes("invalidate")?d="invalidate":t.includes("contains")?d="contains":d="create"):t.startsWith("Cache.")?(c="cache",t.includes("make")||t.includes("Make")?d="create":t.includes("get")&&!t.includes("getOrElse")||t.includes("getOrElse")?d="get":t.includes("set")||t.includes("Set")?d="set":t.includes("invalidate")?d="invalidate":t.includes("contains")?d="contains":d="create"):t.startsWith("Reloadable.")||t.includes(".Reloadable.")?(c="reloadable",t.includes("make")||t.includes("Make")?d="create":t.includes("get")&&!t.includes("reload")?d="get":t.includes("reload")?d="reload":d="create"):t.startsWith("RcMap.")||t.includes(".RcMap.")?(c="rcMap",t.includes("make")||t.includes("Make")?d="create":t.includes("get")?d="get":t.includes("set")||t.includes("Set")?d="set":t.includes("update")?d="update":d="create"):(t.startsWith("RcRef.")||t.includes(".RcRef."))&&(c="rcRef",t.includes("make")||t.includes("Make")?d="create":t.includes("get")?d="get":t.includes("set")||t.includes("Set")?d="set":t.includes("update")?d="update":d="create");let p=e.getArguments();if(p.length>0&&l==="bounded"){let S=p[0];S?.getKind()===i.NumericLiteral&&(f=Number.parseInt(S.getText(),10))}c==="semaphore"&&(d==="take"||d==="release")&&p.length>0&&p[0]&&(u=Rt(p[0]));let g;if(c==="fiberHandle"&&d==="run")for(let S of p){let h=S.getText();h.includes("onlyIfMissing")&&(g={onlyIfMissing:h.includes("true")})}if(c==="mailbox"&&d==="toStream"||c==="subscriptionRef"&&d==="changes"){let S=c==="mailbox"?"fromMailbox":"fromSubscriptionRef",h={id:T(),type:"concurrency-primitive",primitive:c,operation:d,location:W(e,n,o.includeLocations??!1)},N={id:T(),type:"stream",source:{...h,displayName:j(h),semanticRole:U(h)},pipeline:[],constructorType:S,location:W(e,n,o.includeLocations??!1)};return G.Effect.succeed({...N,displayName:j(N),semanticRole:U(N)})}let m={id:T(),type:"concurrency-primitive",primitive:c,operation:d,strategy:l,capacity:f,...u!==void 0?{permitCount:u}:{},...g?{lifecycleOptions:g}:{},location:W(e,n,o.includeLocations??!1)};return G.Effect.succeed({...m,displayName:j(m),semanticRole:U(m)})}function Pl(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),c="fork",d=!1,l=!1,f;t.startsWith("Fiber.")?t.includes("awaitAll")?c="awaitAll":t.includes("join")?c="join":t.includes("await")?c="await":t.includes("interruptFork")?c="interruptFork":t.includes("interrupt")?c="interrupt":t.includes("poll")?c="poll":t.includes("status")?c="status":t.includes("all")?c="all":t.includes("children")?c="children":t.includes("dump")?c="dump":t.includes("scoped")?(c="scoped",d=!0):t.includes("inheritAll")?c="inheritAll":t.includes("mapFiber")?c="mapFiber":t.includes("mapEffect")?c="mapEffect":t.includes("map")?c="map":t.includes("roots")?c="roots":t.includes("getCurrentFiber")&&(c="getCurrentFiber"):t.includes("forkWithErrorHandler")?c="forkWithErrorHandler":t.includes("forkAll")?c="forkAll":t.includes("forkIn")?c="forkIn":t.includes("fork")&&(t.includes("forkDaemon")?(c="forkDaemon",l=!0):t.includes("forkScoped")?(c="forkScoped",d=!0):c="fork"),(c==="fork"||c==="forkScoped"||c==="forkDaemon"||c==="forkAll"||c==="forkIn"||c==="forkWithErrorHandler")&&i.length>0&&i[0]&&(f=yield*D(i[0],r,n,o,s,a));let u;if(d)u="safe";else{let g=e.getParent();for(;g;){let m=g.getText?.();if(m&&(m.includes("Effect.scoped")||m.includes("Scope.make"))){u="safe";break}if(g=g.getParent(),g&&g===r)break}}let p={id:T(),type:"fiber",operation:c,fiberSource:f,isScoped:d,isDaemon:l,...u?{scopeContext:u}:{},location:W(e,n,o.includeLocations??!1)};return{...p,displayName:j(p),semanticRole:U(p)}})}function Ml(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),{SyntaxKind:c}=I(),d;t.includes("uninterruptibleMask")?d="uninterruptibleMask":t.includes("interruptibleMask")?d="interruptibleMask":t.includes("uninterruptible")?d="uninterruptible":t.includes("interruptible")?d="interruptible":t.includes("onInterrupt")?d="onInterrupt":t.includes("disconnect")?d="disconnect":t.includes("allowInterrupt")?d="allowInterrupt":t.includes("interruptWith")?d="interruptWith":d="interrupt";let l,f,u=e.getExpression();u.getKind()===c.PropertyAccessExpression?(l=yield*D(u.getExpression(),r,n,o,s,a),i.length>0&&i[0]&&(f=yield*D(i[0],r,n,o,s,a))):i.length>0&&i[0]&&(l=yield*D(i[0],r,n,o,s,a),i.length>1&&i[1]&&(f=yield*D(i[1],r,n,o,s,a))),a.interruptionCount++;let p={id:T(),type:"interruption",interruptionType:d,source:l,handler:f,location:W(e,n,o.includeLocations??!1)};return{...p,displayName:j(p),semanticRole:U(p)}})}function Ll(e){let{SyntaxKind:t}=I(),r,n,o;for(let s of e.getProperties()){if(s.getKind()!==t.PropertyAssignment)continue;let a=s.getNameNode().getText(),i=s.getInitializer();if(!i)continue;let c=i.getText();if(a==="concurrency")if(c==='"unbounded"'||c==="'unbounded'")r="unbounded";else if(c==='"sequential"'||c==="'sequential'")r="sequential";else if(c==='"inherit"'||c==="'inherit'")r="sequential";else{let d=Number.parseInt(c,10);!Number.isNaN(d)&&d>=0&&(r=d)}else a==="batching"&&(c==="true"||c==="false")?n=c==="true":a==="discard"&&(c==="true"||c==="false")&&(o=c==="true")}return{concurrency:r,batching:n,discard:o}}var Ol=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=[],{SyntaxKind:d}=I();if(i.length>0&&i[0]){let S=i[0];if(S.getKind()===d.ArrayLiteralExpression){let h=S.getElements();for(let N of h){let x=yield*D(N,r,n,o,s,a);c.push(x)}}else if(S.getKind()===d.ObjectLiteralExpression){let h=S.getProperties();for(let N of h)if(N.getKind()===d.PropertyAssignment){let x=N.getInitializer();if(x){let C=yield*D(x,r,n,o,s,a);c.push(C)}}}}let l,f,u;if(i.length>1&&i[1]?.getKind()===d.ObjectLiteralExpression){let S=Ll(i[1]);l=S.concurrency,f=S.batching,u=S.discard}let p=t.includes("Par")?"parallel":"sequential";l===void 0&&(l=p==="parallel"?"unbounded":"sequential"),a.parallelCount++;let g=c.map(S=>j(S)),m={id:T(),type:"parallel",callee:t,mode:p,children:c,concurrency:l,batching:f,discard:u,branchLabels:g,location:W(e,n,o.includeLocations??!1)};return{...m,displayName:j(m),semanticRole:U(m)}}),Wl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=[];for(let f of i)if(f){let u=yield*D(f,r,n,o,s,a);c.push(u)}a.raceCount++;let d=c.map(f=>j(f)),l={id:T(),type:"race",callee:t,children:c,raceLabels:d,location:W(e,n,o.includeLocations??!1)};return{...l,displayName:j(l),semanticRole:U(l)}}),Kl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c;t.includes("catchAllCause")?c="catchAllCause":t.includes("catchSomeCause")?c="catchSomeCause":t.includes("catchSomeDefect")?c="catchSomeDefect":t.includes("catchAllDefect")?c="catchAllDefect":t.includes("catchTags")?c="catchTags":t.includes("catchIf")?c="catchIf":t.includes("catchSome")?c="catchSome":t.includes("catchTag")?c="catchTag":t.includes("catchAll")?c="catchAll":t.includes("orElseFail")?c="orElseFail":t.includes("orElseSucceed")?c="orElseSucceed":t.includes("orElse")?c="orElse":t.includes("orDieWith")?c="orDieWith":t.includes("orDie")?c="orDie":t.includes("flip")?c="flip":t.includes("mapErrorCause")?c="mapErrorCause":t.includes("mapBoth")?c="mapBoth":t.includes("mapError")?c="mapError":t.includes("unsandbox")?c="unsandbox":t.includes("sandbox")?c="sandbox":t.includes("parallelErrors")?c="parallelErrors":t.includes("filterOrDieMessage")?c="filterOrDieMessage":t.includes("filterOrDie")?c="filterOrDie":t.includes("filterOrElse")?c="filterOrElse":t.includes("filterOrFail")?c="filterOrFail":t.includes("matchCauseEffect")?c="matchCauseEffect":t.includes("matchCause")?c="matchCause":t.includes("matchEffect")?c="matchEffect":t.includes("match")?c="match":t.includes("firstSuccessOf")?c="firstSuccessOf":t.includes("ignoreLogged")?c="ignoreLogged":t.includes("ignore")?c="ignore":t.includes("eventually")?c="eventually":c="catchAll";let d,l,f=e.getExpression();if(f.getKind()===I().SyntaxKind.PropertyAccessExpression){let S=f.getExpression();d=yield*D(S,r,n,o,s,a),i.length>0&&i[0]&&(l=yield*D(i[0],r,n,o,s,a))}else i.length>0&&i[0]?d=yield*D(i[0],r,n,o,s,a):d={id:T(),type:"unknown",reason:"Could not determine source effect"},i.length>1&&i[1]&&(l=yield*D(i[1],r,n,o,s,a));a.errorHandlerCount++;let u,p;if(c==="catchTag"){let m=i[0];m?.getKind()===I().SyntaxKind.StringLiteral&&(u=m.getLiteralValue())}else if(c==="catchTags"){let m=[...i].find(S=>S?.getKind()===I().SyntaxKind.ObjectLiteralExpression);m&&(p=m.getProperties().filter(h=>h.getKind()===I().SyntaxKind.PropertyAssignment||h.getKind()===I().SyntaxKind.MethodDeclaration).map(h=>(h.getKind()===I().SyntaxKind.PropertyAssignment,h.getName())))}let g={id:T(),type:"error-handler",handlerType:c,source:d,handler:l,errorTag:u,errorTags:p,errorEdgeLabel:u?`on ${u}`:p&&p.length>0?`on ${p.join(" | ")}`:"on error",location:W(e,n,o.includeLocations??!1)};return{...g,displayName:j(g),semanticRole:U(g)}}),Bl=(e,t,r,n,o,s)=>G.Effect.gen(function*(){let a=e.getArguments(),i,c,d,l,f=e.getExpression();if(f.getKind()===I().SyntaxKind.PropertyAccessExpression){let m=f.getExpression();i=yield*D(m,t,r,n,o,s),a.length>0&&a[0]&&(c=a[0].getText(),d=yield*D(a[0],t,r,n,o,s)),l=f.getText().includes("retryOrElse")}else a.length>0&&a[0]?i=yield*D(a[0],t,r,n,o,s):i={id:T(),type:"unknown",reason:"Could not determine source effect"},a.length>1&&a[1]&&(c=a[1].getText(),d=yield*D(a[1],t,r,n,o,s)),l=a.length>2;s.retryCount++;let u=c?fs(c):void 0,p={id:T(),type:"retry",source:i,schedule:c,...d!==void 0?{scheduleNode:d}:{},hasFallback:l,scheduleInfo:u,retryEdgeLabel:c?`retry: ${c}`:"retry",location:W(e,r,n.includeLocations??!1)};return{...p,displayName:j(p),semanticRole:U(p)}});function fs(e){let t=e.replace(/\s+/g," "),r="custom";t.includes("Schedule.exponential")||t.includes("exponential(")?r="exponential":t.includes("Schedule.fibonacci")||t.includes("fibonacci(")?r="fibonacci":t.includes("Schedule.spaced")||t.includes("spaced(")?r="spaced":t.includes("Schedule.fixed")||t.includes("fixed(")?r="fixed":t.includes("Schedule.linear")||t.includes("linear(")?r="linear":t.includes("Schedule.cron")||t.includes("cron(")?r="cron":t.includes("Schedule.windowed")||t.includes("windowed(")?r="windowed":t.includes("Schedule.duration")||t.includes("duration(")?r="duration":t.includes("Schedule.elapsed")||t.includes("elapsed(")?r="elapsed":t.includes("Schedule.delays")||t.includes("delays(")?r="delays":t.includes("Schedule.once")||t.includes("once(")?r="once":t.includes("Schedule.stop")||t.includes("stop(")?r="stop":(t.includes("Schedule.count")||t.includes("count("))&&(r="count");let n,o=/recurs\s*\(\s*(\d+)\s*\)/.exec(t);o&&(n=Number.parseInt(o[1],10));let s=/recurUpTo\s*\(\s*(\d+)\s*\)/.exec(t);s?n=Number.parseInt(s[1],10):(t.includes("forever")||t.includes("Schedule.forever"))&&(n="unlimited");let a=t.includes("jittered")||t.includes("Schedule.jittered"),i=[];return t.includes("whileInput")&&i.push("whileInput"),t.includes("whileOutput")&&i.push("whileOutput"),t.includes("untilInput")&&i.push("untilInput"),t.includes("untilOutput")&&i.push("untilOutput"),t.includes("recurUntil")&&i.push("recurUntil"),t.includes("recurWhile")&&i.push("recurWhile"),t.includes("andThen")&&i.push("andThen"),t.includes("intersect")&&i.push("intersect"),t.includes("union")&&i.push("union"),t.includes("compose")&&i.push("compose"),t.includes("zipWith")&&i.push("zipWith"),t.includes("addDelay")&&i.push("addDelay"),t.includes("modifyDelay")&&i.push("modifyDelay"),t.includes("check")&&i.push("check"),t.includes("resetAfter")&&i.push("resetAfter"),t.includes("resetWhen")&&i.push("resetWhen"),t.includes("ensure")&&i.push("ensure"),t.includes("driver")&&i.push("driver"),t.includes("mapInput")&&i.push("mapInput"),{baseStrategy:r,maxRetries:n,jittered:a,conditions:i}}var ql=(e,t,r,n,o,s)=>G.Effect.gen(function*(){let a=e.getArguments(),i,c,d,l=e.getExpression();if(l.getKind()===I().SyntaxKind.PropertyAccessExpression){let p=l.getExpression();i=yield*D(p,t,r,n,o,s),a.length>0&&a[0]&&(c=_t(a[0]));let g=_t(l);d=g.includes("timeoutFail")||g.includes("timeoutTo")}else a.length>0&&a[0]?i=yield*D(a[0],t,r,n,o,s):i={id:T(),type:"unknown",reason:"Could not determine source effect"},a.length>1&&a[1]&&(c=_t(a[1])),d=a.length>2;s.timeoutCount++;let f={id:T(),type:"timeout",source:i,duration:c,hasFallback:d,location:W(e,r,n.includeLocations??!1)};return{...f,displayName:j(f),semanticRole:U(f)}}),ds=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=/([A-Za-z_$][\w$]*)$/.exec(t)?.[1]??t,d,l,f;if(c.startsWith("acquireUseRelease"))i.length>=3&&i[0]&&i[2]?(d=yield*D(i[0],r,n,o,s,a),l=yield*D(i[2],r,n,o,s,a),i[1]&&(f=yield*D(i[1],r,n,o,s,a))):(d={id:T(),type:"unknown",reason:"Missing acquire"},l={id:T(),type:"unknown",reason:"Missing release"});else if(c.startsWith("acquireRelease"))i.length>=2&&i[0]&&i[1]?(d=yield*D(i[0],r,n,o,s,a),l=yield*D(i[1],r,n,o,s,a)):(d={id:T(),type:"unknown",reason:"Missing acquire"},l={id:T(),type:"unknown",reason:"Missing release"});else if(c==="addFinalizer"||c==="onExit"||c==="onError"||c==="parallelFinalizers"||c==="sequentialFinalizers"||c==="finalizersMask"||c==="using"||c==="withEarlyRelease"){let p=e.getExpression();p.getKind()===I().SyntaxKind.PropertyAccessExpression?d=yield*D(p.getExpression(),r,n,o,s,a):d={id:T(),type:"unknown",reason:"Scoped acquire"},l=i.length>0&&i[0]?yield*D(i[0],r,n,o,s,a):{id:T(),type:"unknown",reason:"Missing finalizer"}}else if(c==="ensuring"){let p=e.getExpression();if(p.getKind()===I().SyntaxKind.PropertyAccessExpression){let m=p.getExpression();d=yield*D(m,r,n,o,s,a),l=i.length>0&&i[0]?yield*D(i[0],r,n,o,s,a):{id:T(),type:"unknown",reason:"Missing cleanup"}}else d=i.length>0&&i[0]?yield*D(i[0],r,n,o,s,a):{id:T(),type:"unknown",reason:"Missing effect"},l=i.length>1&&i[1]?yield*D(i[1],r,n,o,s,a):{id:T(),type:"unknown",reason:"Missing cleanup"}}else d={id:T(),type:"unknown",reason:"Unknown resource pattern"},l={id:T(),type:"unknown",reason:"Unknown resource pattern"};a.resourceCount++;let u={id:T(),type:"resource",acquire:d,release:l,use:f,location:W(e,n,o.includeLocations??!1)};return{...u,displayName:j(u),semanticRole:U(u)}}),jl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c;t.includes(".if")||t==="if"?c="if":t.includes("whenEffect")?c="whenEffect":t.includes("whenFiberRef")?c="whenFiberRef":t.includes("whenRef")?c="whenRef":t.includes(".when")||t==="when"?c="when":t.includes("unlessEffect")?c="unlessEffect":t.includes(".unless")||t==="unless"?c="unless":t.includes(".option")||t==="option"?c="option":t.includes(".either")||t==="either"?c="either":t.includes(".exit")||t==="exit"?c="exit":t.includes("liftPredicate")?c="liftPredicate":c="unless";let d="<dynamic>",l,f;if(c==="if"){if(i.length>0&&i[0]&&(d=i[0].getText()),i.length>1&&i[1]){let g=i[1],{SyntaxKind:m}=I();if(g.getKind()===m.ObjectLiteralExpression){let S=g.getProperties();for(let h of S)if(h.getKind()===m.PropertyAssignment){let N=h,x=N.getName(),C=N.getInitializer();C&&(x==="onTrue"?l=yield*D(C,r,n,o,s,a):x==="onFalse"&&(f=yield*D(C,r,n,o,s,a)))}}}}else{let g=e.getExpression();if(g.getKind()===I().SyntaxKind.PropertyAccessExpression){let S=g.getExpression();l||(l=yield*D(S,r,n,o,s,a))}i.length>0&&i[0]&&(d=i[0].getText())}l||(l={id:T(),type:"unknown",reason:"Could not determine true branch"}),a.conditionalCount++;let u=d.length<=30?d:`${d.slice(0,30)}\u2026`,p={id:T(),type:"conditional",conditionalType:c,condition:d,onTrue:l,onFalse:f,conditionLabel:u,trueEdgeLabel:"true",falseEdgeLabel:"false",location:W(e,n,o.includeLocations??!1)};return{...p,displayName:j(p),semanticRole:U(p)}}),_l=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=t.includes("forEach")?"forEach":t.includes("filterMap")?"filterMap":t.includes("filter")?"filter":t.includes("partition")?"partition":t.includes("reduce")?"reduce":t.includes("validateAll")||t.includes("validateFirst")||t.includes("validateWith")?"validate":t.includes("replicate")?"replicate":t.includes("dropUntil")?"dropUntil":t.includes("dropWhile")?"dropWhile":t.includes("takeUntil")?"takeUntil":t.includes("takeWhile")?"takeWhile":t.includes("every")?"every":t.includes("exists")?"exists":t.includes("findFirst")?"findFirst":t.includes("head")?"head":t.includes("mergeAll")?"mergeAll":"loop",d=c==="reduce"||t.includes("reduceRight")||t.includes("reduceWhile")||t.includes("reduceEffect")?2:1,l,f;i.length>0&&i[0]&&(l=i[0].getText()),i.length>d&&i[d]?f=yield*D(i[d],r,n,o,s,a):f={id:T(),type:"unknown",reason:"Could not determine loop body"},a.loopCount++;let u={id:T(),type:"loop",loopType:c,iterSource:l,body:f,location:W(e,n,o.includeLocations??!1)};return{...u,displayName:j(u),semanticRole:U(u)}}),zl=(e,t,r,n)=>{let o=Dn[t]??"other",s=Ko.has(o),a=e.getArguments(),i=[];if((o==="when"||o==="tag")&&a[0]){let d=a[0].getText().replace(/["'`]/g,"").trim();/^[A-Za-z_][A-Za-z0-9_]*$/.test(d)&&i.push(d)}if(o==="tags"||o==="tagsExhaustive"){let{SyntaxKind:d}=I();for(let l of a)if(l.getKind()===d.ObjectLiteralExpression){let f=l;for(let u of f.getProperties()){let p=u.getKind()===d.PropertyAssignment?u.getName():void 0;p&&i.push(p.replace(/["'`]/g,""))}}}let c={id:T(),type:"match",matchOp:o,isExhaustive:s,...i.length>0?{matchedTags:i}:{},location:W(e,r,n.includeLocations??!1)};return{...c,displayName:j(c),semanticRole:U(c)}},Hl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=Pn[t]??"other",c=qo.has(i),d;if(i==="parallel"||i==="sequential"){let u=e.getArguments(),p=[];for(let g of u)if(g){let m=yield*D(g,r,n,o,s,a);p.push(m)}p.length>0&&(d=p)}let l;if(i==="fail")l="fail";else if(i==="die")l="die";else if(i==="interrupt")l="interrupt";else if((i==="parallel"||i==="sequential")&&d&&d.length>0){let u=d.filter(p=>p.type==="cause").map(p=>p.causeKind).filter(p=>p!==void 0);u.length>0&&(l=u.every(p=>p===u[0])?u[0]:"mixed")}let f={id:T(),type:"cause",causeOp:i,isConstructor:c,...d?{children:d}:{},...l?{causeKind:l}:{},location:W(e,n,o.includeLocations??!1)};return{...f,displayName:j(f),semanticRole:U(f)}}),Ul=(e,t,r,n)=>{let o=Mn[t]??"other",s=_o.has(o),a={id:T(),type:"exit",exitOp:o,isConstructor:s,location:W(e,r,n.includeLocations??!1)};return{...a,displayName:j(a),semanticRole:U(a)}},Vl=(e,t,r,n)=>G.Effect.sync(()=>{let o=Ln[t]??"other",s=e.getText(),a=fs(s),i={id:T(),type:"schedule",scheduleOp:o,...a?{scheduleInfo:a}:{},location:W(e,r,n.includeLocations??!1)};return{...i,displayName:j(i),semanticRole:U(i)}}),Gl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=$n[t]??"other",d=Oo.has(c),l,f;if(i.length>=2&&i[0]){if(l=yield*D(i[0],r,n,o,s,a),i[1]){let p=i[1].getText();f=p.length<=120?p:p.slice(0,120)+"\u2026"}}else if(i.length===1&&i[0]){let p=i[0].getText();f=p.length<=120?p:p.slice(0,120)+"\u2026"}a.totalEffects++;let u={id:T(),type:"transform",transformType:c,isEffectful:d,...l!==void 0?{source:l}:{},...f!==void 0?{fn:f}:{},location:W(e,n,o.includeLocations??!1)};return{...u,displayName:j(u),semanticRole:U(u)}});var Vn=(e,t,r,n,o)=>X.Effect.gen(function*(){let s=[],a=Mo(),i=yield*Jl(e.node,e.type,t,r,n,s,a),c=$o(e.node),d=t.getProject().getTypeChecker(),l=Le(e.node,d),f=ot(e.node,d),u={id:T(),type:"program",programName:e.name,source:e.type,...e.discoveryConfidence?{discoveryConfidence:e.discoveryConfidence}:{},...e.discoveryReason?{discoveryReason:e.discoveryReason}:{},children:i,dependencies:Ro(i),errorTypes:Fo(i),typeSignature:l,requiredServices:f,location:W(e.node,r,n.includeLocations??!1),jsdocDescription:c,jsdocTags:it(e.node)},p=ls(t);return{root:u,metadata:{analyzedAt:Date.now(),filePath:r,tsVersion:o,warnings:s,stats:a,...p.length>0?{serviceDefinitions:p}:{}},references:new Map}}),Jl=(e,t,r,n,o,s,a)=>X.Effect.gen(function*(){switch(t){case"generator":{let i=e.getArguments();if(i.length>0&&i[0]){let c=i[0];return yield*td(c,r,n,o,s,a)}return[]}case"pipe":return yield*Jt(e,r,n,o,s,a);case"run":{let i=e,{SyntaxKind:c}=I(),d=yield*nd(i,r,n,o,s,a);if(X.Option.isSome(d))return d.value;let l=i.getArguments(),f=l.find(g=>g.getKind()===c.ArrowFunction||g.getKind()===c.FunctionExpression),u=o.enableEffectWorkflow&&f===void 0&&l.length===1?cs(i,r):null,p=f??u??l[0];return p?[yield*D(p,r,n,o,s,a)]:[]}case"workflow-execute":{let i=e,c=i.getExpression().getText();return[{id:T(),type:"effect",callee:c,name:c,semanticRole:"side-effect",location:W(i,n,o.includeLocations??!1)}]}case"direct":{let i=e.getInitializer();return i?[yield*D(i,r,n,o,s,a)]:[]}case"class":{let i=e,c="Data.Class";for(let f of i.getHeritageClauses()){let u=f.getText();if(u.includes("Data.TaggedError")){c="Data.TaggedError";break}if(u.includes("Data.TaggedClass")){c="Data.TaggedClass";break}if(u.includes("Data.Error")){c="Data.Error";break}if(u.includes("Schema.TaggedRequest")){c="Schema.TaggedRequest";break}if(u.includes("Schema.TaggedError")){c="Schema.TaggedError";break}if(u.includes("Schema.TaggedClass")){c="Schema.TaggedClass";break}if(u.includes("Schema.Class")){c="Schema.Class";break}if(u.includes("Context.Tag")){c="Context.Tag";break}if(u.includes("Context.Reference")){c="Context.Reference";break}if(u.includes("Effect.Service")){c="Effect.Service";break}}let d=c.includes("Error")?"error-type":c.includes("Schema")?"schema":c==="Context.Tag"||c==="Context.Reference"||c==="Effect.Service"?"service-tag":"data",l={id:T(),type:"effect",callee:c,description:d,location:W(e,n,o.includeLocations??!1),jsdocDescription:Ge(i),jsdocTags:it(i)};return a.totalEffects++,[l]}case"classProperty":{let c=e.getInitializer();return c?[yield*D(c,r,n,o,s,a)]:[]}case"classMethod":{let c=e.getBody();if(!c)return[];let{SyntaxKind:d}=I(),l=c.getDescendantsOfKind(d.ReturnStatement),f=[];for(let u of l){let p=u.getExpression();if(p){let g=yield*D(p,r,n,o,s,a);f.push(g)}}return f}default:return[]}});function Gn(e){let{SyntaxKind:t}=I(),r=e.getKind();return r===t.FunctionDeclaration||r===t.FunctionExpression||r===t.ArrowFunction||r===t.MethodDeclaration||r===t.ClassDeclaration||r===t.ClassExpression||r===t.Constructor}function oe(e){let{SyntaxKind:t}=I();if(e.getKind()===t.YieldExpression)return!0;let r=!1;return e.forEachChild(n=>{if(!r&&!Gn(n)){if(n.getKind()===t.YieldExpression){r=!0;return}if(oe(n)){r=!0;return}}}),r}function Yl(e){let{SyntaxKind:t}=I();switch(e.getKind()){case t.StringLiteral:return e.getLiteralValue();case t.NumericLiteral:return e.getLiteralValue().toString();case t.TrueKeyword:return"true";case t.FalseKeyword:return"false";case t.NullKeyword:return"null";case t.NoSubstitutionTemplateLiteral:return e.getText().replace(/^`|`$/g,"");default:return}}function dt(e,t){if(t.size===0)return e;let r=e;for(let[n,o]of t){let s=new RegExp(`\\b${n}\\b`,"g"),a=/^\d/.test(o)||o==="true"||o==="false"||o==="null"?o:`'${o}'`;r=r.replace(s,a)}return r}function Dt(e){let t=e;return t=t.replace(/\btrue\b\s*&&\s*/g,""),t=t.replace(/\s*&&\s*\btrue\b/g,""),t=t.replace(/\bfalse\b\s*\|\|\s*/g,""),t=t.replace(/\s*\|\|\s*\bfalse\b/g,""),t=t.replace(/\bfalse\b\s*&&\s*[^|&]+/g,"false"),t=t.replace(/\btrue\b\s*\|\|\s*[^|&]+/g,"true"),t.trim()}function Jn(e){let{SyntaxKind:t}=I();switch(e.getKind()){case t.ParenthesizedExpression:case t.AsExpression:case t.TypeAssertionExpression:case t.NonNullExpression:case t.SatisfiesExpression:{let n=e.getExpression();return Jn(n)}default:return e}}function ps(e){let{SyntaxKind:t}=I();if(e.length===0)return!1;let r=e[e.length-1];if(!r)return!1;let n=r.getKind();return n===t.ReturnStatement||n===t.ThrowStatement||n===t.BreakStatement||n===t.ContinueStatement}function ms(e){let{SyntaxKind:t}=I(),r=[];return e.forEachChild(n=>{Gn(n)||(n.getKind()===t.YieldExpression?r.push(n):r.push(...ms(n)))}),r}var Ql=new Set(["Step.run","Step.decide","Step.branch","Step.all","Step.forEach","Step.retry","Step.race","Step.sleep"]);function Zl(e){let{SyntaxKind:t}=I();if(e.getKind()!==t.CallExpression)return!1;let r=e.getExpression().getText();return Ql.has(r)}function Ae(e){if(!e)return;let{SyntaxKind:t}=I();if(e.getKind()===t.StringLiteral)return e.getLiteralText()}function Xl(e){if(!e)return[];let{SyntaxKind:t}=I();if(e.getKind()!==t.ObjectLiteralExpression)return[];let r=[],n=e;for(let o of n.getProperties())if(o.getKind()===t.PropertyAssignment){let s=o.getName();r.push({labels:[s],isDefault:s==="default",body:[]})}return r}function ed(e,t){return X.Effect.gen(function*(){let{SyntaxKind:r}=I(),n=e.getExpression().getText(),o=e.getArguments();switch(n){case"Step.run":{let s=Ae(o[0]),a=o[1];if(!a){let c={id:T(),type:"effect",callee:"Step.run",name:s,displayName:s};return t.stats.totalEffects++,c}let i=yield*D(a,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);return{...i,displayName:s??i.displayName,name:s??i.name}}case"Step.decide":{let s=Ae(o[0]),a=Ae(o[1]);return t.stats.decisionCount++,{id:T(),type:"decision",decisionId:s??T(),label:a??s??"decision",condition:o[2]?.getText()??"unknown",source:"effect-flow",onTrue:[],onFalse:void 0}}case"Step.branch":{let s=Ae(o[0]),a=o[1]?.getText()??"unknown",i=o[2],c=Xl(i);return t.stats.switchCount++,{id:T(),type:"switch",switchId:s,expression:a,cases:c,source:"effect-flow",hasDefault:c.some(l=>l.isDefault),hasFallthrough:!1}}case"Step.all":{let s=Ae(o[0]),a=o[1],i=[];if(a?.getKind()===r.ArrayLiteralExpression){let d=a;for(let l of d.getElements()){let f=yield*D(l,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);i.push(f)}}return t.stats.parallelCount++,{id:T(),type:"parallel",name:s,displayName:s,children:i,mode:"parallel",callee:"Step.all"}}case"Step.forEach":{let s=Ae(o[0]),a=o[1]?.getText(),i=o[2],c={id:T(),type:"effect",callee:"unknown"};return i&&(c=yield*D(i,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope)),t.stats.loopCount++,{id:T(),type:"loop",name:s,displayName:s,loopType:"forEach",iterSource:a,body:c}}case"Step.retry":{let s=Ae(o[0]),a=o[1];if(!a){let d={id:T(),type:"effect",callee:"Step.retry",name:s,displayName:s};return t.stats.totalEffects++,d}let i=yield*D(a,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);return t.stats.retryCount++,{id:T(),type:"retry",name:s,displayName:s,source:i,hasFallback:!1}}case"Step.race":{let s=Ae(o[0]),a=o[1],i=[];if(a?.getKind()===r.ArrayLiteralExpression){let d=a;for(let l of d.getElements()){let f=yield*D(l,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);i.push(f)}}return t.stats.raceCount++,{id:T(),type:"race",name:s,displayName:s,children:i,callee:"Step.race"}}case"Step.sleep":{let s=Ae(o[0]),a={id:T(),type:"effect",callee:"Step.sleep",name:s,displayName:s,semanticRole:"scheduling"};return t.stats.totalEffects++,a}default:{let s={id:T(),type:"effect",callee:n,name:n,displayName:n};return t.stats.totalEffects++,s}}})}function gs(e,t){return X.Effect.gen(function*(){let r=e,n=r.getText().startsWith("yield*"),o=r.getExpression();if(!n){let d={id:T(),type:"opaque",reason:"plain-yield",sourceText:e.getText().slice(0,80)};return t.stats.opaqueCount++,t.warnings.push({code:"PLAIN_YIELD",message:`Plain yield (not yield*) detected; this is unusual in Effect generators: ${e.getText().slice(0,60)}`,location:W(e,t.filePath,t.opts.includeLocations??!1)}),{variableName:zt(e),effect:d}}if(!o){let d={id:T(),type:"opaque",reason:"yield-no-expression",sourceText:e.getText().slice(0,80)};return t.stats.opaqueCount++,{variableName:void 0,effect:d}}let s=Jn(o);if(t.opts.enableEffectFlow&&Zl(s)){let d=yield*ed(s,t),l=zt(e),f={...d,displayName:d.displayName??j(d,l),semanticRole:d.semanticRole??U(d)};return{variableName:l,effect:f}}let a=yield*D(o,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope),i=zt(e);i&&a.type==="effect"&&Vo(a.callee)&&t.serviceScope.set(i,a.callee);let c={...a,displayName:j(a,i),semanticRole:a.semanticRole??U(a)};return{variableName:i,effect:c}})}function ut(e,t){return X.Effect.gen(function*(){let r=e.getStatements(),n=[];for(let o of r){let s=yield*Yt(o,t);n.push(...s)}return n})}function Yt(e,t){return X.Effect.gen(function*(){let{SyntaxKind:r}=I();switch(e.getKind()){case r.ExpressionStatement:{let s=e.getExpression();return yield*fe(s,t)}case r.VariableStatement:{let o=e,s=[],{VariableDeclarationKind:a}=I(),i=o.getDeclarationKind()===a.Const;for(let c of o.getDeclarations()){let d=c.getInitializer();if(i&&d){let l=Yl(d);l!==void 0&&t.constValues.set(c.getName(),l)}if(d&&!oe(d)&&d.getKind()===r.CallExpression){let l=d,f=l.getExpression().getText();if(f==="Context.pick"||f==="Context.omit"){let u=yield*D(l,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);u.type==="effect"&&u.description==="context"&&s.push({variableName:c.getName(),effect:u});continue}}if(d&&oe(d)){let l=yield*fe(d,t);if(l.length>0){let f=c.getName(),u=l[l.length-1];u&&(l[l.length-1]={...u,variableName:u.variableName??f})}s.push(...l)}}return s}case r.IfStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=yield*fe(o.getExpression(),t),i=o.getThenStatement(),c=o.getElseStatement(),d=yield*Ye(i,t),l=c?yield*Ye(c,t):void 0,f=Dt(dt(s,t.constValues)),u=f.length>40?f.slice(0,40)+"...":f,p={id:T(),type:"decision",decisionId:T(),label:u,condition:s,source:"raw-if",onTrue:d.map(g=>g.effect),onFalse:l&&l.length>0?l.map(g=>g.effect):void 0};return t.stats.decisionCount++,[...a,{effect:p}]}case r.SwitchStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=o.getClauses(),i=[],c=!1,d=!1,l=[],f=[],u=!1;for(let m of a){if(m.getKind()===r.DefaultClause)d=!0,u=!0,l.push("default");else{let x=m;l.push(x.getExpression().getText())}let h=m.getStatements();if(h.length===0){c=!0;continue}for(let x of h){let C=yield*Yt(x,t);f.push(...C)}ps(h)||(c=!0),i.push({labels:l,isDefault:u,body:f.map(x=>x.effect)}),l=[],f=[],u=!1}l.length>0&&i.push({labels:l,isDefault:u,body:f.map(m=>m.effect)});let p=dt(s,t.constValues),g={id:T(),type:"switch",switchId:T(),expression:p,cases:i,source:"raw-js",hasDefault:d,hasFallthrough:c};return t.stats.switchCount++,[{effect:g}]}case r.ForStatement:{if(!oe(e))return[];let o=e,s=[],a=o.getInitializer();if(a&&oe(a)){let m=yield*fe(a,t);s.push(...m.map(S=>S.effect))}let i=o.getIncrementor();if(i&&oe(i)){let m=yield*fe(i,t);s.push(...m.map(S=>S.effect))}let c=o.getStatement(),d=yield*Ye(c,t),l=lt(c),f=o.getCondition(),u=f?f.getText():void 0,p=d.length===1&&d[0]?d[0].effect:{id:T(),type:"generator",yields:d},g={id:T(),type:"loop",loopType:"for",iterSource:u,body:p,...l?{hasEarlyExit:l}:{},...s.length>0?{headerYields:s}:{}};return t.stats.loopCount++,[{effect:g}]}case r.ForOfStatement:{if(!oe(e))return[];let o=e,s=o.getExpression(),a=s.getText(),i=[];if(oe(s)){let g=yield*fe(s,t);i.push(...g.map(m=>m.effect))}let c=o.getInitializer().getText(),d=o.getStatement(),l=yield*Ye(d,t),f=lt(d),u=l.length===1&&l[0]?l[0].effect:{id:T(),type:"generator",yields:l},p={id:T(),type:"loop",loopType:"forOf",iterSource:a,body:u,...f?{hasEarlyExit:f}:{},...i.length>0?{headerYields:i}:{},iterVariable:c};return t.stats.loopCount++,[{effect:p}]}case r.ForInStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=o.getInitializer().getText(),i=o.getStatement(),c=yield*Ye(i,t),d=lt(i),l=c.length===1&&c[0]?c[0].effect:{id:T(),type:"generator",yields:c},f={id:T(),type:"loop",loopType:"forIn",iterSource:s,body:l,...d?{hasEarlyExit:d}:{},iterVariable:a};return t.stats.loopCount++,[{effect:f}]}case r.WhileStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=o.getStatement(),i=yield*Ye(a,t),c=lt(a),d=i.length===1&&i[0]?i[0].effect:{id:T(),type:"generator",yields:i},l={id:T(),type:"loop",loopType:"while",iterSource:s,body:d,...c?{hasEarlyExit:c}:{}};return t.stats.loopCount++,[{effect:l}]}case r.DoStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=o.getStatement(),i=yield*Ye(a,t),c=lt(a),d=i.length===1&&i[0]?i[0].effect:{id:T(),type:"generator",yields:i},l={id:T(),type:"loop",loopType:"doWhile",iterSource:s,body:d,...c?{hasEarlyExit:c}:{}};return t.stats.loopCount++,[{effect:l}]}case r.TryStatement:{if(!oe(e))return[];let o=e,s=o.getTryBlock(),a=yield*ut(s,t),i=o.getCatchClause(),c,d;if(i){c=i.getVariableDeclaration()?.getName();let m=i.getBlock();d=yield*ut(m,t)}let l=o.getFinallyBlock(),f;l&&(f=yield*ut(l,t));let u=ps(s.getStatements()),p={id:T(),type:"try-catch",tryBody:a.map(g=>g.effect),...c?{catchVariable:c}:{},...d&&d.length>0?{catchBody:d.map(g=>g.effect)}:{},...f&&f.length>0?{finallyBody:f.map(g=>g.effect)}:{},hasTerminalInTry:u};return t.stats.tryCatchCount++,[{effect:p}]}case r.ReturnStatement:{let s=e.getExpression();if(!s||!oe(s))return[];let a=yield*fe(s,t),i={id:T(),type:"terminal",terminalKind:"return",value:a.map(c=>c.effect)};return t.stats.terminalCount++,[{effect:i}]}case r.ThrowStatement:{let s=e.getExpression();if(!oe(s))return[];let a=yield*fe(s,t),i={id:T(),type:"terminal",terminalKind:"throw",...a.length>0?{value:a.map(c=>c.effect)}:{}};return t.stats.terminalCount++,[{effect:i}]}case r.BreakStatement:return[];case r.ContinueStatement:return[];case r.LabeledStatement:return yield*Yt(e.getStatement(),t);case r.Block:return yield*ut(e,t);default:return[]}})}function Ye(e,t){let{SyntaxKind:r}=I();return e.getKind()===r.Block?ut(e,t):Yt(e,t)}function lt(e){let{SyntaxKind:t}=I(),r=!1;return e.forEachChild(n=>{if(r||Gn(n))return;let o=n.getKind();if(o===t.BreakStatement||o===t.ReturnStatement){r=!0;return}if(lt(n)){r=!0;return}}),r}function fe(e,t){return X.Effect.gen(function*(){let{SyntaxKind:r}=I();if(!oe(e))return[];let n=Jn(e),o=n.getKind();if(o===r.YieldExpression)return[yield*gs(n,t)];if(o===r.ConditionalExpression){let i=n,c=i.getCondition().getText(),d=i.getWhenTrue(),l=i.getWhenFalse(),f=yield*fe(d,t),u=yield*fe(l,t);if(f.length>0||u.length>0){let p=Dt(dt(c,t.constValues)),g={id:T(),type:"decision",decisionId:T(),label:p.length>40?p.slice(0,40)+"...":p,condition:c,source:"raw-ternary",onTrue:f.map(m=>m.effect),onFalse:u.length>0?u.map(m=>m.effect):void 0};return t.stats.decisionCount++,[{effect:g}]}}if(o===r.BinaryExpression){let i=n,c=i.getOperatorToken().getKind(),d=i.getLeft(),l=i.getRight();if(c===r.AmpersandAmpersandToken){let f=yield*fe(l,t);if(f.length>0){let u=d.getText(),p=Dt(dt(u,t.constValues)),g={id:T(),type:"decision",decisionId:T(),label:p.length>40?p.slice(0,40)+"...":p,condition:u,source:"raw-short-circuit",onTrue:f.map(m=>m.effect),onFalse:[]};return t.stats.decisionCount++,[{effect:g}]}}if(c===r.BarBarToken){let f=yield*fe(l,t);if(f.length>0){let u=d.getText(),p=Dt(dt(u,t.constValues)),g={id:T(),type:"decision",decisionId:T(),label:p.length>40?p.slice(0,40)+"...":p,condition:u,source:"raw-short-circuit",onTrue:[],onFalse:f.map(m=>m.effect)};return t.stats.decisionCount++,[{effect:g}]}}if(c===r.QuestionQuestionToken){let f=yield*fe(l,t);if(f.length>0){let u=`${d.getText()} != null`,p=Dt(dt(u,t.constValues)),g={id:T(),type:"decision",decisionId:T(),label:p.length>40?p.slice(0,40)+"...":p,condition:u,source:"raw-short-circuit",onTrue:[],onFalse:f.map(m=>m.effect)};return t.stats.decisionCount++,[{effect:g}]}}}let s=ms(e),a=[];for(let i of s){let c=yield*gs(i,t);a.push(c)}return a})}var td=(e,t,r,n,o,s)=>X.Effect.gen(function*(){let{SyntaxKind:a}=I(),i;if((e.getKind()===a.ArrowFunction||e.getKind()===a.FunctionExpression||e.getKind()===a.FunctionDeclaration)&&(i=e.getBody()),!i)return[];let c=new Map,l={sourceFile:t,filePath:r,opts:n,warnings:o,stats:s,serviceScope:c,constValues:new Map},f;i.getKind()===a.Block?f=yield*ut(i,l):f=yield*fe(i,l);let u=i.getDescendantsOfKind(a.CallExpression);for(let S of u){let h=We(t);if(ct(S,t,h,n.knownEffectInternalsRoot)){let N=yield*Un(S,t,r,n,o,s,c);f.push({effect:N})}}let p=Ge(e),g={id:T(),type:"generator",yields:f,jsdocDescription:p,jsdocTags:it(e)};return[{...g,displayName:j(g),semanticRole:U(g)}]});function nd(e,t,r,n,o,s){let i=e.getExpression().getText();if(!(i.endsWith(".pipe")||i==="pipe"))return X.Effect.succeed(X.Option.none());let d=e.getArguments(),l=d[d.length-1];if(!l)return X.Effect.succeed(X.Option.none());let f=l.getText();return f.includes(".runMain")||f.includes(".runPromise")||f.includes(".runSync")||f.includes(".runFork")?X.Effect.map(Jt(e,t,r,n,o,s),p=>X.Option.some(p)):X.Effect.succeed(X.Option.none())}var Qt=(e,t)=>Te.Effect.gen(function*(){let r={...kn,...t},{ts:n,Project:o}=I(),s=yield*Te.Effect.try({try:()=>Do(e)?new o({skipAddingFilesFromTsConfig:!0,compilerOptions:{allowJs:!0}}):xo(r.tsConfigPath),catch:d=>new Se("PROJECT_CREATION_FAILED",`Failed to create project: ${String(d)}`)}),a=s.getSourceFile(e);a&&s.removeSourceFile(a);let i=yield*Te.Effect.try({try:()=>s.addSourceFileAtPath(e),catch:d=>new Se("FILE_NOT_FOUND",`Failed to load file ${e}: ${String(d)}`)}),c=Hn(i,r);return c.length===0?yield*Te.Effect.fail(new Se("NO_EFFECTS_FOUND",`No Effect programs found in ${e}`)):yield*Te.Effect.forEach(c,d=>Vn(d,i,e,r,n.version),{concurrency:"unbounded"})}),Zt=(e,t="temp.ts",r)=>Te.Effect.gen(function*(){let n={...kn,...r},{ts:o}=I(),s=yield*Te.Effect.try({try:()=>Eo(e,t),catch:i=>new Se("SOURCE_PARSE_FAILED",`Failed to parse source: ${String(i)}`)}),a=Hn(s,n);return a.length===0?yield*Te.Effect.fail(new Se("NO_EFFECTS_FOUND","No Effect programs found in source")):yield*Te.Effect.forEach(a,i=>Vn(i,s,t,n,o.version),{concurrency:"unbounded"})});var ke=e=>({single:()=>V.Effect.gen(function*(){if(e.length===1){let t=e[0];if(t)return t}return yield*V.Effect.fail(new Se("NOT_SINGLE_PROGRAM",`Expected exactly 1 program, found ${String(e.length)}`))}),singleOption:()=>V.Effect.gen(function*(){if(e.length===1){let t=e[0];if(t)return V.Option.some(t)}return V.Option.none()}),all:()=>V.Effect.succeed(e),named:t=>V.Effect.gen(function*(){let r=e.find(n=>n.root.programName===t);if(!r){let n=e.map(o=>o.root.programName).join(", ");return yield*V.Effect.fail(new Se("PROGRAM_NOT_FOUND",`Program "${t}" not found. Available: ${n||"(none)"}`))}return r}),first:()=>V.Effect.gen(function*(){let t=e[0];return t||(yield*V.Effect.fail(new Se("NO_PROGRAMS","No programs found")))}),firstOption:()=>V.Effect.gen(function*(){let t=e[0];return t?V.Option.some(t):V.Option.none()})}),ft=(e,t)=>{st();let r=Qt(e,t);return{single:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).single()}),singleOption:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).singleOption()}).pipe(V.Effect.orDie),all:()=>r,named:n=>V.Effect.gen(function*(){let o=yield*r;return yield*ke(o).named(n)}),first:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).first()}),firstOption:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).firstOption()}).pipe(V.Effect.orDie)}};ft.source=(e,t)=>{st();let r=Zt(e,"temp.ts",t);return{single:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).single()}),singleOption:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).singleOption()}).pipe(V.Effect.orDie),all:()=>r,named:n=>V.Effect.gen(function*(){let o=yield*r;return yield*ke(o).named(n)}),first:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).first()}),firstOption:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).firstOption()}).pipe(V.Effect.orDie)}};var ae=require("effect"),Qe=require("fs/promises"),Qn=require("fs"),ge=require("path");var Yn=require("effect");function rd(e,t){let{SyntaxKind:r}=I(),n=[],o=e.getProject().getTypeChecker(),s=e.getDescendantsOfKind(r.ClassDeclaration);for(let a of s){let i=a.getName();if(!i)continue;let c=a.getExtends();if(!c)continue;let d=c.getText();if(!d.includes("Context.Tag")&&!d.includes("Effect.Service"))continue;let l=i,f=/Context\.Tag\s*\(\s*['"]([^'"]+)['"]\s*\)/.exec(d);f?.[1]&&(l=f[1]);let u=c.getTypeArguments();if(u.length<2){let h=c.getExpression();h&&"getTypeArguments"in h&&typeof h.getTypeArguments=="function"&&(u=h.getTypeArguments())}let p={tagId:l,methods:[],properties:[]},g;if(u.length>=2){let h=u[1];if(h)try{g=h.getText();let N=o.getTypeAtLocation(h),x=[],C=[];for(let E of N.getProperties()){let y=E.getName();if(y.startsWith("_")||y==="constructor")continue;o.getTypeOfSymbolAtLocation(E,h).getCallSignatures().length>0?x.push(y):C.push(y)}p={tagId:l,methods:x,properties:C}}catch{}}let m=a.getStart(),S=e.getLineAndColumnAtPos(m);n.push({tagId:l,className:i,filePath:t,location:{filePath:t,line:S.line,column:S.column-1},definition:p,interfaceTypeText:g})}return n}function od(e,t,r){let{SyntaxKind:n}=I(),o=[],s=e.getDescendantsOfKind(n.VariableDeclaration);for(let a of s){let i=a.getInitializer();if(!i)continue;let c=i.getText(),d=/Layer\.(effect|succeed|sync|scoped)\s*\(\s*/.exec(c);if(!d)continue;let l=d[1],f=a.getName(),u;if(i.getKind()===n.CallExpression){let x=i.getArguments?.();if(x&&x.length>0){let C=x[0];if(!C)continue;let E=C.getText().trim();u=r.get(E)}}if(!u){for(let x of r.keys())if(c.includes(`Layer.${l}(${x}`)||c.includes(`Layer.${l}(
4
+ `),r=[],n,o=[],s,a=/@(param|returns?|throws?|exception|example)\s*(.*)/gi,i;for(;(i=a.exec(t))!==null;){let c=i[1].toLowerCase(),d=i[2].trim();if(c==="param"){let l=/^(?:\{[^}]*\}\s*)?(\[?\w+(?:=[^\]]*)?]?)\s*(?:-\s*(.*))?$/.exec(d);if(l){let f=l[1].replace(/^\[|\]$/g,"").replace(/=.*/,""),u=l[2]?.trim();r.push(u?{name:f,description:u}:{name:f})}}else if(c==="returns"||c==="return")n=d.replace(/^\{[^}]*\}\s*/,"").trim()||void 0;else if(c==="throws"||c==="throw"||c==="exception"){let l=d.replace(/^\{[^}]*\}\s*/,"").trim();l&&o.push(l)}else if(c==="example"){let l=i.index+i[0].length,f=/\n\s*@\w/.exec(t.slice(l));f?s=t.slice(i.index+i[0].length-d.length,l+f.index).trim()||void 0:s=t.slice(i.index+i[0].length-d.length).trim()||void 0}}if(!(r.length===0&&!n&&o.length===0&&!s))return{params:r,returns:n,throws:o,example:s}}var $o=e=>{let t=e.getParent(),{SyntaxKind:r}=I();if(t){let n=t.getKind();if(n===r.VariableDeclaration)return Ge(t);if(n===r.ArrowFunction){let o=t.getParent();if(o?.getKind()===r.VariableDeclaration)return Ge(o)}}};function Do(e){return e.endsWith(".js")||e.endsWith(".jsx")}var zt=e=>{let t=e.getParent(),{SyntaxKind:r}=I();if(t?.getKind()===r.VariableDeclaration)return t.getName()},Je=e=>{let{SyntaxKind:t}=I(),r=s=>{let a=s;for(;a!==void 0;){if(a.getKind()===t.VariableDeclaration)return a.getName();a=a.getParent()}},n=e.getParent();if(n){let s=n.getKind();if(s===t.VariableDeclaration)return n.getName();if(s===t.AwaitExpression){let a=n.getParent();if(a?.getKind()===t.VariableDeclaration)return a.getName()}if(s===t.PropertyAssignment){let i=n.getName(),c=r(n);return c?`${c}.${i}`:i}if(s===t.ArrowFunction){let a=n.getParent();if(a?.getKind()===t.VariableDeclaration)return a.getName();if(a?.getKind()===t.PropertyAssignment){let c=a.getName(),d=r(a);return d?`${d}.${c}`:c}}}let o=e;for(let s=0;o&&s<6&&(o=o.getParent(),!!o);s++){let a=o.getKind();if(a===t.VariableDeclaration)return o.getName();if(a===t.PropertyAssignment){let c=o.getName(),d=r(o);return d?`${d}.${c}`:c}if(a===t.Block||a===t.SourceFile)break}},Po=e=>{let{SyntaxKind:t}=I(),r=e.getParent();for(let n=0;r&&n<10;n++){if(r.getKind()===t.CallExpression){let o=r,s=o.getExpression().getText();if(s==="Effect.fn"||s.endsWith(".fn")){let a=o.getArguments();if(a.length>0){let i=a[0].getText(),c=/^["'](.+)["']$/.exec(i);if(c?.[1])return c[1]}}}r=r.getParent()}},Mo=()=>({totalEffects:0,parallelCount:0,raceCount:0,errorHandlerCount:0,retryCount:0,timeoutCount:0,resourceCount:0,loopCount:0,conditionalCount:0,layerCount:0,interruptionCount:0,unknownCount:0,decisionCount:0,switchCount:0,tryCatchCount:0,terminalCount:0,opaqueCount:0}),Ft=(e,t)=>e.length<=t?e:`${e.slice(0,t)}\u2026`;function j(e,t){switch(e.type){case"effect":{let r=t??e.name;return r?`${r} <- ${e.callee}`:e.callee}case"generator":return`Generator (${e.yields.length} yields)`;case"pipe":return`Pipe (${e.transformations.length} steps)`;case"parallel":return`${e.callee} (${e.children.length})`;case"race":return`${e.callee} (${e.children.length} racing)`;case"error-handler":return e.name?`${e.name}: ${e.handlerType}`:e.handlerType;case"retry":return e.schedule?`retry: ${e.schedule}`:"retry";case"timeout":return e.duration?`timeout: ${e.duration}`:"timeout";case"resource":return"Resource";case"conditional":return Ft(e.condition,30);case"loop":return e.iterSource?`${e.loopType}(${e.iterSource})`:e.loopType;case"layer":return e.isMerged?"Layer (merged)":"Layer";case"stream":{let n=["Stream",...e.pipeline.map(o=>o.operation)];return e.sink&&n.push(e.sink),n.join(" \u2192 ")}case"concurrency-primitive":return`${e.primitive}.${e.operation}`;case"fiber":{let r=e.operation;return e.isDaemon?`${r} (daemon)`:e.isScoped?`${r} (scoped)`:r}case"transform":return e.transformType;case"match":return`Match.${e.matchOp}`;case"cause":return`Cause.${e.causeOp}`;case"exit":return`Exit.${e.exitOp}`;case"schedule":return`Schedule.${e.scheduleOp}`;case"interruption":return e.interruptionType;case"channel":{let r=e.pipeline.map(n=>n.operation);return r.length>0?`Channel: ${r.join(" \u2192 ")}`:"Channel"}case"sink":{let r=e.pipeline.map(n=>n.operation);return r.length>0?`Sink: ${r.join(" \u2192 ")}`:"Sink"}case"decision":return Ft(e.condition,30);case"switch":return`switch(${Ft(e.expression,25)})`;case"try-catch":return"try/catch";case"terminal":return e.label?`${e.terminalKind} ${e.label}`:e.terminalKind;case"opaque":return`Opaque: ${Ft(e.reason,25)}`;case"unknown":return`Unknown: ${Ft(e.reason,30)}`}}function U(e){switch(e.type){case"effect":{if(e.serviceCall||e.serviceMethod)return"service-call";let t=e.description?.toLowerCase()??"";if(t.includes("service"))return"service-call";if(t.includes("layer")||e.provideKind==="layer")return"layer";let r=e.callee.toLowerCase();return/^[A-Z][A-Za-z0-9_]*$/.test(e.callee)&&!e.constructorKind?"environment":r.includes("sync")||r.includes("promise")||r.includes("async")||r.includes("log")||r.includes("console")?"side-effect":r.includes("succeed")||r.includes("fail")||r.includes("die")||r.includes("void")||r.includes("never")||r.includes("gen")||r.includes("make")||e.constructorKind?"constructor":"side-effect"}case"generator":case"pipe":return"constructor";case"parallel":case"race":case"concurrency-primitive":return"concurrency";case"error-handler":case"cause":case"exit":return"error-handler";case"retry":case"timeout":case"schedule":return"scheduling";case"resource":return"resource";case"conditional":case"loop":case"match":case"decision":case"switch":case"terminal":return"control-flow";case"try-catch":return"error-handler";case"opaque":return"unknown";case"layer":return"layer";case"stream":case"channel":case"sink":return"stream";case"fiber":case"interruption":return"fiber";case"transform":return"transform";case"unknown":return"unknown"}}var In=[".catchAll",".catchTag",".catchAllCause",".catchIf",".catchSome",".catchSomeCause",".catchSomeDefect",".catchAllDefect",".catchTags",".orElse",".orElseFail",".orElseSucceed",".orDie",".orDieWith",".flip",".mapError",".mapErrorCause",".mapBoth",".sandbox",".unsandbox",".parallelErrors",".filterOrDie",".filterOrDieMessage",".filterOrElse",".filterOrFail",".match",".matchCause",".matchEffect",".matchCauseEffect",".firstSuccessOf",".ignore",".ignoreLogged",".eventually"],An=[".if",".when",".whenEffect",".whenFiberRef",".whenRef",".unless",".unlessEffect",".option",".either",".exit",".liftPredicate"],nl=[".acquireRelease",".acquireUseRelease",".ensuring",".addFinalizer",".onExit",".onError",".parallelFinalizers",".sequentialFinalizers",".finalizersMask",".using",".withEarlyRelease"],Fn=[".forEach",".loop",".filter",".filterMap",".partition",".reduce",".reduceRight",".reduceWhile",".reduceEffect",".dropUntil",".dropWhile",".takeUntil",".takeWhile",".every",".exists",".findFirst",".head",".mergeAll",".replicate",".replicateEffect",".validateAll",".validateFirst",".validate",".validateWith"],Rn=["Effect.fork",".fork",".forkAll",".forkIn",".forkWithErrorHandler","Fiber."],$n={"Effect.map":"map","Effect.flatMap":"flatMap","Effect.andThen":"andThen","Effect.tap":"tap","Effect.tapBoth":"tapBoth","Effect.tapError":"tapError","Effect.tapErrorTag":"tapErrorTag","Effect.tapErrorCause":"tapErrorCause","Effect.tapDefect":"tapDefect","Effect.zipLeft":"zipLeft","Effect.zipRight":"zipRight","Effect.zipWith":"zipWith","Effect.zip":"zip","Effect.as":"as","Effect.asVoid":"asVoid","Effect.asSome":"asSome","Effect.asSomeError":"asSomeError","Effect.flatten":"flatten","Effect.ap":"ap","Effect.negate":"negate","Effect.merge":"merge"},Oo=new Set(["flatMap","andThen","tapBoth","tapError","tapErrorTag","tapErrorCause","tapDefect","zipWith","zipLeft","zipRight","zip","ap","flatten"]),Wo=e=>e in $n,Dn={"Match.type":"type","Match.tag":"tag","Match.value":"value","Match.when":"when","Match.whenOr":"whenOr","Match.whenAnd":"whenAnd","Match.not":"not","Match.is":"is","Match.exhaustive":"exhaustive","Match.orElse":"orElse","Match.option":"option","Match.either":"either","Match.discriminator":"discriminator","Match.discriminatorsExhaustive":"discriminatorsExhaustive","Match.tags":"tags","Match.tagsExhaustive":"tagsExhaustive","Match.withReturnType":"withReturnType","Match.run":"run"},Ko=new Set(["exhaustive","discriminatorsExhaustive","tagsExhaustive"]),Bo=e=>e.startsWith("Match.")&&e in Dn,Pn={"Cause.fail":"fail","Cause.die":"die","Cause.interrupt":"interrupt","Cause.parallel":"parallel","Cause.sequential":"sequential","Cause.empty":"empty","Cause.failures":"failures","Cause.defects":"defects","Cause.interruptors":"interruptors","Cause.squash":"squash","Cause.squashWith":"squashWith","Cause.pretty":"pretty","Cause.flatten":"flatten","Cause.isDie":"isDie","Cause.isFailure":"isFailure","Cause.isInterrupted":"isInterrupted","Cause.isEmpty":"isEmpty","Cause.map":"map","Cause.filter":"filter"},qo=new Set(["fail","die","interrupt","parallel","sequential","empty"]),jo=e=>e.startsWith("Cause.")&&e in Pn,Mn={"Exit.succeed":"succeed","Exit.fail":"fail","Exit.die":"die","Exit.interrupt":"interrupt","Exit.void":"void","Exit.unit":"unit","Exit.match":"match","Exit.isSuccess":"isSuccess","Exit.isFailure":"isFailure","Exit.isInterrupted":"isInterrupted","Exit.when":"when","Exit.whenEffect":"whenEffect","Exit.exists":"exists","Exit.contains":"contains","Exit.flatten":"flatten","Exit.map":"map","Exit.mapBoth":"mapBoth","Exit.mapError":"mapError","Exit.flatMap":"flatMap","Exit.zipWith":"zipWith","Exit.tap":"tap","Exit.tapBoth":"tapBoth","Exit.tapError":"tapError"},_o=new Set(["succeed","fail","die","interrupt","void","unit"]),zo=e=>e.startsWith("Exit.")&&(e in Mn||/^Exit\.\w+$/.test(e)),Ln={"Schedule.exponential":"exponential","Schedule.fibonacci":"fibonacci","Schedule.spaced":"spaced","Schedule.fixed":"fixed","Schedule.linear":"linear","Schedule.cron":"cron","Schedule.windowed":"windowed","Schedule.duration":"duration","Schedule.elapsed":"elapsed","Schedule.delays":"delays","Schedule.once":"once","Schedule.stop":"stop","Schedule.count":"count","Schedule.forever":"forever","Schedule.jittered":"jittered","Schedule.andThen":"andThen","Schedule.intersect":"intersect","Schedule.union":"union","Schedule.compose":"compose","Schedule.zipWith":"zipWith","Schedule.addDelay":"addDelay","Schedule.modifyDelay":"modifyDelay","Schedule.check":"check","Schedule.resetAfter":"resetAfter","Schedule.resetWhen":"resetWhen","Schedule.ensure":"ensure","Schedule.driver":"driver","Schedule.mapInput":"mapInput"},Ho=e=>e.startsWith("Schedule.")&&(e in Ln||/^Schedule\.\w+$/.test(e)),On=[".interruptible",".uninterruptible",".interruptibleMask",".uninterruptibleMask",".onInterrupt",".disconnect",".allowInterrupt","Effect.interrupt",".interruptWith"],rl=[".Do",".bind",".bindAll",".bindTo"],ol=[".cached",".cachedWithTTL",".cachedInvalidateWithTTL",".cachedFunction",".once","Cache.","ScopedCache."],Wn=["Effect.","Layer.","Schedule.","Stream.","Queue.","PubSub.","Deferred.","Semaphore.","Mailbox.","SubscriptionRef.","Scope.","Fiber.","Runtime.","ManagedRuntime.","NodeRuntime.","BunRuntime.","DenoRuntime.","Cause.","Exit.","Data.","Option.","Either.","Chunk.","HashMap.","HashSet.","List.","SortedMap.","SortedSet.","RedBlackTree.","Trie.","Graph.","Match.","Config.","Schema.","Cache.","ScopedCache.","RcRef.","RcMap.","Reloadable.","Cache.","ScopedCache.","RateLimiter.","PartitionedSemaphore.","FiberSet.","FiberMap.","FiberHandle.","Metric.","Logger.","Tracer.","Context.","HttpClient.","HttpRouter.","HttpApi.","FileSystem.","Command.","Socket.","SocketServer.","Worker.","Terminal.","KeyValueStore.","Multipart.","Ndjson.","MsgPack.","OpenApi.","OpenApiJsonSchema.","Brand.","Encoding.","Predicate.","DateTime.","Cron.","BigDecimal.","HashRing.","Redacted.","GlobalValue.","Channel.","Sink.","CliApp.","Args.","Options.","AiModel.","AiToolkit.","Completions.","AiInput.","AiResponse.","NodeSdk.","WebSdk.","Entity.","ClusterSchema.","MessageState.","Sharding.","RpcGroup.","RpcApi.","RpcClient.","RpcRouter.","SqlResolver.","SqlMigrator.","Printer.","Doc.","DocTree.","PageWidth.","Optimize."],Uo=new Set(["Array","ReadonlyArray","String","Number","Boolean","Object","Function","Promise","Math","Date","RegExp","Error","Map","Set","WeakMap","WeakSet","Symbol","BigInt","JSON","Console","process","Buffer","EventEmitter","Window","Document","AbortController"]),Kn=new Set(["Effect","Layer","Stream","Queue","PubSub","Deferred","Semaphore","Mailbox","SubscriptionRef","Scope","Fiber","Runtime","ManagedRuntime","Cause","Exit","Data","Option","Either","Chunk","HashMap","HashSet","List","SortedMap","SortedSet","Match","Config","Schema","Schedule","Metric","Tracer","Logger","FiberRef","FiberHandle","FiberSet","FiberMap","Cache","ScopedCache","RateLimiter","Supervisor"]),Vo=e=>e.includes(".")||Kn.has(e)?!1:/^[A-Z][A-Za-z0-9]*$/.test(e),Lo=e=>{if(e.startsWith("Channel."))return"channel";if(e.startsWith("Sink."))return"sink";if(e.endsWith(".never"))return"never";if(e.endsWith(".void"))return"void-effect";if(e.endsWith(".fromNullable"))return"null-coalescing";if(e.endsWith(".fn")||e.endsWith(".fnUntraced"))return"function-lift";if(e.includes(".async")||e.includes(".asyncEffect")||e.includes(".promise")||e.includes(".sync")||e.includes(".suspend")||e.includes(".succeed")||e.includes(".fail")||e.includes(".try"))return"constructor";if(On.some(t=>e.includes(t)))return"interruption";if(rl.some(t=>e.includes(t)))return"do-notation";if(ol.some(t=>e.includes(t)||e.startsWith(t)))return"caching";if(In.some(t=>e.includes(t)))return"error-handler";if(An.some(t=>e.includes(t)))return"conditional";if(nl.some(t=>e.includes(t)))return"resource";if(Fn.some(t=>e.includes(t)))return"collection";if(Rn.some(t=>e.includes(t)))return"fiber";if(e.startsWith("Stream."))return"stream";if(e.startsWith("Layer."))return"layer";if(e.startsWith("Schema."))return"schema";if(e.startsWith("Config."))return"config";if(e.startsWith("Cause."))return"cause";if(e.startsWith("Exit."))return"exit";if(e==="Data.tagged"||e==="Data.taggedEnum")return"tagged-enum";if(e.startsWith("Data."))return"data";if(e.startsWith("Option."))return"option";if(e.startsWith("Either."))return"either";if(e.startsWith("Match."))return"match";if(e.startsWith("ManagedRuntime.")||e.startsWith("Runtime.")||e.startsWith("NodeRuntime.")||e.startsWith("BunRuntime.")||e.startsWith("DenoRuntime."))return"runtime";if(e.startsWith("Scope."))return"scope";if(e.startsWith("ScopedRef.")||e.startsWith("RcRef.")||e.startsWith("RcMap."))return"resource-ref";if(e.startsWith("Reloadable.")||e.startsWith("Resource."))return"reloadable";if(e.startsWith("Micro."))return"micro";if(e.startsWith("Brand."))return"brand";if(e.startsWith("Encoding."))return"encoding";if(e.startsWith("Predicate."))return"predicate";if(e.startsWith("DateTime."))return"datetime";if(e.startsWith("Cron."))return"cron";if(e.startsWith("Redacted."))return"redacted";if(e.startsWith("GlobalValue."))return"global-value";if(e.startsWith("Supervisor."))return"supervisor";if(e.includes(".locally")||e.includes(".locallyWith")||e.includes(".locallyScoped")||e.includes(".getFiberRefs")||e.includes(".setFiberRefs")||e.includes(".inheritFiberRefs")||e.includes("FiberRef."))return"fiberref";if(e.includes(".withConcurrency")||e.includes(".withScheduler")||e.includes(".withSchedulingPriority")||e.includes(".daemonChildren")||e.includes(".awaitAllChildren")||e.includes(".supervised"))return"structured-concurrency";if(e.startsWith("Context.pick")||e.startsWith("Context.omit")||e==="Effect.provide"||e.startsWith("Effect.")&&e.includes(".provide")&&!e.includes("provideService"))return"context";if(e.includes(".serviceOption")||e.includes(".serviceOptional")||e.includes(".serviceFunction")||e.includes(".serviceFunctionEffect")||e.includes(".serviceFunctions")||e.includes(".serviceConstants")||e.includes(".serviceMembers")||e.includes(".updateService"))return"service";if(e.startsWith("CliApp.")||e.startsWith("Args.")||e.startsWith("Options."))return"cli";if(e.startsWith("AiModel.")||e.startsWith("AiToolkit.")||e.startsWith("Completions.")||e.startsWith("AiInput.")||e.startsWith("AiResponse."))return"ai";if(e.startsWith("NodeSdk.")||e.startsWith("WebSdk.")||e.startsWith("OtelMetrics."))return"opentelemetry";if(e.startsWith("Entity.")||e.startsWith("ClusterSchema.")||e.startsWith("MessageState.")||e.startsWith("Sharding."))return"cluster";if(e.startsWith("RpcGroup.")||e.startsWith("RpcApi.")||e.startsWith("RpcClient.")||e.startsWith("RpcRouter."))return"rpc";if(e.startsWith("SqlResolver.")||e.startsWith("SqlMigrator."))return"sql";if(e.startsWith("DevTools.")||e.startsWith("Server."))return"devtools";if(e.startsWith("BigDecimal."))return"big-decimal";if(e.startsWith("Graph."))return"graph";if(e.startsWith("HashRing."))return"hash-ring";if(e.startsWith("Chunk."))return"chunk";if(e.startsWith("HashMap.")||e.startsWith("HashSet.")||e.startsWith("List.")||e.startsWith("SortedMap.")||e.startsWith("SortedSet.")||e.startsWith("RedBlackTree.")||e.startsWith("Trie."))return"immutable-collection";if(e.includes(".map")||e.includes(".flatMap")||e.includes(".andThen")||e.includes(".tap")||e.includes(".tapBoth")||e.includes(".tapError")||e.includes(".tapErrorTag")||e.includes(".tapErrorCause")||e.includes(".tapDefect")||e.includes(".zip")||e.includes(".zipLeft")||e.includes(".zipRight")||e.includes(".zipWith")||e.includes(".as")||e.includes(".asVoid")||e.includes(".flatten")||e.includes(".merge")||e.includes(".ap")||e.includes(".validate")||e.includes(".negate"))return"transformation";if(e.startsWith("Printer.")||e.startsWith("Doc.")||e.startsWith("DocTree.")||e.startsWith("PageWidth.")||e.startsWith("Optimize."))return"printer";if(e.startsWith("Http")||e.startsWith("FileSystem.")||e.startsWith("Command.")||e.startsWith("Socket.")||e.startsWith("Worker."))return"platform";if(e.includes("channel.")&&!e.includes("Channel"))return"channel"},Go=(e,t)=>{let r=Lo(e);if(r)return r;if(t){let n=e.indexOf(".");if(n>0){let o=e.substring(0,n);if(t.has(o)){let s=e.substring(n+1);return Lo(`Effect.${s}`)}}}},re=(e,t,r=new Set)=>{let{SyntaxKind:n}=I(),o=f=>r.has(f),s=f=>/\.run(?:Promise(?:Exit)?|Sync(?:Exit)?|Fork|Callback|Main)$/.test(f)||/^Runtime\.run(?:Promise|Sync|Fork)$/.test(f),a=f=>{if(s(f))return!1;let u=f==="pipe"||f.endsWith(".pipe"),p=f.indexOf(".");return p>0&&o(f.slice(0,p))?!1:u||[...t].some(g=>f.startsWith(`${g}.`))},i=f=>{let u=f.getExpression(),p=u.getText();if(s(p))return!1;let g=p==="pipe",m=u.getKind()===n.PropertyAccessExpression&&u.getName()==="pipe";if(g||m){if(f.getArguments().some(h=>re(h,t,r)))return!0;if(m){let h=u.getExpression();return re(h,t,r)}return!1}return u.getKind()===n.Identifier&&t.has(p)&&!o(p)||a(p)||u.getKind()===n.PropertyAccessExpression&&re(u.getExpression(),t,r)?!0:f.getArguments().some(S=>re(S,t,r))},c=(f,u)=>{let p=f.getParent();for(;p&&p!==u;){let g=p.getKind();if(g===n.FunctionDeclaration||g===n.FunctionExpression||g===n.ArrowFunction||g===n.MethodDeclaration||g===n.GetAccessor||g===n.SetAccessor||g===n.ClassDeclaration||g===n.ClassExpression||g===n.Constructor||g===n.ClassStaticBlockDeclaration)return!1;p=p.getParent()}return!0},d=f=>f.getDescendantsOfKind(n.CallExpression).some(m=>c(m,f)&&i(m))||f.getDescendantsOfKind(n.AwaitExpression).some(m=>c(m,f)&&re(m,t,r))?!0:f.getDescendantsOfKind(n.PropertyAccessExpression).some(m=>c(m,f)&&re(m,t,r)),l=f=>f.getDescendantsOfKind(n.CallExpression).some(u=>c(u,f)&&s(u.getExpression().getText()));if(e.getKind()===n.ObjectLiteralExpression)return e.getProperties().some(u=>{if(u.getKind()===n.PropertyAssignment||u.getKind()===n.ShorthandPropertyAssignment){let p=u.getKind()===n.PropertyAssignment?u.getInitializer():void 0;return p?re(p,t,r):!1}if(u.getKind()===n.MethodDeclaration||u.getKind()===n.GetAccessor||u.getKind()===n.SetAccessor){let p=u.getBody();return p?d(p):!1}return!1});if(e.getKind()===n.ArrowFunction||e.getKind()===n.FunctionExpression){let u=e.getBody();if(u.getKind()===n.Block){let p=u;return p.getDescendantsOfKind(n.ReturnStatement).some(S=>{if(!c(S,p))return!1;let h=S.getExpression();return h!==void 0&&re(h,t,r)})?!0:l(p)?!1:d(p)}return re(u,t,r)}if(e.getKind()===n.CallExpression)return i(e);if(e.getKind()===n.AwaitExpression){let f=e.getExpression();return f.getKind()!==n.CallExpression?!1:i(f)}if(e.getKind()===n.ConditionalExpression){let f=e;return re(f.getWhenTrue(),t,r)||re(f.getWhenFalse(),t,r)}if(e.getKind()===n.PropertyAccessExpression){let f=e.getText(),u=f.indexOf(".");return u>0&&o(f.slice(0,u))?!1:[...t].some(p=>f.startsWith(`${p}.`))}return!1};function Oe(e){return e==="effect"||e.startsWith("effect/")||e.startsWith("@effect/")}var Bn=new Set(["Effect","Layer","Schedule","Stream","Queue","PubSub","Deferred","Semaphore","Mailbox","SubscriptionRef","Scope","Fiber","Runtime","ManagedRuntime","Cause","Exit","Data","Option","Either","Chunk","HashMap","HashSet","Match","Config","Schema","Cache","ScopedCache","Metric","Logger","Tracer","Context","Brand","Encoding","Predicate","DateTime","Cron","BigDecimal","Graph","HashRing","Redacted","GlobalValue","NodeRuntime","BunRuntime","DenoRuntime","Channel","Sink"]),Jo=new Set(["core","core-effect","core-stream","fiberRuntime","effectable","channel","sink","layer","schedule","mailbox","pubsub"]);function Yo(e){let t=new Set(["never","unknown","any","{}","object"]),r=e.trim();return!r||t.has(r)?[]:r.split(/[\s|&]+/).map(o=>o.trim().split("<")[0]?.trim()??"").filter(o=>o.length>0&&!t.has(o))}function Rt(e){let{SyntaxKind:t}=I(),r=e.getKind();if(r===t.NumericLiteral){let n=e.getText(),o=Number(n);return Number.isFinite(o)?o:void 0}if(r===t.PrefixUnaryExpression){let n=e;if(n.getOperatorToken()===t.MinusToken){let o=n.getOperand(),s=Rt(o);return s!==void 0?-s:void 0}}}var es=require("fs"),Y=require("path");var Qo=new WeakMap,Zo=new WeakMap;function qn(e){let t=new Set;for(let r of e.getExportDeclarations()){let n=r.getModuleSpecifierValue();if(!(!n||!Oe(n))){if(r.isNamespaceExport()){Bn.forEach(o=>t.add(o));continue}for(let o of r.getNamedExports()){t.add(o.getName());let s=o.getAliasNode()?.getText();s&&t.add(s)}}}return t}function at(e,t,r){if(!r.startsWith("."))return;let n=(0,Y.dirname)(t),o=(0,Y.resolve)(n,r),s=[o,`${o}.ts`,`${o}.tsx`,`${o}.js`,`${o}.jsx`,(0,Y.join)(o,"index.ts"),(0,Y.join)(o,"index.tsx"),(0,Y.join)(o,"index.js"),(0,Y.join)(o,"index.jsx")];for(let a of s){let i=e.getSourceFile(a);if(i)return i}}function $t(e,t){if(!t.startsWith("."))return;let r=(0,Y.dirname)(e),n=(0,Y.resolve)(r,t);return[n,`${n}.ts`,`${n}.tsx`,`${n}.js`,`${n}.jsx`,(0,Y.join)(n,"index.ts"),(0,Y.join)(n,"index.tsx"),(0,Y.join)(n,"index.js"),(0,Y.join)(n,"index.jsx")].find(s=>(0,es.existsSync)(s))}function Ht(e,t,r){if(!r||!t.startsWith("."))return!1;let n=t.replace(/\\/g,"/"),o=(0,Y.resolve)((0,Y.dirname)(e),t),s=(0,Y.resolve)(o),a=(0,Y.resolve)(r);return s===a||s.startsWith(a+Y.sep)?!0:e==="temp.ts"||e.endsWith(`${Y.sep}temp.ts`)?n.startsWith("./internal/")||n.startsWith("../internal/"):!1}function sl(e){let t=new Set(Bn),r=e.getProject(),n=e.getFilePath();for(let o of e.getImportDeclarations()){let s=o.getModuleSpecifierValue();if(Oe(s)){let a=o.getDefaultImport();a&&t.add(a.getText());let i=o.getNamespaceImport();i&&t.add(i.getText());for(let c of o.getNamedImports()){let d=c.getAliasNode()?.getText();t.add(d??c.getName())}continue}if(s.startsWith(".")){let a=at(r,n,s);if(!a)continue;let i=qn(a);if(i.size===0)continue;let c=o.getDefaultImport();if(c){let l=c.getText();i.has(l)&&t.add(l)}let d=o.getNamespaceImport();if(d){let l=d.getText();i.has(l)&&t.add(l)}for(let l of o.getNamedImports())i.has(l.getName())&&t.add(l.getAliasNode()?.getText()??l.getName())}}return t}function jn(e,t){let r=sl(e);for(let n of e.getImportDeclarations()){let o=n.getModuleSpecifierValue(),s=n.getNamespaceImport();if(!s)continue;let a=s.getText();if(o.startsWith("effect")||o.startsWith("@effect/")){r.add(a);continue}if(Ht(e.getFilePath(),o,t)){r.add(a);continue}let i=o.replace(/\.(js|ts)$/,"").split("/").pop()??"";Jo.has(i)&&r.add(a)}return r}var il=new Set(["BigDecimal","BigInt","Brand","Cause","Chunk","Data","Exit","Option","Either","HashMap","HashSet","List","Redacted"]);function ts(e){let t=new Set;for(let r of e.getImportDeclarations()){let s=r.getModuleSpecifierValue().replace(/\\/g,"/").replace(/\.(js|ts|tsx|jsx)$/,"").split("/").pop()??"";if(!il.has(s))continue;let a=r.getDefaultImport();a&&t.add(a.getText());let i=r.getNamespaceImport();i&&t.add(i.getText());for(let c of r.getNamedImports())t.add(c.getAliasNode()?.getText()??c.getName())}return t}function We(e){let t=Qo.get(e);return t||(t=jn(e),Qo.set(e,t)),t}var Xo=new WeakMap;function al(e){let t=e.replace(/\\/g,"/").replace(/\.(js|ts|mts|cts)$/,"");return t==="effect"||t.endsWith("/Effect")?"Effect":(t.split("/").pop()??"")||"Effect"}function cl(e){let t=Xo.get(e);if(t)return t;t=new Map;for(let r of e.getImportDeclarations()){let n=r.getModuleSpecifierValue();if(!n||!Oe(n))continue;let o=r.getNamespaceImport();if(!o)continue;let s=o.getText(),a=al(n);t.set(s,a)}return Xo.set(e,t),t}function _n(e,t){let r=e.indexOf(".");if(r<=0)return e;let n=e.slice(0,r),o=e.slice(r+1),a=cl(t).get(n);return a?`${a}.${o}`:e}function ll(e,t){let r=Zo.get(t);r||(r=new Map,Zo.set(t,r));let n=e.indexOf("."),o=n>0?e.slice(0,n):e,s=r.get(o);if(s!==void 0)return s;let a=!1;try{for(let i of t.getImportDeclarations()){let c=i.getModuleSpecifierValue();if(i.getNamespaceImport()?.getText()===o){a=Oe(c);break}if(i.getDefaultImport()?.getText()===o){a=Oe(c);break}for(let f of i.getNamedImports())if((f.getAliasNode()?.getText()??f.getName())===o){if(Oe(c))a=!0;else if(c.startsWith(".")){let g=at(t.getProject(),t.getFilePath(),c);g&&(a=qn(g).has(f.getName()))}break}if(a)break}}catch{a=!1}return r.set(o,a),a}function dl(e,t){let n=e.getExpression().getText();for(let o of t.getImportDeclarations()){let s=o.getModuleSpecifierValue();if(o.getNamespaceImport()?.getText()===n||o.getDefaultImport()?.getText()===n)return s;for(let c of o.getNamedImports())if((c.getAliasNode()?.getText()??c.getName())===n)return s}}function ct(e,t,r,n){let o=e.getExpression(),s=o.getText();if(Wn.some(d=>s.startsWith(d))||s.startsWith("pipe("))return!0;for(let d of r)if(s.startsWith(`${d}.`))return!0;let{SyntaxKind:a}=I();if(o.getKind()!==a.PropertyAccessExpression)return!1;let i=o,c=dl(i,t);if(!c)return!1;if(Oe(c))return!0;if(c.startsWith(".")){let d=at(t.getProject(),t.getFilePath(),c);if(d){let l=qn(d),f=i.getExpression().getText();for(let u of t.getImportDeclarations())if(u.getModuleSpecifierValue()===c){for(let p of u.getNamedImports())if((p.getAliasNode()?.getText()??p.getName())===f&&l.has(p.getName()))return!0}}if(Ht(t.getFilePath(),c,n))return!0}return!1}function Ut(e,t,r){if(Wn.some(n=>e.startsWith(n))||e.startsWith("pipe("))return!0;if(t){for(let n of t)if(e.startsWith(`${n}.`))return!0}return r&&e.includes(".")?ll(e,r):!1}var ul=new Set(["createWorkflow","createSagaWorkflow","runSaga"]),fl=e=>Array.from(ul).some(t=>e===t||e.endsWith(`.${t}`)),ns=e=>{let t=e.getExpression();if(t.getKind()!==I().SyntaxKind.PropertyAccessExpression)return!1;let r=t,n=e.getArguments();if(r.getName()!=="make"||n.length<3||!n[2])return!1;let o=n[2].getKind(),{SyntaxKind:s}=I();return o===s.ArrowFunction||o===s.FunctionExpression};function is(e,t){let r=e.replace(/\\/g,"/");return!!(r==="@effect/workflow"||r==="effect/workflow"||r.endsWith("/workflow")||r.includes("/workflow/")||r.endsWith("/Workflow.js")||r.endsWith("/Workflow.ts")||r.endsWith("/Activity.js")||r.endsWith("/Activity.ts")||r.startsWith(".")&&(r.endsWith("Workflow.js")||r.endsWith("Workflow.ts")||r.endsWith("Activity.js")||r.endsWith("Activity.ts")))}function pl(e,t,r){return e!=="Workflow"?!1:is(t,r)}function gl(e,t,r){return e!=="Activity"?!1:is(t,r)}function as(e,t){let{SyntaxKind:r}=I(),n=e.getArguments();if(n.length!==1||!n[0])return!1;let o=n[0];if(o.getKind()!==r.ObjectLiteralExpression)return!1;let a=o.getProperties(),i=new Set(t);for(let c of a)if(c.getKind()===r.PropertyAssignment){let d=c.getName();if(i.has(d))return!0}return!1}function ml(e,t,r){let{SyntaxKind:n}=I(),o=e.getExpression();if(o.getKind()!==n.PropertyAccessExpression)return!1;let s=o;if(s.getName()!=="make")return!1;let a=s.getExpression().getText(),i=t.get(a);return!i||!pl(a,i,r)?!1:as(e,["name","payload","idempotencyKey"])}function hl(e,t,r){let{SyntaxKind:n}=I(),o=e.getExpression();if(o.getKind()!==n.PropertyAccessExpression)return!1;let s=o;if(s.getName()!=="make")return!1;let a=s.getExpression().getText(),i=t.get(a);return!i||!gl(a,i,r)?!1:as(e,["name","execute"])}var cs=(e,t)=>{let r=e.getExpression();if(r.getKind()!==I().SyntaxKind.PropertyAccessExpression||r.getName()!=="run")return null;let o=e.getArguments();if(o.length<1||!o[0])return null;let s=o[0],{SyntaxKind:a}=I();if(s.getKind()===a.CallExpression){let l=s;return ns(l)?l.getArguments()[2]??null:null}if(s.getKind()!==a.Identifier)return null;let c=s.getText(),d=t.getDescendantsOfKind(a.VariableDeclaration);for(let l of d){if(l.getName()!==c)continue;let f=l.getInitializer();if(f?.getKind()===a.CallExpression&&ns(f))return f.getArguments()[2]??null}return null},yl=e=>{let{SyntaxKind:t}=I(),r=e.getParent();for(;r;){if(r.getKind()===t.CallExpression){let o=r.getExpression().getText();if(o.includes(".gen")||o==="gen")return!0}r=r.getParent()}return!1},Sl=e=>{let{SyntaxKind:t}=I();return e.getFirstAncestorByKind(t.VariableStatement)?.getParent()?.getKind()===t.SourceFile},xl=e=>{let{SyntaxKind:t}=I(),r=e.getInitializer();return r?r.getKind()===t.YieldExpression||r.getKind()===t.AwaitExpression&&r.getExpression().getKind()===t.YieldExpression:!1},rs=e=>{let{SyntaxKind:t}=I();if(e.getKind()===t.CallExpression)return e;if(e.getKind()===t.AwaitExpression){let r=e.getExpression();if(r.getKind()===t.CallExpression)return r}},_=(e,t)=>({discoveryConfidence:e,discoveryReason:t}),El=["Effect<","Layer<","Layer.Layer<","Stream<","Stream.Stream<","Channel<","Channel.Channel<","Sink<","Sink.Sink<","STM<","STM.STM<","Schedule<","Schedule.Schedule<"],Vt=e=>e!==void 0&&El.some(t=>e.includes(t)),os={low:0,medium:1,high:2},zn=e=>{let t=e.getExpression().getText();return t.includes(".runPromise")||t.includes(".runPromiseExit")||t.includes(".runSync")||t.includes(".runSyncExit")||t.includes(".runFork")||t.includes(".runCallback")||t.includes(".runMain")||t.includes("Runtime.runPromise")||t.includes("Runtime.runSync")||t.includes("Runtime.runFork")};function ss(e){let t=e.getBody?.();if(!t)return!1;let r=t.getText();return r.includes(".runMain")||r.includes(".runPromise")||r.includes(".runSync")||r.includes(".runFork")||r.includes("Runtime.runPromise")||r.includes("Runtime.runSync")||r.includes("NodeRuntime.runMain")||r.includes("BunRuntime.runMain")||r.includes("DenoRuntime.runMain")}function bl(e,t){let r=e.getExpression();if(r.getKind()!==I().SyntaxKind.Identifier)return!1;let s=r.getSymbol()?.getValueDeclaration();if(!s)return!1;let a=s.getKind(),{SyntaxKind:i}=I();if(a===i.FunctionDeclaration||a===i.ArrowFunction||a===i.FunctionExpression)return ss(s);if(a===i.VariableDeclaration){let c=s.getInitializer();if(c&&(c.getKind()===i.ArrowFunction||c.getKind()===i.FunctionExpression))return ss(c)}return!1}function Cl(e){let t=e.getExpression();if(e.getArguments().length!==1)return!1;let{SyntaxKind:r}=I();if(t.getKind()!==r.CallExpression)return!1;let n=t;if(n.getArguments().length!==1)return!1;let o=n.getExpression().getText();return o.includes(".runPromise")||o.includes(".runSync")||o.includes(".runFork")||o.includes(".runCallback")||o.includes("Runtime.runPromise")||o.includes("Runtime.runSync")||o.includes("Runtime.runFork")}var Hn=(e,t)=>{let r=[],{SyntaxKind:n}=I(),o=new Set,s=new Set,a=jn(e,t.knownEffectInternalsRoot),i=ts(e),c=new Map;for(let E of e.getImportDeclarations()){let y=E.getModuleSpecifierValue(),w=E.getDefaultImport();w&&c.set(w.getText(),y);let k=E.getNamespaceImport();k&&c.set(k.getText(),y);for(let b of E.getNamedImports())c.set(b.getAliasNode()?.getText()??b.getName(),y)}let d=E=>{let y=c.get(E);if(y){if(y.startsWith("effect")||y.startsWith("@effect/"))return _("high",`imported from ${y}`);if(Ht(e.getFilePath(),y,t.knownEffectInternalsRoot))return _("high","namespace import resolved under knownEffectInternalsRoot");if(y.startsWith(".")&&/(?:^|\/)Effect(?:\.[jt]sx?)?$/.test(y))return _("high",`relative Effect module namespace import (${y})`)}},l=E=>{let y=k=>{let b=k.getDescendantsOfKind(n.PropertyAccessExpression);for(let F of b){let L=F.getExpression().getText();if(a.has(L)&&!i.has(L))return d(L)?.discoveryConfidence==="high"?_("high",`function body uses ${L}.* from trusted Effect alias`):_("medium",`function body uses Effect-like alias ${L}.*`)}let M=k.getDescendantsOfKind(n.CallExpression);for(let F of M){let L=F.getExpression();if(L.getKind()===n.Identifier){let A=L.getText();if(a.has(A)&&!i.has(A))return d(A)?.discoveryConfidence==="high"?_("high",`function body calls trusted Effect import ${A}(...)`):_("medium",`function body calls Effect-like import ${A}(...)`)}}};if(E.getKind()===n.ArrowFunction||E.getKind()===n.FunctionExpression){let b=E.getBody();if(b.getKind()===n.Block){let M=y(b);if(M)return M}else{let M=y(b);if(M)return M}}let w=rs(E);if(w){let k=w.getExpression(),b=k.getText();if(k.getKind()===n.Identifier){let M=b;if(a.has(M)&&!i.has(M))return d(M)??_("high",`named import call (${M})`);if(M==="pipe")return _("medium","exact pipe() call detection")}if(k.getKind()===n.PropertyAccessExpression){let M=k,F=M.getExpression().getText();if(a.has(F)&&!i.has(F))return d(F)??_("medium",`Effect-like namespace prefix (${F}.*)`);if(M.getName()==="pipe")return _("medium","exact .pipe() call detection")}}if(E.getKind()===n.PropertyAccessExpression){let b=E.getExpression().getText();if(a.has(b)&&!i.has(b))return d(b)??_("medium",`Effect-like namespace property access (${b}.*)`)}if(E.getKind()===n.AwaitExpression){let k=E.getExpression();if(k.getKind()===n.CallExpression)return l(k)}return _("low","heuristic direct initializer match")},f=E=>{let w=(b=>b.getTypeNode?.()?.getText())(E);if(Vt(w))return _("high","explicit Effect-family type annotation");let k=E.getKind()===n.VariableDeclaration?E.getFirstAncestorByKind(n.VariableStatement)?.isExported()??!1:E.getKind()===n.PropertyDeclaration||E.getKind()===n.MethodDeclaration||E.getKind()===n.GetAccessor?E.getFirstAncestorByKind(n.ClassDeclaration)?.isExported()??!1:!1;if(E.getKind()===n.VariableDeclaration||E.getKind()===n.PropertyDeclaration){let b=E.getInitializer();if(b&&(b.getKind()===n.ArrowFunction||b.getKind()===n.FunctionExpression)){let F=b.getReturnTypeNode()?.getText();if(Vt(F))return _("high","function return type annotated as Effect-family");if(k&&w)return _("medium","explicit exported function API type signature")}if(b?.getKind()===n.CallExpression){let F=b.getTypeArguments().map(L=>L.getText()).join(" ");if(Vt(F))return _("high","call type arguments reference Effect-family types");if(k&&w)return _("medium","explicit exported call-based API type signature")}}if(E.getKind()===n.MethodDeclaration||E.getKind()===n.GetAccessor){let b=E.getReturnTypeNode?.()?.getText();if(Vt(b))return _("high","method/getter return type annotated as Effect-family");if(k&&w)return _("medium","explicit exported method/getter API type signature")}},u=E=>{let y=E.node,w=y.getKind();return w===n.CallExpression?!0:w===n.VariableDeclaration?y.getFirstAncestorByKind(n.VariableStatement)?.isExported()??!1:w===n.FunctionDeclaration||w===n.ClassDeclaration?y.isExported():w===n.PropertyDeclaration||w===n.MethodDeclaration||w===n.GetAccessor?y.getFirstAncestorByKind(n.ClassDeclaration)?.isExported()??!1:!0},p=E=>{for(let y of E){let w=y.getExpression();if(w&&re(w,a,i))return l(w)}return _("low","heuristic method return match")},g=e.getFilePath(),m=e.getDescendantsOfKind(n.VariableDeclaration);for(let E of m){let y=E.getInitializer();if(y?.getKind()===n.CallExpression&&fl(y.getExpression().getText())&&s.add(E.getName()),t.enableEffectWorkflow&&y?.getKind()===n.CallExpression){let w=y;(ml(w,c,g)||hl(w,c,g))&&s.add(E.getName())}}let S=e.getDescendantsOfKind(n.CallExpression);for(let E of S){let y=E.getExpression(),w=y.getText(),k=E.getStart(),b=!1;if(y.getKind()===n.Identifier)b=s.has(w);else if(y.getKind()===n.PropertyAccessExpression){let F=y,L=F.getExpression().getText(),A=F.getName();if(b=s.has(L)&&A==="run",t.enableEffectWorkflow&&!b&&A==="run"&&E.getArguments().length===1&&!w.includes("runPromise")&&!w.includes("runSync")&&!w.includes("runFork")&&!w.includes("runCallback")&&!o.has(k)){let K=Je(E)??`workflow-${r.length+1}`;r.push({name:K,node:E,type:"run",..._("low","workflow-like .run(...) shape heuristic")}),o.add(k);continue}}if(b&&!o.has(k)){let F=Je(E)??`workflow-${r.length+1}`;r.push({name:F,node:E,type:"run",..._("medium","workflow builder invocation")}),o.add(k);continue}if(t.enableEffectWorkflow&&y.getKind()===n.PropertyAccessExpression){let F=y,L=F.getExpression().getText(),A=F.getName();if((A==="execute"||A==="executeEncoded")&&s.has(L)&&!o.has(k)){let q=Je(E)??`${L}.${A}`;r.push({name:q,node:E,type:"workflow-execute",..._("medium","workflow/activity .execute entrypoint")}),o.add(k);continue}}if((w==="gen"||w.endsWith(".gen")&&ct(E,e,a,t.knownEffectInternalsRoot))&&!o.has(k)){let F=Je(E)??Po(E)??`program-${r.length+1}`;r.push({name:F,node:E,type:"generator",...w==="gen"?_("medium","unqualified gen(...) call"):_("high","Effect-like .gen(...) call")}),o.add(k)}let M=Je(E);if(w.includes("pipe")&&Nl(E,a)&&!o.has(k)&&y.getKind()!==n.PropertyAccessExpression&&M!==void 0&&!yl(E)&&(r.push({name:M,node:E,type:"pipe",..._("medium","exact pipe(...) call with Effect-like args")}),o.add(k)),(zn(E)||Cl(E))&&!o.has(k)){let F=Je(E)??`run-${r.length+1}`;r.push({name:F,node:E,type:"run",..._("high","recognized Runtime/Effect run* entrypoint")}),o.add(k)}}for(let E of m){if(!Sl(E)||xl(E))continue;let y=E.getInitializer();if(y){let w=E.getName(),k=rs(y);if(k&&zn(k)||y.getKind()===n.ObjectLiteralExpression)continue;re(y,a,i)&&!r.some(M=>M.name===w)&&r.push({name:w,node:E,type:"direct",...f(E)??l(y)})}}let h=e.getStatements();for(let E of h){if(E.getKind()!==n.ExpressionStatement)continue;let y=E.getExpression();if(y.getKind()!==n.CallExpression)continue;let w=y,k=w.getStart();if(o.has(k))continue;let b=w.getExpression(),M=b.getText();if(zn(w)){let F=`run-${r.length+1}`;r.push({name:F,node:w,type:"run",..._("high","recognized top-level run* entrypoint")}),o.add(k);continue}if(M.endsWith(".pipe")||M==="pipe"){let F=w.getArguments(),L=F[F.length-1];if(!L)continue;let A=L.getText();if(A.includes(".runMain")||A.includes(".runPromise")||A.includes(".runSync")||A.includes(".runFork")){let q;b.getKind()===n.PropertyAccessExpression&&(q=b.getExpression().getText().split(".").pop());let Z=q&&!r.some(J=>J.name===q)?q:`entrypoint-${r.length+1}`;r.push({name:Z,node:w,type:"run",..._("medium","top-level pipe(...).run* terminator pattern")}),o.add(k)}}if(b.getKind()===n.Identifier&&w.getArguments().length>=1){let F=b.getText();bl(w,e)&&!r.some(A=>A.name===F)&&(r.push({name:F,node:w,type:"run",..._("low","indirect run wrapper body heuristic")}),o.add(k))}}let N=["Data.TaggedError","Data.TaggedClass","Data.Class","Data.Error","Schema.Class","Schema.TaggedClass","Schema.TaggedError","Schema.TaggedRequest","Context.Tag","Context.Reference","Effect.Service"],x=e.getDescendantsOfKind(n.ClassDeclaration);for(let E of x){let y=E.getName();if(!y||r.some(b=>b.name===y))continue;E.getHeritageClauses().some(b=>{let M=b.getText();return N.some(F=>M.includes(F))})&&r.push({name:y,node:E,type:"class",..._("medium","known Data/Schema/Context class pattern")})}let C=x.filter(E=>{let y=E.getParent();return y===e||y?.getParent()===e});for(let E of C){let y=E.getName()??"Anonymous",w=E.getMembers(),k=w.filter(F=>F.getKind()===n.PropertyDeclaration);for(let F of k){let L=F.getInitializer();if(!L)continue;let A=F.getName(),K=`${y}.${A}`;r.some(q=>q.name===K)||re(L,a,i)&&r.push({name:K,node:F,type:"classProperty",...f(F)??l(L)})}let b=w.filter(F=>F.getKind()===n.MethodDeclaration);for(let F of b){let L=F.getName(),A=`${y}.${L}`;if(r.some(J=>J.name===A))continue;let K=F.getBody();if(!K)continue;let q=K.getDescendantsOfKind(n.ReturnStatement);q.some(J=>{let P=J.getExpression();return P?re(P,a,i):!1})&&r.push({name:A,node:F,type:"classMethod",...f(F)??p(q)})}let M=w.filter(F=>F.getKind()===n.GetAccessor);for(let F of M){let L=F.getName(),A=`${y}.${L}`;if(r.some(J=>J.name===A))continue;let K=F.getBody();if(!K)continue;let q=K.getDescendantsOfKind(n.ReturnStatement);q.some(J=>{let P=J.getExpression();return P?re(P,a,i):!1})&&r.push({name:A,node:F,type:"classMethod",...f(F)??p(q)})}}return r.filter(E=>{let y=t.minDiscoveryConfidence??"low",w=E.discoveryConfidence??"low";return!(os[w]<os[y]||t.onlyExportedPrograms&&!u(E))})},Nl=(e,t)=>e.getArguments().map(o=>o.getText()).some(o=>[...t].some(s=>o.includes(`${s}.`)));function ls(e){let{SyntaxKind:t}=I(),r=[],n=e.getProject().getTypeChecker(),o=e.getDescendantsOfKind(t.ClassDeclaration);for(let s of o){let a=s.getName();if(!a)continue;let i=s.getExtends();if(!i)continue;let c=i.getText();if(!c.includes("Context.Tag")&&!c.includes("Effect.Service"))continue;let d=i.getTypeArguments();if(d.length<2){let f=i.getExpression();f&&"getTypeArguments"in f&&typeof f.getTypeArguments=="function"&&(d=f.getTypeArguments())}if(d.length<2)continue;let l=d[1];if(l)try{let f=n.getTypeAtLocation(l),u=[],p=[];for(let h of f.getProperties()){let N=h.getName();if(N.startsWith("_")||N==="constructor")continue;n.getTypeOfSymbolAtLocation(h,l).getCallSignatures().length>0?u.push(N):p.push(N)}let g=s.getText(),m=g.includes("Equal.symbol")||g.includes("[Equal")||g.includes("equal("),S=g.includes("Hash.symbol")||g.includes("[Hash")||g.includes("hash(");r.push({tagId:a,methods:u,properties:p,...m?{hasCustomEquality:m}:{},...S?{hasCustomHash:S}:{}})}catch{}}for(let s of o){let a=s.getName();if(!a)continue;let i=s.getExtends();if(!i)continue;let c=i.getText();if(!c.includes("Data.Class")&&!c.includes("Data.TaggedClass")||r.some(u=>u.tagId===a))continue;let d=s.getText(),l=d.includes("Equal.symbol")||d.includes("[Equal")||d.includes("equal("),f=d.includes("Hash.symbol")||d.includes("[Hash")||d.includes("hash(");(l||f)&&r.push({tagId:a,methods:[],properties:[],hasCustomEquality:l,hasCustomHash:f})}return r}var X=require("effect");var G=require("effect");var Jt=(e,t,r,n,o,s)=>G.Effect.gen(function*(){let{SyntaxKind:a}=I(),i=e.getArguments(),c=e.getExpression(),d=c.getKind()===a.PropertyAccessExpression&&c.getName()==="pipe",l=d?c.getExpression():i[0],f=d?i:i.slice(1);if(!l)return[];let u=us(l),p=u.getSourceFile(),g=p.getFilePath(),m=t.getProject();if(m.getSourceFile(g)){let E=m.getSourceFile(g);E&&(p=E)}else{let E=m.addSourceFileAtPath(g);E&&(p=E)}let S=yield*D(u,p,p.getFilePath(),n,o,s),h=[];for(let E of f)if(E){let y=yield*D(E,t,r,n,o,s);h.push(y)}let N;try{let E=t.getProject().getTypeChecker(),y=[],w=Le(l,E);w&&y.push(w);for(let k of f)if(k){let b=Le(k,E);b&&y.push(b)}y.length>0&&(N=y)}catch{}let x={id:T(),type:"pipe",initial:S,transformations:h,...N?{typeFlow:N}:{}};return[{...x,displayName:j(x),semanticRole:U(x)}]}),D=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let{SyntaxKind:i}=I();if(e.getKind()===i.ArrowFunction||e.getKind()===i.FunctionExpression){let l=e.getBody();if(!l){let u={id:T(),type:"unknown",reason:"Function has no body",sourceCode:e.getText().slice(0,100),location:W(e,r,n.includeLocations??!1)};return s.unknownCount++,u}if(l.getKind()===i.Block){let g=l.getStatements().find(m=>m.getKind()===i.ReturnStatement)?.getExpression();if(g)return yield*D(g,t,r,n,o,s,a)}else return yield*D(l,t,r,n,o,s,a);let f={id:T(),type:"unknown",reason:"Function does not return an Effect expression",sourceCode:e.getText().slice(0,100),location:W(e,r,n.includeLocations??!1)};return s.unknownCount++,f}if(e.getKind()===i.CallExpression)return yield*Un(e,t,r,n,o,s,a);if(e.getKind()===i.PropertyAccessExpression){let d=e.getText();if(d==="Fiber.roots"||d==="Fiber.getCurrentFiber"){let l=d==="Fiber.roots"?"roots":"getCurrentFiber";return{id:T(),type:"fiber",operation:l,isScoped:!1,isDaemon:!1,location:W(e,r,n.includeLocations??!1)}}if(Ut(d,We(t),t)){let l={id:T(),type:"effect",callee:d,location:W(e,r,n.includeLocations??!1)};return s.totalEffects++,l}}if(e.getKind()===i.Identifier){let d={id:T(),type:"effect",callee:e.getText(),location:W(e,r,n.includeLocations??!1)};return s.totalEffects++,d}if(e.getKind()===i.ObjectLiteralExpression){let d=e,l=new Set(["onNone","onSome","onFailure","onSuccess","onLeft","onRight"]),f=d.getProperties(),u=[],p=!1;for(let g of f){if(g.getKind()!==i.PropertyAssignment)continue;let m=g,S=m.getName();if(!l.has(S))continue;p=!0;let h=m.getInitializer();if(h){let N=yield*D(h,t,r,n,o,s,a);u.push(N)}}if(p&&u.length>0)return u.length===1?u[0]:{id:T(),type:"parallel",callee:"match-handlers",mode:"sequential",children:u,location:W(e,r,n.includeLocations??!1)}}let c={id:T(),type:"unknown",reason:"Could not determine effect type",sourceCode:e.getText().slice(0,100),location:W(e,r,n.includeLocations??!1)};return s.unknownCount++,c}),Un=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let{SyntaxKind:i}=I(),c=e.getExpression().getText(),d=_n(c,t),l=/([A-Za-z_$][\w$]*)$/.exec(d)?.[1]??d,f=W(e,r,n.includeLocations??!1);if(c==="pipe"&&e.getArguments().length>=1){let P=yield*Jt(e,t,r,n,o,s);if(P.length>0&&P[0])return P[0]}if(d==="Context.pick"||d==="Context.omit"){let P={id:T(),type:"effect",callee:d,description:"context",location:f};return s.totalEffects++,{...P,displayName:j(P),semanticRole:U(P)}}if(d.startsWith("Layer."))return yield*kl(e,d,t,r,n,o,s);if(d.startsWith("Stream."))return yield*Il(e,d,t,r,n,o,s);if(d.startsWith("Channel."))return yield*Fl(e,d,t,r,n,o,s);if(c.startsWith("Sink."))return yield*$l(e,c,t,r,n,o,s);if(c.startsWith("Queue.")||c.startsWith("PubSub.")||c.startsWith("Deferred.")||c.startsWith("Semaphore.")||c.startsWith("Mailbox.")||c.startsWith("SubscriptionRef.")||c.startsWith("RateLimiter.")||c.startsWith("PartitionedSemaphore.")||c.startsWith("FiberHandle.")||c.startsWith("FiberSet.")||c.startsWith("FiberMap.")||c.startsWith("Cache.")||c.startsWith("ScopedCache.")||c.startsWith("RcRef.")||c.includes(".RcRef.")||c.startsWith("RcMap.")||c.includes(".RcMap.")||c.startsWith("Reloadable.")||c.includes(".Reloadable.")||c.includes("makeLatch")||c.includes("Latch."))return yield*Dl(e,c,t,r,n,o,s);if(Rn.some(P=>c.includes(P)||c.startsWith(P)))return yield*Pl(e,c,t,r,n,o,s);if(On.some(P=>c.includes(P)))return yield*Ml(e,c,t,r,n,o,s);if(c.includes(".all")||c==="all")return yield*Ol(e,c,t,r,n,o,s);if(c.includes(".race")||c==="race")return yield*Wl(e,c,t,r,n,o,s);if(In.some(P=>c.includes(P)))return yield*Kl(e,c,t,r,n,o,s);if(c.includes(".retry"))return yield*Bl(e,t,r,n,o,s);if(c.includes(".timeout"))return yield*ql(e,t,r,n,o,s);let p=new Set(["acquireRelease","acquireUseRelease","ensuring","addFinalizer","onExit","onError","parallelFinalizers","sequentialFinalizers","finalizersMask","using","withEarlyRelease"]),g=["acquireRelease","acquireUseRelease"],m=P=>p.has(P)||g.some(H=>P.startsWith(H));if(l==="pipe"&&e.getExpression().getKind()===i.PropertyAccessExpression){let H=e.getExpression().getExpression();if(H.getKind()===i.CallExpression){let ye=H,pe=ye.getExpression().getText(),ne=/([A-Za-z_$][\w$]*)$/.exec(pe)?.[1]??pe;if(m(ne))return yield*ds(ye,ne,t,r,n,o,s)}}if(m(l))return yield*ds(e,l,t,r,n,o,s);if(An.some(P=>c.includes(P)))return yield*jl(e,c,t,r,n,o,s);if(Fn.some(P=>c.includes(P)))return yield*_l(e,c,t,r,n,o,s);if(Wo(c))return yield*Gl(e,c,t,r,n,o,s);if(Bo(c))return zl(e,c,r,n);if(jo(c))return yield*Hl(e,c,t,r,n,o,s);if(zo(c))return Ul(e,c,r,n);if(Ho(c))return yield*Vl(e,c,r,n);s.totalEffects++;let S,N=["Effect.sync","Effect.promise","Effect.async","Effect.asyncEffect","Effect.tryPromise","Effect.suspend"].some(P=>c.includes(P))&&e.getArguments().length>0&&e.getArguments()[0],x;if(N){let P=e.getArguments()[0],{SyntaxKind:H}=I();if(P.getKind()===H.ArrowFunction||P.getKind()===H.FunctionExpression){let pe=P,ne=pe.getBody(),De=[];if(ne){if(ne.getKind()===H.Block){let Pe=ne;for(let Ue of Pe.getStatements())if(Ue.getKind()===H.ReturnStatement){let ve=Ue.getExpression();if(ve&&Ut(ve.getText(),We(t),t)){let Ve=yield*D(ve,t,r,n,o,s,void 0);De.push(Ve)}}else if(Ue.getKind()===H.ExpressionStatement){let ve=Ue.getExpression();if(ve.getKind()===H.CallExpression&&ct(ve,t,We(t),n.knownEffectInternalsRoot)){let Ve=yield*D(ve,t,r,n,o,s,void 0);De.push(Ve)}}}else if(Ut(ne.getText(),We(t),t)){let Pe=yield*D(ne,t,r,n,o,s,void 0);De.push(Pe)}}if(De.length>0&&(S=De),c.includes("Effect.async")||c.includes("Effect.asyncEffect")){let Pe=pe.getParameters()[0]?.getName?.()??"resume",Ue=0,ve=kt=>{if(kt.getKind()===H.CallExpression){let It=kt.getExpression();It.getKind()===H.Identifier&&It.getText()===Pe&&Ue++}kt.getChildren().forEach(ve)};ne&&ve(ne);let Ve=!1;if(ne?.getKind()===H.Block){let kt=ne;for(let bn of kt.getStatements())if(bn.getKind()===H.ReturnStatement){let It=bn.getExpression();if(It){let eo=It.getKind();if(eo===H.ArrowFunction||eo===H.FunctionExpression){Ve=!0;break}}}}else ne&&(ne.getKind()===H.ArrowFunction||ne.getKind()===H.FunctionExpression)&&(Ve=!0);x={resumeParamName:Pe,resumeCallCount:Ue,returnsCanceller:Ve}}}}let C=Ge(e),E=t.getProject().getTypeChecker(),y=Le(e,E),w=ot(e,E),k=vl(e,t),b,M=e.getExpression();if(M.getKind()===I().SyntaxKind.PropertyAccessExpression){let P=M,H=P.getExpression().getText(),ye=P.getName();if(a){let pe=a.get(H);pe&&(b={serviceId:pe,methodName:ye})}!b&&w?.length===1&&w[0]&&(b={serviceId:w[0].serviceId,methodName:ye})}let F;if(c==="Effect.provide"||c.startsWith("Effect.")&&c.includes(".provide")&&!c.includes("provideService")){let P=e.getArguments(),H=(P.length>=2?P[1]:P[0])?.getText()??"";/Runtime\.|defaultRuntime|\.runSync|\.runPromise|\.runFork|\.runCallback/.test(H)||/^\s*runtime\s*$|^\s*rt\s*$/i.test(H.trim())?F="runtime":H.includes("Layer.")?F="layer":F="context"}let L;c.endsWith(".sync")||c.endsWith(".succeed")||c.endsWith(".fail")||c.endsWith(".try")||c.endsWith(".suspend")?L="sync":c.endsWith(".promise")?L="promise":c.endsWith(".async")||c.endsWith(".asyncEffect")?L="async":c.endsWith(".never")?L="never":c.endsWith(".void")?L="void":c.endsWith(".fromNullable")?L="fromNullable":c.endsWith(".fn")?L="fn":c.endsWith(".fnUntraced")&&(L="fnUntraced");let A,K=["currentConcurrency","currentLogLevel","currentScheduler","currentTracerEnabled","currentLogSpan","currentLogAnnotations","currentContext","currentRequestBatching","currentMaxOpsBeforeYield","currentSupervisor","currentMetricLabels","interruptedCause","unhandledLogLevel"];for(let P of K)if(c.includes(P)){A=P;break}let q;if(L==="fn"||L==="fnUntraced"){let P=e.getArguments();if(P.length>0){let H=P[0].getText(),ye=/^["'`](.+?)["'`]$/.exec(H);ye&&(q=ye[1])}}let Z={id:T(),type:"effect",callee:c,description:k?"service-call":Go(c,We(t)),location:f,jsdocDescription:C,jsdocTags:it(e),typeSignature:y,requiredServices:w,serviceCall:k,serviceMethod:b,callbackBody:S,...x?{asyncCallback:x}:{},...F?{provideKind:F}:{},...L?{constructorKind:L}:{},...A?{fiberRefName:A}:{},...q?{tracedName:q}:{}};return{...Z,displayName:j(Z),semanticRole:U(Z)}}),vl=(e,t)=>{let{SyntaxKind:r}=I(),n=e.getExpression();if(n.getKind()!==r.PropertyAccessExpression)return;let o=n,s=o.getExpression(),a=o.getName(),i=s.getText(),c=i.split(".")[0]??i;if(!Kn.has(c))try{let d=s.getType(),l=d.getSymbol()??d.getAliasSymbol();if(!l)return;let f=l.getName();return!f||f==="__type"||f==="unknown"||f==="any"||Uo.has(f)?void 0:{serviceType:f,methodName:a,objectName:i}}catch{return}};function Gt(e){let t=e.getExpression().getText(),r=e.getSourceFile(),n=_n(t,r);return n.startsWith("Layer.")||n.startsWith("Effect.")||t==="pipe"||t.endsWith(".pipe")}function wl(e,t,r){let{SyntaxKind:n}=I(),o=e.getSourceFile(),s=o.getProject(),a=o.getFilePath(),c=t.getImportDeclaration().getModuleSpecifierValue();if(!c?.startsWith("."))return;let d=at(s,a,c);if(!d){let m=$t(a,c);if(m){let S=s.addSourceFileAtPath(m);S&&(d=S)}}if(!d)return;d=s.getSourceFile(d.getFilePath())??d;let l=m=>{if(m.getKind()===n.VariableDeclaration){let h=m.getInitializer();if(h?.getKind()===n.CallExpression&&r(h))return h}if(m.getKind()===n.VariableStatement){let S=m.getDeclarationList();for(let h of S.getDeclarations()){let N=h.getInitializer();if(N?.getKind()===n.CallExpression&&r(N))return N}}},f=t.getName(),u=d.getExportedDeclarations(),p=u.get(f)??[];for(let m of p){let S=l(m);if(S)return S}let g=t.getTargetName?.();if(g&&g!==f)for(let m of u.get(g)??[]){let S=l(m);if(S)return S}for(let[,m]of u)for(let S of m){let h=l(S);if(h)return h}}function Tl(e,t,r){let{SyntaxKind:n}=I(),o=e.getSourceFile(),s=o.getProject(),a=o.getFilePath(),i=t.getModuleSpecifierValue();if(!i?.startsWith("."))return;let c=at(s,a,i);if(!c){let l=$t(a,i);if(l){let f=s.addSourceFileAtPath(l);f&&(c=f)}}if(!c)return;c=s.getSourceFile(c.getFilePath())??c;let d=l=>{if(l.getKind()===n.VariableDeclaration){let u=l.getInitializer();if(u?.getKind()===n.CallExpression&&r(u))return u}if(l.getKind()===n.VariableStatement){let f=l.getDeclarationList();for(let u of f.getDeclarations()){let p=u.getInitializer();if(p?.getKind()===n.CallExpression&&r(p))return p}}};for(let l of c.getDefaultExportSymbol()?.getDeclarations()??[]){let f=d(l);if(f)return f}for(let l of c.getExportedDeclarations().get("default")??[]){let f=d(l);if(f)return f}}function us(e){let{SyntaxKind:t}=I();if(e.getKind()!==t.Identifier)return e;let r=e,n=r.getText(),o=r.getSymbol(),s=o?.getValueDeclaration(),a=s?.getKind()===t.ImportSpecifier?s:void 0;if(!a&&o){let i=o.getDeclarations().find(c=>c.getKind()===t.ImportSpecifier);i&&(a=i)}if(!a){let i=r.getSourceFile();for(let c of i.getImportDeclarations()){if(c.getDefaultImport()?.getText()===n){let f=Tl(r,c,Gt);if(f)return f}let l=c.getNamedImports().find(f=>f.getName()===n||f.getAliasNode()?.getText()===n);if(l){a=l;break}}}if(a){let i=wl(r,a,Gt);if(i)return i;o=o?.getImmediatelyAliasedSymbol()??o?.getAliasedSymbol(),s=o?.getValueDeclaration()}if(s?.getKind()===t.ExportSpecifier&&(o=o?.getImmediatelyAliasedSymbol()??o?.getAliasedSymbol(),s=o?.getValueDeclaration()),o&&s?.getKind()!==t.VariableDeclaration){for(let i of o.getDeclarations())if(i.getKind()===t.VariableDeclaration){let d=i.getInitializer();if(d?.getKind()===t.CallExpression&&Gt(d))return d}}if(s?.getKind()===t.VariableDeclaration){let c=s.getInitializer();if(c?.getKind()===t.CallExpression&&Gt(c))return c}return e}var kl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=[],{SyntaxKind:d}=I();if(i.length>0&&i[0]){let y=i[0];if(t.includes("mergeAll")&&y.getKind()===d.ArrayLiteralExpression){let k=y.getElements();for(let b of k){let M=yield*D(b,r,n,o,s,a);c.push(M)}}else for(let k of i){if(!k)continue;let b=us(k),M=b.getSourceFile(),F=yield*D(b,M,M.getFilePath(),o,s,a);c.push(F)}}let l=t.includes("merge")||t.includes("mergeAll"),f;t.includes("fresh")?f="fresh":t.includes("memoize")?f="memoized":t.includes("scoped")?f="scoped":f="default";let u=[],p=y=>{if(y.getKind()===d.Identifier)return y.getText();if(y.getKind()===d.PropertyAccessExpression){let w=y,k=w.getExpression();return k.getKind()===d.Identifier?k.getText():w.getText().split(".")[0]}};if((t.includes("succeed")||t.includes("sync")||t.includes("effect")||t.includes("scoped")||t.includes("scopedDiscard")||t.includes("effectDiscard"))&&i.length>0&&i[0]){let y=p(i[0]);y&&u.push(y)}let g=t.includes("provide")&&!t.includes("provideService"),m=new Set;if(g&&i.length>=1&&i[0]){let y=p(i[0]);y&&m.add(y)}if(g&&i.length>=2&&i[1]){let y=p(i[1]);y&&m.add(y);let w=p(i[0]);w&&u.push(w)}if(t.includes("provideService")&&i.length>0&&i[0]){let y=p(i[0]);y&&u.push(y)}let S=y=>{if(y.type==="effect"){let k=y;for(let M of k.requiredServices??[])m.add(M.serviceId);let b=k.callee??"";(/^[A-Z][A-Za-z0-9_]*(Service|Tag)$/.test(b)||b.endsWith(".Tag"))&&m.add(b)}else if(y.type==="layer"){let k=y;for(let b of k.requires??[])m.add(b)}G.Option.getOrElse(v(y),()=>[]).forEach(S)};if(c.forEach(S),m.size===0)try{let y=jt(e);y?.requiredType&&y.requiredType!=="never"&&Yo(y.requiredType).forEach(k=>m.add(k))}catch{}let h=t.replace(/^Layer\./,"").replace(/^[a-zA-Z]+\./,""),x=new Set(["catchAll","catchAllCause","orDie","orElse","retry","tap","mapError","mapErrorCause","build","launch","toRuntime","passthrough","project","flatMap","flatten","annotateLogs","annotateSpans","setConfigProvider","setClock","setTracer","locally","withSpan","withLogger","withTracer","withClock","mock","suspend","unwrapEffect","unwrapScoped"]).has(h)?`Layer.${h}`:void 0,C=t.includes("MemoMap")||c.some(y=>y.type==="layer"&&y.isMemoMap===!0),E={id:T(),type:"layer",name:x,operations:c,isMerged:l,provides:u.length>0?u:void 0,requires:m.size>0?Array.from(m).sort():void 0,lifecycle:f,...C?{isMemoMap:!0}:{},location:W(e,n,o.includeLocations??!1)};return{...E,displayName:j(E),semanticRole:U(E)}});function Il(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),c;i.length>0&&i[0]?c=yield*D(i[0],r,n,o,s,a):c={id:T(),type:"unknown",reason:"Stream source not determined"};let d=t.replace(/^Stream\./,"")||"unknown",l;t.startsWith("Stream.")&&(d==="fromIterable"||d==="fromChunk"||d==="fromChunkQueue"?l="fromIterable":d==="fromArray"?l="fromArray":d==="fromQueue"||d==="fromChunkQueue"?l="fromQueue":d==="fromPubSub"||d==="fromChunkPubSub"?l="fromPubSub":d==="fromEffect"||d==="unwrap"||d==="unwrapScoped"?l="fromEffect":d==="fromAsyncIterable"?l="fromAsyncIterable":d==="fromReadableStream"||d==="fromReadableStreamByob"?l="fromReadableStream":d==="fromEventListener"?l="fromEventListener":d==="fromSchedule"?l="fromSchedule":d==="range"?l="range":d==="tick"?l="tick":d==="iterate"||d==="iterateEffect"?l="iterate":d==="unfold"||d==="unfoldEffect"||d==="unfoldChunk"||d==="unfoldChunkEffect"?l="unfold":d==="make"?l="make":d==="empty"?l="empty":d==="never"?l="never":d==="succeed"||d==="sync"?l="succeed":(d==="fail"||d==="failSync"||d==="failCause"||d==="failCauseSync")&&(l="fail"));let f=b=>l!==void 0?"constructor":b.startsWith("run")?"sink":b==="toQueue"||b==="toPubSub"||b==="toReadableStream"||b==="toAsyncIterable"||b==="toChannel"?"conversion":b.includes("pipeThroughChannel")||b.includes("Channel")||b.includes("channel")||b.includes("duplex")?"channel":b.includes("grouped")||b.includes("sliding")||b.includes("groupBy")||b.includes("aggregate")||b.includes("window")?"windowing":b.includes("broadcast")||b==="share"?"broadcasting":b.includes("haltAfter")||b.includes("haltWhen")||b.includes("interruptAfter")?"halting":b.includes("decodeText")||b.includes("encodeText")||b.includes("splitLines")?"text":b.includes("merge")||b==="concat"||b.includes("interleave")||b.includes("zip")?"merge":b.includes("buffer")||b.includes("debounce")||b.includes("throttle")?"backpressure":b.includes("catchAll")||b.includes("catchTag")||b.includes("orElse")||b.includes("orDie")||b.includes("retry")?"error":b.includes("filter")||b.includes("take")||b.includes("drop")||b.includes("head")||b==="first"||b==="last"?"filter":b.includes("acquireRelease")||b.includes("scoped")||b.includes("ensuring")||b.includes("onDone")||b.includes("onError")?"resource":b.includes("provide")||b.includes("withSpan")||b.includes("annotate")?"context":b.includes("map")||b.includes("tap")||b.includes("flatMap")||b.includes("mapChunk")||b.includes("scan")||b.includes("transduce")?"transform":"other",u=d.includes("Effect")||d.startsWith("run")||d.includes("tap"),p=f(d),g=p==="filter"?"fewer":p==="merge"||p==="broadcasting"?"more":p==="halting"||p==="sink"||p==="windowing"?"fewer":"unknown",m,S;(d==="grouped"||d==="groupedWithin"||d.includes("sliding")||d.includes("Sliding"))&&i.length>0&&i[0]&&(m=Rt(i[0]),(d.includes("sliding")||d.includes("Sliding"))&&i.length>1&&i[1]&&(S=Rt(i[1])));let N={operation:d,isEffectful:u,estimatedCardinality:g,category:p,...m!==void 0?{windowSize:m}:{},...S!==void 0?{stride:S}:{}},x;d.startsWith("run")&&(x=d);let C;d.includes("buffer")?C="buffer":d.includes("drop")||d.includes("Drop")?C="drop":(d.includes("sliding")||d.includes("Sliding"))&&(C="sliding");let E=c,y=[N],w=l;if(c.type==="stream"){let b=c;y=[...b.pipeline,N],E=b.source,!w&&b.constructorType&&(w=b.constructorType),!x&&b.sink&&(x=b.sink),!C&&b.backpressureStrategy&&(C=b.backpressureStrategy)}let k={id:T(),type:"stream",source:E,pipeline:y,sink:x,backpressureStrategy:C,constructorType:w,location:W(e,n,o.includeLocations??!1)};return{...k,displayName:j(k),semanticRole:U(k)}})}function Al(e){return e==="fromReadableStream"||e==="fromWritableStream"||e==="fromDuplexStream"||e==="make"||e==="succeed"||e==="fail"||e==="empty"||e==="never"?"constructor":e.includes("map")||e.includes("flatMap")||e.includes("filter")||e.includes("concat")||e.includes("zip")?"transform":e.includes("pipe")||e==="pipeTo"||e==="pipeThrough"?"pipe":"other"}function Fl(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),c;i.length>0&&i[0]&&(c=yield*D(i[0],r,n,o,s,a));let d=t.replace(/^Channel\./,"")||"unknown",l=[{operation:d,category:Al(d)}];if(c?.type==="channel"){let u=c;l.unshift(...u.pipeline),c=u.source}let f={id:T(),type:"channel",source:c,pipeline:l,location:W(e,n,o.includeLocations??!1)};return{...f,displayName:j(f),semanticRole:U(f)}})}function Rl(e){return e==="forEach"||e==="forEachWhile"||e==="run"||e==="runDrain"||e==="runFor"||e==="make"||e==="fromEffect"||e==="fromQueue"?"constructor":e.includes("map")||e.includes("contramap")||e.includes("filter")||e.includes("zip")?"transform":"other"}function $l(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),c;i.length>0&&i[0]&&(c=yield*D(i[0],r,n,o,s,a));let d=t.replace(/^Sink\./,"")||"unknown",l=[{operation:d,category:Rl(d)}];if(c?.type==="sink"){let u=c;l.unshift(...u.pipeline),c=u.source}let f={id:T(),type:"sink",source:c,pipeline:l,location:W(e,n,o.includeLocations??!1)};return{...f,displayName:j(f),semanticRole:U(f)}})}function Dl(e,t,r,n,o,s,a){let{SyntaxKind:i}=I(),c="queue",d="create",l,f,u;t.startsWith("Queue.")?(c="queue",t.includes("bounded")?l="bounded":t.includes("unbounded")?l="unbounded":t.includes("sliding")?l="sliding":t.includes("dropping")&&(l="dropping"),t.includes("offer")||t.includes("offerAll")?d="offer":t.includes("take")||t.includes("takeAll")||t.includes("poll")?d="take":d="create"):t.startsWith("PubSub.")?(c="pubsub",t.includes("bounded")?l="bounded":t.includes("unbounded")&&(l="unbounded"),t.includes("publish")?d="publish":t.includes("subscribe")?d="subscribe":d="create"):t.startsWith("Deferred.")?(c="deferred",t.includes("succeed")?d="succeed":t.includes("fail")?d="fail":t.includes("await")?d="await":d="create"):t.startsWith("Semaphore.")?(c="semaphore",t.includes("withPermit")?d="withPermit":t.includes("take")?d="take":t.includes("release")?d="release":t.includes("available")?d="available":d="create"):t.startsWith("Mailbox.")?(c="mailbox",t.includes("offer")?d="offer":t.includes("takeAll")?d="takeAll":t.includes("take")?d="take":t.includes("end")?d="end":t.includes("toStream")?d="toStream":d="create"):t.startsWith("SubscriptionRef.")?(c="subscriptionRef",t.includes("changes")?d="changes":t.includes("get")?d="get":t.includes("set")?d="set":t.includes("update")?d="update":d="create"):t.includes("makeLatch")||t.includes("Latch.")?(c="latch",t.includes("open")?d="open":t.includes("close")?d="close":t.includes("await")||t.includes("whenOpen")?d="await":d="create"):t.startsWith("FiberHandle.")?(c="fiberHandle",t.includes("run")?d="run":t.includes("await")?d="await":d="create"):t.startsWith("FiberSet.")?(c="fiberSet",t.includes("run")?d="run":t.includes("join")?d="await":d="create"):t.startsWith("FiberMap.")?(c="fiberMap",t.includes("run")?d="run":t.includes("join")?d="await":d="create"):t.startsWith("RateLimiter.")?(c="rateLimiter",t.includes("withCost")?d="withPermit":d="create"):t.startsWith("ScopedCache.")?(c="scopedCache",t.includes("make")||t.includes("Make")?d="create":t.includes("get")&&!t.includes("getOrElse")||t.includes("getOrElse")?d="get":t.includes("set")||t.includes("Set")?d="set":t.includes("invalidate")?d="invalidate":t.includes("contains")?d="contains":d="create"):t.startsWith("Cache.")?(c="cache",t.includes("make")||t.includes("Make")?d="create":t.includes("get")&&!t.includes("getOrElse")||t.includes("getOrElse")?d="get":t.includes("set")||t.includes("Set")?d="set":t.includes("invalidate")?d="invalidate":t.includes("contains")?d="contains":d="create"):t.startsWith("Reloadable.")||t.includes(".Reloadable.")?(c="reloadable",t.includes("make")||t.includes("Make")?d="create":t.includes("get")&&!t.includes("reload")?d="get":t.includes("reload")?d="reload":d="create"):t.startsWith("RcMap.")||t.includes(".RcMap.")?(c="rcMap",t.includes("make")||t.includes("Make")?d="create":t.includes("get")?d="get":t.includes("set")||t.includes("Set")?d="set":t.includes("update")?d="update":d="create"):(t.startsWith("RcRef.")||t.includes(".RcRef."))&&(c="rcRef",t.includes("make")||t.includes("Make")?d="create":t.includes("get")?d="get":t.includes("set")||t.includes("Set")?d="set":t.includes("update")?d="update":d="create");let p=e.getArguments();if(p.length>0&&l==="bounded"){let S=p[0];S?.getKind()===i.NumericLiteral&&(f=Number.parseInt(S.getText(),10))}c==="semaphore"&&(d==="take"||d==="release")&&p.length>0&&p[0]&&(u=Rt(p[0]));let g;if(c==="fiberHandle"&&d==="run")for(let S of p){let h=S.getText();h.includes("onlyIfMissing")&&(g={onlyIfMissing:h.includes("true")})}if(c==="mailbox"&&d==="toStream"||c==="subscriptionRef"&&d==="changes"){let S=c==="mailbox"?"fromMailbox":"fromSubscriptionRef",h={id:T(),type:"concurrency-primitive",primitive:c,operation:d,location:W(e,n,o.includeLocations??!1)},N={id:T(),type:"stream",source:{...h,displayName:j(h),semanticRole:U(h)},pipeline:[],constructorType:S,location:W(e,n,o.includeLocations??!1)};return G.Effect.succeed({...N,displayName:j(N),semanticRole:U(N)})}let m={id:T(),type:"concurrency-primitive",primitive:c,operation:d,strategy:l,capacity:f,...u!==void 0?{permitCount:u}:{},...g?{lifecycleOptions:g}:{},location:W(e,n,o.includeLocations??!1)};return G.Effect.succeed({...m,displayName:j(m),semanticRole:U(m)})}function Pl(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),c="fork",d=!1,l=!1,f;t.startsWith("Fiber.")?t.includes("awaitAll")?c="awaitAll":t.includes("join")?c="join":t.includes("await")?c="await":t.includes("interruptFork")?c="interruptFork":t.includes("interrupt")?c="interrupt":t.includes("poll")?c="poll":t.includes("status")?c="status":t.includes("all")?c="all":t.includes("children")?c="children":t.includes("dump")?c="dump":t.includes("scoped")?(c="scoped",d=!0):t.includes("inheritAll")?c="inheritAll":t.includes("mapFiber")?c="mapFiber":t.includes("mapEffect")?c="mapEffect":t.includes("map")?c="map":t.includes("roots")?c="roots":t.includes("getCurrentFiber")&&(c="getCurrentFiber"):t.includes("forkWithErrorHandler")?c="forkWithErrorHandler":t.includes("forkAll")?c="forkAll":t.includes("forkIn")?c="forkIn":t.includes("fork")&&(t.includes("forkDaemon")?(c="forkDaemon",l=!0):t.includes("forkScoped")?(c="forkScoped",d=!0):c="fork"),(c==="fork"||c==="forkScoped"||c==="forkDaemon"||c==="forkAll"||c==="forkIn"||c==="forkWithErrorHandler")&&i.length>0&&i[0]&&(f=yield*D(i[0],r,n,o,s,a));let u;if(d)u="safe";else{let g=e.getParent();for(;g;){let m=g.getText?.();if(m&&(m.includes("Effect.scoped")||m.includes("Scope.make"))){u="safe";break}if(g=g.getParent(),g&&g===r)break}}let p={id:T(),type:"fiber",operation:c,fiberSource:f,isScoped:d,isDaemon:l,...u?{scopeContext:u}:{},location:W(e,n,o.includeLocations??!1)};return{...p,displayName:j(p),semanticRole:U(p)}})}function Ml(e,t,r,n,o,s,a){return G.Effect.gen(function*(){let i=e.getArguments(),{SyntaxKind:c}=I(),d;t.includes("uninterruptibleMask")?d="uninterruptibleMask":t.includes("interruptibleMask")?d="interruptibleMask":t.includes("uninterruptible")?d="uninterruptible":t.includes("interruptible")?d="interruptible":t.includes("onInterrupt")?d="onInterrupt":t.includes("disconnect")?d="disconnect":t.includes("allowInterrupt")?d="allowInterrupt":t.includes("interruptWith")?d="interruptWith":d="interrupt";let l,f,u=e.getExpression();u.getKind()===c.PropertyAccessExpression?(l=yield*D(u.getExpression(),r,n,o,s,a),i.length>0&&i[0]&&(f=yield*D(i[0],r,n,o,s,a))):i.length>0&&i[0]&&(l=yield*D(i[0],r,n,o,s,a),i.length>1&&i[1]&&(f=yield*D(i[1],r,n,o,s,a))),a.interruptionCount++;let p={id:T(),type:"interruption",interruptionType:d,source:l,handler:f,location:W(e,n,o.includeLocations??!1)};return{...p,displayName:j(p),semanticRole:U(p)}})}function Ll(e){let{SyntaxKind:t}=I(),r,n,o;for(let s of e.getProperties()){if(s.getKind()!==t.PropertyAssignment)continue;let a=s.getNameNode().getText(),i=s.getInitializer();if(!i)continue;let c=i.getText();if(a==="concurrency")if(c==='"unbounded"'||c==="'unbounded'")r="unbounded";else if(c==='"sequential"'||c==="'sequential'")r="sequential";else if(c==='"inherit"'||c==="'inherit'")r="sequential";else{let d=Number.parseInt(c,10);!Number.isNaN(d)&&d>=0&&(r=d)}else a==="batching"&&(c==="true"||c==="false")?n=c==="true":a==="discard"&&(c==="true"||c==="false")&&(o=c==="true")}return{concurrency:r,batching:n,discard:o}}var Ol=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=[],{SyntaxKind:d}=I();if(i.length>0&&i[0]){let S=i[0];if(S.getKind()===d.ArrayLiteralExpression){let h=S.getElements();for(let N of h){let x=yield*D(N,r,n,o,s,a);c.push(x)}}else if(S.getKind()===d.ObjectLiteralExpression){let h=S.getProperties();for(let N of h)if(N.getKind()===d.PropertyAssignment){let x=N.getInitializer();if(x){let C=yield*D(x,r,n,o,s,a);c.push(C)}}}}let l,f,u;if(i.length>1&&i[1]?.getKind()===d.ObjectLiteralExpression){let S=Ll(i[1]);l=S.concurrency,f=S.batching,u=S.discard}let p=t.includes("Par")?"parallel":"sequential";l===void 0&&(l=p==="parallel"?"unbounded":"sequential"),a.parallelCount++;let g=c.map(S=>j(S)),m={id:T(),type:"parallel",callee:t,mode:p,children:c,concurrency:l,batching:f,discard:u,branchLabels:g,location:W(e,n,o.includeLocations??!1)};return{...m,displayName:j(m),semanticRole:U(m)}}),Wl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=[];for(let f of i)if(f){let u=yield*D(f,r,n,o,s,a);c.push(u)}a.raceCount++;let d=c.map(f=>j(f)),l={id:T(),type:"race",callee:t,children:c,raceLabels:d,location:W(e,n,o.includeLocations??!1)};return{...l,displayName:j(l),semanticRole:U(l)}}),Kl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c;t.includes("catchAllCause")?c="catchAllCause":t.includes("catchSomeCause")?c="catchSomeCause":t.includes("catchSomeDefect")?c="catchSomeDefect":t.includes("catchAllDefect")?c="catchAllDefect":t.includes("catchTags")?c="catchTags":t.includes("catchIf")?c="catchIf":t.includes("catchSome")?c="catchSome":t.includes("catchTag")?c="catchTag":t.includes("catchAll")?c="catchAll":t.includes("orElseFail")?c="orElseFail":t.includes("orElseSucceed")?c="orElseSucceed":t.includes("orElse")?c="orElse":t.includes("orDieWith")?c="orDieWith":t.includes("orDie")?c="orDie":t.includes("flip")?c="flip":t.includes("mapErrorCause")?c="mapErrorCause":t.includes("mapBoth")?c="mapBoth":t.includes("mapError")?c="mapError":t.includes("unsandbox")?c="unsandbox":t.includes("sandbox")?c="sandbox":t.includes("parallelErrors")?c="parallelErrors":t.includes("filterOrDieMessage")?c="filterOrDieMessage":t.includes("filterOrDie")?c="filterOrDie":t.includes("filterOrElse")?c="filterOrElse":t.includes("filterOrFail")?c="filterOrFail":t.includes("matchCauseEffect")?c="matchCauseEffect":t.includes("matchCause")?c="matchCause":t.includes("matchEffect")?c="matchEffect":t.includes("match")?c="match":t.includes("firstSuccessOf")?c="firstSuccessOf":t.includes("ignoreLogged")?c="ignoreLogged":t.includes("ignore")?c="ignore":t.includes("eventually")?c="eventually":c="catchAll";let d,l,f=e.getExpression();if(f.getKind()===I().SyntaxKind.PropertyAccessExpression){let S=f.getExpression();d=yield*D(S,r,n,o,s,a),i.length>0&&i[0]&&(l=yield*D(i[0],r,n,o,s,a))}else i.length>0&&i[0]?d=yield*D(i[0],r,n,o,s,a):d={id:T(),type:"unknown",reason:"Could not determine source effect"},i.length>1&&i[1]&&(l=yield*D(i[1],r,n,o,s,a));a.errorHandlerCount++;let u,p;if(c==="catchTag"){let m=i[0];m?.getKind()===I().SyntaxKind.StringLiteral&&(u=m.getLiteralValue())}else if(c==="catchTags"){let m=[...i].find(S=>S?.getKind()===I().SyntaxKind.ObjectLiteralExpression);m&&(p=m.getProperties().filter(h=>h.getKind()===I().SyntaxKind.PropertyAssignment||h.getKind()===I().SyntaxKind.MethodDeclaration).map(h=>(h.getKind()===I().SyntaxKind.PropertyAssignment,h.getName())))}let g={id:T(),type:"error-handler",handlerType:c,source:d,handler:l,errorTag:u,errorTags:p,errorEdgeLabel:u?`on ${u}`:p&&p.length>0?`on ${p.join(" | ")}`:"on error",location:W(e,n,o.includeLocations??!1)};return{...g,displayName:j(g),semanticRole:U(g)}}),Bl=(e,t,r,n,o,s)=>G.Effect.gen(function*(){let a=e.getArguments(),i,c,d,l,f=e.getExpression();if(f.getKind()===I().SyntaxKind.PropertyAccessExpression){let m=f.getExpression();i=yield*D(m,t,r,n,o,s),a.length>0&&a[0]&&(c=a[0].getText(),d=yield*D(a[0],t,r,n,o,s)),l=f.getText().includes("retryOrElse")}else a.length>0&&a[0]?i=yield*D(a[0],t,r,n,o,s):i={id:T(),type:"unknown",reason:"Could not determine source effect"},a.length>1&&a[1]&&(c=a[1].getText(),d=yield*D(a[1],t,r,n,o,s)),l=a.length>2;s.retryCount++;let u=c?fs(c):void 0,p={id:T(),type:"retry",source:i,schedule:c,...d!==void 0?{scheduleNode:d}:{},hasFallback:l,scheduleInfo:u,retryEdgeLabel:c?`retry: ${c}`:"retry",location:W(e,r,n.includeLocations??!1)};return{...p,displayName:j(p),semanticRole:U(p)}});function fs(e){let t=e.replace(/\s+/g," "),r="custom";t.includes("Schedule.exponential")||t.includes("exponential(")?r="exponential":t.includes("Schedule.fibonacci")||t.includes("fibonacci(")?r="fibonacci":t.includes("Schedule.spaced")||t.includes("spaced(")?r="spaced":t.includes("Schedule.fixed")||t.includes("fixed(")?r="fixed":t.includes("Schedule.linear")||t.includes("linear(")?r="linear":t.includes("Schedule.cron")||t.includes("cron(")?r="cron":t.includes("Schedule.windowed")||t.includes("windowed(")?r="windowed":t.includes("Schedule.duration")||t.includes("duration(")?r="duration":t.includes("Schedule.elapsed")||t.includes("elapsed(")?r="elapsed":t.includes("Schedule.delays")||t.includes("delays(")?r="delays":t.includes("Schedule.once")||t.includes("once(")?r="once":t.includes("Schedule.stop")||t.includes("stop(")?r="stop":(t.includes("Schedule.count")||t.includes("count("))&&(r="count");let n,o=/recurs\s*\(\s*(\d+)\s*\)/.exec(t);o&&(n=Number.parseInt(o[1],10));let s=/recurUpTo\s*\(\s*(\d+)\s*\)/.exec(t);s?n=Number.parseInt(s[1],10):(t.includes("forever")||t.includes("Schedule.forever"))&&(n="unlimited");let a=t.includes("jittered")||t.includes("Schedule.jittered"),i=[];return t.includes("whileInput")&&i.push("whileInput"),t.includes("whileOutput")&&i.push("whileOutput"),t.includes("untilInput")&&i.push("untilInput"),t.includes("untilOutput")&&i.push("untilOutput"),t.includes("recurUntil")&&i.push("recurUntil"),t.includes("recurWhile")&&i.push("recurWhile"),t.includes("andThen")&&i.push("andThen"),t.includes("intersect")&&i.push("intersect"),t.includes("union")&&i.push("union"),t.includes("compose")&&i.push("compose"),t.includes("zipWith")&&i.push("zipWith"),t.includes("addDelay")&&i.push("addDelay"),t.includes("modifyDelay")&&i.push("modifyDelay"),t.includes("check")&&i.push("check"),t.includes("resetAfter")&&i.push("resetAfter"),t.includes("resetWhen")&&i.push("resetWhen"),t.includes("ensure")&&i.push("ensure"),t.includes("driver")&&i.push("driver"),t.includes("mapInput")&&i.push("mapInput"),{baseStrategy:r,maxRetries:n,jittered:a,conditions:i}}var ql=(e,t,r,n,o,s)=>G.Effect.gen(function*(){let a=e.getArguments(),i,c,d,l=e.getExpression();if(l.getKind()===I().SyntaxKind.PropertyAccessExpression){let p=l.getExpression();i=yield*D(p,t,r,n,o,s),a.length>0&&a[0]&&(c=_t(a[0]));let g=_t(l);d=g.includes("timeoutFail")||g.includes("timeoutTo")}else a.length>0&&a[0]?i=yield*D(a[0],t,r,n,o,s):i={id:T(),type:"unknown",reason:"Could not determine source effect"},a.length>1&&a[1]&&(c=_t(a[1])),d=a.length>2;s.timeoutCount++;let f={id:T(),type:"timeout",source:i,duration:c,hasFallback:d,location:W(e,r,n.includeLocations??!1)};return{...f,displayName:j(f),semanticRole:U(f)}}),ds=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=/([A-Za-z_$][\w$]*)$/.exec(t)?.[1]??t,d,l,f;if(c.startsWith("acquireUseRelease"))i.length>=3&&i[0]&&i[2]?(d=yield*D(i[0],r,n,o,s,a),l=yield*D(i[2],r,n,o,s,a),i[1]&&(f=yield*D(i[1],r,n,o,s,a))):(d={id:T(),type:"unknown",reason:"Missing acquire"},l={id:T(),type:"unknown",reason:"Missing release"});else if(c.startsWith("acquireRelease"))i.length>=2&&i[0]&&i[1]?(d=yield*D(i[0],r,n,o,s,a),l=yield*D(i[1],r,n,o,s,a)):(d={id:T(),type:"unknown",reason:"Missing acquire"},l={id:T(),type:"unknown",reason:"Missing release"});else if(c==="addFinalizer"||c==="onExit"||c==="onError"||c==="parallelFinalizers"||c==="sequentialFinalizers"||c==="finalizersMask"||c==="using"||c==="withEarlyRelease"){let p=e.getExpression();p.getKind()===I().SyntaxKind.PropertyAccessExpression?d=yield*D(p.getExpression(),r,n,o,s,a):d={id:T(),type:"unknown",reason:"Scoped acquire"},l=i.length>0&&i[0]?yield*D(i[0],r,n,o,s,a):{id:T(),type:"unknown",reason:"Missing finalizer"}}else if(c==="ensuring"){let p=e.getExpression();if(p.getKind()===I().SyntaxKind.PropertyAccessExpression){let m=p.getExpression();d=yield*D(m,r,n,o,s,a),l=i.length>0&&i[0]?yield*D(i[0],r,n,o,s,a):{id:T(),type:"unknown",reason:"Missing cleanup"}}else d=i.length>0&&i[0]?yield*D(i[0],r,n,o,s,a):{id:T(),type:"unknown",reason:"Missing effect"},l=i.length>1&&i[1]?yield*D(i[1],r,n,o,s,a):{id:T(),type:"unknown",reason:"Missing cleanup"}}else d={id:T(),type:"unknown",reason:"Unknown resource pattern"},l={id:T(),type:"unknown",reason:"Unknown resource pattern"};a.resourceCount++;let u={id:T(),type:"resource",acquire:d,release:l,use:f,location:W(e,n,o.includeLocations??!1)};return{...u,displayName:j(u),semanticRole:U(u)}}),jl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c;t.includes(".if")||t==="if"?c="if":t.includes("whenEffect")?c="whenEffect":t.includes("whenFiberRef")?c="whenFiberRef":t.includes("whenRef")?c="whenRef":t.includes(".when")||t==="when"?c="when":t.includes("unlessEffect")?c="unlessEffect":t.includes(".unless")||t==="unless"?c="unless":t.includes(".option")||t==="option"?c="option":t.includes(".either")||t==="either"?c="either":t.includes(".exit")||t==="exit"?c="exit":t.includes("liftPredicate")?c="liftPredicate":c="unless";let d="<dynamic>",l,f;if(c==="if"){if(i.length>0&&i[0]&&(d=i[0].getText()),i.length>1&&i[1]){let g=i[1],{SyntaxKind:m}=I();if(g.getKind()===m.ObjectLiteralExpression){let S=g.getProperties();for(let h of S)if(h.getKind()===m.PropertyAssignment){let N=h,x=N.getName(),C=N.getInitializer();C&&(x==="onTrue"?l=yield*D(C,r,n,o,s,a):x==="onFalse"&&(f=yield*D(C,r,n,o,s,a)))}}}}else{let g=e.getExpression();if(g.getKind()===I().SyntaxKind.PropertyAccessExpression){let S=g.getExpression();l||(l=yield*D(S,r,n,o,s,a))}i.length>0&&i[0]&&(d=i[0].getText())}l||(l={id:T(),type:"unknown",reason:"Could not determine true branch"}),a.conditionalCount++;let u=d.length<=30?d:`${d.slice(0,30)}\u2026`,p={id:T(),type:"conditional",conditionalType:c,condition:d,onTrue:l,onFalse:f,conditionLabel:u,trueEdgeLabel:"true",falseEdgeLabel:"false",location:W(e,n,o.includeLocations??!1)};return{...p,displayName:j(p),semanticRole:U(p)}}),_l=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=t.includes("forEach")?"forEach":t.includes("filterMap")?"filterMap":t.includes("filter")?"filter":t.includes("partition")?"partition":t.includes("reduce")?"reduce":t.includes("validateAll")||t.includes("validateFirst")||t.includes("validateWith")?"validate":t.includes("replicate")?"replicate":t.includes("dropUntil")?"dropUntil":t.includes("dropWhile")?"dropWhile":t.includes("takeUntil")?"takeUntil":t.includes("takeWhile")?"takeWhile":t.includes("every")?"every":t.includes("exists")?"exists":t.includes("findFirst")?"findFirst":t.includes("head")?"head":t.includes("mergeAll")?"mergeAll":"loop",d=c==="reduce"||t.includes("reduceRight")||t.includes("reduceWhile")||t.includes("reduceEffect")?2:1,l,f;i.length>0&&i[0]&&(l=i[0].getText()),i.length>d&&i[d]?f=yield*D(i[d],r,n,o,s,a):f={id:T(),type:"unknown",reason:"Could not determine loop body"},a.loopCount++;let u={id:T(),type:"loop",loopType:c,iterSource:l,body:f,location:W(e,n,o.includeLocations??!1)};return{...u,displayName:j(u),semanticRole:U(u)}}),zl=(e,t,r,n)=>{let o=Dn[t]??"other",s=Ko.has(o),a=e.getArguments(),i=[];if((o==="when"||o==="tag")&&a[0]){let d=a[0].getText().replace(/["'`]/g,"").trim();/^[A-Za-z_][A-Za-z0-9_]*$/.test(d)&&i.push(d)}if(o==="tags"||o==="tagsExhaustive"){let{SyntaxKind:d}=I();for(let l of a)if(l.getKind()===d.ObjectLiteralExpression){let f=l;for(let u of f.getProperties()){let p=u.getKind()===d.PropertyAssignment?u.getName():void 0;p&&i.push(p.replace(/["'`]/g,""))}}}let c={id:T(),type:"match",matchOp:o,isExhaustive:s,...i.length>0?{matchedTags:i}:{},location:W(e,r,n.includeLocations??!1)};return{...c,displayName:j(c),semanticRole:U(c)}},Hl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=Pn[t]??"other",c=qo.has(i),d;if(i==="parallel"||i==="sequential"){let u=e.getArguments(),p=[];for(let g of u)if(g){let m=yield*D(g,r,n,o,s,a);p.push(m)}p.length>0&&(d=p)}let l;if(i==="fail")l="fail";else if(i==="die")l="die";else if(i==="interrupt")l="interrupt";else if((i==="parallel"||i==="sequential")&&d&&d.length>0){let u=d.filter(p=>p.type==="cause").map(p=>p.causeKind).filter(p=>p!==void 0);u.length>0&&(l=u.every(p=>p===u[0])?u[0]:"mixed")}let f={id:T(),type:"cause",causeOp:i,isConstructor:c,...d?{children:d}:{},...l?{causeKind:l}:{},location:W(e,n,o.includeLocations??!1)};return{...f,displayName:j(f),semanticRole:U(f)}}),Ul=(e,t,r,n)=>{let o=Mn[t]??"other",s=_o.has(o),a={id:T(),type:"exit",exitOp:o,isConstructor:s,location:W(e,r,n.includeLocations??!1)};return{...a,displayName:j(a),semanticRole:U(a)}},Vl=(e,t,r,n)=>G.Effect.sync(()=>{let o=Ln[t]??"other",s=e.getText(),a=fs(s),i={id:T(),type:"schedule",scheduleOp:o,...a?{scheduleInfo:a}:{},location:W(e,r,n.includeLocations??!1)};return{...i,displayName:j(i),semanticRole:U(i)}}),Gl=(e,t,r,n,o,s,a)=>G.Effect.gen(function*(){let i=e.getArguments(),c=$n[t]??"other",d=Oo.has(c),l,f;if(i.length>=2&&i[0]){if(l=yield*D(i[0],r,n,o,s,a),i[1]){let p=i[1].getText();f=p.length<=120?p:p.slice(0,120)+"\u2026"}}else if(i.length===1&&i[0]){let p=i[0].getText();f=p.length<=120?p:p.slice(0,120)+"\u2026"}a.totalEffects++;let u={id:T(),type:"transform",transformType:c,isEffectful:d,...l!==void 0?{source:l}:{},...f!==void 0?{fn:f}:{},location:W(e,n,o.includeLocations??!1)};return{...u,displayName:j(u),semanticRole:U(u)}});var Vn=(e,t,r,n,o)=>X.Effect.gen(function*(){let s=[],a=Mo(),i=yield*Jl(e.node,e.type,t,r,n,s,a),c=$o(e.node),d=t.getProject().getTypeChecker(),l=Le(e.node,d),f=ot(e.node,d),u={id:T(),type:"program",programName:e.name,source:e.type,...e.discoveryConfidence?{discoveryConfidence:e.discoveryConfidence}:{},...e.discoveryReason?{discoveryReason:e.discoveryReason}:{},children:i,dependencies:Ro(i),errorTypes:Fo(i),typeSignature:l,requiredServices:f,location:W(e.node,r,n.includeLocations??!1),jsdocDescription:c,jsdocTags:it(e.node)},p=ls(t);return{root:u,metadata:{analyzedAt:Date.now(),filePath:r,tsVersion:o,warnings:s,stats:a,...p.length>0?{serviceDefinitions:p}:{}},references:new Map}}),Jl=(e,t,r,n,o,s,a)=>X.Effect.gen(function*(){switch(t){case"generator":{let i=e.getArguments();if(i.length>0&&i[0]){let c=i[0];return yield*td(c,r,n,o,s,a)}return[]}case"pipe":return yield*Jt(e,r,n,o,s,a);case"run":{let i=e,{SyntaxKind:c}=I(),d=yield*nd(i,r,n,o,s,a);if(X.Option.isSome(d))return d.value;let l=i.getArguments(),f=l.find(g=>g.getKind()===c.ArrowFunction||g.getKind()===c.FunctionExpression),u=o.enableEffectWorkflow&&f===void 0&&l.length===1?cs(i,r):null,p=f??u??l[0];return p?[yield*D(p,r,n,o,s,a)]:[]}case"workflow-execute":{let i=e,c=i.getExpression().getText();return[{id:T(),type:"effect",callee:c,name:c,semanticRole:"side-effect",location:W(i,n,o.includeLocations??!1)}]}case"direct":{let i=e.getInitializer();return i?[yield*D(i,r,n,o,s,a)]:[]}case"class":{let i=e,c="Data.Class";for(let f of i.getHeritageClauses()){let u=f.getText();if(u.includes("Data.TaggedError")){c="Data.TaggedError";break}if(u.includes("Data.TaggedClass")){c="Data.TaggedClass";break}if(u.includes("Data.Error")){c="Data.Error";break}if(u.includes("Schema.TaggedRequest")){c="Schema.TaggedRequest";break}if(u.includes("Schema.TaggedError")){c="Schema.TaggedError";break}if(u.includes("Schema.TaggedClass")){c="Schema.TaggedClass";break}if(u.includes("Schema.Class")){c="Schema.Class";break}if(u.includes("Context.Tag")){c="Context.Tag";break}if(u.includes("Context.Reference")){c="Context.Reference";break}if(u.includes("Effect.Service")){c="Effect.Service";break}}let d=c.includes("Error")?"error-type":c.includes("Schema")?"schema":c==="Context.Tag"||c==="Context.Reference"||c==="Effect.Service"?"service-tag":"data",l={id:T(),type:"effect",callee:c,description:d,location:W(e,n,o.includeLocations??!1),jsdocDescription:Ge(i),jsdocTags:it(i)};return a.totalEffects++,[l]}case"classProperty":{let c=e.getInitializer();return c?[yield*D(c,r,n,o,s,a)]:[]}case"classMethod":{let c=e.getBody();if(!c)return[];let{SyntaxKind:d}=I(),l=c.getDescendantsOfKind(d.ReturnStatement),f=[];for(let u of l){let p=u.getExpression();if(p){let g=yield*D(p,r,n,o,s,a);f.push(g)}}return f}default:return[]}});function Gn(e){let{SyntaxKind:t}=I(),r=e.getKind();return r===t.FunctionDeclaration||r===t.FunctionExpression||r===t.ArrowFunction||r===t.MethodDeclaration||r===t.ClassDeclaration||r===t.ClassExpression||r===t.Constructor}function oe(e){let{SyntaxKind:t}=I();if(e.getKind()===t.YieldExpression)return!0;let r=!1;return e.forEachChild(n=>{if(!r&&!Gn(n)){if(n.getKind()===t.YieldExpression){r=!0;return}if(oe(n)){r=!0;return}}}),r}function Yl(e){let{SyntaxKind:t}=I();switch(e.getKind()){case t.StringLiteral:return e.getLiteralValue();case t.NumericLiteral:return e.getLiteralValue().toString();case t.TrueKeyword:return"true";case t.FalseKeyword:return"false";case t.NullKeyword:return"null";case t.NoSubstitutionTemplateLiteral:return e.getText().replace(/^`|`$/g,"");default:return}}function dt(e,t){if(t.size===0)return e;let r=e;for(let[n,o]of t){let s=new RegExp(`\\b${n}\\b`,"g"),a=/^\d/.test(o)||o==="true"||o==="false"||o==="null"?o:`'${o}'`;r=r.replace(s,a)}return r}function Dt(e){let t=e;return t=t.replace(/\btrue\b\s*&&\s*/g,""),t=t.replace(/\s*&&\s*\btrue\b/g,""),t=t.replace(/\bfalse\b\s*\|\|\s*/g,""),t=t.replace(/\s*\|\|\s*\bfalse\b/g,""),t=t.replace(/\bfalse\b\s*&&\s*[^|&]+/g,"false"),t=t.replace(/\btrue\b\s*\|\|\s*[^|&]+/g,"true"),t.trim()}function Jn(e){let{SyntaxKind:t}=I();switch(e.getKind()){case t.ParenthesizedExpression:case t.AsExpression:case t.TypeAssertionExpression:case t.NonNullExpression:case t.SatisfiesExpression:{let n=e.getExpression();return Jn(n)}default:return e}}function ps(e){let{SyntaxKind:t}=I();if(e.length===0)return!1;let r=e[e.length-1];if(!r)return!1;let n=r.getKind();return n===t.ReturnStatement||n===t.ThrowStatement||n===t.BreakStatement||n===t.ContinueStatement}function ms(e){let{SyntaxKind:t}=I(),r=[];return e.forEachChild(n=>{Gn(n)||(n.getKind()===t.YieldExpression?r.push(n):r.push(...ms(n)))}),r}var Ql=new Set(["Step.run","Step.decide","Step.branch","Step.all","Step.forEach","Step.retry","Step.race","Step.sleep"]);function Zl(e){let{SyntaxKind:t}=I();if(e.getKind()!==t.CallExpression)return!1;let r=e.getExpression().getText();return Ql.has(r)}function Ae(e){if(!e)return;let{SyntaxKind:t}=I();if(e.getKind()===t.StringLiteral)return e.getLiteralText()}function Xl(e){if(!e)return[];let{SyntaxKind:t}=I();if(e.getKind()!==t.ObjectLiteralExpression)return[];let r=[],n=e;for(let o of n.getProperties())if(o.getKind()===t.PropertyAssignment){let s=o.getName();r.push({labels:[s],isDefault:s==="default",body:[]})}return r}function ed(e,t){return X.Effect.gen(function*(){let{SyntaxKind:r}=I(),n=e.getExpression().getText(),o=e.getArguments();switch(n){case"Step.run":{let s=Ae(o[0]),a=o[1];if(!a){let c={id:T(),type:"effect",callee:"Step.run",name:s,displayName:s};return t.stats.totalEffects++,c}let i=yield*D(a,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);return{...i,displayName:s??i.displayName,name:s??i.name}}case"Step.decide":{let s=Ae(o[0]),a=Ae(o[1]);return t.stats.decisionCount++,{id:T(),type:"decision",decisionId:s??T(),label:a??s??"decision",condition:o[2]?.getText()??"unknown",source:"effect-flow",onTrue:[],onFalse:void 0}}case"Step.branch":{let s=Ae(o[0]),a=o[1]?.getText()??"unknown",i=o[2],c=Xl(i);return t.stats.switchCount++,{id:T(),type:"switch",switchId:s,expression:a,cases:c,source:"effect-flow",hasDefault:c.some(l=>l.isDefault),hasFallthrough:!1}}case"Step.all":{let s=Ae(o[0]),a=o[1],i=[];if(a?.getKind()===r.ArrayLiteralExpression){let d=a;for(let l of d.getElements()){let f=yield*D(l,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);i.push(f)}}return t.stats.parallelCount++,{id:T(),type:"parallel",name:s,displayName:s,children:i,mode:"parallel",callee:"Step.all"}}case"Step.forEach":{let s=Ae(o[0]),a=o[1]?.getText(),i=o[2],c={id:T(),type:"effect",callee:"unknown"};return i&&(c=yield*D(i,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope)),t.stats.loopCount++,{id:T(),type:"loop",name:s,displayName:s,loopType:"forEach",iterSource:a,body:c}}case"Step.retry":{let s=Ae(o[0]),a=o[1];if(!a){let d={id:T(),type:"effect",callee:"Step.retry",name:s,displayName:s};return t.stats.totalEffects++,d}let i=yield*D(a,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);return t.stats.retryCount++,{id:T(),type:"retry",name:s,displayName:s,source:i,hasFallback:!1}}case"Step.race":{let s=Ae(o[0]),a=o[1],i=[];if(a?.getKind()===r.ArrayLiteralExpression){let d=a;for(let l of d.getElements()){let f=yield*D(l,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);i.push(f)}}return t.stats.raceCount++,{id:T(),type:"race",name:s,displayName:s,children:i,callee:"Step.race"}}case"Step.sleep":{let s=Ae(o[0]),a={id:T(),type:"effect",callee:"Step.sleep",name:s,displayName:s,semanticRole:"scheduling"};return t.stats.totalEffects++,a}default:{let s={id:T(),type:"effect",callee:n,name:n,displayName:n};return t.stats.totalEffects++,s}}})}function gs(e,t){return X.Effect.gen(function*(){let r=e,n=r.getText().startsWith("yield*"),o=r.getExpression();if(!n){let d={id:T(),type:"opaque",reason:"plain-yield",sourceText:e.getText().slice(0,80)};return t.stats.opaqueCount++,t.warnings.push({code:"PLAIN_YIELD",message:`Plain yield (not yield*) detected; this is unusual in Effect generators: ${e.getText().slice(0,60)}`,location:W(e,t.filePath,t.opts.includeLocations??!1)}),{variableName:zt(e),effect:d}}if(!o){let d={id:T(),type:"opaque",reason:"yield-no-expression",sourceText:e.getText().slice(0,80)};return t.stats.opaqueCount++,{variableName:void 0,effect:d}}let s=Jn(o);if(t.opts.enableEffectFlow&&Zl(s)){let d=yield*ed(s,t),l=zt(e),f={...d,displayName:d.displayName??j(d,l),semanticRole:d.semanticRole??U(d)};return{variableName:l,effect:f}}let a=yield*D(o,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope),i=zt(e);i&&a.type==="effect"&&Vo(a.callee)&&t.serviceScope.set(i,a.callee);let c={...a,displayName:j(a,i),semanticRole:a.semanticRole??U(a)};return{variableName:i,effect:c}})}function ut(e,t){return X.Effect.gen(function*(){let r=e.getStatements(),n=[];for(let o of r){let s=yield*Yt(o,t);n.push(...s)}return n})}function Yt(e,t){return X.Effect.gen(function*(){let{SyntaxKind:r}=I();switch(e.getKind()){case r.ExpressionStatement:{let s=e.getExpression();return yield*fe(s,t)}case r.VariableStatement:{let o=e,s=[],{VariableDeclarationKind:a}=I(),i=o.getDeclarationKind()===a.Const;for(let c of o.getDeclarations()){let d=c.getInitializer();if(i&&d){let l=Yl(d);l!==void 0&&t.constValues.set(c.getName(),l)}if(d&&!oe(d)&&d.getKind()===r.CallExpression){let l=d,f=l.getExpression().getText();if(f==="Context.pick"||f==="Context.omit"){let u=yield*D(l,t.sourceFile,t.filePath,t.opts,t.warnings,t.stats,t.serviceScope);u.type==="effect"&&u.description==="context"&&s.push({variableName:c.getName(),effect:u});continue}}if(d&&oe(d)){let l=yield*fe(d,t);if(l.length>0){let f=c.getName(),u=l[l.length-1];u&&(l[l.length-1]={...u,variableName:u.variableName??f})}s.push(...l)}}return s}case r.IfStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=yield*fe(o.getExpression(),t),i=o.getThenStatement(),c=o.getElseStatement(),d=yield*Ye(i,t),l=c?yield*Ye(c,t):void 0,f=Dt(dt(s,t.constValues)),u=f.length>40?f.slice(0,40)+"...":f,p={id:T(),type:"decision",decisionId:T(),label:u,condition:s,source:"raw-if",onTrue:d.map(g=>g.effect),onFalse:l&&l.length>0?l.map(g=>g.effect):void 0};return t.stats.decisionCount++,[...a,{effect:p}]}case r.SwitchStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=o.getClauses(),i=[],c=!1,d=!1,l=[],f=[],u=!1;for(let m of a){if(m.getKind()===r.DefaultClause)d=!0,u=!0,l.push("default");else{let x=m;l.push(x.getExpression().getText())}let h=m.getStatements();if(h.length===0){c=!0;continue}for(let x of h){let C=yield*Yt(x,t);f.push(...C)}ps(h)||(c=!0),i.push({labels:l,isDefault:u,body:f.map(x=>x.effect)}),l=[],f=[],u=!1}l.length>0&&i.push({labels:l,isDefault:u,body:f.map(m=>m.effect)});let p=dt(s,t.constValues),g={id:T(),type:"switch",switchId:T(),expression:p,cases:i,source:"raw-js",hasDefault:d,hasFallthrough:c};return t.stats.switchCount++,[{effect:g}]}case r.ForStatement:{if(!oe(e))return[];let o=e,s=[],a=o.getInitializer();if(a&&oe(a)){let m=yield*fe(a,t);s.push(...m.map(S=>S.effect))}let i=o.getIncrementor();if(i&&oe(i)){let m=yield*fe(i,t);s.push(...m.map(S=>S.effect))}let c=o.getStatement(),d=yield*Ye(c,t),l=lt(c),f=o.getCondition(),u=f?f.getText():void 0,p=d.length===1&&d[0]?d[0].effect:{id:T(),type:"generator",yields:d},g={id:T(),type:"loop",loopType:"for",iterSource:u,body:p,...l?{hasEarlyExit:l}:{},...s.length>0?{headerYields:s}:{}};return t.stats.loopCount++,[{effect:g}]}case r.ForOfStatement:{if(!oe(e))return[];let o=e,s=o.getExpression(),a=s.getText(),i=[];if(oe(s)){let g=yield*fe(s,t);i.push(...g.map(m=>m.effect))}let c=o.getInitializer().getText(),d=o.getStatement(),l=yield*Ye(d,t),f=lt(d),u=l.length===1&&l[0]?l[0].effect:{id:T(),type:"generator",yields:l},p={id:T(),type:"loop",loopType:"forOf",iterSource:a,body:u,...f?{hasEarlyExit:f}:{},...i.length>0?{headerYields:i}:{},iterVariable:c};return t.stats.loopCount++,[{effect:p}]}case r.ForInStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=o.getInitializer().getText(),i=o.getStatement(),c=yield*Ye(i,t),d=lt(i),l=c.length===1&&c[0]?c[0].effect:{id:T(),type:"generator",yields:c},f={id:T(),type:"loop",loopType:"forIn",iterSource:s,body:l,...d?{hasEarlyExit:d}:{},iterVariable:a};return t.stats.loopCount++,[{effect:f}]}case r.WhileStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=o.getStatement(),i=yield*Ye(a,t),c=lt(a),d=i.length===1&&i[0]?i[0].effect:{id:T(),type:"generator",yields:i},l={id:T(),type:"loop",loopType:"while",iterSource:s,body:d,...c?{hasEarlyExit:c}:{}};return t.stats.loopCount++,[{effect:l}]}case r.DoStatement:{if(!oe(e))return[];let o=e,s=o.getExpression().getText(),a=o.getStatement(),i=yield*Ye(a,t),c=lt(a),d=i.length===1&&i[0]?i[0].effect:{id:T(),type:"generator",yields:i},l={id:T(),type:"loop",loopType:"doWhile",iterSource:s,body:d,...c?{hasEarlyExit:c}:{}};return t.stats.loopCount++,[{effect:l}]}case r.TryStatement:{if(!oe(e))return[];let o=e,s=o.getTryBlock(),a=yield*ut(s,t),i=o.getCatchClause(),c,d;if(i){c=i.getVariableDeclaration()?.getName();let m=i.getBlock();d=yield*ut(m,t)}let l=o.getFinallyBlock(),f;l&&(f=yield*ut(l,t));let u=ps(s.getStatements()),p={id:T(),type:"try-catch",tryBody:a.map(g=>g.effect),...c?{catchVariable:c}:{},...d&&d.length>0?{catchBody:d.map(g=>g.effect)}:{},...f&&f.length>0?{finallyBody:f.map(g=>g.effect)}:{},hasTerminalInTry:u};return t.stats.tryCatchCount++,[{effect:p}]}case r.ReturnStatement:{let s=e.getExpression();if(!s||!oe(s))return[];let a=yield*fe(s,t),i={id:T(),type:"terminal",terminalKind:"return",value:a.map(c=>c.effect)};return t.stats.terminalCount++,[{effect:i}]}case r.ThrowStatement:{let s=e.getExpression();if(!oe(s))return[];let a=yield*fe(s,t),i={id:T(),type:"terminal",terminalKind:"throw",...a.length>0?{value:a.map(c=>c.effect)}:{}};return t.stats.terminalCount++,[{effect:i}]}case r.BreakStatement:return[];case r.ContinueStatement:return[];case r.LabeledStatement:return yield*Yt(e.getStatement(),t);case r.Block:return yield*ut(e,t);default:return[]}})}function Ye(e,t){let{SyntaxKind:r}=I();return e.getKind()===r.Block?ut(e,t):Yt(e,t)}function lt(e){let{SyntaxKind:t}=I(),r=!1;return e.forEachChild(n=>{if(r||Gn(n))return;let o=n.getKind();if(o===t.BreakStatement||o===t.ReturnStatement){r=!0;return}if(lt(n)){r=!0;return}}),r}function fe(e,t){return X.Effect.gen(function*(){let{SyntaxKind:r}=I();if(!oe(e))return[];let n=Jn(e),o=n.getKind();if(o===r.YieldExpression)return[yield*gs(n,t)];if(o===r.ConditionalExpression){let i=n,c=i.getCondition().getText(),d=i.getWhenTrue(),l=i.getWhenFalse(),f=yield*fe(d,t),u=yield*fe(l,t);if(f.length>0||u.length>0){let p=Dt(dt(c,t.constValues)),g={id:T(),type:"decision",decisionId:T(),label:p.length>40?p.slice(0,40)+"...":p,condition:c,source:"raw-ternary",onTrue:f.map(m=>m.effect),onFalse:u.length>0?u.map(m=>m.effect):void 0};return t.stats.decisionCount++,[{effect:g}]}}if(o===r.BinaryExpression){let i=n,c=i.getOperatorToken().getKind(),d=i.getLeft(),l=i.getRight();if(c===r.AmpersandAmpersandToken){let f=yield*fe(l,t);if(f.length>0){let u=d.getText(),p=Dt(dt(u,t.constValues)),g={id:T(),type:"decision",decisionId:T(),label:p.length>40?p.slice(0,40)+"...":p,condition:u,source:"raw-short-circuit",onTrue:f.map(m=>m.effect),onFalse:[]};return t.stats.decisionCount++,[{effect:g}]}}if(c===r.BarBarToken){let f=yield*fe(l,t);if(f.length>0){let u=d.getText(),p=Dt(dt(u,t.constValues)),g={id:T(),type:"decision",decisionId:T(),label:p.length>40?p.slice(0,40)+"...":p,condition:u,source:"raw-short-circuit",onTrue:[],onFalse:f.map(m=>m.effect)};return t.stats.decisionCount++,[{effect:g}]}}if(c===r.QuestionQuestionToken){let f=yield*fe(l,t);if(f.length>0){let u=`${d.getText()} != null`,p=Dt(dt(u,t.constValues)),g={id:T(),type:"decision",decisionId:T(),label:p.length>40?p.slice(0,40)+"...":p,condition:u,source:"raw-short-circuit",onTrue:[],onFalse:f.map(m=>m.effect)};return t.stats.decisionCount++,[{effect:g}]}}}let s=ms(e),a=[];for(let i of s){let c=yield*gs(i,t);a.push(c)}return a})}var td=(e,t,r,n,o,s)=>X.Effect.gen(function*(){let{SyntaxKind:a}=I(),i;if((e.getKind()===a.ArrowFunction||e.getKind()===a.FunctionExpression||e.getKind()===a.FunctionDeclaration)&&(i=e.getBody()),!i)return[];let c=new Map,l={sourceFile:t,filePath:r,opts:n,warnings:o,stats:s,serviceScope:c,constValues:new Map},f;i.getKind()===a.Block?f=yield*ut(i,l):f=yield*fe(i,l);let u=i.getDescendantsOfKind(a.CallExpression);for(let S of u){let h=We(t);if(ct(S,t,h,n.knownEffectInternalsRoot)){let N=yield*Un(S,t,r,n,o,s,c);f.push({effect:N})}}let p=Ge(e),g={id:T(),type:"generator",yields:f,jsdocDescription:p,jsdocTags:it(e)};return[{...g,displayName:j(g),semanticRole:U(g)}]});function nd(e,t,r,n,o,s){let i=e.getExpression().getText();if(!(i.endsWith(".pipe")||i==="pipe"))return X.Effect.succeed(X.Option.none());let d=e.getArguments(),l=d[d.length-1];if(!l)return X.Effect.succeed(X.Option.none());let f=l.getText();return f.includes(".runMain")||f.includes(".runPromise")||f.includes(".runSync")||f.includes(".runFork")?X.Effect.map(Jt(e,t,r,n,o,s),p=>X.Option.some(p)):X.Effect.succeed(X.Option.none())}var Qt=(e,t)=>Te.Effect.gen(function*(){let r={...kn,...t},{ts:n,Project:o}=I(),s=yield*Te.Effect.try({try:()=>Do(e)?new o({skipAddingFilesFromTsConfig:!0,compilerOptions:{allowJs:!0}}):xo(r.tsConfigPath),catch:d=>new Se("PROJECT_CREATION_FAILED",`Failed to create project: ${String(d)}`)}),a=s.getSourceFile(e);a&&s.removeSourceFile(a);let i=yield*Te.Effect.try({try:()=>s.addSourceFileAtPath(e),catch:d=>new Se("FILE_NOT_FOUND",`Failed to load file ${e}: ${String(d)}`)}),c=Hn(i,r);return c.length===0?yield*Te.Effect.fail(new Se("NO_EFFECTS_FOUND",`No Effect programs found in ${e}`)):yield*Te.Effect.forEach(c,d=>Vn(d,i,e,r,n.version),{concurrency:"unbounded"})}),Zt=(e,t="temp.ts",r)=>Te.Effect.gen(function*(){let n={...kn,...r},{ts:o}=I(),s=yield*Te.Effect.try({try:()=>Eo(e,t),catch:i=>new Se("SOURCE_PARSE_FAILED",`Failed to parse source: ${String(i)}`)}),a=Hn(s,n);return a.length===0?yield*Te.Effect.fail(new Se("NO_EFFECTS_FOUND","No Effect programs found in source")):yield*Te.Effect.forEach(a,i=>Vn(i,s,t,n,o.version),{concurrency:"unbounded"})});var ke=e=>({single:()=>V.Effect.gen(function*(){if(e.length===1){let t=e[0];if(t)return t}return yield*V.Effect.fail(new Se("NOT_SINGLE_PROGRAM",`Expected exactly 1 program, found ${String(e.length)}`))}),singleOption:()=>V.Effect.gen(function*(){if(e.length===1){let t=e[0];if(t)return V.Option.some(t)}return V.Option.none()}),all:()=>V.Effect.succeed(e),named:t=>V.Effect.gen(function*(){let r=e.find(n=>n.root.programName===t);if(!r){let n=e.map(o=>o.root.programName).join(", ");return yield*V.Effect.fail(new Se("PROGRAM_NOT_FOUND",`Program "${t}" not found. Available: ${n||"(none)"}`))}return r}),first:()=>V.Effect.gen(function*(){let t=e[0];return t||(yield*V.Effect.fail(new Se("NO_PROGRAMS","No programs found")))}),firstOption:()=>V.Effect.gen(function*(){let t=e[0];return t?V.Option.some(t):V.Option.none()})}),ft=(e,t)=>{st();let r=Qt(e,t);return{single:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).single()}),singleOption:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).singleOption()}).pipe(V.Effect.orDie),all:()=>r,named:n=>V.Effect.gen(function*(){let o=yield*r;return yield*ke(o).named(n)}),first:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).first()}),firstOption:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).firstOption()}).pipe(V.Effect.orDie)}};ft.source=(e,t)=>{st();let r=Zt(e,"temp.ts",t);return{single:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).single()}),singleOption:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).singleOption()}).pipe(V.Effect.orDie),all:()=>r,named:n=>V.Effect.gen(function*(){let o=yield*r;return yield*ke(o).named(n)}),first:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).first()}),firstOption:()=>V.Effect.gen(function*(){let n=yield*r;return yield*ke(n).firstOption()}).pipe(V.Effect.orDie)}};var ae=require("effect"),Qe=require("fs/promises"),Qn=require("fs"),ge=require("path");var Yn=require("effect");function rd(e,t){let{SyntaxKind:r}=I(),n=[],o=e.getProject().getTypeChecker(),s=e.getDescendantsOfKind(r.ClassDeclaration);for(let a of s){let i=a.getName();if(!i)continue;let c=a.getExtends();if(!c)continue;let d=c.getText();if(!d.includes("Context.Tag")&&!d.includes("Effect.Service"))continue;let l=i,f=/Context\.Tag\s*\(\s*['"]([^'"]+)['"]\s*\)/.exec(d);f?.[1]&&(l=f[1]);let u=c.getTypeArguments();if(u.length<2){let h=c.getExpression();h&&"getTypeArguments"in h&&typeof h.getTypeArguments=="function"&&(u=h.getTypeArguments())}let p={tagId:l,methods:[],properties:[]},g;if(u.length>=2){let h=u[1];if(h)try{g=h.getText();let N=o.getTypeAtLocation(h),x=[],C=[];for(let E of N.getProperties()){let y=E.getName();if(y.startsWith("_")||y==="constructor")continue;o.getTypeOfSymbolAtLocation(E,h).getCallSignatures().length>0?x.push(y):C.push(y)}p={tagId:l,methods:x,properties:C}}catch{}}let m=a.getStart(),S=e.getLineAndColumnAtPos(m);n.push({tagId:l,className:i,filePath:t,location:{filePath:t,line:S.line,column:S.column-1},definition:p,interfaceTypeText:g})}return n}function od(e,t,r){let{SyntaxKind:n}=I(),o=[],s=e.getDescendantsOfKind(n.VariableDeclaration);for(let a of s){let i=a.getInitializer();if(!i)continue;let c=i.getText(),d=/Layer\.(effect|succeed|sync|scoped)\s*\(\s*/.exec(c);if(!d)continue;let l=d[1],f=a.getName(),u;if(i.getKind()===n.CallExpression){let x=i.getArguments?.();if(x&&x.length>0){let C=x[0];if(!C)continue;let E=C.getText().trim();u=r.get(E)}}if(!u){for(let x of r.keys())if(c.includes(`Layer.${l}(${x}`)||c.includes(`Layer.${l}(
5
5
  ${x}`)){u=r.get(x);break}}if(!u)continue;let p=[],g=/Layer\.provide\s*\(([^)]+)\)/.exec(c);if(g?.[1]){let x=g[1].trim();for(let[C,E]of r.entries())E!==u&&x.includes(C)&&!p.includes(E)&&p.push(E)}let m=c.matchAll(/yield\*\s+(\w+)/g);for(let x of m){let C=x[1],E=C?r.get(C):void 0;E&&E!==u&&!p.includes(E)&&p.push(E)}let S=c.matchAll(/yield\s*\*\s*(\w+)/g);for(let x of S){let C=x[1],E=C?r.get(C):void 0;E&&E!==u&&!p.includes(E)&&p.push(E)}let h=a.getStart(),N=e.getLineAndColumnAtPos(h);o.push({providesServiceId:u,implementation:{name:f,filePath:t,location:{filePath:t,line:N.line,column:N.column-1},kind:l,requires:p}})}return o}function sd(e){let t=new Map;for(let[r,n]of e)for(let o of n){let s=o.root.programName;if(o.root.requiredServices)for(let a of o.root.requiredServices){let i=t.get(a.serviceId)??[];i.push({programName:s,filePath:r,location:a.requiredAt}),t.set(a.serviceId,i)}hs(o.root.children,s,r,t)}return t}function hs(e,t,r,n){for(let o of e){if(o.type==="effect"&&o.serviceCall){let a=o.serviceCall.serviceType;if(a){let i=n.get(a)??[];i.some(c=>c.programName===t&&c.filePath===r)||(i.push({programName:t,filePath:r,location:o.location}),n.set(a,i))}}let s=Yn.Option.getOrElse(v(o),()=>[]);s.length>0&&hs(s,t,r,n)}}function id(e){let t=[],r=new Set,n=new Set;function o(s){if(r.has(s)||n.has(s))return;n.add(s);let a=e.get(s);if(a)for(let i of a.dependencies)o(i);n.delete(s),r.add(s),t.push(s)}for(let s of e.keys())o(s);return t}function ys(e,t,r,n=new Set){let o=[];if(n.has(e))return o;n.add(e);for(let s of t)for(let a of s.requires){o.includes(a)||o.push(a);let i=r.get(a);if(i)for(let c of ys(a,i,r,n))o.includes(c)||o.push(c)}return o}function Pt(e,t){let r=new Map;if(t)for(let[u,p]of t){let g=rd(p,u);for(let m of g)r.has(m.tagId)||r.set(m.tagId,m)}for(let[u,p]of e)for(let g of p)if(g.metadata.serviceDefinitions)for(let m of g.metadata.serviceDefinitions)r.has(m.tagId)||r.set(m.tagId,{tagId:m.tagId,className:m.tagId,filePath:u,location:{filePath:u,line:1,column:0},definition:m});let n=new Set(r.keys()),o=new Map;for(let[u,p]of r)o.has(u)||o.set(u,u),o.has(p.className)||o.set(p.className,u);let s=new Set;for(let u of e.values())for(let p of u)if(p.root.requiredServices)for(let g of p.root.requiredServices)s.add(g.serviceId);let a=new Map;if(t)for(let[u,p]of t){let g=od(p,u,o);for(let m of g){if(!n.has(m.providesServiceId))continue;let S=a.get(m.providesServiceId)??[];S.push(m.implementation),a.set(m.providesServiceId,S)}}for(let[u,p]of e)for(let g of p)Ss(g.root.children,u,n,o,a,g);let i=sd(e),c=new Map,d=[];for(let[u,p]of r){let g=a.get(u)??[],m=i.get(u)??[],S=ys(u,g,a);c.set(u,{serviceId:u,className:p.className,definitionFilePath:p.filePath,definitionLocation:p.location,definition:p.definition,interfaceTypeText:p.interfaceTypeText,layerImplementations:g,consumers:m,dependencies:S})}let l=new Set(s);for(let u of i.keys())l.add(u);for(let u of l)c.has(u)||d.push(u);let f=id(c);return{services:c,unresolvedServices:d,topologicalOrder:f}}function Ss(e,t,r,n,o,s){for(let a of e){if(a.type==="layer"&&a.provides)for(let c of a.provides){let d=n.get(c)??(r.has(c)?c:void 0);if(d&&r.has(d)){let l=o.get(d)??[],f=a.requires?a.requires.map(u=>n.get(u)??u).filter(u=>r.has(u)):[];l.some(u=>u.name===(a.name??s.root.programName)&&u.filePath===t)||(l.push({name:a.name??s.root.programName,filePath:t,location:a.location??{filePath:t,line:1,column:0},kind:"other",requires:f}),o.set(d,l))}}let i=Yn.Option.getOrElse(v(a),()=>[]);i.length>0&&Ss(i,t,r,n,o,s)}}var en={extensions:[".ts",".tsx"],maxDepth:10,knownEffectInternalsRoot:void 0,includePerFileTiming:!1,excludeFromSuspiciousZeros:[],buildServiceMap:!1};function ad(e){let t=0,r=0,n=o=>{for(let s of o){t++,s.type==="unknown"&&r++;let a=ae.Option.getOrElse(v(s),()=>[]);a.length>0&&n(a)}};return n(e),{total:t,unknown:r}}function cd(e){let t=new Map,r=n=>{for(let o of n){if(Bt(o)){let a=o.reason;t.set(a,(t.get(a)??0)+1)}let s=ae.Option.getOrElse(v(o),()=>[]);s.length>0&&r(s)}};return r(e),t}function ld(e){try{let t=(0,Qn.readFileSync)(e,"utf-8");return/from\s+["'](?:effect|effect\/|@effect\/)/.test(t)}catch{return!1}}function dd(e){try{let t=(0,Qn.readFileSync)(e,"utf-8");return/\bEffect\./.test(t)||/\bLayer\./.test(t)||/\bStream\./.test(t)||/\bSchema\./.test(t)||/\byield\*/.test(t)||/\bpipe\(/.test(t)||/\brunPromise\b/.test(t)||/\brunSync\b/.test(t)||/\brunFork\b/.test(t)||/\bacquireRelease\b/.test(t)?!1:/\binterface\b/.test(t)||/\btype\b/.test(t)||/\bdeclare\b/.test(t)||/^\s*import\s+type\b/m.test(t)||/^\s*export\s+type\b/m.test(t)}catch{return!1}}function ud(e){let t=e.replace(/\\/g,"/"),r=(0,ge.basename)(t).toLowerCase();if(r==="index.ts"||r==="index.tsx"||/\/index\.[jt]sx?$/.test(t))return"barrel_or_index";if(/(^|\/)(__tests__|test|tests|dtslint)(\/|$)/.test(t)||/\.(test|spec|tst)\.[jt]sx?$/.test(t))return"test_or_dtslint";if(/(^|\/)(vitest|vite|jest|webpack|rollup|tsup|esbuild|eslint|prettier|babel|playwright|typedoc|karma)\.config\.[jt]s$/.test(t)||/(^|\/)vitest\.workspace\.[jt]s$/.test(t))return"config_or_build";if(dd(e))return"type_only"}async function Zn(e,t,r,n){if(n>=r)return[];let o=[];try{let s=await(0,Qe.readdir)(e,{withFileTypes:!0});for(let a of s){let i=(0,ge.join)(e,a.name);a.isDirectory()?a.name!=="node_modules"&&a.name!==".git"&&o.push(...await Zn(i,t,r,n+1)):a.isFile()&&t.includes((0,ge.extname)(a.name))&&o.push(i)}}catch{}return o}async function xs(e,t,r){if(r>=t)return[];let n=[];try{let o=await(0,Qe.readdir)(e,{withFileTypes:!0});o.some(a=>a.isFile()&&a.name==="package.json")&&n.push(e);for(let a of o)a.isDirectory()&&a.name!=="node_modules"&&a.name!==".git"&&n.push(...await xs((0,ge.join)(e,a.name),t,r+1))}catch{}return n}function Xt(e,t,r){if(!t||typeof t!="string")return[];let n=t.replace(/^\.\//,""),o=(0,ge.join)(e,n);return(0,ge.extname)(n)?[(0,ge.resolve)(o)]:r.map(a=>(0,ge.resolve)(o+a))}async function fd(e){try{let{Project:t,SyntaxKind:r}=I(),s=new t({skipAddingFilesFromTsConfig:!0}).addSourceFileAtPath(e).getDescendantsOfKind(r.CallExpression),a=[r.FunctionDeclaration,r.FunctionExpression,r.ArrowFunction,r.MethodDeclaration];for(let i of s){let c=i.getParent();if(c?.getKind()!==r.ExpressionStatement)continue;let d=c;for(;d;){let f=d.getKind();if(f===r.SourceFile||a.includes(f))break;d=d.getParent()}if(d?.getKind()!==r.SourceFile)continue;let l=i.getExpression().getText();if(l.includes(".runPromise")||l.includes(".runSync")||l.includes(".runFork")||l.includes(".runCallback")||l.includes("NodeRuntime.runMain")||l.includes("BunRuntime.runMain")||l.includes("DenoRuntime.runMain")||l.includes("Runtime.runPromise")||l.includes("Runtime.runSync")||l.includes("Runtime.runFork"))return!0}}catch{}return!1}async function pd(e,t){let r=await xs(e,10,0),n=[];for(let o of r)try{let s=await(0,Qe.readFile)((0,ge.join)(o,"package.json"),"utf-8"),a=JSON.parse(s),i=[Xt(o,a.main,t),Xt(o,a.module,t)];if(typeof a.bin=="string")i.push(Xt(o,a.bin,t));else if(a.bin&&typeof a.bin=="object")for(let c of Object.values(a.bin))i.push(Xt(o,typeof c=="string"?c:void 0,t));for(let c of i)for(let d of c)try{(await(0,Qe.stat)(d).catch(()=>null))?.isFile()&&n.push(d)}catch{}}catch{}return[...new Set(n)]}function Es(e,t={}){let r=t.extensions??en.extensions,n=t.maxDepth??en.maxDepth;return ae.Effect.gen(function*(){let o=yield*ae.Effect.promise(()=>Zn(e,r,n,0)),s=new Map,a=[],i=[],c=[],d=[];for(let u of o){let p=yield*ft(u,{tsConfigPath:t.tsconfig,knownEffectInternalsRoot:t.knownEffectInternalsRoot}).all().pipe(ae.Effect.map(m=>({_tag:"ok",programs:m})),ae.Effect.catchAll(m=>ae.Effect.succeed({_tag:"fail",error:m instanceof Error?m.message:String(m)})));if(p._tag==="fail"){c.push({file:u,error:p.error});continue}let g=p.programs;if(g.length===0){d.push(u);continue}s.set(u,g),a.push(...g);for(let m of g){let S=m.root.programName==="main"||m.root.programName.includes("run"),h=m.root.source==="run";(S||h)&&(i.includes(u)||i.push(u))}}let l=yield*ae.Effect.promise(()=>pd(e,r));for(let u of l)o.includes(u)&&!i.includes(u)&&i.push(u);for(let u of s.keys()){if(i.includes(u))continue;(yield*ae.Effect.promise(()=>fd(u)))&&i.push(u)}let f;if(t.buildServiceMap)try{let{Project:u}=I(),p=new u({skipAddingFilesFromTsConfig:!0,compilerOptions:{allowJs:!0}}),g=new Map;for(let m of s.keys())try{let S=p.addSourceFileAtPath(m);g.set(m,S)}catch{}f=Pt(s,g)}catch{f=Pt(s)}return{byFile:s,allPrograms:a,entryPointFiles:i,fileCount:o.length,failedFiles:c,zeroProgramFiles:d,serviceMap:f}})}function bs(e,t={}){let r=t.extensions??en.extensions,n=t.maxDepth??en.maxDepth;return ae.Effect.gen(function*(){let o=Date.now(),s=yield*ae.Effect.promise(()=>Zn(e,r,n,0)),a=[],i=0,c=0,d=[],l=new Map,f=t.includePerFileTiming===!0;for(let A of s){let K=f?Date.now():0,q=yield*ft(A,{tsConfigPath:t.tsconfig,knownEffectInternalsRoot:t.knownEffectInternalsRoot}).all().pipe(ae.Effect.map(J=>({_tag:"ok",programs:J})),ae.Effect.catchAll(J=>ae.Effect.succeed({_tag:"fail",error:J instanceof Error?J.message:String(J)}))),Z=f?Date.now()-K:void 0;if(q._tag==="ok"){let J=q.programs.length,P=0,H=0;for(let ye of q.programs){let pe=ad(ye.root.children);i+=pe.total,c+=pe.unknown,P+=pe.total,H+=pe.unknown;let ne=cd(ye.root.children);for(let[De,Pe]of ne)l.set(De,(l.get(De)??0)+Pe)}P>0&&d.push({file:A,total:P,unknown:H}),a.push(J>0?{file:A,status:"ok",programCount:J,...Z!==void 0?{durationMs:Z}:{}}:{file:A,status:"zero",programCount:0,...Z!==void 0?{durationMs:Z}:{}})}else{let J=q.error??"",P=J.includes("No Effect programs found")||J.includes("NO_EFFECTS_FOUND");a.push(P?{file:A,status:"zero",programCount:0,...Z!==void 0?{durationMs:Z}:{}}:{file:A,status:"fail",error:q.error,...Z!==void 0?{durationMs:Z}:{}})}}let u=s.length,p=a.filter(A=>A.status==="ok").length,g=a.filter(A=>A.status==="zero").length,m=a.filter(A=>A.status==="fail").length,S=u>0?p/u*100:0,h=p+m>0?p/(p+m)*100:100,N=t.excludeFromSuspiciousZeros??[],x=A=>{let K=A.replace(/\\/g,"/");return N.some(q=>K.includes(q.replace(/\\/g,"/"))||K.endsWith(q.replace(/\\/g,"/")))},C={barrel_or_index:0,config_or_build:0,test_or_dtslint:0,type_only:0,suspicious:0,other:0},E=[],y=[],w=a.filter(A=>A.status==="zero");for(let A of w){let K=ld(A.file),q=ud(A.file),Z=K&&!x(A.file)&&q===void 0?"suspicious":q??"other";C[Z]++,y.push({file:A.file,category:Z,importsEffect:K}),Z==="suspicious"&&E.push(A.file)}let k=i>0?c/i:0,b=d.filter(A=>A.total>0).sort((A,K)=>K.unknown/K.total-A.unknown/A.total).slice(0,10).map(A=>A.file),M={};for(let[A,K]of l)M[A]=K;let F=[...l.entries()].sort((A,K)=>K[1]-A[1]).slice(0,20).map(([A,K])=>({reason:A,count:K})),L=Date.now()-o;return{discovered:u,analyzed:p,zeroPrograms:g,failed:m,outcomes:a,percentage:S,analyzableCoverage:h,unknownNodeRate:k,totalNodes:i,unknownNodes:c,suspiciousZeros:E,zeroProgramCategoryCounts:C,zeroProgramClassifications:y,topUnknownFiles:b,unknownReasonCounts:M,topUnknownReasons:F,durationMs:L}})}var Cs=require("fs/promises"),tn=require("path"),$=require("ts-morph");function R(e,t,r,n,o,s,a){let{line:i,column:c}=n.getLineAndColumnAtPos(r.getStart());e.push({filePath:t,line:i+1,column:c,pattern:o,suggestion:s,codeSnippet:a??n.getText().slice(r.getStart(),r.getStart()+80).replace(/\n/g," ")})}function Xn(e,t){let r=[],n=new $.Project({skipAddingFilesFromTsConfig:!0}),o=t?n.createSourceFile(e,t):n.addSourceFileAtPath(e);for(let l of o.getDescendantsOfKind($.SyntaxKind.TryStatement))R(r,e,l,o,"try/catch","Effect.try or Effect.tryPromise with catch handler");for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="Promise.all"||u.endsWith(".all")&&u.includes("Promise"))&&R(r,e,l,o,"Promise.all",'Effect.all([...], { concurrency: "unbounded" })'),(u==="Promise.race"||u.endsWith(".race")&&u.includes("Promise"))&&R(r,e,l,o,"Promise.race","Effect.race(first, second)")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="setTimeout"||u==="setInterval")&&R(r,e,l,o,u,u==="setTimeout"?"Effect.sleep(Duration.millis(n))":"Schedule.spaced(Duration.millis(n))"),(u==="setImmediate"||u==="process.setImmediate")&&R(r,e,l,o,"setImmediate","Effect.sync + queueMicrotask or Effect.async")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="XMLHttpRequest"||u.includes("XMLHttpRequest"))&&R(r,e,l,o,"new XMLHttpRequest()","HttpClient.request or @effect/platform HttpClient")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="Worker"||u.includes("Worker"))&&R(r,e,l,o,"new Worker()","Worker.make or @effect/platform Worker")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="fs.exists"||u.endsWith(".exists")&&u.startsWith("fs."))&&l.getArguments().length>=2&&R(r,e,l,o,"fs.exists (callback)","Effect.promise or fs.promises.access")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.endsWith(".request")&&(u.includes("http")||u.includes("https"))||u==="request"&&o.getText().includes("http"))&&R(r,e,l,o,"http.request / https.request","HttpClient.request or @effect/platform HttpClient")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.startsWith("dns.")||u.includes("dns."))&&(u.includes("lookup")||u.includes("resolve")||u.includes("reverse"))&&R(r,e,l,o,"dns (callback)","Effect.promise or dns.promises")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression))l.getExpression().getText()==="fetch"&&R(r,e,l,o,"fetch()","HttpClient.request or @effect/platform HttpClient");for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="EventEmitter"||u.includes("EventEmitter"))&&R(r,e,l,o,"new EventEmitter()","PubSub.bounded<EventType>() or PubSub.unbounded<EventType>()")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.endsWith(".on(")||u.endsWith(".addListener("))&&(u.includes("Emitter")||u.includes("emitter"))&&R(r,e,l,o,"EventEmitter.on / addListener","PubSub.subscribe for PubSub"),u.endsWith(".emit(")&&(u.includes("Emitter")||u.includes("emitter"))&&R(r,e,l,o,"EventEmitter.emit","PubSub.publish for PubSub")}for(let l of o.getDescendantsOfKind($.SyntaxKind.ClassDeclaration)){let f=l.getName(),u=l.getText();f&&(u.includes("new ")||u.includes("constructor"))&&(f.endsWith("Service")||f.endsWith("Repository")||f.endsWith("Client"))&&R(r,e,l,o,`class ${f} (manual DI)`,`Context.Tag<${f}>() + Layer.effect or Layer.succeed`)}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u.endsWith("Service")||u.endsWith("Repository")||u.endsWith("Client"))&&!u.includes("Context")&&!u.includes("Layer")&&R(r,e,l,o,`new ${u}()`,"Context.Tag + Layer.effect for dependency injection")}for(let l of o.getDescendantsOfKind($.SyntaxKind.FunctionDeclaration))(l.getModifiers().some(f=>f.getText()==="async")||l.getText().startsWith("async"))&&R(r,e,l,o,"async function","Effect.gen or Effect.pipe with flatMap");for(let l of o.getDescendantsOfKind($.SyntaxKind.ArrowFunction))l.getText().startsWith("async")&&R(r,e,l,o,"async arrow function","Effect.gen or Effect.pipe with flatMap");for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();u.endsWith(".then")&&u.includes("Promise")&&R(r,e,l,o,"Promise.then","Effect.flatMap for sequential composition"),(u==="Promise.allSettled"||u.endsWith(".allSettled")&&u.includes("Promise"))&&R(r,e,l,o,"Promise.allSettled","Effect.all with merge or separate error handling"),u.endsWith(".catch")&&(u.includes("Promise")||u.includes(".then"))&&R(r,e,l,o,"Promise.catch","Effect.catchAll or Effect.catchTag for typed error handling"),u.endsWith(".finally")&&(u.includes("Promise")||u.includes(".then"))&&R(r,e,l,o,"Promise.finally","Effect.ensuring for cleanup")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="addEventListener"||u.endsWith(".addEventListener"))&&R(r,e,l,o,"addEventListener","Effect.async or EventTarget + Effect.asyncInterrupt")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="fs.readFile"||u==="fs.writeFile"||u==="readFile"||u==="writeFile"||u.endsWith(".readFile")&&u.startsWith("fs.")||u.endsWith(".writeFile")&&u.startsWith("fs."))&&l.getArguments().length>=2&&R(r,e,l,o,u.includes("write")?"fs.writeFile (callback)":"fs.readFile (callback)","Effect.promise or fs.promises + Effect.tryPromise")}for(let l of o.getDescendantsOfKind($.SyntaxKind.ThrowStatement))R(r,e,l,o,"throw","Effect.fail(error) for typed error channel");for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="promisify"||u.endsWith(".promisify"))&&R(r,e,l,o,"util.promisify","Effect.tryPromise or Effect.async for callback-style APIs")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression))l.getExpression().getText()==="Promise"&&R(r,e,l,o,"new Promise(...)","Effect.async or Effect.promise for callback-style");for(let l of o.getDescendantsOfKind($.SyntaxKind.ForOfStatement))l.getAwaitKeyword()&&R(r,e,l,o,"for await...of","Stream.iterate or Effect.asyncIterable for async iteration");for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="readFileSync"||u==="writeFileSync"||u==="existsSync"||u.endsWith(".readFileSync")||u.endsWith(".writeFileSync")||u.endsWith(".existsSync"))&&R(r,e,l,o,u,"Effect.promise or fs/promises + Effect.tryPromise")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="process.nextTick"||u.endsWith(".nextTick")&&u.includes("process"))&&R(r,e,l,o,"process.nextTick","Effect.sync + queueMicrotask or Effect.async")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="queueMicrotask"||u.endsWith(".queueMicrotask"))&&R(r,e,l,o,"queueMicrotask","Effect.sync for deferred execution")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="WebSocket"||u.includes("WebSocket"))&&R(r,e,l,o,"new WebSocket()","Effect.async or @effect/platform WebSocket")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="MessageChannel"||u.includes("MessageChannel"))&&R(r,e,l,o,"new MessageChannel()","Effect.async or Queue for cross-context messaging")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="fs.appendFile"||u.endsWith(".appendFile")&&u.startsWith("fs."))&&l.getArguments().length>=2&&R(r,e,l,o,"fs.appendFile (callback)","Effect.promise or fs.promises.appendFile")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();if((u==="fs.mkdir"||u==="fs.stat"||u==="fs.unlink"||u.endsWith(".mkdir")&&u.startsWith("fs.")||u.endsWith(".stat")&&u.startsWith("fs.")||u.endsWith(".unlink")&&u.startsWith("fs."))&&l.getArguments().length>=2){let g=u.includes("mkdir")?"fs.mkdir":u.includes("stat")?"fs.stat":"fs.unlink";R(r,e,l,o,`${g} (callback)`,"Effect.promise or fs.promises")}}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="MutationObserver"||u.includes("MutationObserver"))&&R(r,e,l,o,"new MutationObserver()","Effect.async or Effect.asyncInterrupt for DOM observation")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="requestIdleCallback"||u.endsWith(".requestIdleCallback"))&&R(r,e,l,o,"requestIdleCallback","Effect.async or Effect.sync for idle-time work")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="BroadcastChannel"||u.includes("BroadcastChannel"))&&R(r,e,l,o,"new BroadcastChannel()","PubSub or Effect.async for cross-tab messaging")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();if((u==="fs.rename"||u==="fs.realpath"||u.endsWith(".rename")&&u.startsWith("fs.")||u.endsWith(".realpath")&&u.startsWith("fs."))&&l.getArguments().length>=2){let g=u.includes("realpath")?"fs.realpath":"fs.rename";R(r,e,l,o,`${g} (callback)`,"Effect.promise or fs.promises")}}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText(),p=(u==="fs.readdir"||u.endsWith(".readdir")&&u.startsWith("fs."))&&l.getArguments().length>=2,g=(u==="fs.copyFile"||u.endsWith(".copyFile")&&u.startsWith("fs."))&&l.getArguments().length>=2;p&&R(r,e,l,o,"fs.readdir (callback)","Effect.promise or fs.promises.readdir"),g&&R(r,e,l,o,"fs.copyFile (callback)","Effect.promise or fs.promises.copyFile")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="FileReader"||u.includes("FileReader"))&&R(r,e,l,o,"new FileReader()","Effect.async or FileReader + Effect.asyncInterrupt")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText(),p=(u==="fs.mkdtemp"||u.endsWith(".mkdtemp")&&u.startsWith("fs."))&&l.getArguments().length>=2,g=(u==="fs.symlink"||u.endsWith(".symlink")&&u.startsWith("fs."))&&l.getArguments().length>=2;p&&R(r,e,l,o,"fs.mkdtemp (callback)","Effect.promise or fs.promises.mkdtemp"),g&&R(r,e,l,o,"fs.symlink (callback)","Effect.promise or fs.promises.symlink")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="ResizeObserver"||u==="IntersectionObserver"||u.includes("ResizeObserver")||u.includes("IntersectionObserver"))&&R(r,e,l,o,`new ${u}()`,"Effect.async or Effect.asyncInterrupt for DOM observation")}let s=o.getText().includes("child_process");for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.includes("child_process")&&u.endsWith(".fork")||s&&u==="fork")&&R(r,e,l,o,"child_process.fork","Worker.make or @effect/platform Worker")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u==="AbortController"||u.includes("AbortController"))&&R(r,e,l,o,"new AbortController()","Effect.Scoped or Effect.interruptible for cancellation")}let a=o.getText(),i=a.includes("child_process");for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();((u.endsWith(".exec")||u.endsWith(".execSync")||u.endsWith(".spawn"))&&u.includes("child_process")||i&&(u==="exec"||u==="execSync"||u==="spawn"))&&R(r,e,l,o,"child_process.exec/spawn","@effect/platform CommandExecutor or Effect.promise")}for(let l of o.getDescendantsOfKind($.SyntaxKind.PropertyAccessExpression))l.getExpression().getText()==="process"&&l.getName()==="env"&&R(r,e,l,o,"process.env","Config.string or Config.forEffect for typed config");if(a.includes("rxjs")||a.includes("Observable"))for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.includes("Observable")||u.includes("of")&&u.includes("rxjs"))&&R(r,e,l,o,"RxJS Observable","Stream from @effect/platform or Effect Stream")}for(let l of o.getDescendantsOfKind($.SyntaxKind.NewExpression)){let u=l.getExpression().getText();(u.includes("Observable")||u.includes("Subject"))&&R(r,e,l,o,"RxJS Observable/Subject","Stream or PubSub for Effect")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="requestAnimationFrame"||u.endsWith(".requestAnimationFrame"))&&R(r,e,l,o,"requestAnimationFrame","Effect.async or Effect.sync + queueMicrotask for scheduling")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.includes("crypto.")||u.includes("randomBytes")||u.includes("scrypt")||u.includes("pbkdf2"))&&l.getArguments().length>=2&&R(r,e,l,o,"crypto (callback)","Effect.promise or crypto.webcrypto / node:crypto promises")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="createReadStream"||u==="createWriteStream"||u.endsWith(".createReadStream")||u.endsWith(".createWriteStream"))&&R(r,e,l,o,u,"Stream.fromReadable or @effect/platform FileSystem/Stream")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();u.includes("cluster")&&u.endsWith(".fork")&&R(r,e,l,o,"cluster.fork","Worker.make or @effect/platform Worker pool")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let f=l.getExpression(),u=f.getText();if(u==="createServer"||u==="connect"||u.endsWith(".createServer")||u.endsWith(".connect")){let p=f.getText();(p.includes("net")||p.includes("tls"))&&R(r,e,l,o,p,"Effect.async or @effect/platform Socket/Server")}}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();u.includes("zlib.")&&(u.includes("deflate")||u.includes("inflate")||u.includes("gzip")||u.includes("gunzip"))&&R(r,e,l,o,"zlib (callback)","Effect.promise or zlib.promises")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="createInterface"||u.endsWith(".createInterface"))&&u.includes("readline")&&R(r,e,l,o,"readline.createInterface","Effect.async or Stream for line-by-line reading")}let d=o.getText().includes("stream");for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.endsWith(".pipeline")&&u.includes("stream")||d&&u==="pipeline")&&R(r,e,l,o,"stream.pipeline (callback)","Effect.promise or stream.promises.pipeline")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="once"||u.endsWith(".once"))&&(u.includes("events")||o.getText().includes("from 'events'"))&&R(r,e,l,o,"events.once","Effect.async for one-shot event")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let f=l.getExpression(),u=f.getText();(u==="watch"||u==="watchFile"||u.endsWith(".watch")||u.endsWith(".watchFile"))&&(u.includes("fs")||f.getText().includes("fs."))&&R(r,e,l,o,"fs.watch / fs.watchFile","Effect.async or fs.watch with EventEmitter")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.includes("runInNewContext")||u.includes("runInContext")||u.includes("runInThisContext"))&&u.includes("vm")&&R(r,e,l,o,"vm.runIn*","Effect.sync for isolated code execution")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="parse"||u.endsWith(".parse"))&&u.includes("url")&&R(r,e,l,o,"url.parse (deprecated)","new URL() or URL.parse for standard parsing")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u.endsWith(".spawnSync")&&u.includes("child_process")||o.getText().includes("child_process")&&u==="spawnSync")&&R(r,e,l,o,"child_process.spawnSync","@effect/platform CommandExecutor or Effect.promise")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();(u==="glob"||u.endsWith(".glob"))&&o.getText().includes("glob")&&l.getArguments().length>=2&&R(r,e,l,o,"glob (callback)","Effect.promise or glob promise API")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText(),p=u.includes("assert")&&u.endsWith(".throws"),g=u.endsWith(".rejects")&&u.includes("expect");(p||g)&&R(r,e,l,o,g?"expect().rejects":"assert.throws","Effect.runPromiseExit + Exit.match for testing Effect failures")}for(let l of o.getDescendantsOfKind($.SyntaxKind.CallExpression)){let u=l.getExpression().getText();u.includes("tls")&&(u.endsWith(".connect")||u.endsWith(".createServer"))&&R(r,e,l,o,"tls.connect / tls.createServer","Effect.async or @effect/platform Socket/TLS")}return r}async function Ns(e,t){let r=t?.extensions??[".ts",".tsx"],n=[],o=0;async function s(a){let i=await(0,Cs.readdir)(a,{withFileTypes:!0}).catch(()=>[]);for(let c of i){let d=(0,tn.join)(a,c.name);if(c.isDirectory())c.name!=="node_modules"&&c.name!==".git"&&c.name!=="dist"&&await s(d);else if(c.isFile()&&r.includes((0,tn.extname)(c.name))){o++;try{n.push(...Xn(d))}catch{}}}}return await s(e),{opportunities:n,fileCount:o}}function vs(e){let t=[];t.push("Migration Opportunities Found:"),t.push("");for(let r of e.opportunities)t.push(` ${r.filePath}:${r.line}:${r.column} ${r.pattern}`),t.push(` \u2192 ${r.suggestion}`),r.codeSnippet&&t.push(` Snippet: ${r.codeSnippet.slice(0,60)}...`),t.push("");return t.push(`Total: ${e.opportunities.length} opportunities in ${e.fileCount} files`),t.join(`
6
6
  `)}var xt=require("effect");var ws=require("effect");function Ts(e,t){for(let r of e){r.type==="effect"&&t.push(r);let n=ws.Option.getOrElse(v(r),()=>[]);n.length>0&&Ts(n,t)}}function gt(e){let t=[],r=[],n=new Set,o=new Map,s=[];Ts(e.root.children,s);for(let d of s){let l=d.typeSignature?.successType,f=(d.requiredServices??[]).map(u=>u.serviceId);if(l){n.add(l);let u=o.get(l)??[];u.push(d.id),o.set(l,u)}t.push({id:d.id,name:d.callee,writes:l,reads:f,location:d.location?{line:d.location.line,column:d.location.column}:void 0})}for(let d=0;d<s.length-1;d++){let l=s[d],f=s[d+1];if(l===void 0||f===void 0)continue;let u=l.typeSignature?.successType??"value";r.push({from:l.id,to:f.id,key:u})}let a="__context__";for(let d of t)for(let l of d.reads)r.push({from:a,to:d.id,key:l});let i=[];for(let d of t)for(let l of d.reads)!n.has(l)&&l!==a&&i.push({key:l,readerId:d.id,readerName:d.name});let c=[];for(let[d,l]of o)l.length>1&&c.push({key:d,writerIds:l});return{nodes:t,edges:r,producedKeys:n,undefinedReads:i,duplicateWrites:c}}function ks(e){let t=new Map,r=new Map;for(let s of e.nodes)t.set(s.id,0),r.set(s.id,[]);for(let s of e.edges){if(s.from==="__context__")continue;let a=r.get(s.from)??[];a.push(s.to),r.set(s.from,a),t.set(s.to,(t.get(s.to)??0)+1)}let n=[];for(let[s,a]of t)s!=="__context__"&&a===0&&n.push(s);let o=[];for(;n.length>0;){let s=n.shift();if(s===void 0)break;o.push(s);for(let a of r.get(s)??[]){let i=(t.get(a)??0)-1;t.set(a,i),i===0&&n.push(a)}}if(o.length===e.nodes.length)return o}function Is(e,t){let r=new Set;for(let n of e.edges)n.to===t&&n.from!=="__context__"&&r.add(n.from);return e.nodes.filter(n=>r.has(n.id))}function As(e,t){let r=new Set;for(let n of e.edges)n.from===t&&r.add(n.to);return e.nodes.filter(n=>r.has(n.id))}function Fs(e,t){let r=new Set,n=[];function o(s){if(!(r.has(s)||s==="__context__")){r.add(s);for(let a of e.edges)a.to===s&&(n.push(a.from),o(a.from))}}return o(t),n}function er(e){let t=[],r=new Set,n=new Set,o=new Map;for(let a of e.nodes)o.set(a.id,[]);for(let a of e.edges){if(a.from==="__context__")continue;let i=o.get(a.from)??[];i.push(a.to),o.set(a.from,i)}function s(a,i){r.add(a),n.add(a),i.push(a);for(let c of o.get(a)??[])if(!r.has(c))s(c,i);else if(n.has(c)){let d=i.indexOf(c);t.push(i.slice(d))}i.pop(),n.delete(a)}for(let a of e.nodes)r.has(a.id)||s(a.id,[]);return t}function Rs(e){let t=[];for(let n of e.undefinedReads)t.push({severity:"warning",type:"undefined-read",message:`Effect "${n.readerName??n.readerId}" reads "${n.key}" which is never produced`,stepIds:[n.readerId],key:n.key});for(let n of e.duplicateWrites)t.push({severity:"warning",type:"duplicate-write",message:`Key "${n.key}" is written by multiple effects: ${n.writerIds.join(", ")}`,stepIds:n.writerIds,key:n.key});let r=er(e);for(let n of r)t.push({severity:"error",type:"cycle",message:`Circular data dependency: ${n.join(" -> ")}`,stepIds:n});return{valid:t.length===0,issues:t}}function pt(e){return e.replace(/[^a-zA-Z0-9_]/g,"_")}function $s(e){let t=[];t.push("flowchart LR"),t.push(""),t.push(" %% Data Flow Graph"),t.push("");for(let r of e.nodes){let n=r.name??r.id,o=r.writes?` [out: ${r.writes}]`:"";t.push(` ${pt(r.id)}["${n}${o}"]`)}t.push("");for(let r of e.edges)r.from!=="__context__"&&t.push(` ${pt(r.from)} -->|${r.key}| ${pt(r.to)}`);if(e.undefinedReads.length>0){t.push(""),t.push(" %% Undefined Reads (warnings)");for(let r of e.undefinedReads){let n=`undefined_${pt(r.key)}`;t.push(` ${n}[/"${r.key} (undefined)"/]`),t.push(` ${n} -.-> ${pt(r.readerId)}`)}t.push(""),t.push(" classDef warning fill:#fff3cd,stroke:#856404");for(let r of e.undefinedReads)t.push(` class undefined_${pt(r.key)} warning`)}return t.join(`
7
7
  `)}var Ze=require("effect");function tr(e){let t=e.trim();return t==="never"||t==="unknown"?[]:Ie(t)}function Ds(e,t){for(let r of e){if(r.type==="effect"){let o=r,s=o.typeSignature?.errorType?tr(o.typeSignature.errorType):[];t.push({stepId:o.id,stepName:o.callee,errors:s,location:o.location?{line:o.location.line,column:o.location.column}:void 0})}let n=Ze.Option.getOrElse(v(r),()=>[]);n.length>0&&Ds(n,t)}}function Ke(e){let t=[],r=new Set,n=new Map,o=[];Ds(e.root.children,t);for(let s of t){s.errors.length===0&&o.push(s.stepId);for(let a of s.errors){r.add(a);let i=n.get(a)??[];i.push(s.stepId),n.set(a,i)}}return{allErrors:Array.from(r).sort(),stepErrors:t,errorToSteps:n,stepsWithoutErrors:o,allStepsDeclareErrors:o.length===0&&t.length>0}}function nn(e,t){return Array.from(new Set([...e,...t])).sort()}function gd(e,t){let r=new Set(t);return e.filter(n=>!r.has(n))}function md(e){let t=[],r=n=>{if(n.type==="effect"){let s=n.typeSignature?.errorType;s&&t.push(...tr(s))}Ze.Option.getOrElse(v(n),()=>[]).forEach(r)};return r(e),nn([],t)}function Ps(e){if(e.type==="cause")return e.causeKind;let t=Ze.Option.getOrElse(v(e),()=>[]);for(let r of t){let n=Ps(r);if(n)return n}}function ht(e,t,r){let n=[...t];for(let o of e)if(o.type==="effect"){let s=o,a=s.typeSignature?.errorType?tr(s.typeSignature.errorType):[];n=nn(n,a),r.push({atNode:s.id,possibleErrors:[...n],defects:[],interruptible:!1});let i=Ze.Option.getOrElse(v(o),()=>[]);i.length>0&&(n=ht(i,n,r))}else if(o.type==="error-handler"){let s=o;n=ht([s.source],n,r);let a=[...n],i=[];s.handlerType==="catchTag"&&s.errorTag?i.push(s.errorTag):s.handlerType==="catchTags"?s.errorTags&&s.errorTags.length>0?i.push(...a.filter(l=>s.errorTags?s.errorTags.includes(l):!1)):i.push(...a.filter(l=>/Error$|^[A-Z]/.test(l))):s.handlerType==="catchIf"||s.handlerType==="catchSome"||s.handlerType==="catchSomeCause"||s.handlerType==="catchSomeDefect"?i.push(...a.slice(0,Math.ceil(a.length/2))):s.handlerType==="catchAll"||s.handlerType==="catchAllCause"||s.handlerType==="catchAllDefect"||s.handlerType==="orElse"||s.handlerType==="orDie"||s.handlerType==="orDieWith"?i.push(...a):s.handlerType==="mapError"||s.handlerType==="mapErrorCause"||s.handlerType==="mapBoth"?i.push(...a):s.handlerType==="sandbox"?i.push(...a):s.handlerType==="ignore"||s.handlerType==="ignoreLogged"?i.push(...a):s.handlerType==="orElseFail"||s.handlerType==="orElseSucceed"?i.push(...a):(s.handlerType==="filterOrDie"||s.handlerType==="filterOrDieMessage")&&i.push(...a);let c=gd(n,i),d=s.handler?md(s.handler):[];if((s.handlerType==="mapError"||s.handlerType==="mapErrorCause"||s.handlerType==="mapBoth")&&i.length>0&&d.length===0){let l=Ps(s.source);l==="fail"?d=["<mapped-fail>"]:l==="die"?d=["<mapped-defect>"]:d=["<mapped-error>"]}n=nn(c,d),r.push({atNode:s.id,possibleErrors:[...n],narrowedBy:{handler:s.handlerType,removedErrors:i,addedErrors:d},defects:[],interruptible:!1}),s.handler&&(n=ht([s.handler],n,r))}else if(o.type==="parallel"||o.type==="race"){let s=Ze.Option.getOrElse(v(o),()=>[]),a=[];for(let i of s){let c=ht([i],n,r);a=nn(a,c)}n=a}else{let s=Ze.Option.getOrElse(v(o),()=>[]);s.length>0&&(n=ht(s,n,r))}return n}function yt(e){let t=[];ht(e.root.children,[],t);let r=new Map;for(let n of t)r.set(n.atNode,n);return{propagation:t,byNodeId:r}}function Ms(e,t){let r=new Set,n=!1;for(let o of e.stepErrors){for(let s of o.errors)r.add(s);if(o.stepId===t){n=!0;break}}return n?Array.from(r).sort():e.allErrors}function Ls(e,t){let r=e.errorToSteps.get(t)??[];return e.stepErrors.filter(n=>r.includes(n.stepId))}function Os(e,t){let r=new Set(t),n=new Set(e.allErrors),o=t.filter(a=>!n.has(a)),s=e.allErrors.filter(a=>!r.has(a));return{valid:o.length===0&&s.length===0,unusedDeclared:o,undeclaredErrors:s,computedErrors:e.allErrors}}function mt(e){return e.replace(/[^a-zA-Z0-9_]/g,"_")}function Ws(e){let t=[];t.push("flowchart LR"),t.push(""),t.push(" %% Error Flow Graph"),t.push(""),t.push(" subgraph Steps");for(let r of e.stepErrors){let n=r.stepName??r.stepId;t.push(` ${mt(r.stepId)}["${n}"]`)}if(t.push(" end"),t.push(""),e.allErrors.length>0){t.push(" subgraph Errors");for(let r of e.allErrors)t.push(` err_${mt(r)}(["${r}"])`);t.push(" end"),t.push("");for(let r of e.stepErrors)for(let n of r.errors)t.push(` ${mt(r.stepId)} -.->|throws| err_${mt(n)}`)}t.push(""),t.push(" classDef error fill:#ffcdd2,stroke:#c62828");for(let r of e.allErrors)t.push(` class err_${mt(r)} error`);if(e.stepsWithoutErrors.length>0){t.push(""),t.push(" classDef noErrors fill:#fff3cd,stroke:#856404");for(let r of e.stepsWithoutErrors)t.push(` class ${mt(r)} noErrors`)}return t.join(`