@tslite/checker 1.6.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-NXZILQOD.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +348 -138
- package/dist/index.d.ts +348 -138
- package/dist/index.js +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +98 -35
- package/dist/types/index.d.ts +98 -35
- package/dist/types/index.js +1 -1
- package/package.json +6 -6
- package/dist/chunk-RDCPWO2E.js +0 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {o,m,ma as ma$1,aa as aa$1,oa as oa$1,ba as ba$1,e,h,i,k,f,n,l,qa,j as j$1,ga as ga$1,R,N as N$1,K,t,J,H,I,E as E$1,_,C,P,$,W as W$1,F,G as G$1,L as L$1,fa as fa$1,r,Q as Q$1,O,M,ra as ra$1,x as x$1,B as B$1,y,v,ca as ca$1,Y as Y$1,ea as ea$1,da as da$1,w,q as q$1,p,ha as ha$1}from'./chunk-RDCPWO2E.js';export{d as DEFAULT_TYPE_LIMITS,c as INSTANTIATION_COUNT_LIMIT,b as INSTANTIATION_DEPTH_LIMIT,i as InstantiationLimitError,a as TYPE_EVAL_DEPTH_LIMIT,h as TypeEvalLimitError,k as UnionTooComplexError,J as apparentType,v as asLiteralOrigin,N as baseLiteralType,G as bindTypeParams,ca as comparable,e as configureTypeLimits,T as contravariantInference,S as covariantInference,qa as discover,da as equals,V as erasedSignature,I as expand1,z as flagAt,ma as format,na as formatTypeArgs,oa as formatTypeDiff,E as freeVars,$ as groundVars,U as inferFromCandidates,W as inferredTypes,Z as instantiate,X as instantiateInContextOf,_ as instantiateLoose,t as isMissingType,y as isNumericLiteralName,u as isObjectOrArrayLiteral,H as isScheme,pa as isSerializable,A as isVariadicTuple,ia as join,ja as joinAll,s as missingType,ga as normalizeUnion,w as ownProp,ra as readonlyMember,D as renameTypeParams,j as resetInstantiationCount,f as resetTypeLimits,ea as resolveConditional,K as resolveOp,p as resolveTypeOp,B as restIndex,r as restTypeAtPosition,o as s,ka as sampleValue,R as silentNever,C as substitute,ba as subtype,fa as typeAtPosition,aa as typeDiff,ha as typeFeatures,g as typeLimits,la as typeNeedsParens,F as typeParamArity,Y as unify,sa as version,L as widen,P as widenInferred,M as widenLiteral,Q as widenOrigin,O as widenType,q as withUndefined,x as withoutUndefined}from'./chunk-RDCPWO2E.js';import {rootScope,childScope,lookup,visibleNames,TSLiteError,walk,desugarJSX,isExprMarker,EXPR_MARKER,fromExprMarker,childrenOf,VisitorKeys,forEachChild,ERASABLE_TYPE_NODE_KEYS}from'@tslite/ast';import {compileProfile,nodeViolation,typeFeatureViolations}from'@tslite/capability';import {fromJson}from'@tslite/json';import*as ke from'@tslite/ast/builders';import {createPositionMap}from'@tslite/language-service';var Dr={Partial:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},optional:true}},Required:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},excludeOptional:true}},Readonly:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},readonly:true}},Pick:{params:[{t:"var",name:"T"},{t:"var",name:"K",bound:{t:"keyof",of:{t:"var",name:"T"}}}],body:{t:"mapped",key:"P",over:{t:"var",name:"K",bound:{t:"keyof",of:{t:"var",name:"T"}}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}}}},Record:{params:[{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}},{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}},body:{t:"var",name:"T"}}},Exclude:{params:[{t:"var",name:"T"},{t:"var",name:"U"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"var",name:"U"},then:{t:"union",of:[]},else:{t:"var",name:"T"}}},Extract:{params:[{t:"var",name:"T"},{t:"var",name:"U"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"var",name:"U"},then:{t:"var",name:"T"},else:{t:"union",of:[]}}},Omit:{params:[{t:"var",name:"T"},{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}}],body:{t:"apply",name:"Pick",args:[{t:"var",name:"T"},{t:"apply",name:"Exclude",args:[{t:"keyof",of:{t:"var",name:"T"}},{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}}]}]}},NonNullable:{params:[{t:"var",name:"T"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"union",of:[{t:"null"},{t:"undefined"}]},then:{t:"union",of:[]},else:{t:"var",name:"T"}}},Parameters:{params:[{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}}],body:{t:"conditional",check:{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}},extends:{t:"fn",params:[{name:"args",type:{t:"var",name:"P"},variadic:true}],returns:{t:"any"}},then:{t:"var",name:"P"},else:{t:"union",of:[]},infer:[{t:"var",name:"P"}]}},ReturnType:{params:[{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}}],body:{t:"conditional",check:{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}},extends:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"var",name:"R"}},then:{t:"var",name:"R"},else:{t:"any"},infer:[{t:"var",name:"R"}]}},PropertyKey:{params:[],body:{t:"union",of:[{t:"string"},{t:"number"}]}}};var kt=[o.typeParam("T")],Un=Object.freeze({Array:kt,ReadonlyArray:kt,Promise:kt});var Mr=(e={})=>rootScope(e),Ae=(e,n)=>childScope(e,n),q=(e,n)=>lookup(e,n),vt=e=>{let n=visibleNames(e);for(let t of n.keys())(t.includes(".")||t.endsWith("#"))&&n.delete(t);return n},jr=new Set(["types","schemes","accessors","asserters","matchers","modules","nominals","noLib"]),Ua=(e={},n)=>{let t=n??{},r=Object.keys(t).filter(s=>!jr.has(s));if(r.length>0)throw new TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${r.map(s=>`'${s}'`).join(", ")} \u2014 expected ${[...jr].join(", ")}. Named types go under 'types'.`,{unknown:r});return {scope:Mr(e),types:t.types??{},schemes:Ka(t.schemes??{}),accessors:t.accessors??{},asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:t.modules??{},lib:t.noLib?{}:Dr,nominals:t.noLib?t.nominals??{}:{...Un,...t.nominals}}};function Ka(e){let n=false,t=Object.entries(e).map(([r,s])=>{let a=o.scheme(s.params,s.body),o$1=a.params===s.params&&a.body===s.body;return o$1||(n=true),[r,o$1?s:a]});return n?Object.fromEntries(t):e}var Wa=(e,n)=>m(e.types,n),Ga=(e,n)=>m(e.schemes,n);var Ir={"unknown-name":"semantic","const-needs-init":"semantic","cannot-redeclare":"semantic","circular-type-alias":"semantic","circular-type-annotation":"semantic","unknown-module":"semantic","not-a-schema":"semantic","type-as-value":"semantic","asserter-needs-name":"semantic","shadows-schema":"semantic",unsupported:"semantic","unused-name":"semantic","assign-to-const":"semantic","for-in-destructuring":"semantic","readonly-write":"type","not-assignable":"type","not-callable":"type","no-such-member":"type","not-object":"type","possibly-nullish":"type","unknown-value":"type","missing-argument":"type","excess-argument":"type","excess-property":"type","spread-argument":"type","required-after-optional":"type","not-iterable":"type","not-spreadable":"type","overwritten-property":"type","implicit-any":"semantic","props-mismatch":"type","no-matching-overload":"type","constraint-violation":"type","wrong-type-argument-count":"type","cast-unsound":"type","unprovable-value":"type","not-arithmetic-operand":"type","operator-not-applicable":"type","implicit-coercion":"type","too-deep":"type","too-complex-union":"type","node-not-allowed":"capability","name-not-allowed":"capability","type-feature-not-allowed":"capability","any-not-allowed":"capability","narrowing-cast-not-allowed":"capability","too-large":"capability","wrong-result-type":"capability"},E=(e,n,t)=>({code:e,kind:Ir[e],severity:"error",node:n,message:t}),W=(e,n,t,r="error")=>({code:e,kind:Ir[e],severity:r,node:n,message:t}),S={notAssignable:(e,n,t,r={})=>{let s=aa$1(n,t,r),a=s.filter(c=>c.path.length>0),o=a.length?` ${oa$1(a)}.`:"",l=E("not-assignable",e,`Type '${ma$1(n)}' is not assignable to type '${ma$1(t)}'.${o}`),i=s.flatMap(c=>{let[u]=c.path;return c.kind==="missing"&&c.path.length===1&&typeof u=="string"?[{name:u,type:c.expected}]:[]});return i.length?{...l,data:{kind:"missing-properties",properties:i}}:l},unknownName:(e,n)=>E("unknown-name",e,`Cannot find name '${n}'.`),notCallable:(e,n)=>E("not-callable",e,`Type '${ma$1(n)}' is not callable.`),noSuchMember:(e,n,t)=>E("no-such-member",e,`Property '${t}' does not exist on type '${ma$1(n)}'.`),notObject:(e,n)=>E("not-object",e,`Type '${ma$1(n)}' has no members to access.`),possiblyNullish:(e,n,t=false)=>{let r=n.null&&n.undefined?"'null' or 'undefined'":n.null?"'null'":"'undefined'";return E("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${r}.`:`Object is possibly ${r}.`)},unknownValue:e=>E("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>E("const-needs-init",e,"'const' declarations must be initialized."),missingArgument:(e,n,t)=>E("missing-argument",e,`Missing argument '${n}' of type '${ma$1(t)}'.`),notASchema:(e,n)=>E("not-a-schema",e,`'${n}' refers to a value, but no type named '${n}' is declared. An asserter needs a schema that is both a value in scope and a declared type.`),typeAsValue:(e,n)=>E("type-as-value",e,`'${n}' only refers to a type, but is being used as a value here. Types are erased at runtime: register '${n}' as a value in scope for the asserter to prove it.`),asserterNeedsName:(e,n)=>E("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>E("shadows-schema",e,`'${n}' shadows the schema of the same name: an asserter would type against the declared schema but prove against this value at runtime. Rename the binding.`),unknownModule:(e,n)=>E("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),cannotRedeclare:(e,n)=>E("cannot-redeclare",e,`Cannot redeclare block-scoped variable '${n}'.`),circularTypeAlias:(e,n)=>E("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>E("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>E("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,r,s=false)=>E(r==="missing"?"missing-argument":"excess-argument",e,s?`Expected at least ${n} arguments, but got ${t}.`:`Expected ${n} arguments, but got ${t}.`),excessProperty:(e,n,t)=>E("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${ma$1(t)}'.`),spreadArgument:e=>E("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>E("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>E("not-iterable",e,`Type '${ma$1(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),notSpreadable:{rest:e=>E("not-spreadable",e,"Rest types may only be created from object types."),spread:e=>E("not-spreadable",e,"Spread types may only be created from object types.")},duplicateKey:{strict:e=>E("cannot-redeclare",e,"An object literal cannot have multiple properties with the same name in strict mode."),identifier:(e,n)=>E("cannot-redeclare",e,`Duplicate identifier '${n}'.`),lateBound:(e,n)=>E("cannot-redeclare",e,`Duplicate property '${n}'.`),alsoDeclared:(e,n)=>E("cannot-redeclare",e,`Property '${n}' was also declared here.`)},overwrittenProperty:(e,n,t)=>({...E("overwritten-property",e,`'${n}' is specified more than once, so this usage will be overwritten.`),relatedInformation:[{node:t,message:"This spread always overwrites this property."}]}),implicitAny:{parameter:(e,n)=>E("implicit-any",e,`Parameter '${n}' implicitly has an 'any' type.`),rest:(e,n)=>E("implicit-any",e,`Rest parameter '${n}' implicitly has an 'any[]' type.`),bindingElement:(e,n)=>E("implicit-any",e,`Binding element '${n}' implicitly has an 'any' type.`),evolving:(e,n)=>E("implicit-any",e,`Variable '${n}' implicitly has type 'any' in some locations where its type cannot be determined.`),variable:(e,n)=>E("implicit-any",e,`Variable '${n}' implicitly has an 'any' type.`),index:(e,n,t)=>E("implicit-any",e,`Element implicitly has an 'any' type because expression of type '${ma$1(n)}' can't be used to index type '${ma$1(t)}'.`),indexNotNumber:e=>E("implicit-any",e,"Element implicitly has an 'any' type because index expression is not of type 'number'.")},tupleIndexOutOfRange:(e,n,t,r)=>E("no-such-member",e,`Tuple type '${ma$1(n)}' of length '${t}' has no element at index '${r}'.`),propsMismatch:(e,n,t)=>E("props-mismatch",e,`Payload is not compatible with the component props '${ma$1(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>E("no-matching-overload",e,`No overload of '${ma$1(n)}' matches the arguments (${t.map(r=>ma$1(r)).join(", ")}).`),constraintViolation:(e,n,t)=>E("constraint-violation",e,`Type '${ma$1(n)}' does not satisfy the constraint '${ma$1(t)}'.`),unsupported:(e,n)=>E("unsupported",e,`${n} is not supported in this language.`),wrongTypeArgumentCount:(e,n,t)=>E("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,r)=>E("wrong-type-argument-count",e,`No overload expects ${n} type arguments, but overloads do exist that expect either ${t} or ${r} type arguments.`),genericTypeArity:(e,n,t,r)=>E("wrong-type-argument-count",e,r===0?`Type '${n}' is not generic.`:t===r?`Generic type '${n}' requires ${r} type argument${r===1?"":"s"}.`:`Generic type '${n}' requires between ${t} and ${r} type arguments.`),unusedName:(e,n)=>W("unused-name",e,`'${n}' is declared but its value is never read.`,"warning"),assignToConst:(e,n,t)=>E("assign-to-const",e,t==="import"?`Cannot assign to '${n}' because it is an import.`:`Cannot assign to '${n}' because it is a constant.`),forInTarget:e=>E("not-assignable",e,"The left-hand side of a 'for...in' statement must be of type 'string' or 'any'."),forInDestructuring:e=>E("for-in-destructuring",e,"The left-hand side of a 'for...in' statement cannot be a destructuring pattern."),readonlyWrite:(e,n)=>E("readonly-write",e,`Index signature in type '${ma$1(n)}' only permits reading.`),readonlyProperty:(e,n)=>E("readonly-write",e,`Cannot assign to '${n}' because it is a read-only property.`),readonlyDelete:e=>E("readonly-write",e,"The operand of a 'delete' operator cannot be a read-only property."),castUnsound:(e,n,t)=>E("cast-unsound",e,`Conversion of type '${ma$1(n)}' to type '${ma$1(t)}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.`),unprovableValue:(e,n,t,r)=>E("unprovable-value",e,`A value of type '${ma$1(n)}' can never satisfy '${r}' (${ma$1(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>E("not-arithmetic-operand",e,n==="operand"?"An arithmetic operand must be of type 'any' or 'number'.":`The ${n==="left"?"left":"right"}-hand side of an arithmetic operation must be of type 'any' or 'number'.`),operatorNotApplicable:(e,n,t,r)=>E("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${ma$1(t)}' and '${ma$1(r)}'.`),implicitCoercion:(e,n,t,r)=>({...E("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${ma$1(n)}' and '${ma$1(t)}'. `+(r?"Use a template literal or 'asString(\u2026)'.":"Use 'stringify(\u2026)' to serialize a structure.")),data:{kind:"implicit-coercion",textConvertible:r}}),notTextConvertible:(e,n)=>({...E("implicit-coercion",e,`Cannot convert '${ma$1(n)}' to text: only string, number, boolean, null and undefined convert. Use 'stringify(\u2026)' to serialize a structure.`),data:{kind:"implicit-coercion",textConvertible:false}})};function V(){let e=[],n=new WeakMap,t=0;return {all:e,get reported(){return t},report(r){t++;let s=n.get(r.node);s||n.set(r.node,s=[]),!s.some(a=>_a(a,r))&&(s.push(r),e.push(r));},hasErrors(){return e.some(r=>r.severity==="error")}}}function _a(e,n){if(e.code!==n.code||e.message!==n.message)return false;let t=e.relatedInformation??[],r=n.relatedInformation??[];return t.length===r.length&&t.every((s,a)=>s.node===r[a].node&&s.message===r[a].message)}function fn(e,n,t){let r=N$1(e);return ca$1(n,O(r),t)||ca$1(r,n,t)}function Fr(e,n,t){return ba$1(e,n,t)}function wt(e,n,t={}){return n.flatMap(r=>r(e,t))}function Me(e,n){let t=r=>{n(r);for(let s of childrenOf(r))t(s);};t(e);}var Ja=e=>Array.isArray(e)?e:[e],Lr=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function At(e,n="error"){return t=>{let r=[];return Me(t,s=>{let a=nodeViolation(s,e);a&&r.push(W("node-not-allowed",s,`'${a}' is not allowed by the capability profile.`,n));}),r}}function $r(e,n="error"){let t=e.typeTier;return r=>{if(t==="author")return [];let s=[];return Me(r,a=>{let o=a,l=o.type==="TSTypeAliasDeclaration"?o.id?.name:void 0;for(let i of [o.typeAnnotation,o.returnType]){if(!i)continue;let c=typeFeatureViolations(ha$1(i,l),t);c.length&&s.push(W("type-feature-not-allowed",a,`authoring type feature${c.length>1?"s":""} '${c.join("', '")}' requires capability tier 'author'.`,n));}}),s}}function x(e,n=new WeakSet){if(!e||typeof e!="object"||n.has(e))return false;switch(n.add(e),e.t){case "any":return true;case "object":return Object.values(e.props).some(t=>x(t.type,n))||!!e.index&&x(e.index.value,n);case "array":return x(e.items,n);case "tuple":return e.elements.some(t=>x(t,n));case "union":case "intersection":return e.of.some(t=>x(t,n));case "fn":return e.params.some(t=>x(t.type,n))||x(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(r=>x(r.type,n))||x(t.returns,n));case "keyof":return x(e.of,n);case "index":return x(e.obj,n)||x(e.key,n);case "mapped":return x(e.over,n)||x(e.body,n);case "conditional":return x(e.check,n)||x(e.extends,n)||x(e.then,n)||x(e.else,n);case "returnType":case "parameters":return x(e.fn,n);case "apply":return e.args.some(t=>x(t,n));default:return false}}function xr(e,n="error"){return t=>{if(!e.typeStrict)return [];let r=[];return Me(t,s=>{let a=s;for(let o of [a.typeAnnotation,a.returnType])if(o&&x(o)){r.push(W("any-not-allowed",s,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),r}}function Vr(e,n="error"){return (t,r)=>{let s=r.overlay;if(!e.typeStrict||!s)return [];let a=r.schemes??{},o=[];return Me(t,l=>{if(l.type!=="TSAsExpression")return;let{expression:i}=l,c=s.get(i)?.type,u=s.get(l)?.type;!c||!u||x(u)||!fn(c,u,a)||Fr(c,u,a)||o.push(W("narrowing-cast-not-allowed",l,`A cast may only widen under 'strict': '${ma$1(c)}' is not assignable to '${ma$1(u)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),o}}function Ot(e,n="error"){let t=new Set(e);return r=>{let s=[];return Me(r,a=>{if(a.type!=="CallExpression")return;let o=a.callee;if(o.type!=="Identifier")s.push(W("name-not-allowed",o,"Only direct calls to allowed functions are permitted.",n));else {let l=o.name;t.has(l)||s.push(W("name-not-allowed",o,`Function '${l}' is not allowed here.`,n));}}),s}}function Kn(e,n,t={}){let r=new Set(Ja(e)),s=t.severity??"error",a=[...r].join("/");return o=>{let l=[],i=(c,u)=>{let p=r.has(c.type),m=p?u+1:u;p&&m>n&&l.push(W("too-deep",c,`Nesting of ${a} exceeds ${n}${t.hint?` \u2014 ${t.hint}`:""}.`,s));for(let y of childrenOf(c))i(y,m);};return i(o,0),l}}var Pt=(e=3,n="error")=>Kn(Lr,e,{hint:"use a pipe instead of nesting functions",severity:n}),Rt=(e,n="error")=>Kn("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),Tt=(e,n="error")=>Kn("MemberExpression",e,{severity:n});function Ct(e,n="error"){return t=>{let r=[],s=(a,o)=>{if(o>e){r.push(W("too-deep",a,`Expression nesting exceeds ${e}.`,n));return}for(let l of childrenOf(a))s(l,o+1);};return s(t,0),r}}function Dt(e,n="error"){return t=>{let r=0;return Me(t,()=>{r++;}),r>e?[W("too-large",t,`Expression has ${r} nodes (max ${e}).`,n)]:[]}}function jt(e,n="error"){return t=>{let r=[];return Me(t,s=>{if(s.type==="CallExpression"){let a=s.arguments;a&&a.length>e&&r.push(W("too-large",s,`Call has ${a.length} arguments (max ${e}).`,n));}}),r}}function Mt(e,n={},t="error"){return (r,s)=>{let a=s.overlay?.get(r)?.type;return a?ba$1(a,e,n)?[]:[W("wrong-result-type",r,`Result type '${ma$1(a)}' is not assignable to the required '${ma$1(e)}'.`,t)]:[]}}function Wn(e){let n=[At(e),$r(e),xr(e),Vr(e)];return e.hostAllow!=="*"&&n.push(Ot([...e.hostAllow])),n}function Ya(e){return Wn(compileProfile(e))}var It=[{op:"+",category:"additive",result:"additive"},{op:"-",category:"arithmetic",result:"number"},{op:"*",category:"arithmetic",result:"number"},{op:"/",category:"arithmetic",result:"number"},{op:"%",category:"arithmetic",result:"number"},{op:"**",category:"arithmetic",result:"number"},{op:"&",category:"bitwise",result:"number"},{op:"|",category:"bitwise",result:"number"},{op:"^",category:"bitwise",result:"number"},{op:"<<",category:"bitwise",result:"number"},{op:">>",category:"bitwise",result:"number"},{op:">>>",category:"bitwise",result:"number"},{op:"<",category:"relational",result:"boolean"},{op:">",category:"relational",result:"boolean"},{op:"<=",category:"relational",result:"boolean"},{op:">=",category:"relational",result:"boolean"},{op:"===",category:"equality",result:"boolean"},{op:"!==",category:"equality",result:"boolean"},{op:"==",category:"equality",result:"boolean"},{op:"!=",category:"equality",result:"boolean"}],mn=new Map(It.map(e=>[e.op,e])),Ur={number:o.number,boolean:o.boolean,string:o.string},Ft=e=>Ur[e],Kr=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],Qa={number:o.number,boolean:o.boolean,string:o.string,undefined:o.undefined},Ha=[{op:"&&"},{op:"||"},{op:"??"}];function Za(e,n={}){return It.filter(t=>t.result==="additive"?ba$1(o.string,e,n)||ba$1(o.number,e,n):ba$1(Ur[t.result],e,n))}function eo(e,n={}){return Kr.filter(t=>ba$1(Qa[t.result],e,n))}var Ie=e=>({bindings:new Map,parent:e}),Gr=e=>e.charCodeAt(0)===95;function Gn(e,n,t,r,s,a){let o=e.bindings.get(t);o&&(o.exempt=true);let l={name:t,node:r,kind:s,exempt:a,used:false};e.bindings.set(t,l),n.all.push(l);}function hn(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)hn(r,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let r=t.path[0];typeof r=="string"&&_n(n,r);return}for(let r of Object.keys(t))hn(t[r],n);}function _r(e,n){let t=e;hn(t.typeAnnotation,n),hn(t.returnType,n);}function _n(e,n){for(let t=e;t;t=t.parent){let r=t.bindings.get(n);if(r){r.used=true;return}}}function fe(e,n,t,r,s,a){if(e)switch(e.type){case "Identifier":{let o=e.name;_r(e,n),Gn(n,t,o,e,r,s||a&&Gr(o));return}case "ObjectPattern":{let o=e.properties,l=o[o.length-1],i=!!l&&l.type==="RestElement";o.forEach((c,u)=>{let p=i&&u<o.length-1;if(c.type==="RestElement")fe(c.argument,n,t,r,s,false);else {let m=c;m.computed&&L(m.key,n,t),fe(m.value,n,t,r,s||p,!m.shorthand);}});return}case "ArrayPattern":{for(let o of e.elements){if(!o)continue;let l=o;fe(l.type==="RestElement"?l.argument:l,n,t,r,s,true);}return}case "AssignmentPattern":fe(e.left,n,t,r,s,a);return;case "RestElement":fe(e.argument,n,t,r,s,true);return;default:return}}function yn(e,n,t){if(e)switch(e.type){case "AssignmentPattern":L(e.right,n,t),yn(e.left,n,t);return;case "ObjectPattern":for(let r of e.properties)yn(r.type==="RestElement"?r.argument:r.value,n,t);return;case "ArrayPattern":for(let r of e.elements)r&&yn(r,n,t);return;case "RestElement":yn(e.argument,n,t);return;default:return}}function Wr(e,n,t,r){for(let s of e.declarations)fe(s.id,n,t,"local",r,false),L(s.init,n,t);}function Lt(e,n,t){let r=e,s=Ie(n),a=r.params??[];for(let o of a)fe(o,s,t,"parameter",false,true);for(let o of a)yn(o,s,t);L(r.body,s,t);}function L(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(_r(e,n),e.type){case "Identifier":_n(n,e.name);return;case "MemberExpression":{let r=e;L(r.object,n,t),r.computed&&L(r.property,n,t);return}case "Property":{let r=e;r.computed&&L(r.key,n,t),L(r.value,n,t);return}case "Program":case "BlockStatement":{let r=Ie(n);for(let s of e.body??[])L(s,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":Lt(e,n,t);return;case "FunctionDeclaration":{let r=e.id;r&&Gn(n,t,r.name,r,"local",false),Lt(e,n,t);return}case "CatchClause":{let r=e,s=Ie(n);fe(r.param,s,t,"local",true,false),L(r.body,s,t);return}case "SwitchStatement":{let r=e;L(r.discriminant,n,t);let s=Ie(n);for(let a of r.cases){L(a.test,s,t);for(let o of a.consequent??[])L(o,s,t);}return}case "ForStatement":{let r=e,s=Ie(n);L(r.init,s,t),L(r.test,s,t),L(r.update,s,t),L(r.body,s,t);return}case "ForOfStatement":case "ForInStatement":{let r=e;L(r.right,n,t);let s=Ie(n),a=r.left;if(a.type==="VariableDeclaration")for(let o of a.declarations)fe(o.id,s,t,"local",false,true);else L(a,s,t);L(r.body,s,t);return}case "VariableDeclaration":Wr(e,n,t,false);return;case "ImportDeclaration":{for(let r of e.specifiers){let s=r.local;s&&Gn(n,t,s.name,s,"import",Gr(s.name));}return}case "ExportNamedDeclaration":{let r=e;if(r.declaration){let s=r.declaration;if(s.type==="VariableDeclaration")Wr(s,n,t,true);else if(s.type==="FunctionDeclaration"){let a=s.id;a&&Gn(n,t,a.name,a,"local",true),Lt(s,n,t);}else L(s,n,t);}else for(let s of r.specifiers)_n(n,s.local.name);return}case "TSAsExpression":L(e.expression,n,t);return;case "TSTypeAliasDeclaration":hn(e.typeAnnotation,n);return;case "JsonExpression":$t(e.body,n,t);return;case "JSXOpeningElement":{let r=e;qr(r.name,n);for(let s of r.attributes??[])L(s,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":L(e.value,n,t);return;default:{let r=m(VisitorKeys,e.type);if(!r)return;let s=e;for(let a of r){let o=m(s,a);if(Array.isArray(o))for(let l of o)L(l,n,t);else L(o,n,t);}return}}}function qr(e,n,t){e&&(e.type==="JSXIdentifier"?_n(n,e.name):e.type==="JSXMemberExpression"&&qr(e.object,n));}function $t(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let s of e)$t(s,n,t);return}let r=e;if(isExprMarker(r)){try{L(fromJson(r),n,t);}catch{}return}for(let s of Object.keys(r))$t(r[s],n,t);}function xt(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};L(e,Ie(void 0),t);let r=[];for(let s of t.all)s.used||s.exempt||(s.kind==="parameter"?n.parameters:n.locals)&&r.push(S.unusedName(s.node,s.name));return r}var ao=new Set(["const","import"]),gn=e=>({binds:new Map,parent:e});function oo(e,n){for(let t=e;t;t=t.parent){let r=t.binds.get(n);if(r)return r}}function Fe(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Fe(n.argument):Fe(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?Fe(n):[]);case "AssignmentPattern":return Fe(e.left);case "RestElement":return Fe(e.argument);default:return []}}function Sn(e){switch(e.type){case "ArrayExpression":return e.elements.flatMap(n=>n?Sn(n):[]);case "ObjectExpression":return e.properties.flatMap(n=>Sn(n.type==="SpreadElement"?n.argument:n.value));case "SpreadElement":return Sn(e.argument);case "AssignmentExpression":return Sn(e.left);default:return [e]}}var qn=(e,n,t)=>{for(let r of Fe(n))e.binds.set(r.name,t);};function bn(e,n,t){if(!e)return;if(e.type!=="Identifier"){if(e.type==="ArrayExpression"||e.type==="ObjectExpression")for(let a of Sn(e))bn(a,n,t);else for(let a of Fe(e))bn(a,n,t);return}let r=e.name,s=oo(n,r);s&&ao.has(s)&&(t.invalid.add(e),t.out.push(S.assignToConst(e,r,s==="import"?"import":"const")));}function z(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let r=e;bn(r.left,n,t),z(r.right,n,t);return}case "UpdateExpression":{bn(e.argument,n,t);return}case "Program":case "BlockStatement":{let r=gn(n);for(let s of e.body??[])z(s,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,s=gn(n);for(let a of r.params??[])qn(s,a,"param");z(r.body,s,t);return}case "CatchClause":{let r=e,s=gn(n);qn(s,r.param,"param"),z(r.body,s,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,s=gn(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)qn(s,o.id,a.kind);else a&&r.left?(bn(a,s,t),z(a,s,t)):a&&z(a,s,t);z(r.right,n,t),z(r.test,s,t),z(r.update,s,t),z(r.body,s,t);return}case "VariableDeclaration":{let r=e;for(let s of r.declarations)z(s.init,n,t),qn(n,s.id,r.kind);return}case "ImportDeclaration":{for(let r of e.specifiers){let s=r.local;s&&n.binds.set(s.name,"import");}return}case "ExportNamedDeclaration":{let r=e;r.declaration&&z(r.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":z(e.expression,n,t);return;default:{let r=m(VisitorKeys,e.type);if(!r)return;let s=e;for(let a of r){let o=m(s,a);if(Array.isArray(o))for(let l of o)z(l,n,t);else z(o,n,t);}return}}}function Vt(e){let n={out:[],invalid:new WeakSet};return z(e,gn(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var Nn=e=>({decls:new Map,parent:e});function lo(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}function Ze(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Ze(n.argument):Ze(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?Ze(n):[]);case "AssignmentPattern":return Ze(e.left);case "RestElement":return Ze(e.argument);default:return []}}var zn=(e,n)=>{for(let t of Ze(n))e.decls.set(t.name,t);};function G(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let r=lo(n,e.name);r&&r!==e&&t.set(e,r);return}case "MemberExpression":{let r=e;G(r.object,n,t),r.computed&&G(r.property,n,t);return}case "Property":{let r=e;r.computed&&G(r.key,n,t),G(r.value,n,t);return}case "Program":case "BlockStatement":{let r=Nn(n);for(let s of e.body??[])G(s,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,s=e.id;s&&n.decls.set(s.name,s);let a=Nn(n);for(let o of r.params??[])zn(a,o);G(r.body,a,t);return}case "CatchClause":{let r=e,s=Nn(n);zn(s,r.param),G(r.body,s,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,s=Nn(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)zn(s,o.id);else a&&G(a,s,t);G(r.right,n,t),G(r.test,s,t),G(r.update,s,t),G(r.body,s,t);return}case "VariableDeclaration":{for(let r of e.declarations)zn(n,r.id),G(r.init,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let s=r.local;s&&n.decls.set(s.name,s);}return}case "TSTypeAliasDeclaration":{let r=e.id;r&&n.decls.set(r.name,r);return}case "TSAsExpression":G(e.expression,n,t);return;default:{let r=m(VisitorKeys,e.type);if(!r)return;let s=e;for(let a of r){let o=m(s,a);if(Array.isArray(o))for(let l of o)G(l,n,t);else G(o,n,t);}return}}}function co(e){let n=new WeakMap;return G(e,Nn(void 0),n),n}function fo(e,n){return e.kind==="local"?n.kind==="local"&&e.declaration===n.declaration:n.kind==="environment"&&e.path.length===n.path.length&&e.path.every((t,r)=>t===n.path[r])}var Bn=e=>({decls:new Map,parent:e});function Jr(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}var mo=e=>e?.type==="Literal"&&typeof e.value=="string";function Xn(e,n){if(!n&&e.type==="Identifier")return e.name;if(mo(e))return e.value}function nn(e,n,t){if(e)switch(e.type){case "Identifier":{let r=e.name,s=Jr(n,r);return s?t.aliases.get(s):[r]}case "MemberExpression":{let r=e,s=nn(r.object,n,t),a=Xn(r.property,r.computed);return s&&a!==void 0?[...s,a]:void 0}case "ChainExpression":return nn(e.expression,n,t);default:return}}var Xr=(e,n)=>{let t=Jr(n,e);return t?{kind:"local",declaration:t}:{kind:"environment",path:[e]}};function Jn(e,n,t,r,s){r.out.push({site:"node",node:e,symbol:Xr(n,t),...s?{shorthand:s}:{}});}function kn(e,n,t,r){n.decls.set(e.name,e),t.out.push({site:"node",node:e,symbol:{kind:"local",declaration:e},isDeclaration:true,...r?{shorthand:r}:{}});}function me(e,n,t,r,s,a){if(e)switch(e.type){case "Identifier":kn(e,n,t),tn(e,n,t),s&&r&&t.aliases.set(e,r);return;case "ObjectPattern":for(let o of e.properties){if(o.type==="RestElement"){me(o.argument,n,t,void 0,false,a);continue}let l=o,i=l.key;l.computed&&j(i,a,t);let c=Xn(i,l.computed),u=r&&c!==void 0?[...r,c]:void 0,p=l.value,m=p.type==="AssignmentPattern"?p.left:p,y=!!l.shorthand&&m.type==="Identifier";u&&t.out.push({site:"node",node:i,symbol:{kind:"environment",path:u},...y?{shorthand:"binding"}:{}}),y?(kn(m,n,t,"property"),tn(m,n,t),s&&u&&t.aliases.set(m,u),p.type==="AssignmentPattern"&&j(p.right,a,t)):me(p,n,t,u,s,a);}return;case "ArrayPattern":for(let o of e.elements)me(o,n,t,void 0,false,a);return;case "AssignmentPattern":{let o=e;me(o.left,n,t,r,s,a),j(o.right,a,t);return}case "RestElement":me(e.argument,n,t,void 0,false,a);return;default:j(e,n,t);}}function tn(e,n,t){let r=e;for(let a of ERASABLE_TYPE_NODE_KEYS)Ut(m(r,a),n,t);let s=r.typeParameters;if(Array.isArray(s))for(let a of s)tn(a,n,t);}function Ut(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let s of e)Ut(s,n,t);return}let r=e;if(r.type==="TSTypeQuery"){let s=r.exprName,a=Xr(s[0],n);t.out.push({site:"typeQuery",node:e,segment:0,symbol:a});let o=a.kind==="environment"?a.path:t.aliases.get(a.declaration);o&&s.slice(1).forEach((l,i)=>t.out.push({site:"typeQuery",node:e,segment:i+1,symbol:{kind:"environment",path:[...o,...s.slice(1,i+2)]}}));return}for(let[s,a]of Object.entries(r))s!=="loc"&&s!=="range"&&Ut(a,n,t);}function Yr(e,n,t){if(e){if(e.type==="JSXIdentifier"){let r=e.name;/^[A-Z_$]/.test(r)&&Jn(e,r,n,t);return}if(e.type==="JSXMemberExpression"){let r=e;Yr(r.object,n,t);let s=r.object,a=s.type==="JSXIdentifier"?nn({type:"Identifier",name:s.name},n,t):void 0;a&&t.out.push({site:"node",node:r.property,symbol:{kind:"environment",path:[...a,r.property.name]}});}}}function j(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":Jn(e,e.name,n,t);return;case "MemberExpression":{let r=e;j(r.object,n,t);let s=nn(r.object,n,t),a=Xn(r.property,r.computed);s&&a!==void 0?t.out.push({site:"node",node:r.property,symbol:{kind:"environment",path:[...s,a]}}):r.computed&&j(r.property,n,t);return}case "Property":{let r=e;if(r.computed&&j(r.key,n,t),r.shorthand&&r.value.type==="Identifier"){let s=r.value;Jn(r.value,s.name,n,t,"property");return}j(r.value,n,t);return}case "Program":case "BlockStatement":{let r=Bn(n);for(let s of e.body??[])j(s,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,s=e.id;s&&kn(s,n,t);let a=Bn(n);for(let o of r.params??[])me(o,a,t,void 0,false,a);tn(e,a,t),j(r.body,a,t);return}case "CatchClause":{let r=e,s=Bn(n);me(r.param,s,t,void 0,false,s),j(r.body,s,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,s=Bn(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)me(o.id,s,t,void 0,false,s),j(o.init,s,t);else a&&j(a,s,t);j(r.right,n,t),j(r.test,s,t),j(r.update,s,t),j(r.body,s,t);return}case "VariableDeclaration":{let r=e;for(let s of r.declarations){let a=nn(s.init,n,t);me(s.id,n,t,a,r.kind==="const",n),j(s.init,n,t);}return}case "AssignmentExpression":{let r=e,s=r.left;r.operator==="="&&["ObjectPattern","ArrayPattern","ObjectExpression","ArrayExpression"].includes(s.type)?en(s,nn(r.right,n,t),n,t):j(s,n,t),j(r.right,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let s=r,a=s.type==="ImportSpecifier"&&(s.imported===s.local||s.imported?.name===s.local.name);kn(s.local,n,t,a?"import":void 0);}return}case "TSTypeAliasDeclaration":{let r=e.id;kn(r,n,t),t.typeAliases.has(r.name)||t.typeAliases.set(r.name,r),tn(e,n,t);return}case "TSAsExpression":j(e.expression,n,t),tn(e,n,t);return;case "JSXOpeningElement":case "JSXClosingElement":{let r=e;if(Yr(r.name,n,t),e.type==="JSXOpeningElement")for(let s of r.attributes)s.type==="JSXSpreadAttribute"?j(s.argument,n,t):j(s.value,n,t);return}default:{let r=m(VisitorKeys,e.type);if(!r)return;let s=e;for(let a of r){let o=m(s,a);if(Array.isArray(o))for(let l of o)j(l,n,t);else j(o,n,t);}return}}}function zr(e){if(e.type==="AssignmentPattern"){let n=e;return {target:n.left,value:n.right}}if(e.type==="AssignmentExpression"&&e.operator==="="){let n=e;return {target:n.left,value:n.right}}}function en(e,n,t,r){switch(e.type){case "ObjectPattern":case "ObjectExpression":for(let s of e.properties){if(s.type==="RestElement"||s.type==="SpreadElement"){en(s.argument,void 0,t,r);continue}let a=s,o=a.key;a.computed&&j(o,t,r);let l=Xn(o,a.computed),i=n&&l!==void 0?[...n,l]:void 0,c=a.value,u=zr(c),p=u?.target??c,m=!!a.shorthand&&p.type==="Identifier";i&&r.out.push({site:"node",node:o,symbol:{kind:"environment",path:i},...m?{shorthand:"binding"}:{}}),m?Jn(p,p.name,t,r,"property"):en(p,i,t,r),u&&j(u.value,t,r);}return;case "ArrayPattern":case "ArrayExpression":for(let s of e.elements)s&&en(s.type==="SpreadElement"?s.argument:s,void 0,t,r);return;case "AssignmentPattern":case "AssignmentExpression":{let s=zr(e);if(!s)return j(e,t,r);en(s.target,n,t,r),j(s.value,t,r);return}case "RestElement":en(e.argument,void 0,t,r);return;default:j(e,t,r);}}function yo(e,n){let t=e.typeRefs;if(t?.length)for(let r of t){let s=r.name?n.typeAliases.get(r.name):void 0;s&&n.out.push({site:"typeRef",ref:r,symbol:{kind:"local",declaration:s}});}}function ho(e){let n={out:[],aliases:new WeakMap,typeAliases:new Map};return j(e,Bn(void 0),n),yo(e,n),n.out}function se(e,n,t,r){switch(e.t){case "apply":if(n.has(e.name)&&r.add(e.name),t.has(e.name))for(let s of e.args)se(s,n,t,r);return;case "union":case "intersection":for(let s of e.of)se(s,n,t,r);return;case "conditional":se(e.check,n,t,r),se(e.extends,n,t,r),se(e.then,n,t,r),se(e.else,n,t,r);return;case "keyof":se(e.of,n,t,r);return;case "index":se(e.obj,n,t,r),se(e.key,n,t,r);return;case "returnType":case "parameters":se(e.fn,n,t,r);return;default:return}}function Hr(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),s=new Map;for(let[o,l]of Object.entries(e)){let i=new Set;se(l.body,t,r,i),s.set(o,i);}let a=new Set;for(let o of t){let l=new Set,i=[...s.get(o)];for(;i.length;){let c=i.pop();if(c===o){a.add(o);break}l.has(c)||(l.add(c),i.push(...s.get(c)));}}return a}var Kt=e=>`a\0${e}`,Qr=(e,n)=>`p\0${e}\0${n}`;function Zr(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),s=new Map,a=new Map;for(let[f,g]of Object.entries(e))a.set(f,go(g.body));let o=f=>a.get(f),l=(f,g)=>{switch(f.t){case "literal":return g.has(String(f.value))?[String(f.value)]:[];case "union":return f.of.flatMap(h=>l(h,g));case "keyof":{let h=f.of.t==="apply"?m(e,f.of.name):void 0,b=h?Wt(h.body):void 0;return b?[...b].filter(w=>g.has(w)):[]}default:return []}},i=(f,g,h)=>{switch(f.t){case "apply":if(t.has(f.name)&&h.add(Kt(f.name)),r.has(f.name)||g==="annotation")for(let b of f.args)i(b,g,h);return;case "index":{if(f.obj.t==="apply"){let b=o(f.obj.name);if(b)for(let w of l(f.key,b))h.add(Qr(f.obj.name,w));}i(f.obj,g,h),i(f.key,g,h);return}case "union":case "intersection":for(let b of f.of)i(b,g,h);return;case "conditional":i(f.check,g,h),i(f.extends,g,h),i(f.then,g,h),i(f.else,g,h);return;case "keyof":i(f.of,g,h);return;case "returnType":case "parameters":i(f.fn,g,h);return;case "array":g==="annotation"&&i(f.items,g,h);return;case "tuple":if(g==="annotation")for(let b of f.elements)i(b,g,h);return;default:return}};for(let f of Object.keys(e)){let g=new Set;i(e[f].body,"aliasBody",g),s.set(Kt(f),g);for(let[h,b]of o(f)??[]){let w=new Set;for(let P of b)i(P,"annotation",w);s.set(Qr(f,h),w);}}let c=new Map,u=f=>{let g=c.get(f);if(g)return g;let h=new Set;c.set(f,h);let b=[...s.get(f)??[]];for(;b.length;){let w=b.pop();h.has(w)||(h.add(w),b.push(...s.get(w)??[]));}return h},p=new Map,m$1=[];for(let f of s.keys()){if(!f.startsWith("p\0")||!u(f).has(f))continue;m$1.push(f);let[,g,h]=f.split("\0");p.has(g)||p.set(g,new Set),p.get(g).add(h);}let y=new Set;for(let f of Object.keys(e)){let g=Kt(f),h=u(g);m$1.some(b=>h.has(b)&&u(b).has(g))&&y.add(f);}return {properties:p,aliases:y}}function go(e){let n=new Map,t=r=>{if(r.t==="union"||r.t==="intersection")r.of.forEach(t);else if(r.t==="object")for(let[s,a]of Object.entries(r.props))n.has(s)||n.set(s,[]),n.get(s).push(a.type);};return t(e),n}function Gt(e,n$1){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(r=>Gt(r,n$1))};if(e.t!=="object")return e;let t={...e.props};for(let r of Object.keys(t))n$1.has(r)&&n(t,r,{...t[r],type:{t:"any"}});return {...e,props:t}}function Wt(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...Wt(n)]));case "union":{let[n,...t]=e.of.map(Wt);return new Set([...n??[]].filter(r=>t.every(s=>s.has(r))))}default:return new Set}}var Yn=e=>e.typeAnnotation,Qn=e=>e.returnType;function Hn(e){let n=e.typeParameters;if(n?.length)return n.map(t=>o.typeParam(t.name,{bound:t.bound,default:t.default}))}var ee=e=>e.type==="Identifier"?e.name:null,es=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?ee(n.id):null}return ee(e)},ns=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},ye=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function ts(e){let n=r=>r&&r.type==="Literal"&&typeof r.value=="string"?r.value:null;if(e.length===1&&e[0].type==="ArrayExpression"){let r=[];for(let s of e[0].elements){let a=n(s);if(a===null)return null;r.push(a);}return r}let t=[];for(let r of e){let s=n(r);if(s===null)return null;t.push(s);}return t.length?t:null}function _t(e){if(e.type==="Identifier")return e.name;if(e.type==="MemberExpression"){let n=e;if(n.computed||n.property.type!=="Identifier")return null;let t=_t(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var Oe=e=>{if(e.type!=="TemplateLiteral")return null;let n=e;if(n.expressions.length!==0||n.quasis.length!==1)return null;let{cooked:t,raw:r}=n.quasis[0].value;return t??r},he=e=>e.type==="Literal"||Oe(e)!==null;function Le(e){let n=Oe(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return o.unknown;let r=t.value;return r===null?o.null:r===void 0?o.undefined:typeof r=="string"||typeof r=="number"||typeof r=="boolean"?{t:"literal",value:r,fresh:true}:o.unknown}var Pe=e=>{let n=Oe(e);if(n!==null)return o.literal(n);let t=e.value;return t===null?o.null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?o.literal(t):Le(e)},rs=e=>e.type==="ArrowFunctionExpression";function Y(e){switch(e.type){case "ArrowFunctionExpression":{let n=e;return e.typeParameters?.length?false:n.params.some(t=>!qt(t))?true:Qn(e)===void 0&&n.body.type!=="BlockStatement"&&Y(n.body)}case "ObjectExpression":return e.properties.some(n=>n.type==="Property"&&Y(n.value));case "ArrayExpression":return e.elements.some(n=>!!n&&Y(n));case "ConditionalExpression":{let n=e;return Y(n.consequent)||Y(n.alternate)}case "LogicalExpression":{let n=e;return (n.operator==="||"||n.operator==="??")&&(Y(n.left)||Y(n.right))}default:return false}}var qt=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return Yn(n)!==void 0},ss=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,wn=e=>ss(e)?e.args[0]:e,An=e=>ss(e)?e:o.promise(e);function En(e){return e.t==="tuple"?true:e.t==="array"?En(e.items):e.t==="union"?e.of.some(En):false}var So=e=>e?.t==="literal"?typeof e.value:void 0,vn=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>vn(t,n));function rn(e,n){let t=So(n);switch(e.t){case "literal":return t===void 0||typeof e.value===t;case "boolean":return t==="boolean";case "keyof":return t===void 0||t==="string";case "union":case "intersection":return e.of.some(r=>rn(r,n));case "var":{let r=e.bound??o.unknown;return t!==void 0&&vn(r,t)||t===void 0&&bo(r)?true:rn(r,n)}default:return false}}var bo=e=>vn(e,"string")||vn(e,"number")||vn(e,"boolean"),X=(e,n)=>{let t=e;for(let r=0;r<50&&t.t==="apply";r++){let s=I(t,n);if(s===t||s.t==="apply"&&s.name===t.name)break;t=s;}return t};function as(e){let n=Qn(e);if(!n)return null;let t=e.params.map((s,a)=>({name:ee(s)??`arg${a}`,type:Yn(s)??o.unknown})),r=Hn(e);return {t:"fn",params:t,returns:e.async?An(n):n,...r?{typeParams:r}:{}}}var ge={then:{},else:{}};function Z(e){if(e.type==="Identifier")return e.name;if(e.type!=="MemberExpression")return null;let n=e;if(n.optional)return null;let t=Z(n.object);return t===null?null:!n.computed&&n.property.type==="Identifier"?`${t}.${n.property.name}`:n.computed&&n.property.type==="Literal"&&typeof n.property.value=="string"?`${t}.${n.property.value}`:null}var ie=e=>e.includes("."),xe=e=>`${e}#`,et=e=>e.endsWith("#");function Ve(e,n,t){let r=q(e,n);return r!==void 0?r:ms(e,n,t)}var be=(e,n,t)=>{let r=Ve(e,n,t);return r===void 0?void 0:J(r,t)};function ms(e,n,t){let r=n.lastIndexOf(".");if(r<0)return;let s=Ve(e,n.slice(0,r),t);if(s!==void 0)return qa(s,[n.slice(r+1)],t)?.type}function No(e,n){let t=n+".",r=new Set;for(let s=e;s;s=s.parent)for(let a of Object.keys(s.vars))(a.startsWith(t)||a===n)&&ie(a)&&r.add(a);return [...r].sort((s,a)=>s.length-a.length)}function zt(e,n$1,t){let r=No(e,n$1);if(!r.length)return e;let s={};for(let a of r)n(s,a,ms(Ae(e,s),a,t)??o.unknown);return Ae(e,s)}var ys=new Set(["string","number","boolean","undefined","function","object"]),Bo={string:o.string,number:o.number,boolean:o.boolean,undefined:o.undefined,object:o.union([o.nonPrimitive,o.null])};function hs(e,n){switch(n){case "string":return e.t==="string"||e.t==="literal"&&typeof e.value=="string";case "number":return e.t==="number"||e.t==="literal"&&typeof e.value=="number";case "boolean":return e.t==="boolean"||e.t==="literal"&&typeof e.value=="boolean";case "undefined":return e.t==="undefined";case "function":return e.t==="fn"||e.t==="overload";case "object":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="null"||e.t==="nonPrimitive";default:return false}}var ko=o.literal(true),vo=o.literal(false),ue=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[ko,vo]:[n]),sn=(e,n)=>{let t=e.filter(r=>Zn(r)||n(r));return t.length===e.length?null:ga$1(t)},Zn=e=>e.t==="unknown"||e.t==="any";function os(e,n){let t=e,r=n;if(e.type==="UnaryExpression"&&t.operator==="typeof"&&n.type==="Literal"&&typeof r.value=="string"){let s=Z(t.argument);if(s!==null)return {name:s,tag:r.value}}return null}function Eo(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let s=ue(e).filter(a=>ba$1(a,n,t));return ga$1(s)}function wo(e,n,t){return e.t==="unknown"||e.t==="any"?null:sn(ue(e),r=>!ba$1(r,n,t))}function Ao(e,n){if(!ys.has(n))return null;let t=m(Bo,n),r=ue(e),a=r.flatMap(o=>t&&Zn(o)?ue(t):[o]).filter(o=>hs(o,n)||Zn(o));return a.length===r.length&&a.every((o,l)=>o===r[l])?null:ga$1(a)}function Oo(e,n){if(!ys.has(n))return null;let t=ue(e),r=t.filter(s=>Zn(s)||!hs(s,n));return r.length===t.length?null:ga$1(r)}function is(e,n){let t=Z(e);if(t!==null&&he(n)){let r=Pe(n);if(r.t==="literal"||r.t==="null")return {name:t,lit:r}}return null}function ls(e,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&he(n)){let t=Z(e.object),r=Pe(n);if(t!==null&&(r.t==="literal"||r.t==="null"))return {name:t,prop:e.property.name,lit:r}}return null}function cs(e,n,t,r,s){let a=ue(e),o=l=>l.t==="object"?w(l.props,n)?.type:void 0;return sn(a,l=>{let i=o(l);return r?!!i&&ba$1(t,i,s):!(i&&ba$1(i,t,s))})}function us(e,n,t){let r=ue(e),s=a=>a.t==="object"&&(l(a.props,n)||!!a.index);return sn(r,a=>t?s(a):!s(a))}function Po(e,n,t){return e.t==="unknown"||e.t==="any"||ba$1(n,e,t)?n:null}function Ro(e,n,t){return sn(ue(e),r=>!da$1(r,n,t))}var Se=1,$e=2,To=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function On(e,n){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return Se|$e;case "literal":return e.value?Se:$e;case "null":case "undefined":case "void":return $e;case "array":case "tuple":case "fn":case "overload":return Se;case "object":return To(e)?Se|$e:Se;case "nonPrimitive":return Se;case "union":case "intersection":return e.of.reduce((t,r)=>t|On(r,n),0);default:{let t=J(e,n);return t===e?Se|$e:On(t,n)}}}var gs=(e,n)=>(On(e,n)&$e)!==0,Ss=(e,n)=>(On(e,n)&Se)!==0,ps=(e,n,t)=>{let r=ue(e),s=r.filter(a=>On(a,t)&n);return s.length===r.length?null:ga$1(s)},ds=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,ae=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),Co=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function ne(e,n,t){if(e.type==="BinaryExpression"){let s=e;if(s.operator==="in"){let g=s.left,h=s.right,b=Z(h);if(g.type==="Literal"&&typeof g.value=="string"&&b!==null){let w=be(n,b,t);if(!w)return ge;let P=String(g.value);return ae(b,us(w,P,true),us(w,P,false))}return ge}if(!Co(s.operator))return ge;let a=s.operator==="!=="||s.operator==="!=",o=s.left,l=s.right,i=os(o,l)??os(l,o);if(i){let g=be(n,i.name,t);if(!g)return ge;let h=Ao(g,i.tag),b=Oo(g,i.tag);return a?ae(i.name,b,h):ae(i.name,h,b)}let c=ds(o),u=ds(l),p=c?l:u?o:null,m=p?Z(p):null;if((c||u)&&m!==null){let g=m,h=be(n,g,t);if(!h)return ge;let w=s.operator==="=="||s.operator==="!="?["null","undefined"]:[c??u],P=ue(h),M=sn(P,C=>w.includes(C.t)),K=sn(P,C=>!w.includes(C.t));return a?ae(g,K,M):ae(g,M,K)}let y=is(o,l)??is(l,o),f=ls(o,l)??ls(l,o);if(y||f){let g=ge;if(y){let h=be(n,y.name,t);if(h){let b=Po(h,y.lit,t),w=Ro(h,y.lit,t);g=a?ae(y.name,w,b):ae(y.name,b,w);}}if(f){let h=be(n,f.name,t);if(h){let b=cs(h,f.prop,f.lit,true,t),w=cs(h,f.prop,f.lit,false,t),P=a?ae(f.name,w,b):ae(f.name,b,w);g={then:{...g.then,...P.then},else:{...g.else,...P.else}};}}return g}return ge}if(e.type==="UnaryExpression"&&e.operator==="!"){let s=ne(e.argument,n,t);return {then:s.else,else:s.then}}if(e.type==="CallExpression"){let s=jo(e,n,t);if(s)return s}if(e.type==="LogicalExpression"){let s=e;if(s.operator==="&&"){let a=ne(s.left,n,t),o=ne(s.right,U(n,a.then),t);return {then:{...a.then,...o.then},else:fs(a.else,{...a.then,...o.else},n,t)}}if(s.operator==="||"){let a=ne(s.left,n,t),o=ne(s.right,U(n,a.else),t);return {then:fs(a.then,{...a.else,...o.then},n,t),else:{...a.else,...o.else}}}return ge}let r=Z(e);if(r!==null){let s=be(n,r,t);if(s)return ae(r,ps(s,Se,t),ps(s,$e,t))}return ge}function fs(e,n$1,t,r){let s={};for(let a of Object.keys(e)){let o=e[a],l=m(n$1,a)??be(t,a,r);if(!l)continue;let i=ga$1([o,l]),c=be(t,a,r);c&&da$1(i,c)||n(s,a,i);}return s}function Do(e,n){if(e.t==="fn")return e.guard??null;if(e.t==="overload"){for(let t of e.signatures)if(t.guard&&t.params.length===n)return t.guard}return null}function jo(e,n,t){let r=e.callee;if(r.type!=="Identifier")return null;let s=q(n,r.name);if(!s)return null;let a=Do(s,e.arguments.length);if(!a)return null;let o=e.arguments[a.param],l=o?Z(o):null;if(l===null)return null;let i=be(n,l,t);return i?ae(l,Eo(i,a.type,t),wo(i,a.type,t)):null}var U=(e,n)=>Object.keys(n).length?Ae(e,n):e;function oe(e){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(t=>oe(t));case "IfStatement":{let n=e;return !!n.alternate&&oe(n.consequent)&&oe(n.alternate)}case "TryStatement":{let n=e;if(n.finalizer&&oe(n.finalizer))return true;let t=!n.handler||oe(n.handler.body);return oe(n.block)&&t}default:return false}}function Fs(e,n){let t=V(),r=n({...e,sink:t});for(let s of t.all)e.sink.report(s);return {value:r,reported:t.all}}var $o=e=>{let n$1={};for(let t of Object.keys(e))n(n$1,t,{params:[],body:e[t]});return n$1};function xo(e){let n=[];return e.maxDepth!==void 0&&n.push(Ct(e.maxDepth)),e.maxNodes!==void 0&&n.push(Dt(e.maxNodes)),e.maxArgs!==void 0&&n.push(jt(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(Pt(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(Rt(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(Tt(e.memberDepth)),n}function Vo(e,n){let{min:t,max:r}=F(e);return n.length<t||n.length>r}var Ls=(e,n,t)=>m(n,e)?.params??m(t,e);function Xt(e){if(Array.isArray(e))return e.some(Xt);if(!e||typeof e!="object")return false;let n=e;return n.t==="typeQuery"||Object.values(n).some(Xt)}function $s(e,n,t){if(!e.some(a=>a.bound))return [];let r=G$1(e,n),s=[];return e.forEach((a,o)=>{if(!a.bound||o>=n.length)return;let l=C(a.bound,r);ba$1(n[o],l,t)||s.push({param:a,arg:n[o],expected:l});}),s}function Uo(e,n,t,r){let s=e.typeRefs;if(!s?.length)return [];let a=[];for(let o of s){let l={type:"Identifier",name:o.name,loc:o.loc},i=Ls(o.name,n,t);if(!i){a.push(W("unknown-name",l,`Cannot find name '${o.name}'.`));continue}if(!o.args)continue;let{min:c,max:u}=F(i);if(o.args.length<c||o.args.length>u){a.push(S.genericTypeArity(l,o.name,c,u));continue}let p=r.get(o.args)??o.args;if(!Xt(p))for(let m of $s(i,p,n))a.push(S.constraintViolation(l,m.arg,m.expected));}return a}function xs(e$1,n,t={}){let r=qo(e$1),s={...n.lib,...$o(n.types),...n.schemes,...r.schemes},{schemes:a,diagnostics:o$1}=Go(r,s),{schemes:l,diagnostics:i$1}=_o(r,a),c=Vt(e$1),u={overlay:new WeakMap,sink:V(),env:n,schemes:l,nominals:Wo(n.nominals??{},l),resolvedTypeArgs:new WeakMap,importNames:new Set,resolvedSchemes:new Set,invalidTargets:c.invalidTargets,evolving:new Set,fnDepth:{value:0},flow:new Map,stmtFlow:new WeakMap,invoked:new WeakSet,shadowed:null,shortCircuits:new WeakSet},p=t.profile?compileProfile(t.profile):void 0;p&&e(p.typeLimits);try{let m,y=zo(e$1,u);try{m=N(e$1,y,u);}catch(h$1){if(h$1 instanceof h||h$1 instanceof i)u.sink.report(W("too-deep",e$1,h$1.message));else if(h$1 instanceof k)u.sink.report(W("too-complex-union",e$1,h$1.message));else throw h$1;m=o.unknown;}let f=[];p&&f.push(...Wn(p)),t.limits&&f.push(...xo(t.limits)),t.resultType&&f.push(Mt(t.resultType,l));let g=[...o$1,...i$1,...u.sink.all,...c.diagnostics,...Uo(e$1,l,u.nominals,u.resolvedTypeArgs),...t.unused?xt(e$1,t.unused):[],...f.length?wt(e$1,f,{overlay:u.overlay,schemes:l}):[]];return {type:m,overlay:u.overlay,diagnostics:g,schemes:u.schemes,nominals:u.nominals}}finally{p&&f();}}function Ko(e,n$1,t={}){let r=xs(e,n$1,t),s={},a=new Map,o$1,l=c=>{let u=[];if(c.type==="VariableDeclaration")for(let p of c.declarations){let m=ee(p.id),y=r.overlay.get(p);m&&y&&(n(s,m,y.type),u.push(m));}else if(c.type==="FunctionDeclaration"){let p=c.id?.name,m=r.overlay.get(c);p&&m&&(n(s,p,m.type),u.push(p));}return u};for(let c of e.body??[])if(c.type==="VariableDeclaration"||c.type==="FunctionDeclaration")l(c);else if(c.type==="ExportNamedDeclaration"){let u=c;if(u.declaration)for(let p of l(u.declaration))a.set(p,p);else for(let p of u.specifiers)a.set(p.exported.name,p.local.name);}else if(c.type==="ExportDefaultDeclaration"){let u=r.overlay.get(c.declaration);o$1=u?u.type:o.unknown;}let i={};if(a.size||o$1!==void 0){for(let[c,u]of a){let p=m(s,u);p&&n(i,c,{type:p});}o$1!==void 0&&(i.default={type:o$1});}else for(let c in s)n(i,c,{type:s[c]});return {type:{t:"object",props:i},diagnostics:r.diagnostics}}function Wo(e,n$1){let t=Object.keys(e);if(!t.some(s=>l(n$1,s)))return e;let r={};for(let s of t){let a=m(e,s);a&&!l(n$1,s)&&n(r,s,a);}return r}function Go(e,n$1){let t=Hr(e.schemes,n$1),r=Object.fromEntries(Object.entries(e.schemes).filter(([c])=>!t.has(c))),s=Zr(r,n$1),a=new Set([...t,...s.aliases]);if(!a.size&&!s.properties.size)return {schemes:n$1,diagnostics:[]};let o$1={...n$1};for(let c of a){let u=m(e.schemes,c);u&&n(o$1,c,{params:u.params,body:o.any});}for(let[c,u]of s.properties){let p=m(e.schemes,c);a.has(c)||!p||n(o$1,c,{params:p.params,body:Gt(p.body,u)});}let l=[],i=c=>{let u=m(e.ids,c);u&&l.push(S.circularTypeAlias(u,c));};for(let c of t)i(c);for(let[c,u]of s.properties){let p=m(e.props,c);for(let m$1 of u){let y=(p&&m(p,m$1))??m(e.ids,c);y&&l.push(S.circularTypeAnnotation(y,m$1));}}for(let c of s.aliases)i(c);return {schemes:o$1,diagnostics:l}}var Vs=(e,n)=>e.t==="index"&&t(K(e,n));function Ns(e,n$1,t,r){let s=a=>{if(Array.isArray(a)){let c=false,u=a.map(p=>{let m=s(p);return m!==p&&(c=true),m});return c?u:a}if(!a||typeof a!="object")return a;let o$1=a;if(Vs(o$1,n$1)){let c=o$1;return r.push(S.noSuchMember(t,c.obj,Us(c.key))),o.any}let l=false,i={};for(let c of Object.keys(o$1)){let u=s(o$1[c]);u!==o$1[c]&&(l=true),n(i,c,u);}return l?i:o$1};return s(e)}var Us=e=>e.t==="literal"?String(e.value):ma$1(e);function _o(e,n$1){let t=[],r={...n$1},s=false;for(let a of Object.keys(e.schemes)){let o=m(n$1,a),l=m(e.ids,a);if(!o||!l)continue;let i=m(e.props,a),c=(p,m$1)=>{if(i&&(p.t==="union"||p.t==="intersection")){let y=p.of.map(f=>c(f,m$1));return y.every((f,g)=>f===p.of[g])?p:{...p,of:y}}if(i&&p.t==="object"){let y={},f=false;for(let[g,h]of Object.entries(p.props)){let b=Ns(h.type,n$1,m(i,g)??m$1,t);b!==h.type&&(f=true),n(y,g,b===h.type?h:{...h,type:b});}return f?{...p,props:y}:p}return Ns(p,n$1,m$1,t)},u=c(o.body,l);u!==o.body&&(n(r,a,{...o,body:u}),s=true);}return {schemes:s?r:n$1,diagnostics:t}}var qo=e=>{let n$1={},t={},r={};return walk(e,{TSTypeAliasDeclaration(s){let a=s;if(!(!a.id?.name||!a.typeAnnotation)&&(n(n$1,a.id.name,{params:Hn(s)??[],body:a.typeAnnotation}),n(t,a.id.name,a.id),a.typeNode)){let o={};Ks(a.typeNode,o),n(r,a.id.name,o);}}}),{schemes:n$1,ids:t,props:r}};function Ks(e,n$1){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])Ks(t,n$1);else if(e.type==="TSTypeLiteral")for(let t of e.members??[]){let r=t.key;t.type==="TSPropertySignature"&&typeof r=="string"&&!l(n$1,r)&&n(n$1,r,t);}}function zo(e,n$1){let t=n$1.env.modules,r={};walk(e,{ImportDeclaration(s){let a=s;if(a.importKind==="type")return;let o$1=a.source.value,l$1=typeof o$1=="string"&&t?m(t,o$1):void 0;if(!l$1){n$1.sink.report(S.unknownModule(a.source,String(o$1)));for(let i of a.specifiers)n(r,i.local.name,o.unknown);return}for(let i of a.specifiers){if(i.importKind==="type")continue;let c=i.local.name;if(Te(c,i.local,n$1),l(r,c)){n$1.sink.report(S.cannotRedeclare(i.local,c));continue}if(i.type==="ImportNamespaceSpecifier"){n(r,c,l$1);continue}let u=i.type==="ImportSpecifier"?i.imported.name:"default",p=qa(l$1,[u],n$1.schemes);p?n(r,c,p.type):(n$1.sink.report(S.noSuchMember(i,l$1,u)),n(r,c,o.unknown));}}});for(let s in r)n$1.importNames.add(s);return Object.keys(r).length?Ae(n$1.env.scope,r):n$1.env.scope}var B=(e,n,t,r)=>(e.overlay.set(n,{type:t,scope:r}),t);function N(e,n,t,r){switch(j$1(),e.type){case zs:return e.schema;case "JSXElement":case "JSXFragment":return B(t,e,N(desugarJSX(e,{emptyPropsAsObject:true}),n,t),n);case "Literal":return B(t,e,Le(e),n);case "Placeholder":return B(t,e,o.any,n);case "Identifier":{let s=e.name,a=lr(s,t)??q(n,s);return a!==void 0&&t.evolving.has(s)&&Ri(e,s,n,t)?B(t,e,o.any,n):a===void 0?s==="undefined"?B(t,e,o.undefined,n):(t.sink.report(S.unknownName(e,s)),B(t,e,o.any,n)):B(t,e,a,n)}case "MemberExpression":return B(t,e,Ws(e,n,t),n);case "CallExpression":return B(t,e,ri(e,n,t,r),n);case "ArrowFunctionExpression":return or(e,n,t);case "FunctionDeclaration":return t.sink.report(S.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),B(t,e,o.unknown,n);case "FunctionExpression":return t.sink.report(S.unsupported(e,"anonymous function (use an arrow)")),B(t,e,o.unknown,n);case "ThisExpression":return t.sink.report(S.unsupported(e,"'this'")),B(t,e,o.unknown,n);case "BlockStatement":return B(t,e,ca(e,n,t),n);case "ReturnStatement":{let s=e.argument;return B(t,e,s?N(s,n,t):o.unknown,n)}case "IfStatement":return le(e,n,t),t.overlay.get(e)?.type??o.unknown;case "ForStatement":case "WhileStatement":case "DoWhileStatement":case "ForOfStatement":case "ForInStatement":case "BreakStatement":case "ContinueStatement":case "ThrowStatement":case "TryStatement":case "SwitchStatement":return le(e,n,t),t.overlay.get(e)?.type??o.unknown;case "AssignmentExpression":{let s=e,a=s.left;if(s.operator==="="&&(a.type==="ArrayExpression"||a.type==="ObjectExpression")){let y=N(s.right,n,t);return Ue(a,y,n,t),B(t,e,y,n)}let o$1=s.operator!=="=",l=o$1?Ts(a,n,t):cr(a,n,t);o$1&&a.type==="MemberExpression"&&ot(a,t,"write")&&t.invalidTargets.add(a);let i=Z(a),c=t.invalidTargets.has(a);if(!o$1){let y=i!==null&&t.evolving.has(i),f=s.right,g=y||c?N(f,n,t):Q(f,l,n,t,true),h=he(f)?B(t,f,Le(f),n):g;return i!==null&&rt(i,n,t)?ce(i,st(i,false,h,l,n,t),t):i!==null&&ie(i)&&ce(i,l,t),B(t,e,h,n)}let u=t.sink.reported,p=ji(s,c?o.any:l,n,t),m=t.sink.reported>u;return !c&&!m&&!ba$1(p,l,t.schemes)&&t.sink.report(S.notAssignable(e,p,l,t.schemes)),i!==null&&rt(i,n,t)?ce(i,st(i,true,p,l,n,t),t):i!==null&&ie(i)&&ce(i,N$1(l),t),B(t,e,p,n)}case "UpdateExpression":{let a=e.argument,o$1=Ts(a,n,t);if(a.type==="MemberExpression"&&ot(a,t,"write")&&t.invalidTargets.add(a),!t.invalidTargets.has(a)){let i=on(o$1,a,t);Pn(i.type,t.schemes)||t.sink.report(S.arithmeticOperand(a,"operand"));}let l=Z(a);return l!==null&&rt(l,n,t)?ce(l,st(l,true,o$1,o$1,n,t),t):l!==null&&ie(l)&&ce(l,N$1(o$1),t),B(t,e,o.number,n)}case "ExpressionStatement":return B(t,e,N(e.expression,n,t),n);case "VariableDeclaration":return ct(e,n,t),B(t,e,o.unknown,n);case "TSTypeAliasDeclaration":{let s=e.id?.name,a=s?m(t.schemes,s):void 0;return B(t,e,a?fi(a.body,n,t,e,a.params.length>0):o.unknown,n)}case "BinaryExpression":return B(t,e,Gi(e,n,t),n);case "LogicalExpression":{let s=e,a=N(s.left,n,t),o=s.operator==="??"?void 0:ne(s.left,n,t.schemes),l=U(n,o?s.operator==="&&"?o.then:o.else:{}),{value:i,effect:c}=Jt(t,()=>N(s.right,l,t));return c.size&&Rs([{effect:c,scope:l},{scope:U(n,o?s.operator==="&&"?o.else:o.then:{})}],t),B(t,e,zi(s.operator,a,i,t.schemes),n)}case "UnaryExpression":return B(t,e,Xi(e,n,t),n);case "ConditionalExpression":{let s=e;N(s.test,n,t);let a=ne(s.test,n,t.schemes),o=U(n,a.then),l=U(n,a.else),i=Jt(t,()=>N(s.consequent,o,t)),c=Jt(t,()=>N(s.alternate,l,t));return (i.effect.size||c.effect.size)&&Rs([{effect:i.effect,scope:o},{effect:c.effect,scope:l}],t),B(t,e,i.value===R&&c.value===R?R:ga$1([i.value,c.value]),n)}case "ObjectExpression":return B(t,e,Yi(e,n,t),n);case "ArrayExpression":return B(t,e,Ta(e,n,t),n);case "TemplateLiteral":{if(Oe(e)!==null)return B(t,e,Le(e),n);for(let s of e.expressions){let a=N(s,n,t);Ra(a,t.schemes)||t.sink.report(S.notTextConvertible(s,a));}return B(t,e,o.string,n)}case "AwaitExpression":{let s=e.argument,a=s?N(s,n,t):o.unknown;return B(t,e,wn(a),n)}case "Program":{let s=it(e.body,n,t,new Set(t.importNames)).scope;return B(t,e,o.unknown,s)}case "JsonExpression":return B(t,e,er(e.body,n,t,e),n);case "ChainExpression":{let s=e.expression,a=N(s,n,t);return B(t,e,Jo(s,t)?ga$1([a,o.undefined]):a,n)}case "TSAsExpression":{let s=e,a=N(s.expression,n,t),o=un(s.typeAnnotation,n,t,e);return fn(a,o,t.schemes)||t.sink.report(S.castUnsound(e,a,o)),B(t,e,o,n)}default:return t.sink.report(S.unsupported(e,`'${e.type}'`)),B(t,e,o.unknown,n)}}function Ws(e,n,t,r=false){let s=N(e.object,n,t),a=Yo(e,s,n,t),o=r?null:Z(e);if(o!==null&&ie(o)){let l=lr(o,t)??q(n,o);if(l!==void 0&&ba$1(l,a,t.schemes))return l}return a}function Jo(e,n){for(let t=e;t;){if(n.shortCircuits.has(t))return true;if(t.type==="MemberExpression")t=t.object;else if(t.type==="CallExpression")t=t.callee;else return false}return false}var Xo=e=>e.t==="unknown";function ut(e,n,t){return Xo(e)?(t.sink.report(S.unknownValue(n)),true):false}function Tn(e){let n=cn(e),t=n.some(s=>s.t==="null"),r=n.some(s=>s.t==="undefined");return t||r?{null:t,undefined:r}:null}function pt(e){let n=cn(e).filter(t=>t.t!=="null"&&t.t!=="undefined");return n.length===cn(e).length||n.length===0?e:ga$1(n)}function on(e,n,t){if(ut(e,n,t))return {type:o.any,error:true};let r=Tn(e);return r?(t.sink.report(S.possiblyNullish(n,r)),cn(e).filter(a=>a.t!=="null"&&a.t!=="undefined").length===0?{type:o.any,error:true}:{type:pt(e),error:false}):{type:e,error:false}}var Gs=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(Gs);function Yo(e,n,t$1,r){if(!e.optional&&ut(n,e.object,r))return B(r,e,o.any,t$1);let s=e.optional?null:Tn(n);s&&r.sink.report(S.possiblyNullish(e.object,s)),e.optional&&Tn(n)&&r.shortCircuits.add(e);let a=e.optional||s?pt(n):n;if(e.computed){let i=N(e.property,t$1,r);if(i.t==="literal"&&typeof i.value!="boolean"){let u=String(i.value),p=qa(a,[u],r.schemes);return p?p.type:(Bs(e,a,u,r),o.any)}let c=K(o.index(a,i),r.schemes);if(Gs(i)||c.t!=="index"&&!t(c)&&i.t!=="any")return c;if(i.t==="any"){let u=K(o.index(a,o.string),r.schemes);if(u.t!=="index"&&!t(u))return u}return _s(i)?(Qo(e,a,i,r),o.any):o.unknown}let o$1=e.property.name,l=qa(a,[o$1],r.schemes);return l?l.type:(Bs(e,a,o$1,r),o.any)}var _s=e=>e.t==="any"||e.t==="string"||e.t==="number"||e.t==="literal"&&typeof e.value!="boolean"||e.t==="union"&&e.of.length>0&&e.of.every(_s);function Qo(e,n,t,r){let s=J(n,r.schemes),a=s.t==="array"||s.t==="tuple"||s.t==="object"&&s.index?.key==="number";r.sink.report(a?S.implicitAny.indexNotNumber(e.property):S.implicitAny.index(e,t,s.t==="var"&&!s.bound?o.unknown:n));}function Bs(e,n,t,r){let s=H(n,r.schemes)?I(n,r.schemes):n;s.t==="object"||s.t==="array"||s.t==="tuple"||s.t==="union"?r.sink.report(S.noSuchMember(e,n,t)):s.t!=="any"&&s.t!=="unknown"&&r.sink.report(S.notObject(e,n));}function Ho(e,n,t,r){let s=e.arguments[0];if(!s){r.sink.report(S.missingArgument(e,"schema",o.unknown));return}if(s.type!=="Identifier"){r.sink.report(S.asserterNeedsName(s,n));return}let a=s.name,o$1=q(t,a),l=m(r.schemes,a);if(o$1===void 0){r.sink.report(l?S.typeAsValue(s,a):S.unknownName(s,a));return}if(!l||l.params.length>0){r.sink.report(S.notASchema(s,a));return}if(!(qs(a,r)&&!Zo(t,a)))return r.overlay.set(s,{type:l.body,scope:t}),l.body}function qs(e,n){if(!n.env.asserters?.size)return false;let t=m(n.schemes,e);return t!==void 0&&t.params.length===0&&q(n.env.scope,e)!==void 0}function Zo(e,n){for(let t=e;t;t=t.parent)if(Object.prototype.hasOwnProperty.call(t.vars,n))return t.parent===null;return false}function Te(e,n,t){qs(e,t)&&t.sink.report(S.shadowsSchema(n,e));}function nr(e,n){let t=X(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function ei(e,n){let t=q(e.scope,n);if(!t)return;let r=nr(t,e.schemes);return r?X(r,e.schemes):void 0}function ni(e,n,t,r){let s=nr(N(n[0],t,r),r.schemes),a=n.length>1?N(n[1],t,r):o.undefined;if(s){let o=aa$1(a,s,r.schemes);o.length&&r.sink.report(S.propsMismatch(n[1]??e,s,oa$1(o)));}return B(r,e,o.boolean,t)}var zs="TSLiteSyntheticArg",ti=e=>({type:zs,schema:e});function Js(e,n,t){if(!e.some(a=>a.type==="SpreadElement"))return {nodes:[...e],spread:null};let r=[],s=null;for(let a of e){if(a.type!=="SpreadElement"){r.push(a);continue}let o=a.argument;if(o.type==="ArrayExpression"&&o.elements.every(i=>i&&i.type!=="SpreadElement")){for(let i of o.elements)r.push(i);continue}let l=X(N(o,n,t),t.schemes);if(l.t==="tuple")for(let i of l.elements)r.push(ti(i));else s={elem:pr(l,o,t),node:a};}return {nodes:r,spread:s}}function ri(e,n,t,r){let s=t.inference||t.skipContextSensitive?{...t,inference:void 0,skipContextSensitive:void 0}:t,a=e.arguments,o$1=_t(e.callee);if(o$1){let f=s.env.accessors?m(s.env.accessors,o$1):void 0;if(f){let g=ts(a);if(g){let h=qa(f,g,s.schemes);return h?h.type:(s.sink.report(S.noSuchMember(e,f,g.join("."))),o.unknown)}return a.forEach(h=>N(h,n,s)),o.unknown}}if(o$1&&s.env.asserters?.has(o$1)){let f=Ho(e,o$1,n,s);a.length<2&&a.length>0&&s.sink.report(S.missingArgument(e,"value",o.unknown));for(let g=1;g<a.length;g++){let h=N(a[g],n,s);g===1&&f&&E$1(h).size===0&&!fn(h,f,s.schemes)&&s.sink.report(S.unprovableValue(a[g],h,f,e.arguments[0].name));}return f??o.unknown}if(o$1&&s.env.matchers?.has(o$1))return ni(e,a,n,s);e.callee.type==="ArrowFunctionExpression"&&s.invoked.add(e.callee);let l=J(N(e.callee,n,s),s.schemes);if(!e.optional&&ut(l,e.callee,s))return B(s,e,o.any,n);let i=Tn(l);i&&(e.optional?s.shortCircuits.add(e):s.sink.report(S.possiblyNullish(e.callee,i,true)));let c=i?J(pt(l),s.schemes):l;if(c.t==="any")return a.forEach(f=>N(f,n,s)),o.any;if(c.t==="overload")return oi(e,c,n,s,r);if(c.t!=="fn")return a.forEach(f=>N(f,n,s)),s.sink.report(S.notCallable(e,c)),o.unknown;let u=Js(a,n,s),p=u.nodes.map(f=>Xs(f,n,s)),m$1=Qs(e),y=!m$1||Hs(c,m$1.length);return y||s.sink.report(Zs(e,[c],m$1.length)),ln(e,c,u.nodes,p,n,s,u.spread,r,y?m$1:void 0)}function Xs(e,n,t){if(Y(e))return N(e,n,{...t,skipContextSensitive:true});if(e.type!=="CallExpression")return N(e,n,t);let r=V(),s=N(e,n,{...t,sink:r});return r.hasErrors()?o.any:(r.all.forEach(a=>t.sink.report(a)),s)}function ln(e,n,t,r,s,a,o$1=null,l,i){let c=k=>{if(!l)return k;let I=C(n.returns,k);if(I.t==="fn"&&l.t==="fn"){let F=k,J=Math.min(I.params.length,l.params.length);for(let te=0;te<J;te++)F=Y$1(I.params[te].type,l.params[te].type,F)??F;return Y$1(I.returns,l.returns,F)??F}return Y$1(I,l,k)??k},u,p=a.sink;if(!o$1){let k=na(e,n,r.length,t);k&&(a.sink.report(k),u=V(),a={...a,sink:u});}let m=i?yi(e,n,i,a):void 0,y=m??tt(n,c(_(n,r).bindings)),f=m||!l?{}:tt(n,c({})),g=k=>O(C(k,si(n,k,y,a.schemes))),h={returnMapper:f,nonFixing:y,outer:ks(n,y),fixing:g},b=new Set((n.typeParams??[]).map(k=>k.name)),w=k=>[...E$1(k)].some(I=>b.has(I)),P$1=new Set,M=[];t.forEach((k,I)=>{if(rs(k)){let F=n.params[I]?.type??o.any,J=ir(F.t==="var"?C(F,y):F,k,a.schemes);r[I]=or(k,s,a,J&&g(J));}else if(k.type==="CallExpression"&&r[I].t==="any")r[I]=N(k,s,a,C(n.params[I]?.type??o.unknown,ks(n,y)));else if(he(k)){let F=n.params[I]?.type??o.unknown,J=Pe(k);rn(C(F,f),J)&&(r[I]=B(a,k,J,s));}else if(k.type==="ArrayExpression"||k.type==="ObjectExpression"||k.type==="ConditionalExpression"||k.type==="LogicalExpression"&&Y(k)){let F=n.params[I]?.type??o.unknown,J=Y(k),te=C(F,f);if(k.type==="ArrayExpression"&&En(te)){r[I]=fr(k,te,s,{...a,inference:h}),M.push(I);return}let ve=F.t==="var"&&!F.bound;if(J?ve||!n.params[I]:ve||!Da(te,a.schemes)){J&&(r[I]=N(k,s,a));return}P$1.add(I),w(F)&&(r[I]=Q(k,F,s,{...a,sink:V(),inference:h},true)),M.push(I);}});let K=m||Yt(n,tt(n,c(_(n,r).bindings)),a.schemes);m&&ai(e,n,K,a);for(let k of M)r[k]=Hi(t[k],C(n.params[k].type,K),s,a,false);gi(e,n,r,K,a,t,o$1),t.forEach((k,I)=>{let F=n.params[I];k.type==="ObjectExpression"&&F&&!F.variadic&&!P$1.has(I)&&Zt(k,C(F.type,K),a);});let C$1=C(n.returns,Yt(n,K,a.schemes)),_$1=C$1.t==="union"?ga$1(C$1.of):C$1;if(u)for(let k of u.all)k.kind!=="type"&&p.report(k);return P($(_$1,a.schemes,void 0,0,E$1(_$1)))}function tt(e,n$1){let t=e.typeParams;if(!t?.length)return {};let r={};for(let s of t){let a=m(n$1,s.name);a&&n(r,s.name,a);}return r}var Yt=(e,n,t)=>W$1(e.typeParams??[],n,t);function si(e,n$1,t,r){if(n$1.t!=="fn"||!e.typeParams?.some(l=>!m(t,l.name)))return t;let s=new Set;for(let l of n$1.params)for(let i of E$1(l.type))s.add(i);let a=Yt(e,t,r),o={...t};for(let l of e.typeParams){if(m(t,l.name)||!s.has(l.name))continue;let i=m(a,l.name);i&&n(o,l.name,i);}return o}function ks(e,n$1){if(!e.typeParams?.some(r=>!m(n$1,r.name)))return n$1;let t={...n$1};for(let r of e.typeParams)m(n$1,r.name)||n(t,r.name,R);return t}function ai(e,n,t,r){for(let s of n.typeParams??[]){let a=m(t,s.name);if(!s.bound||!a)continue;let o=C(s.bound,t);ba$1(a,o,r.schemes)||r.sink.report(S.constraintViolation(e,a,o));}}function oi(e,n,t,r,s){let a=Js(e.arguments,t,r),o=a.nodes,l=o.map(u=>Xs(u,t,r)),i=Qs(e),c=i?n.signatures.filter(u=>Hs(u,i.length)):n.signatures;return i&&!c.length?(r.sink.report(Zs(e,n.signatures,i.length)),Es(e,n.signatures,a,o,l,t,r,s,void 0)):Es(e,c,a,o,l,t,r,s,i)}function ii(e,n,t,r,s,a,o){if(!n.length)return e;let i=n.map(p=>{let m=V();return ln(e,p,t,[...r],s,{...a,sink:m},o),m.all.filter(y=>y.kind==="type"&&y.severity==="error")}).filter(p=>p.length>0);if(!i.length)return e;let c=i.length===1||i.length>3?i[i.length-1]:i.some(p=>p.length>1)?i.reduce((p,m)=>m.length<=p.length?m:p):i.flat(),u=c[0].node;return c.every(p=>p.node===u)?u:e}function vs(e,n,t,r,s,a){if(!n.length)return o.unknown;let o$1=Ys(n,t.length);return o$1.combined?o$1.sig.returns:ln(e,o$1.sig,t,[...r],s,{...a,sink:V()},null)}function Ys(e,n){if(e.length===1||e.some(i=>i.typeParams?.length))return {sig:ci(e,n),combined:false};let t=i=>i.params.length-(i.params[i.params.length-1]?.variadic?1:0),r=i=>{let c=i.params.findIndex(u=>u.optional||u.variadic);return c<0?i.params.length:c},s=Math.min(...e.map(r)),a=Math.max(...e.map(t)),o$1=[];for(let i=0;i<a;i++){let c=e.map(p=>fa$1(p,i)).filter(p=>p!==void 0),u=e.find(p=>i<t(p))?.params[i].name??`arg${i}`;o$1.push({name:u,type:ga$1(c),...i>=s?{optional:true}:{}});}let l=e.filter(i=>i.params[i.params.length-1]?.variadic).map(i=>fa$1(i,t(i))).filter(i=>i!==void 0);return l.length&&o$1.push({name:"args",type:o.array(ga$1(l)),variadic:true}),{sig:o.fn(o$1,o.intersection(e.map(i=>i.returns))),combined:true}}function li(e,n,t,r,s,a,o){if(!t.some(Y))return {types:r,inner:[]};let l=V(),i=[...r];return ln(e,n,t,i,s,{...a,sink:l},o),{types:i,inner:l.all.filter(c=>c.kind!=="type")}}function ci(e,n){let t=e[0],r=-1;for(let s of e){let a=s.params.length;if(s.params.some(o=>o.variadic)||a>=n)return s;a>r&&(r=a,t=s);}return t}function Es(e,n,t,r,s,a,o,l,i){let c={t:"overload",signatures:n},u=h=>t.spread?hi(h,r.length):ea(h,r.length),p=c.signatures.filter(u);if(p.length>1)for(let h of p){let b=V(),w=ln(e,h,r,[...s],a,{...o,sink:b},t.spread,l,i);if(!b.all.some(P=>P.kind==="type"&&P.severity==="error"))return b.all.forEach(P=>o.sink.report(P)),w}let m=p.length>1?void 0:c.signatures.find(h=>u(h)&&ws(h,s,o));if(m||(p.length===1?m=p[0]:c.signatures.length===1&&(m=c.signatures[0])),!m){let h=t.spread?null:na(e,c.signatures,r.length,r),b=p.length===1||p.length>3?p[p.length-1]:p[0],w=li(e,h||!b?Ys(c.signatures,r.length).sig:p.find(P=>ws(P,s,o))??b,r,s,a,o,t.spread);o.sink.report(h??S.noMatchingOverload(ii(e,p,r,s,a,o,t.spread),c,w.types));for(let P of w.inner)o.sink.report(P);return vs(e,c.signatures,r,s,a,o)}let{value:y,reported:f}=Fs(o,h=>ln(e,m,r,s,a,h,t.spread,l,i)),g=f.some(h=>h.kind==="type"&&h.severity==="error");return c.signatures.length>1&&g?vs(e,c.signatures,r,s,a,o):y}function ui(e,n,t,r){let s=q(n,e[0]);if(s===void 0)return t.sink.report(S.unknownName(r,e[0])),o.any;let a=e.slice(1),o$1=a.length?qa(s,a,t.schemes)?.type:s;return o$1?o$1.t==="literal"?o.literal(o$1.value):o$1:(t.sink.report(S.noSuchMember(r,s,a.join("."))),o.any)}function un(e,n$1,t,r){let s=a=>{if(Array.isArray(a)){let c=false,u=a.map(p=>{let m=s(p);return m!==p&&(c=true),m});return c?u:a}if(!a||typeof a!="object")return a;let o$1=a;if(o$1.t==="typeQuery")return ui(o$1.path,n$1,t,r);if(o$1.t==="apply"&&typeof o$1.name=="string"){let c=Array.isArray(o$1.args)?o$1.args:void 0,u=c&&s(c);c&&u&&t.resolvedTypeArgs.set(c,u),di(o$1.name,n$1,t,r);let p=Ls(o$1.name,t.schemes,t.nominals);if(!p)return o.any;if(u&&Vo(p,u))return o.any;if(u?.length===1&&pi(o$1.name,t.nominals))return o.array(u[0],o$1.name==="ReadonlyArray");if(u&&u!==c){let m={};for(let y of Object.keys(o$1))n(m,y,y==="args"?u:o$1[y]);return m}return o$1}if(Vs(o$1,t.schemes)){let c=o$1;return t.sink.report(S.noSuchMember(r,c.obj,Us(c.key))),o.any}if(o$1.t==="union"&&Array.isArray(o$1.of)){let c=o$1.of,u=c.map(y=>s(y)),p=o.union(u);return p.t==="union"&&p.of.length===c.length&&p.of.every((y,f)=>y===c[f])?o$1:p}if(o$1.t==="intersection"&&Array.isArray(o$1.of)){let c=o$1.of,u=c.map(y=>s(y)),p=o.intersection(u);return p.t==="intersection"&&p.of.length===c.length&&p.of.every((y,f)=>y===c[f])?o$1:p}if(o$1.t==="tuple"&&Array.isArray(o$1.elements)){let c=o$1.elements,u=c.map(y=>s(y)),p=o.tuple(u,o$1.flags,o$1.readonly);return u.every((y,f)=>y===c[f])&&p.elements.every((y,f)=>y===u[f])?o$1:p}let l=false,i={};for(let c of Object.keys(o$1)){let u=s(o$1[c]);u!==o$1[c]&&(l=true),n(i,c,u);}return l?i:o$1};return s(e)}var pi=(e,n)=>(e==="Array"||e==="ReadonlyArray")&&m(n,e)===m(Un,e);function di(e,n$1,t,r){if(t.resolvedSchemes.has(e))return;let s=m(t.schemes,e);if(!s)return;t.resolvedSchemes.add(e);let a=un(s.body,n$1,t,r);a!==s.body&&n(t.schemes,e,{...s,body:a});}function fi(e,n,t,r,s){let a={...t,sink:V(),resolvedTypeArgs:new WeakMap,resolvedSchemes:new Set(Object.keys(t.schemes))},o=un(e,n,a,r);return a.sink.hasErrors()?e:s?o:$(o,t.schemes)}var Rn=(e,n,t)=>{let r=Yn(e);return r===void 0?r:un(r,n,t,e)},mi=(e,n,t)=>{let r=Qn(e);return r===void 0?r:un(r,n,t,e)},Qs=e=>{let n=e.typeArguments;return n?.length?n:void 0},Hs=(e,n)=>{let{min:t,max:r}=F(e.typeParams??[]);return n>=t&&n<=r};function Zs(e,n,t){if(n.length===1){let{min:a,max:o}=F(n[0].typeParams??[]);return S.wrongTypeArgumentCount(e,a<o?`${a}-${o}`:a,t)}let r=-1/0,s=1/0;for(let a of n){let{min:o,max:l}=F(a.typeParams??[]);o>t?s=Math.min(s,o):l<t&&(r=Math.max(r,l));}return r!==-1/0&&s!==1/0?S.noOverloadTypeArgumentCount(e,t,r,s):S.wrongTypeArgumentCount(e,r===-1/0?s:r,t)}function yi(e,n,t,r){let s=n.typeParams??[],a=G$1(s,t.slice(0,s.length));for(let o of $s(s,t,r.schemes))r.sink.report(S.constraintViolation(e,o.arg,o.expected));return a}function hi(e,n){let t=0,r=false;for(let s of e.params)s.variadic?r=true:s.optional||t++;return n>=t&&(r||n<e.params.length)}function ea(e,n){let t=0;for(let r of e.params){if(r.variadic)return n>=t;r.optional||t++;}return n>=t&&n<=e.params.length}function na(e,n,t,r){let s=Array.isArray(n)?n:[n];if(!s.length||s.some(c=>ea(c,t)))return null;let a=s.some(c=>c.params.some(u=>u.variadic)),o=Math.min(...s.map(c=>c.params.filter(u=>!u.optional&&!u.variadic).length)),l=Math.max(...s.map(c=>c.params.length)),i=a?`${o}`:o<l?`${o}-${l}`:`${o}`;return t<o?S.argumentArity(e,i,t,"missing",a):S.argumentArity(r[l]??e,i,t,"excess",a)}function ws(e,n,t){let r=tt(e,_(e,n).bindings);for(let s=0;s<e.params.length;s++){let a=e.params[s];if(a.variadic){let o$1=C(a.type,r),l=o$1.t==="array"?o$1.items:o.unknown;for(let i=s;i<n.length;i++)if(!ba$1(n[i],l,t.schemes))return false;return true}if(s>=n.length){if(!a.optional)return false;continue}if(!ba$1(n[s],C(a.type,r),t.schemes))return false}return true}function gi(e,n,t,r,s,a=e.arguments??[],o$1=null){let l=c=>a[c]??e;for(let c=0;c<n.params.length;c++){let u=n.params[c];if(u.variadic){let m=C(u.type,r),y=m.t==="array"?m.items:o.unknown;for(let f=c;f<t.length;f++)ba$1(t[f],y,s.schemes)||s.sink.report(S.notAssignable(l(f),t[f],y,s.schemes));break}let p=C(u.type,r);c>=t.length||ba$1(t[c],p,s.schemes)||s.sink.report(S.notAssignable(l(c),t[c],p,s.schemes));}let i=n.params.find(c=>c.variadic);if(o$1){let c=t.length,u=n.params.filter(p=>!p.optional&&!p.variadic).length;if(!(c>=u&&(i||c<n.params.length))){s.sink.report(S.spreadArgument(o$1.node));return}if(i){let p=C(i.type,r),m=p.t==="array"?p.items:o.unknown;ba$1(o$1.elem,m,s.schemes)||s.sink.report(S.notAssignable(o$1.node,o$1.elem,m,s.schemes));}return}}function Cn(e,n$1,t){if(e.t==="object"){let r=w(e.props,n$1);return r?r.optional?q$1(r.type):r.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let r=e.of.map(s=>Cn(J(s,t),n$1,t)).filter(s=>s!==void 0);return r.length===0?void 0:r.length===1?r[0]:p({t:"intersection",of:r})}if(e.t==="union")return ta(e.of,n$1,t);if(tr(e)){let r=e.over.t==="keyof"?o.union([o.string,o.number]):J(e.over,t);if(!ba$1(o.literal(n$1),r,t))return;let s={};return n(s,e.key,o.literal(n$1)),C(e.body,s)}}var tr=e=>e.t==="mapped"&&E$1(e.over).size>0;function ta(e,n,t){let r=e.map(s=>Cn(J(s,t),n,t)).filter(s=>s!==void 0);return r.length?ga$1(r):void 0}function Qt(e,n,t){let r=J(e,t);if(r.t==="object")return n&&r.index?.key==="number"||r.index?.key==="string"?r.index.value:void 0;if(r.t==="union"||r.t==="intersection"){let s=r.of.map(a=>Qt(a,n,t)).filter(a=>a!==void 0);return s.length?r.t==="union"?ga$1(s):o.intersection(s):void 0}}function Si(e,n,t){if(!e.computed){let i=ye(e);return {name:i,bindable:i!==null,numeric:i!==null&&y(i)}}let r=e.key,s=X(N(r,n,t),t.schemes),a=s.t==="literal"&&(typeof s.value=="string"||typeof s.value=="number")?String(s.value):null,o=s.t==="number"||s.t==="literal"&&typeof s.value=="number",l=a!==null&&(rr(r)||sr(r));return {name:a,bindable:l,numeric:o}}function dt(e){if(!e.computed)return ye(e);let n=e.key;if(!rr(n))return null;let t=Oe(n);if(t!==null)return t;if(n.type==="Literal")return String(n.value);let r=n;return `${r.operator}${String(r.argument.value)}`}function ra(e,n){let t=new Set,r=new Set;for(let s of e.properties){if(s.type==="SpreadElement")continue;let a=s,o=a.key;if(!a.computed&&o.type==="Identifier"){let i=o.name;t.has(i)?n.sink.report(S.duplicateKey.strict(o)):t.add(i);}let l=bi(a);l!==null&&(r.has(l)?n.sink.report(S.duplicateKey.identifier(a.computed?a:o,Ni(a))):r.add(l));}}function sa(e,n,t,r){let s=n.key;if(t===null||!n.computed||rr(s)||!sr(s))return;let a=e.properties.find(o=>o.type==="Property"&&dt(o)===t);a&&(r.sink.report(S.duplicateKey.alsoDeclared(a.computed?a:a.key,t)),r.sink.report(S.duplicateKey.lateBound(n,t)));}function bi(e){return e.computed?e.key.type==="UnaryExpression"?null:dt(e):ye(e)}function Ni(e){let n=e.key;if(e.computed)return Oa(n,dt(e)??"");if(n.type==="Identifier")return n.name;let t=n.value;return typeof t=="string"?JSON.stringify(t):String(t)}var rr=e=>{if(Oe(e)!==null)return true;if(e.type==="Literal"){let n=e.value;return typeof n=="string"||typeof n=="number"}if(e.type==="UnaryExpression"){let n=e;return (n.operator==="-"||n.operator==="+")&&n.argument.type==="Literal"&&typeof n.argument.value=="number"}return false},sr=e=>e.type==="Identifier"||e.type==="MemberExpression"&&!e.computed&&!e.optional&&sr(e.object),ar=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(ar),As=new WeakMap;function Bi(e,n,t){let r=As.get(t);if(r)return r;let s=new Set;for(let o of e)if(o.t==="object")for(let l of Object.keys(o.props))s.add(l);let a=new Set;for(let o of s){let i=e.map(u=>Cn(u,o,n)).filter(u=>u!==void 0);if(!i.some(ar))continue;i.length===e.length&&i.every(u=>da$1(u,i[0]))||a.add(o);}return As.set(t,a),a}var aa=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&aa(e.object);function oa(e,n,t,r,s){let a=Bi(n,r,s),o=new Set;if(!a.size)return {chosen:n,ignored:o};let l=[];for(let u of e.properties){if(u.type!=="Property")continue;let p=u,m=dt(p);if(m===null||!a.has(m)||!aa(p.value))continue;let y=t(p);y&&ar(y)&&l.push([m,y]);}let i=n.map(()=>1);for(let[u,p]of l){let m=false;n.forEach((y,f)=>{if(i[f]!==1)return;let g=Cn(y,u,r);g!==void 0&&(ba$1(p,g,r)?m=true:i[f]=2);}),n.forEach((y,f)=>{i[f]===2&&(i[f]=m?0:1);}),m||o.add(u);}let c=n.filter((u,p)=>i[p]===1);return {chosen:c.length?c:n,ignored:o}}function Os(e,n$1,t,r,s,a,o=false){let l={},i={};ra(e,s);let c=new Map;for(let[u,p]of e.properties.entries()){let m=p;if(m.type==="SpreadElement"){let P=N(m.argument,r,s);if(Na(e,u,P,r,s))return {checked:l,narrowed:i,refused:true};Ba(c,P,m,s);let M=J(P,s.schemes);if(M.t==="object")for(let[K,C]of Object.entries(M.props))n(l,K,C),n(i,K,C);continue}let y=m,{name:f,bindable:g,numeric:h}=Si(y,r,s);sa(e,y,f,s);let b=g?n$1(f):t(h),w=b?Q(y.value,b,r,s,a):L$1(N(y.value,r,s));f!==null&&(n(l,f,{type:o?w:b??w}),n(i,f,{type:w}),c.set(f,m)),B(s,m,w,r);}return {checked:l,narrowed:i,refused:false}}function Ht(e,n){let t=J(e,n);if(t.t==="conditional"){let r=ea$1(t,n);return r?Ht(r,n):t}if(t.t==="union"&&t.of.some(r=>r.t==="conditional")){let r=t.of.map(s=>{if(s.t!=="conditional")return s;let a=ea$1(s,n);return a?Ht(a,n):s});return J(o.union(r),n)}return t}function Q(e,n,t,r,s=false){let a=r.inference,o$1=a?C(n,a.returnMapper):n,l=u=>a?C(u,a.nonFixing):u,i=Ht(o$1,r.schemes);switch(he(e)?"Literal":e.type){case "Literal":{let u=Pe(e);return ba$1(u,n,r.schemes)||r.sink.report(S.notAssignable(e,u,n,r.schemes)),B(r,e,Le(e),t),s?rn(o$1,u)?u:L$1(Le(e)):n}case "ArrayExpression":{if(En(i)){let u=fr(e,i,t,r);return ba$1(u,n,r.schemes)||Qi(e,u,i,t,r)||r.sink.report(S.notAssignable(e,u,n,r.schemes)),B(r,e,u,t)}if(i.t==="array"){let u=[];for(let m of e.elements){if(!m)continue;let y=m;if(y.type==="SpreadElement"){let f=Q(y.argument,n,t,r,s);f.t==="array"&&u.push(f.items);}else u.push(Q(y,i.items,t,r,s));}let p=s&&u.length>0?o.array(ga$1(u)):l(n);return B(r,e,p,t)}break}case "ObjectExpression":{if(i.t==="object"||i.t==="intersection"||tr(i)){let{value:{checked:u,narrowed:p,refused:m},reported:y}=Fs(r,b=>Os(e,w=>Cn(i,w,r.schemes),w=>Qt(i,w,r.schemes),t,b,s));if(m)return B(r,e,o.any,t);let f=y.some(b=>b.kind==="type"&&b.severity==="error"),g=Zt(e,n,r),h={t:"object",props:u};return !g&&!f&&!ba$1(h,n,r.schemes)&&r.sink.report(S.notAssignable(e,h,n,r.schemes)),B(r,e,s?{t:"object",props:p}:n,t)}if(i.t==="union"){let u=i.of.filter(M=>M.t==="object"||M.t==="intersection");if(!u.length)break;let p=e,{chosen:m,ignored:y}=oa(p,u,M=>N(M.value,t,{...r,sink:V()}),r.schemes,n),f=r.sink.reported,{checked:g,narrowed:h,refused:b}=Os(p,M=>ta(y.has(M)?u:m,M,r.schemes),M=>Qt({t:"union",of:m},M,r.schemes),t,r,s,true);if(b)return B(r,e,o.any,t);let w=Zt(p,n,r),P={t:"object",props:g};return !w&&r.sink.reported===f&&!ba$1(P,n,r.schemes)&&r.sink.report(S.notAssignable(e,P,n,r.schemes)),B(r,e,s?{t:"object",props:h}:n,t)}break}case "ArrowFunctionExpression":{let u=ir(a?n.t==="var"?C(n,a.nonFixing):n:i,e,r.schemes),p=u&&a?a.fixing(u):u;if(p){let m=or(e,t,r,p);return ba$1(m,n,r.schemes)||r.sink.report(S.notAssignable(e,m,n,r.schemes)),B(r,e,m,t),s?m:l(n)}break}case "ConditionalExpression":{let u=e;N(u.test,t,r);let p=ne(u.test,t,r.schemes),m=Q(u.consequent,n,U(t,p.then),r,s),y=Q(u.alternate,n,U(t,p.else),r,s);return B(r,e,s?ga$1([m,y]):n,t)}case "Placeholder":return B(r,e,l(n),t)}let c=N(e,t,r,a?C(n,a.outer):n);return ba$1(c,n,r.schemes)||r.sink.report(S.notAssignable(e,c,n,r.schemes)),B(r,e,c,t)}function or(e,n,t,r){if(t.skipContextSensitive){if(Y(e))return R;t={...t,skipContextSensitive:void 0};}let s=!e.async&&t.invoked.has(e),a=t.flow.size?new Map(t.flow):null,o=a?U(n,Object.fromEntries(a)):n;a&&t.flow.clear();let l=t.shadowed;s&&(t.shadowed=new Set);let i=!t.invoked.has(e);i&&t.fnDepth.value++;try{return wi(e,o,t,r)}finally{i&&t.fnDepth.value--;let c=s?ki(e,o,t):null,u=t.shadowed;if(t.shadowed=l,t.flow.clear(),a)for(let[p,m]of a)t.flow.set(p,m);if(c)for(let[p,m]of c){let y=p.slice(0,ie(p)?p.indexOf("."):p.length);!u?.has(y)&&Ve(n,p,t.schemes)!==void 0&&ce(p,m,t);}}}function ki(e,n,t){let r=e.body;return r.type!=="BlockStatement"?new Map(t.flow):Be(r,n,t).types}function ir(e,n,t){let r=o=>{let l=J(o,t);return l.t==="fn"&&!vi(l,n)?l:void 0},s=J(e,t);if(s.t!=="union")return r(s);let a;for(let o of s.of){let l=r(o);if(l)if(!a)a=[l];else if(Ei(a[0],l,t))a.push(l);else return}if(a)return a.length===1?a[0]:o.fn([...a[0].params],ga$1(a.map(o=>o.returns)),a[0].typeParams)}function vi(e,n){let t=0;for(let r of n.params){if(r.type==="AssignmentPattern"||r.type==="RestElement"||r.optional)break;t++;}return !e.params.some(r=>r.variadic)&&e.params.length<t}function Ei(e,n,t){return e.params.length!==n.params.length||(e.typeParams?.length??0)!==(n.typeParams?.length??0)?false:e.params.every((r,s)=>{let a=n.params[s];return !!r.optional==!!a.optional&&!!r.variadic==!!a.variadic&&da$1(r.type,a.type,t)})}function wi(e,n$1,t,r$1){let s=r$1?ir(r$1,e,t.schemes):void 0,a=s?.typeParams?.length&&e.params.some(C=>!qt(C))?s.typeParams:void 0,o$1=Hn(e)??a,l=C=>o$1?{...C,typeParams:o$1}:C,i={},c=t.invoked.has(e),u=e.params.map((C,_)=>{let k=C,I=s?fa$1(s,_):void 0;if(k.type==="RestElement"){let Ee=k.argument,_e=Rn(Ee,n$1,t),pe=ee(Ee);!_e&&!s&&!c&&pe&&t.sink.report(S.implicitAny.rest(k,pe));let re=_e??(s?r(s,_):o.array(o.any));return pe?(Te(pe,Ee,t),n(i,pe,re)):Ne(Ee,re,i,n$1,t,{annotated:_e!==void 0,mutable:true}),t.overlay.set(Ee,{type:re,scope:n$1}),t.overlay.set(k,{type:re,scope:n$1}),{name:pe??`arg${_}`,type:re,variadic:true}}if(k.type==="AssignmentPattern"){let Ee=k.left,_e=Rn(Ee,n$1,t),pe=_e??I;Wi(k,pe??o.unknown,i,n$1,t,{annotated:_e!==void 0,mutable:true});let re=ee(Ee),yt=re?m(i,re):void 0,ht=pe??yt??o.unknown,gr=ht.t==="unknown"?ht:ga$1([ht,o.undefined]);return re&&yt&&n(i,xe(re),yt),t.overlay.set(k,{type:gr,scope:n$1}),{name:re??`arg${_}`,type:gr,optional:true}}let F=ee(k),J=Rn(k,n$1,t),te=J===void 0&&I===void 0&&!c;te&&F&&t.sink.report(S.implicitAny.parameter(k,F));let ve=J??I??(te&&k.type!=="Identifier"?wa(k,n$1,t):o.any),hr=k.type==="Identifier"&&(!!k.optional||J===void 0&&!!s?.params[_]?.optional),Dn=hr&&ve.t!=="unknown"?ga$1([ve,o.undefined]):ve;return F?(Te(F,k,t),n(i,F,Dn),n(i,xe(F),Dn)):k.type!=="Identifier"&&Ne(k,ve,i,n$1,t,{annotated:J!==void 0,mutable:true}),t.overlay.set(k,{type:Dn,scope:n$1}),hr?{name:F??`arg${_}`,type:Dn,optional:true}:{name:F??`arg${_}`,type:ve}}),p=false;u.forEach((C,_)=>{C.optional?p=true:!C.variadic&&p&&t.sink.report(S.requiredAfterOptional(e.params[_]));});let m$1=Ge(n$1,i,t),y=e.body,f=mi(e,n$1,t),g=e.returnGuard,h=g?{param:g.param,type:un(g.type,n$1,t,e)}:void 0;if(h){let C=u[h.param];C&&!ba$1(h.type,C.type,t.schemes)&&t.sink.report(S.notAssignable(e,h.type,C.type,t.schemes));}let b=C=>h?{...C,guard:h}:C;if(y.type!=="BlockStatement"&&f){let C=e.async?wn(f):f;Q(y,C,m$1,t);let _=e.async?An(f):f;return B(t,e,b(l({t:"fn",params:u,returns:_})),n$1)}let w=f??s?.returns,P=w&&e.async?wn(w):w,M=y.type==="BlockStatement"?B(t,y,ca(y,m$1,t,new Set(Object.keys(i).filter(C=>!et(C))),P),m$1):N(y,m$1,t),K=e.async?An(M):M;if(f){let C=e.async?wn(f):f,_=e.async?M:K;ba$1(_,C,t.schemes)||t.sink.report(S.notAssignable(y,K,f,t.schemes));let k=e.async?An(f):f;return B(t,e,b(l({t:"fn",params:u,returns:k})),n$1)}return B(t,e,l({t:"fn",params:u,returns:Q$1(O(K))}),n$1)}function an(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?an(n.argument):an(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?an(n.argument):an(n):[]);case "AssignmentPattern":return an(e.left);default:return []}}function ia(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>an(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?ia(e.declaration):[]}var la=Object.freeze({t:"undefined"}),Ps=e=>e===la;function ca(e,n,t,r=new Set,s){let{returns:a}=it(e.body,n,t,r,s),o$1=!oe(e)||a.some(Ps),l=a.filter(i=>!Ps(i));return l.length===0?o$1?o.void:o.union([]):ga$1(o$1?[...l,o.undefined]:l)}var Ai=[o.literal(true),o.literal(false)];function cn(e){return e.t==="union"?e.of:e.t==="boolean"?Ai:[e]}function ua(e,n,t){let r=cn(e);if(r.length<=1)return e;let s=r.filter(o=>ba$1(n,o,t));if(s.length===0)return e;let a=ga$1(s);return ba$1(n,a,t)?a:e}var pa=(e,n)=>ie(e)?void 0:q(n,xe(e)),at=e=>`${e}~#`,da=new WeakMap,Oi=Object.freeze({t:"undefined"}),Pi=(e,n)=>{let t=Object.freeze({t:"undefined"});return da.set(t,{node:e,depth:n.fnDepth.value}),t};function Ri(e,n,t,r){let s=q(t,at(n)),a=s&&da.get(s);return !a||a.depth>=r.fnDepth.value?false:(r.sink.report(S.implicitAny.evolving(a.node,n)),r.sink.report(S.implicitAny.variable(e,n)),true)}var rt=(e,n,t)=>!ie(e)&&(t.evolving.has(e)||q(n,xe(e))!==void 0);function st(e,n,t,r,s,a){if(n)return N$1(r);if(a.evolving.has(e))return M(t);let o=pa(e,s);return o===void 0?t:o.t==="union"||o.t==="boolean"?ua(o,t,a.schemes):o}function ce(e,n,t){let r=e+".";for(let s of t.flow.keys())s.startsWith(r)&&t.flow.delete(s);t.flow.set(e,n);}var lr=(e,n)=>n.flow.size?n.flow.get(e):void 0;function Jt(e,n){let t=new Map(e.flow),r=n(),s=new Map;for(let[a,o]of e.flow)t.get(a)!==o&&s.set(a,o);e.flow.clear();for(let[a,o]of t)e.flow.set(a,o);return {value:r,effect:s}}function Rs(e,n){let t=new Set;for(let r of e)if(r.effect)for(let s of r.effect.keys())t.add(s);for(let r of t){let s=[];for(let a of e){let o=a.effect?.get(r)??n.flow.get(r)??Ve(a.scope,r,n.schemes);o!==void 0&&s.push(o);}s.length&&ce(r,ga$1(s),n);}}function cr(e,n,t){if(e.type==="MemberExpression"){let r=B(t,e,Ws(e,n,t,true),n);return ot(e,t,"write")&&t.invalidTargets.add(e),r}if(e.type==="Identifier"){let r=e.name,s=pa(r,n);if(s!==void 0)return B(t,e,s,n);if(t.evolving.has(r)){let a=lr(r,t)??q(n,r);if(a!==void 0)return B(t,e,a,n)}}return N(e,n,t)}function ot(e,n,t){let r=n.overlay.get(e.object)?.type;if(!r)return false;let s=Ti(e,n);if(!s)return false;let a=false,o=false;for(let l of s){let i=ra$1(r,l,n.schemes);if(i==="property"){if(a=true,t==="delete"){n.sink.report(S.readonlyDelete(e));break}n.sink.report(S.readonlyProperty(e.property,"name"in l?l.name:""));}else i==="index"&&!o&&(o=true,n.sink.report(S.readonlyWrite(e,r)));}return a&&t==="write"}function Ti(e,n){let t=e.property;if(!e.computed)return [{name:t.name,element:false}];let r=n.overlay.get(t)?.type;if(!r)return null;let s=r.t==="union"?r.of:[r],a=[];for(let o of s)if(o.t==="literal"&&typeof o.value!="boolean")a.push({name:String(o.value),element:true});else if(o.t==="string"||o.t==="number")a.push({base:o.t});else return null;return a}function Ts(e,n,t){let r=N(e,n,t),s=N$1(r);return s===r?r:B(t,e,s,n)}function Ue(e,n,t,r){switch(e.type){case "ArrayExpression":{let s=ur(n,r);s===null&&(r.sink.report(S.notIterable(e,n)),s=o.any);let a=s;e.elements.forEach((o,l)=>{if(!o)return;let i=o;if(i.type==="SpreadElement")Ue(i.argument,Ea(n,l,a,r.schemes),t,r);else {let c=Cs(i),u=ba(n,l,c?i.left:i,c,a,r);Ue(i,c?x$1(u).type:u,t,r);}});return}case "ObjectExpression":{let s=[];for(let a of e.properties){let o$1=a;if(o$1.type==="SpreadElement"){Ue(o$1.argument,n.t==="any"?o.any:dr(n,s,r.schemes),t,r);continue}let l=ye(o$1);l!=null&&s.push(l),Ue(o$1.value,l!=null?ga(n,l,o$1.key,r):o.any,t,r);}return}default:{if(Cs(e)){N(e,t,r),Ue(e.left,n,t,r);return}let s=cr(e,t,r);!r.invalidTargets.has(e)&&!fa(e,r)&&!ba$1(n,s,r.schemes)&&r.sink.report(S.notAssignable(e,n,s,r.schemes)),ma(e,n,s,t,r);}}}var Cs=e=>e.type==="AssignmentExpression"&&e.operator==="=",fa=(e,n)=>e.type==="Identifier"&&n.evolving.has(e.name);function ma(e,n,t,r,s){let a=Z(e);a!==null&&rt(a,r,s)?ce(a,st(a,false,n,t,r,s),s):a!==null&&ie(a)&&ce(a,t,s);}function Ci(e,n,t,r,s){if(e==="ForOfStatement"){Ue(n,t,r,s);return}if(n.type==="ArrayExpression"||n.type==="ObjectExpression"){s.sink.report(S.forInDestructuring(n));return}let a=cr(n,r,s);!s.invalidTargets.has(n)&&!fa(n,s)&&!ba$1(Di(t,s),a,s.schemes)&&s.sink.report(S.forInTarget(n)),ma(n,o.string,a,r,s);}function Di(e,n){let t=K(o.keyof(e),n.schemes),s=(t.t==="union"?t.of:[t]).filter(a=>a.t==="string"||a.t==="literal"&&typeof a.value=="string");return s.length?o.union(s):o.string}function ji(e,n,t,r){let s=e.right,a=N(s,t,r);return Pa(e.operator.slice(0,-1),n,a,e,e.left,s,r)}var We=new Map;function Be(e,n,t){switch(e.type){case "BlockStatement":{let r=We,s=n;for(let a of e.body){let o=Be(a,s,t);if(o.types.size){let l=new Map(r);for(let[i,c]of o.types)l.set(i,c);r=l,s=U(s,Object.fromEntries(o.types));}if(o.exits)return {types:r,exits:true}}return {types:r,exits:false}}case "IfStatement":return {types:ha(e,n,t),exits:oe(e)};case "ReturnStatement":case "ThrowStatement":return {types:We,exits:true};case "TryStatement":{let r=e,s=[],a=Be(r.block,n,t);if(a.exits||s.push(a),r.handler){let l=Be(r.handler.body,n,t);l.exits||s.push(l);}let o=ya(s,n,t);if(r.finalizer){let l=o.size?U(n,Object.fromEntries(o)):n,i=Be(r.finalizer,l,t);if(i.types.size){let c=new Map(o);for(let[u,p]of i.types)c.set(u,p);o=c;}}return {types:o,exits:oe(e)}}default:return {types:t.stmtFlow.get(e)??We,exits:false}}}function ya(e,n,t){let r=new Set;for(let a of e)for(let o of a.types.keys())r.add(o);if(!r.size)return We;let s=new Map;for(let a of r){let o=Ve(n,a,t.schemes),l=[];for(let i of e){let c=i.types.get(a)??o;c!==void 0&&l.push(c);}l.length&&o!==void 0&&s.set(a,ga$1(l));}return s}function ha(e,n,t){let r=Be(e.consequent,n,t),s=e.alternate?Be(e.alternate,n,t):{types:We,exits:false};if(!r.types.size&&!s.types.size)return We;let a=[r,s].filter(o=>!o.exits);return a.length?ya(a,n,t):We}var Mi=5;function Ds(e,n$1,t,r){let s=new Map(t.flow),a=new Map,o=n$1,l=null;for(let c=0;c<Mi;c++){let u=V(),p={...t,sink:u},m=r(o,p),y=new Map(Be(e,o,p).types);for(let[g,h]of t.flow)s.get(g)!==h&&y.set(g,h);if(js(s,t),!y.size){for(let g of u.all)t.sink.report(g);return {returns:m,head:o}}let f={};for(let[g,h]of y){let b=Ve(o,g,t.schemes);if(b===void 0||h===b)continue;let w=ga$1([b,h]);da$1(w,b)||(n(f,g,w),a.set(g,w));}if(!Object.keys(f).length){for(let g of u.all)t.sink.report(g);l=m;break}o=U(o,f);}let i=l??r(o,t);js(s,t);for(let[c,u]of a)ce(c,u,t);return {returns:i,head:o}}function js(e,n){n.flow.clear();for(let[t,r]of e)n.flow.set(t,r);}function Ii(e,n,t){let r=Be(e,n,t);return r.exits||!r.types.size?n:U(n,Object.fromEntries(r.types))}function it(e,n,t,r=new Set,s){if(!Fi(e))return Ms(e,n,t,r,s);let a=new Set(t.evolving);try{return Ms(e,n,t,r,s)}finally{t.evolving.clear();for(let o of a)t.evolving.add(o);}}function Fi(e){for(let n of e){let t=n;if(t.type==="VariableDeclaration"&&t.kind!=="const")return true;if(t.type==="ExportNamedDeclaration"){let r=t.declaration;if(r?.type==="VariableDeclaration"&&r.kind!=="const")return true}}return false}function Ms(e,n,t,r,s){let a=n,o=[];for(let l of e){let i=l;for(let c of ia(i))r.has(c.name)?t.sink.report(S.cannotRedeclare(c,c.name)):r.add(c.name);if(i.type==="VariableDeclaration")a=ct(i,a,t);else if(i.type!=="ImportDeclaration")if(i.type==="ExportNamedDeclaration"){let c=i;if(c.declaration?.type==="VariableDeclaration")a=ct(c.declaration,a,t);else if(c.declaration?.type==="FunctionDeclaration"){let u=N(c.declaration,a,t),p=ee(c.declaration.id);p&&(a=Ge(a,{[p]:u},t));}else for(let u of c.specifiers)q(a,u.local.name)===void 0&&t.sink.report(S.unknownName(u.local,u.local.name));}else if(i.type==="ExportDefaultDeclaration")N(i.declaration,a,t);else if(i.type==="FunctionDeclaration"){let c=N(i,a,t),u=ee(i.id);u&&(a=Ge(a,{[u]:c},t));}else if(i.type==="IfStatement"){let c=i;o.push(...le(i,a,t,s));let u=ha(c,a,t);u.size&&(a=U(a,Object.fromEntries(u))),!c.alternate&&oe(c.consequent)&&(a=U(a,ne(c.test,a,t.schemes).else));}else o.push(...le(i,a,t,s)),(i.type==="BlockStatement"||i.type==="TryStatement")&&(a=Ii(i,a,t));a=Li(i,a,t);}return {scope:a,returns:o}}function Li(e,n,t){if(!t.flow.size)return n;let r=new Map(t.flow);t.flow.clear(),t.stmtFlow.set(e,r);let s=U(n,Object.fromEntries(r));for(let a of r.keys())ie(a)||(s=zt(s,a,t.schemes));return s}function le(e,n,t,r){switch(e.type){case "ReturnStatement":{let s=e.argument,a=s?r?(Q(s,r,n,t),r):N(s,n,t):la;return B(t,e,s?a:o.undefined,n),[a]}case "IfStatement":{let s=e;N(s.test,n,t);let a=ne(s.test,n,t.schemes),o$1=le(s.consequent,U(n,a.then),t,r);return s.alternate&&o$1.push(...le(s.alternate,U(n,a.else),t,r)),B(t,e,o.unknown,n),o$1}case "BlockStatement":{let{returns:s}=it(e.body,n,t,void 0,r);return B(t,e,s.length?ga$1(s):o.void,n),s}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let s=e,a=n;s.init&&(s.init.type==="VariableDeclaration"?a=ct(s.init,a,t):N(s.init,a,t));let{returns:o$1}=Ds(s.body,a,t,(l,i)=>(s.test&&N(s.test,l,i),s.update&&N(s.update,l,i),le(s.body,l,i,r)));return B(t,e,o.unknown,n),o$1}case "ForOfStatement":case "ForInStatement":{let s=e,a=N(s.right,n,t),o$1=ut(a,s.right,t)?null:Tn(a);o$1&&t.sink.report(S.possiblyNullish(s.right,o$1));let l=o$1?pt(a):a,i=e.type==="ForOfStatement"?pr(l,s.right,t):o.string,c=s.left.type==="VariableDeclaration",u=c?es(s.left):null;u&&Te(u,ns(s.left),t);let p=u?Ge(n,{[u]:i},t):n,{returns:m}=Ds(s.body,p,t,(y,f)=>(c||Ci(e.type,s.left,e.type==="ForOfStatement"?i:l,y,f),le(s.body,y,f,r)));return B(t,e,o.unknown,n),m}case "BreakStatement":case "ContinueStatement":return B(t,e,o.unknown,n),[];case "ThrowStatement":{let s=e.argument;return s&&N(s,n,t),B(t,e,o.unknown,n),[]}case "TryStatement":{let s=e,a=le(s.block,n,t,r);if(s.handler){let o$1=s.handler.param,l=o$1?ee(o$1):null;l&&o$1&&Te(l,o$1,t);let i=l?Ge(n,{[l]:o.any},t):n;a.push(...le(s.handler.body,i,t,r));}return s.finalizer&&a.push(...le(s.finalizer,n,t,r)),B(t,e,o.unknown,n),a}case "SwitchStatement":{let s=e;N(s.discriminant,n,t);let a=n,o$1=[];for(let l of s.cases){l.test&&N(l.test,a,t);let i=it(l.consequent,a,t,void 0,r);a=i.scope,o$1.push(...i.returns);}return B(t,e,o.unknown,n),o$1}default:return N(e,n,t),[]}}function ga(e,n,t,r){if(e.t==="any")return o.any;let s=qa(e,[n],r.schemes);return s?s.type:(r.sink.report(S.noSuchMember(t,e,n)),o.any)}function ur(e,n){let t=J(e,n.schemes);switch(t.t){case "any":return o.any;case "array":return t.items;case "tuple":return ga$1([...t.elements]);case "string":return o.string;case "literal":return typeof t.value=="string"?o.string:null;case "union":{if(!t.of.length)return null;let r=t.of.map(s=>ur(s,n));return r.every(s=>s!==null)?ga$1(r):null}default:return null}}var Sa=e=>e.t==="array"||e.t==="tuple"||e.t==="union"&&e.of.length>0&&e.of.every(Sa);function ba(e,n,t$1,r,s,a){if(e.t==="any")return o.any;let o$1=J(e,a.schemes);if(o$1.t==="tuple"&&B$1(o$1)<0&&n>=o$1.elements.length)return r||a.sink.report(S.tupleIndexOutOfRange(t$1,e,o$1.elements.length,n)),o.undefined;if(!Sa(o$1))return s;let l=K(o.index(o$1,o.literal(n)),a.schemes);return l.t==="index"||t(l)?s:l}function pr(e,n,t){let r=X(e,t.schemes);switch(r.t){case "array":return r.items;case "tuple":return r.elements.length?ga$1([...r.elements]):o.unknown;case "string":return o.string;case "literal":if(typeof r.value=="string")return o.string;break;case "unknown":case "any":return o.unknown;case "union":return ga$1(r.of.map(s=>pr(s,n,t)));}return t.sink.report(S.notIterable(n,e)),o.any}function dr(e,n$1,t){let r=X(e,t),s=(r.t==="union"?r.of:[r]).filter(l=>l.t!=="null"&&l.t!=="undefined");if(!s.length)return o.object({});if(s.length>1)return o.union(s.map(l=>dr(l,n$1,t)));let a=s[0];if(a.t!=="object")return a;let o$1={};for(let l in a.props)n$1.includes(l)||n(o$1,l,va(a.props[l]));return o.object(o$1,a.index)}function lt(e,n){let t=J(e,n);switch(t.t){case "any":case "nonPrimitive":case "object":case "array":case "tuple":case "fn":case "overload":case "apply":case "var":case "mapped":case "conditional":case "index":return true;case "intersection":return t.of.every(r=>lt(r,n));case "union":{let r=t.of.filter(s=>!Vi(s));return r.length>0&&r.every(s=>lt(s,n))}default:return false}}function Na(e,n,t,r,s){if(lt(t,s.schemes))return false;s.sink.report(S.notSpreadable.spread(e.properties[n]));let a={...s,sink:V()};for(let o of e.properties.slice(n+1)){let l=o;if(l.type==="SpreadElement"){N(l.argument,r,a);continue}let i=l;i.computed&&N(i.key,r,a),B(a,l,N(i.value,r,a),r);}return true}function Ba(e,n,t,r){if(e.size!==0)for(let[s,a]of ft(n,r.schemes)){let o=e.get(s);!o||a.optional||ka(a.type,r.schemes)||r.sink.report(S.overwrittenProperty(o,s,t));}}function ft(e,n){let t=new Map,r=J(e,n);if(r.t==="object"){for(let[o,l]of Object.entries(r.props))t.set(o,{type:l.type,optional:!!l.optional});return t}if(r.t!=="union"&&r.t!=="intersection")return t;let s=r.of.map(o=>J(o,n)).filter(o=>!(o.t==="union"&&o.of.length===0)),a=[];for(let o of s){for(let l of ft(o,n).keys())a.includes(l)||a.push(l);if(r.t==="union"&&!(o.t==="object"&&o.index))break}for(let o of a){let l=r.t==="union"?$i(s,o,n):xi(s,o,n);l&&t.set(o,l);}return t}function $i(e,n,t){let r=[],s=false,a=false;for(let o$1 of e){let l=ft(o$1,t).get(n);if(l){a=true,s||(s=l.optional),r.push(l.type);continue}let i=y(n),c=o$1.t==="object"&&o$1.index?o$1.index.key==="string"||o$1.index.key==="number"&&i?o$1.index.value:void 0:o$1.t==="array"&&i?o$1.items:void 0;if(c)r.push(c);else if(o$1.t==="object"&&o$1.fromLiteral)r.push(o.undefined);else return null}return a?{type:ga$1(r),optional:s}:null}function xi(e,n,t){let r=[],s=true;for(let a of e){let o=ft(a,t).get(n);o&&(s&&(s=o.optional),r.push(o.type));}return r.length?{type:r.length===1?r[0]:o.intersection(r),optional:s}:null}function ka(e,n){let t=X(e,n);return t.t==="null"||t.t==="undefined"?true:t.t==="union"||t.t==="intersection"?t.of.some(r=>ka(r,n)):false}var Vi=e=>e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="literal"&&!e.value,va=e=>{if(!e.readonly)return e;let{readonly:n,...t}=e;return t};function Ea(e,n,t,r){if(e.t==="any")return o.any;let s=J(e,r),a=s.t==="union"?s.of:[s];return a.length&&a.every(o=>o.t==="tuple")?o.union(a.map(o=>Ui(o,n))):o.array(t)}function Ui(e,n){let t=B$1(e);return t>=0&&n>t?o.tuple([e.elements[t]],["rest"],e.readonly):o.tuple(e.elements.slice(n),e.flags?.slice(n),e.readonly)}function wa(e,n$1,t){let r={...t,sink:V()},s=a=>{if(a.type==="AssignmentPattern"){let o=N(a.right,n$1,r);return {type:Q$1(M(o)),optional:true}}return a.type==="ObjectPattern"||a.type==="ArrayPattern"?{type:wa(a,n$1,t),optional:false}:(a.type==="Identifier"&&t.sink.report(S.implicitAny.bindingElement(a,a.name)),{type:o.any,optional:false})};if(e.type==="ObjectPattern"){let a={},o$1;for(let l of e.properties){if(l.type==="RestElement"){o$1={key:"string",value:o.any};continue}let i=ye(l),{type:c,optional:u}=s(l.value);i!==null&&n(a,i,u?{type:c,optional:u}:{type:c});}return o.object(a,o$1)}if(e.type==="ArrayPattern"){let a=e.elements,l=a[a.length-1]?.type==="RestElement",i=[],c=[];return a.forEach((u,p)=>{if(!u){i.push(o.any),c.push("req");return}let m=u;if(m.type==="RestElement"){i.push(s(m.argument).type),c.push("rest");return}let{type:y,optional:f}=s(m);i.push(y),c.push(f&&p>=Ki(a)?"optional":"req");}),!i.length||i.length===1&&l?o.array(o.any):o.tuple(i,c)}return o.any}function Ki(e){let n=0;return e.forEach((t,r)=>{let s=t;s&&s.type!=="RestElement"&&s.type!=="AssignmentPattern"&&(n=r+1);}),n}function Wi(e,n$1,t,r,s,a){let o=N(e.right,r,s);n$1.t!=="unknown"&&!ba$1(o,n$1,s.schemes)&&s.sink.report(S.notAssignable(e.right,o,n$1,s.schemes));let l=Q$1(O(o)),{type:i}=x$1(n$1),c=i.t==="unknown"?l:ga$1([i,l]),u=e.left;if(u.type==="Identifier"){let p=u.name;Te(p,u,s),n(t,p,c),s.overlay.set(u,{type:c,scope:r});}else Ne(u,c,t,r,s,a);}function Ne(e,n$1,t,r,s,a){switch(e.type){case "Identifier":{let o=Rn(e,r,s)??n$1;Te(e.name,e,s),n(t,e.name,o),s.overlay.set(e,{type:o,scope:r});return}case "AssignmentPattern":{let o$1=e,l=o$1.right,i;if(n$1.t==="any")N(l,r,s),i=o.any;else if(a.annotated){let c=N(l,r,{...s,sink:V()});i=cn(c).some(u=>u.t==="undefined")?n$1:x$1(n$1).type,Q(l,i,r,s);}else {let c=N(l,r,s),u=ga$1([x$1(n$1).type,c]);i=Q$1(a.mutable?M(u):u);}Ne(o$1.left,i,t,r,s,a);return}case "ObjectPattern":{let o$1=[];for(let l of e.properties){if(l.type==="RestElement"){let p;n$1.t==="any"?p=o.any:lt(n$1,s.schemes)?p=dr(n$1,o$1,s.schemes):(s.sink.report(S.notSpreadable.rest(l.argument)),p=o.any),Ne(l.argument,p,t,r,s,a);continue}let i=l,c=ye(i);c!=null&&o$1.push(c);let u=c!=null?ga(n$1,c,i.key,s):o.any;Ne(i.value,u,t,r,s,a);}return}case "ArrayPattern":{let o$1=ur(n$1,s);o$1===null&&(s.sink.report(S.notIterable(e,n$1)),o$1=o.any);let l=o$1;e.elements.forEach((i,c)=>{if(!i)return;let u=i;if(u.type==="RestElement")Ne(u.argument,Ea(n$1,c,l,s.schemes),t,r,s,a);else {let p=u.type==="AssignmentPattern",m=p?u.left:u;Ne(u,ba(n$1,c,m,p,l,s),t,r,s,a);}});return}}}function Zt(e,n,t){let r=u=>{let p=X(u,t.schemes);return p.t==="mapped"?J(p,t.schemes):p},s=r(n),a=s.t==="union"?J(s,t.schemes):s,o=a.t==="union"?a.of.map(r):[a],i=(s.t==="union"?oa(e,o.filter(u=>u.t==="object"||u.t==="intersection"),u=>t.overlay.get(u.value)?.type,t.schemes,n).chosen:o).filter(u=>u.t==="object"&&(!u.index||u.index.key==="number"));if(!i.length||i.some(u=>Object.keys(u.props).length===0&&!u.index))return false;let c=false;for(let u of e.properties){if(u.type==="SpreadElement")continue;let p=u,m=p.computed?Aa(t.overlay.get(p.key)?.type,t):ye(p);if(m===null)continue;i.filter(f=>l(f.props,m)||f.index?.key==="number"&&y(m)).length||(t.sink.report(p.computed?S.excessProperty(p,Oa(p.key,m),n):S.excessProperty(p.key,m,n)),c=true);}return c}var Aa=(e,n)=>{let t=e&&X(e,n.schemes);return t?.t==="literal"&&(typeof t.value=="string"||typeof t.value=="number")?String(t.value):null};function Oa(e,n){let t=r=>{if(r.type==="Identifier")return r.name;if(r.type==="MemberExpression"){let a=r,o=t(a.object);return o!==null&&!a.computed?`${o}.${a.property.name}`:null}if(r.type==="UnaryExpression"){let a=r,o=t(a.argument);return o!==null?`${a.operator}${o}`:null}if(r.type==="Literal"){let a=r.value;return typeof a=="string"?JSON.stringify(a):typeof a=="number"?String(a):null}let s=Oe(r);return s!==null?`\`${s}\``:null};return `[${t(e)??JSON.stringify(n)}]`}function ct(e,n$1,t){let r={};for(let s of e.declarations){let a=s.id,o$1=ee(a);o$1&&Te(o$1,a,t);let l=Rn(a,n$1,t);if(!s.init){if(o$1&&e.kind!=="const"){l?(n(r,o$1,l),n(r,xe(o$1),l)):(n(r,o$1,o.undefined),t.evolving.add(o$1),n(r,at(o$1),Pi(a,t)));continue}t.sink.report(S.constNeedsInit(s)),o$1&&n(r,o$1,l??o.unknown);continue}let i=l??(s.init.type==="ArrowFunctionExpression"?as(s.init):null),c=o$1&&i?Ge(n$1,{[o$1]:i},t):n$1,u,p=null;l?(Q(s.init,l,c,t),u=l,p=l,(l.t==="union"||l.t==="boolean")&&he(s.init)&&(u=ua(l,Pe(s.init),t.schemes))):(u=N(s.init,c,t),e.kind!=="const"&&(u=M(u)),u=Q$1(u),p=u),B(t,s,u,n$1),o$1?(n(r,o$1,u),e.kind!=="const"&&p&&n(r,xe(o$1),p)):Ne(a,u,r,n$1,t,{annotated:l!==void 0,mutable:e.kind!=="const"});}return B(t,e,o.unknown,n$1),Ge(n$1,r,t)}function Ge(e,n$1,t){let r=n$1;for(let a of t.evolving.size?Object.keys(n$1):[])et(a)||!t.evolving.has(a)||l(n$1,at(a))||(r===n$1&&(r={...n$1}),n(r,at(a),Oi));let s=Ae(e,r);for(let a of Object.keys(n$1))et(a)||(t.shadowed?.add(a),s=zt(s,a,t.schemes));return s}function Gi(e,n,t){let r=N(e.left,n,t),s=N(e.right,n,t);return Pa(e.operator,r,s,e,e.left,e.right,t)}function Pa(e,n,t,r,s,a,o$1){e==="in"&&(on(n,s,o$1),on(t,a,o$1));let l=mn.get(e);if(!l)return o.boolean;if(l.category==="arithmetic"||l.category==="bitwise"||l.category==="relational"||l.category==="additive"&&!ba$1(n,o.string,o$1.schemes)&&!ba$1(t,o.string,o$1.schemes)){let c=on(n,s,o$1),u=on(t,a,o$1);if(l.category==="additive"&&(c.error||u.error)){let p=c.error?u.error?null:u.type:c.type;return p&&Re(p,o$1.schemes)?o.string:o.any}n=c.type,t=u.type;}if(l.category==="additive"){if(Ke(n)||Ke(t))return Re(n,o$1.schemes)||Re(t,o$1.schemes)?o.string:o.number;if(Re(n,o$1.schemes)&&Re(t,o$1.schemes))return o.string;if(Pn(n,o$1.schemes)&&Pn(t,o$1.schemes))return o.number;if(Re(n,o$1.schemes)||Re(t,o$1.schemes)){let u=Re(n,o$1.schemes)?t:n;return o$1.sink.report(S.implicitCoercion(r,n,t,Ra(u,o$1.schemes))),o.string}return o$1.sink.report(S.operatorNotApplicable(r,"+",n,t)),o.number}if(l.category==="arithmetic"||l.category==="bitwise")Pn(n,o$1.schemes)||o$1.sink.report(S.arithmeticOperand(s,"left")),Pn(t,o$1.schemes)||o$1.sink.report(S.arithmeticOperand(a,"right"));else if(l.category==="relational"&&!Ke(n)&&!Ke(t)){let c=J(n,o$1.schemes),u=J(t,o$1.schemes),p=ba$1(c,o.number,o$1.schemes),m=ba$1(u,o.number,o$1.schemes);p&&m||!p&&!m&&(ba$1(c,u,o$1.schemes)||ba$1(u,c,o$1.schemes))||o$1.sink.report(S.operatorNotApplicable(r,e,n,t));}return Ft(l.result)}var Ke=e=>e.t==="any"||e.t==="unknown",Pn=(e,n)=>Ke(e)||ba$1(J(e,n),o.number,n),Re=(e,n)=>!Ke(e)&&ba$1(J(e,n),o.string,n),_i=o.union([o.string,o.number,o.boolean,o.null,o.undefined]),Ra=(e,n)=>Ke(e)||ba$1(J(e,n),_i,n),qi={string:o.literal(""),number:o.literal(0),boolean:o.literal(false)},nt=e=>e.t==="null"||e.t==="undefined";function zi(e,n,t,r){if(n.t==="any"||n.t==="unknown")return ga$1([n,t]);let s=(n.t==="union"?[...n.of]:[n]).flatMap(o$1=>o$1.t==="boolean"?[o.literal(true),o.literal(false)]:[o$1]);if(e==="??")return s.some(nt)?ga$1([...s.filter(o=>!nt(o)),t]):n;if(e==="||")return gs(n,r)?ga$1([...s.filter(o=>!nt(o)&&!(o.t==="literal"&&!o.value)),t]):n;if(!Ss(n,r))return n;let a=s.flatMap(o=>{if(nt(o))return [o];if(o.t==="literal")return o.value?[]:[o];let l=m(qi,o.t);return l?[l]:[]});return ga$1([...a,t])}var Ji=o.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>o.literal(e)));function Xi(e,n,t){let r=N(e.argument,n,t);switch(e.operator){case "!":return r.t==="literal"?{t:"literal",value:!r.value,fresh:true}:o.boolean;case "-":case "+":case "~":return on(r,e.argument,t),e.operator==="-"&&r.t==="literal"&&typeof r.value=="number"?{t:"literal",value:-r.value,fresh:true}:o.number;case "typeof":return Ji;case "delete":{let s=e.argument,a=s.type==="ChainExpression"?s.expression:s;a.type==="MemberExpression"&&ot(a,t,"delete");}return o.boolean;case "void":return o.undefined;default:return o.unknown}}function Yi(e,n$1,t){let r={},s,a=[],o$1=[],l=false,i=false,c=false;ra(e,t);let u=new Map;for(let[m,y]of e.properties.entries()){let f=y;if(f.type==="SpreadElement"){c=true;let P=N(f.argument,n$1,t);if(Na(e,m,P,n$1,t))return o.any;Ba(u,P,f,t);let M=X(P,t.schemes);if(M.t==="object"){for(let K in M.props)n(r,K,va(M.props[K]));M.index&&(s={key:M.index.key,type:M.index.value});}continue}let g=f,h=N(g.value,n$1,t),b=L$1(h);if(B(t,f,h,n$1),g.computed){let P=X(N(g.key,n$1,t),t.schemes);sa(e,g,Aa(P,t),t),P.t==="literal"&&typeof P.value=="string"?(n(r,P.value,{type:b}),u.set(P.value,f),a.push(b)):P.t==="literal"&&typeof P.value=="number"?(n(r,String(P.value),{type:b}),u.set(String(P.value),f),a.push(b),o$1.push(b)):P.t==="string"?(l=true,a.push(b)):P.t==="number"&&(i=true,a.push(b),o$1.push(b));continue}let w=ye(g);w!==null&&(n(r,w,{type:b}),u.set(w,f),a.push(b),/^\d+$/.test(w)&&o$1.push(b));}l?s={key:"string",type:ga$1(a)}:i&&(s={key:"number",type:ga$1(o$1)});let p=c?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return s?{t:"object",props:r,index:{key:s.key,value:s.type},...p}:{t:"object",props:r,...p}}function Ta(e,n,t){let r=[];for(let s of e.elements){if(!s)continue;let a=s;if(a.type==="SpreadElement"){let o=X(N(a.argument,n,t),t.schemes);o.t==="array"?r.push(o.items):o.t==="tuple"&&r.push(...o.elements);continue}r.push(L$1(N(a,n,t)));}return v(o.array(r.length?ga$1(r):o.unknown))}function fr(e,n,t,r){let s=X(n,r.schemes),a=e.elements,o$1=a.every(i=>i&&i.type!=="SpreadElement"),l=(i,c)=>i.type==="ArrayExpression"?fr(i,c,t,r):Y(i)?Q(i,c,t,r.inference?{...r,sink:V()}:r,true):rn(c,he(i)?Pe(i):void 0)?N(i,t,r):L$1(N(i,t,r));if(s.t==="tuple"&&o$1){let i=B$1(s),c=p=>i<0||p<i?s.elements[p]:s.elements[i],u=a.map((p,m)=>{let y=c(m);return y?l(p,y):L$1(N(p,t,r))});return B(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}if(s.t==="union"&&o$1){let i=s.of.map(c=>X(c,r.schemes));if(i.some(c=>c.t==="tuple")){let c=(p,m)=>{if(p.t==="array")return p.items;if(p.t!=="tuple")return;let y=B$1(p);return y<0||m<y?p.elements[m]:p.elements[y]},u=a.map((p,m)=>{let y=i.map(f=>c(f,m)).filter(f=>f!==void 0);return y.length?l(p,ga$1(y)):L$1(N(p,t,r))});return B(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}}if(s.t==="array"){let i=[];for(let c of a){if(!c)continue;let u=c;if(u.type==="SpreadElement"){N(u.argument,t,r);continue}i.push(l(u,s.items));}return B(r,e,v(o.array(i.length?ga$1(i):o.unknown)),t)}return Ta(e,t,r)}function Ca(e,n,t$1){let r=J(e,t$1);if(r.t==="array")return r.items;if(r.t==="tuple"){let s=B$1(r);if(n>=r.elements.length||s>=0&&n>=s)return;let a=K(o.index(r,o.literal(n)),t$1);return t(a)?void 0:a}if(r.t==="union"){let s=r.of.map(a=>Ca(a,n,t$1));return s.some(a=>a===void 0)?void 0:ga$1(s)}}function Qi(e,n,t,r,s){let a=J(t,s.schemes);if(a.t!=="array"&&a.t!=="tuple"&&a.t!=="union")return false;let o=(i,c)=>i.t==="tuple"?i.elements[c]:i.t==="array"?i.items:void 0,l=false;return e.elements.forEach((i,c)=>{if(!i)return;let u=i;if(u.type==="SpreadElement")return;let p=Ca(a,c,s.schemes);if(!p)return;let m=o(n,c);if(!m||ba$1(m,p,s.schemes))return;let y=s.sink.reported;Q(u,p,r,s,false),s.sink.reported>y&&(l=true);}),l}function er(e,n$1,t,r){if(e===null)return o.null;switch(typeof e){case "string":return o.string;case "number":return o.number;case "boolean":return o.boolean;case "object":break;default:return o.unknown}if(Array.isArray(e)){let o$1=e.map(l=>er(l,n$1,t,r));return o.array(o$1.length?ga$1(o$1):o.unknown)}let s=e;if(isExprMarker(s)){let o$1;try{o$1=fromJson(s);}catch{return t.sink.report(S.unsupported(r,`'${EXPR_MARKER}: ${String(m(s,EXPR_MARKER))}'`)),o.unknown}return N(o$1,n$1,t)}let a={};for(let o of Object.keys(s))n(a,o,{type:er(s[o],n$1,t,r)});return {t:"object",props:a}}function Da(e,n){let t=J(e,n);return t.t==="object"?Object.keys(t.props).length>0||t.index!==void 0:t.t==="intersection"||tr(t)?true:t.t==="array"?t.items.t!=="any"&&t.items.t!=="unknown":t.t==="union"?t.of.some(r=>Da(r,n)):false}function Hi(e,n,t,r,s){let a=V(),o=Q(e,n,t,{...r,sink:a},true);if(!(a.hasErrors()&&s)){for(let l of a.all)r.sink.report(l);return a.hasErrors()?n:o}}var Zi=(e,n)=>({...e,typeAnnotation:n}),el=(e,n)=>({...e,returnType:n}),nl=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function mr(e,n){return e.get(n)?.type}function tl(e,n){return e.get(n)?.scope}function rl(e,n){let t=e.get(n)?.type;return t?qa(t,[])?.completions??[]:[]}function sl(e,n){let t=e.get(n)?.scope;return t?[...vt(t)].map(([r,s])=>({key:r,type:s,optional:false})):[]}var al=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function ol(e){if(!e||e.computed)return;let n=e.key;if(n?.type==="Identifier")return n.name;if(n?.type==="Literal"&&typeof n.value=="string")return n.value}function mt(e,n,t,r={}){let s=e[n],a=e[n+1];if(!(!s||!a))switch(a.type){case "ArrowFunctionExpression":case "FunctionExpression":return a.body===s?a.returnType:void 0;case "VariableDeclarator":return a.init===s?a.id?.typeAnnotation:void 0;case "TSAsExpression":return a.typeAnnotation;case "ReturnStatement":return e.slice(n+1).find(al)?.returnType;case "CallExpression":{let o=(a.arguments??[]).indexOf(s);if(o<0)return;let l=mr(t,a.callee);return l?.t==="fn"?l.params?.[o]?.type:void 0}case "Property":{if(a.value!==s||e[n+2]?.type!=="ObjectExpression")return;let l=mt(e,n+2,t,r),i=ol(a);return !l||!i?void 0:qa(l,[i],r)?.type}case "ArrayExpression":{let o=mt(e,n+1,t,r);return o?qa(o,["[]"],r)?.type:void 0}case "BinaryExpression":{let o$1=mn.get(a.operator);if(!o$1)return;if(o$1.category==="arithmetic"||o$1.category==="bitwise")return o.number;let l=a.left===s?a.right:a.left,i=mr(t,l);return i&&i.t!=="any"&&i.t!=="unknown"?i:void 0}case "LogicalExpression":return mt(e,n+1,t,r);case "UnaryExpression":{let o$1=a.operator;return o$1==="-"||o$1==="+"||o$1==="~"?o.number:void 0}default:return}}function il(e,n){return e.filter(t=>t.node===n)}function pl(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var dl=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function yr(e,n,t,r){if(isExprMarker(e)){let s=r.island?r.island(e,n):fromExprMarker(e);return t.stamp(s,n)}return Array.isArray(e)?t.stamp(ke.arrayExpression(e.map((s,a)=>yr(s,r.child(n,a),t,r))),n):dl(e)?t.stamp(ke.objectExpression(Object.entries(e).map(([s,a])=>{let o=r.child(n,s),l=t.stamp(ke.literal(s),o);return t.stamp(ke.property(l,yr(a,o,t,r),false,false),o)})),n):t.stamp(ke.literal(e),n)}function fl(e){let n=new WeakMap,t=[e];for(;t.length>0;){let r=t.pop();forEachChild(r,s=>{n.set(s,r),t.push(s);});}return n}function ml(e,n,t,r){let s=fl(e),a=new Map,o=i=>{let c=a.get(i);return c===void 0&&(c=createPositionMap(i),a.set(i,c)),c},l=i=>{let c=i;for(;c!==void 0;){let u=t.get(c);if(u!==void 0)return u;c=s.get(c);}return r.fallback};return n.map(i=>{let c=l(i.node),u=r.textOf?.(c),p=u===void 0?void 0:Ma(o(u),i.node.loc);return {diagnostic:i,anchor:c,...p?{span:p}:{}}})}function Ma(e,n){if(!n?.start)return;let t=a=>e.offsetAt({line:a.line-1,column:a.column}),r=t(n.start),s=n.end?t(n.end):r;return {from:r,to:s<r?r:s}}function yl(e,n){return Ma(createPositionMap(e),n)}export{mn as BINARY_OP,It as BINARY_OPS,Lr as FUNCTION_KINDS,Ha as LOGICAL_OPS,Kr as UNARY_OPS,ml as anchorDiagnostics,Zi as annotate,el as annotateReturn,nl as asExpression,Za as binaryOpsProducing,Ot as calleeAllowlist,At as capabilityNodes,xs as check,Ae as childScope,co as collectBindings,Vt as collectMutations,ho as collectReferences,xt as collectUnused,ei as componentProps,nr as componentPropsOf,mt as contextualTypeAt,pl as createAnchors,Ua as createEnv,V as createSink,S as diag,il as diagnosticsAt,Ko as extractModuleType,Ya as fromCapability,wt as guard,Wn as guardsFromCompiled,q as lookup,yr as lowerValue,W as makeDiagnostic,jt as maxArgs,Rt as maxCallNesting,Ct as maxDepth,Pt as maxFunctionNesting,Kn as maxNestingOf,Dt as maxNodes,rl as memberCompletions,Tt as memberDepth,Ft as opResultSchema,Wa as resolveNamed,Ga as resolveScheme,Mt as resultType,Mr as rootScope,fo as sameSymbol,tl as scopeAt,sl as scopeCompletions,yl as spanOf,mr as typeAt,eo as unaryOpsProducing,vt as visibleNames};
|
|
1
|
+
import {o,pa as pa$1,ca as ca$1,ra as ra$1,l,m,n,da as da$1,e,h,i,k,f,ta as ta$1,j,ia as ia$1,R,N,K as K$1,t,J,H as H$1,I,E,aa as aa$1,C,P,ba as ba$1,Y,F,G as G$1,L,ha,r,Q as Q$1,O,M,ua as ua$1,x,B,y,ea as ea$1,v as v$1,ga as ga$1,fa as fa$1,T as T$1,Z,_,w,q,p,ja as ja$1}from'./chunk-NXZILQOD.js';export{d as DEFAULT_TYPE_LIMITS,c as INSTANTIATION_COUNT_LIMIT,b as INSTANTIATION_DEPTH_LIMIT,S as InferencePriority,i as InstantiationLimitError,a as TYPE_EVAL_DEPTH_LIMIT,h as TypeEvalLimitError,k as UnionTooComplexError,J as apparentType,v as asLiteralOrigin,N as baseLiteralType,G as bindTypeParams,ea as comparable,e as configureTypeLimits,V as contravariantInference,U as covariantInference,T as createInferences,ta as discover,fa as equals,X as erasedSignature,I as expand1,z as flagAt,pa as format,qa as formatTypeArgs,ra as formatTypeDiff,E as freeVars,ba as groundVars,W as inferFromCandidates,Z as inferTypes,_ as inferredBindings,Y as inferredTypes,$ as instantiateInContextOf,aa as instantiateLoose,t as isMissingType,y as isNumericLiteralName,u as isObjectOrArrayLiteral,H as isScheme,sa as isSerializable,A as isVariadicTuple,ka as join,la as joinAll,s as missingType,ia as normalizeUnion,w as ownProp,ua as readonlyMember,D as renameTypeParams,j as resetInstantiationCount,f as resetTypeLimits,ga as resolveConditional,K as resolveOp,p as resolveTypeOp,B as restIndex,r as restTypeAtPosition,o as s,ma as sampleValue,R as silentNever,C as substitute,da as subtype,ha as typeAtPosition,ca as typeDiff,ja as typeFeatures,g as typeLimits,na as typeNameOf,oa as typeNeedsParens,F as typeParamArity,va as version,L as widen,P as widenInferred,M as widenLiteral,Q as widenOrigin,O as widenType,q as withUndefined,x as withoutUndefined}from'./chunk-NXZILQOD.js';import {rootScope,childScope,lookup,visibleNames,TSLiteError,walk,desugarJSX,isExprMarker,EXPR_MARKER,fromExprMarker,childrenOf,VisitorKeys,forEachChild,ERASABLE_TYPE_NODE_KEYS,isInstantiatedNamespace}from'@tslite/ast';import {compileProfile,nodeViolation,typeFeatureViolations}from'@tslite/capability';import {fromJson}from'@tslite/json';import*as nn from'@tslite/ast/builders';import {createPositionMap}from'@tslite/language-service';var Pa={"unknown-name":"semantic","const-needs-init":"semantic","cannot-redeclare":"semantic","circular-type-alias":"semantic","circular-type-annotation":"semantic","unknown-module":"semantic","not-a-schema":"semantic","type-as-value":"semantic","asserter-needs-name":"semantic","shadows-schema":"semantic",unsupported:"semantic","unused-name":"semantic","assign-to-const":"semantic","for-in-destructuring":"semantic","misplaced-namespace":"semantic","misplaced-modifier":"semantic","ambient-initializer":"semantic","ambient-statement":"semantic","used-before-assigned":"semantic","used-before-declaration":"semantic","for-in-not-object":"type","readonly-write":"type","not-assignable":"type","not-callable":"type","no-such-member":"type","not-object":"type","possibly-nullish":"type","unknown-value":"type","missing-argument":"type","excess-argument":"type","excess-property":"type","spread-argument":"type","required-after-optional":"type","not-iterable":"type","not-spreadable":"type","overwritten-property":"type","implicit-any":"semantic","props-mismatch":"type","no-matching-overload":"type","constraint-violation":"type","wrong-type-argument-count":"type","cast-unsound":"type","unprovable-value":"type","not-arithmetic-operand":"type","operator-not-applicable":"type","no-overlap":"type","uncalled-function-check":"type","not-comparable":"type","implicit-coercion":"type","too-deep":"type","too-complex-union":"type","node-not-allowed":"capability","name-not-allowed":"capability","type-feature-not-allowed":"capability","any-not-allowed":"capability","narrowing-cast-not-allowed":"capability","too-large":"capability","wrong-result-type":"capability"},A=(e,t,n)=>({code:e,kind:Pa[e],severity:"error",node:t,message:n}),ne=(e,t,n,a="error")=>({code:e,kind:Pa[e],severity:a,node:t,message:n}),Ce={cannotFindName:e=>`Cannot find name '${e}'.`,cannotFindNamespace:e=>`Cannot find namespace '${e}'.`,noExportedMember:(e,t)=>`Namespace '${e}' has no exported member '${t}'.`,redeclareBlockScoped:e=>`Cannot redeclare block-scoped variable '${e}'.`,genericTypeArity:(e,t,n)=>n===0?`Type '${e}' is not generic.`:t===n?`Generic type '${e}' requires ${n} type argument${n===1?"":"s"}.`:`Generic type '${e}' requires between ${t} and ${n} type arguments.`},tt=(e,t,n)=>({code:e,kind:Pa[e],severity:"error",message:n,path:t}),pn={unknownName:(e,t)=>tt("unknown-name",e,Ce.cannotFindName(t)),namespaceNotFound:(e,t)=>tt("unknown-name",e,Ce.cannotFindNamespace(t)),noExportedMember:(e,t,n)=>tt("no-such-member",e,Ce.noExportedMember(t,n)),redeclaration:(e,t)=>tt("cannot-redeclare",e,Ce.redeclareBlockScoped(t)),genericTypeArity:(e,t,n,a)=>tt("wrong-type-argument-count",e,Ce.genericTypeArity(t,n,a))},S={notAssignable:(e,t,n,a={})=>{let s=ca$1(t,n,a),r=s.filter(p=>p.path.length>0),o=r.length?` ${ra$1(r)}.`:"",i=pa$1(t),l=pa$1(n),c=i===l?`Type '${i}' is not assignable to type '${l}'. Two different types with this name exist, but they are unrelated.`:`Type '${i}' is not assignable to type '${l}'.`,u=A("not-assignable",e,`${c}${o}`),d=s.flatMap(p=>{let[y]=p.path;return p.kind==="missing"&&p.path.length===1&&typeof y=="string"?[{name:y,type:p.expected}]:[]});return d.length?{...u,data:{kind:"missing-properties",properties:d}}:u},unknownName:(e,t)=>A("unknown-name",e,Ce.cannotFindName(t)),notCallable:(e,t)=>A("not-callable",e,`Type '${pa$1(t)}' is not callable.`),noSuchMember:(e,t,n)=>A("no-such-member",e,`Property '${n}' does not exist on type '${pa$1(t)}'.`),notObject:(e,t)=>A("not-object",e,`Type '${pa$1(t)}' has no members to access.`),possiblyNullish:(e,t,n=false)=>{let a=t.null&&t.undefined?"'null' or 'undefined'":t.null?"'null'":"'undefined'";return A("possibly-nullish",e,n?`Cannot invoke an object which is possibly ${a}.`:`Object is possibly ${a}.`)},unknownValue:e=>A("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>A("const-needs-init",e,"'const' declarations must be initialized."),destructuringNeedsInit:e=>A("const-needs-init",e,"A destructuring declaration must have an initializer."),missingArgument:(e,t,n)=>A("missing-argument",e,`Missing argument '${t}' of type '${pa$1(n)}'.`),notASchema:(e,t)=>A("not-a-schema",e,`'${t}' refers to a value, but no type named '${t}' is declared. An asserter needs a schema that is both a value in scope and a declared type.`),typeAsValue:(e,t)=>A("type-as-value",e,`'${t}' only refers to a type, but is being used as a value here. Types are erased at runtime: register '${t}' as a value in scope for the asserter to prove it.`),asserterNeedsName:(e,t)=>A("asserter-needs-name",e,`The first argument of '${t}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,t)=>A("shadows-schema",e,`'${t}' shadows the schema of the same name: an asserter would type against the declared schema but prove against this value at runtime. Rename the binding.`),unknownModule:(e,t)=>A("unknown-module",e,`Cannot find module '${t}' or its corresponding type declarations.`),redeclaration:{blockScoped:(e,t)=>A("cannot-redeclare",e,Ce.redeclareBlockScoped(t)),duplicate:(e,t)=>A("cannot-redeclare",e,`Duplicate identifier '${t}'.`),importConflict:(e,t)=>A("cannot-redeclare",e,`Import declaration conflicts with local declaration of '${t}'.`),catchClause:(e,t)=>A("cannot-redeclare",e,`Cannot redeclare identifier '${t}' in catch clause.`),mixedExport:(e,t)=>A("cannot-redeclare",e,`Individual declarations in merged declaration '${t}' must be all exported or all local.`)},circularTypeAlias:(e,t)=>A("circular-type-alias",e,`Type alias '${t}' circularly references itself.`),circularTypeAnnotation:(e,t)=>A("circular-type-annotation",e,`'${t}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,t,n)=>A("excess-argument",e,`Expected ${t} argument${t===1?"":"s"}, but got ${n}.`),argumentArity:(e,t,n,a,s=false)=>A(a==="missing"?"missing-argument":"excess-argument",e,s?`Expected at least ${t} arguments, but got ${n}.`:`Expected ${t} arguments, but got ${n}.`),excessProperty:(e,t,n)=>A("excess-property",e,`Object literal may only specify known properties, and '${t}' does not exist in type '${pa$1(n)}'.`),spreadArgument:e=>A("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>A("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,t)=>A("not-iterable",e,`Type '${pa$1(t)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),notSpreadable:{rest:e=>A("not-spreadable",e,"Rest types may only be created from object types."),spread:e=>A("not-spreadable",e,"Spread types may only be created from object types.")},duplicateKey:{strict:e=>A("cannot-redeclare",e,"An object literal cannot have multiple properties with the same name in strict mode."),identifier:(e,t)=>A("cannot-redeclare",e,`Duplicate identifier '${t}'.`),lateBound:(e,t)=>A("cannot-redeclare",e,`Duplicate property '${t}'.`),alsoDeclared:(e,t)=>A("cannot-redeclare",e,`Property '${t}' was also declared here.`)},overwrittenProperty:(e,t,n)=>({...A("overwritten-property",e,`'${t}' is specified more than once, so this usage will be overwritten.`),relatedInformation:[{node:n,message:"This spread always overwrites this property."}]}),implicitAny:{parameter:(e,t)=>A("implicit-any",e,`Parameter '${t}' implicitly has an 'any' type.`),rest:(e,t)=>A("implicit-any",e,`Rest parameter '${t}' implicitly has an 'any[]' type.`),bindingElement:(e,t)=>A("implicit-any",e,`Binding element '${t}' implicitly has an 'any' type.`),evolving:(e,t)=>A("implicit-any",e,`Variable '${t}' implicitly has type 'any' in some locations where its type cannot be determined.`),variable:(e,t)=>A("implicit-any",e,`Variable '${t}' implicitly has an 'any' type.`),index:(e,t,n)=>A("implicit-any",e,`Element implicitly has an 'any' type because expression of type '${pa$1(t)}' can't be used to index type '${pa$1(n)}'.`),indexNotNumber:e=>A("implicit-any",e,"Element implicitly has an 'any' type because index expression is not of type 'number'.")},tupleIndexOutOfRange:(e,t,n,a)=>A("no-such-member",e,`Tuple type '${pa$1(t)}' of length '${n}' has no element at index '${a}'.`),propsMismatch:(e,t,n)=>A("props-mismatch",e,`Payload is not compatible with the component props '${pa$1(t)}': ${n}.`),noMatchingOverload:(e,t,n)=>A("no-matching-overload",e,`No overload of '${pa$1(t)}' matches the arguments (${n.map(a=>pa$1(a)).join(", ")}).`),constraintViolation:(e,t,n)=>A("constraint-violation",e,`Type '${pa$1(t)}' does not satisfy the constraint '${pa$1(n)}'.`),unsupported:(e,t)=>A("unsupported",e,`${t} is not supported in this language.`),usedBeforeDeclaration:{blockScoped:(e,t,n)=>({...A("used-before-declaration",e,`Block-scoped variable '${t}' used before its declaration.`),relatedInformation:[{node:n,message:`'${t}' is declared here.`}]}),parameterSelf:(e,t)=>A("used-before-declaration",e,`Parameter '${t}' cannot reference itself.`),parameterAfter:(e,t,n)=>A("used-before-declaration",e,`Parameter '${t}' cannot reference identifier '${n}' declared after it.`)},usedBeforeAssigned:(e,t)=>A("used-before-assigned",e,`Variable '${t}' is used before being assigned.`),namespace:{notFound:(e,t)=>A("unknown-name",e,Ce.cannotFindNamespace(t)),noExportedMember:(e,t,n)=>A("no-such-member",e,Ce.noExportedMember(t,n)),asValue:(e,t)=>A("type-as-value",e,`Cannot use namespace '${t}' as a value.`),misplaced:e=>A("misplaced-namespace",e,"A namespace declaration is only allowed in a namespace or module.")},modifier:{cannotAppearHere:e=>A("misplaced-modifier",e,"Modifiers cannot appear here."),alreadyAmbient:e=>A("misplaced-modifier",e,"A 'declare' modifier cannot be used in an already ambient context.")},ambient:{initializer:e=>A("ambient-initializer",e,"Initializers are not allowed in ambient contexts."),constInitializer:e=>A("ambient-initializer",e,"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference."),statement:e=>A("ambient-statement",e,"Statements are not allowed in ambient contexts.")},wrongTypeArgumentCount:(e,t,n)=>A("wrong-type-argument-count",e,`Expected ${t} type arguments, but got ${n}.`),noOverloadTypeArgumentCount:(e,t,n,a)=>A("wrong-type-argument-count",e,`No overload expects ${t} type arguments, but overloads do exist that expect either ${n} or ${a} type arguments.`),genericTypeArity:(e,t,n,a)=>A("wrong-type-argument-count",e,Ce.genericTypeArity(t,n,a)),unusedName:(e,t)=>ne("unused-name",e,`'${t}' is declared but its value is never read.`,"warning"),assignToConst:(e,t,n)=>A("assign-to-const",e,n==="import"?`Cannot assign to '${t}' because it is an import.`:n==="not-a-variable"?`Cannot assign to '${t}' because it is not a variable.`:`Cannot assign to '${t}' because it is a constant.`),forInTarget:e=>A("not-assignable",e,"The left-hand side of a 'for...in' statement must be of type 'string' or 'any'."),forInDestructuring:e=>A("for-in-destructuring",e,"The left-hand side of a 'for...in' statement cannot be a destructuring pattern."),forInNotObject:(e,t)=>A("for-in-not-object",e,`The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter, but here has type '${pa$1(t)}'.`),readonlyWrite:(e,t)=>A("readonly-write",e,`Index signature in type '${pa$1(t)}' only permits reading.`),readonlyProperty:(e,t)=>A("readonly-write",e,`Cannot assign to '${t}' because it is a read-only property.`),readonlyDelete:e=>A("readonly-write",e,"The operand of a 'delete' operator cannot be a read-only property."),castUnsound:(e,t,n)=>A("cast-unsound",e,`Conversion of type '${pa$1(t)}' to type '${pa$1(n)}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.`),unprovableValue:(e,t,n,a)=>A("unprovable-value",e,`A value of type '${pa$1(t)}' can never satisfy '${a}' (${pa$1(n)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,t)=>A("not-arithmetic-operand",e,t==="operand"?"An arithmetic operand must be of type 'any' or 'number'.":`The ${t==="left"?"left":"right"}-hand side of an arithmetic operation must be of type 'any' or 'number'.`),operatorNotApplicable:(e,t,n,a)=>A("operator-not-applicable",e,`Operator '${t}' cannot be applied to types '${pa$1(n)}' and '${pa$1(a)}'.`),notComparable:(e,t,n)=>A("not-comparable",e,`Type '${pa$1(t)}' is not comparable to type '${pa$1(n)}'.`),uncalledFunctionCheck:e=>A("uncalled-function-check",e,"This condition will always return true since the function is always defined. Did you mean to call it instead?"),noOverlap:(e,t,n,a,s)=>({...A("no-overlap",e,`This condition will always return '${t==="==="||t==="=="?"false":"true"}' since the types '${pa$1(n)}' and '${pa$1(a)}' have no overlap.`),...s?{relatedInformation:[{node:e,message:"Did you forget to use 'await'?"}]}:{}}),implicitCoercion:(e,t,n,a)=>({...A("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${pa$1(t)}' and '${pa$1(n)}'. `+(a?"Use a template literal or 'asString(\u2026)'.":"Use 'stringify(\u2026)' to serialize a structure.")),data:{kind:"implicit-coercion",textConvertible:a}}),notTextConvertible:(e,t)=>({...A("implicit-coercion",e,`Cannot convert '${pa$1(t)}' to text: only string, number, boolean, null and undefined convert. Use 'stringify(\u2026)' to serialize a structure.`),data:{kind:"implicit-coercion",textConvertible:false}})};function H(){let e=[],t=new WeakMap,n=0;return {all:e,get reported(){return n},report(a){n++;let s=t.get(a.node);s||t.set(a.node,s=[]),!s.some(r=>Sl(r,a))&&(s.push(a),e.push(a));},hasErrors(){return e.some(a=>a.severity==="error")}}}function Sl(e,t){if(e.code!==t.code||e.message!==t.message)return false;let n=e.relatedInformation??[],a=t.relatedInformation??[];return n.length===a.length&&n.every((s,r)=>s.node===a[r].node&&s.message===a[r].message)}var Ge={None:0,FunctionScopedVariable:1,BlockScopedVariable:2,Function:16,ValueModule:512,NamespaceModule:1024,TypeAlias:1<<19,ExportValue:1<<20,Alias:1<<21},K=Ge,ja=K.FunctionScopedVariable|K.BlockScopedVariable,_e=ja|K.Function|K.ValueModule,gr=K.TypeAlias,Fa=K.ValueModule|K.NamespaceModule,Bl=ja|K.Function|Fa|K.TypeAlias|K.Alias,at={Value:_e,Type:gr},Ie={BlockScopedVariable:_e,FunctionScopedVariable:_e&-2,Parameter:_e,Function:_e&-529,ValueModule:_e&-529,NamespaceModule:0,TypeAlias:gr,Alias:K.Alias},Sr=e=>`${e.name}@${e.id}`,br=e=>{let t=e.indexOf("@");return t<0?e:e.slice(0,t)},In=e=>e.includes("@"),kl=new Set(["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"]),he=e=>!!e&&kl.has(e.type),fn={None:0,WithLocals:1,BlockScoped:2};function vl(e,t){switch(e.type){case "Program":case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":case "TSModuleDeclaration":return fn.WithLocals;case "CatchClause":case "ForStatement":case "ForInStatement":case "ForOfStatement":case "SwitchStatement":return fn.BlockScoped;case "BlockStatement":return he(t)?fn.None:fn.BlockScoped;default:return fn.None}}function we(e,t,n){switch(e.type){case "Identifier":n.push({name:e,element:t});return;case "AssignmentPattern":we(e.left,t,n);return;case "RestElement":we(e.argument,t,n);return;case "ArrayPattern":for(let a of e.elements)a&&we(a,a,n);return;case "ObjectPattern":for(let a of e.properties)we(a.type==="RestElement"?a:a.value,a,n);return;default:return}}function Va(e){let t=[];switch(e.type){case "VariableDeclaration":for(let n of e.declarations)we(n.id,n,t);break;case "VariableDeclarator":we(e.id,e,t);break;case "FunctionDeclaration":{let n=e.id;return n?[n]:[]}default:if(he(e))for(let n of e.params)we(n,n,t);else we(e,e,t);}return t.map(n=>n.name)}var wl=1;function $a(e,t){let n=new WeakMap,a=new WeakMap,s=new WeakMap,r=new WeakMap,o=new WeakMap,i=new WeakMap,l=new WeakMap,c=new WeakSet,u=new WeakSet,d=[],p=[],y=new WeakSet,m=b=>{y.has(b)||(y.add(b),p.push(b));},h=[],g=[],N=0,w=e,k=e,R=(b,P)=>{let F={id:wl++,name:P,flags:b,declarations:[]};return g.push(F),F},C=b=>{let P=s.get(b);return P||s.set(b,P=new Map),P},B=b=>{if(b.type==="TSModuleDeclaration"){let F=o.get(b.id);return F.exports||(F.exports=new Map),F}let P=r.get(b);return P||(P=R(K.None,b.type),P.exports=new Map,r.set(b,P)),P},E=(b,P,F)=>{b.flags|=F,o.set(P.name,b),b.declarations.includes(P)||b.declarations.push(P),F&Fa&&!b.exports&&(b.exports=new Map),F&_e&&!b.valueDeclaration&&(b.valueDeclaration=P);},M=(b,P,F,$,ee)=>{let _=F.name.name,X=b.get(_);if(!X)b.set(_,X=R(K.None,_));else if(X.flags&ee){let ze=X.flags&K.BlockScopedVariable?S.redeclaration.blockScoped:S.redeclaration.duplicate;for(let wa of X.declarations)d.push(ze(wa.name,_));d.push(ze(F.name,_)),X=R(K.None,_);}return E(X,F,$),X.parent||(X.parent=P),X},L=(b,P,F,$)=>{let ee=C(b);if(F&K.Alias){if(P.kind==="export-specifier"){let _=B(b);return M(_.exports,_,P,F,$)}return M(ee,void 0,P,F,$)}if(P.exported||u.has(b)){let _=B(b),X=M(ee,void 0,P,F&_e?K.ExportValue:0,$);return X.exportSymbol=M(_.exports,_,P,F,$),i.set(P.name,X),X}return M(ee,void 0,P,F,$)},J=b=>b.type==="Program"||b.type==="TSModuleDeclaration",q=(b,P,F)=>{J(w)?L(w,b,P,F):M(C(w),void 0,b,P,F);},Z=(b,P,F)=>{J(k)?L(k,b,P,F):M(C(k),void 0,b,P,F);},ke=b=>(c.add(b.name),l.set(b.name,b),b),un=(b,P)=>{let F=b.kind;for(let $ of b.declarations){let ee=[],_=$.id;we(_,$,ee);for(let X of ee){let ze=ke({name:X.name,node:X.element===_?$:X.element,kind:F,exported:P});F==="var"?q(ze,K.FunctionScopedVariable,Ie.FunctionScopedVariable):Z(ze,K.BlockScopedVariable,Ie.BlockScopedVariable);}}},Ct=b=>{for(let P of b.params){let F=[];we(P,P,F);for(let $ of F)M(C(b),void 0,ke({name:$.name,node:$.element,kind:"parameter",exported:false}),K.FunctionScopedVariable,Ie.Parameter);}},An=(b,P)=>{let F=P?.type==="ExportNamedDeclaration";switch(b.type){case "VariableDeclaration":un(b,F);return;case "FunctionDeclaration":{let $=b.id;$&&Z(ke({name:$,node:b,kind:"function",exported:F}),K.Function,Ie.Function);return}case "TSTypeAliasDeclaration":Z(ke({name:b.id,node:b,kind:"type-alias",exported:F}),K.TypeAlias,Ie.TypeAlias);return;case "TSModuleDeclaration":{let $=b,ee=P?.type==="TSModuleDeclaration",_=isInstantiatedNamespace($);q(ke({name:$.id,node:b,kind:"namespace",exported:F||ee}),_?K.ValueModule:K.NamespaceModule,_?Ie.ValueModule:Ie.NamespaceModule);return}case "ImportDeclaration":for(let $ of b.specifiers)q(ke({name:$.local,node:$,kind:"import",exported:false}),K.Alias,Ie.Alias);return;case "ExportNamedDeclaration":{let $=b;if(!$.declaration&&!$.source)for(let ee of $.specifiers)q(ke({name:ee.exported,node:ee,kind:"export-specifier",exported:true}),K.Alias,Ie.Alias);return}case "CatchClause":{let $=b.param;if(!$)return;h.push(b);let ee=[];we($,$,ee);for(let _ of ee)M(C(b),void 0,ke({name:_.name,node:_.element,kind:"catch",exported:false}),K.BlockScopedVariable,Ie.BlockScopedVariable);return}default:return}},Re=(b,P)=>{if(!P)return;if(b.body.type==="TSModuleDeclaration"){u.add(b);return}b.body.body.some($=>$.type==="ExportNamedDeclaration"&&!$.declaration)||u.add(b);},Ue=(b,P,F)=>{if(c.has(b)||!P)return false;switch(P.type){case "MemberExpression":return F!=="property"||!!P.computed;case "Property":{let $=P;return F==="key"?!!$.computed||!!$.shorthand&&$.value===$.key:true}case "ImportSpecifier":case "ImportDefaultSpecifier":case "ImportNamespaceSpecifier":return false;case "ExportSpecifier":return F==="local";case "FunctionExpression":return F!=="id";case "LabeledStatement":case "BreakStatement":case "ContinueStatement":case "MetaProperty":return false;default:return true}},pe=0,fe=b=>{for(let P=t;P;P=P.bound.outer)if(P.bound.has(b))return true;return false},Tn=(b,P,F)=>{if(P&&fe(b))return;if(a.has(b)){b.type==="Identifier"&&Ue(b,P,F)&&m(b);return}if(a.set(b,N++),P&&n.set(b,P),b.type==="Identifier"){Ue(b,P,F)&&m(b);return}An(b,P);let $=vl(b,P),ee=w,_=k,X=b.type==="TSModuleDeclaration",ze=X&&(pe>0||b.declare===true);$===fn.WithLocals?(w=k=b,C(b),X&&Re(b,ze),he(b)&&Ct(b)):$===fn.BlockScoped&&(k=b),ze&&pe++,forEachChild(b,(wa,hl)=>Tn(wa,b,hl)),ze&&pe--,w=ee,k=_;};return Tn(e,void 0,""),{root:e,diagnostics:d,references:p,catchClauses:h,symbols:g,symbolOf:b=>o.get(b),localSymbolOf:b=>i.get(b),declarationOf:b=>l.get(b),localsOf:b=>s.get(b)??t?.bound.localsOf(b),containerSymbolOf:b=>(b.type==="TSModuleDeclaration"?o.get(b.id):r.get(b))??t?.bound.containerSymbolOf(b),parentOf:b=>b===e?t?.parent:n.get(b)??t?.bound.parentOf(b),orderOf:b=>a.get(b)??t?.bound.orderOf(b)??-1,resolved:new WeakMap,has:b=>a.has(b),outer:t}}function mr(e,t,n){let a=e.get(t);if(!(!a||!n)&&(a.flags&n||a.flags&K.Alias))return a}var sn=(e,t,n)=>{for(let a=t;a;a=e.parentOf(a)){let s=n(a);if(s==="quit")return;if(s)return a}},El=(e,t,n)=>!!sn(e,t,a=>a===n),xa=(e,t)=>!!t&&e.params.includes(t),Al=(e,t,n,a)=>{let s=t.valueDeclaration,r=n.body;return xa(n,a)&&!!s&&El(e,s.node,r)};function Lt(e,t,n,a){let s=t,r;for(;s;){let o=e.localsOf(s),i=s.type==="SwitchStatement"&&r===s.discriminant;if(o&&!i){let l=mr(o,n,a);if(l){let c=true;if(he(s)&&r&&r!==s.body&&a&l.flags&ja&&(Al(e,l,s,r)?c=false:l.flags&K.FunctionScopedVariable&&(c=xa(s,r))),c)return l}}if(s.type==="Program"||s.type==="TSModuleDeclaration"){let l=e.containerSymbolOf(s)?.exports,c=l?.get(n),u=c?.flags===K.Alias&&c.declarations.every(d=>d.kind==="export-specifier");if(l&&!u){let d=mr(l,n,a&Bl);if(d)return d}}r=s,s=e.parentOf(s);}}function jn(e,t){let n=e.resolved.get(t);if(n!==void 0)return n??void 0;let a=Lt(e,t,t.name,_e|K.ExportValue);return e.resolved.set(t,a??null),a}var Kt=e=>e.flags&K.ExportValue&&e.exportSymbol?e.exportSymbol:e,Tl=(e,t)=>{switch(e.type){case "Program":case "SwitchStatement":case "CatchClause":case "TSModuleDeclaration":case "ForStatement":case "ForInStatement":case "ForOfStatement":case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":return true;case "BlockStatement":return !he(t);default:return false}},yr=(e,t)=>{let n=e.parentOf(t);return n?n.type==="ArrayPattern"?true:t.type==="Property"||t.type==="RestElement"?n.type==="ObjectPattern":false:false};function Wt(e,t,n,a){let s=t.node,r=sn(e,e.parentOf(s),d=>Tl(d,e.parentOf(d))),o=e;for(;o&&!o.has(s);)o=o.outer?.bound;let i=o??e,l=d=>{let p=d;for(;p&&!i.has(p);)p=e.parentOf(p);return p??d},c=d=>i.orderOf(l(d));if(c(s)<=c(n)){if(yr(e,s)){let d=sn(e,n,y=>yr(e,y));if(d)return d!==s||c(s)<c(d);let p=sn(e,s,y=>y.type==="VariableDeclarator");return p?Wt(e,{...t,node:p},n,a):true}return s.type==="VariableDeclarator"?!Dl(e,s,n,r):true}return e.parentOf(n)?.type==="ExportSpecifier"?true:a.deferred?Ol(e,n,r):false}function Dl(e,t,n,a){let s=e.parentOf(t),r=s&&e.parentOf(s);if(r?.type!=="ForInStatement"&&sn(e,n,i=>i===a||he(i)?"quit":i===t))return true;if(r&&(r.type==="ForInStatement"||r.type==="ForOfStatement")){let o=r.right;return !!sn(e,n,i=>i===a||he(i)?"quit":i===o)}return false}function Ol(e,t,n){return !!sn(e,t,a=>a===n?"quit":he(a))}function Ut(e,t){let n=e.parentOf(t);return n?.type==="CallExpression"&&n.callee===t}function La(e,t){return sn(e,e.parentOf(t),n=>he(n)&&!Ut(e,n)||n.type==="TSModuleBlock"||n.type==="Program")}var Ml=(e,t,n)=>!he(t)||t.id===n?false:t.async?true:!Ut(e,t),Ca=e=>e.type==="ObjectPattern"||e.type==="ArrayPattern",Ia=(e,t)=>{let n=e.parentOf(t);return he(n)&&xa(n,t)},Rl=(e,t)=>{for(let n=t;n;n=e.parentOf(n)){if(Ia(e,n))return true;let a=e.parentOf(n);if(!(!!a&&(Ca(a)||a.type==="Property"||a.type==="AssignmentPattern"||a.type==="RestElement")))return false}return false};function Nr(e,t,n){let a,s=false,r=t;for(let o=e.parentOf(t);o;o=e.parentOf(o)){if(e.localsOf(o)?.get(n.name)===n){if(!a||s||!he(o))return;let i=n.valueDeclaration;return i?i.node===a.node?{kind:"self",...hr(a)}:e.orderOf(i.node)>e.orderOf(a.node)?{kind:"after",...hr(a)}:void 0:void 0}s||(s=Ml(e,o,r)),a||(a=Pl(e,o,r)),r=o;}}var hr=e=>({associated:e.node,name:e.name});function Pl(e,t,n){if(t.type==="AssignmentPattern"){let a=t,s=a.left,r=n===a.right,o=n===s&&Ca(s);if(!r&&!o)return;if(Ia(e,t))return {node:t,name:s};let i=e.parentOf(t),l=i?.type==="Property"?i:t;return Rl(e,l)?{node:l,name:s}:void 0}if(Ca(t)&&Ia(e,t))return {node:t,name:t}}var Br={Partial:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},optional:true}},Required:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},excludeOptional:true}},Readonly:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},readonly:true}},Pick:{params:[{t:"var",name:"T"},{t:"var",name:"K",bound:{t:"keyof",of:{t:"var",name:"T"}}}],body:{t:"mapped",key:"P",over:{t:"var",name:"K",bound:{t:"keyof",of:{t:"var",name:"T"}}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}}}},Record:{params:[{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}},{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}},body:{t:"var",name:"T"}}},Exclude:{params:[{t:"var",name:"T"},{t:"var",name:"U"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"var",name:"U"},then:{t:"union",of:[]},else:{t:"var",name:"T"}}},Extract:{params:[{t:"var",name:"T"},{t:"var",name:"U"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"var",name:"U"},then:{t:"var",name:"T"},else:{t:"union",of:[]}}},Omit:{params:[{t:"var",name:"T"},{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}}],body:{t:"apply",name:"Pick",args:[{t:"var",name:"T"},{t:"apply",name:"Exclude",args:[{t:"keyof",of:{t:"var",name:"T"}},{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}}]}]}},NonNullable:{params:[{t:"var",name:"T"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"union",of:[{t:"null"},{t:"undefined"}]},then:{t:"union",of:[]},else:{t:"var",name:"T"}}},Parameters:{params:[{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}}],body:{t:"conditional",check:{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}},extends:{t:"fn",params:[{name:"args",type:{t:"var",name:"P"},variadic:true}],returns:{t:"any"}},then:{t:"var",name:"P"},else:{t:"union",of:[]},infer:[{t:"var",name:"P"}]}},ReturnType:{params:[{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}}],body:{t:"conditional",check:{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}},extends:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"var",name:"R"}},then:{t:"var",name:"R"},else:{t:"any"},infer:[{t:"var",name:"R"}]}},PropertyKey:{params:[],body:{t:"union",of:[{t:"string"},{t:"number"}]}}};var Ka=[o.typeParam("T")],st=Object.freeze({Array:Ka,ReadonlyArray:Ka,Promise:Ka});var Je={byPath:new Map,byNode:new WeakMap,aliasOwner:new WeakMap};function Wa(e){if(e.type!=="ExportNamedDeclaration")return {decl:e,exported:false};let t=e.declaration;return t?{decl:t,exported:true}:{decl:e,exported:false}}function jl(e){let t=e.id;return t?.name?{name:t.name,id:t}:null}var Fl=e=>e.body.type==="TSModuleBlock"?e.body.body:[],Vl=(e,t)=>e&&!t.some(n=>n.type==="ExportNamedDeclaration"&&!n.declaration);function vr(e,t,n=new Set){if(e.type!=="Program")return Je;let a=e.body;if(!a.some(l=>Wa(l).decl.type==="TSModuleDeclaration"))return Je;let s=new Map,r=new WeakMap,o=new WeakMap,i=(l,c,u)=>{let d=c?`${c.path}.${l.id.name}`:l.id.name,p=new Map,y=new Map,m={node:l,path:d,parent:c,ambient:u,instantiated:isInstantiatedNamespace(l),types:p,namespaces:y};r.set(l,m);let h=s.get(d);if(h?h.push(m):s.set(d,[m]),l.body.type==="TSModuleDeclaration"){y.set(l.body.id.name,{exported:true,id:l.body.id}),i(l.body,m,u);return}let g=Fl(l),N=Vl(u,g);for(let w of g){let{decl:k,exported:R}=Wa(w),C=jl(k);if(!C)continue;let B=R||N;k.type==="TSTypeAliasDeclaration"?(o.set(k,m),p.has(C.name)||p.set(C.name,{exported:B,id:C.id})):k.type==="TSModuleDeclaration"&&(y.has(C.name)||y.set(C.name,{exported:B,id:C.id}),i(k,m,u));}};for(let l of a){let{decl:c}=Wa(l);c.type==="TSModuleDeclaration"&&i(c,null,c.declare===true);}for(let[l,c]of s){$l(l,c,t);for(let u of c)for(let[d,p]of u.types)!p.key&&p.id&&n.has(`${l}.${d}`)&&u.types.set(d,{...p,key:`${l}.${d}@${t(p.id)}`});}return {byPath:s,byNode:r,aliasOwner:o}}function $l(e,t,n){let a=new Map;for(let s of t)for(let[r,o]of s.types){let i=a.get(r);i?i.push({decl:s,member:o}):a.set(r,[{decl:s,member:o}]);}for(let[s,r]of a){if(r.length<2)continue;let o=r.find(i=>i.member.exported)??r[0];for(let{decl:i,member:l}of r)l!==o.member&&l.id&&i.types.set(s,{...l,key:`${e}.${s}@${n(l.id)}`});}}function wr(e,t){let n=[];return walk(e,{TSModuleDeclaration(a){if(!t.byNode.has(a))return n.push(a),false}}),n}function Er(e,t=[]){let n=new Map,a=s=>{let r=n.get(s);if(r)return r[0];let o=s.lastIndexOf("."),i=o<0?null:a(s.slice(0,o)),l={node:null,path:s,parent:i,ambient:true,instantiated:false,types:new Map,namespaces:new Map,values:new Map};return n.set(s,[l]),i&&i.namespaces.set(s.slice(o+1),{exported:true,id:null}),l};for(let s of e){let r=s.lastIndexOf(".");if(r<=0||r===s.length-1)continue;a(s.slice(0,r)).types.set(s.slice(r+1),{exported:true,id:null});}for(let s of t){let r=s.lastIndexOf(".");if(r<=0||r===s.length-1)continue;let o=a(s.slice(0,r));o.values.set(s.slice(r+1),{exported:true,id:null});for(let i=o;i&&!i.instantiated;i=i.parent)i.instantiated=true;}return n.size?{byPath:n,byNode:new WeakMap,aliasOwner:new WeakMap}:Je}function Ua(e,t,n,a){for(let s of e.byPath.get(t)??[]){let r=s[a].get(n);if(r?.exported)return r}}var kr=(e,t,n,a)=>t[a].get(n)??Ua(e,t.path,n,a);function mn(e,t,n,a=[]){let s=(u,d)=>({key:u.key??d}),r=e.split(".");if(r.length===1){for(let u=t;u;u=u.parent){let d=kr(n,u,e,"types");if(d)return s(d,`${u.path}.${e}`)}return {key:e}}let o=null,i="";for(let u=t;u&&!o;u=u.parent)kr(n,u,r[0],"namespaces")&&(o=n,i=`${u.path}.${r[0]}`);for(let u of [n,...a])!o&&u.byPath.has(r[0])&&(o=u,i=r[0]);if(!o)return {error:"namespace",segment:0};for(let u=1;u<r.length-1;u++){if(!Ua(o,i,r[u],"namespaces"))return {error:"member",segment:u,namespace:i};i=`${i}.${r[u]}`;}let l=r.length-1,c=Ua(o,i,r[l],"types");return c?s(c,`${i}.${r[l]}`):{error:"member",segment:l,namespace:i}}function Ar(e,t,n,a=[]){return rt(e,s=>mn(s,t,n,a))}function rt(e,t,n$1,a){let s=[],r=o$1=>{if(Array.isArray(o$1)){let d=false,p=o$1.map((y,m)=>{s.push(m);let h=r(y);return s.pop(),h!==y&&(d=true),h});return d?p:o$1}if(!o$1||typeof o$1!="object")return o$1;let i=o$1;if(a&&i.t==="typeQuery"&&Array.isArray(i.path)){let d=i.path,p=a(d,s);return p?p.length===d.length&&p.every((y,m)=>y===d[m])?i:{...i,path:p}:o.any}let l=i.t==="apply"&&typeof i.name=="string"?t(i.name,s,Array.isArray(i.args)?i.args:[]):void 0;if(l&&!("key"in l))return o.any;let c=false,u={};for(let d of Object.keys(i)){s.push(d);let p=r(i[d]);s.pop(),p!==i[d]&&(c=true),n(u,d,p);}return l&&l.key!==i.name&&(c=true,n(u,"name",l.key)),l&&n$1&&Array.isArray(i.args)&&n$1(i.args,l.key,c?u.args:i.args),c?u:i};return r(e)}var Or=(e={})=>rootScope(e),je=(e,t)=>childScope(e,t),te=(e,t)=>lookup(e,t),qa=e=>{let t=new Map;for(let[n,a]of visibleNames(e)){if(Mr(n))continue;let s=br(n);t.has(s)||t.set(s,a);}return t},Mr=e=>e.includes(".")||e.endsWith("#");function zl(e,t){let n=t+"@";for(let a=e;a;a=a.parent){if(l(a.vars,t))return true;for(let s of Object.keys(a.vars))if(s.startsWith(n)&&!Mr(s))return false}return false}var Tr=new Set(["types","schemes","accessors","asserters","matchers","modules","nominals","noLib"]),ql=(e={},t)=>{let n=t??{},a=Object.keys(n).filter(p=>!Tr.has(p));if(a.length>0)throw new TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${a.map(p=>`'${p}'`).join(", ")} \u2014 expected ${[...Tr].join(", ")}. Named types go under 'types'.`,{unknown:a});let s=n.types??{},r=Yl(n.schemes??{}),o=Er([...Object.keys(s),...Object.keys(r)],Object.keys(e).filter(Rr)),i=n.noLib?{}:Br,l$1=n.nominals??{},c=[],u=Cr(Pr(s,r,i,n.noLib?l$1:{...st,...l$1}),o,p=>l(e,p)||!!o.byPath.get(p)?.some(y=>y.instantiated),c),d=Fn(e,(p,y)=>u.resolve(y,za(p,o),["vars",p]));return {scope:Or(Xl(d,c)),types:Fn(s,(p,y)=>u.resolve(y,za(p,o),["types",p])),schemes:Fn(r,(p,y)=>Jl(y,u,za(p,o),["schemes",p])),namespaces:o,accessors:Fn(n.accessors??{},(p,y)=>u.resolve(y,null,["accessors",p])),asserters:n.asserters??new Set,matchers:n.matchers??new Set,modules:Fn(n.modules??{},(p,y)=>u.resolve(y,null,["modules",p])),lib:i,nominals:{...n.noLib?{}:st,...Fn(l$1,(p,y)=>Ir(y,u,null,["nominals",p]))},diagnostics:c}},Rr=e=>e.includes(".");function Pr(e,t,n,a){let s=new Map;for(let r of Object.keys(a))s.set(r,m(a,r));for(let r of Object.keys(n))s.set(r,m(n,r).params);for(let r of Object.keys(e))s.set(r,[]);for(let r of Object.keys(t))s.set(r,m(t,r).params);return s}var Dr=new WeakMap;function _l(e){let t=Dr.get(e);if(t)return t;let n=Pr(e.types,e.schemes,e.lib??{},e.nominals??{});return Dr.set(e,n),n}function Gl(e,t,n){let a=e.namespaces??Je,s=null;for(let i=t??"";i&&!s;){s=a.byPath.get(i)?.[0]??null;let l=i.lastIndexOf(".");i=l<0?"":i.slice(0,l);}let r=[];return {type:Cr(_l(e),a,i=>l(e.scope.vars,i),r).resolve(n,s,[]),diagnostics:r}}function Fn(e,t){let n$1=false,a={};for(let s of Object.keys(e)){let r=m(e,s),o=t(s,r);o!==r&&(n$1=true),n(a,s,o);}return n$1?a:e}function Cr(e,t,n,a){let s=(r,o)=>!!r.values?.has(o)||!!t.byPath.get(`${r.path}.${o}`)?.some(i=>i.instantiated);return {resolve:(r,o,i)=>rt(r,(l,c,u)=>{let d=mn(l,o,t);if("error"in d){let h=l.split(".");return a.push(d.error==="namespace"?pn.namespaceNotFound([...i,...c],h[0]):pn.noExportedMember([...i,...c],d.namespace,h[d.segment])),d}let p=e.get(d.key);if(!p)return a.push(pn.unknownName([...i,...c],l)),{error:"error-type"};let{min:y,max:m}=F(p);return u.length<y||u.length>m?(a.push(pn.genericTypeArity([...i,...c],l,y,m)),{error:"error-type"}):d},void 0,(l,c)=>{let[u]=l;for(let d=o;d;d=d.parent)if(s(d,u))return [...d.path.split("."),...l];return n(u)?l:(a.push(pn.unknownName([...i,...c],u)),null)})}}function Ir(e,t,n,a){let s=false,r=e.map((o,i)=>{let l=t.resolve(o,n,[...a,i]);return l!==o&&(s=true),l});return s?r:e}function Jl(e,t,n,a){let s=Ir(e.params,t,n,[...a,"params"]),r=t.resolve(e.body,n,[...a,"body"]);return s===e.params&&r===e.body?e:{...e,params:s,body:r}}function Xl(e,t){if(!Object.keys(e).some(Rr))return e;let n$1={children:new Map};for(let o of Object.keys(e)){let i=n$1;for(let l of o.split(".")){let c=i.children.get(l);c||i.children.set(l,c={children:new Map}),i=c;}i.leaf={key:o,type:m(e,o)};}let a=o=>[...o.leaf?[o.leaf.key]:[],...[...o.children.values()].flatMap(a)],s=(o$1,i)=>{if(o$1.leaf){if(o$1.children.size)for(let c of a(o$1))t.push(pn.redeclaration(["vars",c],i));return o$1.leaf.type}let l={};for(let[c,u]of o$1.children)n(l,c,{type:s(u,c)});return o.object(l)},r={};for(let[o,i]of n$1.children)n(r,o,s(i,o));return r}function Yl(e){let t=false,n=Object.entries(e).map(([a,s])=>{let r=o.scheme(s.params,s.body),o$1=r.params===s.params&&r.body===s.body;return o$1||(t=true),[a,o$1?s:r]});return t?Object.fromEntries(n):e}var za=(e,t)=>{let n=e.lastIndexOf(".");return n<0?null:t.byPath.get(e.slice(0,n))?.[0]??null},Hl=(e,t)=>m(e.types,t),Ql=(e,t)=>m(e.schemes,t);function ot(e,t,n){let a=N(e);return ea$1(t,O(a),n)||ea$1(a,t,n)}function jr(e,t,n){return da$1(e,t,n)}function Ga(e,t,n={}){return t.flatMap(a=>a(e,n))}function yn(e,t){let n=(a,s)=>{if(t(a,s)!==false)for(let r of childrenOf(a))n(r,a);};n(e,null);}var tc=e=>e.type==="TSModuleDeclaration"&&(e.declare===true||!isInstantiatedNamespace(e)),ac=e=>(e.type==="VariableDeclaration"||e.type==="TSTypeAliasDeclaration")&&e.declare===true,sc=e=>Array.isArray(e)?e:[e],Fr=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function Ja(e,t="error"){return n=>{let a=[];return yn(n,(s,r)=>{if(ac(s))return false;let o=nodeViolation(s,e,r);if(o&&a.push(ne("node-not-allowed",s,`'${o}' is not allowed by the capability profile.`,t)),tc(s))return false}),a}}function Vr(e,t="error"){let n=e.typeTier;return a=>{if(n==="author")return [];let s=[];return yn(a,r=>{let o=r,i=o.type==="TSTypeAliasDeclaration"?o.id?.name:void 0;for(let l of [o.typeAnnotation,o.returnType]){if(!l)continue;let c=typeFeatureViolations(ja$1(l,i),n);c.length&&s.push(ne("type-feature-not-allowed",r,`authoring type feature${c.length>1?"s":""} '${c.join("', '")}' requires capability tier 'author'.`,t));}}),s}}function G(e,t=new WeakSet){if(!e||typeof e!="object"||t.has(e))return false;switch(t.add(e),e.t){case "any":return true;case "object":return Object.values(e.props).some(n=>G(n.type,t))||!!e.index&&G(e.index.value,t);case "array":return G(e.items,t);case "tuple":return e.elements.some(n=>G(n,t));case "union":case "intersection":return e.of.some(n=>G(n,t));case "fn":return e.params.some(n=>G(n.type,t))||G(e.returns,t);case "overload":return e.signatures.some(n=>n.params.some(a=>G(a.type,t))||G(n.returns,t));case "keyof":return G(e.of,t);case "index":return G(e.obj,t)||G(e.key,t);case "mapped":return G(e.over,t)||G(e.body,t);case "conditional":return G(e.check,t)||G(e.extends,t)||G(e.then,t)||G(e.else,t);case "returnType":case "parameters":return G(e.fn,t);case "apply":return e.args.some(n=>G(n,t));default:return false}}function $r(e,t="error"){return n=>{if(!e.typeStrict)return [];let a=[];return yn(n,s=>{let r=s;for(let o of [r.typeAnnotation,r.returnType])if(o&&G(o)){a.push(ne("any-not-allowed",s,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",t));break}}),a}}function xr(e,t="error"){return (n,a)=>{let s=a.overlay;if(!e.typeStrict||!s)return [];let r=a.schemes??{},o=[];return yn(n,i=>{if(i.type!=="TSAsExpression")return;let{expression:l}=i,c=s.get(l)?.type,u=s.get(i)?.type;!c||!u||G(u)||!ot(c,u,r)||jr(c,u,r)||o.push(ne("narrowing-cast-not-allowed",i,`A cast may only widen under 'strict': '${pa$1(c)}' is not assignable to '${pa$1(u)}'. Narrow with a type guard, or prove the value with an asserter.`,t));}),o}}function Xa(e,t="error"){let n=new Set(e);return a=>{let s=[];return yn(a,r=>{if(r.type!=="CallExpression")return;let o=r.callee;if(o.type!=="Identifier")s.push(ne("name-not-allowed",o,"Only direct calls to allowed functions are permitted.",t));else {let i=o.name;n.has(i)||s.push(ne("name-not-allowed",o,`Function '${i}' is not allowed here.`,t));}}),s}}function zt(e,t,n={}){let a=new Set(sc(e)),s=n.severity??"error",r=[...a].join("/");return o=>{let i=[],l=(c,u)=>{let d=a.has(c.type),p=d?u+1:u;d&&p>t&&i.push(ne("too-deep",c,`Nesting of ${r} exceeds ${t}${n.hint?` \u2014 ${n.hint}`:""}.`,s));for(let y of childrenOf(c))l(y,p);};return l(o,0),i}}var Ya=(e=3,t="error")=>zt(Fr,e,{hint:"use a pipe instead of nesting functions",severity:t}),Ha=(e,t="error")=>zt("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:t}),Qa=(e,t="error")=>zt("MemberExpression",e,{severity:t});function Za(e,t="error"){return n=>{let a=[],s=(r,o)=>{if(o>e){a.push(ne("too-deep",r,`Expression nesting exceeds ${e}.`,t));return}for(let i of childrenOf(r))s(i,o+1);};return s(n,0),a}}function es(e,t="error"){return n=>{let a=0;return yn(n,()=>{a++;}),a>e?[ne("too-large",n,`Expression has ${a} nodes (max ${e}).`,t)]:[]}}function ns(e,t="error"){return n=>{let a=[];return yn(n,s=>{if(s.type==="CallExpression"){let r=s.arguments;r&&r.length>e&&a.push(ne("too-large",s,`Call has ${r.length} arguments (max ${e}).`,t));}}),a}}function ts(e,t={},n="error"){return (a,s)=>{let r=s.overlay?.get(a)?.type;return r?da$1(r,e,t)?[]:[ne("wrong-result-type",a,`Result type '${pa$1(r)}' is not assignable to the required '${pa$1(e)}'.`,n)]:[]}}function qt(e){let t=[Ja(e),Vr(e),$r(e),xr(e)];return e.hostAllow!=="*"&&t.push(Xa([...e.hostAllow])),t}function oc(e){return qt(compileProfile(e))}var as=[{op:"+",category:"additive",result:"additive"},{op:"-",category:"arithmetic",result:"number"},{op:"*",category:"arithmetic",result:"number"},{op:"/",category:"arithmetic",result:"number"},{op:"%",category:"arithmetic",result:"number"},{op:"**",category:"arithmetic",result:"number"},{op:"&",category:"bitwise",result:"number"},{op:"|",category:"bitwise",result:"number"},{op:"^",category:"bitwise",result:"number"},{op:"<<",category:"bitwise",result:"number"},{op:">>",category:"bitwise",result:"number"},{op:">>>",category:"bitwise",result:"number"},{op:"<",category:"relational",result:"boolean"},{op:">",category:"relational",result:"boolean"},{op:"<=",category:"relational",result:"boolean"},{op:">=",category:"relational",result:"boolean"},{op:"===",category:"equality",result:"boolean"},{op:"!==",category:"equality",result:"boolean"},{op:"==",category:"equality",result:"boolean"},{op:"!=",category:"equality",result:"boolean"}],it=new Map(as.map(e=>[e.op,e])),Lr={number:o.number,boolean:o.boolean,string:o.string},ss=e=>Lr[e],Kr=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],ic={number:o.number,boolean:o.boolean,string:o.string,undefined:o.undefined},lc=[{op:"&&"},{op:"||"},{op:"??"}];function cc(e,t={}){return as.filter(n=>n.result==="additive"?da$1(o.string,e,t)||da$1(o.number,e,t):da$1(Lr[n.result],e,t))}function uc(e,t={}){return Kr.filter(n=>da$1(ic[n.result],e,t))}var hn=e=>({bindings:new Map,parent:e}),Ur=e=>e.charCodeAt(0)===95;function _t(e,t,n,a,s,r){let o=e.bindings.get(n);o&&(o.exempt=true);let i={name:n,node:a,kind:s,exempt:r,used:false};e.bindings.set(n,i),t.all.push(i);}function ct(e,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)ct(a,t);return}let n=e;if(n.t==="typeQuery"&&Array.isArray(n.path)){let a=n.path[0];typeof a=="string"&&Gt(t,a);return}for(let a of Object.keys(n))ct(n[a],t);}function zr(e,t){let n=e;ct(n.typeAnnotation,t),ct(n.returnType,t);}function Gt(e,t){for(let n=e;n;n=n.parent){let a=n.bindings.get(t);if(a){a.used=true;return}}}function Xe(e,t,n,a,s,r){if(e)switch(e.type){case "Identifier":{let o=e.name;zr(e,t),_t(t,n,o,e,a,s||r&&Ur(o));return}case "ObjectPattern":{let o=e.properties,i=o[o.length-1],l=!!i&&i.type==="RestElement";o.forEach((c,u)=>{let d=l&&u<o.length-1;if(c.type==="RestElement")Xe(c.argument,t,n,a,s,false);else {let p=c;p.computed&&U(p.key,t,n),Xe(p.value,t,n,a,s||d,!p.shorthand);}});return}case "ArrayPattern":{for(let o of e.elements){if(!o)continue;let i=o;Xe(i.type==="RestElement"?i.argument:i,t,n,a,s,true);}return}case "AssignmentPattern":Xe(e.left,t,n,a,s,r);return;case "RestElement":Xe(e.argument,t,n,a,s,true);return;default:return}}function lt(e,t,n){if(e)switch(e.type){case "AssignmentPattern":U(e.right,t,n),lt(e.left,t,n);return;case "ObjectPattern":for(let a of e.properties)lt(a.type==="RestElement"?a.argument:a.value,t,n);return;case "ArrayPattern":for(let a of e.elements)a&<(a,t,n);return;case "RestElement":lt(e.argument,t,n);return;default:return}}function Wr(e,t,n,a){for(let s of e.declarations)Xe(s.id,t,n,"local",a,false),U(s.init,t,n);}function rs(e,t,n){let a=e,s=hn(t),r=a.params??[];for(let o of r)Xe(o,s,n,"parameter",false,true);for(let o of r)lt(o,s,n);U(a.body,s,n);}function U(e,t,n){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(zr(e,t),e.type){case "Identifier":Gt(t,e.name);return;case "MemberExpression":{let a=e;U(a.object,t,n),a.computed&&U(a.property,t,n);return}case "Property":{let a=e;a.computed&&U(a.key,t,n),U(a.value,t,n);return}case "Program":case "BlockStatement":{let a=hn(t);for(let s of e.body??[])U(s,a,n);return}case "ArrowFunctionExpression":case "FunctionExpression":rs(e,t,n);return;case "FunctionDeclaration":{let a=e.id;a&&_t(t,n,a.name,a,"local",false),rs(e,t,n);return}case "CatchClause":{let a=e,s=hn(t);Xe(a.param,s,n,"local",true,false),U(a.body,s,n);return}case "SwitchStatement":{let a=e;U(a.discriminant,t,n);let s=hn(t);for(let r of a.cases){U(r.test,s,n);for(let o of r.consequent??[])U(o,s,n);}return}case "ForStatement":{let a=e,s=hn(t);U(a.init,s,n),U(a.test,s,n),U(a.update,s,n),U(a.body,s,n);return}case "ForOfStatement":case "ForInStatement":{let a=e;U(a.right,t,n);let s=hn(t),r=a.left;if(r.type==="VariableDeclaration")for(let o of r.declarations)Xe(o.id,s,n,"local",false,true);else U(r,s,n);U(a.body,s,n);return}case "VariableDeclaration":Wr(e,t,n,false);return;case "ImportDeclaration":{for(let a of e.specifiers){let s=a.local;s&&_t(t,n,s.name,s,"import",Ur(s.name));}return}case "ExportNamedDeclaration":{let a=e;if(a.declaration){let s=a.declaration;if(s.type==="VariableDeclaration")Wr(s,t,n,true);else if(s.type==="FunctionDeclaration"){let r=s.id;r&&_t(t,n,r.name,r,"local",true),rs(s,t,n);}else U(s,t,n);}else for(let s of a.specifiers)Gt(t,s.local.name);return}case "TSAsExpression":U(e.expression,t,n);return;case "TSTypeAliasDeclaration":ct(e.typeAnnotation,t);return;case "JsonExpression":os(e.body,t,n);return;case "JSXOpeningElement":{let a=e;qr(a.name,t);for(let s of a.attributes??[])U(s,t,n);return}case "JSXClosingElement":return;case "JSXAttribute":U(e.value,t,n);return;default:{let a=m(VisitorKeys,e.type);if(!a)return;let s=e;for(let r of a){let o=m(s,r);if(Array.isArray(o))for(let i of o)U(i,t,n);else U(o,t,n);}return}}}function qr(e,t,n){e&&(e.type==="JSXIdentifier"?Gt(t,e.name):e.type==="JSXMemberExpression"&&qr(e.object,t));}function os(e,t,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let s of e)os(s,t,n);return}let a=e;if(isExprMarker(a)){try{U(fromJson(a),t,n);}catch{}return}for(let s of Object.keys(a))os(a[s],t,n);}function is(e,t){if(!t.locals&&!t.parameters)return [];let n={all:[]};U(e,hn(void 0),n);let a=[];for(let s of n.all)s.used||s.exempt||(s.kind==="parameter"?t.parameters:t.locals)&&a.push(S.unusedName(s.node,s.name));return a}var yc=new Set(["const","import"]),ut=e=>({binds:new Map,parent:e});function hc(e,t){for(let n=e;n;n=n.parent){let a=n.binds.get(t);if(a)return a}}function gn(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(t=>t.type==="RestElement"?gn(t.argument):gn(t.value));case "ArrayPattern":return e.elements.flatMap(t=>t?gn(t):[]);case "AssignmentPattern":return gn(e.left);case "RestElement":return gn(e.argument);default:return []}}function dt(e){switch(e.type){case "ArrayExpression":return e.elements.flatMap(t=>t?dt(t):[]);case "ObjectExpression":return e.properties.flatMap(t=>dt(t.type==="SpreadElement"?t.argument:t.value));case "SpreadElement":return dt(e.argument);case "AssignmentExpression":return dt(e.left);default:return [e]}}var Jt=(e,t,n)=>{for(let a of gn(t))e.binds.set(a.name,n);};function pt(e,t,n){if(!e)return;if(e.type!=="Identifier"){if(e.type==="ArrayExpression"||e.type==="ObjectExpression")for(let r of dt(e))pt(r,t,n);else for(let r of gn(e))pt(r,t,n);return}let a=e.name,s=hc(t,a);s&&yc.has(s)&&(n.invalid.add(e),n.out.push(S.assignToConst(e,a,s==="import"?"import":"const")));}function re(e,t,n){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let a=e;pt(a.left,t,n),re(a.right,t,n);return}case "UpdateExpression":{pt(e.argument,t,n);return}case "Program":case "BlockStatement":{let a=ut(t);for(let s of e.body??[])re(s,a,n);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let a=e,s=ut(t);for(let r of a.params??[])Jt(s,r,"param");re(a.body,s,n);return}case "CatchClause":{let a=e,s=ut(t);Jt(s,a.param,"param"),re(a.body,s,n);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let a=e,s=ut(t),r=a.left??a.init;if(r?.type==="VariableDeclaration")for(let o of r.declarations)Jt(s,o.id,r.kind);else r&&a.left?(pt(r,s,n),re(r,s,n)):r&&re(r,s,n);re(a.right,t,n),re(a.test,s,n),re(a.update,s,n),re(a.body,s,n);return}case "VariableDeclaration":{let a=e;for(let s of a.declarations)re(s.init,t,n),Jt(t,s.id,a.kind);return}case "ImportDeclaration":{for(let a of e.specifiers){let s=a.local;s&&t.binds.set(s.name,"import");}return}case "ExportNamedDeclaration":{let a=e;a.declaration&&re(a.declaration,t,n);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":re(e.expression,t,n);return;default:{let a=m(VisitorKeys,e.type);if(!a)return;let s=e;for(let r of a){let o=m(s,r);if(Array.isArray(o))for(let i of o)re(i,t,n);else re(o,t,n);}return}}}function ls(e){let t={out:[],invalid:new WeakSet};return re(e,ut(void 0),t),{diagnostics:t.out,invalidTargets:t.invalid}}var ft=e=>({decls:new Map,parent:e});function Sc(e,t){for(let n=e;n;n=n.parent){let a=n.decls.get(t);if(a)return a}}function Vn(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(t=>t.type==="RestElement"?Vn(t.argument):Vn(t.value));case "ArrayPattern":return e.elements.flatMap(t=>t?Vn(t):[]);case "AssignmentPattern":return Vn(e.left);case "RestElement":return Vn(e.argument);default:return []}}var Xt=(e,t)=>{for(let n of Vn(t))e.decls.set(n.name,n);};function ae(e,t,n){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let a=Sc(t,e.name);a&&a!==e&&n.set(e,a);return}case "MemberExpression":{let a=e;ae(a.object,t,n),a.computed&&ae(a.property,t,n);return}case "Property":{let a=e;a.computed&&ae(a.key,t,n),ae(a.value,t,n);return}case "Program":case "BlockStatement":{let a=ft(t);for(let s of e.body??[])ae(s,a,n);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let a=e,s=e.id;s&&t.decls.set(s.name,s);let r=ft(t);for(let o of a.params??[])Xt(r,o);ae(a.body,r,n);return}case "CatchClause":{let a=e,s=ft(t);Xt(s,a.param),ae(a.body,s,n);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let a=e,s=ft(t),r=a.left??a.init;if(r?.type==="VariableDeclaration")for(let o of r.declarations)Xt(s,o.id);else r&&ae(r,s,n);ae(a.right,t,n),ae(a.test,s,n),ae(a.update,s,n),ae(a.body,s,n);return}case "VariableDeclaration":{for(let a of e.declarations)Xt(t,a.id),ae(a.init,t,n);return}case "ImportDeclaration":{for(let a of e.specifiers){let s=a.local;s&&t.decls.set(s.name,s);}return}case "TSTypeAliasDeclaration":{let a=e.id;a&&t.decls.set(a.name,a);return}case "TSAsExpression":ae(e.expression,t,n);return;default:{let a=m(VisitorKeys,e.type);if(!a)return;let s=e;for(let r of a){let o=m(s,r);if(Array.isArray(o))for(let i of o)ae(i,t,n);else ae(o,t,n);}return}}}function bc(e){let t=new WeakMap;return ae(e,ft(void 0),t),t}function us(e,t){return e.kind==="local"?t.kind==="local"&&e.declaration===t.declaration:t.kind==="environment"&&e.path.length===t.path.length&&e.path.every((n,a)=>n===t.path[a])}var mt=e=>({decls:new Map,parent:e});function Gr(e,t){for(let n=e;n;n=n.parent){let a=n.decls.get(t);if(a)return a}}var kc=e=>e?.type==="Literal"&&typeof e.value=="string";function Ht(e,t){if(!t&&e.type==="Identifier")return e.name;if(kc(e))return e.value}function xn(e,t,n){if(e)switch(e.type){case "Identifier":{let a=e.name,s=Gr(t,a);return s?n.aliases.get(s):[a]}case "MemberExpression":{let a=e,s=xn(a.object,t,n),r=Ht(a.property,a.computed);return s&&r!==void 0?[...s,r]:void 0}case "ChainExpression":return xn(e.expression,t,n);default:return}}var Jr=(e,t)=>{let n=Gr(t,e);return n?{kind:"local",declaration:n}:{kind:"environment",path:[e]}};function Yt(e,t,n,a,s){a.out.push({site:"node",node:e,symbol:Jr(t,n),...s?{shorthand:s}:{}});}function yt(e,t,n,a){t.decls.set(e.name,e),n.out.push({site:"node",node:e,symbol:{kind:"local",declaration:e},isDeclaration:true,...a?{shorthand:a}:{}});}function Ye(e,t,n,a,s,r){if(e)switch(e.type){case "Identifier":yt(e,t,n),Ln(e,t,n),s&&a&&n.aliases.set(e,a);return;case "ObjectPattern":for(let o of e.properties){if(o.type==="RestElement"){Ye(o.argument,t,n,void 0,false,r);continue}let i=o,l=i.key;i.computed&&W(l,r,n);let c=Ht(l,i.computed),u=a&&c!==void 0?[...a,c]:void 0,d=i.value,p=d.type==="AssignmentPattern"?d.left:d,y=!!i.shorthand&&p.type==="Identifier";u&&n.out.push({site:"node",node:l,symbol:{kind:"environment",path:u},...y?{shorthand:"binding"}:{}}),y?(yt(p,t,n,"property"),Ln(p,t,n),s&&u&&n.aliases.set(p,u),d.type==="AssignmentPattern"&&W(d.right,r,n)):Ye(d,t,n,u,s,r);}return;case "ArrayPattern":for(let o of e.elements)Ye(o,t,n,void 0,false,r);return;case "AssignmentPattern":{let o=e;Ye(o.left,t,n,a,s,r),W(o.right,r,n);return}case "RestElement":Ye(e.argument,t,n,void 0,false,r);return;default:W(e,t,n);}}function Ln(e,t,n){let a=e;for(let r of ERASABLE_TYPE_NODE_KEYS)cs(m(a,r),t,n);let s=a.typeParameters;if(Array.isArray(s))for(let r of s)Ln(r,t,n);}function cs(e,t,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let s of e)cs(s,t,n);return}let a=e;if(a.type==="TSTypeQuery"){let s=a.exprName,r=Jr(s[0],t);n.out.push({site:"typeQuery",node:e,segment:0,symbol:r});let o=r.kind==="environment"?r.path:n.aliases.get(r.declaration);o&&s.slice(1).forEach((i,l)=>n.out.push({site:"typeQuery",node:e,segment:l+1,symbol:{kind:"environment",path:[...o,...s.slice(1,l+2)]}}));return}for(let[s,r]of Object.entries(a))s!=="loc"&&s!=="range"&&cs(r,t,n);}function Xr(e,t,n){if(e){if(e.type==="JSXIdentifier"){let a=e.name;/^[A-Z_$]/.test(a)&&Yt(e,a,t,n);return}if(e.type==="JSXMemberExpression"){let a=e;Xr(a.object,t,n);let s=a.object,r=s.type==="JSXIdentifier"?xn({type:"Identifier",name:s.name},t,n):void 0;r&&n.out.push({site:"node",node:a.property,symbol:{kind:"environment",path:[...r,a.property.name]}});}}}function W(e,t,n){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":Yt(e,e.name,t,n);return;case "MemberExpression":{let a=e;W(a.object,t,n);let s=xn(a.object,t,n),r=Ht(a.property,a.computed);s&&r!==void 0?n.out.push({site:"node",node:a.property,symbol:{kind:"environment",path:[...s,r]}}):a.computed&&W(a.property,t,n);return}case "Property":{let a=e;if(a.computed&&W(a.key,t,n),a.shorthand&&a.value.type==="Identifier"){let s=a.value;Yt(a.value,s.name,t,n,"property");return}W(a.value,t,n);return}case "Program":case "BlockStatement":{let a=mt(t);for(let s of e.body??[])W(s,a,n);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let a=e,s=e.id;s&&yt(s,t,n);let r=mt(t);for(let o of a.params??[])Ye(o,r,n,void 0,false,r);Ln(e,r,n),W(a.body,r,n);return}case "CatchClause":{let a=e,s=mt(t);Ye(a.param,s,n,void 0,false,s),W(a.body,s,n);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let a=e,s=mt(t),r=a.left??a.init;if(r?.type==="VariableDeclaration")for(let o of r.declarations)Ye(o.id,s,n,void 0,false,s),W(o.init,s,n);else r&&W(r,s,n);W(a.right,t,n),W(a.test,s,n),W(a.update,s,n),W(a.body,s,n);return}case "VariableDeclaration":{let a=e;for(let s of a.declarations){let r=xn(s.init,t,n);Ye(s.id,t,n,r,a.kind==="const",t),W(s.init,t,n);}return}case "AssignmentExpression":{let a=e,s=a.left;a.operator==="="&&["ObjectPattern","ArrayPattern","ObjectExpression","ArrayExpression"].includes(s.type)?$n(s,xn(a.right,t,n),t,n):W(s,t,n),W(a.right,t,n);return}case "ImportDeclaration":{for(let a of e.specifiers){let s=a,r=s.type==="ImportSpecifier"&&(s.imported===s.local||s.imported?.name===s.local.name);yt(s.local,t,n,r?"import":void 0);}return}case "TSTypeAliasDeclaration":{let a=e.id;yt(a,t,n),n.typeAliases.has(a.name)||n.typeAliases.set(a.name,a),Ln(e,t,n);return}case "TSAsExpression":W(e.expression,t,n),Ln(e,t,n);return;case "JSXOpeningElement":case "JSXClosingElement":{let a=e;if(Xr(a.name,t,n),e.type==="JSXOpeningElement")for(let s of a.attributes)s.type==="JSXSpreadAttribute"?W(s.argument,t,n):W(s.value,t,n);return}default:{let a=m(VisitorKeys,e.type);if(!a)return;let s=e;for(let r of a){let o=m(s,r);if(Array.isArray(o))for(let i of o)W(i,t,n);else W(o,t,n);}return}}}function _r(e){if(e.type==="AssignmentPattern"){let t=e;return {target:t.left,value:t.right}}if(e.type==="AssignmentExpression"&&e.operator==="="){let t=e;return {target:t.left,value:t.right}}}function $n(e,t,n,a){switch(e.type){case "ObjectPattern":case "ObjectExpression":for(let s of e.properties){if(s.type==="RestElement"||s.type==="SpreadElement"){$n(s.argument,void 0,n,a);continue}let r=s,o=r.key;r.computed&&W(o,n,a);let i=Ht(o,r.computed),l=t&&i!==void 0?[...t,i]:void 0,c=r.value,u=_r(c),d=u?.target??c,p=!!r.shorthand&&d.type==="Identifier";l&&a.out.push({site:"node",node:o,symbol:{kind:"environment",path:l},...p?{shorthand:"binding"}:{}}),p?Yt(d,d.name,n,a,"property"):$n(d,l,n,a),u&&W(u.value,n,a);}return;case "ArrayPattern":case "ArrayExpression":for(let s of e.elements)s&&$n(s.type==="SpreadElement"?s.argument:s,void 0,n,a);return;case "AssignmentPattern":case "AssignmentExpression":{let s=_r(e);if(!s)return W(e,n,a);$n(s.target,t,n,a),W(s.value,n,a);return}case "RestElement":$n(e.argument,void 0,n,a);return;default:W(e,n,a);}}function vc(e,t){let n=e.typeRefs;if(n?.length)for(let a of n){let s=a.name?t.typeAliases.get(a.name):void 0;s&&t.out.push({site:"typeRef",ref:a,symbol:{kind:"local",declaration:s}});}}function ds(e){let t={out:[],aliases:new WeakMap,typeAliases:new Map};return W(e,mt(void 0),t),vc(e,t),t.out}function Ee(e,t,n,a){switch(e.t){case "apply":if(t.has(e.name)&&a.add(e.name),n.has(e.name))for(let s of e.args)Ee(s,t,n,a);return;case "union":case "intersection":for(let s of e.of)Ee(s,t,n,a);return;case "conditional":Ee(e.check,t,n,a),Ee(e.extends,t,n,a),Ee(e.then,t,n,a),Ee(e.else,t,n,a);return;case "keyof":Ee(e.of,t,n,a);return;case "index":Ee(e.obj,t,n,a),Ee(e.key,t,n,a);return;case "returnType":case "parameters":Ee(e.fn,t,n,a);return;default:return}}function Hr(e,t){let n=new Set(Object.keys(e)),a=new Set(Object.keys(t)),s=new Map;for(let[o,i]of Object.entries(e)){let l=new Set;Ee(i.body,n,a,l),s.set(o,l);}let r=new Set;for(let o of n){let i=new Set,l=[...s.get(o)];for(;l.length;){let c=l.pop();if(c===o){r.add(o);break}i.has(c)||(i.add(c),l.push(...s.get(c)));}}return r}var ps=e=>`a\0${e}`,Yr=(e,t)=>`p\0${e}\0${t}`;function Qr(e,t){let n=new Set(Object.keys(e)),a=new Set(Object.keys(t)),s=new Map,r=new Map;for(let[m,h]of Object.entries(e))r.set(m,wc(h.body));let o=m=>r.get(m),i=(m$1,h)=>{switch(m$1.t){case "literal":return h.has(String(m$1.value))?[String(m$1.value)]:[];case "union":return m$1.of.flatMap(g=>i(g,h));case "keyof":{let g=m$1.of.t==="apply"?m(e,m$1.of.name):void 0,N=g?fs(g.body):void 0;return N?[...N].filter(w=>h.has(w)):[]}default:return []}},l=(m,h,g)=>{switch(m.t){case "apply":if(n.has(m.name)&&g.add(ps(m.name)),a.has(m.name)||h==="annotation")for(let N of m.args)l(N,h,g);return;case "index":{if(m.obj.t==="apply"){let N=o(m.obj.name);if(N)for(let w of i(m.key,N))g.add(Yr(m.obj.name,w));}l(m.obj,h,g),l(m.key,h,g);return}case "union":case "intersection":for(let N of m.of)l(N,h,g);return;case "conditional":l(m.check,h,g),l(m.extends,h,g),l(m.then,h,g),l(m.else,h,g);return;case "keyof":l(m.of,h,g);return;case "returnType":case "parameters":l(m.fn,h,g);return;case "array":h==="annotation"&&l(m.items,h,g);return;case "tuple":if(h==="annotation")for(let N of m.elements)l(N,h,g);return;default:return}};for(let m of Object.keys(e)){let h=new Set;l(e[m].body,"aliasBody",h),s.set(ps(m),h);for(let[g,N]of o(m)??[]){let w=new Set;for(let k of N)l(k,"annotation",w);s.set(Yr(m,g),w);}}let c=new Map,u=m=>{let h=c.get(m);if(h)return h;let g=new Set;c.set(m,g);let N=[...s.get(m)??[]];for(;N.length;){let w=N.pop();g.has(w)||(g.add(w),N.push(...s.get(w)??[]));}return g},d=new Map,p=[];for(let m of s.keys()){if(!m.startsWith("p\0")||!u(m).has(m))continue;p.push(m);let[,h,g]=m.split("\0");d.has(h)||d.set(h,new Set),d.get(h).add(g);}let y=new Set;for(let m of Object.keys(e)){let h=ps(m),g=u(h);p.some(N=>g.has(N)&&u(N).has(h))&&y.add(m);}return {properties:d,aliases:y}}function wc(e){let t=new Map,n=a=>{if(a.t==="union"||a.t==="intersection")a.of.forEach(n);else if(a.t==="object")for(let[s,r]of Object.entries(a.props))t.has(s)||t.set(s,[]),t.get(s).push(r.type);};return n(e),t}function ms(e,t){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(a=>ms(a,t))};if(e.t!=="object")return e;let n$1={...e.props};for(let a of Object.keys(n$1))t.has(a)&&n(n$1,a,{...n$1[a],type:{t:"any"}});return {...e,props:n$1}}function fs(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(t=>[...fs(t)]));case "union":{let[t,...n]=e.of.map(fs);return new Set([...t??[]].filter(a=>n.every(s=>s.has(a))))}default:return new Set}}var Fe=Ge,Zr=Fe.FunctionScopedVariable|Fe.BlockScopedVariable|Fe.Function|Fe.ValueModule,eo=Fe.TypeAlias,no=Fe.ValueModule|Fe.NamespaceModule,ht={Type:1,Value:2,Namespace:4};function ys(e){switch(e.kind){case "type-alias":return ht.Type;case "namespace":return isInstantiatedNamespace(e.node)?ht.Namespace|ht.Value:ht.Namespace;default:return ht.Value}}function to(e,t){let n=[];for(let a of e.symbols){if(a.flags&Fe.Alias){let s=(a.flags&(Zr|Fe.ExportValue)?Zr:0)|(a.flags&eo?eo:0)|(a.flags&no?no:0);for(let r of a.declarations){if(r.kind!=="import")continue;let o=t(r.node);o!==void 0&&o&s&&n.push(S.redeclaration.importConflict(r.node,r.name.name));}}if(a.exportSymbol){let s=0,r=0;for(let i of a.declarations)i.exported?s|=ys(i):r|=ys(i);let o=s&r;if(o)for(let i of a.declarations)ys(i)&o&&n.push(S.redeclaration.mixedExport(i.name,i.name.name));}}for(let a of e.catchClauses){let s=e.localsOf(a),r=e.localsOf(a.body);if(!(!s||!r))for(let o of s.keys()){let i=r.get(o);i&&i.flags&Fe.BlockScopedVariable&&i.valueDeclaration&&n.push(S.redeclaration.catchClause(i.valueDeclaration.name,o));}}return n}var Qt=e=>e.typeAnnotation,Zt=e=>e.returnType;function ea(e){let t=e.typeParameters;if(t?.length)return t.map(n=>o.typeParam(n.name,{bound:n.bound,default:n.default}))}var ge=e=>e.type==="Identifier"?e.name:null,ao=e=>{if(e.type==="VariableDeclaration"){let t=e.declarations[0];return t?ge(t.id):null}return ge(e)},hs=e=>{if(e.type==="VariableDeclaration"){let t=e.declarations[0];return t?t.id:e}return e},Ve=e=>{if(e.computed)return null;let t=e.key;return t.type==="Identifier"?t.name:t.type==="Literal"?String(t.value??""):null};function so(e){let t=a=>a&&a.type==="Literal"&&typeof a.value=="string"?a.value:null;if(e.length===1&&e[0].type==="ArrayExpression"){let a=[];for(let s of e[0].elements){let r=t(s);if(r===null)return null;a.push(r);}return a}let n=[];for(let a of e){let s=t(a);if(s===null)return null;n.push(s);}return n.length?n:null}function gs(e){if(e.type==="Identifier")return e.name;if(e.type==="MemberExpression"){let t=e;if(t.computed||t.property.type!=="Identifier")return null;let n=gs(t.object);return n===null?null:`${n}.${t.property.name}`}return null}var Ae=e=>{if(e.type!=="TemplateLiteral")return null;let t=e;if(t.expressions.length!==0||t.quasis.length!==1)return null;let{cooked:n,raw:a}=t.quasis[0].value;return n??a},He=e=>e.type==="Literal"||Ae(e)!==null;function Sn(e){let t=Ae(e);if(t!==null)return {t:"literal",value:t,fresh:true};let n=e;if(n.regex||n.bigint)return o.unknown;let a=n.value;return a===null?o.null:a===void 0?o.undefined:typeof a=="string"||typeof a=="number"||typeof a=="boolean"?{t:"literal",value:a,fresh:true}:o.unknown}var rn=e=>{let t=Ae(e);if(t!==null)return o.literal(t);let n=e.value;return n===null?o.null:typeof n=="string"||typeof n=="number"||typeof n=="boolean"?o.literal(n):Sn(e)},ro=e=>e.type==="ArrowFunctionExpression";function le(e){switch(e.type){case "ArrowFunctionExpression":{let t=e;return e.typeParameters?.length?false:t.params.some(n=>!Ss(n))?true:Zt(e)===void 0&&t.body.type!=="BlockStatement"&&le(t.body)}case "ObjectExpression":return e.properties.some(t=>t.type==="Property"&&le(t.value));case "ArrayExpression":return e.elements.some(t=>!!t&&le(t));case "ConditionalExpression":{let t=e;return le(t.consequent)||le(t.alternate)}case "LogicalExpression":{let t=e;return (t.operator==="||"||t.operator==="??")&&(le(t.left)||le(t.right))}default:return false}}var Ss=e=>{let t=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return Qt(t)!==void 0},oo=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,bn=e=>oo(e)?e.args[0]:e,bt=e=>oo(e)?e:o.promise(e);function St(e){return e.t==="tuple"?true:e.t==="array"?St(e.items):e.t==="union"?e.of.some(St):false}var Ac=e=>e?.t==="literal"?typeof e.value:void 0,gt=(e,t)=>e.t===t||t==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(n=>gt(n,t));function Kn(e,t){let n=Ac(t);switch(e.t){case "literal":return n===void 0||typeof e.value===n;case "boolean":return n==="boolean";case "keyof":return n===void 0||n==="string";case "union":case "intersection":return e.of.some(a=>Kn(a,t));case "var":{let a=e.bound??o.unknown;return n!==void 0&>(a,n)||n===void 0&&Tc(a)?true:Kn(a,t)}default:return false}}var Tc=e=>gt(e,"string")||gt(e,"number")||gt(e,"boolean"),ce=(e,t)=>{let n=e;for(let a=0;a<50&&n.t==="apply";a++){let s=I(n,t);if(s===n||s.t==="apply"&&s.name===n.name)break;n=s;}return n};function io(e){let t=Zt(e);if(!t)return null;let n=e.params.map((s,r)=>({name:ge(s)??`arg${r}`,type:Qt(s)??o.unknown})),a=ea(e);return {t:"fn",params:n,returns:e.async?bt(t):t,...a?{typeParams:a}:{}}}var Qe={then:{},else:{}};function se(e,t){if(e.type==="Identifier")return t(e);if(e.type!=="MemberExpression")return null;let n=e;if(n.optional)return null;let a=se(n.object,t);return a===null?null:!n.computed&&n.property.type==="Identifier"?`${a}.${n.property.name}`:n.computed&&n.property.type==="Literal"&&typeof n.property.value=="string"?`${a}.${n.property.value}`:null}var ye=e=>e.includes("."),xe=e=>`${e}#`,Bt=e=>`${e}~#`,aa=e=>`${e}?#`;function So(e,t,n){for(let a=e;a;a=a.parent)if(!(_n.has(a)||!l(a.vars,t)))return m(a.vars,n)}var _n=new WeakSet;function bo(e,t,n){if(ye(t))return ra(e,t,n);let a=No(e,t);if(!a)return;let s=m(a.vars,xe(t));if(s)return s;if(!m(a.vars,Bt(t)))return m(a.vars,t)}function No(e,t){for(let n=e;n;n=n.parent)if(!_n.has(n)&&l(n.vars,t))return n}function sa(e,t){let n=No(e,t);if(!n)return;let a=m(n.vars,xe(t));return a||(m(n.vars,Bt(t))?o.any:m(n.vars,t))}function vs(e,t){let n$1=new Set,a=new Set;for(let i=e;i;i=i.parent)for(let l of Object.keys(i.vars))l.endsWith("~#")||l.endsWith("?#")||(l.endsWith("#")?n$1.add(l.slice(0,-1)):_n.has(i)&&(ye(l)?a:n$1).add(l));if(!n$1.size&&!a.size)return e;let s={};for(let i of n$1){let l=sa(e,i);l!==void 0&&n(s,i,l);}let r=z(e,s),o={};for(let i of a){let l=ra(r,i,t);l!==void 0&&n(o,i,l);}return r=z(r,o),r}var Bo=e=>!(e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="union"&&e.of.length===0);function De(e,t,n){let a=te(e,t);return a!==void 0?a:ra(e,t,n)}var en=(e,t,n)=>{let a=bo(e,t,n);if(a&&!Bo(J(a,n)))return;let s=De(e,t,n);return s===void 0?void 0:J(s,n)};function ra(e,t,n){let a=t.lastIndexOf(".");if(a<0)return;let s=De(e,t.slice(0,a),n);if(s!==void 0)return ta$1(s,[t.slice(a+1)],n)?.type}function Dc(e,t){let n=t+".",a=new Set;for(let s=e;s;s=s.parent){for(let r of Object.keys(s.vars))r.startsWith(n)&&a.add(r);if(!_n.has(s)&&l(s.vars,t))break}return [...a].sort((s,r)=>s.length-r.length)}function ws(e,t,n$1){let a=Dc(e,t);if(!a.length)return e;let s={};for(let r of a)n(s,r,ra(je(e,s),r,n$1)??o.unknown);return je(e,s)}var Es=new Set(["string","number","boolean","undefined","function","object"]),Ns={string:o.string,number:o.number,boolean:o.boolean,undefined:o.undefined,object:o.union([o.nonPrimitive,o.null])};function oa(e,t){switch(t){case "string":return e.t==="string"||e.t==="literal"&&typeof e.value=="string";case "number":return e.t==="number"||e.t==="literal"&&typeof e.value=="number";case "boolean":return e.t==="boolean"||e.t==="literal"&&typeof e.value=="boolean";case "undefined":return e.t==="undefined";case "function":return e.t==="fn"||e.t==="overload";case "object":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="null"||e.t==="nonPrimitive";default:return false}}var ko=o.literal(true),vo=o.literal(false),Q=e=>(e.t==="union"?[...e.of]:[e]).flatMap(t=>t.t==="boolean"?[ko,vo]:[t]),Oc=[ko,vo];function $e(e){return e.t==="union"?e.of:e.t==="boolean"?Oc:[e]}function ia(e,t,n){let a=$e(e);if(a.length<=1)return e;let s=$e(t),r=a.filter(i=>s.some(l=>da$1(l,i,n)));if(r.length===0)return e;let o=ia$1(r);return da$1(t,o,n)?o:e}var zn=(e,t)=>{let n=e.filter(a=>qn(a)||t(a));return n.length===e.length?null:ia$1(n)},qn=e=>e.t==="unknown"||e.t==="any";function lo(e,t,n){let a=e,s=t;if(e.type==="UnaryExpression"&&a.operator==="typeof"&&t.type==="Literal"&&typeof s.value=="string"){let r=se(a.argument,n);if(r!==null)return {name:r,tag:s.value}}return null}function Mc(e,t,n){if(e.t==="unknown"||e.t==="any")return t;let s=Q(e).filter(r=>da$1(r,t,n));return ia$1(s)}function Rc(e,t,n){return e.t==="unknown"||e.t==="any"?null:zn(Q(e),a=>!da$1(a,t,n))}function Pc(e,t){if(!Es.has(t))return null;let n=m(Ns,t),a=Q(e),r=a.flatMap(o=>n&&qn(o)?Q(n):[o]).filter(o=>oa(o,t)||qn(o));return r.length===a.length&&r.every((o,i)=>o===a[i])?null:ia$1(r)}function Cc(e,t){if(!Es.has(t))return null;let n=Q(e),a=n.filter(s=>qn(s)||!oa(s,t));return a.length===n.length?null:ia$1(a)}function co(e,t,n){let a=se(e,n);if(a!==null&&He(t)){let s=rn(t);if(s.t==="literal"||s.t==="null")return {name:a,lit:s}}return null}function uo(e,t,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&He(t)){let a=se(e.object,n),s=rn(t);if(a!==null&&(s.t==="literal"||s.t==="null"))return {name:a,prop:e.property.name,lit:s}}return null}function po(e,t,n,a,s){let r=Q(e),o=i=>i.t==="object"?w(i.props,t)?.type:void 0;return zn(r,i=>{let l=o(i);return a?!!l&&da$1(n,l,s):!(l&&da$1(l,n,s))})}function fo(e,t,n){let a=Q(e),s=r=>r.t==="object"&&(l(r.props,t)||!!r.index);return zn(a,r=>n?s(r):!s(r))}function Ic(e,t,n){return e.t==="unknown"||e.t==="any"||da$1(t,e,n)?t:null}function jc(e,t,n){return zn(Q(e),a=>!fa$1(a,t,n))}var Ze=1,Nn=2,Fc=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function Nt(e,t){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return Ze|Nn;case "literal":return e.value?Ze:Nn;case "null":case "undefined":case "void":return Nn;case "array":case "tuple":case "fn":case "overload":return Ze;case "object":return Fc(e)?Ze|Nn:Ze;case "nonPrimitive":return Ze;case "union":case "intersection":return e.of.reduce((n,a)=>n|Nt(a,t),0);default:{let n=J(e,t);return n===e?Ze|Nn:Nt(n,t)}}}var As=(e,t)=>(Nt(e,t)&Nn)!==0,wo=(e,t)=>(Nt(e,t)&Ze)!==0,mo=(e,t,n)=>{let a=Q(e),s=a.filter(r=>Nt(r,n)&t);return s.length===a.length?null:ia$1(s)},yo=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,Te=(e,t,n)=>({then:t?{[e]:t}:{},else:n?{[e]:n}:{}}),Vc=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function Se(e,t,n,a){if(e.type==="BinaryExpression"){let r=e;if(r.operator==="in"){let g=r.left,N=r.right,w=se(N,a);if(g.type==="Literal"&&typeof g.value=="string"&&w!==null){let k=en(t,w,n);if(!k)return Qe;let R=String(g.value);return Te(w,fo(k,R,true),fo(k,R,false))}return Qe}if(!Vc(r.operator))return Qe;let o=r.operator==="!=="||r.operator==="!=",i=r.left,l=r.right,c=lo(i,l,a)??lo(l,i,a);if(c){let g=en(t,c.name,n);if(!g)return Qe;let N=Pc(g,c.tag),w=Cc(g,c.tag);return o?Te(c.name,w,N):Te(c.name,N,w)}let u=yo(i),d=yo(l),p=u?l:d?i:null,y=p?se(p,a):null;if((u||d)&&y!==null){let g=y,N=en(t,g,n);if(!N)return Qe;let k=r.operator==="=="||r.operator==="!="?["null","undefined"]:[u??d],R=Q(N),C=zn(R,E=>k.includes(E.t)),B=zn(R,E=>!k.includes(E.t));return o?Te(g,B,C):Te(g,C,B)}let m=co(i,l,a)??co(l,i,a),h=uo(i,l,a)??uo(l,i,a);if(m||h){let g=Qe;if(m){let N=en(t,m.name,n);if(N){let w=Ic(N,m.lit,n),k=jc(N,m.lit,n);g=o?Te(m.name,k,w):Te(m.name,w,k);}}if(h){let N=en(t,h.name,n);if(N){let w=po(N,h.prop,h.lit,true,n),k=po(N,h.prop,h.lit,false,n),R=o?Te(h.name,k,w):Te(h.name,w,k);g={then:{...g.then,...R.then},else:{...g.else,...R.else}};}}return g}return Qe}if(e.type==="UnaryExpression"&&e.operator==="!"){let r=Se(e.argument,t,n,a);return {then:r.else,else:r.then}}if(e.type==="CallExpression"){let r=Jc(e,t,n,a);if(r)return r}if(e.type==="LogicalExpression"){let r=e;if(r.operator==="&&"){let o=Se(r.left,t,n,a),i=Se(r.right,z(t,o.then),n,a);return {then:{...o.then,...i.then},else:go(o.else,{...o.then,...i.else},t,n)}}if(r.operator==="||"){let o=Se(r.left,t,n,a),i=Se(r.right,z(t,o.else),n,a);return {then:go(o.then,{...o.else,...i.then},t,n),else:{...o.else,...i.else}}}return Qe}let s=se(e,a);if(s!==null){let r=en(t,s,n);if(r)return Te(s,mo(r,Ze,n),mo(r,Nn,n))}return Qe}function Ts(e,t,n$1,a,s,r,o){let i={},l=e.discriminant,c=Eo(l);if(c){let p=se(c,o),y=p===null?void 0:bs(s,p,r);return p!==null&&y&&n(i,p,zc(y,Ao(e,true),n$1,a,r)),i}let u=se(l,o);if(u!==null){let p=bs(s,u,r);p&&n(i,u,ho(p,t,n$1,a,r));}let d=l;if(l.type==="MemberExpression"&&!d.computed&&!d.optional&&d.property.type==="Identifier"){let p=se(d.object,o),y=p===null?void 0:bs(s,p,r);if(p!==null&&y&&y.t==="union"){let m=d.property.name;n(i,p,$c(y,m,h=>ho(h,t,n$1,a,r),r));}}return i}function bs(e,t,n){let a=bo(e,t,n);if(a&&!Bo(J(a,n)))return;let s=De(e,t,n);if(s!==void 0)return s.t==="var"?s:J(s,n)}function ho(e,t,n,a,s){if(!t.length)return e;let r=t.slice(n,a),o$1=n===a||r.includes(null),i=r.filter(y=>y!==null);if(e.t==="unknown"&&!o$1){let y=[];for(let m of i)if(Lc(m))y.push(m);else if(Kc(m))y.push(o.nonPrimitive);else return e;return o.union(y)}let l=o.union(i),c=Q(e),u=Un(l)?l:xc(ia$1(c.filter(y=>ea$1(l,y,s)||ea$1(y,l,s))),l);if(!o$1)return u;let d=t.filter(y=>y!==null),p=ia$1(c.filter(y=>!(Bs(y)&&d.some(m=>fa$1(m,y,s)))));return Un(u)?p:ia$1([u,p])}function $c(e,t,n,a){let s=Q(e),r=l=>l.t==="object"?w(l.props,t)?.type:void 0,o=s.map(r);if(o.some(l=>l===void 0))return e;let i=n(ia$1(o));return ia$1(s.filter((l,c)=>{let u=o[c];return !Un(u)&&ea$1(u,i,a)}))}function xc(e,t){let n=Q(e),a=Q(t),s=o=>a.filter(i=>i.t===o||i.t==="literal"&&typeof i.value===o),r=o=>n.some(i=>i.t===o)&&a.some(i=>i.t==="literal"&&typeof i.value===o);return !r("string")&&!r("number")?e:ia$1(n.flatMap(o=>o.t==="string"?s("string"):o.t==="number"?s("number"):[o]))}var Un=e=>e.t==="union"&&e.of.length===0,Bs=e=>e.t==="literal"||e.t==="null"||e.t==="undefined",Lc=e=>e.t==="string"||e.t==="number"||e.t==="boolean"||e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="nonPrimitive",Kc=e=>e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload";function Eo(e){let t=e;return e.type==="UnaryExpression"&&t.operator==="typeof"?t.argument:null}function Ao(e,t){let n=[];for(let a of e.cases){if(!a.test){t&&n.push(null);continue}let s=Wc(a.test);if(s===null)return null;n.push(s);}return n}function Wc(e){let t=Ae(e);if(t!==null)return t;let n=e.value;return e.type==="Literal"&&typeof n=="string"?n:null}function na(e,t,n){if(qn(e))return true;if(e.t==="var"){let a=J(e,n);return a===e||na(a,t,n)}return e.t==="union"||e.t==="intersection"?e.of.some(a=>na(a,t,n)):oa(e,t)}function ks(e,t,n){if(qn(e)||!Es.has(t))return true;if(e.t==="var"){let a=J(e,n);return a===e||ks(a,t,n)}return e.t==="union"||e.t==="intersection"?e.of.some(a=>ks(a,t,n)):e.t==="boolean"?t!=="boolean":!oa(e,t)}var To=(e,t,n)=>ia$1(Q(e).filter(a=>t.every(s=>ks(a,s,n))));function Uc(e,t){return t==="object"?e.t==="unknown"?Ns.object:e:m(Ns,t)??null}function zc(e,t,n,a,s){if(!t||!t.length)return e;let r=t.indexOf(null),o=n===a||r>=n&&r<a,i=t.filter(N=>N!==null),l=r>-1&&r<n?n-1:n,c=r>-1&&r<a?a-1:a,u=i.slice(l,c),d=i.slice(0,l);if(o){let N=[...i.slice(c).filter(w=>!u.includes(w)),...d];return To(e,N,s)}let p=new Set(d),y=u.filter(N=>!p.has(N)),m=ia$1(u.map(N=>Uc(e,N)).filter(N=>N!==null).flatMap(Q).filter(N=>y.some(w=>na(N,w,s)))),h=m.t==="union"&&m.of.length>1?ia(m,e.t==="var"?J(e,s):e,s):m,g=Q(e).flatMap(N=>Q(qc(N,h,s)));return ia$1(g.filter(N=>y.some(w=>na(N,w,s))))}function qc(e,t,n){if(da$1(t,e,n))return t;if(e.t==="var"){let a=J(e,n),s=a===e?o.any:a;if(da$1(t,s,n))return o.intersection([e,t])}return e}var Do=()=>false;function Oo(e,t,n,a,s){if(Eo(e.discriminant)){if(!a)return false;let l=J(a,s),c=Ao(e,false);return Un(c?To(l,c,s):l)}let r=t.t==="var"?t:J(t,s);if(r.t==="var"||Un(r))return false;let o=Q(r);if(!o.every(Bs))return false;let i=n.filter(l=>l!==null);return !i.length||i.some(l=>!Bs(l)&&!Un(l))?false:o.every(l=>i.some(c=>fa$1(c,l,s)))}function _c(e,t){let n=e.cases;return !n.length||!n.some(s=>!s.test)&&!t(e)||!n[n.length-1].consequent.some(s=>on(s,t))?true:n.some(s=>ta(s.consequent,t))}function ta(e,t){for(let n of e){if(Wn(n,t))return true;if(on(n,t))return false}return false}function Wn(e,t){switch(e.type){case "BreakStatement":return true;case "BlockStatement":return ta(e.body,t);case "IfStatement":{let n=e;return !Oe(n.test)&&Wn(n.consequent,t)||!ue(n.test)&&!!n.alternate&&Wn(n.alternate,t)}case "TryStatement":{let n=e;return n.finalizer&&ie(n.finalizer,t)?false:Wn(n.block,t)||!!n.handler&&Wn(n.handler.body,t)||!!n.finalizer&&Wn(n.finalizer,t)}default:return false}}var ue=e=>!e||e.type==="Literal"&&e.value===true,Oe=e=>!!e&&e.type==="Literal"&&e.value===false;function on(e,t=Do){switch(e.type){case "BreakStatement":case "ContinueStatement":return true;case "BlockStatement":return e.body.some(n=>on(n,t));case "IfStatement":{let n=e;return (ue(n.test)||!!n.alternate&&on(n.alternate,t))&&(Oe(n.test)||on(n.consequent,t))}default:return ie(e,t)}}function Mo(e,t){let n$1={};for(let a=e;a&&a!==t;a=a.parent)if(!_n.has(a))for(let s of Object.keys(a.vars))!ye(s)&&!l(n$1,s)&&n(n$1,s,m(a.vars,s));return n$1}function go(e,t,n$1,a){let s={};for(let r of Object.keys(e)){let o=e[r],i=m(t,r)??en(n$1,r,a);if(!i)continue;let l=ia$1([o,i]),c=en(n$1,r,a);c&&fa$1(l,c)||n(s,r,l);}return s}function Gc(e,t){if(e.t==="fn")return e.guard??null;if(e.t==="overload"){for(let n of e.signatures)if(n.guard&&n.params.length===t)return n.guard}return null}function Jc(e,t,n,a){let s=e.callee;if(s.type!=="Identifier")return null;let r=te(t,a(s));if(!r)return null;let o=Gc(r,e.arguments.length);if(!o)return null;let i=e.arguments[o.param],l=i?se(i,a):null;if(l===null)return null;let c=en(t,l,n);return c?Te(l,Mc(c,o.type,n),Rc(c,o.type,n)):null}var z=(e,t)=>{if(!Object.keys(t).length)return e;let n=je(e,t);return _n.add(n),n};function ie(e,t=Do){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(a=>ie(a,t));case "IfStatement":{let n=e;return (ue(n.test)||!!n.alternate&&ie(n.alternate,t))&&(Oe(n.test)||ie(n.consequent,t))}case "SwitchStatement":return !_c(e,t);case "WhileStatement":case "ForStatement":{let n=e;return ue(n.test)&&!ta([n.body],t)}case "DoWhileStatement":{let n=e;return ie(n.body,t)||ue(n.test)&&!ta([n.body],t)}case "TryStatement":{let n=e;if(n.finalizer&&ie(n.finalizer,t))return true;let a=!n.handler||ie(n.handler.body,t);return ie(n.block,t)&&a}default:return false}}var Xc=new Set(["VariableDeclaration","TSTypeAliasDeclaration","TSModuleDeclaration"]);function Po(e,t){let n=[],a=(s,r)=>{if(Xc.has(s.type)&&s.declare===true&&(r==="ambient-namespace"?n.push({node:s,reason:"ambient"}):r==="elsewhere"&&s.type!=="TSModuleDeclaration"&&n.push({node:s,reason:"here"})),s.type==="TSModuleDeclaration"){let i=t.byNode.get(s);if(!i)return;let l=s.body;if(l.type!=="TSModuleBlock")return a(l,"elsewhere");let c=i.ambient?"ambient-namespace":"namespace";for(let u of childrenOf(l))a(u,c);return}let o=s.type==="Program"?"top":s.type==="ExportNamedDeclaration"?r:"elsewhere";for(let i of childrenOf(s))a(i,o);};return a(e,"elsewhere"),n}function si(e,t){let n=H(),a=t({...e,sink:n});for(let s of n.all)e.sink.report(s);return {value:a,reported:n.all}}var eu=e=>{let t={};for(let n$1 of Object.keys(e))n(t,n$1,{params:[],body:e[n$1]});return t},Io=new WeakMap,nu=e=>e instanceof h||e instanceof i||e instanceof k,jo=Object.freeze({type:"Program",body:[]});function tu(e){let t=Io.get(e);if(t)return t;let n={...e.lib,...eu(e.types),...e.schemes},a=ci(e.nominals??{},n),s=ri({env:e,schemes:n,nominals:a,programAliases:new Set(Object.keys(n)),globalKeys:new Set,namespaces:Je,root:jo,bounds:[],invalidTargets:new WeakSet,writtenTypeRefs:new WeakMap});for(let o of Object.keys(n))try{Rt(o,e.scope,s,jo);}catch(i){if(!nu(i))throw i}let r={schemes:Object.freeze(n),nominals:a,globalKeys:new Set([...Object.keys(n),...Object.keys(e.nominals??{})])};return Io.set(e,r),r}function ri(e){return {overlay:new WeakMap,sink:H(),env:e.env,schemes:e.schemes,nominals:e.nominals,resolvedTypeArgs:new WeakMap,resolvedSchemes:new Set,programAliases:e.programAliases,globalKeys:e.globalKeys,namespaces:e.namespaces,envNamespaces:e.env.namespaces??Je,root:e.root,symbols:{},bounds:e.bounds,keyOf:mu(e.bounds),writtenTypeRefs:e.writtenTypeRefs,usedBeforeDeclaration:new WeakMap,invalidTargets:e.invalidTargets,evolving:new Set,fnDepth:{value:0},unreachable:{value:false},jumps:[],ambient:{value:false},namespaceMembers:new Map,flow:new Map,stmtFlow:new WeakMap,switches:new WeakMap,shortCircuits:new WeakSet}}function au(e){let t=[];return e.maxDepth!==void 0&&t.push(Za(e.maxDepth)),e.maxNodes!==void 0&&t.push(es(e.maxNodes)),e.maxArgs!==void 0&&t.push(ns(e.maxArgs)),e.maxFunctionNesting!==void 0&&t.push(Ya(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&t.push(Ha(e.maxCallNesting)),e.memberDepth!==void 0&&t.push(Qa(e.memberDepth)),t}function su(e,t){let{min:n,max:a}=F(e);return t.length<n||t.length>a}var oi=(e,t,n)=>m(t,e)?.params??m(n,e);function Ms(e){if(Array.isArray(e))return e.some(Ms);if(!e||typeof e!="object")return false;let t=e;return t.t==="typeQuery"||Object.values(t).some(Ms)}function ii(e,t,n){if(!e.some(r=>r.bound))return [];let a=G$1(e,t),s=[];return e.forEach((r,o)=>{if(!r.bound||o>=t.length)return;let i=C(r.bound,a);da$1(t[o],i,n)||s.push({param:r,arg:t[o],expected:i});}),s}var Fo=(e,t)=>e.line<t.line||e.line===t.line&&e.column<=t.column;function ru(e,t,n){return (e.byPath.get(t)??[]).find(a=>{let s=a.node?.loc;return !!s&&Fo(s.start,n.start)&&Fo(n.end,s.end)})}function ou(e,t,n,a,s,r,o){let i=e.typeRefs;if(!i?.length)return [];let l=[];for(let c of i){let u=(k,R)=>({type:"Identifier",name:k,loc:R}),d=u(c.name,c.loc),p=c.namespace===void 0?null:ru(r,c.namespace,c.loc);if(p===void 0)continue;let y=mn(c.name,p,r,[o]);if("error"in y){let k=c.segments?.[y.segment],R=k?u(k.name,k.loc):d;l.push(y.error==="namespace"?S.namespace.notFound(R,k?.name??c.name):S.namespace.noExportedMember(R,y.namespace,k?.name??c.name));continue}let m=c.args&&s.get(c.args),h=oi(m?.key??y.key,t,n);if(!h){l.push(S.unknownName(d,c.name));continue}if(!c.args)continue;let{min:g,max:N}=F(h);if(c.args.length<g||c.args.length>N){l.push(S.genericTypeArity(d,c.name,g,N));continue}let w=a.get(c.args)??(m&&(a.get(m.args)??m.args))??c.args;if(!Ms(w))for(let k of ii(h,w,t))l.push(S.constraintViolation(d,k.arg,k.expected));}return l}function li(e$1,t,n={}){let a=$a(e$1),s=[a],r=tu(t),o$1=vr(e$1,w=>a.orderOf(w),r.globalKeys),i$1=t.namespaces??Je,l=new WeakMap,c=uu(e$1,o$1,[i$1],a,l,r.globalKeys),u=Object.keys(c.schemes).length?{...r.schemes,...c.schemes}:r.schemes,{schemes:d,diagnostics:p}=lu(c,u),{schemes:y,diagnostics:m$1}=cu(c,d),h$1=ls(e$1),g=ri({env:t,schemes:y,nominals:y===r.schemes?r.nominals:ci(t.nominals??{},y),programAliases:new Set(Object.keys(c.schemes)),globalKeys:r.globalKeys,namespaces:o$1,root:e$1,bounds:s,invalidTargets:h$1.invalidTargets,writtenTypeRefs:l}),N=n.profile?compileProfile(n.profile):void 0;N&&e(N.typeLimits);try{let w,k$1=gu(e$1,g);try{w=T(e$1,k$1,g);for(let B of g.programAliases)g.resolvedSchemes.has(B)||Rt(B,k$1,g,m(c.ids,B)??e$1);}catch(B){if(B instanceof h||B instanceof i)g.sink.report(ne("too-deep",e$1,B.message));else if(B instanceof k)g.sink.report(ne("too-complex-union",e$1,B.message));else throw B;w=o.unknown;}let R=[];N&&R.push(...qt(N)),n.limits&&R.push(...au(n.limits)),n.resultType&&R.push(ts(n.resultType,y));let C=[...Si(a,t),...du(e$1,o$1),...pu(e$1,o$1),...p,...m$1,...g.sink.all,...h$1.diagnostics,...ou(e$1,y,g.nominals,g.resolvedTypeArgs,g.writtenTypeRefs,o$1,i$1),...n.unused?is(e$1,n.unused):[],...R.length?Ga(e$1,R,{overlay:g.overlay,schemes:y}):[]];return {type:w,overlay:g.overlay,diagnostics:C,schemes:g.schemes,nominals:g.nominals}}finally{N&&f();}}function iu(e,t,n$1={}){let a=li(e,t,n$1),s={},r=new Map,o$1,i=c=>{let u=[];if(c.type==="VariableDeclaration")for(let d of c.declarations){let p=ge(d.id),y=a.overlay.get(d);p&&y&&(n(s,p,y.type),u.push(p));}else if(c.type==="FunctionDeclaration"){let d=c.id?.name,p=a.overlay.get(c);d&&p&&(n(s,d,p.type),u.push(d));}return u};for(let c of e.body??[])if(c.type==="VariableDeclaration"||c.type==="FunctionDeclaration")i(c);else if(c.type==="ExportNamedDeclaration"){let u=c;if(u.declaration)for(let d of i(u.declaration))r.set(d,d);else for(let d of u.specifiers)r.set(d.exported.name,d.local.name);}else if(c.type==="ExportDefaultDeclaration"){let u=a.overlay.get(c.declaration);o$1=u?u.type:o.unknown;}let l={};if(r.size||o$1!==void 0){for(let[c,u]of r){let d=m(s,u);d&&n(l,c,{type:d});}o$1!==void 0&&(l.default={type:o$1});}else for(let c in s)n(l,c,{type:s[c]});return {type:{t:"object",props:l},diagnostics:a.diagnostics}}function ci(e,t){let n$1=Object.keys(e);if(!n$1.some(s=>l(t,s)))return e;let a={};for(let s of n$1){let r=m(e,s);r&&!l(t,s)&&n(a,s,r);}return a}function lu(e,t){if(!Object.keys(e.schemes).length)return {schemes:t,diagnostics:[]};let n$1=Hr(e.schemes,t),a=Object.fromEntries(Object.entries(e.schemes).filter(([c])=>!n$1.has(c))),s=Qr(a,t),r=new Set([...n$1,...s.aliases]);if(!r.size&&!s.properties.size)return {schemes:t,diagnostics:[]};let o$1={...t};for(let c of r){let u=m(e.schemes,c);u&&n(o$1,c,{params:u.params,body:o.any});}for(let[c,u]of s.properties){let d=m(e.schemes,c);r.has(c)||!d||n(o$1,c,{params:d.params,body:ms(d.body,u)});}let i=[],l=c=>{let u=m(e.ids,c);u&&i.push(S.circularTypeAlias(u,c));};for(let c of n$1)l(c);for(let[c,u]of s.properties){let d=m(e.props,c);for(let p of u){let y=(d&&m(d,p))??m(e.ids,c);y&&i.push(S.circularTypeAnnotation(y,p));}}for(let c of s.aliases)l(c);return {schemes:o$1,diagnostics:i}}var ui=(e,t$1)=>e.t==="index"&&t(K$1(e,t$1));function Vo(e,t,n$1,a){let s=r=>{if(Array.isArray(r)){let c=false,u=r.map(d=>{let p=s(d);return p!==d&&(c=true),p});return c?u:r}if(!r||typeof r!="object")return r;let o$1=r;if(ui(o$1,t)){let c=o$1;return a.push(S.noSuchMember(n$1,c.obj,di(c.key))),o.any}let i=false,l={};for(let c of Object.keys(o$1)){let u=s(o$1[c]);u!==o$1[c]&&(i=true),n(l,c,u);}return i?l:o$1};return s(e)}var di=e=>e.t==="literal"?String(e.value):pa$1(e);function cu(e,t){if(!Object.keys(e.schemes).length)return {schemes:t,diagnostics:[]};let n$1=[],a={...t},s=false;for(let r of Object.keys(e.schemes)){let o=m(t,r),i=m(e.ids,r);if(!o||!i)continue;let l=m(e.props,r),c=(d,p)=>{if(l&&(d.t==="union"||d.t==="intersection")){let y=d.of.map(m=>c(m,p));return y.every((m,h)=>m===d.of[h])?d:{...d,of:y}}if(l&&d.t==="object"){let y={},m$1=false;for(let[h,g]of Object.entries(d.props)){let N=Vo(g.type,t,m(l,h)??p,n$1);N!==g.type&&(m$1=true),n(y,h,N===g.type?g:{...g,type:N});}return m$1?{...d,props:y}:d}return Vo(d,t,p,n$1)},u=c(o.body,i);u!==o.body&&(n(a,r,{...o,body:u}),s=true);}return {schemes:s?a:t,diagnostics:n$1}}var uu=(e,t,n$1,a,s,r)=>{let o={},i={},l={};return walk(e,{TSModuleDeclaration:c=>t.byNode.has(c)?void 0:false,TSTypeAliasDeclaration(c){let u=c;if(!u.id?.name||!u.typeAnnotation)return;let d=xs(c,a,t,r);if(!d)return;let p=t.aliasOwner.get(c)??null,y=p?Ar(u.typeAnnotation,p,t,n$1):rt(u.typeAnnotation,m=>{let h=fi(a,c,m,t,r);return h?{key:h}:t.byPath.size>0?mn(m,null,t,n$1):{key:m}},(m,h,g)=>s.set(m,{key:h,args:g}));if(n(o,d,{params:ea(c)??[],body:y}),n(i,d,u.id),u.typeNode){let m={};mi(u.typeNode,m),n(l,d,m);}}}),{schemes:o,ids:i,props:l}};function pi(e,t){return xs(e,Be(t.bounds,e),t.namespaces,t.globalKeys)}function xs(e,t,n,a){let s=e.id,r=s?.name;if(!s||!r)return;let o=n.aliasOwner.get(e);if(o){let u=o.types.get(r);return u&&u.id!==s&&t?`${o.path}.${r}@${t.orderOf(e)}`:u?.key??`${o.path}.${r}`}if(!t)return r;let i=t.symbolOf(s),l=t.localsOf(t.root)?.get(r);return !!i&&(l===i||l?.exportSymbol===i)&&!a.has(r)?r:`${r}@${t.orderOf(e)}`}function fi(e,t,n,a,s){if(!e||n.includes("."))return;let o=Lt(e,t,n,at.Type)?.declarations.find(i=>i.kind==="type-alias");return o&&xs(o.node,e,a,s)}function du(e,t){return wr(e,t).map(n=>S.namespace.misplaced(n))}function pu(e,t){return Po(e,t).map(({node:n,reason:a})=>a==="ambient"?S.modifier.alreadyAmbient(n):S.modifier.cannotAppearHere(n))}function mi(e,t){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let n of e.types??[])mi(n,t);else if(e.type==="TSTypeLiteral")for(let n$1 of e.members??[]){let a=n$1.key;n$1.type==="TSPropertySignature"&&typeof a=="string"&&!l(t,a)&&n(t,a,n$1);}}var fu=(e,t)=>n=>{let a=t.parentOf(n);if(!a)return;let s=a.source.value;return typeof s=="string"&&e.modules&&m(e.modules,s)?at.Value:void 0};function Be(e,t){for(let n=e.length-1;n>=0;n--)if(e[n].has(t))return e[n]}function Rs(e,t){let n=Be(t.bounds,e);return !!n&&Ut(n,e)}var At=e=>Sr(Kt(e)),mu=e=>t=>{let n=Be(e,t),a=n&&jn(n,t);return a?At(a):t.name};function ga(e,t,n){let a=Be(e.bounds,t),s=Va(t).find(o=>o.name===n),r=a&&s&&a.symbolOf(s);return r?At(r):n}function yi(e,t,n){let a=Be(e.bounds,t),s=a&&Lt(a,t,n,at.Value|Ge.ExportValue);return s?At(s):n}function hi(e,t){let n=t.usedBeforeDeclaration.get(e);n||(n=yu(e,t),t.usedBeforeDeclaration.set(e,n));for(let a of n)t.sink.report(a);return n.length>0}function yu(e,t){let n=Be(t.bounds,e),a=n&&jn(n,e);if(!n||!a)return [];let s=[],r=e.name,o=Kt(a),i=o.flags&Ge.BlockScopedVariable?o.declarations.find(c=>Ps(c)):void 0;i&&!Wt(n,i,e,{deferred:true})&&s.push(S.usedBeforeDeclaration.blockScoped(e,r,i.name));let l=Nr(n,e,a);if(l){let c=Gn(l.name);s.push(l.kind==="self"?S.usedBeforeDeclaration.parameterSelf(e,c):S.usedBeforeDeclaration.parameterAfter(e,c,r));}return s}var Ps=e=>e.kind==="const"||e.kind==="let"||e.kind==="catch";function hu(e,t){let n=Be(t.bounds,e),a=n&&jn(n,e),s=a?.valueDeclaration;if(!n||!a||!s||Wt(n,s,e,{deferred:false}))return false;let r=e.name;return La(n,e)===La(n,s.node)&&(Ps(s)||s.kind==="var")?(t.sink.report(S.usedBeforeAssigned(e,r)),true):Ps(s)?(t.sink.report(S.usedBeforeDeclaration.blockScoped(e,r,s.name)),true):false}function Gn(e){switch(e.type){case "Identifier":return e.name;case "AssignmentPattern":return Gn(e.left);case "RestElement":return `...${Gn(e.argument)}`;case "ArrayPattern":return `[${e.elements.map(t=>t?Gn(t):"").join(", ")}]`;case "ObjectPattern":return `{ ${e.properties.map(t=>{if(t.type==="RestElement")return Gn(t);let n=t,a=Gn(n.value),s=Ve(n);return n.shorthand||s===null?a:`${s}: ${a}`}).join(", ")} }`;default:return ""}}function gi(e,t,n,a){let s=Be(n.bounds,t),r=$a(e,s&&{bound:s,parent:t});for(let o of Si(r,n.env))n.sink.report(o);n.bounds.push(r);try{return a()}finally{n.bounds.pop();}}var Si=(e,t)=>[...e.diagnostics,...to(e,fu(t,e))];function gu(e,t){let n$1=t.env.modules,a={};return walk(e,{ImportDeclaration(s){let r=s;if(r.importKind==="type")return;let o$1=r.source.value,i=typeof o$1=="string"&&n$1?m(n$1,o$1):void 0;if(!i){t.sink.report(S.unknownModule(r.source,String(o$1)));for(let l of r.specifiers)n(a,$o(l,t),o.unknown);return}for(let l of r.specifiers){if(l.importKind==="type")continue;let c=l.local.name;cn(c,l.local,t);let u=$o(l,t);if(l.type==="ImportNamespaceSpecifier"){n(a,u,i);continue}let d=l.type==="ImportSpecifier"?l.imported.name:"default",p=ta$1(i,[d],t.schemes);p?n(a,u,p.type):(t.sink.report(S.noSuchMember(l,i,d)),n(a,u,o.unknown));}}}),Object.keys(a).length?je(t.env.scope,a):t.env.scope}var $o=(e,t)=>ga(t,e.local,e.local.name),v=(e,t,n,a)=>(e.overlay.set(t,{type:n,scope:a}),n);function T(e,t,n,a){switch(j(),e.type){case vi:return e.schema;case "JSXElement":case "JSXFragment":{let s=desugarJSX(e,{emptyPropsAsObject:true});return v(n,e,gi(s,e,n,()=>T(s,t,n)),t)}case "Literal":return v(n,e,Sn(e),t);case "Placeholder":return v(n,e,o.any,t);case "Identifier":{let s=e.name,r=n.keyOf(e);if(In(r)&&hi(e,n))return v(n,e,o.any,t);if(n.unreachable.value){let l=sa(t,r);if(l!==void 0)return v(n,e,l,t)}let o$1=Na(r,n)??te(t,r);if(o$1!==void 0&&n.evolving.has(r)&&Hu(e,r,t,n))return v(n,e,o.any,t);let i=o$1!==void 0&&Yu(r,o$1,t);if(i)return i.depth===n.fnDepth.value&&n.sink.report(S.usedBeforeAssigned(e,s)),v(n,e,i.declared,t);if(o$1===void 0){if(s==="undefined")return v(n,e,o.undefined,t);if(In(r)&&hu(e,n))return v(n,e,o.any,t);let l=n.namespaces.byPath.get(s)??n.envNamespaces.byPath.get(s);return n.sink.report(l&&!l.some(c=>c.instantiated)?S.namespace.asValue(e,s):S.unknownName(e,s)),v(n,e,o.any,t)}return v(n,e,o$1,t)}case "MemberExpression":return v(n,e,bi(e,t,n),t);case "CallExpression":return v(n,e,Au(e,t,n,a),t);case "ArrowFunctionExpression":return qs(e,t,n);case "FunctionDeclaration":return n.sink.report(S.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),v(n,e,o.unknown,t);case "FunctionExpression":return n.sink.report(S.unsupported(e,"anonymous function (use an arrow)")),v(n,e,o.unknown,t);case "ThisExpression":return n.sink.report(S.unsupported(e,"'this'")),v(n,e,o.unknown,t);case "BlockStatement":return v(n,e,xi(e,t,n),t);case "ReturnStatement":{let s=e.argument;return v(n,e,s?T(s,t,n):o.unknown,t)}case "IfStatement":return be(e,t,n),n.overlay.get(e)?.type??o.unknown;case "ForStatement":case "WhileStatement":case "DoWhileStatement":case "ForOfStatement":case "ForInStatement":case "BreakStatement":case "ContinueStatement":case "ThrowStatement":case "TryStatement":case "SwitchStatement":return be(e,t,n),n.overlay.get(e)?.type??o.unknown;case "AssignmentExpression":{let s=e,r=s.left;if(s.operator==="="&&(r.type==="ArrayExpression"||r.type==="ObjectExpression")){let y=T(s.right,t,n);return kn(r,y,t,n),v(n,e,y,t)}let o$1=s.operator!=="=",i=o$1?Xo(r,t,n):Gs(r,t,n);o$1&&r.type==="MemberExpression"&&pa(r,n,"write")&&n.invalidTargets.add(r);let l=se(r,n.keyOf),c=n.invalidTargets.has(r);if(!o$1){let y=l!==null&&n.evolving.has(l),m=s.right,h=y||c?T(m,t,n):de(m,i,t,n,true),g=He(m)?v(n,m,Sn(m),t):h;return l!==null&&ca(l,t,n)?Me(l,ua(l,false,g,i,t,n),n):l!==null&&ye(l)&&Me(l,i,n),v(n,e,g,t)}let u=n.sink.reported,d=ad(s,c?o.any:i,t,n),p=n.sink.reported>u;return !c&&!p&&!da$1(d,i,n.schemes)&&n.sink.report(S.notAssignable(e,d,i,n.schemes)),l!==null&&ca(l,t,n)?Me(l,ua(l,true,d,Go(l,t,n)??i,t,n),n):l!==null&&ye(l)&&Me(l,N(i),n),v(n,e,d,t)}case "UpdateExpression":{let r=e.argument,o$1=Xo(r,t,n);if(r.type==="MemberExpression"&&pa(r,n,"write")&&n.invalidTargets.add(r),!n.invalidTargets.has(r)){let l=Xn(o$1,r,n);vt(l.type,n.schemes)||n.sink.report(S.arithmeticOperand(r,"operand"));}let i=se(r,n.keyOf);return i!==null&&ca(i,t,n)?Me(i,ua(i,true,o$1,Go(i,t,n)??o$1,t,n),n):i!==null&&ye(i)&&Me(i,N(o$1),n),v(n,e,o.number,t)}case "ExpressionStatement":return v(n,e,T(e.expression,t,n),t);case "VariableDeclaration":return ya(e,t,n),v(n,e,o.unknown,t);case "TSTypeAliasDeclaration":{let s=pi(e,n),r=s?m(n.schemes,s):void 0;return v(n,e,r?Fu(r.body,t,n,e,r.params.length>0):o.unknown,t)}case "BinaryExpression":return v(n,e,Od(e,t,n),t);case "LogicalExpression":{let s=e,r=T(s.left,t,n),o=s.operator==="??"?void 0:Se(s.left,t,n.schemes,n.keyOf),i=z(t,o?s.operator==="&&"?o.then:o.else:{}),l=n.unreachable.value;n.unreachable.value=l||s.operator==="&&"&&Oe(s.left)||s.operator==="||"&&ue(s.left);let{value:c,effect:u}=da(n,()=>T(s.right,i,n));return n.unreachable.value=l,u.size&&Jo([{effect:u,scope:i},{scope:z(t,o?s.operator==="&&"?o.else:o.then:{})}],n),v(n,e,Fd(s.operator,r,c,n.schemes),t)}case "UnaryExpression":return v(n,e,$d(e,t,n),t);case "ConditionalExpression":{let s=e;Ys(s.test,s.consequent,T(s.test,t,n),n);let r=Se(s.test,t,n.schemes,n.keyOf),o=z(t,r.then),i=z(t,r.else),l=n.unreachable.value;n.unreachable.value=l||Oe(s.test);let c=da(n,()=>T(s.consequent,o,n));n.unreachable.value=l||ue(s.test);let u=da(n,()=>T(s.alternate,i,n));return n.unreachable.value=l,(c.effect.size||u.effect.size)&&Jo([{effect:c.effect,scope:o},{effect:u.effect,scope:i}],n),v(n,e,c.value===R&&u.value===R?R:ia$1([c.value,u.value]),t)}case "ObjectExpression":return v(n,e,xd(e,t,n),t);case "ArrayExpression":return v(n,e,dl(e,t,n),t);case "TemplateLiteral":{if(Ae(e)!==null)return v(n,e,Sn(e),t);for(let s of e.expressions){let r=T(s,t,n);ul(r,n.schemes)||n.sink.report(S.notTextConvertible(s,r));}return v(n,e,o.string,t)}case "AwaitExpression":{let s=e.argument,r=s?T(s,t,n):o.unknown;return v(n,e,bn(r),t)}case "Program":{let s=Ot(e.body,t,n).scope;return v(n,e,o.unknown,s)}case "JsonExpression":return v(n,e,$s(e.body,t,n,e),t);case "ChainExpression":{let s=e.expression,r=T(s,t,n);return v(n,e,Su(s,n)?ia$1([r,o.undefined]):r,t)}case "TSAsExpression":{let s=e,r=T(s.expression,t,n),o=Qn(s.typeAnnotation,t,n,e,true);return ot(r,o,n.schemes)||n.sink.report(S.castUnsound(e,r,o)),v(n,e,o,t)}default:return n.sink.report(S.unsupported(e,`'${e.type}'`)),v(n,e,o.unknown,t)}}function bi(e,t,n,a=false){let s=T(e.object,t,n),r=Nu(e,s,t,n),o=a||n.unreachable.value?null:se(e,n.keyOf);if(o!==null&&ye(o)){let i=Na(o,n)??te(t,o);if(i!==void 0&&da$1(i,r,n.schemes))return i}return r}function Su(e,t){for(let n=e;n;){if(t.shortCircuits.has(n))return true;if(n.type==="MemberExpression")n=n.object;else if(n.type==="CallExpression")n=n.callee;else return false}return false}var bu=e=>e.t==="unknown";function Sa(e,t,n){return bu(e)?(n.sink.report(S.unknownValue(t)),true):false}function wn(e){let t=$e(e),n=t.some(s=>s.t==="null"),a=t.some(s=>s.t==="undefined");return n||a?{null:n,undefined:a}:null}function Tt(e){let t=$e(e).filter(n=>n.t!=="null"&&n.t!=="undefined");return t.length===$e(e).length||t.length===0?e:ia$1(t)}function Xn(e,t,n){if(Sa(e,t,n))return {type:o.any,error:true};let a=wn(e);return a?(n.sink.report(S.possiblyNullish(t,a)),$e(e).filter(r=>r.t!=="null"&&r.t!=="undefined").length===0?{type:o.any,error:true}:{type:Tt(e),error:false}):{type:e,error:false}}var Ni=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(Ni);function Nu(e,t$1,n,a){if(Sa(t$1,e.object,a))return v(a,e,o.any,n);let s=e.optional?null:wn(t$1);s&&a.sink.report(S.possiblyNullish(e.object,s)),e.optional&&wn(t$1)&&a.shortCircuits.add(e);let r=e.optional||s?Tt(t$1):t$1;if(e.computed){let l=T(e.property,n,a);if(l.t==="literal"&&typeof l.value!="boolean"){let u=String(l.value),d=ta$1(r,[u],a.schemes);return d?d.type:(xo(e,r,u,a),o.any)}let c=K$1(o.index(r,l),a.schemes);if(Ni(l)||c.t!=="index"&&!t(c)&&l.t!=="any")return c;if(l.t==="any"){let u=K$1(o.index(r,o.string),a.schemes);if(u.t!=="index"&&!t(u))return u}return Bi(l)?(Bu(e,r,l,a),o.any):o.unknown}let o$1=e.property.name,i=ta$1(r,[o$1],a.schemes);return i?i.type:(xo(e,r,o$1,a),o.any)}var Bi=e=>e.t==="any"||e.t==="string"||e.t==="number"||e.t==="literal"&&typeof e.value!="boolean"||e.t==="union"&&e.of.length>0&&e.of.every(Bi);function Bu(e,t,n,a){let s=J(t,a.schemes),r=s.t==="array"||s.t==="tuple"||s.t==="object"&&s.index?.key==="number";a.sink.report(r?S.implicitAny.indexNotNumber(e.property):S.implicitAny.index(e,n,s.t==="var"&&!s.bound?o.unknown:t));}function xo(e,t,n,a){let s=H$1(t,a.schemes)?I(t,a.schemes):t;s.t==="object"||s.t==="array"||s.t==="tuple"||s.t==="union"?a.sink.report(S.noSuchMember(e,t,n)):s.t!=="any"&&s.t!=="unknown"&&a.sink.report(S.notObject(e,t));}function ku(e,t,n,a){let s=e.arguments[0];if(!s){a.sink.report(S.missingArgument(e,"schema",o.unknown));return}if(s.type!=="Identifier"){a.sink.report(S.asserterNeedsName(s,t));return}let r=s.name,o$1=a.keyOf(s),i=te(n,o$1),l=m(a.schemes,r);if(i===void 0){a.sink.report(l?S.typeAsValue(s,r):S.unknownName(s,r));return}if(!l||l.params.length>0){a.sink.report(S.notASchema(s,r));return}if(!(ki(r,a)&&In(o$1)))return a.overlay.set(s,{type:l.body,scope:n}),l.body}function ki(e,t){if(!t.env.asserters?.size)return false;let n=m(t.schemes,e);return n!==void 0&&n.params.length===0&&te(t.env.scope,e)!==void 0}function cn(e,t,n){ki(e,n)&&n.sink.report(S.shadowsSchema(t,e));}function Ls(e,t){let n=ce(e,t);return (n.t==="fn"?n:n.t==="overload"?n.signatures[0]:void 0)?.params[0]?.type}function vu(e,t){let n=te(e.scope,t);if(!n)return;let a=Ls(n,e.schemes);return a?ce(a,e.schemes):void 0}function wu(e,t,n,a){let s=Ls(T(t[0],n,a),a.schemes),r=t.length>1?T(t[1],n,a):o.undefined;if(s){let o=ca$1(r,s,a.schemes);o.length&&a.sink.report(S.propsMismatch(t[1]??e,s,ra$1(o)));}return v(a,e,o.boolean,n)}var vi="TSLiteSyntheticArg",Eu=e=>({type:vi,schema:e});function wi(e,t,n){if(!e.some(r=>r.type==="SpreadElement"))return {nodes:[...e],spread:null};let a=[],s=null;for(let r of e){if(r.type!=="SpreadElement"){a.push(r);continue}let o=r.argument;if(o.type==="ArrayExpression"&&o.elements.every(l=>l&&l.type!=="SpreadElement")){for(let l of o.elements)a.push(l);continue}let i=ce(T(o,t,n),n.schemes);if(i.t==="tuple")for(let l of i.elements)a.push(Eu(l));else s={elem:Ba(i,o,n),node:r};}return {nodes:a,spread:s}}function Au(e,t,n,a){let s=n.inference||n.skipContextSensitive?{...n,inference:void 0,skipContextSensitive:void 0}:n,r=e.arguments,o$1=gs(e.callee);if(o$1){let m$1=s.env.accessors?m(s.env.accessors,o$1):void 0;if(m$1){let h=so(r);if(h){let g=ta$1(m$1,h,s.schemes);return g?g.type:(s.sink.report(S.noSuchMember(e,m$1,h.join("."))),o.unknown)}return r.forEach(g=>T(g,t,s)),o.unknown}}if(o$1&&s.env.asserters?.has(o$1)){let m=ku(e,o$1,t,s);r.length<2&&r.length>0&&s.sink.report(S.missingArgument(e,"value",o.unknown));for(let h=1;h<r.length;h++){let g=T(r[h],t,s);h===1&&m&&E(g).size===0&&!ot(g,m,s.schemes)&&s.sink.report(S.unprovableValue(r[h],g,m,e.arguments[0].name));}return m??o.unknown}if(o$1&&s.env.matchers?.has(o$1))return wu(e,r,t,s);let i=J(T(e.callee,t,s),s.schemes);if(Sa(i,e.callee,s))return v(s,e,o.any,t);let l=wn(i);l&&(e.optional?s.shortCircuits.add(e):s.sink.report(S.possiblyNullish(e.callee,l,true)));let c=l?J(Tt(i),s.schemes):i;if(c.t==="any")return r.forEach(m=>T(m,t,s)),o.any;if(c.t==="overload")return Mu(e,c,t,s,a);if(c.t!=="fn")return r.forEach(m=>T(m,t,s)),s.sink.report(S.notCallable(e,c)),o.unknown;let u=wi(r,t,s),d=u.nodes.map(m=>Ei(m,t,s)),p=Ti(e),y=!p||Di(c,p.length);return y||s.sink.report(Oi(e,[c],p.length)),Yn(e,c,u.nodes,d,t,s,u.spread,a,y?p:void 0)}function Ei(e,t,n){if(le(e))return T(e,t,{...n,skipContextSensitive:true});if(e.type!=="CallExpression")return T(e,t,n);let a=H(),s=T(e,t,{...n,sink:a});return a.hasErrors()?o.any:(a.all.forEach(r=>n.sink.report(r)),s)}function Yn(e,t,n,a,s,r,o$1=null,i,l){let c,u=r.sink;if(!o$1){let E=Ri(e,t,a.length,n);E&&(r.sink.report(E),c=H(),r={...r,sink:c});}let d=l?$u(e,t,l,r):void 0,p=d??aa$1(t,a,r.schemes,i).bindings,y=d||!i?{}:Tu(t,i,r.schemes),m=E=>O(C(E,Du(t,E,p,r.schemes))),h={returnMapper:y,nonFixing:p,outer:Lo(t,p),fixing:m},g=new Set((t.typeParams??[]).map(E=>E.name)),N=E$1=>[...E(E$1)].some(M=>g.has(M)),w=new Set,k=[];n.forEach((E,M)=>{if(ro(E)){let L=t.params[M]?.type??o.any,J=_s(L.t==="var"?C(L,p):L,E,r.schemes);a[M]=qs(E,s,r,J&&m(J));}else if(E.type==="CallExpression"&&a[M].t==="any")a[M]=T(E,s,r,C(t.params[M]?.type??o.unknown,Lo(t,p)));else if(He(E)){let L=t.params[M]?.type??o.unknown,J=rn(E);Kn(C(L,y),J)&&(a[M]=v(r,E,J,s));}else if(E.type==="ArrayExpression"||E.type==="ObjectExpression"||E.type==="ConditionalExpression"||E.type==="LogicalExpression"&&le(E)){let L=t.params[M]?.type??o.unknown,J=le(E),q=C(L,y);if(E.type==="ArrayExpression"&&St(q)){a[M]=Hs(E,q,s,{...r,inference:h}),k.push(M);return}let Z=L.t==="var"&&!L.bound;if(J?Z||!t.params[M]:Z||!fl(q,r.schemes)){J&&(a[M]=T(E,s,r));return}w.add(M),N(L)&&(a[M]=de(E,L,s,{...r,sink:H(),inference:h},true)),k.push(M);}});let R=d||Cs(t,aa$1(t,a,r.schemes,i).bindings,r.schemes);d&&Ou(e,t,R,r);for(let E of k)a[E]=Kd(n[E],C(t.params[E].type,R),s,r,false);Lu(e,t,a,R,r,n,o$1),n.forEach((E,M)=>{let L=t.params[M];E.type==="ObjectExpression"&&L&&!L.variadic&&!w.has(M)&&Fs(E,C(L.type,R),r);});let C$1=C(t.returns,Cs(t,R,r.schemes)),B=C$1.t==="union"?ia$1(C$1.of):C$1;if(c)for(let E of c.all)E.kind!=="type"&&u.report(E);return P(ba$1(B,r.schemes,void 0,0,E(B)))}function Tu(e,t,n){let a=T$1(e.typeParams);return a.size?(Z(a,t,e.returns,n),_(a,n)):{}}var Cs=(e,t,n)=>Y(e.typeParams??[],t,n);function Du(e,t,n$1,a){if(t.t!=="fn"||!e.typeParams?.some(i=>!m(n$1,i.name)))return n$1;let s=new Set;for(let i of t.params)for(let l of E(i.type))s.add(l);let r=Cs(e,n$1,a),o={...n$1};for(let i of e.typeParams){if(m(n$1,i.name)||!s.has(i.name))continue;let l=m(r,i.name);l&&n(o,i.name,l);}return o}function Lo(e,t){if(!e.typeParams?.some(a=>!m(t,a.name)))return t;let n$1={...t};for(let a of e.typeParams)m(t,a.name)||n(n$1,a.name,R);return n$1}function Ou(e,t,n,a){for(let s of t.typeParams??[]){let r=m(n,s.name);if(!s.bound||!r)continue;let o=C(s.bound,n);da$1(r,o,a.schemes)||a.sink.report(S.constraintViolation(e,r,o));}}function Mu(e,t,n,a,s){let r=wi(e.arguments,n,a),o=r.nodes,i=o.map(u=>Ei(u,n,a)),l=Ti(e),c=l?t.signatures.filter(u=>Di(u,l.length)):t.signatures;return l&&!c.length?(a.sink.report(Oi(e,t.signatures,l.length)),Wo(e,t.signatures,r,o,i,n,a,s,void 0)):Wo(e,c,r,o,i,n,a,s,l)}function Ru(e,t,n,a,s,r,o){if(!t.length)return e;let l=t.map(d=>{let p=H();return Yn(e,d,n,[...a],s,{...r,sink:p},o),p.all.filter(y=>y.kind==="type"&&y.severity==="error")}).filter(d=>d.length>0);if(!l.length)return e;let c=l.length===1||l.length>3?l[l.length-1]:l.some(d=>d.length>1)?l.reduce((d,p)=>p.length<=d.length?p:d):l.flat(),u=c[0].node;return c.every(d=>d.node===u)?u:e}function Ko(e,t,n,a,s,r){if(!t.length)return o.unknown;let o$1=Ai(t,n.length);return o$1.combined?o$1.sig.returns:Yn(e,o$1.sig,n,[...a],s,{...r,sink:H()},null)}function Ai(e,t){if(e.length===1||e.some(l=>l.typeParams?.length))return {sig:Cu(e,t),combined:false};let n=l=>l.params.length-(l.params[l.params.length-1]?.variadic?1:0),a=l=>{let c=l.params.findIndex(u=>u.optional||u.variadic);return c<0?l.params.length:c},s=Math.min(...e.map(a)),r=Math.max(...e.map(n)),o$1=[];for(let l=0;l<r;l++){let c=e.map(d=>ha(d,l)).filter(d=>d!==void 0),u=e.find(d=>l<n(d))?.params[l].name??`arg${l}`;o$1.push({name:u,type:ia$1(c),...l>=s?{optional:true}:{}});}let i=e.filter(l=>l.params[l.params.length-1]?.variadic).map(l=>ha(l,n(l))).filter(l=>l!==void 0);return i.length&&o$1.push({name:"args",type:o.array(ia$1(i)),variadic:true}),{sig:o.fn(o$1,o.intersection(e.map(l=>l.returns))),combined:true}}function Pu(e,t,n,a,s,r,o){if(!n.some(le))return {types:a,inner:[]};let i=H(),l=[...a];return Yn(e,t,n,l,s,{...r,sink:i},o),{types:l,inner:i.all.filter(c=>c.kind!=="type")}}function Cu(e,t){let n=e[0],a=-1;for(let s of e){let r=s.params.length;if(s.params.some(o=>o.variadic)||r>=t)return s;r>a&&(a=r,n=s);}return n}function Wo(e,t,n,a,s,r,o,i,l){let c={t:"overload",signatures:t},u=g=>n.spread?xu(g,a.length):Mi(g,a.length),d=c.signatures.filter(u);if(d.length>1)for(let g of d){let N=H(),w=Yn(e,g,a,[...s],r,{...o,sink:N},n.spread,i,l);if(!N.all.some(k=>k.kind==="type"&&k.severity==="error"))return N.all.forEach(k=>o.sink.report(k)),w}let p=d.length>1?void 0:c.signatures.find(g=>u(g)&&Uo(g,s,o));if(p||(d.length===1?p=d[0]:c.signatures.length===1&&(p=c.signatures[0])),!p){let g=n.spread?null:Ri(e,c.signatures,a.length,a),N=d.length===1||d.length>3?d[d.length-1]:d[0],w=Pu(e,g||!N?Ai(c.signatures,a.length).sig:d.find(k=>Uo(k,s,o))??N,a,s,r,o,n.spread);o.sink.report(g??S.noMatchingOverload(Ru(e,d,a,s,r,o,n.spread),c,w.types));for(let k of w.inner)o.sink.report(k);return Ko(e,c.signatures,a,s,r,o)}let{value:y,reported:m}=si(o,g=>Yn(e,p,a,s,r,g,n.spread,i,l)),h=m.some(g=>g.kind==="type"&&g.severity==="error");return c.signatures.length>1&&h?Ko(e,c.signatures,a,s,r,o):y}function Iu(e,t,n,a){let s=te(t,yi(n,a,e[0]));if(s===void 0)return n.sink.report(S.unknownName(a,e[0])),o.any;let r=e.slice(1),o$1=r.length?ta$1(s,r,n.schemes)?.type:s;return o$1?o$1.t==="literal"?o.literal(o$1.value):o$1:(n.sink.report(S.noSuchMember(a,s,r.join("."))),o.any)}function Qn(e,t,n$1,a,s){let r=o$1=>{if(Array.isArray(o$1)){let u=false,d=o$1.map(p=>{let y=r(p);return y!==p&&(u=true),y});return u?d:o$1}if(!o$1||typeof o$1!="object")return o$1;let i=o$1;if(i.t==="typeQuery")return Iu(i.path,t,n$1,a);if(i.t==="apply"&&typeof i.name=="string"){if(s&&n$1.namespaces.byPath.size>0&&i.name.includes(".")&&!("key"in mn(i.name,null,n$1.namespaces,[n$1.envNamespaces])))return o.any;let u=Array.isArray(i.args)?i.args:void 0,d=u&&r(u);u&&d&&n$1.resolvedTypeArgs.set(u,d);let p=s&&fi(Be(n$1.bounds,a),a,i.name,n$1.namespaces,n$1.globalKeys)||i.name;u&&p!==i.name&&n$1.writtenTypeRefs.set(u,{key:p,args:d??u}),Rt(p,t,n$1,a);let y=oi(p,n$1.schemes,n$1.nominals);if(!y)return o.any;if(d&&su(y,d))return o.any;if(d?.length===1&&ju(p,n$1.nominals))return o.array(d[0],p==="ReadonlyArray");if(d&&d!==u||p!==i.name){let m={};for(let h of Object.keys(i))n(m,h,h==="args"&&d?d:h==="name"?p:i[h]);return m}return i}if(ui(i,n$1.schemes)){let u=i;return n$1.sink.report(S.noSuchMember(a,u.obj,di(u.key))),o.any}if(i.t==="union"&&Array.isArray(i.of)){let u=i.of,d=u.map(m=>r(m)),p=o.union(d);return p.t==="union"&&p.of.length===u.length&&p.of.every((m,h)=>m===u[h])?i:p}if(i.t==="intersection"&&Array.isArray(i.of)){let u=i.of,d=u.map(m=>r(m)),p=o.intersection(d);return p.t==="intersection"&&p.of.length===u.length&&p.of.every((m,h)=>m===u[h])?i:p}if(i.t==="tuple"&&Array.isArray(i.elements)){let u=i.elements,d=u.map(m=>r(m)),p=o.tuple(d,i.flags,i.readonly);return d.every((m,h)=>m===u[h])&&p.elements.every((m,h)=>m===d[h])?i:p}let l=false,c={};for(let u of Object.keys(i)){let d=r(i[u]);d!==i[u]&&(l=true),n(c,u,d);}return l?c:i};return r(e)}var ju=(e,t)=>(e==="Array"||e==="ReadonlyArray")&&m(t,e)===m(st,e);function Rt(e,t,n$1,a){if(n$1.resolvedSchemes.has(e)||!n$1.programAliases.has(e))return;let s=m(n$1.schemes,e);if(!s)return;n$1.resolvedSchemes.add(e);let r=Qn(s.body,t,n$1,a,false);r!==s.body&&n(n$1.schemes,e,{...s,body:r});}function Fu(e,t,n,a,s){let r={...n,sink:H(),resolvedTypeArgs:new WeakMap,resolvedSchemes:new Set(Object.keys(n.schemes))},o=Qn(e,t,r,a,false);return r.sink.hasErrors()?e:s?o:ba$1(o,n.schemes)}var wt=(e,t,n)=>{let a=Qt(e);return a===void 0?a:Qn(a,t,n,e,true)},Vu=(e,t,n)=>{let a=Zt(e);return a===void 0?a:Qn(a,t,n,e,true)},Ti=e=>{let t=e.typeArguments;return t?.length?t:void 0},Di=(e,t)=>{let{min:n,max:a}=F(e.typeParams??[]);return t>=n&&t<=a};function Oi(e,t,n){if(t.length===1){let{min:r,max:o}=F(t[0].typeParams??[]);return S.wrongTypeArgumentCount(e,r<o?`${r}-${o}`:r,n)}let a=-1/0,s=1/0;for(let r of t){let{min:o,max:i}=F(r.typeParams??[]);o>n?s=Math.min(s,o):i<n&&(a=Math.max(a,i));}return a!==-1/0&&s!==1/0?S.noOverloadTypeArgumentCount(e,n,a,s):S.wrongTypeArgumentCount(e,a===-1/0?s:a,n)}function $u(e,t,n,a){let s=t.typeParams??[],r=G$1(s,n.slice(0,s.length));for(let o of ii(s,n,a.schemes))a.sink.report(S.constraintViolation(e,o.arg,o.expected));return r}function xu(e,t){let n=0,a=false;for(let s of e.params)s.variadic?a=true:s.optional||n++;return t>=n&&(a||t<e.params.length)}function Mi(e,t){let n=0;for(let a of e.params){if(a.variadic)return t>=n;a.optional||n++;}return t>=n&&t<=e.params.length}function Ri(e,t,n,a){let s=Array.isArray(t)?t:[t];if(!s.length||s.some(c=>Mi(c,n)))return null;let r=s.some(c=>c.params.some(u=>u.variadic)),o=Math.min(...s.map(c=>c.params.filter(u=>!u.optional&&!u.variadic).length)),i=Math.max(...s.map(c=>c.params.length)),l=r?`${o}`:o<i?`${o}-${i}`:`${o}`;return n<o?S.argumentArity(e,l,n,"missing",r):S.argumentArity(a[i]??e,l,n,"excess",r)}function Uo(e,t,n){let a=aa$1(e,t,n.schemes).bindings;for(let s=0;s<e.params.length;s++){let r=e.params[s];if(r.variadic){let o$1=C(r.type,a),i=o$1.t==="array"?o$1.items:o.unknown;for(let l=s;l<t.length;l++)if(!da$1(t[l],i,n.schemes))return false;return true}if(s>=t.length){if(!r.optional)return false;continue}if(!da$1(t[s],C(r.type,a),n.schemes))return false}return true}function Lu(e,t,n,a,s,r=e.arguments??[],o$1=null){let i=c=>r[c]??e;for(let c=0;c<t.params.length;c++){let u=t.params[c];if(u.variadic){let p=C(u.type,a),y=p.t==="array"?p.items:o.unknown;for(let m=c;m<n.length;m++)da$1(n[m],y,s.schemes)||s.sink.report(S.notAssignable(i(m),n[m],y,s.schemes));break}let d=C(u.type,a);c>=n.length||da$1(n[c],d,s.schemes)||s.sink.report(S.notAssignable(i(c),n[c],d,s.schemes));}let l=t.params.find(c=>c.variadic);if(o$1){let c=n.length,u=t.params.filter(d=>!d.optional&&!d.variadic).length;if(!(c>=u&&(l||c<t.params.length))){s.sink.report(S.spreadArgument(o$1.node));return}if(l){let d=C(l.type,a),p=d.t==="array"?d.items:o.unknown;da$1(o$1.elem,p,s.schemes)||s.sink.report(S.notAssignable(o$1.node,o$1.elem,p,s.schemes));}return}}function Pt(e,t,n$1){if(e.t==="object"){let a=w(e.props,t);return a?a.optional?q(a.type):a.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let a=e.of.map(s=>Pt(J(s,n$1),t,n$1)).filter(s=>s!==void 0);return a.length===0?void 0:a.length===1?a[0]:p({t:"intersection",of:a})}if(e.t==="union")return Pi(e.of,t,n$1);if(Ks(e)){let a=e.over.t==="keyof"?o.union([o.string,o.number]):J(e.over,n$1);if(!da$1(o.literal(t),a,n$1))return;let s={};return n(s,e.key,o.literal(t)),C(e.body,s)}}var Ks=e=>e.t==="mapped"&&E(e.over).size>0;function Pi(e,t,n){let a=e.map(s=>Pt(J(s,n),t,n)).filter(s=>s!==void 0);return a.length?ia$1(a):void 0}function Is(e,t,n){let a=J(e,n);if(a.t==="object")return t&&a.index?.key==="number"||a.index?.key==="string"?a.index.value:void 0;if(a.t==="union"||a.t==="intersection"){let s=a.of.map(r=>Is(r,t,n)).filter(r=>r!==void 0);return s.length?a.t==="union"?ia$1(s):o.intersection(s):void 0}}function Ku(e,t,n){if(!e.computed){let l=Ve(e);return {name:l,bindable:l!==null,numeric:l!==null&&y(l)}}let a=e.key,s=ce(T(a,t,n),n.schemes),r=s.t==="literal"&&(typeof s.value=="string"||typeof s.value=="number")?String(s.value):null,o=s.t==="number"||s.t==="literal"&&typeof s.value=="number",i=r!==null&&(Ws(a)||Us(a));return {name:r,bindable:i,numeric:o}}function ba(e){if(!e.computed)return Ve(e);let t=e.key;if(!Ws(t))return null;let n=Ae(t);if(n!==null)return n;if(t.type==="Literal")return String(t.value);let a=t;return `${a.operator}${String(a.argument.value)}`}function Ci(e,t){let n=new Set,a=new Set;for(let s of e.properties){if(s.type==="SpreadElement")continue;let r=s,o=r.key;if(!r.computed&&o.type==="Identifier"){let l=o.name;n.has(l)?t.sink.report(S.duplicateKey.strict(o)):n.add(l);}let i=Wu(r);i!==null&&(a.has(i)?t.sink.report(S.duplicateKey.identifier(r.computed?r:o,Uu(r))):a.add(i));}}function Ii(e,t,n,a){let s=t.key;if(n===null||!t.computed||Ws(s)||!Us(s))return;let r=e.properties.find(o=>o.type==="Property"&&ba(o)===n);r&&(a.sink.report(S.duplicateKey.alsoDeclared(r.computed?r:r.key,n)),a.sink.report(S.duplicateKey.lateBound(t,n)));}function Wu(e){return e.computed?e.key.type==="UnaryExpression"?null:ba(e):Ve(e)}function Uu(e){let t=e.key;if(e.computed)return il(t,ba(e)??"");if(t.type==="Identifier")return t.name;let n=t.value;return typeof n=="string"?JSON.stringify(n):String(n)}var Ws=e=>{if(Ae(e)!==null)return true;if(e.type==="Literal"){let t=e.value;return typeof t=="string"||typeof t=="number"}if(e.type==="UnaryExpression"){let t=e;return (t.operator==="-"||t.operator==="+")&&t.argument.type==="Literal"&&typeof t.argument.value=="number"}return false},Us=e=>e.type==="Identifier"||e.type==="MemberExpression"&&!e.computed&&!e.optional&&Us(e.object),zs=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(zs),zo=new WeakMap;function zu(e,t,n){let a=zo.get(n);if(a)return a;let s=new Set;for(let o of e)if(o.t==="object")for(let i of Object.keys(o.props))s.add(i);let r=new Set;for(let o of s){let l=e.map(u=>Pt(u,o,t)).filter(u=>u!==void 0);if(!l.some(zs))continue;l.length===e.length&&l.every(u=>fa$1(u,l[0]))||r.add(o);}return zo.set(n,r),r}var ji=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&ji(e.object);function Fi(e,t,n,a,s){let r=zu(t,a,s),o=new Set;if(!r.size)return {chosen:t,ignored:o};let i=[];for(let u of e.properties){if(u.type!=="Property")continue;let d=u,p=ba(d);if(p===null||!r.has(p)||!ji(d.value))continue;let y=n(d);y&&zs(y)&&i.push([p,y]);}let l=t.map(()=>1);for(let[u,d]of i){let p=false;t.forEach((y,m)=>{if(l[m]!==1)return;let h=Pt(y,u,a);h!==void 0&&(da$1(d,h,a)?p=true:l[m]=2);}),t.forEach((y,m)=>{l[m]===2&&(l[m]=p?0:1);}),p||o.add(u);}let c=t.filter((u,d)=>l[d]===1);return {chosen:c.length?c:t,ignored:o}}function qo(e,t,n$1,a,s,r,o=false){let i={},l={};Ci(e,s);let c=new Map;for(let[u,d]of e.properties.entries()){let p=d;if(p.type==="SpreadElement"){let k=T(p.argument,a,s);if(nl(e,u,k,a,s))return {checked:i,narrowed:l,refused:true};tl(c,k,p,s);let R=J(k,s.schemes);if(R.t==="object")for(let[C,B]of Object.entries(R.props))n(i,C,B),n(l,C,B);continue}let y=p,{name:m,bindable:h,numeric:g}=Ku(y,a,s);Ii(e,y,m,s);let N=h?t(m):n$1(g),w=N?de(y.value,N,a,s,r):L(T(y.value,a,s));m!==null&&(n(i,m,{type:o?w:N??w}),n(l,m,{type:w}),c.set(m,p)),v(s,p,w,a);}return {checked:i,narrowed:l,refused:false}}function js(e,t){let n=J(e,t);if(n.t==="conditional"){let a=ga$1(n,t);return a?js(a,t):n}if(n.t==="union"&&n.of.some(a=>a.t==="conditional")){let a=n.of.map(s=>{if(s.t!=="conditional")return s;let r=ga$1(s,t);return r?js(r,t):s});return J(o.union(a),t)}return n}function de(e,t,n,a,s=false){let r=a.inference,o$1=r?C(t,r.returnMapper):t,i=u=>r?C(u,r.nonFixing):u,l=js(o$1,a.schemes);switch(He(e)?"Literal":e.type){case "Literal":{let u=rn(e);return da$1(u,t,a.schemes)||a.sink.report(S.notAssignable(e,u,t,a.schemes)),v(a,e,Sn(e),n),s?Kn(o$1,u)?u:L(Sn(e)):t}case "ArrayExpression":{if(St(l)){let u=Hs(e,l,n,a);return da$1(u,t,a.schemes)||Ld(e,u,l,n,a)||a.sink.report(S.notAssignable(e,u,t,a.schemes)),v(a,e,u,n)}if(l.t==="array"){let u=[];for(let p of e.elements){if(!p)continue;let y=p;if(y.type==="SpreadElement"){let m=de(y.argument,t,n,a,s);m.t==="array"&&u.push(m.items);}else u.push(de(y,l.items,n,a,s));}let d=s&&u.length>0?o.array(ia$1(u)):i(t);return v(a,e,d,n)}break}case "ObjectExpression":{if(l.t==="object"||l.t==="intersection"||Ks(l)){let{value:{checked:u,narrowed:d,refused:p},reported:y}=si(a,N=>qo(e,w=>Pt(l,w,a.schemes),w=>Is(l,w,a.schemes),n,N,s));if(p)return v(a,e,o.any,n);let m=y.some(N=>N.kind==="type"&&N.severity==="error"),h=Fs(e,t,a),g={t:"object",props:u};return !h&&!m&&!da$1(g,t,a.schemes)&&a.sink.report(S.notAssignable(e,g,t,a.schemes)),v(a,e,s?{t:"object",props:d}:t,n)}if(l.t==="union"){let u=l.of.filter(R=>R.t==="object"||R.t==="intersection");if(!u.length)break;let d=e,{chosen:p,ignored:y}=Fi(d,u,R=>T(R.value,n,{...a,sink:H()}),a.schemes,t),m=a.sink.reported,{checked:h,narrowed:g,refused:N}=qo(d,R=>Pi(y.has(R)?u:p,R,a.schemes),R=>Is({t:"union",of:p},R,a.schemes),n,a,s,true);if(N)return v(a,e,o.any,n);let w=Fs(d,t,a),k={t:"object",props:h};return !w&&a.sink.reported===m&&!da$1(k,t,a.schemes)&&a.sink.report(S.notAssignable(e,k,t,a.schemes)),v(a,e,s?{t:"object",props:g}:t,n)}break}case "ArrowFunctionExpression":{let u=_s(r?t.t==="var"?C(t,r.nonFixing):t:l,e,a.schemes),d=u&&r?r.fixing(u):u;if(d){let p=qs(e,n,a,d);return da$1(p,t,a.schemes)||a.sink.report(S.notAssignable(e,p,t,a.schemes)),v(a,e,p,n),s?p:i(t)}break}case "ConditionalExpression":{let u=e;Ys(u.test,u.consequent,T(u.test,n,a),a);let d=Se(u.test,n,a.schemes,a.keyOf),p=a.unreachable.value;a.unreachable.value=p||Oe(u.test);let y=de(u.consequent,t,z(n,d.then),a,s);a.unreachable.value=p||ue(u.test);let m=de(u.alternate,t,z(n,d.else),a,s);return a.unreachable.value=p,v(a,e,s?ia$1([y,m]):t,n)}case "Placeholder":return v(a,e,i(t),n)}let c=T(e,n,a,r?C(t,r.outer):t);return da$1(c,t,a.schemes)||a.sink.report(S.notAssignable(e,c,t,a.schemes)),v(a,e,c,n)}function qs(e,t,n,a){if(n.skipContextSensitive){if(le(e))return R;n={...n,skipContextSensitive:void 0};}let s=!e.async&&Rs(e,n),r=n.flow.size?new Map(n.flow):null,o=r?z(t,Object.fromEntries(r)):t;r&&n.flow.clear();let i=!Rs(e,n);i&&n.fnDepth.value++;let l=n.unreachable.value,c=l&&!s?vs(o,n.schemes):o;s||(n.unreachable.value=false),n.jumps.push(null);try{return Ju(e,c,n,a)}finally{n.jumps.pop(),n.unreachable.value=l,i&&n.fnDepth.value--;let u=s?qu(e,o,n):null;if(n.flow.clear(),r)for(let[d,p]of r)n.flow.set(d,p);if(u)for(let[d,p]of u)De(t,d,n.schemes)!==void 0&&Me(d,p,n);}}function qu(e,t,n){let a=e.body;return a.type!=="BlockStatement"?new Map(n.flow):Ke(a,t,n).types}function _s(e,t,n){let a=o=>{let i=J(o,n);return i.t==="fn"&&!_u(i,t)?i:void 0},s=J(e,n);if(s.t!=="union")return a(s);let r;for(let o of s.of){let i=a(o);if(i)if(!r)r=[i];else if(Gu(r[0],i,n))r.push(i);else return}if(r)return r.length===1?r[0]:o.fn([...r[0].params],ia$1(r.map(o=>o.returns)),r[0].typeParams)}function _u(e,t){let n=0;for(let a of t.params){if(a.type==="AssignmentPattern"||a.type==="RestElement"||a.optional)break;n++;}return !e.params.some(a=>a.variadic)&&e.params.length<n}function Gu(e,t,n){return e.params.length!==t.params.length||(e.typeParams?.length??0)!==(t.typeParams?.length??0)?false:e.params.every((a,s)=>{let r=t.params[s];return !!a.optional==!!r.optional&&!!a.variadic==!!r.variadic&&fa$1(a.type,r.type,n)})}function Ju(e,t,n$1,a){let s=a?_s(a,e,n$1.schemes):void 0,r$1=s?.typeParams?.length&&e.params.some(B=>!Ss(B))?s.typeParams:void 0,o$1=ea(e)??r$1,i=B=>o$1?{...B,typeParams:o$1}:B,l={},c=Rs(e,n$1),u=e.params.map((B,E)=>{let M=B,L=Object.keys(l).length?We(t,l,n$1,e):t,J=s?ha(s,E):void 0;if(M.type==="RestElement"){let Re=M.argument,Ue=wt(Re,L,n$1),pe=ge(Re);!Ue&&!s&&!c&&pe&&n$1.sink.report(S.implicitAny.rest(M,pe));let fe=Ue??(s?r(s,E):o.array(o.any));return pe?(cn(pe,Re,n$1),n(l,pe,fe)):Le(Re,fe,l,L,n$1,{annotated:Ue!==void 0,mutable:true,declaration:e}),n$1.overlay.set(Re,{type:fe,scope:L}),n$1.overlay.set(M,{type:fe,scope:L}),{name:pe??`arg${E}`,type:fe,variadic:true}}if(M.type==="AssignmentPattern"){let Re=M.left,Ue=wt(Re,L,n$1),pe=Ue??J;wd(M,pe??o.unknown,l,L,n$1,{annotated:Ue!==void 0,mutable:true,declaration:e});let fe=ge(Re),Tn=fe?m(l,fe):void 0,b=pe??Tn??o.unknown,P=b.t==="unknown"?b:ia$1([b,o.undefined]);return fe&&Tn&&n(l,xe(fe),Tn),n$1.overlay.set(M,{type:P,scope:L}),{name:fe??`arg${E}`,type:P,optional:true}}let q=ge(M),Z=wt(M,L,n$1),ke=Z===void 0&&J===void 0&&!c;ke&&q&&n$1.sink.report(S.implicitAny.parameter(M,q));let un=Z??J??(ke&&M.type!=="Identifier"?Xs(M,L,n$1):o.any),Ct=M.type==="Identifier"&&(!!M.optional||Z===void 0&&!!s?.params[E]?.optional),An=Ct&&un.t!=="unknown"?ia$1([un,o.undefined]):un;return q?(cn(q,M,n$1),n(l,q,An),n(l,xe(q),An)):M.type!=="Identifier"&&Le(M,un,l,L,n$1,{annotated:Z!==void 0,mutable:true,declaration:e}),n$1.overlay.set(M,{type:An,scope:L}),Ct?{name:q??`arg${E}`,type:An,optional:true}:{name:q??`arg${E}`,type:un}}),d=false;u.forEach((B,E)=>{B.optional?d=true:!B.variadic&&d&&n$1.sink.report(S.requiredAfterOptional(e.params[E]));});let p=We(t,l,n$1,e),y=e.body,m$1=Vu(e,t,n$1),h=e.returnGuard,g=h?{param:h.param,type:Qn(h.type,t,n$1,e,true)}:void 0;if(g){let B=u[g.param];B&&!da$1(g.type,B.type,n$1.schemes)&&n$1.sink.report(S.notAssignable(e,g.type,B.type,n$1.schemes));}let N=B=>g?{...B,guard:g}:B;if(y.type!=="BlockStatement"&&m$1){let B=e.async?bn(m$1):m$1;de(y,B,p,n$1);let E=e.async?bt(m$1):m$1;return v(n$1,e,N(i({t:"fn",params:u,returns:E})),t)}let w=m$1??s?.returns,k=w&&e.async?bn(w):w,R=y.type==="BlockStatement"?v(n$1,y,xi(y,p,n$1,k),p):T(y,p,n$1),C=e.async?bt(R):R;if(m$1){let B=e.async?bn(m$1):m$1,E=e.async?R:C;da$1(E,B,n$1.schemes)||n$1.sink.report(S.notAssignable(y,C,m$1,n$1.schemes));let M=e.async?bt(m$1):m$1;return v(n$1,e,N(i({t:"fn",params:u,returns:M})),t)}return v(n$1,e,i({t:"fn",params:u,returns:Q$1(O(C))}),t)}function Jn(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(t=>t.type==="RestElement"?Jn(t.argument):Jn(t.value));case "ArrayPattern":return e.elements.flatMap(t=>t?t.type==="RestElement"?Jn(t.argument):Jn(t):[]);case "AssignmentPattern":return Jn(e.left);default:return []}}function Vi(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(t=>Jn(t.id));if(e.type==="FunctionDeclaration"){let t=e.id;return t?[t]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?Vi(e.declaration):[]}var $i=Object.freeze({t:"undefined"}),_o=e=>e===$i;function xi(e,t,n,a){let{returns:s}=Ot(e.body,t,n,a),r=!ie(e,En(n))||s.some(_o),o$1=s.filter(i=>!_o(i));return o$1.length===0?r?o.void:o.union([]):ia$1(r?[...o$1,o.undefined]:o$1)}var Li=(e,t)=>ye(e)?void 0:te(t,xe(e)),Ki=new WeakMap,Xu=(e,t)=>{let n=Object.freeze({t:"undefined"});return Ki.set(n,{node:e,depth:t.fnDepth.value}),n},Wi=new WeakMap,Ui=(e,t)=>{let n=Object.freeze({t:"undefined"});return Wi.set(n,{declared:e,depth:t.fnDepth.value}),n};function zi(e,t){let n=J(e,t.schemes);return n.t==="any"||n.t==="unknown"||n.t==="void"?false:!$e(n).some(a=>a.t==="undefined")}function Yu(e,t,n){let a=So(n,e,aa(e)),s=a&&Wi.get(a);if(s)return $e(t).some(r=>r.t==="undefined")?s:void 0}function Hu(e,t,n,a){let s=te(n,Bt(t)),r=s&&Ki.get(s);if(!r||r.depth>=a.fnDepth.value)return false;let o=e.name;return a.sink.report(S.implicitAny.evolving(r.node,o)),a.sink.report(S.implicitAny.variable(e,o)),true}var ca=(e,t,n)=>!ye(e)&&(n.evolving.has(e)||te(t,xe(e))!==void 0);function ua(e,t,n,a,s,r){if(t)return N(a);if(r.evolving.has(e))return M(n);let o=Li(e,s);return o===void 0?n:o.t==="union"||o.t==="boolean"?ia(o,n,r.schemes):o}function Me(e,t,n){if(n.unreachable.value)return;let a=e+".";for(let s of n.flow.keys())s.startsWith(a)&&n.flow.delete(s);n.flow.set(e,t);}var Na=(e,t)=>t.flow.size?t.flow.get(e):void 0;function Qu(e,t){let n$1={...e};for(let a of Object.keys(e)){if(a.endsWith("#"))continue;let s=m(e,xe(a))??m(e,a);zi(s,t)&&(n(n$1,a,ia$1([m(e,a),o.undefined])),n(n$1,aa(a),Ui(s,t)));}return n$1}var Go=(e,t,n)=>Na(e,n)??De(t,e,n.schemes);function Zu(e,t){for(let n=e.jumps.length-1;n>=0;n--){let a=e.jumps[n];if(a===null)return;if(!t||a.loop)return a}}function Ds(e,t,n){e.jumps.push(t);try{return n()}finally{e.jumps.pop();}}function da(e,t){let n=new Map(e.flow),a=t(),s=new Map;for(let[r,o]of e.flow)n.get(r)!==o&&s.set(r,o);e.flow.clear();for(let[r,o]of n)e.flow.set(r,o);return {value:a,effect:s}}function Jo(e,t){let n=new Set;for(let a of e)if(a.effect)for(let s of a.effect.keys())n.add(s);for(let a of n){let s=[];for(let r of e){let o=r.effect?.get(a)??t.flow.get(a)??De(r.scope,a,t.schemes);o!==void 0&&s.push(o);}s.length&&Me(a,ia$1(s),t);}}function qi(e,t){if(e.type!=="Identifier")return false;let n=Be(t.bounds,e),a=n&&jn(n,e);if(!a){let o=e.name;return t.envNamespaces.byPath.get(o)?.some(i=>i.instantiated)?(t.sink.report(S.assignToConst(e,o,"not-a-variable")),t.invalidTargets.add(e),true):false}let s=a&&Kt(a);if(!s||s.flags&(Ge.FunctionScopedVariable|Ge.BlockScopedVariable|Ge.Alias))return false;let r=e.name;return t.sink.report(S.assignToConst(e,r,"not-a-variable")),t.invalidTargets.add(e),true}function Gs(e,t,n){if(e.type==="MemberExpression"){let a=v(n,e,bi(e,t,n,true),t);return pa(e,n,"write")&&n.invalidTargets.add(e),a}if(e.type==="Identifier"){let a=n.keyOf(e);if(In(a)&&hi(e,n))return v(n,e,o.any,t);if(qi(e,n))return v(n,e,o.any,t);let s=Li(a,t);if(s!==void 0)return v(n,e,s,t);if(n.evolving.has(a)){let r=Na(a,n)??te(t,a);if(r!==void 0)return v(n,e,r,t)}}return T(e,t,n)}function pa(e,t,n){let a=t.overlay.get(e.object)?.type;if(!a)return false;let s=ed(e,t);if(!s)return false;let r=false,o=false;for(let i of s){let l=ua$1(a,i,t.schemes);if(l==="property"){if(r=true,n==="delete"){t.sink.report(S.readonlyDelete(e));break}t.sink.report(S.readonlyProperty(e.property,"name"in i?i.name:""));}else l==="index"&&!o&&(o=true,t.sink.report(S.readonlyWrite(e,a)));}return r&&n==="write"}function ed(e,t){let n=e.property;if(!e.computed)return [{name:n.name,element:false}];let a=t.overlay.get(n)?.type;if(!a)return null;let s=a.t==="union"?a.of:[a],r=[];for(let o of s)if(o.t==="literal"&&typeof o.value!="boolean")r.push({name:String(o.value),element:true});else if(o.t==="string"||o.t==="number")r.push({base:o.t});else return null;return r}function Xo(e,t,n){if(qi(e,n))return v(n,e,o.any,t);let a=T(e,t,n),s=N(a);return s===a?a:v(n,e,s,t)}function kn(e,t,n,a){switch(e.type){case "ArrayExpression":{let s=Ba(t,e,a);e.elements.forEach((r,o)=>{if(!r)return;let i=r;if(i.type==="SpreadElement")kn(i.argument,rl(t,o,s,a.schemes),n,a);else {let l=Yo(i),c=el(t,o,l?i.left:i,l,s,a);kn(i,l?x(c).type:c,n,a);}});return}case "ObjectExpression":{let s=[];for(let r of e.properties){let o$1=r;if(o$1.type==="SpreadElement"){kn(o$1.argument,t.t==="any"?o.any:Js(t,s,a.schemes),n,a);continue}let i=Ve(o$1);i!=null&&s.push(i),kn(o$1.value,i!=null?Qi(t,i,o$1.key,a):o.any,n,a);}return}default:{if(Yo(e)){T(e,n,a),kn(e.left,t,n,a);return}let s=Gs(e,n,a);!a.invalidTargets.has(e)&&!_i(e,a)&&!da$1(t,s,a.schemes)&&a.sink.report(S.notAssignable(e,t,s,a.schemes)),Gi(e,t,s,n,a);}}}var Yo=e=>e.type==="AssignmentExpression"&&e.operator==="=",_i=(e,t)=>e.type==="Identifier"&&t.evolving.has(t.keyOf(e));function Gi(e,t,n,a,s){let r=se(e,s.keyOf);r!==null&&ca(r,a,s)?Me(r,ua(r,false,t,n,a,s),s):r!==null&&ye(r)&&Me(r,n,s);}function nd(e,t,n,a,s){if(e==="ForOfStatement"){kn(t,n,a,s);return}if(t.type==="ArrayExpression"||t.type==="ObjectExpression"){s.sink.report(S.forInDestructuring(t));return}let r=Gs(t,a,s);!s.invalidTargets.has(t)&&!_i(t,s)&&!da$1(td(n,s),r,s.schemes)&&s.sink.report(S.forInTarget(t)),Gi(t,o.string,r,a,s);}function td(e,t){let n=K$1(o.keyof(e),t.schemes),s=(n.t==="union"?n.of:[n]).filter(r=>r.t==="string"||r.t==="literal"&&typeof r.value=="string");return s.length?o.union(s):o.string}function ad(e,t,n,a){let s=e.right,r=T(s,n,a);return ll(e.operator.slice(0,-1),t,r,e,e.left,s,a)}var Ne=new Map,Ho={types:Ne,exits:true},En=e=>t=>e.switches.get(t)?.exhaustive===true,Bn={breaks:[],continues:[]},fa=(e,t)=>t.size?z(e,Object.fromEntries(t)):e;function Hn(e,t,n){if(e.length===1)return e[0];let a=new Set;for(let r of e)for(let o of r.keys())a.add(o);let s=new Map;for(let r of a){let o=De(t,r,n.schemes),i=[];for(let l of e){let c=l.get(r)??o;if(c===void 0)break;i.push(c);}i.length===e.length&&s.set(r,ia$1(i));}return s}function sd(e,t,n,a){let s=new Map(Object.entries(e));if(!t)return s;for(let r of new Set([...s.keys(),...t.keys()])){let o=De(n,r,a.schemes),i=s.get(r)??o,l=t.get(r)??o;i&&l?s.set(r,ia$1([i,l])):l&&s.set(r,l);}return s}function Dt(e,t,n,a){let s=t,r=[],o=[];for(let i of e){let l=kt(i,s,n,a);if(r.push(...l.breaks),o.push(...l.continues),s=l.end,!s)break}return {end:s,breaks:r,continues:o}}function kt(e,t,n,a){switch(e.type){case "BreakStatement":return {end:null,breaks:[t],continues:[]};case "ContinueStatement":return {end:null,breaks:[],continues:[t]};case "BlockStatement":return Dt(e.body,t,n,a);case "IfStatement":{let s=e,r=Oe(s.test)?{end:null,...Bn}:kt(s.consequent,t,n,a),o=ue(s.test)?{end:null,...Bn}:s.alternate?kt(s.alternate,t,n,a):{end:t,...Bn},i=[r.end,o.end].filter(l=>l!==null);return {end:i.length?Hn(i,n,a):null,breaks:[...r.breaks,...o.breaks],continues:[...r.continues,...o.continues]}}case "TryStatement":{let s=e,r=[kt(s.block,t,n,a)];s.handler&&r.push(kt(s.handler.body,t,n,a));let o=r.map(c=>c.end).filter(c=>c!==null),i=r.flatMap(c=>c.breaks),l=r.flatMap(c=>c.continues);if(s.finalizer){let c=Ke(s.finalizer,fa(n,t),a);if(c.exits)return {end:null,...Bn};let u=d=>{if(!c.types.size)return d;let p=new Map(d);for(let[y,m]of c.types)p.set(y,m);return p};o=o.map(u),i=i.map(u),l=l.map(u);}return {end:o.length?Hn(o,n,a):null,breaks:i,continues:l}}case "SwitchStatement":{let s=a.switches.get(e),r=o=>{if(!o.size)return t;let i=new Map(t);for(let[l,c]of o)i.set(l,c);return i};return {end:ie(e,En(a))?null:r(s?.after??Ne),breaks:[],continues:(s?.continues??[]).map(r)}}default:{let s=Ke(e,fa(n,t),a);if(s.exits)return {end:null,...Bn};if(!s.types.size)return {end:t,...Bn};let r=new Map(t);for(let[o,i]of s.types)r.set(o,i);return {end:r,...Bn}}}}function rd(e,t,n){let a=n.switches.get(e);if(!a||!a.after.size||ie(e,En(n)))return t;let s=z(t,Object.fromEntries(a.after));for(let r of a.after.keys())ye(r)||(s=ws(s,r,n.schemes));return s}function Ke(e,t,n){switch(e.type){case "BlockStatement":{let a=Ne,s=t;for(let r of e.body){let o=Ke(r,s,n);if(o.types.size){let i=new Map(a);for(let[l,c]of o.types)i.set(l,c);a=i,s=z(s,Object.fromEntries(o.types));}if(o.exits)return {types:a,exits:true}}return {types:a,exits:false}}case "IfStatement":return {types:Xi(e,t,n),exits:on(e,En(n))};case "BreakStatement":case "ContinueStatement":return {types:Ne,exits:true};case "SwitchStatement":return {types:n.switches.get(e)?.after??Ne,exits:ie(e,En(n))};case "ReturnStatement":case "ThrowStatement":return {types:Ne,exits:true};case "TryStatement":{let a=e,s=[],r=Ke(a.block,t,n);if(r.exits||s.push(r),a.handler){let i=Ke(a.handler.body,t,n);i.exits||s.push(i);}let o=Ji(s,t,n);if(a.finalizer){let i=o.size?z(t,Object.fromEntries(o)):t,l=Ke(a.finalizer,i,n);if(l.types.size){let c=new Map(o);for(let[u,d]of l.types)c.set(u,d);o=c;}}return {types:o,exits:ie(e,En(n))}}default:return {types:n.stmtFlow.get(e)??Ne,exits:false}}}function Ji(e,t,n){let a=new Set;for(let r of e)for(let o of r.types.keys())a.add(o);if(!a.size)return Ne;let s=new Map;for(let r of a){let o=De(t,r,n.schemes),i=[];for(let l of e){let c=l.types.get(r)??o;c!==void 0&&i.push(c);}i.length&&o!==void 0&&s.set(r,ia$1(i));}return s}function Xi(e,t,n){let a=Oe(e.test)?Ho:Ke(e.consequent,t,n),s=ue(e.test)?Ho:e.alternate?Ke(e.alternate,t,n):{types:Ne,exits:false};if(!a.types.size&&!s.types.size)return Ne;let r=[a,s].filter(o=>!o.exits);return r.length?Ji(r,t,n):Ne}var od=5;function Qo(e,t,n$1,a,s){let r=new Map(n$1.flow),o=new Map,i=t,l=null;for(let y=0;y<od;y++){let m=H(),h={...n$1,sink:m},g=s(i,h);Zo(e,r,n$1);let N=Dt([e],new Map,i,h),w=N.end?[N.end,...N.continues]:N.continues,k=new Map(w.length?Hn(w,i,h):Ne);for(let[C,B]of n$1.flow)r.get(C)!==B&&k.set(C,B);if(ei(r,n$1),!k.size){for(let C of m.all)n$1.sink.report(C);l=g;break}let R={};for(let[C,B]of k){let E=De(i,C,n$1.schemes);if(E===void 0||B===E)continue;let M=ia$1([E,B]);fa$1(M,E)||(n(R,C,M),o.set(C,M));}if(!Object.keys(R).length){for(let C of m.all)n$1.sink.report(C);l=g;break}i=z(i,R);}let c=l??s(i,n$1);Zo(e,r,n$1),ei(r,n$1);let u=Dt([e],new Map,i,n$1),d=[...u.breaks];if(a==="head"?d.push(new Map):a==="body-end"&&(u.end&&d.push(u.end),d.push(...u.continues)),!d.length)return {returns:c,head:i};let p=new Map(o);for(let[y,m]of Hn(d,i,n$1))p.set(y,m);for(let[y,m]of p)Me(y,m,n$1);return {returns:c,head:i}}function Zo(e,t,n){if(e.type==="BlockStatement")return;let a=new Map;for(let[s,r]of n.flow)t.get(s)!==r&&a.set(s,r);a.size&&n.stmtFlow.set(e,a);}function ei(e,t){t.flow.clear();for(let[n,a]of e)t.flow.set(n,a);}function id(e,t,n){let a=Ke(e,t,n);return a.exits||!a.types.size?t:z(t,Object.fromEntries(a.types))}function Ot(e,t,n,a,s){if(!ld(e))return ni(e,t,n,a,s);let r=new Set(n.evolving);try{return ni(e,t,n,a,s)}finally{n.evolving.clear();for(let o of r)n.evolving.add(o);}}function ld(e){for(let t of e){let n=t;if(n.type==="VariableDeclaration"&&n.kind!=="const")return true;if(n.type==="ExportNamedDeclaration"){let a=n.declaration;if(a?.type==="VariableDeclaration"&&a.kind!=="const")return true}}return false}function ni(e,t,n,a,s){let r=t,o=[],i=s?.aliases??[],l=false;for(let c of e){let u=c;n.ambient.value&&!l&&!dd(u)&&(n.sink.report(S.ambient.statement(u)),l=true);let d=u.type==="ExportNamedDeclaration"?u.declaration:u;if(d?.type==="TSTypeAliasDeclaration"&&Yi(d,r,n,i),u.type==="VariableDeclaration")r=ya(u,r,n);else if(u.type!=="ImportDeclaration")if(u.type==="TSModuleDeclaration")r=Mt(u,r,n,i);else if(u.type==="ExportNamedDeclaration"&&u.declaration?.type==="TSModuleDeclaration")r=Mt(u.declaration,r,n,i);else if(u.type==="ExportNamedDeclaration"){let p=u;if(p.declaration?.type==="VariableDeclaration")r=ya(p.declaration,r,n);else if(p.declaration?.type==="FunctionDeclaration"){let y=T(p.declaration,r,n),m=p.declaration.id,h=ge(m);h&&(r=We(r,{[h]:y},n,m));}else for(let y of p.specifiers){let m=n.keyOf(y.local);!In(m)&&te(r,m)===void 0&&n.sink.report(S.unknownName(y.local,y.local.name));}}else if(u.type==="ExportDefaultDeclaration")T(u.declaration,r,n);else if(u.type==="FunctionDeclaration"){let p=T(u,r,n),y=u.id,m=ge(y);m&&(r=We(r,{[m]:p},n,y));}else if(u.type==="IfStatement"){let p=u;o.push(...be(u,r,n,a));let y=Xi(p,r,n);y.size&&(r=z(r,Object.fromEntries(y))),!p.alternate&&on(p.consequent,En(n))&&(r=z(r,Se(p.test,r,n.schemes,n.keyOf).else));}else o.push(...be(u,r,n,a)),u.type==="BlockStatement"||u.type==="TryStatement"?r=id(u,r,n):u.type==="SwitchStatement"&&(r=rd(u,r,n));r=yd(u,r,n),s&&(r=s.declared(u,r)),i.length&&ti(i,r,n,false);}return !s&&i.length&&ti(i,r,n,true),{scope:r,returns:o}}function Mt(e,t,n,a){v(n,e,o.unknown,t);let s=n.namespaces.byNode.get(e);if(!s)return t;if(s.instantiated)return cd(e,s,t,n,a);let r=e.body;if(r.type==="TSModuleDeclaration")return Mt(r,t,n,a);v(n,r,o.unknown,t);for(let o$1 of r.body){let i=o$1.type==="ExportNamedDeclaration"?o$1.declaration:o$1;i!==o$1&&v(n,o$1,o.unknown,t),i.type==="TSTypeAliasDeclaration"?(Yi(i,t,n,a),T(i,t,n)):i.type==="TSModuleDeclaration"&&Mt(i,t,n,a);}return t}function cd(e,t,n$1,a,s){let r=e,o$1=Be(a.bounds,e),i=o$1?.symbolOf(r.id);if(!o$1||!i)return n$1;let l=At(i),c=a.namespaceMembers.get(l)??new Map;a.namespaceMembers.set(l,c);let u=r.id.name,d=C=>{let B={};for(let[E,M]of c)n(B,E,{type:M.type,...M.readonly?{readonly:true}:{}});return We(C,{[u]:o.object(B)},a,r.id)},p=r.body.type==="TSModuleBlock"?r.body.body:[],y=pd(o$1,i,u,r.body),m=new Map;p.forEach((C,B)=>{B+1<p.length&&m.set(C,p[B+1]);});let h=false,g=(C,B)=>{for(let M of ud(C)){let L=o$1.localSymbolOf(M)&&o$1.symbolOf(M);if(!L||!(L.flags&at.Value))continue;let J=M.name,q=At(L),Z=sa(B,q);Z===void 0||c.has(J)||(c.set(J,{key:q,type:Z,readonly:o$1.declarationOf(M)?.kind==="const"}),h=true);}let E=m.get(C);return !h||!E||!y.has(E)?B:(h=false,d(B))},N=a.flow.size?new Map(a.flow):null,w=N?z(n$1,Object.fromEntries(N)):n$1;N&&a.flow.clear();let k=a.unreachable.value,R=a.ambient.value;a.unreachable.value=false,t.ambient&&(a.ambient.value=true),a.fnDepth.value++,a.jumps.push(null);try{let C=vs(w,a.schemes);if(c.size){let B={};for(let E of c.values())n(B,E.key,E.type);C=je(C,B);}C=d(C),r.body.type==="TSModuleDeclaration"?g(r.body,Mt(r.body,C,a,s)):(v(a,r.body,o.unknown,C),Ot(r.body.body,C,a,void 0,{aliases:s,declared:g}));}finally{if(a.jumps.pop(),a.fnDepth.value--,a.ambient.value=R,a.unreachable.value=k,a.flow.clear(),N)for(let[C,B]of N)a.flow.set(C,B);}return d(n$1)}function ud(e){let t=e.type==="ExportNamedDeclaration"?e.declaration??e:e;return t.type==="VariableDeclaration"?Va(t):t.type==="TSModuleDeclaration"?[t.id]:[]}var dd=e=>e.type==="VariableDeclaration"||e.type==="TSTypeAliasDeclaration"||e.type==="TSModuleDeclaration"||e.type==="ExportNamedDeclaration"||e.type==="ImportDeclaration"||e.type==="FunctionDeclaration";function pd(e,t,n,a){let s=new Set;if(a.type!=="TSModuleBlock")return s;for(let r of e.references){if(r.name!==n||jn(e,r)!==t)continue;let o=r,i=e.parentOf(o);for(;i&&i!==a;)o=i,i=e.parentOf(o);i===a&&s.add(o);}for(let r of a.body)!s.has(r)&&fd(r,n)&&s.add(r);return s}function fd(e,t){let n=s=>{if(Array.isArray(s))return s.some(n);if(!s||typeof s!="object")return false;let r=s;return r.t==="typeQuery"&&Array.isArray(r.path)&&r.path[0]===t?true:Object.keys(r).some(o=>n(m(r,o)))},a=false;return walk(e,{"*":s=>{let r=s;return a=n(m(r,"typeAnnotation"))||n(m(r,"returnType"))||n(m(r,"typeArguments")),a?"break":void 0}}),a}function Yi(e,t,n,a){let s=e.id,r=pi(e,n);if(!s||!r||!n.programAliases.has(r)||n.resolvedSchemes.has(r))return;let o=md(r,n.schemes,n.programAliases),i={name:r,roots:o,at:s};Hi(o,t,n,i.at)?Rt(r,t,n,i.at):a.push(i);}function ti(e,t,n,a){for(let s=e.length-1;s>=0;s--){let r=e[s];n.resolvedSchemes.has(r.name)?e.splice(s,1):(a||Hi(r.roots,t,n,r.at))&&(e.splice(s,1),Rt(r.name,t,n,r.at));}}var Hi=(e,t,n,a)=>{for(let s of e)if(te(t,yi(n,a,s))===void 0)return false;return true};function md(e,t,n){let a=new Set,s=new Set,r=i=>{if(Array.isArray(i)){for(let c of i)r(c);return}if(!i||typeof i!="object")return;let l=i;if(l.t==="typeQuery"){let c=l.path;c.length&&a.add(c[0]);return}l.t==="apply"&&typeof l.name=="string"&&n.has(l.name)&&o(l.name);for(let c of Object.values(l))r(c);},o=i=>{if(s.has(i))return;s.add(i);let l=m(t,i);l&&r(l.body);};return o(e),a}function yd(e,t,n){if(!n.flow.size)return t;let a=new Map(n.flow);n.flow.clear(),n.stmtFlow.set(e,a);let s=z(t,Object.fromEntries(a));for(let r of a.keys())ye(r)||(s=ws(s,r,n.schemes));return s}function be(e,t,n,a){switch(e.type){case "ReturnStatement":{let s=e.argument,r=s?a?(de(s,a,t,n),a):T(s,t,n):$i;return v(n,e,s?r:o.undefined,t),n.unreachable.value=true,[r]}case "IfStatement":{let s=e;Ys(s.test,s.consequent,T(s.test,t,n),n);let r=Se(s.test,t,n.schemes,n.keyOf),o$1=(u,d)=>{if(u.type==="BlockStatement")return be(u,d,n,a);let{value:p,effect:y}=da(n,()=>be(u,d,n,a));return y.size&&n.stmtFlow.set(u,y),p},i=n.unreachable.value;n.unreachable.value=i||Oe(s.test);let l=o$1(s.consequent,z(t,r.then)),c=n.unreachable.value;return n.unreachable.value=i||ue(s.test),s.alternate&&l.push(...o$1(s.alternate,z(t,r.else))),n.unreachable.value=c&&n.unreachable.value,v(n,e,o.unknown,t),l}case "BlockStatement":{let{returns:s}=Ot(e.body,t,n,a);return v(n,e,s.length?ia$1(s):o.void,t),s}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let s=e,r=t;s.init&&(s.init.type==="VariableDeclaration"?r=ya(s.init,r,n):T(s.init,r,n));let o$1=ue(s.test)?"breaks":e.type==="DoWhileStatement"?"body-end":"head",i=n.unreachable.value,l={loop:true,breaks:false,continues:false},c=i,{returns:u}=Ds(n,l,()=>Qo(s.body,r,n,o$1,(p,y)=>{if(l.breaks=l.continues=!1,y.unreachable.value=i,e.type==="DoWhileStatement"){let m=be(s.body,p,y,a),h=Dt([s.body],new Map,p,y),g=h.end?[h.end,...h.continues]:h.continues;return c=i||y.unreachable.value&&!l.continues,y.unreachable.value=c,s.test&&T(s.test,g.length?fa(p,Hn(g,p,y)):p,y),m}return s.test&&T(s.test,p,y),y.unreachable.value=i||Oe(s.test),s.update&&T(s.update,p,y),be(s.body,p,y,a)})),d=!ue(s.test)&&!c;return n.unreachable.value=i||!(d||l.breaks),v(n,e,o.unknown,t),u}case "ForOfStatement":case "ForInStatement":{let s=e,r=T(s.right,t,n),o$1,i;if(e.type==="ForOfStatement"){if(Sa(r,s.right,n))o$1=o.any;else {let h=wn(r);h&&n.sink.report(S.possiblyNullish(s.right,h)),o$1=h?Tt(r):r;}i=Ba(o$1,s.right,n);}else o$1=wn(r)?Tt(r):r,hd(o$1,n.schemes)||n.sink.report(S.forInNotObject(s.right,o$1)),i=o.string;let l=s.left.type==="VariableDeclaration",c=l?ao(s.left):null;c&&cn(c,hs(s.left),n);let u=e.type==="ForInStatement"&&l?se(s.right,n.keyOf):null,d=u!==null&&wn(r)?z(t,{[u]:o$1}):t,p=c?We(d,{[c]:i},n,hs(s.left)):d,y=n.unreachable.value,{returns:m}=Ds(n,{loop:true,breaks:false,continues:false},()=>Qo(s.body,p,n,"head",(h,g)=>(g.unreachable.value=y,l||nd(e.type,s.left,e.type==="ForOfStatement"?i:o$1,h,g),be(s.body,h,g,a))));return n.unreachable.value=y,v(n,e,o.unknown,t),m}case "BreakStatement":case "ContinueStatement":{if(v(n,e,o.unknown,t),!n.unreachable.value){let s=Zu(n,e.type==="ContinueStatement");s&&(e.type==="BreakStatement"?s.breaks=true:s.continues=true);}return n.unreachable.value=true,[]}case "ThrowStatement":{let s=e.argument;return s&&T(s,t,n),v(n,e,o.unknown,t),n.unreachable.value=true,[]}case "TryStatement":{let s=e,r=n.unreachable.value,o$1=be(s.block,t,n,a),i=!n.unreachable.value;if(s.handler){n.unreachable.value=r;let l=s.handler.param,c=l?ge(l):null;c&&l&&cn(c,l,n);let u=c&&l?We(t,{[c]:o.any},n,l):t;o$1.push(...be(s.handler.body,u,n,a)),i||(i=!n.unreachable.value);}return s.finalizer&&(n.unreachable.value=r,o$1.push(...be(s.finalizer,t,n,a)),i&&(i=!n.unreachable.value)),n.unreachable.value=r||!i,v(n,e,o.unknown,t),o$1}case "SwitchStatement":{let s=e,r=T(s.discriminant,t,n),o$1=s.cases.map(B=>B.test?T(B.test,t,n):null);s.cases.forEach((B,E)=>{let M=o$1[E];B.test&&M&&Cd(r,M,B.test,n);});let i=s.cases.some(B=>!B.test),l=s.discriminant,c=!i&&Oo(s,r,o$1,l.type==="UnaryExpression"&&l.operator==="typeof"?n.overlay.get(l.argument)?.type:void 0,n.schemes),u=t,d=null,p=[],y=[],m=[],h=new Set(s.cases.flatMap(B=>B.consequent.flatMap(E=>Vi(E).map(M=>ga(n,M,M.name))))),g=n.unreachable.value,N={loop:false,breaks:false,continues:false};Ds(n,N,()=>{for(let B=0;B<s.cases.length;B++){n.unreachable.value=g;let E=B;for(;!s.cases[B].consequent.length&&B+1<s.cases.length;)B++;let M=Ts(s,o$1,E,B+1,t,n.schemes,n.keyOf),L=sd(M,d,t,n),J=Ot(s.cases[B].consequent,fa(u,L),n,a);m.push(...J.returns);let q=Mo(J.scope,t);u=Object.keys(q).length?je(t,Qu(q,n)):t;let Z=Dt(s.cases[B].consequent,L,t,n);p.push(...Z.breaks),y.push(...Z.continues),d=Z.end;}});let w=s.cases.length>0&&n.unreachable.value;n.unreachable.value=g||i&&w&&!N.breaks;let k=[...p];d&&k.push(d),!i&&!c&&k.push(new Map(Object.entries(Ts(s,o$1,0,0,t,n.schemes,n.keyOf))));let R=new Map;if(k.length)for(let[B,E]of Hn(k,t,n))h.has(B.split(".")[0])||R.set(B,E);let C=B=>new Map([...B].filter(([E])=>!h.has(E.split(".")[0])));return n.switches.set(e,{exhaustive:c,after:R,continues:y.map(C)}),v(n,e,o.unknown,t),m}default:return T(e,t,n),[]}}function Qi(e,t,n,a){if(e.t==="any")return o.any;let s=ta$1(e,[t],a.schemes);return s?s.type:(a.sink.report(S.noSuchMember(n,e,t)),o.any)}function hd(e,t){return e.t==="union"&&!e.of.length?false:e.t==="var"||e.t==="nonPrimitive"?true:da$1(e,o.nonPrimitive,t)}function gd(e,t){let n=J(e,t);if(n.t==="any")return {elem:o.any,failed:false};let a=n.t==="union"?n.of:[n];if(!a.length)return {elem:null,failed:true};let s=[],r=false;for(let o of a){let i=Sd(J(o,t));i===null?r=true:s.push(i);}return {elem:s.length?ia$1(s):null,failed:r}}function Sd(e){switch(e.t){case "any":return o.any;case "array":return e.items;case "tuple":return ia$1([...e.elements]);case "string":return o.string;case "literal":return typeof e.value=="string"?o.string:null;default:return null}}var Zi=e=>e.t==="array"||e.t==="tuple"||e.t==="union"&&e.of.length>0&&e.of.every(Zi);function el(e,t$1,n,a,s,r){if(e.t==="any")return o.any;let o$1=J(e,r.schemes);if(o$1.t==="tuple"&&B(o$1)<0&&t$1>=o$1.elements.length)return a||r.sink.report(S.tupleIndexOutOfRange(n,e,o$1.elements.length,t$1)),o.undefined;if(!Zi(o$1))return s;let i=K$1(o.index(o$1,o.literal(t$1)),r.schemes);return i.t==="index"||t(i)?s:i}function Ba(e,t,n){let a=gd(e,n.schemes);return a.failed&&n.sink.report(S.notIterable(t,e)),a.elem??o.any}function Js(e,t,n$1){let a=ce(e,n$1),s=(a.t==="union"?a.of:[a]).filter(i=>i.t!=="null"&&i.t!=="undefined");if(!s.length)return o.object({});if(s.length>1)return o.union(s.map(i=>Js(i,t,n$1)));let r=s[0];if(r.t!=="object")return r;let o$1={};for(let i in r.props)t.includes(i)||n(o$1,i,sl(r.props[i]));return o.object(o$1,r.index)}function ma(e,t){let n=J(e,t);switch(n.t){case "any":case "nonPrimitive":case "object":case "array":case "tuple":case "fn":case "overload":case "apply":case "var":case "mapped":case "conditional":case "index":return true;case "intersection":return n.of.every(a=>ma(a,t));case "union":{let a=n.of.filter(s=>!Bd(s));return a.length>0&&a.every(s=>ma(s,t))}default:return false}}function nl(e,t,n,a,s){if(ma(n,s.schemes))return false;s.sink.report(S.notSpreadable.spread(e.properties[t]));let r={...s,sink:H()};for(let o of e.properties.slice(t+1)){let i=o;if(i.type==="SpreadElement"){T(i.argument,a,r);continue}let l=i;l.computed&&T(l.key,a,r),v(r,i,T(l.value,a,r),a);}return true}function tl(e,t,n,a){if(e.size!==0)for(let[s,r]of ka(t,a.schemes)){let o=e.get(s);!o||r.optional||al(r.type,a.schemes)||a.sink.report(S.overwrittenProperty(o,s,n));}}function ka(e,t){let n=new Map,a=J(e,t);if(a.t==="object"){for(let[o,i]of Object.entries(a.props))n.set(o,{type:i.type,optional:!!i.optional});return n}if(a.t!=="union"&&a.t!=="intersection")return n;let s=a.of.map(o=>J(o,t)).filter(o=>!(o.t==="union"&&o.of.length===0)),r=[];for(let o of s){for(let i of ka(o,t).keys())r.includes(i)||r.push(i);if(a.t==="union"&&!(o.t==="object"&&o.index))break}for(let o of r){let i=a.t==="union"?bd(s,o,t):Nd(s,o,t);i&&n.set(o,i);}return n}function bd(e,t,n){let a=[],s=false,r=false;for(let o$1 of e){let i=ka(o$1,n).get(t);if(i){r=true,s||(s=i.optional),a.push(i.type);continue}let l=y(t),c=o$1.t==="object"&&o$1.index?o$1.index.key==="string"||o$1.index.key==="number"&&l?o$1.index.value:void 0:o$1.t==="array"&&l?o$1.items:void 0;if(c)a.push(c);else if(o$1.t==="object"&&o$1.fromLiteral)a.push(o.undefined);else return null}return r?{type:ia$1(a),optional:s}:null}function Nd(e,t,n){let a=[],s=true;for(let r of e){let o=ka(r,n).get(t);o&&(s&&(s=o.optional),a.push(o.type));}return a.length?{type:a.length===1?a[0]:o.intersection(a),optional:s}:null}function al(e,t){let n=ce(e,t);return n.t==="null"||n.t==="undefined"?true:n.t==="union"||n.t==="intersection"?n.of.some(a=>al(a,t)):false}var Bd=e=>e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="literal"&&!e.value,sl=e=>{if(!e.readonly)return e;let{readonly:t,...n}=e;return n};function rl(e,t,n,a){if(e.t==="any")return o.any;let s=J(e,a),r=s.t==="union"?s.of:[s];return r.length&&r.every(o=>o.t==="tuple")?o.union(r.map(o=>kd(o,t))):o.array(n)}function kd(e,t){let n=B(e);return n>=0&&t>n?o.tuple([e.elements[n]],["rest"],e.readonly):o.tuple(e.elements.slice(t),e.flags?.slice(t),e.readonly)}function Xs(e,t,n$1){let a={...n$1,sink:H()},s=r=>{if(r.type==="AssignmentPattern"){let o=T(r.right,t,a);return {type:Q$1(M(o)),optional:true}}return r.type==="ObjectPattern"||r.type==="ArrayPattern"?{type:Xs(r,t,n$1),optional:false}:(r.type==="Identifier"&&n$1.sink.report(S.implicitAny.bindingElement(r,r.name)),{type:o.any,optional:false})};if(e.type==="ObjectPattern"){let r={},o$1;for(let i of e.properties){if(i.type==="RestElement"){o$1={key:"string",value:o.any};continue}let l=Ve(i),{type:c,optional:u}=s(i.value);l!==null&&n(r,l,u?{type:c,optional:u}:{type:c});}return o.object(r,o$1)}if(e.type==="ArrayPattern"){let r=e.elements,i=r[r.length-1]?.type==="RestElement",l=[],c=[];return r.forEach((u,d)=>{if(!u){l.push(o.any),c.push("req");return}let p=u;if(p.type==="RestElement"){l.push(s(p.argument).type),c.push("rest");return}let{type:y,optional:m}=s(p);l.push(y),c.push(m&&d>=vd(r)?"optional":"req");}),!l.length||l.length===1&&i?o.array(o.any):o.tuple(l,c)}return o.any}function vd(e){let t=0;return e.forEach((n,a)=>{let s=n;s&&s.type!=="RestElement"&&s.type!=="AssignmentPattern"&&(t=a+1);}),t}function wd(e,t,n$1,a,s,r){let o=T(e.right,a,s);t.t!=="unknown"&&!da$1(o,t,s.schemes)&&s.sink.report(S.notAssignable(e.right,o,t,s.schemes));let i=Q$1(O(o)),{type:l}=x(t),c=l.t==="unknown"?i:ia$1([l,i]),u=e.left;if(u.type==="Identifier"){let d=u.name;cn(d,u,s),n(n$1,d,c),s.overlay.set(u,{type:c,scope:a});}else Le(u,c,n$1,a,s,r);}function Le(e,t,n$1,a,s,r){switch(e.type){case "Identifier":{let o=wt(e,a,s)??t;cn(e.name,e,s),n(n$1,e.name,o),s.overlay.set(e,{type:o,scope:a});return}case "AssignmentPattern":{let o$1=e,i=o$1.right,l=Object.keys(n$1).length?We(a,n$1,s,r.declaration):a,c;if(t.t==="any")T(i,l,s),c=o.any;else if(r.annotated){let u=T(i,l,{...s,sink:H()});c=$e(u).some(d=>d.t==="undefined")?t:x(t).type,de(i,c,l,s);}else {let u=T(i,l,s),d=ia$1([x(t).type,u]);c=Q$1(r.mutable?M(d):d);}Le(o$1.left,c,n$1,a,s,r);return}case "ObjectPattern":{let o$1=[];for(let i of e.properties){if(i.type==="RestElement"){let d;t.t==="any"?d=o.any:ma(t,s.schemes)?d=Js(t,o$1,s.schemes):(s.sink.report(S.notSpreadable.rest(i.argument)),d=o.any),Le(i.argument,d,n$1,a,s,r);continue}let l=i,c=Ve(l);c!=null&&o$1.push(c);let u=c!=null?Qi(t,c,l.key,s):o.any;Le(l.value,u,n$1,a,s,r);}return}case "ArrayPattern":{let o=Ba(t,e,s);e.elements.forEach((i,l)=>{if(!i)return;let c=i;if(c.type==="RestElement")Le(c.argument,rl(t,l,o,s.schemes),n$1,a,s,r);else {let u=c.type==="AssignmentPattern",d=u?c.left:c;Le(c,el(t,l,d,u,o,s),n$1,a,s,r);}});return}}}function Fs(e,t,n){let a=u=>{let d=ce(u,n.schemes);return d.t==="mapped"?J(d,n.schemes):d},s=a(t),r=s.t==="union"?J(s,n.schemes):s,o=r.t==="union"?r.of.map(a):[r],l$1=(s.t==="union"?Fi(e,o.filter(u=>u.t==="object"||u.t==="intersection"),u=>n.overlay.get(u.value)?.type,n.schemes,t).chosen:o).filter(u=>u.t==="object"&&(!u.index||u.index.key==="number"));if(!l$1.length||l$1.some(u=>Object.keys(u.props).length===0&&!u.index))return false;let c=false;for(let u of e.properties){if(u.type==="SpreadElement")continue;let d=u,p=d.computed?ol(n.overlay.get(d.key)?.type,n):Ve(d);if(p===null)continue;l$1.filter(m=>l(m.props,p)||m.index?.key==="number"&&y(p)).length||(n.sink.report(d.computed?S.excessProperty(d,il(d.key,p),t):S.excessProperty(d.key,p,t)),c=true);}return c}var ol=(e,t)=>{let n=e&&ce(e,t.schemes);return n?.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")?String(n.value):null};function il(e,t){let n=a=>{if(a.type==="Identifier")return a.name;if(a.type==="MemberExpression"){let r=a,o=n(r.object);return o!==null&&!r.computed?`${o}.${r.property.name}`:null}if(a.type==="UnaryExpression"){let r=a,o=n(r.argument);return o!==null?`${r.operator}${o}`:null}if(a.type==="Literal"){let r=a.value;return typeof r=="string"?JSON.stringify(r):typeof r=="number"?String(r):null}let s=Ae(a);return s!==null?`\`${s}\``:null};return `[${n(e)??JSON.stringify(t)}]`}function ya(e,t,n){let a=n.ambient.value;e.declare&&(n.ambient.value=true);try{let s=t;for(let r of e.declarations){let o=Ad(r,e,s,n);Object.keys(o).length&&(s=We(s,o,n,r));}return v(n,e,o.unknown,t),s}finally{n.ambient.value=a;}}function Ed(e,t,n,a){let s=e.init;if(t.kind!=="const"||n){a.sink.report(S.ambient.initializer(s));return}(i=>i.type==="Literal"&&["string","number","boolean"].includes(typeof i.value)||Ae(i)!==null)(s)||s.type==="UnaryExpression"&&s.operator==="-"&&s.argument.type==="Literal"&&typeof s.argument.value=="number"||a.sink.report(S.ambient.constInitializer(s));}function Ad(e,t,n$1,a){let s={},r=e.id,o$1=ge(r);o$1&&cn(o$1,r,a);let i=wt(r,n$1,a),l=a.ambient.value;if(l&&e.init&&Ed(e,t,i,a),!e.init){if(o$1&&(t.kind!=="const"||l)){let y=Be(a.bounds,r)?.declarationOf(r)?.exported;return !i&&(l||y)?(a.sink.report(S.implicitAny.variable(r,o$1)),n(s,o$1,o.any)):i&&l?n(s,o$1,i):i?(n(s,xe(o$1),i),zi(i,a)?(n(s,o$1,ia$1([i,o.undefined])),n(s,aa(o$1),Ui(i,a))):n(s,o$1,i)):(n(s,o$1,o.undefined),a.evolving.add(ga(a,r,o$1)),n(s,Bt(o$1),Xu(r,a))),s}return !o$1&&l?(Le(r,i??Xs(r,n$1,a),s,n$1,a,{annotated:i!==void 0,mutable:t.kind!=="const",declaration:e}),s):(a.sink.report(o$1?S.constNeedsInit(e):S.destructuringNeedsInit(e)),o$1&&n(s,o$1,i??o.unknown),s)}let c=i??(e.init.type==="ArrowFunctionExpression"?io(e.init):null),u=o$1&&c?We(n$1,{[o$1]:c},a,r):n$1,d,p=null;return i?(de(e.init,i,u,a),d=i,p=i,(i.t==="union"||i.t==="boolean")&&He(e.init)&&(d=ia(i,rn(e.init),a.schemes))):(d=T(e.init,u,a),t.kind!=="const"&&(d=M(d)),d=Q$1(d),p=d),v(a,e,d,n$1),o$1?(n(s,o$1,d),p&&(t.kind!=="const"||d!==p)&&n(s,xe(o$1),p)):Le(r,d,s,n$1,a,{annotated:i!==void 0,mutable:t.kind!=="const",declaration:e}),s}var Td=["~#","?#","#"];function Dd(e,t,n$1){let a={};for(let s of Object.keys(e)){let r=Td.find(i=>s.endsWith(i))??"",o=s.slice(0,s.length-r.length);n(a,ga(n$1,t,o)+r,m(e,s));}return a}function We(e,t,n,a){return je(e,Dd(t,a,n))}function Od(e,t,n){let a=T(e.left,t,n),s=T(e.right,t,n);return ll(e.operator,a,s,e,e.left,e.right,n)}function ll(e,t,n,a,s,r,o$1){e==="in"&&(Xn(t,s,o$1),Xn(n,r,o$1));let i=it.get(e);if(!i)return o.boolean;if(i.category==="arithmetic"||i.category==="bitwise"||i.category==="relational"||i.category==="additive"&&!da$1(t,o.string,o$1.schemes)&&!da$1(n,o.string,o$1.schemes)){let c=Xn(t,s,o$1),u=Xn(n,r,o$1);if(i.category==="additive"&&(c.error||u.error)){let d=c.error?u.error?null:u.type:c.type;return d&&ln(d,o$1.schemes)?o.string:o.any}t=c.type,n=u.type;}if(i.category==="additive"){if(vn(t)||vn(n))return ln(t,o$1.schemes)||ln(n,o$1.schemes)?o.string:o.number;if(ln(t,o$1.schemes)&&ln(n,o$1.schemes))return o.string;if(vt(t,o$1.schemes)&&vt(n,o$1.schemes))return o.number;if(ln(t,o$1.schemes)||ln(n,o$1.schemes)){let u=ln(t,o$1.schemes)?n:t;return o$1.sink.report(S.implicitCoercion(a,t,n,ul(u,o$1.schemes))),o.string}return o$1.sink.report(S.operatorNotApplicable(a,"+",t,n)),o.number}if(i.category==="arithmetic"||i.category==="bitwise")vt(t,o$1.schemes)||o$1.sink.report(S.arithmeticOperand(s,"left")),vt(n,o$1.schemes)||o$1.sink.report(S.arithmeticOperand(r,"right"));else if(i.category==="relational"){if(!vn(t)&&!vn(n)){let c=J(t,o$1.schemes),u=J(n,o$1.schemes),d=da$1(c,o.number,o$1.schemes),p=da$1(u,o.number,o$1.schemes);d&&p||!d&&!p&&(da$1(c,u,o$1.schemes)||da$1(u,c,o$1.schemes))||o$1.sink.report(S.operatorNotApplicable(a,e,t,n));}}else i.category==="equality"&&Md(e,t,n,a,o$1);return ss(i.result)}function Md(e,t,n,a,s){let r=(d,p)=>Vs(d,p,s.schemes)||Vs(p,d,s.schemes);if(r(t,n))return;let o=bn(t),i=bn(n),l=(o!==t||i!==n)&&r(o,i),c=t,u=n;if(!l){let d=N(t),p=N(n);r(d,p)||(c=d,u=p);}s.sink.report(S.noOverlap(a,e,c,u,l));}function Ys(e,t,n,a){let s=Et(e)??e;if(s.type!=="Identifier"&&!Et(s)||As(n,a.schemes)||!cl(n,a.schemes))return;let r=Pd(a);if(s.type==="Identifier"&&!r.get(s))return;let o=false;walk(t,{"*":i=>{if(i!==t&&Rd(s,i,r))return o=true,"break"}}),o||a.sink.report(S.uncalledFunctionCheck(e));}function Et(e){let t=e.type==="ChainExpression"?e.expression:e;return t.type==="MemberExpression"&&!t.computed?t:void 0}function Rd(e,t,n){let a=(o,i)=>{let l=n.get(o),c=n.get(i);return !!l&&!!c&&us(l,c)};if(e.type==="Identifier")return t.type==="Identifier"&&a(e,t);let s=e,r=Et(t);if(!r)return false;for(;s&&r;){if(s.type==="Identifier"&&r.type==="Identifier")return a(s,r);let o=Et(s),i=Et(r);if(!o||!i||o.property.name!==i.property.name)return false;s=o.object,r=i.object;}return false}function Pd(e){if(!e.symbols.map){let t=new WeakMap;for(let n of ds(e.root))n.site==="node"&&t.set(n.node,n.symbol);e.symbols.map=t;}return e.symbols.map}function cl(e,t){let n=J(e,t);return n.t==="fn"||n.t==="overload"?true:n.t==="union"?n.of.length>0&&n.of.every(a=>J(a,t).t==="fn"):n.t==="intersection"?n.of.some(a=>cl(a,t)):false}function Cd(e,t,n,a){let s=c=>c.t==="var"?c:J(c,a.schemes),r=s(e),o=s(t),i=o,l=r;(!Os(o)||!Os(r))&&(i=Os(o)?N(o):o,l=N(r)),!Vs(l,i,a.schemes)&&!ea$1(i,l,a.schemes)&&a.sink.report(S.notComparable(n,i===o?t:i,l===r?e:l));}var Os=e=>e.t==="boolean"||ai(e)||e.t==="union"&&e.of.length>0&&e.of.every(ai),ai=e=>e.t==="literal"||e.t==="null"||e.t==="undefined",Vs=(e,t,n)=>t.t==="null"||t.t==="undefined"||ea$1(e,t,n),vn=e=>e.t==="any"||e.t==="unknown",vt=(e,t)=>vn(e)||da$1(J(e,t),o.number,t),ln=(e,t)=>!vn(e)&&da$1(J(e,t),o.string,t),Id=o.union([o.string,o.number,o.boolean,o.null,o.undefined]),ul=(e,t)=>vn(e)||da$1(J(e,t),Id,t),jd={string:o.literal(""),number:o.literal(0),boolean:o.literal(false)},la=e=>e.t==="null"||e.t==="undefined";function Fd(e,t,n,a){if(t.t==="any"||t.t==="unknown")return ia$1([t,n]);let s=(t.t==="union"?[...t.of]:[t]).flatMap(o$1=>o$1.t==="boolean"?[o.literal(true),o.literal(false)]:[o$1]);if(e==="??")return s.some(la)?ia$1([...s.filter(o=>!la(o)),n]):t;if(e==="||")return As(t,a)?ia$1([...s.filter(o=>!la(o)&&!(o.t==="literal"&&!o.value)),n]):t;if(!wo(t,a))return t;let r=s.flatMap(o=>{if(la(o))return [o];if(o.t==="literal")return o.value?[]:[o];let i=m(jd,o.t);return i?[i]:[]});return ia$1([...r,n])}var Vd=o.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>o.literal(e)));function $d(e,t,n){let a=T(e.argument,t,n);switch(e.operator){case "!":return a.t==="literal"?{t:"literal",value:!a.value,fresh:true}:o.boolean;case "-":case "+":case "~":return Xn(a,e.argument,n),e.operator==="-"&&a.t==="literal"&&typeof a.value=="number"?{t:"literal",value:-a.value,fresh:true}:o.number;case "typeof":return Vd;case "delete":{let s=e.argument,r=s.type==="ChainExpression"?s.expression:s;r.type==="MemberExpression"&&pa(r,n,"delete");}return o.boolean;case "void":return o.undefined;default:return o.unknown}}function xd(e,t,n$1){let a={},s,r=[],o$1=[],i=false,l=false,c=false;Ci(e,n$1);let u=new Map;for(let[p,y]of e.properties.entries()){let m=y;if(m.type==="SpreadElement"){c=true;let k=T(m.argument,t,n$1);if(nl(e,p,k,t,n$1))return o.any;tl(u,k,m,n$1);let R=ce(k,n$1.schemes);if(R.t==="object"){for(let C in R.props)n(a,C,sl(R.props[C]));R.index&&(s={key:R.index.key,type:R.index.value});}continue}let h=m,g=T(h.value,t,n$1),N=L(g);if(v(n$1,m,g,t),h.computed){let k=ce(T(h.key,t,n$1),n$1.schemes);Ii(e,h,ol(k,n$1),n$1),k.t==="literal"&&typeof k.value=="string"?(n(a,k.value,{type:N}),u.set(k.value,m),r.push(N)):k.t==="literal"&&typeof k.value=="number"?(n(a,String(k.value),{type:N}),u.set(String(k.value),m),r.push(N),o$1.push(N)):k.t==="string"?(i=true,r.push(N)):k.t==="number"&&(l=true,r.push(N),o$1.push(N));continue}let w=Ve(h);w!==null&&(n(a,w,{type:N}),u.set(w,m),r.push(N),/^\d+$/.test(w)&&o$1.push(N));}i?s={key:"string",type:ia$1(r)}:l&&(s={key:"number",type:ia$1(o$1)});let d=c?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return s?{t:"object",props:a,index:{key:s.key,value:s.type},...d}:{t:"object",props:a,...d}}function dl(e,t,n){let a=[];for(let s of e.elements){if(!s)continue;let r=s;if(r.type==="SpreadElement"){let o=ce(T(r.argument,t,n),n.schemes);o.t==="array"?a.push(o.items):o.t==="tuple"&&a.push(...o.elements);continue}a.push(L(T(r,t,n)));}return v$1(o.array(a.length?ia$1(a):o.unknown))}function Hs(e,t,n,a){let s=ce(t,a.schemes),r=e.elements,o$1=r.every(l=>l&&l.type!=="SpreadElement"),i=(l,c)=>l.type==="ArrayExpression"?Hs(l,c,n,a):le(l)?de(l,c,n,a.inference?{...a,sink:H()}:a,true):Kn(c,He(l)?rn(l):void 0)?T(l,n,a):L(T(l,n,a));if(s.t==="tuple"&&o$1){let l=B(s),c=d=>l<0||d<l?s.elements[d]:s.elements[l],u=r.map((d,p)=>{let y=c(p);return y?i(d,y):L(T(d,n,a))});return v(a,e,{t:"tuple",elements:u,fromLiteral:true},n)}if(s.t==="union"&&o$1){let l=s.of.map(c=>ce(c,a.schemes));if(l.some(c=>c.t==="tuple")){let c=(d,p)=>{if(d.t==="array")return d.items;if(d.t!=="tuple")return;let y=B(d);return y<0||p<y?d.elements[p]:d.elements[y]},u=r.map((d,p)=>{let y=l.map(m=>c(m,p)).filter(m=>m!==void 0);return y.length?i(d,ia$1(y)):L(T(d,n,a))});return v(a,e,{t:"tuple",elements:u,fromLiteral:true},n)}}if(s.t==="array"){let l=[];for(let c of r){if(!c)continue;let u=c;if(u.type==="SpreadElement"){T(u.argument,n,a);continue}l.push(i(u,s.items));}return v(a,e,v$1(o.array(l.length?ia$1(l):o.unknown)),n)}return dl(e,n,a)}function pl(e,t$1,n){let a=J(e,n);if(a.t==="array")return a.items;if(a.t==="tuple"){let s=B(a);if(t$1>=a.elements.length||s>=0&&t$1>=s)return;let r=K$1(o.index(a,o.literal(t$1)),n);return t(r)?void 0:r}if(a.t==="union"){let s=a.of.map(r=>pl(r,t$1,n));return s.some(r=>r===void 0)?void 0:ia$1(s)}}function Ld(e,t,n,a,s){let r=J(n,s.schemes);if(r.t!=="array"&&r.t!=="tuple"&&r.t!=="union")return false;let o=(l,c)=>l.t==="tuple"?l.elements[c]:l.t==="array"?l.items:void 0,i=false;return e.elements.forEach((l,c)=>{if(!l)return;let u=l;if(u.type==="SpreadElement")return;let d=pl(r,c,s.schemes);if(!d)return;let p=o(t,c);if(!p||da$1(p,d,s.schemes))return;let y=s.sink.reported;de(u,d,a,s,false),s.sink.reported>y&&(i=true);}),i}function $s(e,t,n$1,a){if(e===null)return o.null;switch(typeof e){case "string":return o.string;case "number":return o.number;case "boolean":return o.boolean;case "object":break;default:return o.unknown}if(Array.isArray(e)){let o$1=e.map(i=>$s(i,t,n$1,a));return o.array(o$1.length?ia$1(o$1):o.unknown)}let s=e;if(isExprMarker(s)){let o$1;try{o$1=fromJson(s);}catch{return n$1.sink.report(S.unsupported(a,`'${EXPR_MARKER}: ${String(m(s,EXPR_MARKER))}'`)),o.unknown}let i=o$1;return gi(i,a,n$1,()=>T(i,t,n$1))}let r={};for(let o of Object.keys(s))n(r,o,{type:$s(s[o],t,n$1,a)});return {t:"object",props:r}}function fl(e,t){let n=J(e,t);return n.t==="object"?Object.keys(n.props).length>0||n.index!==void 0:n.t==="intersection"||Ks(n)?true:n.t==="array"?n.items.t!=="any"&&n.items.t!=="unknown":n.t==="union"?n.of.some(a=>fl(a,t)):false}function Kd(e,t,n,a,s){let r=H(),o=de(e,t,n,{...a,sink:r},true);if(!(r.hasErrors()&&s)){for(let i of r.all)a.sink.report(i);return r.hasErrors()?t:o}}var Wd=(e,t)=>({...e,typeAnnotation:t}),Ud=(e,t)=>({...e,returnType:t}),zd=(e,t)=>({type:"TSAsExpression",expression:e,typeAnnotation:t});function Qs(e,t){return e.get(t)?.type}function qd(e,t){return e.get(t)?.scope}function _d(e,t){let n=e.get(t)?.type;return n?ta$1(n,[])?.completions??[]:[]}function Gd(e,t){let n=e.get(t)?.scope;return n?[...qa(n)].map(([a,s])=>({key:a,type:s,optional:false})):[]}var Jd=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function Xd(e){if(!e||e.computed)return;let t=e.key;if(t?.type==="Identifier")return t.name;if(t?.type==="Literal"&&typeof t.value=="string")return t.value}function va(e,t,n,a={}){let s=e[t],r=e[t+1];if(!(!s||!r))switch(r.type){case "ArrowFunctionExpression":case "FunctionExpression":return r.body===s?r.returnType:void 0;case "VariableDeclarator":return r.init===s?r.id?.typeAnnotation:void 0;case "TSAsExpression":return r.typeAnnotation;case "ReturnStatement":return e.slice(t+1).find(Jd)?.returnType;case "CallExpression":{let o=(r.arguments??[]).indexOf(s);if(o<0)return;let i=Qs(n,r.callee);return i?.t==="fn"?i.params?.[o]?.type:void 0}case "Property":{if(r.value!==s||e[t+2]?.type!=="ObjectExpression")return;let i=va(e,t+2,n,a),l=Xd(r);return !i||!l?void 0:ta$1(i,[l],a)?.type}case "ArrayExpression":{let o=va(e,t+1,n,a);return o?ta$1(o,["[]"],a)?.type:void 0}case "BinaryExpression":{let o$1=it.get(r.operator);if(!o$1)return;if(o$1.category==="arithmetic"||o$1.category==="bitwise")return o.number;let i=r.left===s?r.right:r.left,l=Qs(n,i);return l&&l.t!=="any"&&l.t!=="unknown"?l:void 0}case "LogicalExpression":return va(e,t+1,n,a);case "UnaryExpression":{let o$1=r.operator;return o$1==="-"||o$1==="+"||o$1==="~"?o.number:void 0}default:return}}function Yd(e,t){return e.filter(n=>n.node===t)}function ep(){let e=new WeakMap;return {stamp:(t,n)=>(e.set(t,n),t),get:t=>e.get(t)}}var np=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Zs(e,t,n,a){if(isExprMarker(e)){let s=a.island?a.island(e,t):fromExprMarker(e);return n.stamp(s,t)}return Array.isArray(e)?n.stamp(nn.arrayExpression(e.map((s,r)=>Zs(s,a.child(t,r),n,a))),t):np(e)?n.stamp(nn.objectExpression(Object.entries(e).map(([s,r])=>{let o=a.child(t,s),i=n.stamp(nn.literal(s),o);return n.stamp(nn.property(i,Zs(r,o,n,a),false,false),o)})),t):n.stamp(nn.literal(e),t)}function tp(e){let t=new WeakMap,n=[e];for(;n.length>0;){let a=n.pop();forEachChild(a,s=>{t.set(s,a),n.push(s);});}return t}function ap(e,t,n,a){let s=tp(e),r=new Map,o=l=>{let c=r.get(l);return c===void 0&&(c=createPositionMap(l),r.set(l,c)),c},i=l=>{let c=l;for(;c!==void 0;){let u=n.get(c);if(u!==void 0)return u;c=s.get(c);}return a.fallback};return t.map(l=>{let c=i(l.node),u=a.textOf?.(c),d=u===void 0?void 0:yl(o(u),l.node.loc);return {diagnostic:l,anchor:c,...d?{span:d}:{}}})}function yl(e,t){if(!t?.start)return;let n=r=>e.offsetAt({line:r.line-1,column:r.column}),a=n(t.start),s=t.end?n(t.end):a;return {from:a,to:s<a?a:s}}function sp(e,t){return yl(createPositionMap(e),t)}export{it as BINARY_OP,as as BINARY_OPS,Fr as FUNCTION_KINDS,lc as LOGICAL_OPS,Kr as UNARY_OPS,ap as anchorDiagnostics,Wd as annotate,Ud as annotateReturn,zd as asExpression,cc as binaryOpsProducing,Xa as calleeAllowlist,Ja as capabilityNodes,li as check,je as childScope,bc as collectBindings,ls as collectMutations,ds as collectReferences,is as collectUnused,vu as componentProps,Ls as componentPropsOf,va as contextualTypeAt,ep as createAnchors,ql as createEnv,H as createSink,S as diag,Yd as diagnosticsAt,iu as extractModuleType,oc as fromCapability,Ga as guard,qt as guardsFromCompiled,te as lookup,Zs as lowerValue,ne as makeDiagnostic,ns as maxArgs,Ha as maxCallNesting,Za as maxDepth,Ya as maxFunctionNesting,zt as maxNestingOf,es as maxNodes,_d as memberCompletions,Qa as memberDepth,ss as opResultSchema,Hl as resolveNamed,Ql as resolveScheme,Gl as resolveTypeNamesIn,zl as resolvesToEnvironment,ts as resultType,Or as rootScope,us as sameSymbol,qd as scopeAt,Gd as scopeCompletions,sp as spanOf,Qs as typeAt,uc as unaryOpsProducing,qa as visibleNames};
|