@tslite/checker 1.4.0 → 1.5.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-FY7J7P5X.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +104 -10
- package/dist/index.d.ts +104 -10
- package/dist/index.js +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +111 -7
- package/dist/types/index.d.ts +111 -7
- package/dist/types/index.js +1 -1
- package/package.json +5 -5
- package/dist/chunk-DFZOAHNG.js +0 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {o,m,ka as ka$1,_ as _$1,ma,$,e,h,i,k,f,n,l,oa as oa$1,j as j$1,ea,L as L$1,H,p,F,G,C as C$1,Y as Y$1,M as M$1,A,N as N$1,Z as Z$1,U as U$1,P,D,E,ca,J as J$1,O,K,v,w,t,z as z$1,aa as aa$1,W as W$1,ba as ba$1,I as I$1,r,u,fa as fa$1}from'./chunk-DFZOAHNG.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,H as apparentType,t as asLiteralOrigin,L as baseLiteralType,E as bindTypeParams,aa as comparable,e as configureTypeLimits,R as contravariantInference,Q as covariantInference,oa as discover,ba as equals,T as erasedSignature,G as expand1,x as flagAt,ka as format,la as formatTypeArgs,ma as formatTypeDiff,C as freeVars,Z as groundVars,S as inferFromCandidates,U as inferredTypes,X as instantiate,V as instantiateInContextOf,Y as instantiateLoose,r as isMissingType,w as isNumericLiteralName,s as isObjectOrArrayLiteral,F as isScheme,na as isSerializable,y as isVariadicTuple,ga as join,ha as joinAll,q as missingType,ea as normalizeUnion,u as ownProp,B as renameTypeParams,j as resetInstantiationCount,f as resetTypeLimits,ca as resolveConditional,I as resolveOp,p as resolveTypeOp,z as restIndex,o as s,ia as sampleValue,P as silentNever,A as substitute,$ as subtype,da as typeAtPosition,_ as typeDiff,fa as typeFeatures,g as typeLimits,ja as typeNeedsParens,D as typeParamArity,W as unify,J as widen,N as widenInferred,K as widenLiteral,O as widenOrigin,M as widenType,v as withoutUndefined}from'./chunk-DFZOAHNG.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 ye from'@tslite/ast/builders';import {createPositionMap}from'@tslite/language-service';var is=(e={})=>rootScope(e),be=(e,n)=>childScope(e,n),W=(e,n)=>lookup(e,n),st=e=>{let n=visibleNames(e);for(let t of n.keys())(t.includes(".")||t.endsWith("#"))&&n.delete(t);return n},os=new Set(["types","schemes","accessors","asserters","matchers","modules"]),Xr=(e={},n)=>{let t=n??{},s=Object.keys(t).filter(r=>!os.has(r));if(s.length>0)throw new TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${s.map(r=>`'${r}'`).join(", ")} \u2014 expected ${[...os].join(", ")}. Named types go under 'types'.`,{unknown:s});return {scope:is(e),types:t.types??{},schemes:Yr(t.schemes??{}),accessors:t.accessors??{},asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:t.modules??{}}};function Yr(e){let n=false,t=Object.entries(e).map(([s,r])=>{let a=o.scheme(r.params,r.body),o$1=a.params===r.params&&a.body===r.body;return o$1||(n=true),[s,o$1?r:a]});return n?Object.fromEntries(t):e}var Qr=(e,n)=>m(e.types,n),Hr=(e,n)=>m(e.schemes,n);var cs={"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","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","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"},C=(e,n,t)=>({code:e,kind:cs[e],severity:"error",node:n,message:t}),V=(e,n,t,s="error")=>({code:e,kind:cs[e],severity:s,node:n,message:t}),S={notAssignable:(e,n,t,s={})=>{let r=_$1(n,t,s),a=r.filter(c=>c.path.length>0),o=a.length?` ${ma(a)}.`:"",l=C("not-assignable",e,`Type '${ka$1(n)}' is not assignable to type '${ka$1(t)}'.${o}`),i=r.filter(c=>c.kind==="missing"&&c.path.length===1).map(c=>({name:c.path[0],type:c.expected}));return i.length?{...l,data:{kind:"missing-properties",properties:i}}:l},unknownName:(e,n)=>C("unknown-name",e,`Cannot find name '${n}'.`),notCallable:(e,n)=>C("not-callable",e,`Type '${ka$1(n)}' is not callable.`),noSuchMember:(e,n,t)=>C("no-such-member",e,`Property '${t}' does not exist on type '${ka$1(n)}'.`),notObject:(e,n)=>C("not-object",e,`Type '${ka$1(n)}' has no members to access.`),possiblyNullish:(e,n,t=false)=>{let s=n.null&&n.undefined?"'null' or 'undefined'":n.null?"'null'":"'undefined'";return C("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${s}.`:`Object is possibly ${s}.`)},unknownValue:e=>C("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>C("const-needs-init",e,"'const' declarations must be initialized."),missingArgument:(e,n,t)=>C("missing-argument",e,`Missing argument '${n}' of type '${ka$1(t)}'.`),notASchema:(e,n)=>C("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)=>C("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)=>C("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>C("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)=>C("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),cannotRedeclare:(e,n)=>C("cannot-redeclare",e,`Cannot redeclare block-scoped variable '${n}'.`),circularTypeAlias:(e,n)=>C("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>C("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>C("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,s,r=false)=>C(s==="missing"?"missing-argument":"excess-argument",e,r?`Expected at least ${n} arguments, but got ${t}.`:`Expected ${n} arguments, but got ${t}.`),excessProperty:(e,n,t)=>C("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${ka$1(t)}'.`),spreadArgument:e=>C("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>C("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>C("not-iterable",e,`Type '${ka$1(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),propsMismatch:(e,n,t)=>C("props-mismatch",e,`Payload is not compatible with the component props '${ka$1(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>C("no-matching-overload",e,`No overload of '${ka$1(n)}' matches the arguments (${t.map(s=>ka$1(s)).join(", ")}).`),constraintViolation:(e,n,t,s)=>C("constraint-violation",e,`Type '${ka$1(t)}' does not satisfy the constraint '${n} extends ${ka$1(s)}'.`),unsupported:(e,n)=>C("unsupported",e,`${n} is not supported in this language.`),wrongTypeArgumentCount:(e,n,t)=>C("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,s)=>C("wrong-type-argument-count",e,`No overload expects ${n} type arguments, but overloads do exist that expect either ${t} or ${s} type arguments.`),genericTypeArity:(e,n,t,s)=>C("wrong-type-argument-count",e,s===0?`Type '${n}' is not generic.`:t===s?`Generic type '${n}' requires ${s} type argument${s===1?"":"s"}.`:`Generic type '${n}' requires between ${t} and ${s} type arguments.`),unusedName:(e,n)=>V("unused-name",e,`'${n}' is declared but its value is never read.`,"warning"),assignToConst:(e,n,t)=>C("assign-to-const",e,t==="import"?`Cannot assign to '${n}' because it is an import.`:`Cannot assign to '${n}' because it is a constant.`),readonlyWrite:(e,n)=>C("readonly-write",e,`Index signature in type '${ka$1(n)}' only permits reading.`),castUnsound:(e,n,t)=>C("cast-unsound",e,`Conversion of type '${ka$1(n)}' to type '${ka$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,s)=>C("unprovable-value",e,`A value of type '${ka$1(n)}' can never satisfy '${s}' (${ka$1(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>C("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,s)=>C("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${ka$1(t)}' and '${ka$1(s)}'.`),implicitCoercion:(e,n,t,s)=>({...C("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${ka$1(n)}' and '${ka$1(t)}'. `+(s?"Use a template literal or 'asString(\u2026)'.":"Use 'stringify(\u2026)' to serialize a structure.")),data:{kind:"implicit-coercion",textConvertible:s}}),notTextConvertible:(e,n)=>({...C("implicit-coercion",e,`Cannot convert '${ka$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 _(){let e=[];return {all:e,report(n){e.push(n);},hasErrors(){return e.some(n=>n.severity==="error")}}}function Qe(e,n,t){let s=L$1(e);return aa$1(n,M$1(s),t)||aa$1(s,n,t)}function ls(e,n,t){return $(e,n,t)}function at(e,n,t={}){return n.flatMap(s=>s(e,t))}function ve(e,n){let t=s=>{n(s);for(let r of childrenOf(s))t(r);};t(e);}var na=e=>Array.isArray(e)?e:[e],us=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function ot(e,n="error"){return t=>{let s=[];return ve(t,r=>{let a=nodeViolation(r,e);a&&s.push(V("node-not-allowed",r,`'${a}' is not allowed by the capability profile.`,n));}),s}}function ps(e,n="error"){let t=e.typeTier;return s=>{if(t==="author")return [];let r=[];return ve(s,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(fa$1(i,l),t);c.length&&r.push(V("type-feature-not-allowed",a,`authoring type feature${c.length>1?"s":""} '${c.join("', '")}' requires capability tier 'author'.`,n));}}),r}}function I(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=>I(t.type,n))||!!e.index&&I(e.index.value,n);case "array":return I(e.items,n);case "tuple":return e.elements.some(t=>I(t,n));case "union":case "intersection":return e.of.some(t=>I(t,n));case "fn":return e.params.some(t=>I(t.type,n))||I(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(s=>I(s.type,n))||I(t.returns,n));case "keyof":return I(e.of,n);case "index":return I(e.obj,n)||I(e.key,n);case "mapped":return I(e.over,n)||I(e.body,n);case "conditional":return I(e.check,n)||I(e.extends,n)||I(e.then,n)||I(e.else,n);case "returnType":case "parameters":return I(e.fn,n);case "apply":return e.args.some(t=>I(t,n));default:return false}}function ds(e,n="error"){return t=>{if(!e.typeStrict)return [];let s=[];return ve(t,r=>{let a=r;for(let o of [a.typeAnnotation,a.returnType])if(o&&I(o)){s.push(V("any-not-allowed",r,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),s}}function fs(e,n="error"){return (t,s)=>{let r=s.overlay;if(!e.typeStrict||!r)return [];let a=s.schemes??{},o=[];return ve(t,l=>{if(l.type!=="TSAsExpression")return;let{expression:i}=l,c=r.get(i)?.type,u=r.get(l)?.type;!c||!u||I(u)||!Qe(c,u,a)||ls(c,u,a)||o.push(V("narrowing-cast-not-allowed",l,`A cast may only widen under 'strict': '${ka$1(c)}' is not assignable to '${ka$1(u)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),o}}function it(e,n="error"){let t=new Set(e);return s=>{let r=[];return ve(s,a=>{if(a.type!=="CallExpression")return;let o=a.callee;if(o.type!=="Identifier")r.push(V("name-not-allowed",o,"Only direct calls to allowed functions are permitted.",n));else {let l=o.name;t.has(l)||r.push(V("name-not-allowed",o,`Function '${l}' is not allowed here.`,n));}}),r}}function Rn(e,n,t={}){let s=new Set(na(e)),r=t.severity??"error",a=[...s].join("/");return o=>{let l=[],i=(c,u)=>{let p=s.has(c.type),m=p?u+1:u;p&&m>n&&l.push(V("too-deep",c,`Nesting of ${a} exceeds ${n}${t.hint?` \u2014 ${t.hint}`:""}.`,r));for(let y of childrenOf(c))i(y,m);};return i(o,0),l}}var ct=(e=3,n="error")=>Rn(us,e,{hint:"use a pipe instead of nesting functions",severity:n}),lt=(e,n="error")=>Rn("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),ut=(e,n="error")=>Rn("MemberExpression",e,{severity:n});function pt(e,n="error"){return t=>{let s=[],r=(a,o)=>{if(o>e){s.push(V("too-deep",a,`Expression nesting exceeds ${e}.`,n));return}for(let l of childrenOf(a))r(l,o+1);};return r(t,0),s}}function dt(e,n="error"){return t=>{let s=0;return ve(t,()=>{s++;}),s>e?[V("too-large",t,`Expression has ${s} nodes (max ${e}).`,n)]:[]}}function ft(e,n="error"){return t=>{let s=[];return ve(t,r=>{if(r.type==="CallExpression"){let a=r.arguments;a&&a.length>e&&s.push(V("too-large",r,`Call has ${a.length} arguments (max ${e}).`,n));}}),s}}function mt(e,n={},t="error"){return (s,r)=>{let a=r.overlay?.get(s)?.type;return a?$(a,e,n)?[]:[V("wrong-result-type",s,`Result type '${ka$1(a)}' is not assignable to the required '${ka$1(e)}'.`,t)]:[]}}function Cn(e){let n=[ot(e),ps(e),ds(e),fs(e)];return e.hostAllow!=="*"&&n.push(it([...e.hostAllow])),n}function sa(e){return Cn(compileProfile(e))}var yt=[{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"}],He=new Map(yt.map(e=>[e.op,e])),ms={number:o.number,boolean:o.boolean,string:o.string},ht=e=>ms[e],ys=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],ra={number:o.number,boolean:o.boolean,string:o.string,undefined:o.undefined},aa=[{op:"&&"},{op:"||"},{op:"??"}];function oa(e,n={}){return yt.filter(t=>t.result==="additive"?$(o.string,e,n)||$(o.number,e,n):$(ms[t.result],e,n))}function ia(e,n={}){return ys.filter(t=>$(ra[t.result],e,n))}var Ee=e=>({bindings:new Map,parent:e}),gs=e=>e.charCodeAt(0)===95;function Tn(e,n,t,s,r,a){let o=e.bindings.get(t);o&&(o.exempt=true);let l={name:t,node:s,kind:r,exempt:a,used:false};e.bindings.set(t,l),n.all.push(l);}function en(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let s of e)en(s,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let s=t.path[0];typeof s=="string"&&Pn(n,s);return}for(let s of Object.keys(t))en(t[s],n);}function Ss(e,n){let t=e;en(t.typeAnnotation,n),en(t.returnType,n);}function Pn(e,n){for(let t=e;t;t=t.parent){let s=t.bindings.get(n);if(s){s.used=true;return}}}function ie(e,n,t,s,r,a){if(e)switch(e.type){case "Identifier":{let o=e.name;Ss(e,n),Tn(n,t,o,e,s,r||a&&gs(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")ie(c.argument,n,t,s,r,false);else {let m=c;m.computed&&M(m.key,n,t),ie(m.value,n,t,s,r||p,!m.shorthand);}});return}case "ArrayPattern":{for(let o of e.elements){if(!o)continue;let l=o;ie(l.type==="RestElement"?l.argument:l,n,t,s,r,true);}return}case "AssignmentPattern":ie(e.left,n,t,s,r,a);return;case "RestElement":ie(e.argument,n,t,s,r,true);return;default:return}}function Ze(e,n,t){if(e)switch(e.type){case "AssignmentPattern":M(e.right,n,t),Ze(e.left,n,t);return;case "ObjectPattern":for(let s of e.properties)Ze(s.type==="RestElement"?s.argument:s.value,n,t);return;case "ArrayPattern":for(let s of e.elements)s&&Ze(s,n,t);return;case "RestElement":Ze(e.argument,n,t);return;default:return}}function hs(e,n,t,s){for(let r of e.declarations)ie(r.id,n,t,"local",s,false),M(r.init,n,t);}function gt(e,n,t){let s=e,r=Ee(n),a=s.params??[];for(let o of a)ie(o,r,t,"parameter",false,true);for(let o of a)Ze(o,r,t);M(s.body,r,t);}function M(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(Ss(e,n),e.type){case "Identifier":Pn(n,e.name);return;case "MemberExpression":{let s=e;M(s.object,n,t),s.computed&&M(s.property,n,t);return}case "Property":{let s=e;s.computed&&M(s.key,n,t),M(s.value,n,t);return}case "Program":case "BlockStatement":{let s=Ee(n);for(let r of e.body??[])M(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":gt(e,n,t);return;case "FunctionDeclaration":{let s=e.id;s&&Tn(n,t,s.name,s,"local",false),gt(e,n,t);return}case "CatchClause":{let s=e,r=Ee(n);ie(s.param,r,t,"local",true,false),M(s.body,r,t);return}case "SwitchStatement":{let s=e;M(s.discriminant,n,t);let r=Ee(n);for(let a of s.cases){M(a.test,r,t);for(let o of a.consequent??[])M(o,r,t);}return}case "ForStatement":{let s=e,r=Ee(n);M(s.init,r,t),M(s.test,r,t),M(s.update,r,t),M(s.body,r,t);return}case "ForOfStatement":case "ForInStatement":{let s=e;M(s.right,n,t);let r=Ee(n),a=s.left;if(a.type==="VariableDeclaration")for(let o of a.declarations)ie(o.id,r,t,"local",false,true);else M(a,r,t);M(s.body,r,t);return}case "VariableDeclaration":hs(e,n,t,false);return;case "ImportDeclaration":{for(let s of e.specifiers){let r=s.local;r&&Tn(n,t,r.name,r,"import",gs(r.name));}return}case "ExportNamedDeclaration":{let s=e;if(s.declaration){let r=s.declaration;if(r.type==="VariableDeclaration")hs(r,n,t,true);else if(r.type==="FunctionDeclaration"){let a=r.id;a&&Tn(n,t,a.name,a,"local",true),gt(r,n,t);}else M(r,n,t);}else for(let r of s.specifiers)Pn(n,r.local.name);return}case "TSAsExpression":M(e.expression,n,t);return;case "TSTypeAliasDeclaration":en(e.typeAnnotation,n);return;case "JsonExpression":St(e.body,n,t);return;case "JSXOpeningElement":{let s=e;bs(s.name,n);for(let r of s.attributes??[])M(r,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":M(e.value,n,t);return;default:{let s=m(VisitorKeys,e.type);if(!s)return;let r=e;for(let a of s){let o=m(r,a);if(Array.isArray(o))for(let l of o)M(l,n,t);else M(o,n,t);}return}}}function bs(e,n,t){e&&(e.type==="JSXIdentifier"?Pn(n,e.name):e.type==="JSXMemberExpression"&&bs(e.object,n));}function St(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)St(r,n,t);return}let s=e;if(isExprMarker(s)){try{M(fromJson(s),n,t);}catch{}return}for(let r of Object.keys(s))St(s[r],n,t);}function bt(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};M(e,Ee(void 0),t);let s=[];for(let r of t.all)r.used||r.exempt||(r.kind==="parameter"?n.parameters:n.locals)&&s.push(S.unusedName(r.node,r.name));return s}var da=new Set(["const","import"]),nn=e=>({binds:new Map,parent:e});function fa(e,n){for(let t=e;t;t=t.parent){let s=t.binds.get(n);if(s)return s}}function Ae(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Ae(n.argument):Ae(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?Ae(n):[]);case "AssignmentPattern":return Ae(e.left);case "RestElement":return Ae(e.argument);default:return []}}var Dn=(e,n,t)=>{for(let s of Ae(n))e.binds.set(s.name,t);};function Nt(e,n,t){if(!e)return;if(e.type!=="Identifier"){for(let a of Ae(e))Nt(a,n,t);return}let s=e.name,r=fa(n,s);r&&da.has(r)&&(t.invalid.add(e),t.out.push(S.assignToConst(e,s,r==="import"?"import":"const")));}function x(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let s=e;Nt(s.left,n,t),x(s.right,n,t);return}case "UpdateExpression":{Nt(e.argument,n,t);return}case "Program":case "BlockStatement":{let s=nn(n);for(let r of e.body??[])x(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let s=e,r=nn(n);for(let a of s.params??[])Dn(r,a,"param");x(s.body,r,t);return}case "CatchClause":{let s=e,r=nn(n);Dn(r,s.param,"param"),x(s.body,r,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let s=e,r=nn(n),a=s.left??s.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)Dn(r,o.id,a.kind);else a&&x(a,r,t);x(s.right,n,t),x(s.test,r,t),x(s.update,r,t),x(s.body,r,t);return}case "VariableDeclaration":{let s=e;for(let r of s.declarations)x(r.init,n,t),Dn(n,r.id,s.kind);return}case "ImportDeclaration":{for(let s of e.specifiers){let r=s.local;r&&n.binds.set(r.name,"import");}return}case "ExportNamedDeclaration":{let s=e;s.declaration&&x(s.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":x(e.expression,n,t);return;default:{let s=m(VisitorKeys,e.type);if(!s)return;let r=e;for(let a of s){let o=m(r,a);if(Array.isArray(o))for(let l of o)x(l,n,t);else x(o,n,t);}return}}}function Bt(e){let n={out:[],invalid:new WeakSet};return x(e,nn(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var tn=e=>({decls:new Map,parent:e});function ya(e,n){for(let t=e;t;t=t.parent){let s=t.decls.get(n);if(s)return s}}function Ve(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Ve(n.argument):Ve(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?Ve(n):[]);case "AssignmentPattern":return Ve(e.left);case "RestElement":return Ve(e.argument);default:return []}}var jn=(e,n)=>{for(let t of Ve(n))e.decls.set(t.name,t);};function U(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let s=ya(n,e.name);s&&s!==e&&t.set(e,s);return}case "MemberExpression":{let s=e;U(s.object,n,t),s.computed&&U(s.property,n,t);return}case "Property":{let s=e;s.computed&&U(s.key,n,t),U(s.value,n,t);return}case "Program":case "BlockStatement":{let s=tn(n);for(let r of e.body??[])U(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let s=e,r=e.id;r&&n.decls.set(r.name,r);let a=tn(n);for(let o of s.params??[])jn(a,o);U(s.body,a,t);return}case "CatchClause":{let s=e,r=tn(n);jn(r,s.param),U(s.body,r,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let s=e,r=tn(n),a=s.left??s.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)jn(r,o.id);else a&&U(a,r,t);U(s.right,n,t),U(s.test,r,t),U(s.update,r,t),U(s.body,r,t);return}case "VariableDeclaration":{for(let s of e.declarations)jn(n,s.id),U(s.init,n,t);return}case "ImportDeclaration":{for(let s of e.specifiers){let r=s.local;r&&n.decls.set(r.name,r);}return}case "TSTypeAliasDeclaration":{let s=e.id;s&&n.decls.set(s.name,s);return}case "TSAsExpression":U(e.expression,n,t);return;default:{let s=m(VisitorKeys,e.type);if(!s)return;let r=e;for(let a of s){let o=m(r,a);if(Array.isArray(o))for(let l of o)U(l,n,t);else U(o,n,t);}return}}}function ha(e){let n=new WeakMap;return U(e,tn(void 0),n),n}function ba(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,s)=>t===n.path[s])}var sn=e=>({decls:new Map,parent:e});function Bs(e,n){for(let t=e;t;t=t.parent){let s=t.decls.get(n);if(s)return s}}var Na=e=>e?.type==="Literal"&&typeof e.value=="string";function In(e,n){if(!n&&e.type==="Identifier")return e.name;if(Na(e))return e.value}function xe(e,n,t){if(e)switch(e.type){case "Identifier":{let s=e.name,r=Bs(n,s);return r?t.aliases.get(r):[s]}case "MemberExpression":{let s=e,r=xe(s.object,n,t),a=In(s.property,s.computed);return r&&a!==void 0?[...r,a]:void 0}case "ChainExpression":return xe(e.expression,n,t);default:return}}var ks=(e,n)=>{let t=Bs(n,e);return t?{kind:"local",declaration:t}:{kind:"environment",path:[e]}};function Mn(e,n,t,s,r){s.out.push({site:"node",node:e,symbol:ks(n,t),...r?{shorthand:r}:{}});}function rn(e,n,t,s){n.decls.set(e.name,e),t.out.push({site:"node",node:e,symbol:{kind:"local",declaration:e},isDeclaration:true,...s?{shorthand:s}:{}});}function ce(e,n,t,s,r,a){if(e)switch(e.type){case "Identifier":rn(e,n,t),Ke(e,n,t),r&&s&&t.aliases.set(e,s);return;case "ObjectPattern":for(let o of e.properties){if(o.type==="RestElement"){ce(o.argument,n,t,void 0,false,a);continue}let l=o,i=l.key;l.computed&&j(i,a,t);let c=In(i,l.computed),u=s&&c!==void 0?[...s,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?(rn(m,n,t,"property"),Ke(m,n,t),r&&u&&t.aliases.set(m,u),p.type==="AssignmentPattern"&&j(p.right,a,t)):ce(p,n,t,u,r,a);}return;case "ArrayPattern":for(let o of e.elements)ce(o,n,t,void 0,false,a);return;case "AssignmentPattern":{let o=e;ce(o.left,n,t,s,r,a),j(o.right,a,t);return}case "RestElement":ce(e.argument,n,t,void 0,false,a);return;default:j(e,n,t);}}function Ke(e,n,t){let s=e;for(let a of ERASABLE_TYPE_NODE_KEYS)kt(m(s,a),n,t);let r=s.typeParameters;if(Array.isArray(r))for(let a of r)Ke(a,n,t);}function kt(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)kt(r,n,t);return}let s=e;if(s.type==="TSTypeQuery"){let r=s.exprName,a=ks(r[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&&r.slice(1).forEach((l,i)=>t.out.push({site:"typeQuery",node:e,segment:i+1,symbol:{kind:"environment",path:[...o,...r.slice(1,i+2)]}}));return}for(let[r,a]of Object.entries(s))r!=="loc"&&r!=="range"&&kt(a,n,t);}function ws(e,n,t){if(e){if(e.type==="JSXIdentifier"){let s=e.name;/^[A-Z_$]/.test(s)&&Mn(e,s,n,t);return}if(e.type==="JSXMemberExpression"){let s=e;ws(s.object,n,t);let r=s.object,a=r.type==="JSXIdentifier"?xe({type:"Identifier",name:r.name},n,t):void 0;a&&t.out.push({site:"node",node:s.property,symbol:{kind:"environment",path:[...a,s.property.name]}});}}}function j(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":Mn(e,e.name,n,t);return;case "MemberExpression":{let s=e;j(s.object,n,t);let r=xe(s.object,n,t),a=In(s.property,s.computed);r&&a!==void 0?t.out.push({site:"node",node:s.property,symbol:{kind:"environment",path:[...r,a]}}):s.computed&&j(s.property,n,t);return}case "Property":{let s=e;if(s.computed&&j(s.key,n,t),s.shorthand&&s.value.type==="Identifier"){let r=s.value;Mn(s.value,r.name,n,t,"property");return}j(s.value,n,t);return}case "Program":case "BlockStatement":{let s=sn(n);for(let r of e.body??[])j(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let s=e,r=e.id;r&&rn(r,n,t);let a=sn(n);for(let o of s.params??[])ce(o,a,t,void 0,false,a);Ke(e,a,t),j(s.body,a,t);return}case "CatchClause":{let s=e,r=sn(n);ce(s.param,r,t,void 0,false,r),j(s.body,r,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let s=e,r=sn(n),a=s.left??s.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)ce(o.id,r,t,void 0,false,r),j(o.init,r,t);else a&&j(a,r,t);j(s.right,n,t),j(s.test,r,t),j(s.update,r,t),j(s.body,r,t);return}case "VariableDeclaration":{let s=e;for(let r of s.declarations){let a=xe(r.init,n,t);ce(r.id,n,t,a,s.kind==="const",n),j(r.init,n,t);}return}case "AssignmentExpression":{let s=e,r=s.left;s.operator==="="&&["ObjectPattern","ArrayPattern","ObjectExpression","ArrayExpression"].includes(r.type)?Ue(r,xe(s.right,n,t),n,t):j(r,n,t),j(s.right,n,t);return}case "ImportDeclaration":{for(let s of e.specifiers){let r=s,a=r.type==="ImportSpecifier"&&(r.imported===r.local||r.imported?.name===r.local.name);rn(r.local,n,t,a?"import":void 0);}return}case "TSTypeAliasDeclaration":{let s=e.id;rn(s,n,t),t.typeAliases.has(s.name)||t.typeAliases.set(s.name,s),Ke(e,n,t);return}case "TSAsExpression":j(e.expression,n,t),Ke(e,n,t);return;case "JSXOpeningElement":case "JSXClosingElement":{let s=e;if(ws(s.name,n,t),e.type==="JSXOpeningElement")for(let r of s.attributes)r.type==="JSXSpreadAttribute"?j(r.argument,n,t):j(r.value,n,t);return}default:{let s=m(VisitorKeys,e.type);if(!s)return;let r=e;for(let a of s){let o=m(r,a);if(Array.isArray(o))for(let l of o)j(l,n,t);else j(o,n,t);}return}}}function Ns(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 Ue(e,n,t,s){switch(e.type){case "ObjectPattern":case "ObjectExpression":for(let r of e.properties){if(r.type==="RestElement"||r.type==="SpreadElement"){Ue(r.argument,void 0,t,s);continue}let a=r,o=a.key;a.computed&&j(o,t,s);let l=In(o,a.computed),i=n&&l!==void 0?[...n,l]:void 0,c=a.value,u=Ns(c),p=u?.target??c,m=!!a.shorthand&&p.type==="Identifier";i&&s.out.push({site:"node",node:o,symbol:{kind:"environment",path:i},...m?{shorthand:"binding"}:{}}),m?Mn(p,p.name,t,s,"property"):Ue(p,i,t,s),u&&j(u.value,t,s);}return;case "ArrayPattern":case "ArrayExpression":for(let r of e.elements)r&&Ue(r.type==="SpreadElement"?r.argument:r,void 0,t,s);return;case "AssignmentPattern":case "AssignmentExpression":{let r=Ns(e);if(!r)return j(e,t,s);Ue(r.target,n,t,s),j(r.value,t,s);return}case "RestElement":Ue(e.argument,void 0,t,s);return;default:j(e,t,s);}}function Ba(e,n){let t=e.typeRefs;if(t?.length)for(let s of t){let r=s.name?n.typeAliases.get(s.name):void 0;r&&n.out.push({site:"typeRef",ref:s,symbol:{kind:"local",declaration:r}});}}function ka(e){let n={out:[],aliases:new WeakMap,typeAliases:new Map};return j(e,sn(void 0),n),Ba(e,n),n.out}function Z(e,n,t,s){switch(e.t){case "apply":if(n.has(e.name)&&s.add(e.name),t.has(e.name))for(let r of e.args)Z(r,n,t,s);return;case "union":case "intersection":for(let r of e.of)Z(r,n,t,s);return;case "conditional":Z(e.check,n,t,s),Z(e.extends,n,t,s),Z(e.then,n,t,s),Z(e.else,n,t,s);return;case "keyof":Z(e.of,n,t,s);return;case "index":Z(e.obj,n,t,s),Z(e.key,n,t,s);return;case "returnType":case "parameters":Z(e.fn,n,t,s);return;default:return}}function Es(e,n){let t=new Set(Object.keys(e)),s=new Set(Object.keys(n)),r=new Map;for(let[o,l]of Object.entries(e)){let i=new Set;Z(l.body,t,s,i),r.set(o,i);}let a=new Set;for(let o of t){let l=new Set,i=[...r.get(o)];for(;i.length;){let c=i.pop();if(c===o){a.add(o);break}l.has(c)||(l.add(c),i.push(...r.get(c)));}}return a}var wt=e=>`a\0${e}`,vs=(e,n)=>`p\0${e}\0${n}`;function As(e,n){let t=new Set(Object.keys(e)),s=new Set(Object.keys(n)),r=new Map,a=new Map;for(let[f,h]of Object.entries(e))a.set(f,wa(h.body));let o=f=>a.get(f),l=(f,h)=>{switch(f.t){case "literal":return h.has(String(f.value))?[String(f.value)]:[];case "union":return f.of.flatMap(g=>l(g,h));case "keyof":{let g=f.of.t==="apply"?m(e,f.of.name):void 0,b=g?vt(g.body):void 0;return b?[...b].filter(A=>h.has(A)):[]}default:return []}},i=(f,h,g)=>{switch(f.t){case "apply":if(t.has(f.name)&&g.add(wt(f.name)),s.has(f.name)||h==="annotation")for(let b of f.args)i(b,h,g);return;case "index":{if(f.obj.t==="apply"){let b=o(f.obj.name);if(b)for(let A of l(f.key,b))g.add(vs(f.obj.name,A));}i(f.obj,h,g),i(f.key,h,g);return}case "union":case "intersection":for(let b of f.of)i(b,h,g);return;case "conditional":i(f.check,h,g),i(f.extends,h,g),i(f.then,h,g),i(f.else,h,g);return;case "keyof":i(f.of,h,g);return;case "returnType":case "parameters":i(f.fn,h,g);return;case "array":h==="annotation"&&i(f.items,h,g);return;case "tuple":if(h==="annotation")for(let b of f.elements)i(b,h,g);return;default:return}};for(let f of Object.keys(e)){let h=new Set;i(e[f].body,"aliasBody",h),r.set(wt(f),h);for(let[g,b]of o(f)??[]){let A=new Set;for(let P of b)i(P,"annotation",A);r.set(vs(f,g),A);}}let c=new Map,u=f=>{let h=c.get(f);if(h)return h;let g=new Set;c.set(f,g);let b=[...r.get(f)??[]];for(;b.length;){let A=b.pop();g.has(A)||(g.add(A),b.push(...r.get(A)??[]));}return g},p=new Map,m$1=[];for(let f of r.keys()){if(!f.startsWith("p\0")||!u(f).has(f))continue;m$1.push(f);let[,h,g]=f.split("\0");p.has(h)||p.set(h,new Set),p.get(h).add(g);}let y=new Set;for(let f of Object.keys(e)){let h=wt(f),g=u(h);m$1.some(b=>g.has(b)&&u(b).has(h))&&y.add(f);}return {properties:p,aliases:y}}function wa(e){let n=new Map,t=s=>{if(s.t==="union"||s.t==="intersection")s.of.forEach(t);else if(s.t==="object")for(let[r,a]of Object.entries(s.props))n.has(r)||n.set(r,[]),n.get(r).push(a.type);};return t(e),n}function Et(e,n$1){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(s=>Et(s,n$1))};if(e.t!=="object")return e;let t={...e.props};for(let s of Object.keys(t))n$1.has(s)&&n(t,s,{...t[s],type:{t:"any"}});return {...e,props:t}}function vt(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...vt(n)]));case "union":{let[n,...t]=e.of.map(vt);return new Set([...n??[]].filter(s=>t.every(r=>r.has(s))))}default:return new Set}}var Fn=e=>e.typeAnnotation,At=e=>e.returnType;function $n(e){let n=e.typeParameters;if(n?.length)return n.map(t=>o.typeParam(t.name,{bound:t.bound,default:t.default}))}var q=e=>e.type==="Identifier"?e.name:null,Os=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?q(n.id):null}return q(e)},Rs=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},Oe=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function Cs(e){let n=s=>s&&s.type==="Literal"&&typeof s.value=="string"?s.value:null;if(e.length===1&&e[0].type==="ArrayExpression"){let s=[];for(let r of e[0].elements){let a=n(r);if(a===null)return null;s.push(a);}return s}let t=[];for(let s of e){let r=n(s);if(r===null)return null;t.push(r);}return t.length?t:null}function Ot(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=Ot(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var cn=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:s}=n.quasis[0].value;return t??s},le=e=>e.type==="Literal"||cn(e)!==null;function Re(e){let n=cn(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return o.unknown;let s=t.value;return s===null?o.null:s===void 0?o.undefined:typeof s=="string"||typeof s=="number"||typeof s=="boolean"?{t:"literal",value:s,fresh:true}:o.unknown}var Ne=e=>{let n=cn(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):Re(e)},Rt=e=>e.type==="ArrowFunctionExpression",Ts=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,ln=e=>Ts(e)?e.args[0]:e,un=e=>Ts(e)?e:o.promise(e);function on(e){return e.t==="tuple"?true:e.t==="array"?on(e.items):e.t==="union"?e.of.some(on):false}var va=e=>e?.t==="literal"?typeof e.value:void 0,an=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>an(t,n));function We(e,n){let t=va(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(s=>We(s,n));case "var":{let s=e.bound??o.unknown;return t!==void 0&&an(s,t)||t===void 0&&Ea(s)?true:We(s,n)}default:return false}}var Ea=e=>an(e,"string")||an(e,"number")||an(e,"boolean"),J=(e,n)=>{let t=e;for(let s=0;s<50&&t.t==="apply";s++){let r=G(t,n);if(r===t||r.t==="apply"&&r.name===t.name)break;t=r;}return t};function Ps(e){let n=At(e);if(!n)return null;let t=e.params.map((r,a)=>({name:q(r)??`arg${a}`,type:Fn(r)??o.unknown})),s=$n(e);return {t:"fn",params:t,returns:e.async?un(n):n,...s?{typeParams:s}:{}}}var ue={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 te=e=>e.includes("."),Te=e=>`${e}#`,Ct=e=>e.endsWith("#");function Pe(e,n,t){let s=W(e,n);return s!==void 0?s:Us(e,n,t)}var de=(e,n,t)=>{let s=Pe(e,n,t);return s===void 0?void 0:H(s,t)};function Us(e,n,t){let s=n.lastIndexOf(".");if(s<0)return;let r=Pe(e,n.slice(0,s),t);if(r!==void 0)return oa$1(r,[n.slice(s+1)],t)?.type}function Aa(e,n){let t=n+".",s=new Set;for(let r=e;r;r=r.parent)for(let a of Object.keys(r.vars))(a.startsWith(t)||a===n)&&te(a)&&s.add(a);return [...s].sort((r,a)=>r.length-a.length)}function Tt(e,n$1,t){let s=Aa(e,n$1);if(!s.length)return e;let r={};for(let a of s)n(r,a,Us(be(e,r),a,t)??o.unknown);return be(e,r)}var xs=new Set(["string","number","boolean","undefined","function","object"]),Oa={string:o.string,number:o.number,boolean:o.boolean,undefined:o.undefined,object:o.union([o.nonPrimitive,o.null])};function Ks(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 Ra=o.literal(true),Ca=o.literal(false),ae=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[Ra,Ca]:[n]),Ge=(e,n)=>{let t=e.filter(s=>Ln(s)||n(s));return t.length===e.length?null:ea(t)},Ln=e=>e.t==="unknown"||e.t==="any";function Ds(e,n){let t=e,s=n;if(e.type==="UnaryExpression"&&t.operator==="typeof"&&n.type==="Literal"&&typeof s.value=="string"){let r=z(t.argument);if(r!==null)return {name:r,tag:s.value}}return null}function Ta(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let r=ae(e).filter(a=>$(a,n,t));return ea(r)}function Pa(e,n,t){return e.t==="unknown"||e.t==="any"?null:Ge(ae(e),s=>!$(s,n,t))}function Da(e,n){if(!xs.has(n))return null;let t=m(Oa,n),s=ae(e),a=s.flatMap(o=>t&&Ln(o)?ae(t):[o]).filter(o=>Ks(o,n)||Ln(o));return a.length===s.length&&a.every((o,l)=>o===s[l])?null:ea(a)}function ja(e,n){if(!xs.has(n))return null;let t=ae(e),s=t.filter(r=>Ln(r)||!Ks(r,n));return s.length===t.length?null:ea(s)}function js(e,n){let t=z(e);if(t!==null&&le(n)){let s=Ne(n);if(s.t==="literal"||s.t==="null")return {name:t,lit:s}}return null}function Ms(e,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&le(n)){let t=z(e.object),s=Ne(n);if(t!==null&&(s.t==="literal"||s.t==="null"))return {name:t,prop:e.property.name,lit:s}}return null}function Is(e,n,t,s,r){let a=ae(e),o=l=>l.t==="object"?u(l.props,n)?.type:void 0;return Ge(a,l=>{let i=o(l);return s?!!i&&$(t,i,r):!(i&&$(i,t,r))})}function Fs(e,n,t){let s=ae(e),r=a=>a.t==="object"&&(l(a.props,n)||!!a.index);return Ge(s,a=>t?r(a):!r(a))}function Ma(e,n,t){return e.t==="unknown"||e.t==="any"||$(n,e,t)?n:null}function Ia(e,n,t){return Ge(ae(e),s=>!ba$1(s,n,t))}var pe=1,Ce=2,Fa=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function pn(e,n){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return pe|Ce;case "literal":return e.value?pe:Ce;case "null":case "undefined":case "void":return Ce;case "array":case "tuple":case "fn":case "overload":return pe;case "object":return Fa(e)?pe|Ce:pe;case "nonPrimitive":return pe;case "union":case "intersection":return e.of.reduce((t,s)=>t|pn(s,n),0);default:{let t=H(e,n);return t===e?pe|Ce:pn(t,n)}}}var Ws=(e,n)=>(pn(e,n)&Ce)!==0,Gs=(e,n)=>(pn(e,n)&pe)!==0,$s=(e,n,t)=>{let s=ae(e),r=s.filter(a=>pn(a,t)&n);return r.length===s.length?null:ea(r)},Ls=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,ee=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),$a=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function X(e,n,t){if(e.type==="BinaryExpression"){let r=e;if(r.operator==="in"){let h=r.left,g=r.right,b=z(g);if(h.type==="Literal"&&typeof h.value=="string"&&b!==null){let A=de(n,b,t);if(!A)return ue;let P=String(h.value);return ee(b,Fs(A,P,true),Fs(A,P,false))}return ue}if(!$a(r.operator))return ue;let a=r.operator==="!=="||r.operator==="!=",o=r.left,l=r.right,i=Ds(o,l)??Ds(l,o);if(i){let h=de(n,i.name,t);if(!h)return ue;let g=Da(h,i.tag),b=ja(h,i.tag);return a?ee(i.name,b,g):ee(i.name,g,b)}let c=Ls(o),u=Ls(l),p=c?l:u?o:null,m=p?z(p):null;if((c||u)&&m!==null){let h=m,g=de(n,h,t);if(!g)return ue;let A=r.operator==="=="||r.operator==="!="?["null","undefined"]:[c??u],P=ae(g),oe=Ge(P,O=>A.includes(O.t)),k=Ge(P,O=>!A.includes(O.t));return a?ee(h,k,oe):ee(h,oe,k)}let y=js(o,l)??js(l,o),f=Ms(o,l)??Ms(l,o);if(y||f){let h=ue;if(y){let g=de(n,y.name,t);if(g){let b=Ma(g,y.lit,t),A=Ia(g,y.lit,t);h=a?ee(y.name,A,b):ee(y.name,b,A);}}if(f){let g=de(n,f.name,t);if(g){let b=Is(g,f.prop,f.lit,true,t),A=Is(g,f.prop,f.lit,false,t),P=a?ee(f.name,A,b):ee(f.name,b,A);h={then:{...h.then,...P.then},else:{...h.else,...P.else}};}}return h}return ue}if(e.type==="UnaryExpression"&&e.operator==="!"){let r=X(e.argument,n,t);return {then:r.else,else:r.then}}if(e.type==="CallExpression"){let r=Va(e,n,t);if(r)return r}if(e.type==="LogicalExpression"){let r=e;if(r.operator==="&&"){let a=X(r.left,n,t),o=X(r.right,L(n,a.then),t);return {then:{...a.then,...o.then},else:Vs(a.else,{...a.then,...o.else},n,t)}}if(r.operator==="||"){let a=X(r.left,n,t),o=X(r.right,L(n,a.else),t);return {then:Vs(a.then,{...a.else,...o.then},n,t),else:{...a.else,...o.else}}}return ue}let s=z(e);if(s!==null){let r=de(n,s,t);if(r)return ee(s,$s(r,pe,t),$s(r,Ce,t))}return ue}function Vs(e,n$1,t,s){let r={};for(let a of Object.keys(e)){let o=e[a],l=m(n$1,a)??de(t,a,s);if(!l)continue;let i=ea([o,l]),c=de(t,a,s);c&&ba$1(i,c)||n(r,a,i);}return r}function La(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 Va(e,n,t){let s=e.callee;if(s.type!=="Identifier")return null;let r=W(n,s.name);if(!r)return null;let a=La(r,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=de(n,l,t);return i?ee(l,Ta(i,a.type,t),Pa(i,a.type,t)):null}var L=(e,n)=>Object.keys(n).length?be(e,n):e;function ne(e){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(t=>ne(t));case "IfStatement":{let n=e;return !!n.alternate&&ne(n.consequent)&&ne(n.alternate)}case "TryStatement":{let n=e;if(n.finalizer&&ne(n.finalizer))return true;let t=!n.handler||ne(n.handler.body);return ne(n.block)&&t}default:return false}}var Ga=e=>{let n$1={};for(let t of Object.keys(e))n(n$1,t,{params:[],body:e[t]});return n$1};function _a(e){let n=[];return e.maxDepth!==void 0&&n.push(pt(e.maxDepth)),e.maxNodes!==void 0&&n.push(dt(e.maxNodes)),e.maxArgs!==void 0&&n.push(ft(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(ct(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(lt(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(ut(e.memberDepth)),n}function za(e,n,t){let{min:s,max:r}=D(e.params);return n.length<s||n.length>r?true:It(e.params,n,t).length>0}function It(e,n,t){if(!e.some(a=>a.bound))return [];let s=E(e,n),r=[];return e.forEach((a,o)=>{if(!a.bound||o>=n.length)return;let l=A(a.bound,s);$(n[o],l,t)||r.push({param:a,arg:n[o],expected:l});}),r}function qa(e,n){let t=e.typeRefs;if(!t?.length)return [];let s=[];for(let r of t){let a={type:"Identifier",name:r.name,loc:r.loc},o=m(n,r.name);if(!o){s.push(V("unknown-name",a,`Cannot find name '${r.name}'.`));continue}let l=r.args;if(!l)continue;let{min:i,max:c}=D(o.params);if(l.length<i||l.length>c){s.push(S.genericTypeArity(a,r.name,i,c));continue}for(let u of It(o.params,l,n))s.push(S.constraintViolation(a,u.param.name,u.arg,u.expected));}return s}function or(e$1,n,t={}){let s=Qa(e$1),r={...Ga(n.types),...n.schemes,...s.schemes},{schemes:a,diagnostics:o$1}=Xa(s,r),{schemes:l,diagnostics:i$1}=Ya(s,a),c=Bt(e$1),u={overlay:new WeakMap,sink:_(),env:n,schemes:l,importNames:new Set,resolvedSchemes:new Set,invalidTargets:c.invalidTargets,evolving:new Set,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=Ha(e$1,u);try{m=B(e$1,y,u);}catch(g){if(g instanceof h||g instanceof i)u.sink.report(V("too-deep",e$1,g.message));else if(g instanceof k)u.sink.report(V("too-complex-union",e$1,g.message));else throw g;m=o.unknown;}let f=[];p&&f.push(...Cn(p)),t.limits&&f.push(..._a(t.limits)),t.resultType&&f.push(mt(t.resultType,l));let h$1=[...o$1,...i$1,...u.sink.all,...c.diagnostics,...qa(e$1,l),...t.unused?bt(e$1,t.unused):[],...f.length?at(e$1,f,{overlay:u.overlay,schemes:l}):[]];return {type:m,overlay:u.overlay,diagnostics:h$1,schemes:u.schemes}}finally{p&&f();}}function Ja(e,n$1,t={}){let s=or(e,n$1,t),r={},a=new Map,o$1,l=c=>{let u=[];if(c.type==="VariableDeclaration")for(let p of c.declarations){let m=q(p.id),y=s.overlay.get(p);m&&y&&(n(r,m,y.type),u.push(m));}else if(c.type==="FunctionDeclaration"){let p=c.id?.name,m=s.overlay.get(c);p&&m&&(n(r,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=s.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(r,u);p&&n(i,c,{type:p});}o$1!==void 0&&(i.default={type:o$1});}else for(let c in r)n(i,c,{type:r[c]});return {type:{t:"object",props:i},diagnostics:s.diagnostics}}function Xa(e,n$1){let t=Es(e.schemes,n$1),s=Object.fromEntries(Object.entries(e.schemes).filter(([c])=>!t.has(c))),r=As(s,n$1),a=new Set([...t,...r.aliases]);if(!a.size&&!r.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 r.properties){let p=m(e.schemes,c);a.has(c)||!p||n(o$1,c,{params:p.params,body:Et(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 r.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 r.aliases)i(c);return {schemes:o$1,diagnostics:l}}var ir=(e,n)=>e.t==="index"&&r(I$1(e,n));function zs(e,n$1,t,s){let r=a=>{if(Array.isArray(a)){let c=false,u=a.map(p=>{let m=r(p);return m!==p&&(c=true),m});return c?u:a}if(!a||typeof a!="object")return a;let o$1=a;if(ir(o$1,n$1)){let c=o$1;return s.push(S.noSuchMember(t,c.obj,cr(c.key))),o.any}let l=false,i={};for(let c of Object.keys(o$1)){let u=r(o$1[c]);u!==o$1[c]&&(l=true),n(i,c,u);}return l?i:o$1};return r(e)}var cr=e=>e.t==="literal"?String(e.value):ka$1(e);function Ya(e,n$1){let t=[],s={...n$1},r=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,h)=>f===p.of[h])?p:{...p,of:y}}if(i&&p.t==="object"){let y={},f=false;for(let[h,g]of Object.entries(p.props)){let b=zs(g.type,n$1,m(i,h)??m$1,t);b!==g.type&&(f=true),n(y,h,b===g.type?g:{...g,type:b});}return f?{...p,props:y}:p}return zs(p,n$1,m$1,t)},u=c(o.body,l);u!==o.body&&(n(s,a,{...o,body:u}),r=true);}return {schemes:r?s:n$1,diagnostics:t}}var Qa=e=>{let n$1={},t={},s={};return walk(e,{TSTypeAliasDeclaration(r){let a=r;if(!(!a.id?.name||!a.typeAnnotation)&&(n(n$1,a.id.name,{params:$n(r)??[],body:a.typeAnnotation}),n(t,a.id.name,a.id),a.typeNode)){let o={};lr(a.typeNode,o),n(s,a.id.name,o);}}}),{schemes:n$1,ids:t,props:s}};function lr(e,n$1){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])lr(t,n$1);else if(e.type==="TSTypeLiteral")for(let t of e.members??[]){let s=t.key;t.type==="TSPropertySignature"&&typeof s=="string"&&!l(n$1,s)&&n(n$1,s,t);}}function Ha(e,n$1){let t=n$1.env.modules,s={};walk(e,{ImportDeclaration(r){let a=r;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(s,i.local.name,o.unknown);return}for(let i of a.specifiers){if(i.importKind==="type")continue;let c=i.local.name;if(ke(c,i.local,n$1),l(s,c)){n$1.sink.report(S.cannotRedeclare(i.local,c));continue}if(i.type==="ImportNamespaceSpecifier"){n(s,c,l$1);continue}let u=i.type==="ImportSpecifier"?i.imported.name:"default",p=oa$1(l$1,[u],n$1.schemes);p?n(s,c,p.type):(n$1.sink.report(S.noSuchMember(i,l$1,u)),n(s,c,o.unknown));}}});for(let r in s)n$1.importNames.add(r);return Object.keys(s).length?be(n$1.env.scope,s):n$1.env.scope}var N=(e,n,t,s)=>(e.overlay.set(n,{type:t,scope:s}),t);function B(e,n,t,s){switch(j$1(),e.type){case fr:return e.schema;case "JSXElement":case "JSXFragment":return N(t,e,B(desugarJSX(e,{emptyPropsAsObject:true}),n,t),n);case "Literal":return N(t,e,Re(e),n);case "Placeholder":return N(t,e,o.any,n);case "Identifier":{let r=e.name,a=Cr(r,t)??W(n,r);return a===void 0?r==="undefined"?N(t,e,o.undefined,n):(t.sink.report(S.unknownName(e,r)),N(t,e,o.any,n)):N(t,e,a,n)}case "MemberExpression":return N(t,e,ur(e,n,t),n);case "CallExpression":return N(t,e,io(e,n,t,s),n);case "ArrowFunctionExpression":return Lt(e,n,t);case "FunctionDeclaration":return t.sink.report(S.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),N(t,e,o.unknown,n);case "FunctionExpression":return t.sink.report(S.unsupported(e,"anonymous function (use an arrow)")),N(t,e,o.unknown,n);case "ThisExpression":return t.sink.report(S.unsupported(e,"'this'")),N(t,e,o.unknown,n);case "BlockStatement":return N(t,e,Ar(e,n,t),n);case "ReturnStatement":{let r=e.argument;return N(t,e,r?B(r,n,t):o.unknown,n)}case "IfStatement":return se(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 se(e,n,t),t.overlay.get(e)?.type??o.unknown;case "AssignmentExpression":{let r=e,a=r.left;if(r.operator==="="&&(a.type==="ArrayExpression"||a.type==="ObjectExpression")){let y=B(r.right,n,t);return dn(a,y,n,t),N(t,e,y,n)}let o=r.operator!=="=",l=o?nr(a,n,t):Tr(a,n,t);if(a.type==="MemberExpression"){let y=t.overlay.get(a.object)?.type,f=y&&H(y,t.schemes);f&&(f.t==="array"||f.t==="tuple")&&f.readonly&&t.sink.report(S.readonlyWrite(a,f));}let i=z(a),c=t.invalidTargets.has(a);if(!o){let y=i!==null&&t.evolving.has(i),f=r.right,h=y||c?B(f,n,t):Y(f,l,n,t,true),g=le(f)?N(t,f,Re(f),n):h;return i!==null&&xn(i,n,t)?re(i,Kn(i,false,g,l,n,t),t):i!==null&&te(i)&&re(i,l,t),N(t,e,g,n)}let u=t.sink.all.length,p=Ro(r,l,n,t),m=t.sink.all.length>u;return !c&&!m&&!$(p,l,t.schemes)&&t.sink.report(S.notAssignable(e,p,l,t.schemes)),i!==null&&xn(i,n,t)?re(i,Kn(i,true,p,l,n,t),t):i!==null&&te(i)&&re(i,L$1(l),t),N(t,e,p,n)}case "UpdateExpression":{let a=e.argument,o$1=nr(a,n,t),l=ze(o$1,a,t);fn(l.type,t.schemes)||t.sink.report(S.arithmeticOperand(a,"operand"));let i=z(a);return i!==null&&xn(i,n,t)?re(i,Kn(i,true,o$1,o$1,n,t),t):i!==null&&te(i)&&re(i,L$1(o$1),t),N(t,e,o.number,n)}case "ExpressionStatement":return N(t,e,B(e.expression,n,t),n);case "VariableDeclaration":return Gn(e,n,t),N(t,e,o.unknown,n);case "TSTypeAliasDeclaration":{let r=e.id?.name,a=r?m(t.schemes,r):void 0;return N(t,e,a?ho(a.body,n,t,e,a.params.length>0):o.unknown,n)}case "BinaryExpression":return N(t,e,jo(e,n,t),n);case "LogicalExpression":{let r=e,a=B(r.left,n,t),o=r.operator==="??"?void 0:X(r.left,n,t.schemes),l=L(n,o?r.operator==="&&"?o.then:o.else:{}),{value:i,effect:c}=Pt(t,()=>B(r.right,l,t));return c.size&&er([{effect:c,scope:l},{scope:L(n,o?r.operator==="&&"?o.else:o.then:{})}],t),N(t,e,Fo(r.operator,a,i,t.schemes),n)}case "UnaryExpression":return N(t,e,Lo(e,n,t),n);case "ConditionalExpression":{let r=e;B(r.test,n,t);let a=X(r.test,n,t.schemes),o=L(n,a.then),l=L(n,a.else),i=Pt(t,()=>B(r.consequent,o,t)),c=Pt(t,()=>B(r.alternate,l,t));return (i.effect.size||c.effect.size)&&er([{effect:i.effect,scope:o},{effect:c.effect,scope:l}],t),N(t,e,ea([i.value,c.value]),n)}case "ObjectExpression":return N(t,e,Vo(e,n,t),n);case "ArrayExpression":return N(t,e,Vr(e,n,t),n);case "TemplateLiteral":{if(cn(e)!==null)return N(t,e,Re(e),n);for(let r of e.expressions){let a=B(r,n,t);Lr(a,t.schemes)||t.sink.report(S.notTextConvertible(r,a));}return N(t,e,o.string,n)}case "AwaitExpression":{let r=e.argument,a=r?B(r,n,t):o.unknown;return N(t,e,ln(a),n)}case "Program":{let r=Wn(e.body,n,t,new Set(t.importNames)).scope;return N(t,e,o.unknown,r)}case "JsonExpression":return N(t,e,Mt(e.body,n,t,e),n);case "ChainExpression":{let r=e.expression,a=B(r,n,t);return N(t,e,Za(r,t)?ea([a,o.undefined]):a,n)}case "TSAsExpression":{let r=e,a=B(r.expression,n,t),o=qe(r.typeAnnotation,n,t,e);return Qe(a,o,t.schemes)||t.sink.report(S.castUnsound(e,a,o)),N(t,e,o,n)}default:return t.sink.report(S.unsupported(e,`'${e.type}'`)),N(t,e,o.unknown,n)}}function ur(e,n,t,s=false){let r=B(e.object,n,t),a=no(e,r,n,t),o=s?null:z(e);if(o!==null&&te(o)){let l=Cr(o,t)??W(n,o);if(l!==void 0&&$(l,a,t.schemes))return l}return a}function Za(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 eo=e=>e.t==="unknown";function _n(e,n,t){return eo(e)?(t.sink.report(S.unknownValue(n)),true):false}function yn(e){let n=gn(e),t=n.some(r=>r.t==="null"),s=n.some(r=>r.t==="undefined");return t||s?{null:t,undefined:s}:null}function zn(e){let n=gn(e).filter(t=>t.t!=="null"&&t.t!=="undefined");return n.length===gn(e).length||n.length===0?e:ea(n)}function ze(e,n,t){if(_n(e,n,t))return {type:o.any,error:true};let s=yn(e);return s?(t.sink.report(S.possiblyNullish(n,s)),gn(e).filter(a=>a.t!=="null"&&a.t!=="undefined").length===0?{type:o.any,error:true}:{type:zn(e),error:false}):{type:e,error:false}}var pr=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(pr);function no(e,n,t,s){if(!e.optional&&_n(n,e.object,s))return N(s,e,o.any,t);let r=e.optional?null:yn(n);r&&s.sink.report(S.possiblyNullish(e.object,r)),e.optional&&yn(n)&&s.shortCircuits.add(e);let a=e.optional||r?zn(n):n;if(e.computed){let i=B(e.property,t,s);if(i.t==="literal"&&typeof i.value!="boolean"){let u=String(i.value),p=oa$1(a,[u],s.schemes);return p?p.type:(qs(e,a,u,s),o.any)}let c=p(o.index(a,i));return c.t!=="index"||pr(i)?c:o.unknown}let o$1=e.property.name,l=oa$1(a,[o$1],s.schemes);return l?l.type:(qs(e,a,o$1,s),o.any)}function qs(e,n,t,s){let r=F(n,s.schemes)?G(n,s.schemes):n;r.t==="object"||r.t==="array"||r.t==="tuple"||r.t==="union"?s.sink.report(S.noSuchMember(e,n,t)):r.t!=="any"&&r.t!=="unknown"&&s.sink.report(S.notObject(e,n));}function to(e,n,t,s){let r=e.arguments[0];if(!r){s.sink.report(S.missingArgument(e,"schema",o.unknown));return}if(r.type!=="Identifier"){s.sink.report(S.asserterNeedsName(r,n));return}let a=r.name,o$1=W(t,a),l=m(s.schemes,a);if(o$1===void 0){s.sink.report(l?S.typeAsValue(r,a):S.unknownName(r,a));return}if(!l||l.params.length>0){s.sink.report(S.notASchema(r,a));return}if(!(dr(a,s)&&!so(t,a)))return s.overlay.set(r,{type:l.body,scope:t}),l.body}function dr(e,n){if(!n.env.asserters?.size)return false;let t=m(n.schemes,e);return t!==void 0&&t.params.length===0&&W(n.env.scope,e)!==void 0}function so(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 ke(e,n,t){dr(e,t)&&t.sink.report(S.shadowsSchema(n,e));}function Ft(e,n){let t=J(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function ro(e,n){let t=W(e.scope,n);if(!t)return;let s=Ft(t,e.schemes);return s?J(s,e.schemes):void 0}function ao(e,n,t,s){let r=Ft(B(n[0],t,s),s.schemes),a=n.length>1?B(n[1],t,s):o.undefined;if(r){let o=_$1(a,r,s.schemes);o.length&&s.sink.report(S.propsMismatch(n[1]??e,r,ma(o)));}return N(s,e,o.boolean,t)}var fr="TSLiteSyntheticArg",oo=e=>({type:fr,schema:e});function mr(e,n,t){if(!e.some(a=>a.type==="SpreadElement"))return {nodes:[...e],spread:null};let s=[],r=null;for(let a of e){if(a.type!=="SpreadElement"){s.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)s.push(i);continue}let l=J(B(o,n,t),t.schemes);if(l.t==="tuple")for(let i of l.elements)s.push(oo(i));else r={elem:Vt(l,o,t),node:a};}return {nodes:s,spread:r}}function io(e,n,t,s){let r=t.inference?{...t,inference:void 0}:t,a=e.arguments,o$1=Ot(e.callee);if(o$1){let f=r.env.accessors?m(r.env.accessors,o$1):void 0;if(f){let h=Cs(a);if(h){let g=oa$1(f,h,r.schemes);return g?g.type:(r.sink.report(S.noSuchMember(e,f,h.join("."))),o.unknown)}return a.forEach(g=>B(g,n,r)),o.unknown}}if(o$1&&r.env.asserters?.has(o$1)){let f=to(e,o$1,n,r);a.length<2&&a.length>0&&r.sink.report(S.missingArgument(e,"value",o.unknown));for(let h=1;h<a.length;h++){let g=B(a[h],n,r);h===1&&f&&C$1(g).size===0&&!Qe(g,f,r.schemes)&&r.sink.report(S.unprovableValue(a[h],g,f,e.arguments[0].name));}return f??o.unknown}if(o$1&&r.env.matchers?.has(o$1))return ao(e,a,n,r);e.callee.type==="ArrowFunctionExpression"&&r.invoked.add(e.callee);let l=H(B(e.callee,n,r),r.schemes);if(!e.optional&&_n(l,e.callee,r))return N(r,e,o.any,n);let i=yn(l);i&&(e.optional?r.shortCircuits.add(e):r.sink.report(S.possiblyNullish(e.callee,i,true)));let c=i?H(zn(l),r.schemes):l;if(c.t==="any")return a.forEach(f=>B(f,n,r)),o.any;if(c.t==="overload")return uo(e,c,n,r,s);if(c.t!=="fn")return a.forEach(f=>B(f,n,r)),r.sink.report(S.notCallable(e,c)),o.unknown;let u=mr(a,n,r),p=u.nodes.map(f=>yr(f,n,r)),m$1=hr(e),y=!m$1||gr(c,m$1.length);return y||r.sink.report(Sr(e,[c],m$1.length)),hn(e,c,u.nodes,p,n,r,u.spread,s,y?m$1:void 0)}function yr(e,n,t){if(Rt(e))return o.any;if(e.type!=="CallExpression")return B(e,n,t);let s=_(),r=B(e,n,{...t,sink:s});return s.hasErrors()?o.any:(s.all.forEach(a=>t.sink.report(a)),r)}function hn(e,n,t,s,r,a,o$1=null,l,i){let c=k=>{if(!l)return k;let O=A(n.returns,k);if(O.t==="fn"&&l.t==="fn"){let R=k,K=Math.min(O.params.length,l.params.length);for(let Q=0;Q<K;Q++)R=W$1(O.params[Q].type,l.params[Q].type,R)??R;return W$1(O.returns,l.returns,R)??R}return W$1(O,l,k)??k};if(!o$1){let k=Nr(e,n,s.length,t);k&&(a.sink.report(k),a={...a,sink:_()});}let u=i?So(e,n,i,a):void 0,p=u??Un(n,c(Y$1(n,s).bindings)),m=u||!l?{}:Un(n,c({})),y={returnMapper:m,nonFixing:p,outer:Js(n,p)},f=new Set((n.typeParams??[]).map(k=>k.name)),h=k=>[...C$1(k)].some(O=>f.has(O)),g=new Set,b=[];t.forEach((k,O)=>{if(Rt(k)){let R=n.params[O]?.type??o.any,K=M$1(A(R,co(n,R,p,a.schemes)));s[O]=Lt(k,r,a,K);}else if(k.type==="CallExpression"&&s[O].t==="any")s[O]=B(k,r,a,A(n.params[O]?.type??o.unknown,Js(n,p)));else if(le(k)){let R=n.params[O]?.type??o.unknown,K=Ne(k);We(A(R,m),K)&&(s[O]=N(a,k,K,r));}else if(k.type==="ArrayExpression"||k.type==="ObjectExpression"||k.type==="ConditionalExpression"){let R=n.params[O]?.type??o.unknown,K=A(R,m);if(k.type==="ArrayExpression"&&on(K)){s[O]=Ut(k,K,r,{...a,inference:y}),b.push(O);return}if(R.t==="var"&&!R.bound||!xr(K,a.schemes))return;g.add(O),h(R)&&(s[O]=Y(k,R,r,{...a,sink:_(),inference:y},true)),b.push(O);}});let A$1=u||Dt(n,Un(n,c(Y$1(n,s).bindings)),a.schemes);u&&lo(e,n,A$1,a);for(let k of b)s[k]=xo(t[k],A(n.params[k].type,A$1),r,a,false);Bo(e,n,s,A$1,a,t,o$1),t.forEach((k,O)=>{let R=n.params[O];k.type==="ObjectExpression"&&R&&!R.variadic&&!g.has(O)&&jt(k,A(R.type,A$1),a);});let P=A(n.returns,Dt(n,A$1,a.schemes)),oe=P.t==="union"?ea(P.of):P;return N$1(Z$1(oe,a.schemes,void 0,0,C$1(oe)))}function Un(e,n$1){let t=e.typeParams;if(!t?.length)return {};let s={};for(let r of t){let a=m(n$1,r.name);a&&n(s,r.name,a);}return s}var Dt=(e,n,t)=>U$1(e.typeParams??[],n,t);function co(e,n$1,t,s){if(n$1.t!=="fn"||!e.typeParams?.some(l=>!m(t,l.name)))return t;let r=new Set;for(let l of n$1.params)for(let i of C$1(l.type))r.add(i);let a=Dt(e,t,s),o={...t};for(let l of e.typeParams){if(m(t,l.name)||!r.has(l.name))continue;let i=m(a,l.name);i&&n(o,l.name,i);}return o}function Js(e,n$1){if(!e.typeParams?.some(s=>!m(n$1,s.name)))return n$1;let t={...n$1};for(let s of e.typeParams)m(n$1,s.name)||n(t,s.name,P);return t}function lo(e,n,t,s){for(let r of n.typeParams??[]){let a=m(t,r.name);if(!r.bound||!a)continue;let o=A(r.bound,t);$(a,o,s.schemes)||s.sink.report(S.constraintViolation(e,r.name,a,o));}}function uo(e,n,t,s,r){let a=mr(e.arguments,t,s),o=a.nodes,l=o.map(u=>yr(u,t,s)),i=hr(e),c=i?n.signatures.filter(u=>gr(u,i.length)):n.signatures;return i&&!c.length?(s.sink.report(Sr(e,n.signatures,i.length)),Ys(e,n.signatures,a,o,l,t,s,r,void 0)):Ys(e,c,a,o,l,t,s,r,i)}function po(e,n,t,s,r,a,o){if(!n.length)return e;let i=n.map(p=>{let m=_();return hn(e,p,t,[...s],r,{...a,sink:m},o),m.all}).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 Xs(e,n,t,s,r,a){return n.length?!n.some(l=>l.typeParams?.length)&&n.length>1?o.intersection(n.map(l=>l.returns)):hn(e,fo(n,t.length),t,[...s],r,{...a,sink:_()},null):o.unknown}function fo(e,n){let t=e[0],s=-1;for(let r of e){let a=r.params.length;if(r.params.some(o=>o.variadic)||a>=n)return r;a>s&&(s=a,t=r);}return t}function Ys(e,n,t,s,r,a,o,l,i){let c={t:"overload",signatures:n},u=g=>t.spread?bo(g,s.length):br(g,s.length),p=c.signatures.filter(u);if(p.length>1)for(let g of p){let b=_(),A=hn(e,g,s,[...r],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)),A}let m=p.length>1?void 0:c.signatures.find(g=>u(g)&&No(g,r,o));if(m||(p.length===1?m=p[0]:c.signatures.length===1&&(m=c.signatures[0])),!m){let g=t.spread?null:Nr(e,c.signatures,s.length,s);return o.sink.report(g??S.noMatchingOverload(po(e,p,s,r,a,o,t.spread),c,r)),Xs(e,c.signatures,s,r,a,o)}let y=o.sink.all.length,f=hn(e,m,s,r,a,o,t.spread,l,i),h=o.sink.all.slice(y).some(g=>g.kind==="type"&&g.severity==="error");return c.signatures.length>1&&h?Xs(e,c.signatures,s,r,a,o):f}function mo(e,n,t,s){let r=W(n,e[0]);if(r===void 0)return t.sink.report(S.unknownName(s,e[0])),o.unknown;let a=e.slice(1),o$1=a.length?oa$1(r,a,t.schemes)?.type:r;return o$1?o$1.t==="literal"?o.literal(o$1.value):o$1:(t.sink.report(S.noSuchMember(s,r,a.join("."))),o.unknown)}function qe(e,n$1,t,s){let r=a=>{if(Array.isArray(a)){let c=false,u=a.map(p=>{let m=r(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 mo(o$1.path,n$1,t,s);if(o$1.t==="apply"&&typeof o$1.name=="string"){yo(o$1.name,n$1,t,s);let c=m(t.schemes,o$1.name);if(!c)return o.any;if(Array.isArray(o$1.args)&&za(c,o$1.args,t.schemes))return o.any}if(ir(o$1,t.schemes)){let c=o$1;return t.sink.report(S.noSuchMember(s,c.obj,cr(c.key))),o.any}if(o$1.t==="union"&&Array.isArray(o$1.of)){let c=o$1.of,u=c.map(y=>r(y)),p=u.every((y,f)=>y===c[f]),m=o.union(u);return m.t!=="union"?m:p?o$1:m}if(o$1.t==="intersection"&&Array.isArray(o$1.of)){let c=o$1.of,u=c.map(y=>r(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=>r(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=r(o$1[c]);u!==o$1[c]&&(l=true),n(i,c,u);}return l?i:o$1};return r(e)}function yo(e,n$1,t,s){if(t.resolvedSchemes.has(e))return;let r=m(t.schemes,e);if(!r)return;t.resolvedSchemes.add(e);let a=qe(r.body,n$1,t,s);a!==r.body&&n(t.schemes,e,{...r,body:a});}function ho(e,n,t,s,r){let a={...t,sink:_(),resolvedSchemes:new Set(Object.keys(t.schemes))},o=qe(e,n,a,s);return a.sink.hasErrors()?e:r?o:Z$1(o,t.schemes)}var mn=(e,n,t)=>{let s=Fn(e);return s===void 0?s:qe(s,n,t,e)},go=(e,n,t)=>{let s=At(e);return s===void 0?s:qe(s,n,t,e)},hr=e=>{let n=e.typeArguments;return n?.length?n:void 0},gr=(e,n)=>{let{min:t,max:s}=D(e.typeParams??[]);return n>=t&&n<=s};function Sr(e,n,t){if(n.length===1){let{min:a,max:o}=D(n[0].typeParams??[]);return S.wrongTypeArgumentCount(e,a<o?`${a}-${o}`:a,t)}let s=-1/0,r=1/0;for(let a of n){let{min:o,max:l}=D(a.typeParams??[]);o>t?r=Math.min(r,o):l<t&&(s=Math.max(s,l));}return s!==-1/0&&r!==1/0?S.noOverloadTypeArgumentCount(e,t,s,r):S.wrongTypeArgumentCount(e,s===-1/0?r:s,t)}function So(e,n,t,s){let r=n.typeParams??[],a=E(r,t.slice(0,r.length));for(let o of It(r,t,s.schemes))s.sink.report(S.constraintViolation(e,o.param.name,o.arg,o.expected));return a}function bo(e,n){let t=0,s=false;for(let r of e.params)r.variadic?s=true:r.optional||t++;return n>=t&&(s||n<e.params.length)}function br(e,n){let t=0;for(let s of e.params){if(s.variadic)return n>=t;s.optional||t++;}return n>=t&&n<=e.params.length}function Nr(e,n,t,s){let r=Array.isArray(n)?n:[n];if(!r.length||r.some(c=>br(c,t)))return null;let a=r.some(c=>c.params.some(u=>u.variadic)),o=Math.min(...r.map(c=>c.params.filter(u=>!u.optional&&!u.variadic).length)),l=Math.max(...r.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(s[l]??e,i,t,"excess",a)}function No(e,n,t){let s=Un(e,Y$1(e,n).bindings);for(let r=0;r<e.params.length;r++){let a=e.params[r];if(a.variadic){let o$1=A(a.type,s),l=o$1.t==="array"?o$1.items:o.unknown;for(let i=r;i<n.length;i++)if(!$(n[i],l,t.schemes))return false;return true}if(r>=n.length){if(!a.optional)return false;continue}if(!$(n[r],A(a.type,s),t.schemes))return false}return true}function Bo(e,n,t,s,r,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=A(u.type,s),y=m.t==="array"?m.items:o.unknown;for(let f=c;f<t.length;f++)$(t[f],y,r.schemes)||r.sink.report(S.notAssignable(l(f),t[f],y,r.schemes));break}let p=A(u.type,s);c>=t.length||$(t[c],p,r.schemes)||r.sink.report(S.notAssignable(l(c),t[c],p,r.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))){r.sink.report(S.spreadArgument(o$1.node));return}if(i){let p=A(i.type,s),m=p.t==="array"?p.items:o.unknown;$(o$1.elem,m,r.schemes)||r.sink.report(S.notAssignable(o$1.node,o$1.elem,m,r.schemes));}return}}function Sn(e,n,t){if(e.t==="object"){let s=u(e.props,n);return s?s.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let s=e.of.map(r=>Sn(H(r,t),n,t)).filter(r=>r!==void 0);return s.length===0?void 0:s.length===1?s[0]:p({t:"intersection",of:s})}if(e.t==="union")return Br(e.of,n,t)}function Br(e,n,t){let s=e.map(r=>Sn(H(r,t),n,t)).filter(r=>r!==void 0);return s.length?ea(s):void 0}var $t=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every($t),Qs=new WeakMap;function ko(e,n,t){let s=Qs.get(t);if(s)return s;let r=new Set;for(let o of e)if(o.t==="object")for(let l of Object.keys(o.props))r.add(l);let a=new Set;for(let o of r){let i=e.map(u=>Sn(u,o,n)).filter(u=>u!==void 0);if(!i.some($t))continue;i.length===e.length&&i.every(u=>ba$1(u,i[0]))||a.add(o);}return Qs.set(t,a),a}var kr=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&kr(e.object),wo=(e,n)=>e.some(t=>t.t==="object"&&u(t.props,n)?.optional===true);function wr(e,n,t,s,r){let a=ko(n,s,r),o$1=new Set;if(!a.size)return {chosen:n,ignored:o$1};let l=[],i=new Set;for(let p of e.properties){if(p.type!=="Property")continue;let m=p,y=Oe(m);if(y===null||(i.add(y),!a.has(y)||!kr(m.value)))continue;let f=t(m);f&&$t(f)&&l.push([y,f]);}for(let p of a)!i.has(p)&&wo(n,p)&&l.push([p,o.undefined]);let c=n.map(()=>1);for(let[p,m]of l){let y=false;n.forEach((f,h)=>{if(c[h]!==1)return;let g=Sn(f,p,s);g!==void 0&&($(m,g,s)?y=true:c[h]=2);}),n.forEach((f,h)=>{c[h]===2&&(c[h]=y?0:1);}),y||o$1.add(p);}let u=n.filter((p,m)=>c[m]===1);return {chosen:u.length?u:n,ignored:o$1}}function Hs(e,n$1,t,s,r,a=false){let o={},l={};for(let i of e.properties){let c=i;if(c.type==="SpreadElement"){let f=H(B(c.argument,t,s),s.schemes);if(f.t==="object")for(let[h,g]of Object.entries(f.props))n(o,h,g),n(l,h,g);continue}let u=c,p=Oe(u),m=p!==null?n$1(p):void 0,y=m?Y(u.value,m,t,s,r):J$1(B(u.value,t,s));p!==null&&(n(o,p,{type:a?y:m??y}),n(l,p,{type:y})),N(s,c,y,t);}return {checked:o,narrowed:l}}function Y(e,n,t,s,r=false){let a=s.inference,o$1=a?A(n,a.returnMapper):n,l=u=>a?A(u,a.nonFixing):u,i=H(o$1,s.schemes);switch(i.t==="conditional"&&(i=ca(i,s.schemes)??i),le(e)?"Literal":e.type){case "Literal":{let u=Ne(e);return $(u,n,s.schemes)||s.sink.report(S.notAssignable(e,u,n,s.schemes)),N(s,e,Re(e),t),r?We(o$1,u)?u:J$1(Re(e)):n}case "ArrayExpression":{if(on(i)){let u=Ut(e,i,t,s);return $(u,n,s.schemes)||Uo(e,u,i,t,s)||s.sink.report(S.notAssignable(e,u,n,s.schemes)),N(s,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=Y(y.argument,n,t,s,r);f.t==="array"&&u.push(f.items);}else u.push(Y(y,i.items,t,s,r));}let p=r&&u.length>0?o.array(ea(u)):l(n);return N(s,e,p,t)}break}case "ObjectExpression":{if(i.t==="object"||i.t==="intersection"){let u=s.sink.all.length,{checked:p,narrowed:m}=Hs(e,g=>Sn(i,g,s.schemes),t,s,r),y=s.sink.all.slice(u).some(g=>g.kind==="type"&&g.severity==="error"),f=jt(e,n,s),h={t:"object",props:p};return !f&&!y&&!$(h,n,s.schemes)&&s.sink.report(S.notAssignable(e,h,n,s.schemes)),N(s,e,r?{t:"object",props:m}:n,t)}if(i.t==="union"){let u=i.of.filter(P=>P.t==="object"||P.t==="intersection");if(!u.length)break;let p=e,{chosen:m,ignored:y}=wr(p,u,P=>B(P.value,t,{...s,sink:_()}),s.schemes,n),f=s.sink.all.length,{checked:h,narrowed:g}=Hs(p,P=>Br(y.has(P)?u:m,P,s.schemes),t,s,r,true),b=jt(p,n,s),A={t:"object",props:h};return !b&&s.sink.all.length===f&&!$(A,n,s.schemes)&&s.sink.report(S.notAssignable(e,A,n,s.schemes)),N(s,e,r?{t:"object",props:g}:n,t)}break}case "ArrowFunctionExpression":{let u=a?H(A(n,a.nonFixing),s.schemes):i;if(u.t==="fn"){let p=Lt(e,t,s,u);return $(p,n,s.schemes)||s.sink.report(S.notAssignable(e,p,n,s.schemes)),N(s,e,l(n),t)}break}case "ConditionalExpression":{let u=e;B(u.test,t,s);let p=X(u.test,t,s.schemes),m=Y(u.consequent,n,L(t,p.then),s,r),y=Y(u.alternate,n,L(t,p.else),s,r);return N(s,e,r?ea([m,y]):n,t)}case "Placeholder":return N(s,e,l(n),t)}let c=B(e,t,s,a?A(n,a.outer):n);return $(c,n,s.schemes)||s.sink.report(S.notAssignable(e,c,n,s.schemes)),N(s,e,c,t)}var vo=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return Fn(n)!==void 0};function Lt(e,n,t,s){let r=!e.async&&t.invoked.has(e),a=t.flow.size?new Map(t.flow):null,o=a?L(n,Object.fromEntries(a)):n;a&&t.flow.clear();let l=t.shadowed;r&&(t.shadowed=new Set);try{return Ao(e,o,t,s)}finally{let i=r?Eo(e,o,t):null,c=t.shadowed;if(t.shadowed=l,t.flow.clear(),a)for(let[u,p]of a)t.flow.set(u,p);if(i)for(let[u,p]of i){let m=u.slice(0,te(u)?u.indexOf("."):u.length);!c?.has(m)&&Pe(n,u,t.schemes)!==void 0&&re(u,p,t);}}}function Eo(e,n,t){let s=e.body;return s.type!=="BlockStatement"?new Map(t.flow):me(s,n,t).types}function Ao(e,n$1,t,s){let r=s&&s.t==="fn"?s:void 0,a=r?.typeParams?.length&&e.params.some(k=>!vo(k))?r.typeParams:void 0,o$1=$n(e)??a,l=k=>o$1?{...k,typeParams:o$1}:k,i={},c=e.params.map((k,O)=>{let R=k,K=r?.params[O]?.type;if(R.type==="RestElement"){let he=R.argument,H=mn(he,n$1,t)??(r?.params[O]?.variadic?K:void 0)??o.array(o.unknown),ge=q(he);return ge?(ke(ge,he,t),n(i,ge,H)):fe(he,H,i,n$1,t),t.overlay.set(he,{type:H,scope:n$1}),t.overlay.set(R,{type:H,scope:n$1}),{name:ge??`arg${O}`,type:H,variadic:true}}if(R.type==="AssignmentPattern"){let he=R.left,Jn=mn(he,n$1,t)??K;fe(R,Jn??o.unknown,i,n$1,t);let H=q(he),ge=H?m(i,H):void 0,Xn=Jn??ge??o.unknown,_t=Xn.t==="unknown"?Xn:ea([Xn,o.undefined]);return H&&ge&&n(i,Te(H),ge),t.overlay.set(R,{type:_t,scope:n$1}),{name:H??`arg${O}`,type:_t,optional:true}}let Q=q(R),Wt=mn(R,n$1,t),Je=Wt??K??o.any,Gt=R.type==="Identifier"&&(!!R.optional||Wt===void 0&&!!r?.params[O]?.optional),bn=Gt&&Je.t!=="unknown"?ea([Je,o.undefined]):Je;return Q?(ke(Q,R,t),n(i,Q,bn),n(i,Te(Q),bn)):R.type!=="Identifier"&&fe(R,Je,i,n$1,t),t.overlay.set(R,{type:bn,scope:n$1}),Gt?{name:Q??`arg${O}`,type:bn,optional:true}:{name:Q??`arg${O}`,type:Je}}),u=false;c.forEach((k,O)=>{k.optional?u=true:!k.variadic&&u&&t.sink.report(S.requiredAfterOptional(e.params[O]));});let p=Me(n$1,i,t),m$1=e.body,y=go(e,n$1,t),f=e.returnGuard,h=f?{param:f.param,type:qe(f.type,n$1,t,e)}:void 0;if(h){let k=c[h.param];k&&!$(h.type,k.type,t.schemes)&&t.sink.report(S.notAssignable(e,h.type,k.type,t.schemes));}let g=k=>h?{...k,guard:h}:k;if(m$1.type!=="BlockStatement"&&y){let k=e.async?ln(y):y;Y(m$1,k,p,t);let O=e.async?un(y):y;return N(t,e,g(l({t:"fn",params:c,returns:O})),n$1)}let b=y??r?.returns,A=b&&e.async?ln(b):b,P=m$1.type==="BlockStatement"?N(t,m$1,Ar(m$1,p,t,new Set(Object.keys(i).filter(k=>!Ct(k))),A),p):B(m$1,p,t),oe=e.async?un(P):P;if(y){let k=e.async?ln(y):y,O=e.async?P:oe;$(O,k,t.schemes)||t.sink.report(S.notAssignable(m$1,oe,y,t.schemes));let R=e.async?un(y):y;return N(t,e,g(l({t:"fn",params:c,returns:R})),n$1)}return N(t,e,l({t:"fn",params:c,returns:O(M$1(oe))}),n$1)}function _e(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?_e(n.argument):_e(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?_e(n.argument):_e(n):[]);case "AssignmentPattern":return _e(e.left);default:return []}}function vr(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>_e(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?vr(e.declaration):[]}var Er=Object.freeze({t:"undefined"}),Zs=e=>e===Er;function Ar(e,n,t,s=new Set,r){let{returns:a}=Wn(e.body,n,t,s,r),o$1=!ne(e)||a.some(Zs),l=a.filter(i=>!Zs(i));return l.length===0?o$1?o.void:o.union([]):ea(o$1?[...l,o.undefined]:l)}var Oo=[o.literal(true),o.literal(false)];function gn(e){return e.t==="union"?e.of:e.t==="boolean"?Oo:[e]}function Or(e,n,t){let s=gn(e);if(s.length<=1)return e;let r=s.filter(o=>$(n,o,t));if(r.length===0)return e;let a=ea(r);return $(n,a,t)?a:e}var Rr=(e,n)=>te(e)?void 0:W(n,Te(e)),xn=(e,n,t)=>!te(e)&&(t.evolving.has(e)||W(n,Te(e))!==void 0);function Kn(e,n,t,s,r,a){if(n)return L$1(s);if(a.evolving.has(e))return K(t);let o=Rr(e,r);return o===void 0?t:o.t==="union"||o.t==="boolean"?Or(o,t,a.schemes):o}function re(e,n,t){let s=e+".";for(let r of t.flow.keys())r.startsWith(s)&&t.flow.delete(r);t.flow.set(e,n);}var Cr=(e,n)=>n.flow.size?n.flow.get(e):void 0;function Pt(e,n){let t=new Map(e.flow),s=n(),r=new Map;for(let[a,o]of e.flow)t.get(a)!==o&&r.set(a,o);e.flow.clear();for(let[a,o]of t)e.flow.set(a,o);return {value:s,effect:r}}function er(e,n){let t=new Set;for(let s of e)if(s.effect)for(let r of s.effect.keys())t.add(r);for(let s of t){let r=[];for(let a of e){let o=a.effect?.get(s)??n.flow.get(s)??Pe(a.scope,s,n.schemes);o!==void 0&&r.push(o);}r.length&&re(s,ea(r),n);}}function Tr(e,n,t){if(e.type==="MemberExpression")return N(t,e,ur(e,n,t,true),n);if(e.type==="Identifier"){let s=Rr(e.name,n);if(s!==void 0)return N(t,e,s,n)}return B(e,n,t)}function nr(e,n,t){let s=B(e,n,t),r=L$1(s);return r===s?s:N(t,e,r,n)}function dn(e,n,t,s){switch(e.type){case "ArrayExpression":{e.elements.forEach((r,a)=>{if(!r)return;let o=r;o.type==="SpreadElement"?dn(o.argument,Fr(n,a),t,s):dn(o,Mr(n,a),t,s);});return}case "ObjectExpression":{let r=[];for(let a of e.properties){let o$1=a;if(o$1.type==="SpreadElement"){dn(o$1.argument,Ir(n,r),t,s);continue}let l=Oe(o$1);l!=null&&r.push(l),dn(o$1.value,l!=null?jr(n,l,s):o.unknown,t,s);}return}default:{let r=Tr(e,t,s);!s.invalidTargets.has(e)&&!(e.type==="Identifier"&&s.evolving.has(e.name))&&!$(n,r,s.schemes)&&s.sink.report(S.notAssignable(e,n,r,s.schemes));let a=z(e);a!==null&&xn(a,t,s)?re(a,Kn(a,false,n,r,t,s),s):a!==null&&te(a)&&re(a,r,s);}}}function Ro(e,n,t,s){let r=e.right,a=B(r,t,s);return $r(e.operator.slice(0,-1),n,a,e,e.left,r,s)}var je=new Map;function me(e,n,t){switch(e.type){case "BlockStatement":{let s=je,r=n;for(let a of e.body){let o=me(a,r,t);if(o.types.size){let l=new Map(s);for(let[i,c]of o.types)l.set(i,c);s=l,r=L(r,Object.fromEntries(o.types));}if(o.exits)return {types:s,exits:true}}return {types:s,exits:false}}case "IfStatement":return {types:Dr(e,n,t),exits:ne(e)};case "ReturnStatement":case "ThrowStatement":return {types:je,exits:true};case "TryStatement":{let s=e,r=[],a=me(s.block,n,t);if(a.exits||r.push(a),s.handler){let l=me(s.handler.body,n,t);l.exits||r.push(l);}let o=Pr(r,n,t);if(s.finalizer){let l=o.size?L(n,Object.fromEntries(o)):n,i=me(s.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:ne(e)}}default:return {types:t.stmtFlow.get(e)??je,exits:false}}}function Pr(e,n,t){let s=new Set;for(let a of e)for(let o of a.types.keys())s.add(o);if(!s.size)return je;let r=new Map;for(let a of s){let o=Pe(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&&r.set(a,ea(l));}return r}function Dr(e,n,t){let s=me(e.consequent,n,t),r=e.alternate?me(e.alternate,n,t):{types:je,exits:false};if(!s.types.size&&!r.types.size)return je;let a=[s,r].filter(o=>!o.exits);return a.length?Pr(a,n,t):je}var Co=5;function tr(e,n$1,t,s){let r=new Map(t.flow),a=new Map,o=n$1,l=null;for(let c=0;c<Co;c++){let u=_(),p={...t,sink:u},m=s(o,p),y=new Map(me(e,o,p).types);for(let[h,g]of t.flow)r.get(h)!==g&&y.set(h,g);if(sr(r,t),!y.size){for(let h of u.all)t.sink.report(h);return {returns:m,head:o}}let f={};for(let[h,g]of y){let b=Pe(o,h,t.schemes);if(b===void 0||g===b)continue;let A=ea([b,g]);ba$1(A,b)||(n(f,h,A),a.set(h,A));}if(!Object.keys(f).length){for(let h of u.all)t.sink.report(h);l=m;break}o=L(o,f);}let i=l??s(o,t);sr(r,t);for(let[c,u]of a)re(c,u,t);return {returns:i,head:o}}function sr(e,n){n.flow.clear();for(let[t,s]of e)n.flow.set(t,s);}function To(e,n,t){let s=me(e,n,t);return s.exits||!s.types.size?n:L(n,Object.fromEntries(s.types))}function Wn(e,n,t,s=new Set,r){if(!Po(e))return rr(e,n,t,s,r);let a=new Set(t.evolving);try{return rr(e,n,t,s,r)}finally{t.evolving.clear();for(let o of a)t.evolving.add(o);}}function Po(e){for(let n of e){let t=n;if(t.type==="VariableDeclaration"&&t.kind!=="const")return true;if(t.type==="ExportNamedDeclaration"){let s=t.declaration;if(s?.type==="VariableDeclaration"&&s.kind!=="const")return true}}return false}function rr(e,n,t,s,r){let a=n,o=[];for(let l of e){let i=l;for(let c of vr(i))s.has(c.name)?t.sink.report(S.cannotRedeclare(c,c.name)):s.add(c.name);if(i.type==="VariableDeclaration")a=Gn(i,a,t);else if(i.type!=="ImportDeclaration")if(i.type==="ExportNamedDeclaration"){let c=i;if(c.declaration?.type==="VariableDeclaration")a=Gn(c.declaration,a,t);else if(c.declaration?.type==="FunctionDeclaration"){let u=B(c.declaration,a,t),p=q(c.declaration.id);p&&(a=Me(a,{[p]:u},t));}else for(let u of c.specifiers)W(a,u.local.name)===void 0&&t.sink.report(S.unknownName(u.local,u.local.name));}else if(i.type==="ExportDefaultDeclaration")B(i.declaration,a,t);else if(i.type==="FunctionDeclaration"){let c=B(i,a,t),u=q(i.id);u&&(a=Me(a,{[u]:c},t));}else if(i.type==="IfStatement"){let c=i;o.push(...se(i,a,t,r));let u=Dr(c,a,t);u.size&&(a=L(a,Object.fromEntries(u))),!c.alternate&&ne(c.consequent)&&(a=L(a,X(c.test,a,t.schemes).else));}else o.push(...se(i,a,t,r)),(i.type==="BlockStatement"||i.type==="TryStatement")&&(a=To(i,a,t));a=Do(i,a,t);}return {scope:a,returns:o}}function Do(e,n,t){if(!t.flow.size)return n;let s=new Map(t.flow);t.flow.clear(),t.stmtFlow.set(e,s);let r=L(n,Object.fromEntries(s));for(let a of s.keys())te(a)||(r=Tt(r,a,t.schemes));return r}function se(e,n,t,s){switch(e.type){case "ReturnStatement":{let r=e.argument,a=r?s?(Y(r,s,n,t),s):B(r,n,t):Er;return N(t,e,r?a:o.undefined,n),[a]}case "IfStatement":{let r=e;B(r.test,n,t);let a=X(r.test,n,t.schemes),o$1=se(r.consequent,L(n,a.then),t,s);return r.alternate&&o$1.push(...se(r.alternate,L(n,a.else),t,s)),N(t,e,o.unknown,n),o$1}case "BlockStatement":{let{returns:r}=Wn(e.body,n,t,void 0,s);return N(t,e,r.length?ea(r):o.void,n),r}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let r=e,a=n;r.init&&(r.init.type==="VariableDeclaration"?a=Gn(r.init,a,t):B(r.init,a,t));let{returns:o$1}=tr(r.body,a,t,(l,i)=>(r.test&&B(r.test,l,i),r.update&&B(r.update,l,i),se(r.body,l,i,s)));return N(t,e,o.unknown,n),o$1}case "ForOfStatement":case "ForInStatement":{let r=e,a=B(r.right,n,t),o$1=_n(a,r.right,t)?null:yn(a);o$1&&t.sink.report(S.possiblyNullish(r.right,o$1));let l=o$1?zn(a):a,i=e.type==="ForOfStatement"?Vt(l,r.right,t):o.string,c=Os(r.left);c&&ke(c,Rs(r.left),t);let u=c?Me(n,{[c]:i},t):n,{returns:p}=tr(r.body,u,t,(m,y)=>se(r.body,m,y,s));return N(t,e,o.unknown,n),p}case "BreakStatement":case "ContinueStatement":return N(t,e,o.unknown,n),[];case "ThrowStatement":{let r=e.argument;return r&&B(r,n,t),N(t,e,o.unknown,n),[]}case "TryStatement":{let r=e,a=se(r.block,n,t,s);if(r.handler){let o$1=r.handler.param,l=o$1?q(o$1):null;l&&o$1&&ke(l,o$1,t);let i=l?Me(n,{[l]:o.any},t):n;a.push(...se(r.handler.body,i,t,s));}return r.finalizer&&a.push(...se(r.finalizer,n,t,s)),N(t,e,o.unknown,n),a}case "SwitchStatement":{let r=e;B(r.discriminant,n,t);let a=n,o$1=[];for(let l of r.cases){l.test&&B(l.test,a,t);let i=Wn(l.consequent,a,t,void 0,s);a=i.scope,o$1.push(...i.returns);}return N(t,e,o.unknown,n),o$1}default:return B(e,n,t),[]}}function jr(e,n,t){let s=oa$1(e,[n],t.schemes);return s?s.type:o.unknown}function Vt(e,n,t){let s=J(e,t.schemes);switch(s.t){case "array":return s.items;case "tuple":return s.elements.length?ea([...s.elements]):o.unknown;case "string":return o.string;case "literal":if(typeof s.value=="string")return o.string;break;case "unknown":case "any":return o.unknown;case "union":return ea(s.of.map(r=>Vt(r,n,t)));}return t.sink.report(S.notIterable(n,e)),o.any}function Mr(e,n){let t=p(o.index(e,o.literal(n)));return t.t==="index"?o.unknown:t}function Ir(e,n$1){if(e.t!=="object")return e;let t={};for(let s in e.props)n$1.includes(s)||n(t,s,e.props[s]);return o.object(t,e.index)}function Fr(e,n){return e.t==="tuple"?o.tuple(e.elements.slice(n)):e.t==="array"?e:o.array(o.unknown)}function fe(e,n$1,t,s,r){switch(e.type){case "Identifier":{let a=mn(e,s,r)??n$1;ke(e.name,e,r),n(t,e.name,a),r.overlay.set(e,{type:a,scope:s});return}case "AssignmentPattern":{let a=e,o=B(a.right,s,r);n$1.t!=="unknown"&&!$(o,n$1,r.schemes)&&r.sink.report(S.notAssignable(a.right,o,n$1,r.schemes));let l=O(M$1(o)),{type:i}=v(n$1),c=i.t==="unknown"?l:ea([i,l]),u=a.left;if(u.type==="Identifier"){let p=u.name;ke(p,u,r),n(t,p,c),r.overlay.set(u,{type:c,scope:s});}else fe(u,c,t,s,r);return}case "ObjectPattern":{let a=[];for(let o$1 of e.properties){if(o$1.type==="RestElement"){fe(o$1.argument,Ir(n$1,a),t,s,r);continue}let l=o$1,i=Oe(l);i!=null&&a.push(i);let c=i!=null?jr(n$1,i,r):o.unknown;fe(l.value,c,t,s,r);}return}case "ArrayPattern":{e.elements.forEach((a,o)=>{if(!a)return;let l=a;l.type==="RestElement"?fe(l.argument,Fr(n$1,o),t,s,r):fe(l,Mr(n$1,o),t,s,r);});return}}}function jt(e,n,t){let s=J(n,t.schemes),r=s.t==="union"?H(s,t.schemes):s,a=r.t==="union"?r.of.map(c=>J(c,t.schemes)):[r],l$1=(s.t==="union"?wr(e,a.filter(c=>c.t==="object"||c.t==="intersection"),c=>t.overlay.get(c.value)?.type,t.schemes,n).chosen:a).filter(c=>c.t==="object"&&(!c.index||c.index.key==="number"));if(!l$1.length||l$1.some(c=>Object.keys(c.props).length===0&&!c.index))return false;let i=false;for(let c of e.properties){if(c.type==="SpreadElement")continue;let u=c;if(u.computed)continue;let p=Oe(u);if(p===null)continue;l$1.filter(y=>l(y.props,p)||y.index?.key==="number"&&w(p)).length||(t.sink.report(S.excessProperty(u.key,p,n)),i=true);}return i}function Gn(e,n$1,t){let s={};for(let r of e.declarations){let a=r.id,o$1=q(a);o$1&&ke(o$1,a,t);let l=mn(a,n$1,t);if(!r.init){if(o$1&&e.kind!=="const"){l?(n(s,o$1,l),n(s,Te(o$1),l)):(n(s,o$1,o.undefined),t.evolving.add(o$1));continue}t.sink.report(S.constNeedsInit(r)),o$1&&n(s,o$1,l??o.unknown);continue}let i=l??(r.init.type==="ArrowFunctionExpression"?Ps(r.init):null),c=o$1&&i?Me(n$1,{[o$1]:i},t):n$1,u,p=null;l?(Y(r.init,l,c,t),u=l,p=l,(l.t==="union"||l.t==="boolean")&&le(r.init)&&(u=Or(l,Ne(r.init),t.schemes))):(u=B(r.init,c,t),e.kind!=="const"&&(u=K(u)),u=O(u),p=u),N(t,r,u,n$1),o$1?(n(s,o$1,u),e.kind!=="const"&&p&&n(s,Te(o$1),p)):fe(a,u,s,n$1,t);}return N(t,e,o.unknown,n$1),Me(n$1,s,t)}function Me(e,n,t){let s=be(e,n);for(let r of Object.keys(n))Ct(r)||(t.shadowed?.add(r),s=Tt(s,r,t.schemes));return s}function jo(e,n,t){let s=B(e.left,n,t),r=B(e.right,n,t);return $r(e.operator,s,r,e,e.left,e.right,t)}function $r(e,n,t,s,r,a,o$1){e==="in"&&(ze(n,r,o$1),ze(t,a,o$1));let l=He.get(e);if(!l)return o.boolean;if(l.category==="arithmetic"||l.category==="bitwise"||l.category==="relational"||l.category==="additive"&&!$(n,o.string,o$1.schemes)&&!$(t,o.string,o$1.schemes)){let c=ze(n,r,o$1),u=ze(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&&Be(p,o$1.schemes)?o.string:o.any}n=c.type,t=u.type;}if(l.category==="additive"){if(De(n)||De(t))return Be(n,o$1.schemes)||Be(t,o$1.schemes)?o.string:o.number;if(Be(n,o$1.schemes)&&Be(t,o$1.schemes))return o.string;if(fn(n,o$1.schemes)&&fn(t,o$1.schemes))return o.number;if(Be(n,o$1.schemes)||Be(t,o$1.schemes)){let u=Be(n,o$1.schemes)?t:n;return o$1.sink.report(S.implicitCoercion(s,n,t,Lr(u,o$1.schemes))),o.string}return o$1.sink.report(S.operatorNotApplicable(s,"+",n,t)),o.number}if(l.category==="arithmetic"||l.category==="bitwise")fn(n,o$1.schemes)||o$1.sink.report(S.arithmeticOperand(r,"left")),fn(t,o$1.schemes)||o$1.sink.report(S.arithmeticOperand(a,"right"));else if(l.category==="relational"&&!De(n)&&!De(t)){let c=H(n,o$1.schemes),u=H(t,o$1.schemes),p=$(c,o.number,o$1.schemes),m=$(u,o.number,o$1.schemes);p&&m||!p&&!m&&($(c,u,o$1.schemes)||$(u,c,o$1.schemes))||o$1.sink.report(S.operatorNotApplicable(s,e,n,t));}return ht(l.result)}var De=e=>e.t==="any"||e.t==="unknown",fn=(e,n)=>De(e)||$(H(e,n),o.number,n),Be=(e,n)=>!De(e)&&$(H(e,n),o.string,n),Mo=o.union([o.string,o.number,o.boolean,o.null,o.undefined]),Lr=(e,n)=>De(e)||$(H(e,n),Mo,n),Io={string:o.literal(""),number:o.literal(0),boolean:o.literal(false)},Vn=e=>e.t==="null"||e.t==="undefined";function Fo(e,n,t,s){if(n.t==="any"||n.t==="unknown")return ea([n,t]);let r=(n.t==="union"?[...n.of]:[n]).flatMap(o$1=>o$1.t==="boolean"?[o.literal(true),o.literal(false)]:[o$1]);if(e==="??")return r.some(Vn)?ea([...r.filter(o=>!Vn(o)),t]):n;if(e==="||")return Ws(n,s)?ea([...r.filter(o=>!Vn(o)&&!(o.t==="literal"&&!o.value)),t]):n;if(!Gs(n,s))return n;let a=r.flatMap(o=>{if(Vn(o))return [o];if(o.t==="literal")return o.value?[]:[o];let l=m(Io,o.t);return l?[l]:[]});return ea([...a,t])}var $o=o.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>o.literal(e)));function Lo(e,n,t){let s=B(e.argument,n,t);switch(e.operator){case "!":return s.t==="literal"?{t:"literal",value:!s.value,fresh:true}:o.boolean;case "-":case "+":case "~":return ze(s,e.argument,t),e.operator==="-"&&s.t==="literal"&&typeof s.value=="number"?{t:"literal",value:-s.value,fresh:true}:o.number;case "typeof":return $o;case "delete":return o.boolean;case "void":return o.undefined;default:return o.unknown}}function Vo(e,n$1,t){let s={},r,a=[],o=[],l=false,i=false,c=false;for(let p of e.properties){let m=p;if(m.type==="SpreadElement"){c=true;let b=J(B(m.argument,n$1,t),t.schemes);if(b.t==="object"){for(let A in b.props)n(s,A,b.props[A]);b.index&&(r={key:b.index.key,type:b.index.value});}continue}let y=m,f=B(y.value,n$1,t),h=J$1(f);if(N(t,m,f,n$1),y.computed){let b=J(B(y.key,n$1,t),t.schemes);b.t==="literal"&&typeof b.value=="string"?(n(s,b.value,{type:h}),a.push(h)):b.t==="literal"&&typeof b.value=="number"?(n(s,String(b.value),{type:h}),a.push(h),o.push(h)):b.t==="string"?(l=true,a.push(h)):b.t==="number"&&(i=true,a.push(h),o.push(h));continue}let g=Oe(y);g!==null&&(n(s,g,{type:h}),a.push(h),/^\d+$/.test(g)&&o.push(h));}l?r={key:"string",type:ea(a)}:i&&(r={key:"number",type:ea(o)});let u=c?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return r?{t:"object",props:s,index:{key:r.key,value:r.type},...u}:{t:"object",props:s,...u}}function Vr(e,n,t$1){let s=[];for(let r of e.elements){if(!r)continue;let a=r;if(a.type==="SpreadElement"){let o=J(B(a.argument,n,t$1),t$1.schemes);o.t==="array"?s.push(o.items):o.t==="tuple"&&s.push(...o.elements);continue}s.push(J$1(B(a,n,t$1)));}return t(o.array(s.length?ea(s):o.unknown))}function Ut(e,n,t$1,s){let r=J(n,s.schemes),a=e.elements,o$1=a.every(i=>i&&i.type!=="SpreadElement"),l=(i,c)=>i.type==="ArrayExpression"?Ut(i,c,t$1,s):We(c,le(i)?Ne(i):void 0)?B(i,t$1,s):J$1(B(i,t$1,s));if(r.t==="tuple"&&o$1){let i=z$1(r),c=p=>i<0||p<i?r.elements[p]:r.elements[i],u=a.map((p,m)=>{let y=c(m);return y?l(p,y):J$1(B(p,t$1,s))});return N(s,e,{t:"tuple",elements:u,fromLiteral:true},t$1)}if(r.t==="union"&&o$1){let i=r.of.map(c=>J(c,s.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=z$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,ea(y)):J$1(B(p,t$1,s))});return N(s,e,{t:"tuple",elements:u,fromLiteral:true},t$1)}}if(r.t==="array"){let i=[];for(let c of a){if(!c)continue;let u=c;if(u.type==="SpreadElement"){B(u.argument,t$1,s);continue}i.push(l(u,r.items));}return N(s,e,t(o.array(i.length?ea(i):o.unknown)),t$1)}return Vr(e,t$1,s)}function Ur(e,n,t){let s=H(e,t);if(s.t==="array")return s.items;if(s.t==="tuple"){let r$1=z$1(s);if(n>=s.elements.length||r$1>=0&&n>=r$1)return;let a=I$1(o.index(s,o.literal(n)),t);return r(a)?void 0:a}if(s.t==="union"){let r=s.of.map(a=>Ur(a,n,t));return r.some(a=>a===void 0)?void 0:ea(r)}}function Uo(e,n,t,s,r){let a=H(t,r.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=Ur(a,c,r.schemes);if(!p)return;let m=o(n,c);if(!m||$(m,p,r.schemes))return;let y=r.sink.all.length;Y(u,p,s,r,false),r.sink.all.length>y&&(l=true);}),l}function Mt(e,n$1,t,s){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=>Mt(l,n$1,t,s));return o.array(o$1.length?ea(o$1):o.unknown)}let r=e;if(isExprMarker(r)){let o$1;try{o$1=fromJson(r);}catch{return t.sink.report(S.unsupported(s,`'${EXPR_MARKER}: ${String(m(r,EXPR_MARKER))}'`)),o.unknown}return B(o$1,n$1,t)}let a={};for(let o of Object.keys(r))n(a,o,{type:Mt(r[o],n$1,t,s)});return {t:"object",props:a}}function xr(e,n){let t=H(e,n);return t.t==="object"?Object.keys(t.props).length>0||t.index!==void 0:t.t==="intersection"?true:t.t==="array"?t.items.t!=="any"&&t.items.t!=="unknown":t.t==="union"?t.of.some(s=>xr(s,n)):false}function xo(e,n,t,s,r){let a=_(),o=Y(e,n,t,{...s,sink:a},true);if(a.hasErrors()&&r);let l=i=>s.sink.all.some(c=>c.node===i.node&&c.code===i.code&&c.message===i.message);for(let i of a.all)l(i)||s.sink.report(i);return a.hasErrors()?n:o}var Ko=(e,n)=>({...e,typeAnnotation:n}),Wo=(e,n)=>({...e,returnType:n}),Go=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function xt(e,n){return e.get(n)?.type}function _o(e,n){return e.get(n)?.scope}function zo(e,n){let t=e.get(n)?.type;return t?oa$1(t,[])?.completions??[]:[]}function qo(e,n){let t=e.get(n)?.scope;return t?[...st(t)].map(([s,r])=>({key:s,type:r,optional:false})):[]}var Jo=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function Xo(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 qn(e,n,t,s={}){let r=e[n],a=e[n+1];if(!(!r||!a))switch(a.type){case "ArrowFunctionExpression":case "FunctionExpression":return a.body===r?a.returnType:void 0;case "VariableDeclarator":return a.init===r?a.id?.typeAnnotation:void 0;case "TSAsExpression":return a.typeAnnotation;case "ReturnStatement":return e.slice(n+1).find(Jo)?.returnType;case "CallExpression":{let o=(a.arguments??[]).indexOf(r);if(o<0)return;let l=xt(t,a.callee);return l?.t==="fn"?l.params?.[o]?.type:void 0}case "Property":{if(a.value!==r||e[n+2]?.type!=="ObjectExpression")return;let l=qn(e,n+2,t,s),i=Xo(a);return !l||!i?void 0:oa$1(l,[i],s)?.type}case "ArrayExpression":{let o=qn(e,n+1,t,s);return o?oa$1(o,["[]"],s)?.type:void 0}case "BinaryExpression":{let o$1=He.get(a.operator);if(!o$1)return;if(o$1.category==="arithmetic"||o$1.category==="bitwise")return o.number;let l=a.left===r?a.right:a.left,i=xt(t,l);return i&&i.t!=="any"&&i.t!=="unknown"?i:void 0}case "LogicalExpression":return qn(e,n+1,t,s);case "UnaryExpression":{let o$1=a.operator;return o$1==="-"||o$1==="+"||o$1==="~"?o.number:void 0}default:return}}function Yo(e,n){return e.filter(t=>t.node===n)}function ei(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var ni=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Kt(e,n,t,s){if(isExprMarker(e)){let r=s.island?s.island(e,n):fromExprMarker(e);return t.stamp(r,n)}return Array.isArray(e)?t.stamp(ye.arrayExpression(e.map((r,a)=>Kt(r,s.child(n,a),t,s))),n):ni(e)?t.stamp(ye.objectExpression(Object.entries(e).map(([r,a])=>{let o=s.child(n,r),l=t.stamp(ye.literal(r),o);return t.stamp(ye.property(l,Kt(a,o,t,s),false,false),o)})),n):t.stamp(ye.literal(e),n)}function ti(e){let n=new WeakMap,t=[e];for(;t.length>0;){let s=t.pop();forEachChild(s,r=>{n.set(r,s),t.push(r);});}return n}function si(e,n,t,s){let r=ti(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=r.get(c);}return s.fallback};return n.map(i=>{let c=l(i.node),u=s.textOf?.(c),p=u===void 0?void 0:Wr(o(u),i.node.loc);return {diagnostic:i,anchor:c,...p?{span:p}:{}}})}function Wr(e,n){if(!n?.start)return;let t=a=>e.offsetAt({line:a.line-1,column:a.column}),s=t(n.start),r=n.end?t(n.end):s;return {from:s,to:r<s?s:r}}function ri(e,n){return Wr(createPositionMap(e),n)}export{He as BINARY_OP,yt as BINARY_OPS,us as FUNCTION_KINDS,aa as LOGICAL_OPS,ys as UNARY_OPS,si as anchorDiagnostics,Ko as annotate,Wo as annotateReturn,Go as asExpression,oa as binaryOpsProducing,it as calleeAllowlist,ot as capabilityNodes,or as check,be as childScope,ha as collectBindings,Bt as collectMutations,ka as collectReferences,bt as collectUnused,ro as componentProps,Ft as componentPropsOf,qn as contextualTypeAt,ei as createAnchors,Xr as createEnv,_ as createSink,S as diag,Yo as diagnosticsAt,Ja as extractModuleType,sa as fromCapability,at as guard,Cn as guardsFromCompiled,W as lookup,Kt as lowerValue,V as makeDiagnostic,ft as maxArgs,lt as maxCallNesting,pt as maxDepth,ct as maxFunctionNesting,Rn as maxNestingOf,dt as maxNodes,zo as memberCompletions,ut as memberDepth,ht as opResultSchema,Qr as resolveNamed,Hr as resolveScheme,mt as resultType,is as rootScope,ba as sameSymbol,_o as scopeAt,qo as scopeCompletions,ri as spanOf,xt as typeAt,ia as unaryOpsProducing,st as visibleNames};
|
|
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 as qa$1,j,ga as ga$1,R,N as N$1,K as K$1,t,J as J$1,H as H$1,I,E,_ as _$1,C as C$1,P,$,W,F as F$1,G as G$1,L as L$1,fa as fa$1,r,Q,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 as w$1,q,p,ha as ha$1}from'./chunk-FY7J7P5X.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,L as widen,P as widenInferred,M as widenLiteral,Q as widenOrigin,O as widenType,q as withUndefined,x as withoutUndefined}from'./chunk-FY7J7P5X.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 Be from'@tslite/ast/builders';import {createPositionMap}from'@tslite/language-service';var Os={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 St=[o.typeParam("T")],Vn=Object.freeze({Array:St,ReadonlyArray:St,Promise:St});var Ts=(e={})=>rootScope(e),we=(e,n)=>childScope(e,n),G=(e,n)=>lookup(e,n),bt=e=>{let n=visibleNames(e);for(let t of n.keys())(t.includes(".")||t.endsWith("#"))&&n.delete(t);return n},Rs=new Set(["types","schemes","accessors","asserters","matchers","modules","nominals","noLib"]),Ra=(e={},n)=>{let t=n??{},s=Object.keys(t).filter(r=>!Rs.has(r));if(s.length>0)throw new TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${s.map(r=>`'${r}'`).join(", ")} \u2014 expected ${[...Rs].join(", ")}. Named types go under 'types'.`,{unknown:s});return {scope:Ts(e),types:t.types??{},schemes:Ta(t.schemes??{}),accessors:t.accessors??{},asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:t.modules??{},lib:t.noLib?{}:Os,nominals:t.noLib?t.nominals??{}:{...Vn,...t.nominals}}};function Ta(e){let n=false,t=Object.entries(e).map(([s,r])=>{let a=o.scheme(r.params,r.body),o$1=a.params===r.params&&a.body===r.body;return o$1||(n=true),[s,o$1?r:a]});return n?Object.fromEntries(t):e}var Pa=(e,n)=>m(e.types,n),Ca=(e,n)=>m(e.schemes,n);var Ps={"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","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"},w=(e,n,t)=>({code:e,kind:Ps[e],severity:"error",node:n,message:t}),V=(e,n,t,s="error")=>({code:e,kind:Ps[e],severity:s,node:n,message:t}),S={notAssignable:(e,n,t,s={})=>{let r=aa$1(n,t,s),a=r.filter(l=>l.path.length>0),o=a.length?` ${oa$1(a)}.`:"",c=w("not-assignable",e,`Type '${ma$1(n)}' is not assignable to type '${ma$1(t)}'.${o}`),i=r.flatMap(l=>{let[u]=l.path;return l.kind==="missing"&&l.path.length===1&&typeof u=="string"?[{name:u,type:l.expected}]:[]});return i.length?{...c,data:{kind:"missing-properties",properties:i}}:c},unknownName:(e,n)=>w("unknown-name",e,`Cannot find name '${n}'.`),notCallable:(e,n)=>w("not-callable",e,`Type '${ma$1(n)}' is not callable.`),noSuchMember:(e,n,t)=>w("no-such-member",e,`Property '${t}' does not exist on type '${ma$1(n)}'.`),notObject:(e,n)=>w("not-object",e,`Type '${ma$1(n)}' has no members to access.`),possiblyNullish:(e,n,t=false)=>{let s=n.null&&n.undefined?"'null' or 'undefined'":n.null?"'null'":"'undefined'";return w("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${s}.`:`Object is possibly ${s}.`)},unknownValue:e=>w("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>w("const-needs-init",e,"'const' declarations must be initialized."),missingArgument:(e,n,t)=>w("missing-argument",e,`Missing argument '${n}' of type '${ma$1(t)}'.`),notASchema:(e,n)=>w("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)=>w("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)=>w("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>w("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)=>w("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),cannotRedeclare:(e,n)=>w("cannot-redeclare",e,`Cannot redeclare block-scoped variable '${n}'.`),circularTypeAlias:(e,n)=>w("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>w("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>w("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,s,r=false)=>w(s==="missing"?"missing-argument":"excess-argument",e,r?`Expected at least ${n} arguments, but got ${t}.`:`Expected ${n} arguments, but got ${t}.`),excessProperty:(e,n,t)=>w("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${ma$1(t)}'.`),spreadArgument:e=>w("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>w("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>w("not-iterable",e,`Type '${ma$1(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),notSpreadable:e=>w("not-spreadable",e,"Rest types may only be created from object types."),implicitAny:{parameter:(e,n)=>w("implicit-any",e,`Parameter '${n}' implicitly has an 'any' type.`),rest:(e,n)=>w("implicit-any",e,`Rest parameter '${n}' implicitly has an 'any[]' type.`),bindingElement:(e,n)=>w("implicit-any",e,`Binding element '${n}' implicitly has an 'any' type.`),evolving:(e,n)=>w("implicit-any",e,`Variable '${n}' implicitly has type 'any' in some locations where its type cannot be determined.`),variable:(e,n)=>w("implicit-any",e,`Variable '${n}' implicitly has an 'any' type.`),index:(e,n,t)=>w("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=>w("implicit-any",e,"Element implicitly has an 'any' type because index expression is not of type 'number'.")},tupleIndexOutOfRange:(e,n,t,s)=>w("no-such-member",e,`Tuple type '${ma$1(n)}' of length '${t}' has no element at index '${s}'.`),propsMismatch:(e,n,t)=>w("props-mismatch",e,`Payload is not compatible with the component props '${ma$1(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>w("no-matching-overload",e,`No overload of '${ma$1(n)}' matches the arguments (${t.map(s=>ma$1(s)).join(", ")}).`),constraintViolation:(e,n,t)=>w("constraint-violation",e,`Type '${ma$1(n)}' does not satisfy the constraint '${ma$1(t)}'.`),unsupported:(e,n)=>w("unsupported",e,`${n} is not supported in this language.`),wrongTypeArgumentCount:(e,n,t)=>w("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,s)=>w("wrong-type-argument-count",e,`No overload expects ${n} type arguments, but overloads do exist that expect either ${t} or ${s} type arguments.`),genericTypeArity:(e,n,t,s)=>w("wrong-type-argument-count",e,s===0?`Type '${n}' is not generic.`:t===s?`Generic type '${n}' requires ${s} type argument${s===1?"":"s"}.`:`Generic type '${n}' requires between ${t} and ${s} type arguments.`),unusedName:(e,n)=>V("unused-name",e,`'${n}' is declared but its value is never read.`,"warning"),assignToConst:(e,n,t)=>w("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=>w("not-assignable",e,"The left-hand side of a 'for...in' statement must be of type 'string' or 'any'."),forInDestructuring:e=>w("for-in-destructuring",e,"The left-hand side of a 'for...in' statement cannot be a destructuring pattern."),readonlyWrite:(e,n)=>w("readonly-write",e,`Index signature in type '${ma$1(n)}' only permits reading.`),readonlyProperty:(e,n)=>w("readonly-write",e,`Cannot assign to '${n}' because it is a read-only property.`),readonlyDelete:e=>w("readonly-write",e,"The operand of a 'delete' operator cannot be a read-only property."),castUnsound:(e,n,t)=>w("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,s)=>w("unprovable-value",e,`A value of type '${ma$1(n)}' can never satisfy '${s}' (${ma$1(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>w("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,s)=>w("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${ma$1(t)}' and '${ma$1(s)}'.`),implicitCoercion:(e,n,t,s)=>({...w("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${ma$1(n)}' and '${ma$1(t)}'. `+(s?"Use a template literal or 'asString(\u2026)'.":"Use 'stringify(\u2026)' to serialize a structure.")),data:{kind:"implicit-coercion",textConvertible:s}}),notTextConvertible:(e,n)=>({...w("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 U(){let e=[],n=new WeakMap,t=0;return {all:e,get reported(){return t},report(s){t++;let r=n.get(s.node);r||n.set(s.node,r=new Set);let a=`${s.code}\0${s.message}`;r.has(a)||(r.add(a),e.push(s));},hasErrors(){return e.some(s=>s.severity==="error")}}}function dn(e,n,t){let s=N$1(e);return ca$1(n,O(s),t)||ca$1(s,n,t)}function Cs(e,n,t){return ba$1(e,n,t)}function Bt(e,n,t={}){return n.flatMap(s=>s(e,t))}function je(e,n){let t=s=>{n(s);for(let r of childrenOf(s))t(r);};t(e);}var Ma=e=>Array.isArray(e)?e:[e],Ds=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function kt(e,n="error"){return t=>{let s=[];return je(t,r=>{let a=nodeViolation(r,e);a&&s.push(V("node-not-allowed",r,`'${a}' is not allowed by the capability profile.`,n));}),s}}function js(e,n="error"){let t=e.typeTier;return s=>{if(t==="author")return [];let r=[];return je(s,a=>{let o=a,c=o.type==="TSTypeAliasDeclaration"?o.id?.name:void 0;for(let i of [o.typeAnnotation,o.returnType]){if(!i)continue;let l=typeFeatureViolations(ha$1(i,c),t);l.length&&r.push(V("type-feature-not-allowed",a,`authoring type feature${l.length>1?"s":""} '${l.join("', '")}' requires capability tier 'author'.`,n));}}),r}}function L(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=>L(t.type,n))||!!e.index&&L(e.index.value,n);case "array":return L(e.items,n);case "tuple":return e.elements.some(t=>L(t,n));case "union":case "intersection":return e.of.some(t=>L(t,n));case "fn":return e.params.some(t=>L(t.type,n))||L(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(s=>L(s.type,n))||L(t.returns,n));case "keyof":return L(e.of,n);case "index":return L(e.obj,n)||L(e.key,n);case "mapped":return L(e.over,n)||L(e.body,n);case "conditional":return L(e.check,n)||L(e.extends,n)||L(e.then,n)||L(e.else,n);case "returnType":case "parameters":return L(e.fn,n);case "apply":return e.args.some(t=>L(t,n));default:return false}}function Ms(e,n="error"){return t=>{if(!e.typeStrict)return [];let s=[];return je(t,r=>{let a=r;for(let o of [a.typeAnnotation,a.returnType])if(o&&L(o)){s.push(V("any-not-allowed",r,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),s}}function Is(e,n="error"){return (t,s)=>{let r=s.overlay;if(!e.typeStrict||!r)return [];let a=s.schemes??{},o=[];return je(t,c=>{if(c.type!=="TSAsExpression")return;let{expression:i}=c,l=r.get(i)?.type,u=r.get(c)?.type;!l||!u||L(u)||!dn(l,u,a)||Cs(l,u,a)||o.push(V("narrowing-cast-not-allowed",c,`A cast may only widen under 'strict': '${ma$1(l)}' is not assignable to '${ma$1(u)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),o}}function vt(e,n="error"){let t=new Set(e);return s=>{let r=[];return je(s,a=>{if(a.type!=="CallExpression")return;let o=a.callee;if(o.type!=="Identifier")r.push(V("name-not-allowed",o,"Only direct calls to allowed functions are permitted.",n));else {let c=o.name;t.has(c)||r.push(V("name-not-allowed",o,`Function '${c}' is not allowed here.`,n));}}),r}}function Un(e,n,t={}){let s=new Set(Ma(e)),r=t.severity??"error",a=[...s].join("/");return o=>{let c=[],i=(l,u)=>{let p=s.has(l.type),m=p?u+1:u;p&&m>n&&c.push(V("too-deep",l,`Nesting of ${a} exceeds ${n}${t.hint?` \u2014 ${t.hint}`:""}.`,r));for(let y of childrenOf(l))i(y,m);};return i(o,0),c}}var Et=(e=3,n="error")=>Un(Ds,e,{hint:"use a pipe instead of nesting functions",severity:n}),wt=(e,n="error")=>Un("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),At=(e,n="error")=>Un("MemberExpression",e,{severity:n});function Ot(e,n="error"){return t=>{let s=[],r=(a,o)=>{if(o>e){s.push(V("too-deep",a,`Expression nesting exceeds ${e}.`,n));return}for(let c of childrenOf(a))r(c,o+1);};return r(t,0),s}}function Rt(e,n="error"){return t=>{let s=0;return je(t,()=>{s++;}),s>e?[V("too-large",t,`Expression has ${s} nodes (max ${e}).`,n)]:[]}}function Tt(e,n="error"){return t=>{let s=[];return je(t,r=>{if(r.type==="CallExpression"){let a=r.arguments;a&&a.length>e&&s.push(V("too-large",r,`Call has ${a.length} arguments (max ${e}).`,n));}}),s}}function Pt(e,n={},t="error"){return (s,r)=>{let a=r.overlay?.get(s)?.type;return a?ba$1(a,e,n)?[]:[V("wrong-result-type",s,`Result type '${ma$1(a)}' is not assignable to the required '${ma$1(e)}'.`,t)]:[]}}function Kn(e){let n=[kt(e),js(e),Ms(e),Is(e)];return e.hostAllow!=="*"&&n.push(vt([...e.hostAllow])),n}function Fa(e){return Kn(compileProfile(e))}var Ct=[{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"}],fn=new Map(Ct.map(e=>[e.op,e])),Fs={number:o.number,boolean:o.boolean,string:o.string},Dt=e=>Fs[e],$s=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],$a={number:o.number,boolean:o.boolean,string:o.string,undefined:o.undefined},La=[{op:"&&"},{op:"||"},{op:"??"}];function xa(e,n={}){return Ct.filter(t=>t.result==="additive"?ba$1(o.string,e,n)||ba$1(o.number,e,n):ba$1(Fs[t.result],e,n))}function Va(e,n={}){return $s.filter(t=>ba$1($a[t.result],e,n))}var Me=e=>({bindings:new Map,parent:e}),xs=e=>e.charCodeAt(0)===95;function Wn(e,n,t,s,r,a){let o=e.bindings.get(t);o&&(o.exempt=true);let c={name:t,node:s,kind:r,exempt:a,used:false};e.bindings.set(t,c),n.all.push(c);}function yn(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let s of e)yn(s,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let s=t.path[0];typeof s=="string"&&Gn(n,s);return}for(let s of Object.keys(t))yn(t[s],n);}function Vs(e,n){let t=e;yn(t.typeAnnotation,n),yn(t.returnType,n);}function Gn(e,n){for(let t=e;t;t=t.parent){let s=t.bindings.get(n);if(s){s.used=true;return}}}function fe(e,n,t,s,r,a){if(e)switch(e.type){case "Identifier":{let o=e.name;Vs(e,n),Wn(n,t,o,e,s,r||a&&xs(o));return}case "ObjectPattern":{let o=e.properties,c=o[o.length-1],i=!!c&&c.type==="RestElement";o.forEach((l,u)=>{let p=i&&u<o.length-1;if(l.type==="RestElement")fe(l.argument,n,t,s,r,false);else {let m=l;m.computed&&F(m.key,n,t),fe(m.value,n,t,s,r||p,!m.shorthand);}});return}case "ArrayPattern":{for(let o of e.elements){if(!o)continue;let c=o;fe(c.type==="RestElement"?c.argument:c,n,t,s,r,true);}return}case "AssignmentPattern":fe(e.left,n,t,s,r,a);return;case "RestElement":fe(e.argument,n,t,s,r,true);return;default:return}}function mn(e,n,t){if(e)switch(e.type){case "AssignmentPattern":F(e.right,n,t),mn(e.left,n,t);return;case "ObjectPattern":for(let s of e.properties)mn(s.type==="RestElement"?s.argument:s.value,n,t);return;case "ArrayPattern":for(let s of e.elements)s&&mn(s,n,t);return;case "RestElement":mn(e.argument,n,t);return;default:return}}function Ls(e,n,t,s){for(let r of e.declarations)fe(r.id,n,t,"local",s,false),F(r.init,n,t);}function jt(e,n,t){let s=e,r=Me(n),a=s.params??[];for(let o of a)fe(o,r,t,"parameter",false,true);for(let o of a)mn(o,r,t);F(s.body,r,t);}function F(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(Vs(e,n),e.type){case "Identifier":Gn(n,e.name);return;case "MemberExpression":{let s=e;F(s.object,n,t),s.computed&&F(s.property,n,t);return}case "Property":{let s=e;s.computed&&F(s.key,n,t),F(s.value,n,t);return}case "Program":case "BlockStatement":{let s=Me(n);for(let r of e.body??[])F(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":jt(e,n,t);return;case "FunctionDeclaration":{let s=e.id;s&&Wn(n,t,s.name,s,"local",false),jt(e,n,t);return}case "CatchClause":{let s=e,r=Me(n);fe(s.param,r,t,"local",true,false),F(s.body,r,t);return}case "SwitchStatement":{let s=e;F(s.discriminant,n,t);let r=Me(n);for(let a of s.cases){F(a.test,r,t);for(let o of a.consequent??[])F(o,r,t);}return}case "ForStatement":{let s=e,r=Me(n);F(s.init,r,t),F(s.test,r,t),F(s.update,r,t),F(s.body,r,t);return}case "ForOfStatement":case "ForInStatement":{let s=e;F(s.right,n,t);let r=Me(n),a=s.left;if(a.type==="VariableDeclaration")for(let o of a.declarations)fe(o.id,r,t,"local",false,true);else F(a,r,t);F(s.body,r,t);return}case "VariableDeclaration":Ls(e,n,t,false);return;case "ImportDeclaration":{for(let s of e.specifiers){let r=s.local;r&&Wn(n,t,r.name,r,"import",xs(r.name));}return}case "ExportNamedDeclaration":{let s=e;if(s.declaration){let r=s.declaration;if(r.type==="VariableDeclaration")Ls(r,n,t,true);else if(r.type==="FunctionDeclaration"){let a=r.id;a&&Wn(n,t,a.name,a,"local",true),jt(r,n,t);}else F(r,n,t);}else for(let r of s.specifiers)Gn(n,r.local.name);return}case "TSAsExpression":F(e.expression,n,t);return;case "TSTypeAliasDeclaration":yn(e.typeAnnotation,n);return;case "JsonExpression":Mt(e.body,n,t);return;case "JSXOpeningElement":{let s=e;Us(s.name,n);for(let r of s.attributes??[])F(r,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":F(e.value,n,t);return;default:{let s=m(VisitorKeys,e.type);if(!s)return;let r=e;for(let a of s){let o=m(r,a);if(Array.isArray(o))for(let c of o)F(c,n,t);else F(o,n,t);}return}}}function Us(e,n,t){e&&(e.type==="JSXIdentifier"?Gn(n,e.name):e.type==="JSXMemberExpression"&&Us(e.object,n));}function Mt(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)Mt(r,n,t);return}let s=e;if(isExprMarker(s)){try{F(fromJson(s),n,t);}catch{}return}for(let r of Object.keys(s))Mt(s[r],n,t);}function It(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};F(e,Me(void 0),t);let s=[];for(let r of t.all)r.used||r.exempt||(r.kind==="parameter"?n.parameters:n.locals)&&s.push(S.unusedName(r.node,r.name));return s}var _a=new Set(["const","import"]),hn=e=>({binds:new Map,parent:e});function qa(e,n){for(let t=e;t;t=t.parent){let s=t.binds.get(n);if(s)return s}}function Ie(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Ie(n.argument):Ie(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?Ie(n):[]);case "AssignmentPattern":return Ie(e.left);case "RestElement":return Ie(e.argument);default:return []}}function gn(e){switch(e.type){case "ArrayExpression":return e.elements.flatMap(n=>n?gn(n):[]);case "ObjectExpression":return e.properties.flatMap(n=>gn(n.type==="SpreadElement"?n.argument:n.value));case "SpreadElement":return gn(e.argument);case "AssignmentExpression":return gn(e.left);default:return [e]}}var _n=(e,n,t)=>{for(let s of Ie(n))e.binds.set(s.name,t);};function Sn(e,n,t){if(!e)return;if(e.type!=="Identifier"){if(e.type==="ArrayExpression"||e.type==="ObjectExpression")for(let a of gn(e))Sn(a,n,t);else for(let a of Ie(e))Sn(a,n,t);return}let s=e.name,r=qa(n,s);r&&_a.has(r)&&(t.invalid.add(e),t.out.push(S.assignToConst(e,s,r==="import"?"import":"const")));}function _(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let s=e;Sn(s.left,n,t),_(s.right,n,t);return}case "UpdateExpression":{Sn(e.argument,n,t);return}case "Program":case "BlockStatement":{let s=hn(n);for(let r of e.body??[])_(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let s=e,r=hn(n);for(let a of s.params??[])_n(r,a,"param");_(s.body,r,t);return}case "CatchClause":{let s=e,r=hn(n);_n(r,s.param,"param"),_(s.body,r,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let s=e,r=hn(n),a=s.left??s.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)_n(r,o.id,a.kind);else a&&s.left?(Sn(a,r,t),_(a,r,t)):a&&_(a,r,t);_(s.right,n,t),_(s.test,r,t),_(s.update,r,t),_(s.body,r,t);return}case "VariableDeclaration":{let s=e;for(let r of s.declarations)_(r.init,n,t),_n(n,r.id,s.kind);return}case "ImportDeclaration":{for(let s of e.specifiers){let r=s.local;r&&n.binds.set(r.name,"import");}return}case "ExportNamedDeclaration":{let s=e;s.declaration&&_(s.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":_(e.expression,n,t);return;default:{let s=m(VisitorKeys,e.type);if(!s)return;let r=e;for(let a of s){let o=m(r,a);if(Array.isArray(o))for(let c of o)_(c,n,t);else _(o,n,t);}return}}}function Ft(e){let n={out:[],invalid:new WeakSet};return _(e,hn(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var bn=e=>({decls:new Map,parent:e});function Ja(e,n){for(let t=e;t;t=t.parent){let s=t.decls.get(n);if(s)return s}}function He(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?He(n.argument):He(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?He(n):[]);case "AssignmentPattern":return He(e.left);case "RestElement":return He(e.argument);default:return []}}var qn=(e,n)=>{for(let t of He(n))e.decls.set(t.name,t);};function K(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let s=Ja(n,e.name);s&&s!==e&&t.set(e,s);return}case "MemberExpression":{let s=e;K(s.object,n,t),s.computed&&K(s.property,n,t);return}case "Property":{let s=e;s.computed&&K(s.key,n,t),K(s.value,n,t);return}case "Program":case "BlockStatement":{let s=bn(n);for(let r of e.body??[])K(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let s=e,r=e.id;r&&n.decls.set(r.name,r);let a=bn(n);for(let o of s.params??[])qn(a,o);K(s.body,a,t);return}case "CatchClause":{let s=e,r=bn(n);qn(r,s.param),K(s.body,r,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let s=e,r=bn(n),a=s.left??s.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)qn(r,o.id);else a&&K(a,r,t);K(s.right,n,t),K(s.test,r,t),K(s.update,r,t),K(s.body,r,t);return}case "VariableDeclaration":{for(let s of e.declarations)qn(n,s.id),K(s.init,n,t);return}case "ImportDeclaration":{for(let s of e.specifiers){let r=s.local;r&&n.decls.set(r.name,r);}return}case "TSTypeAliasDeclaration":{let s=e.id;s&&n.decls.set(s.name,s);return}case "TSAsExpression":K(e.expression,n,t);return;default:{let s=m(VisitorKeys,e.type);if(!s)return;let r=e;for(let a of s){let o=m(r,a);if(Array.isArray(o))for(let c of o)K(c,n,t);else K(o,n,t);}return}}}function Xa(e){let n=new WeakMap;return K(e,bn(void 0),n),n}function Ha(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,s)=>t===n.path[s])}var Nn=e=>({decls:new Map,parent:e});function Ws(e,n){for(let t=e;t;t=t.parent){let s=t.decls.get(n);if(s)return s}}var Za=e=>e?.type==="Literal"&&typeof e.value=="string";function Jn(e,n){if(!n&&e.type==="Identifier")return e.name;if(Za(e))return e.value}function en(e,n,t){if(e)switch(e.type){case "Identifier":{let s=e.name,r=Ws(n,s);return r?t.aliases.get(r):[s]}case "MemberExpression":{let s=e,r=en(s.object,n,t),a=Jn(s.property,s.computed);return r&&a!==void 0?[...r,a]:void 0}case "ChainExpression":return en(e.expression,n,t);default:return}}var Gs=(e,n)=>{let t=Ws(n,e);return t?{kind:"local",declaration:t}:{kind:"environment",path:[e]}};function zn(e,n,t,s,r){s.out.push({site:"node",node:e,symbol:Gs(n,t),...r?{shorthand:r}:{}});}function Bn(e,n,t,s){n.decls.set(e.name,e),t.out.push({site:"node",node:e,symbol:{kind:"local",declaration:e},isDeclaration:true,...s?{shorthand:s}:{}});}function me(e,n,t,s,r,a){if(e)switch(e.type){case "Identifier":Bn(e,n,t),nn(e,n,t),r&&s&&t.aliases.set(e,s);return;case "ObjectPattern":for(let o of e.properties){if(o.type==="RestElement"){me(o.argument,n,t,void 0,false,a);continue}let c=o,i=c.key;c.computed&&C(i,a,t);let l=Jn(i,c.computed),u=s&&l!==void 0?[...s,l]:void 0,p=c.value,m=p.type==="AssignmentPattern"?p.left:p,y=!!c.shorthand&&m.type==="Identifier";u&&t.out.push({site:"node",node:i,symbol:{kind:"environment",path:u},...y?{shorthand:"binding"}:{}}),y?(Bn(m,n,t,"property"),nn(m,n,t),r&&u&&t.aliases.set(m,u),p.type==="AssignmentPattern"&&C(p.right,a,t)):me(p,n,t,u,r,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,s,r,a),C(o.right,a,t);return}case "RestElement":me(e.argument,n,t,void 0,false,a);return;default:C(e,n,t);}}function nn(e,n,t){let s=e;for(let a of ERASABLE_TYPE_NODE_KEYS)$t(m(s,a),n,t);let r=s.typeParameters;if(Array.isArray(r))for(let a of r)nn(a,n,t);}function $t(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)$t(r,n,t);return}let s=e;if(s.type==="TSTypeQuery"){let r=s.exprName,a=Gs(r[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&&r.slice(1).forEach((c,i)=>t.out.push({site:"typeQuery",node:e,segment:i+1,symbol:{kind:"environment",path:[...o,...r.slice(1,i+2)]}}));return}for(let[r,a]of Object.entries(s))r!=="loc"&&r!=="range"&&$t(a,n,t);}function _s(e,n,t){if(e){if(e.type==="JSXIdentifier"){let s=e.name;/^[A-Z_$]/.test(s)&&zn(e,s,n,t);return}if(e.type==="JSXMemberExpression"){let s=e;_s(s.object,n,t);let r=s.object,a=r.type==="JSXIdentifier"?en({type:"Identifier",name:r.name},n,t):void 0;a&&t.out.push({site:"node",node:s.property,symbol:{kind:"environment",path:[...a,s.property.name]}});}}}function C(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":zn(e,e.name,n,t);return;case "MemberExpression":{let s=e;C(s.object,n,t);let r=en(s.object,n,t),a=Jn(s.property,s.computed);r&&a!==void 0?t.out.push({site:"node",node:s.property,symbol:{kind:"environment",path:[...r,a]}}):s.computed&&C(s.property,n,t);return}case "Property":{let s=e;if(s.computed&&C(s.key,n,t),s.shorthand&&s.value.type==="Identifier"){let r=s.value;zn(s.value,r.name,n,t,"property");return}C(s.value,n,t);return}case "Program":case "BlockStatement":{let s=Nn(n);for(let r of e.body??[])C(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let s=e,r=e.id;r&&Bn(r,n,t);let a=Nn(n);for(let o of s.params??[])me(o,a,t,void 0,false,a);nn(e,a,t),C(s.body,a,t);return}case "CatchClause":{let s=e,r=Nn(n);me(s.param,r,t,void 0,false,r),C(s.body,r,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let s=e,r=Nn(n),a=s.left??s.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)me(o.id,r,t,void 0,false,r),C(o.init,r,t);else a&&C(a,r,t);C(s.right,n,t),C(s.test,r,t),C(s.update,r,t),C(s.body,r,t);return}case "VariableDeclaration":{let s=e;for(let r of s.declarations){let a=en(r.init,n,t);me(r.id,n,t,a,s.kind==="const",n),C(r.init,n,t);}return}case "AssignmentExpression":{let s=e,r=s.left;s.operator==="="&&["ObjectPattern","ArrayPattern","ObjectExpression","ArrayExpression"].includes(r.type)?Ze(r,en(s.right,n,t),n,t):C(r,n,t),C(s.right,n,t);return}case "ImportDeclaration":{for(let s of e.specifiers){let r=s,a=r.type==="ImportSpecifier"&&(r.imported===r.local||r.imported?.name===r.local.name);Bn(r.local,n,t,a?"import":void 0);}return}case "TSTypeAliasDeclaration":{let s=e.id;Bn(s,n,t),t.typeAliases.has(s.name)||t.typeAliases.set(s.name,s),nn(e,n,t);return}case "TSAsExpression":C(e.expression,n,t),nn(e,n,t);return;case "JSXOpeningElement":case "JSXClosingElement":{let s=e;if(_s(s.name,n,t),e.type==="JSXOpeningElement")for(let r of s.attributes)r.type==="JSXSpreadAttribute"?C(r.argument,n,t):C(r.value,n,t);return}default:{let s=m(VisitorKeys,e.type);if(!s)return;let r=e;for(let a of s){let o=m(r,a);if(Array.isArray(o))for(let c of o)C(c,n,t);else C(o,n,t);}return}}}function Ks(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 Ze(e,n,t,s){switch(e.type){case "ObjectPattern":case "ObjectExpression":for(let r of e.properties){if(r.type==="RestElement"||r.type==="SpreadElement"){Ze(r.argument,void 0,t,s);continue}let a=r,o=a.key;a.computed&&C(o,t,s);let c=Jn(o,a.computed),i=n&&c!==void 0?[...n,c]:void 0,l=a.value,u=Ks(l),p=u?.target??l,m=!!a.shorthand&&p.type==="Identifier";i&&s.out.push({site:"node",node:o,symbol:{kind:"environment",path:i},...m?{shorthand:"binding"}:{}}),m?zn(p,p.name,t,s,"property"):Ze(p,i,t,s),u&&C(u.value,t,s);}return;case "ArrayPattern":case "ArrayExpression":for(let r of e.elements)r&&Ze(r.type==="SpreadElement"?r.argument:r,void 0,t,s);return;case "AssignmentPattern":case "AssignmentExpression":{let r=Ks(e);if(!r)return C(e,t,s);Ze(r.target,n,t,s),C(r.value,t,s);return}case "RestElement":Ze(e.argument,void 0,t,s);return;default:C(e,t,s);}}function eo(e,n){let t=e.typeRefs;if(t?.length)for(let s of t){let r=s.name?n.typeAliases.get(s.name):void 0;r&&n.out.push({site:"typeRef",ref:s,symbol:{kind:"local",declaration:r}});}}function no(e){let n={out:[],aliases:new WeakMap,typeAliases:new Map};return C(e,Nn(void 0),n),eo(e,n),n.out}function se(e,n,t,s){switch(e.t){case "apply":if(n.has(e.name)&&s.add(e.name),t.has(e.name))for(let r of e.args)se(r,n,t,s);return;case "union":case "intersection":for(let r of e.of)se(r,n,t,s);return;case "conditional":se(e.check,n,t,s),se(e.extends,n,t,s),se(e.then,n,t,s),se(e.else,n,t,s);return;case "keyof":se(e.of,n,t,s);return;case "index":se(e.obj,n,t,s),se(e.key,n,t,s);return;case "returnType":case "parameters":se(e.fn,n,t,s);return;default:return}}function zs(e,n){let t=new Set(Object.keys(e)),s=new Set(Object.keys(n)),r=new Map;for(let[o,c]of Object.entries(e)){let i=new Set;se(c.body,t,s,i),r.set(o,i);}let a=new Set;for(let o of t){let c=new Set,i=[...r.get(o)];for(;i.length;){let l=i.pop();if(l===o){a.add(o);break}c.has(l)||(c.add(l),i.push(...r.get(l)));}}return a}var Lt=e=>`a\0${e}`,qs=(e,n)=>`p\0${e}\0${n}`;function Js(e,n){let t=new Set(Object.keys(e)),s=new Set(Object.keys(n)),r=new Map,a=new Map;for(let[f,g]of Object.entries(e))a.set(f,to(g.body));let o=f=>a.get(f),c=(f,g)=>{switch(f.t){case "literal":return g.has(String(f.value))?[String(f.value)]:[];case "union":return f.of.flatMap(h=>c(h,g));case "keyof":{let h=f.of.t==="apply"?m(e,f.of.name):void 0,b=h?xt(h.body):void 0;return b?[...b].filter(O=>g.has(O)):[]}default:return []}},i=(f,g,h)=>{switch(f.t){case "apply":if(t.has(f.name)&&h.add(Lt(f.name)),s.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 O of c(f.key,b))h.add(qs(f.obj.name,O));}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),r.set(Lt(f),g);for(let[h,b]of o(f)??[]){let O=new Set;for(let P of b)i(P,"annotation",O);r.set(qs(f,h),O);}}let l=new Map,u=f=>{let g=l.get(f);if(g)return g;let h=new Set;l.set(f,h);let b=[...r.get(f)??[]];for(;b.length;){let O=b.pop();h.has(O)||(h.add(O),b.push(...r.get(O)??[]));}return h},p=new Map,m$1=[];for(let f of r.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=Lt(f),h=u(g);m$1.some(b=>h.has(b)&&u(b).has(g))&&y.add(f);}return {properties:p,aliases:y}}function to(e){let n=new Map,t=s=>{if(s.t==="union"||s.t==="intersection")s.of.forEach(t);else if(s.t==="object")for(let[r,a]of Object.entries(s.props))n.has(r)||n.set(r,[]),n.get(r).push(a.type);};return t(e),n}function Vt(e,n$1){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(s=>Vt(s,n$1))};if(e.t!=="object")return e;let t={...e.props};for(let s of Object.keys(t))n$1.has(s)&&n(t,s,{...t[s],type:{t:"any"}});return {...e,props:t}}function xt(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...xt(n)]));case "union":{let[n,...t]=e.of.map(xt);return new Set([...n??[]].filter(s=>t.every(r=>r.has(s))))}default:return new Set}}var Xn=e=>e.typeAnnotation,Yn=e=>e.returnType;function Qn(e){let n=e.typeParameters;if(n?.length)return n.map(t=>o.typeParam(t.name,{bound:t.bound,default:t.default}))}var H=e=>e.type==="Identifier"?e.name:null,Xs=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?H(n.id):null}return H(e)},Ys=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},Ae=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function Qs(e){let n=s=>s&&s.type==="Literal"&&typeof s.value=="string"?s.value:null;if(e.length===1&&e[0].type==="ArrayExpression"){let s=[];for(let r of e[0].elements){let a=n(r);if(a===null)return null;s.push(a);}return s}let t=[];for(let s of e){let r=n(s);if(r===null)return null;t.push(r);}return t.length?t:null}function Ut(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=Ut(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var En=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:s}=n.quasis[0].value;return t??s},ye=e=>e.type==="Literal"||En(e)!==null;function Fe(e){let n=En(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return o.unknown;let s=t.value;return s===null?o.null:s===void 0?o.undefined:typeof s=="string"||typeof s=="number"||typeof s=="boolean"?{t:"literal",value:s,fresh:true}:o.unknown}var Oe=e=>{let n=En(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):Fe(e)},Hs=e=>e.type==="ArrowFunctionExpression";function z(e){switch(e.type){case "ArrowFunctionExpression":{let n=e;return e.typeParameters?.length?false:n.params.some(t=>!Kt(t))?true:Yn(e)===void 0&&n.body.type!=="BlockStatement"&&z(n.body)}case "ObjectExpression":return e.properties.some(n=>n.type==="Property"&&z(n.value));case "ArrayExpression":return e.elements.some(n=>!!n&&z(n));case "ConditionalExpression":{let n=e;return z(n.consequent)||z(n.alternate)}case "LogicalExpression":{let n=e;return (n.operator==="||"||n.operator==="??")&&(z(n.left)||z(n.right))}default:return false}}var Kt=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return Xn(n)!==void 0},Zs=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,wn=e=>Zs(e)?e.args[0]:e,An=e=>Zs(e)?e:o.promise(e);function vn(e){return e.t==="tuple"?true:e.t==="array"?vn(e.items):e.t==="union"?e.of.some(vn):false}var so=e=>e?.t==="literal"?typeof e.value:void 0,kn=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>kn(t,n));function tn(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(s=>tn(s,n));case "var":{let s=e.bound??o.unknown;return t!==void 0&&kn(s,t)||t===void 0&&ro(s)?true:tn(s,n)}default:return false}}var ro=e=>kn(e,"string")||kn(e,"number")||kn(e,"boolean"),Z=(e,n)=>{let t=e;for(let s=0;s<50&&t.t==="apply";s++){let r=I(t,n);if(r===t||r.t==="apply"&&r.name===t.name)break;t=r;}return t};function er(e){let n=Yn(e);if(!n)return null;let t=e.params.map((r,a)=>({name:H(r)??`arg${a}`,type:Xn(r)??o.unknown})),s=Qn(e);return {t:"fn",params:t,returns:e.async?An(n):n,...s?{typeParams:s}:{}}}var he={then:{},else:{}};function Y(e){if(e.type==="Identifier")return e.name;if(e.type!=="MemberExpression")return null;let n=e;if(n.optional)return null;let t=Y(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 oe=e=>e.includes("."),Le=e=>`${e}#`,Zn=e=>e.endsWith("#");function xe(e,n,t){let s=G(e,n);return s!==void 0?s:lr(e,n,t)}var Se=(e,n,t)=>{let s=xe(e,n,t);return s===void 0?void 0:J$1(s,t)};function lr(e,n,t){let s=n.lastIndexOf(".");if(s<0)return;let r=xe(e,n.slice(0,s),t);if(r!==void 0)return qa$1(r,[n.slice(s+1)],t)?.type}function ao(e,n){let t=n+".",s=new Set;for(let r=e;r;r=r.parent)for(let a of Object.keys(r.vars))(a.startsWith(t)||a===n)&&oe(a)&&s.add(a);return [...s].sort((r,a)=>r.length-a.length)}function Wt(e,n$1,t){let s=ao(e,n$1);if(!s.length)return e;let r={};for(let a of s)n(r,a,lr(we(e,r),a,t)??o.unknown);return we(e,r)}var ur=new Set(["string","number","boolean","undefined","function","object"]),oo={string:o.string,number:o.number,boolean:o.boolean,undefined:o.undefined,object:o.union([o.nonPrimitive,o.null])};function pr(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 io=o.literal(true),co=o.literal(false),ue=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[io,co]:[n]),sn=(e,n)=>{let t=e.filter(s=>Hn(s)||n(s));return t.length===e.length?null:ga$1(t)},Hn=e=>e.t==="unknown"||e.t==="any";function nr(e,n){let t=e,s=n;if(e.type==="UnaryExpression"&&t.operator==="typeof"&&n.type==="Literal"&&typeof s.value=="string"){let r=Y(t.argument);if(r!==null)return {name:r,tag:s.value}}return null}function lo(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let r=ue(e).filter(a=>ba$1(a,n,t));return ga$1(r)}function uo(e,n,t){return e.t==="unknown"||e.t==="any"?null:sn(ue(e),s=>!ba$1(s,n,t))}function po(e,n){if(!ur.has(n))return null;let t=m(oo,n),s=ue(e),a=s.flatMap(o=>t&&Hn(o)?ue(t):[o]).filter(o=>pr(o,n)||Hn(o));return a.length===s.length&&a.every((o,c)=>o===s[c])?null:ga$1(a)}function fo(e,n){if(!ur.has(n))return null;let t=ue(e),s=t.filter(r=>Hn(r)||!pr(r,n));return s.length===t.length?null:ga$1(s)}function tr(e,n){let t=Y(e);if(t!==null&&ye(n)){let s=Oe(n);if(s.t==="literal"||s.t==="null")return {name:t,lit:s}}return null}function sr(e,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&ye(n)){let t=Y(e.object),s=Oe(n);if(t!==null&&(s.t==="literal"||s.t==="null"))return {name:t,prop:e.property.name,lit:s}}return null}function rr(e,n,t,s,r){let a=ue(e),o=c=>c.t==="object"?w$1(c.props,n)?.type:void 0;return sn(a,c=>{let i=o(c);return s?!!i&&ba$1(t,i,r):!(i&&ba$1(i,t,r))})}function ar(e,n,t){let s=ue(e),r=a=>a.t==="object"&&(l(a.props,n)||!!a.index);return sn(s,a=>t?r(a):!r(a))}function mo(e,n,t){return e.t==="unknown"||e.t==="any"||ba$1(n,e,t)?n:null}function yo(e,n,t){return sn(ue(e),s=>!da$1(s,n,t))}var ge=1,$e=2,ho=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 ge|$e;case "literal":return e.value?ge:$e;case "null":case "undefined":case "void":return $e;case "array":case "tuple":case "fn":case "overload":return ge;case "object":return ho(e)?ge|$e:ge;case "nonPrimitive":return ge;case "union":case "intersection":return e.of.reduce((t,s)=>t|On(s,n),0);default:{let t=J$1(e,n);return t===e?ge|$e:On(t,n)}}}var dr=(e,n)=>(On(e,n)&$e)!==0,fr=(e,n)=>(On(e,n)&ge)!==0,or=(e,n,t)=>{let s=ue(e),r=s.filter(a=>On(a,t)&n);return r.length===s.length?null:ga$1(r)},ir=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,re=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),go=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function ee(e,n,t){if(e.type==="BinaryExpression"){let r=e;if(r.operator==="in"){let g=r.left,h=r.right,b=Y(h);if(g.type==="Literal"&&typeof g.value=="string"&&b!==null){let O=Se(n,b,t);if(!O)return he;let P=String(g.value);return re(b,ar(O,P,true),ar(O,P,false))}return he}if(!go(r.operator))return he;let a=r.operator==="!=="||r.operator==="!=",o=r.left,c=r.right,i=nr(o,c)??nr(c,o);if(i){let g=Se(n,i.name,t);if(!g)return he;let h=po(g,i.tag),b=fo(g,i.tag);return a?re(i.name,b,h):re(i.name,h,b)}let l=ir(o),u=ir(c),p=l?c:u?o:null,m=p?Y(p):null;if((l||u)&&m!==null){let g=m,h=Se(n,g,t);if(!h)return he;let O=r.operator==="=="||r.operator==="!="?["null","undefined"]:[l??u],P=ue(h),le=sn(P,D=>O.includes(D.t)),Q=sn(P,D=>!O.includes(D.t));return a?re(g,Q,le):re(g,le,Q)}let y=tr(o,c)??tr(c,o),f=sr(o,c)??sr(c,o);if(y||f){let g=he;if(y){let h=Se(n,y.name,t);if(h){let b=mo(h,y.lit,t),O=yo(h,y.lit,t);g=a?re(y.name,O,b):re(y.name,b,O);}}if(f){let h=Se(n,f.name,t);if(h){let b=rr(h,f.prop,f.lit,true,t),O=rr(h,f.prop,f.lit,false,t),P=a?re(f.name,O,b):re(f.name,b,O);g={then:{...g.then,...P.then},else:{...g.else,...P.else}};}}return g}return he}if(e.type==="UnaryExpression"&&e.operator==="!"){let r=ee(e.argument,n,t);return {then:r.else,else:r.then}}if(e.type==="CallExpression"){let r=bo(e,n,t);if(r)return r}if(e.type==="LogicalExpression"){let r=e;if(r.operator==="&&"){let a=ee(r.left,n,t),o=ee(r.right,x(n,a.then),t);return {then:{...a.then,...o.then},else:cr(a.else,{...a.then,...o.else},n,t)}}if(r.operator==="||"){let a=ee(r.left,n,t),o=ee(r.right,x(n,a.else),t);return {then:cr(a.then,{...a.else,...o.then},n,t),else:{...a.else,...o.else}}}return he}let s=Y(e);if(s!==null){let r=Se(n,s,t);if(r)return re(s,or(r,ge,t),or(r,$e,t))}return he}function cr(e,n$1,t,s){let r={};for(let a of Object.keys(e)){let o=e[a],c=m(n$1,a)??Se(t,a,s);if(!c)continue;let i=ga$1([o,c]),l=Se(t,a,s);l&&da$1(i,l)||n(r,a,i);}return r}function So(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 bo(e,n,t){let s=e.callee;if(s.type!=="Identifier")return null;let r=G(n,s.name);if(!r)return null;let a=So(r,e.arguments.length);if(!a)return null;let o=e.arguments[a.param],c=o?Y(o):null;if(c===null)return null;let i=Se(n,c,t);return i?re(c,lo(i,a.type,t),uo(i,a.type,t)):null}var x=(e,n)=>Object.keys(n).length?we(e,n):e;function ae(e){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(t=>ae(t));case "IfStatement":{let n=e;return !!n.alternate&&ae(n.consequent)&&ae(n.alternate)}case "TryStatement":{let n=e;if(n.finalizer&&ae(n.finalizer))return true;let t=!n.handler||ae(n.handler.body);return ae(n.block)&&t}default:return false}}function Cr(e,n){let t=U(),s=n({...e,sink:t});for(let r of t.all)e.sink.report(r);return {value:s,reported:t.all}}var Eo=e=>{let n$1={};for(let t of Object.keys(e))n(n$1,t,{params:[],body:e[t]});return n$1};function wo(e){let n=[];return e.maxDepth!==void 0&&n.push(Ot(e.maxDepth)),e.maxNodes!==void 0&&n.push(Rt(e.maxNodes)),e.maxArgs!==void 0&&n.push(Tt(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(Et(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(wt(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(At(e.memberDepth)),n}function Ao(e,n){let{min:t,max:s}=F$1(e);return n.length<t||n.length>s}var Dr=(e,n,t)=>m(n,e)?.params??m(t,e);function _t(e){if(Array.isArray(e))return e.some(_t);if(!e||typeof e!="object")return false;let n=e;return n.t==="typeQuery"||Object.values(n).some(_t)}function jr(e,n,t){if(!e.some(a=>a.bound))return [];let s=G$1(e,n),r=[];return e.forEach((a,o)=>{if(!a.bound||o>=n.length)return;let c=C$1(a.bound,s);ba$1(n[o],c,t)||r.push({param:a,arg:n[o],expected:c});}),r}function Oo(e,n,t,s){let r=e.typeRefs;if(!r?.length)return [];let a=[];for(let o of r){let c={type:"Identifier",name:o.name,loc:o.loc},i=Dr(o.name,n,t);if(!i){a.push(V("unknown-name",c,`Cannot find name '${o.name}'.`));continue}if(!o.args)continue;let{min:l,max:u}=F$1(i);if(o.args.length<l||o.args.length>u){a.push(S.genericTypeArity(c,o.name,l,u));continue}let p=s.get(o.args)??o.args;if(!_t(p))for(let m of jr(i,p,n))a.push(S.constraintViolation(c,m.arg,m.expected));}return a}function Mr(e$1,n,t={}){let s=Do(e$1),r={...n.lib,...Eo(n.types),...n.schemes,...s.schemes},{schemes:a,diagnostics:o$1}=Po(s,r),{schemes:c,diagnostics:i$1}=Co(s,a),l=Ft(e$1),u={overlay:new WeakMap,sink:U(),env:n,schemes:c,nominals:To(n.nominals??{},c),resolvedTypeArgs:new WeakMap,importNames:new Set,resolvedSchemes:new Set,invalidTargets:l.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=jo(e$1,u);try{m=B(e$1,y,u);}catch(h$1){if(h$1 instanceof h||h$1 instanceof i)u.sink.report(V("too-deep",e$1,h$1.message));else if(h$1 instanceof k)u.sink.report(V("too-complex-union",e$1,h$1.message));else throw h$1;m=o.unknown;}let f=[];p&&f.push(...Kn(p)),t.limits&&f.push(...wo(t.limits)),t.resultType&&f.push(Pt(t.resultType,c));let g=[...o$1,...i$1,...u.sink.all,...l.diagnostics,...Oo(e$1,c,u.nominals,u.resolvedTypeArgs),...t.unused?It(e$1,t.unused):[],...f.length?Bt(e$1,f,{overlay:u.overlay,schemes:c}):[]];return {type:m,overlay:u.overlay,diagnostics:g,schemes:u.schemes,nominals:u.nominals}}finally{p&&f();}}function Ro(e,n$1,t={}){let s=Mr(e,n$1,t),r={},a=new Map,o$1,c=l=>{let u=[];if(l.type==="VariableDeclaration")for(let p of l.declarations){let m=H(p.id),y=s.overlay.get(p);m&&y&&(n(r,m,y.type),u.push(m));}else if(l.type==="FunctionDeclaration"){let p=l.id?.name,m=s.overlay.get(l);p&&m&&(n(r,p,m.type),u.push(p));}return u};for(let l of e.body??[])if(l.type==="VariableDeclaration"||l.type==="FunctionDeclaration")c(l);else if(l.type==="ExportNamedDeclaration"){let u=l;if(u.declaration)for(let p of c(u.declaration))a.set(p,p);else for(let p of u.specifiers)a.set(p.exported.name,p.local.name);}else if(l.type==="ExportDefaultDeclaration"){let u=s.overlay.get(l.declaration);o$1=u?u.type:o.unknown;}let i={};if(a.size||o$1!==void 0){for(let[l,u]of a){let p=m(r,u);p&&n(i,l,{type:p});}o$1!==void 0&&(i.default={type:o$1});}else for(let l in r)n(i,l,{type:r[l]});return {type:{t:"object",props:i},diagnostics:s.diagnostics}}function To(e,n$1){let t=Object.keys(e);if(!t.some(r=>l(n$1,r)))return e;let s={};for(let r of t){let a=m(e,r);a&&!l(n$1,r)&&n(s,r,a);}return s}function Po(e,n$1){let t=zs(e.schemes,n$1),s=Object.fromEntries(Object.entries(e.schemes).filter(([l])=>!t.has(l))),r=Js(s,n$1),a=new Set([...t,...r.aliases]);if(!a.size&&!r.properties.size)return {schemes:n$1,diagnostics:[]};let o$1={...n$1};for(let l of a){let u=m(e.schemes,l);u&&n(o$1,l,{params:u.params,body:o.any});}for(let[l,u]of r.properties){let p=m(e.schemes,l);a.has(l)||!p||n(o$1,l,{params:p.params,body:Vt(p.body,u)});}let c=[],i=l=>{let u=m(e.ids,l);u&&c.push(S.circularTypeAlias(u,l));};for(let l of t)i(l);for(let[l,u]of r.properties){let p=m(e.props,l);for(let m$1 of u){let y=(p&&m(p,m$1))??m(e.ids,l);y&&c.push(S.circularTypeAnnotation(y,m$1));}}for(let l of r.aliases)i(l);return {schemes:o$1,diagnostics:c}}var Ir=(e,n)=>e.t==="index"&&t(K$1(e,n));function yr(e,n$1,t,s){let r=a=>{if(Array.isArray(a)){let l=false,u=a.map(p=>{let m=r(p);return m!==p&&(l=true),m});return l?u:a}if(!a||typeof a!="object")return a;let o$1=a;if(Ir(o$1,n$1)){let l=o$1;return s.push(S.noSuchMember(t,l.obj,Fr(l.key))),o.any}let c=false,i={};for(let l of Object.keys(o$1)){let u=r(o$1[l]);u!==o$1[l]&&(c=true),n(i,l,u);}return c?i:o$1};return r(e)}var Fr=e=>e.t==="literal"?String(e.value):ma$1(e);function Co(e,n$1){let t=[],s={...n$1},r=false;for(let a of Object.keys(e.schemes)){let o=m(n$1,a),c=m(e.ids,a);if(!o||!c)continue;let i=m(e.props,a),l=(p,m$1)=>{if(i&&(p.t==="union"||p.t==="intersection")){let y=p.of.map(f=>l(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=yr(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 yr(p,n$1,m$1,t)},u=l(o.body,c);u!==o.body&&(n(s,a,{...o,body:u}),r=true);}return {schemes:r?s:n$1,diagnostics:t}}var Do=e=>{let n$1={},t={},s={};return walk(e,{TSTypeAliasDeclaration(r){let a=r;if(!(!a.id?.name||!a.typeAnnotation)&&(n(n$1,a.id.name,{params:Qn(r)??[],body:a.typeAnnotation}),n(t,a.id.name,a.id),a.typeNode)){let o={};$r(a.typeNode,o),n(s,a.id.name,o);}}}),{schemes:n$1,ids:t,props:s}};function $r(e,n$1){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])$r(t,n$1);else if(e.type==="TSTypeLiteral")for(let t of e.members??[]){let s=t.key;t.type==="TSPropertySignature"&&typeof s=="string"&&!l(n$1,s)&&n(n$1,s,t);}}function jo(e,n$1){let t=n$1.env.modules,s={};walk(e,{ImportDeclaration(r){let a=r;if(a.importKind==="type")return;let o$1=a.source.value,c=typeof o$1=="string"&&t?m(t,o$1):void 0;if(!c){n$1.sink.report(S.unknownModule(a.source,String(o$1)));for(let i of a.specifiers)n(s,i.local.name,o.unknown);return}for(let i of a.specifiers){if(i.importKind==="type")continue;let l$1=i.local.name;if(Te(l$1,i.local,n$1),l(s,l$1)){n$1.sink.report(S.cannotRedeclare(i.local,l$1));continue}if(i.type==="ImportNamespaceSpecifier"){n(s,l$1,c);continue}let u=i.type==="ImportSpecifier"?i.imported.name:"default",p=qa$1(c,[u],n$1.schemes);p?n(s,l$1,p.type):(n$1.sink.report(S.noSuchMember(i,c,u)),n(s,l$1,o.unknown));}}});for(let r in s)n$1.importNames.add(r);return Object.keys(s).length?we(n$1.env.scope,s):n$1.env.scope}var N=(e,n,t,s)=>(e.overlay.set(n,{type:t,scope:s}),t);function B(e,n,t,s){switch(j(),e.type){case Kr:return e.schema;case "JSXElement":case "JSXFragment":return N(t,e,B(desugarJSX(e,{emptyPropsAsObject:true}),n,t),n);case "Literal":return N(t,e,Fe(e),n);case "Placeholder":return N(t,e,o.any,n);case "Identifier":{let r=e.name,a=ts(r,t)??G(n,r);return a!==void 0&&t.evolving.has(r)&&di(e,r,n,t)?N(t,e,o.any,n):a===void 0?r==="undefined"?N(t,e,o.undefined,n):(t.sink.report(S.unknownName(e,r)),N(t,e,o.any,n)):N(t,e,a,n)}case "MemberExpression":return N(t,e,Lr(e,n,t),n);case "CallExpression":return N(t,e,Wo(e,n,t,s),n);case "ArrowFunctionExpression":return es(e,n,t);case "FunctionDeclaration":return t.sink.report(S.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),N(t,e,o.unknown,n);case "FunctionExpression":return t.sink.report(S.unsupported(e,"anonymous function (use an arrow)")),N(t,e,o.unknown,n);case "ThisExpression":return t.sink.report(S.unsupported(e,"'this'")),N(t,e,o.unknown,n);case "BlockStatement":return N(t,e,ta(e,n,t),n);case "ReturnStatement":{let r=e.argument;return N(t,e,r?B(r,n,t):o.unknown,n)}case "IfStatement":return ie(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 ie(e,n,t),t.overlay.get(e)?.type??o.unknown;case "AssignmentExpression":{let r=e,a=r.left;if(r.operator==="="&&(a.type==="ArrayExpression"||a.type==="ObjectExpression")){let y=B(r.right,n,t);return Ve(a,y,n,t),N(t,e,y,n)}let o$1=r.operator!=="=",c=o$1?wr(a,n,t):ss(a,n,t);o$1&&a.type==="MemberExpression"&&at(a,t,"write")&&t.invalidTargets.add(a);let i=Y(a),l=t.invalidTargets.has(a);if(!o$1){let y=i!==null&&t.evolving.has(i),f=r.right,g=y||l?B(f,n,t):J(f,c,n,t,true),h=ye(f)?N(t,f,Fe(f),n):g;return i!==null&&tt(i,n,t)?ce(i,st(i,false,h,c,n,t),t):i!==null&&oe(i)&&ce(i,c,t),N(t,e,h,n)}let u=t.sink.reported,p=hi(r,l?o.any:c,n,t),m=t.sink.reported>u;return !l&&!m&&!ba$1(p,c,t.schemes)&&t.sink.report(S.notAssignable(e,p,c,t.schemes)),i!==null&&tt(i,n,t)?ce(i,st(i,true,p,c,n,t),t):i!==null&&oe(i)&&ce(i,N$1(c),t),N(t,e,p,n)}case "UpdateExpression":{let a=e.argument,o$1=wr(a,n,t);if(a.type==="MemberExpression"&&at(a,t,"write")&&t.invalidTargets.add(a),!t.invalidTargets.has(a)){let i=an(o$1,a,t);Rn(i.type,t.schemes)||t.sink.report(S.arithmeticOperand(a,"operand"));}let c=Y(a);return c!==null&&tt(c,n,t)?ce(c,st(c,true,o$1,o$1,n,t),t):c!==null&&oe(c)&&ce(c,N$1(o$1),t),N(t,e,o.number,n)}case "ExpressionStatement":return N(t,e,B(e.expression,n,t),n);case "VariableDeclaration":return it(e,n,t),N(t,e,o.unknown,n);case "TSTypeAliasDeclaration":{let r=e.id?.name,a=r?m(t.schemes,r):void 0;return N(t,e,a?Zo(a.body,n,t,e,a.params.length>0):o.unknown,n)}case "BinaryExpression":return N(t,e,wi(e,n,t),n);case "LogicalExpression":{let r=e,a=B(r.left,n,t),o=r.operator==="??"?void 0:ee(r.left,n,t.schemes),c=x(n,o?r.operator==="&&"?o.then:o.else:{}),{value:i,effect:l}=Gt(t,()=>B(r.right,c,t));return l.size&&Er([{effect:l,scope:c},{scope:x(n,o?r.operator==="&&"?o.else:o.then:{})}],t),N(t,e,Ri(r.operator,a,i,t.schemes),n)}case "UnaryExpression":return N(t,e,Pi(e,n,t),n);case "ConditionalExpression":{let r=e;B(r.test,n,t);let a=ee(r.test,n,t.schemes),o=x(n,a.then),c=x(n,a.else),i=Gt(t,()=>B(r.consequent,o,t)),l=Gt(t,()=>B(r.alternate,c,t));return (i.effect.size||l.effect.size)&&Er([{effect:i.effect,scope:o},{effect:l.effect,scope:c}],t),N(t,e,i.value===R&&l.value===R?R:ga$1([i.value,l.value]),n)}case "ObjectExpression":return N(t,e,Ci(e,n,t),n);case "ArrayExpression":return N(t,e,Sa(e,n,t),n);case "TemplateLiteral":{if(En(e)!==null)return N(t,e,Fe(e),n);for(let r of e.expressions){let a=B(r,n,t);ga(a,t.schemes)||t.sink.report(S.notTextConvertible(r,a));}return N(t,e,o.string,n)}case "AwaitExpression":{let r=e.argument,a=r?B(r,n,t):o.unknown;return N(t,e,wn(a),n)}case "Program":{let r=ot(e.body,n,t,new Set(t.importNames)).scope;return N(t,e,o.unknown,r)}case "JsonExpression":return N(t,e,Yt(e.body,n,t,e),n);case "ChainExpression":{let r=e.expression,a=B(r,n,t);return N(t,e,Mo(r,t)?ga$1([a,o.undefined]):a,n)}case "TSAsExpression":{let r=e,a=B(r.expression,n,t),o=ln(r.typeAnnotation,n,t,e);return dn(a,o,t.schemes)||t.sink.report(S.castUnsound(e,a,o)),N(t,e,o,n)}default:return t.sink.report(S.unsupported(e,`'${e.type}'`)),N(t,e,o.unknown,n)}}function Lr(e,n,t,s=false){let r=B(e.object,n,t),a=Fo(e,r,n,t),o=s?null:Y(e);if(o!==null&&oe(o)){let c=ts(o,t)??G(n,o);if(c!==void 0&&ba$1(c,a,t.schemes))return c}return a}function Mo(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 Io=e=>e.t==="unknown";function ct(e,n,t){return Io(e)?(t.sink.report(S.unknownValue(n)),true):false}function Pn(e){let n=cn(e),t=n.some(r=>r.t==="null"),s=n.some(r=>r.t==="undefined");return t||s?{null:t,undefined:s}:null}function lt(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 an(e,n,t){if(ct(e,n,t))return {type:o.any,error:true};let s=Pn(e);return s?(t.sink.report(S.possiblyNullish(n,s)),cn(e).filter(a=>a.t!=="null"&&a.t!=="undefined").length===0?{type:o.any,error:true}:{type:lt(e),error:false}):{type:e,error:false}}var xr=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(xr);function Fo(e,n,t$1,s){if(!e.optional&&ct(n,e.object,s))return N(s,e,o.any,t$1);let r=e.optional?null:Pn(n);r&&s.sink.report(S.possiblyNullish(e.object,r)),e.optional&&Pn(n)&&s.shortCircuits.add(e);let a=e.optional||r?lt(n):n;if(e.computed){let i=B(e.property,t$1,s);if(i.t==="literal"&&typeof i.value!="boolean"){let u=String(i.value),p=qa$1(a,[u],s.schemes);return p?p.type:(hr(e,a,u,s),o.any)}let l=K$1(o.index(a,i),s.schemes);if(xr(i)||l.t!=="index"&&!t(l)&&i.t!=="any")return l;if(i.t==="any"){let u=K$1(o.index(a,o.string),s.schemes);if(u.t!=="index"&&!t(u))return u}return Vr(i)?($o(e,a,i,s),o.any):o.unknown}let o$1=e.property.name,c=qa$1(a,[o$1],s.schemes);return c?c.type:(hr(e,a,o$1,s),o.any)}var Vr=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(Vr);function $o(e,n,t,s){let r=J$1(n,s.schemes),a=r.t==="array"||r.t==="tuple"||r.t==="object"&&r.index?.key==="number";s.sink.report(a?S.implicitAny.indexNotNumber(e.property):S.implicitAny.index(e,t,r.t==="var"&&!r.bound?o.unknown:n));}function hr(e,n,t,s){let r=H$1(n,s.schemes)?I(n,s.schemes):n;r.t==="object"||r.t==="array"||r.t==="tuple"||r.t==="union"?s.sink.report(S.noSuchMember(e,n,t)):r.t!=="any"&&r.t!=="unknown"&&s.sink.report(S.notObject(e,n));}function Lo(e,n,t,s){let r=e.arguments[0];if(!r){s.sink.report(S.missingArgument(e,"schema",o.unknown));return}if(r.type!=="Identifier"){s.sink.report(S.asserterNeedsName(r,n));return}let a=r.name,o$1=G(t,a),c=m(s.schemes,a);if(o$1===void 0){s.sink.report(c?S.typeAsValue(r,a):S.unknownName(r,a));return}if(!c||c.params.length>0){s.sink.report(S.notASchema(r,a));return}if(!(Ur(a,s)&&!xo(t,a)))return s.overlay.set(r,{type:c.body,scope:t}),c.body}function Ur(e,n){if(!n.env.asserters?.size)return false;let t=m(n.schemes,e);return t!==void 0&&t.params.length===0&&G(n.env.scope,e)!==void 0}function xo(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){Ur(e,t)&&t.sink.report(S.shadowsSchema(n,e));}function Qt(e,n){let t=Z(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function Vo(e,n){let t=G(e.scope,n);if(!t)return;let s=Qt(t,e.schemes);return s?Z(s,e.schemes):void 0}function Uo(e,n,t,s){let r=Qt(B(n[0],t,s),s.schemes),a=n.length>1?B(n[1],t,s):o.undefined;if(r){let o=aa$1(a,r,s.schemes);o.length&&s.sink.report(S.propsMismatch(n[1]??e,r,oa$1(o)));}return N(s,e,o.boolean,t)}var Kr="TSLiteSyntheticArg",Ko=e=>({type:Kr,schema:e});function Wr(e,n,t){if(!e.some(a=>a.type==="SpreadElement"))return {nodes:[...e],spread:null};let s=[],r=null;for(let a of e){if(a.type!=="SpreadElement"){s.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)s.push(i);continue}let c=Z(B(o,n,t),t.schemes);if(c.t==="tuple")for(let i of c.elements)s.push(Ko(i));else r={elem:as(c,o,t),node:a};}return {nodes:s,spread:r}}function Wo(e,n,t,s){let r=t.inference||t.skipContextSensitive?{...t,inference:void 0,skipContextSensitive:void 0}:t,a=e.arguments,o$1=Ut(e.callee);if(o$1){let f=r.env.accessors?m(r.env.accessors,o$1):void 0;if(f){let g=Qs(a);if(g){let h=qa$1(f,g,r.schemes);return h?h.type:(r.sink.report(S.noSuchMember(e,f,g.join("."))),o.unknown)}return a.forEach(h=>B(h,n,r)),o.unknown}}if(o$1&&r.env.asserters?.has(o$1)){let f=Lo(e,o$1,n,r);a.length<2&&a.length>0&&r.sink.report(S.missingArgument(e,"value",o.unknown));for(let g=1;g<a.length;g++){let h=B(a[g],n,r);g===1&&f&&E(h).size===0&&!dn(h,f,r.schemes)&&r.sink.report(S.unprovableValue(a[g],h,f,e.arguments[0].name));}return f??o.unknown}if(o$1&&r.env.matchers?.has(o$1))return Uo(e,a,n,r);e.callee.type==="ArrowFunctionExpression"&&r.invoked.add(e.callee);let c=J$1(B(e.callee,n,r),r.schemes);if(!e.optional&&ct(c,e.callee,r))return N(r,e,o.any,n);let i=Pn(c);i&&(e.optional?r.shortCircuits.add(e):r.sink.report(S.possiblyNullish(e.callee,i,true)));let l=i?J$1(lt(c),r.schemes):c;if(l.t==="any")return a.forEach(f=>B(f,n,r)),o.any;if(l.t==="overload")return qo(e,l,n,r,s);if(l.t!=="fn")return a.forEach(f=>B(f,n,r)),r.sink.report(S.notCallable(e,l)),o.unknown;let u=Wr(a,n,r),p=u.nodes.map(f=>Gr(f,n,r)),m$1=qr(e),y=!m$1||zr(l,m$1.length);return y||r.sink.report(Jr(e,[l],m$1.length)),on(e,l,u.nodes,p,n,r,u.spread,s,y?m$1:void 0)}function Gr(e,n,t){if(z(e))return B(e,n,{...t,skipContextSensitive:true});if(e.type!=="CallExpression")return B(e,n,t);let s=U(),r=B(e,n,{...t,sink:s});return s.hasErrors()?o.any:(s.all.forEach(a=>t.sink.report(a)),r)}function on(e,n,t,s,r,a,o$1=null,c,i){let l=k=>{if(!c)return k;let j=C$1(n.returns,k);if(j.t==="fn"&&c.t==="fn"){let M=k,q=Math.min(j.params.length,c.params.length);for(let ne=0;ne<q;ne++)M=Y$1(j.params[ne].type,c.params[ne].type,M)??M;return Y$1(j.returns,c.returns,M)??M}return Y$1(j,c,k)??k},u,p=a.sink;if(!o$1){let k=Yr(e,n,s.length,t);k&&(a.sink.report(k),u=U(),a={...a,sink:u});}let m=i?ni(e,n,i,a):void 0,y=m??nt(n,l(_$1(n,s).bindings)),f=m||!c?{}:nt(n,l({})),g=k=>O(C$1(k,Go(n,k,y,a.schemes))),h={returnMapper:f,nonFixing:y,outer:gr(n,y),fixing:g},b=new Set((n.typeParams??[]).map(k=>k.name)),O$1=k=>[...E(k)].some(j=>b.has(j)),P$1=new Set,le=[];t.forEach((k,j)=>{if(Hs(k)){let M=n.params[j]?.type??o.any,q=ns(M.t==="var"?C$1(M,y):M,k,a.schemes);s[j]=es(k,r,a,q&&g(q));}else if(k.type==="CallExpression"&&s[j].t==="any")s[j]=B(k,r,a,C$1(n.params[j]?.type??o.unknown,gr(n,y)));else if(ye(k)){let M=n.params[j]?.type??o.unknown,q=Oe(k);tn(C$1(M,f),q)&&(s[j]=N(a,k,q,r));}else if(k.type==="ArrayExpression"||k.type==="ObjectExpression"||k.type==="ConditionalExpression"||k.type==="LogicalExpression"&&z(k)){let M=n.params[j]?.type??o.unknown,q=z(k),ne=C$1(M,f);if(k.type==="ArrayExpression"&&vn(ne)){s[j]=is(k,ne,r,{...a,inference:h}),le.push(j);return}let ke=M.t==="var"&&!M.bound;if(q?ke||!n.params[j]:ke||!Na(ne,a.schemes)){q&&(s[j]=B(k,r,a));return}P$1.add(j),O$1(M)&&(s[j]=J(k,M,r,{...a,sink:U(),inference:h},true)),le.push(j);}});let Q=m||qt(n,nt(n,l(_$1(n,s).bindings)),a.schemes);m&&_o(e,n,Q,a);for(let k of le)s[k]=ji(t[k],C$1(n.params[k].type,Q),r,a,false);si(e,n,s,Q,a,t,o$1),t.forEach((k,j)=>{let M=n.params[j];k.type==="ObjectExpression"&&M&&!M.variadic&&!P$1.has(j)&&Xt(k,C$1(M.type,Q),a);});let D=C$1(n.returns,qt(n,Q,a.schemes)),W=D.t==="union"?ga$1(D.of):D;if(u)for(let k of u.all)k.kind!=="type"&&p.report(k);return P($(W,a.schemes,void 0,0,E(W)))}function nt(e,n$1){let t=e.typeParams;if(!t?.length)return {};let s={};for(let r of t){let a=m(n$1,r.name);a&&n(s,r.name,a);}return s}var qt=(e,n,t)=>W(e.typeParams??[],n,t);function Go(e,n$1,t,s){if(n$1.t!=="fn"||!e.typeParams?.some(c=>!m(t,c.name)))return t;let r=new Set;for(let c of n$1.params)for(let i of E(c.type))r.add(i);let a=qt(e,t,s),o={...t};for(let c of e.typeParams){if(m(t,c.name)||!r.has(c.name))continue;let i=m(a,c.name);i&&n(o,c.name,i);}return o}function gr(e,n$1){if(!e.typeParams?.some(s=>!m(n$1,s.name)))return n$1;let t={...n$1};for(let s of e.typeParams)m(n$1,s.name)||n(t,s.name,R);return t}function _o(e,n,t,s){for(let r of n.typeParams??[]){let a=m(t,r.name);if(!r.bound||!a)continue;let o=C$1(r.bound,t);ba$1(a,o,s.schemes)||s.sink.report(S.constraintViolation(e,a,o));}}function qo(e,n,t,s,r){let a=Wr(e.arguments,t,s),o=a.nodes,c=o.map(u=>Gr(u,t,s)),i=qr(e),l=i?n.signatures.filter(u=>zr(u,i.length)):n.signatures;return i&&!l.length?(s.sink.report(Jr(e,n.signatures,i.length)),br(e,n.signatures,a,o,c,t,s,r,void 0)):br(e,l,a,o,c,t,s,r,i)}function zo(e,n,t,s,r,a,o){if(!n.length)return e;let i=n.map(p=>{let m=U();return on(e,p,t,[...s],r,{...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 l=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=l[0].node;return l.every(p=>p.node===u)?u:e}function Sr(e,n,t,s,r,a){if(!n.length)return o.unknown;let o$1=_r(n,t.length);return o$1.combined?o$1.sig.returns:on(e,o$1.sig,t,[...s],r,{...a,sink:U()},null)}function _r(e,n){if(e.length===1||e.some(i=>i.typeParams?.length))return {sig:Xo(e,n),combined:false};let t=i=>i.params.length-(i.params[i.params.length-1]?.variadic?1:0),s=i=>{let l=i.params.findIndex(u=>u.optional||u.variadic);return l<0?i.params.length:l},r=Math.min(...e.map(s)),a=Math.max(...e.map(t)),o$1=[];for(let i=0;i<a;i++){let l=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(l),...i>=r?{optional:true}:{}});}let c=e.filter(i=>i.params[i.params.length-1]?.variadic).map(i=>fa$1(i,t(i))).filter(i=>i!==void 0);return c.length&&o$1.push({name:"args",type:o.array(ga$1(c)),variadic:true}),{sig:o.fn(o$1,o.intersection(e.map(i=>i.returns))),combined:true}}function Jo(e,n,t,s,r,a,o){if(!t.some(z))return {types:s,inner:[]};let c=U(),i=[...s];return on(e,n,t,i,r,{...a,sink:c},o),{types:i,inner:c.all.filter(l=>l.kind!=="type")}}function Xo(e,n){let t=e[0],s=-1;for(let r of e){let a=r.params.length;if(r.params.some(o=>o.variadic)||a>=n)return r;a>s&&(s=a,t=r);}return t}function br(e,n,t,s,r,a,o,c,i){let l={t:"overload",signatures:n},u=h=>t.spread?ti(h,s.length):Xr(h,s.length),p=l.signatures.filter(u);if(p.length>1)for(let h of p){let b=U(),O=on(e,h,s,[...r],a,{...o,sink:b},t.spread,c,i);if(!b.all.some(P=>P.kind==="type"&&P.severity==="error"))return b.all.forEach(P=>o.sink.report(P)),O}let m=p.length>1?void 0:l.signatures.find(h=>u(h)&&Nr(h,r,o));if(m||(p.length===1?m=p[0]:l.signatures.length===1&&(m=l.signatures[0])),!m){let h=t.spread?null:Yr(e,l.signatures,s.length,s),b=p.length===1||p.length>3?p[p.length-1]:p[0],O=Jo(e,h||!b?_r(l.signatures,s.length).sig:p.find(P=>Nr(P,r,o))??b,s,r,a,o,t.spread);o.sink.report(h??S.noMatchingOverload(zo(e,p,s,r,a,o,t.spread),l,O.types));for(let P of O.inner)o.sink.report(P);return Sr(e,l.signatures,s,r,a,o)}let{value:y,reported:f}=Cr(o,h=>on(e,m,s,r,a,h,t.spread,c,i)),g=f.some(h=>h.kind==="type"&&h.severity==="error");return l.signatures.length>1&&g?Sr(e,l.signatures,s,r,a,o):y}function Yo(e,n,t,s){let r=G(n,e[0]);if(r===void 0)return t.sink.report(S.unknownName(s,e[0])),o.any;let a=e.slice(1),o$1=a.length?qa$1(r,a,t.schemes)?.type:r;return o$1?o$1.t==="literal"?o.literal(o$1.value):o$1:(t.sink.report(S.noSuchMember(s,r,a.join("."))),o.any)}function ln(e,n$1,t,s){let r=a=>{if(Array.isArray(a)){let l=false,u=a.map(p=>{let m=r(p);return m!==p&&(l=true),m});return l?u:a}if(!a||typeof a!="object")return a;let o$1=a;if(o$1.t==="typeQuery")return Yo(o$1.path,n$1,t,s);if(o$1.t==="apply"&&typeof o$1.name=="string"){let l=Array.isArray(o$1.args)?o$1.args:void 0,u=l&&r(l);l&&u&&t.resolvedTypeArgs.set(l,u),Ho(o$1.name,n$1,t,s);let p=Dr(o$1.name,t.schemes,t.nominals);if(!p)return o.any;if(u&&Ao(p,u))return o.any;if(u?.length===1&&Qo(o$1.name,t.nominals))return o.array(u[0],o$1.name==="ReadonlyArray");if(u&&u!==l){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(Ir(o$1,t.schemes)){let l=o$1;return t.sink.report(S.noSuchMember(s,l.obj,Fr(l.key))),o.any}if(o$1.t==="union"&&Array.isArray(o$1.of)){let l=o$1.of,u=l.map(y=>r(y)),p=o.union(u);return p.t==="union"&&p.of.length===l.length&&p.of.every((y,f)=>y===l[f])?o$1:p}if(o$1.t==="intersection"&&Array.isArray(o$1.of)){let l=o$1.of,u=l.map(y=>r(y)),p=o.intersection(u);return p.t==="intersection"&&p.of.length===l.length&&p.of.every((y,f)=>y===l[f])?o$1:p}if(o$1.t==="tuple"&&Array.isArray(o$1.elements)){let l=o$1.elements,u=l.map(y=>r(y)),p=o.tuple(u,o$1.flags,o$1.readonly);return u.every((y,f)=>y===l[f])&&p.elements.every((y,f)=>y===u[f])?o$1:p}let c=false,i={};for(let l of Object.keys(o$1)){let u=r(o$1[l]);u!==o$1[l]&&(c=true),n(i,l,u);}return c?i:o$1};return r(e)}var Qo=(e,n)=>(e==="Array"||e==="ReadonlyArray")&&m(n,e)===m(Vn,e);function Ho(e,n$1,t,s){if(t.resolvedSchemes.has(e))return;let r=m(t.schemes,e);if(!r)return;t.resolvedSchemes.add(e);let a=ln(r.body,n$1,t,s);a!==r.body&&n(t.schemes,e,{...r,body:a});}function Zo(e,n,t,s,r){let a={...t,sink:U(),resolvedTypeArgs:new WeakMap,resolvedSchemes:new Set(Object.keys(t.schemes))},o=ln(e,n,a,s);return a.sink.hasErrors()?e:r?o:$(o,t.schemes)}var Tn=(e,n,t)=>{let s=Xn(e);return s===void 0?s:ln(s,n,t,e)},ei=(e,n,t)=>{let s=Yn(e);return s===void 0?s:ln(s,n,t,e)},qr=e=>{let n=e.typeArguments;return n?.length?n:void 0},zr=(e,n)=>{let{min:t,max:s}=F$1(e.typeParams??[]);return n>=t&&n<=s};function Jr(e,n,t){if(n.length===1){let{min:a,max:o}=F$1(n[0].typeParams??[]);return S.wrongTypeArgumentCount(e,a<o?`${a}-${o}`:a,t)}let s=-1/0,r=1/0;for(let a of n){let{min:o,max:c}=F$1(a.typeParams??[]);o>t?r=Math.min(r,o):c<t&&(s=Math.max(s,c));}return s!==-1/0&&r!==1/0?S.noOverloadTypeArgumentCount(e,t,s,r):S.wrongTypeArgumentCount(e,s===-1/0?r:s,t)}function ni(e,n,t,s){let r=n.typeParams??[],a=G$1(r,t.slice(0,r.length));for(let o of jr(r,t,s.schemes))s.sink.report(S.constraintViolation(e,o.arg,o.expected));return a}function ti(e,n){let t=0,s=false;for(let r of e.params)r.variadic?s=true:r.optional||t++;return n>=t&&(s||n<e.params.length)}function Xr(e,n){let t=0;for(let s of e.params){if(s.variadic)return n>=t;s.optional||t++;}return n>=t&&n<=e.params.length}function Yr(e,n,t,s){let r=Array.isArray(n)?n:[n];if(!r.length||r.some(l=>Xr(l,t)))return null;let a=r.some(l=>l.params.some(u=>u.variadic)),o=Math.min(...r.map(l=>l.params.filter(u=>!u.optional&&!u.variadic).length)),c=Math.max(...r.map(l=>l.params.length)),i=a?`${o}`:o<c?`${o}-${c}`:`${o}`;return t<o?S.argumentArity(e,i,t,"missing",a):S.argumentArity(s[c]??e,i,t,"excess",a)}function Nr(e,n,t){let s=nt(e,_$1(e,n).bindings);for(let r=0;r<e.params.length;r++){let a=e.params[r];if(a.variadic){let o$1=C$1(a.type,s),c=o$1.t==="array"?o$1.items:o.unknown;for(let i=r;i<n.length;i++)if(!ba$1(n[i],c,t.schemes))return false;return true}if(r>=n.length){if(!a.optional)return false;continue}if(!ba$1(n[r],C$1(a.type,s),t.schemes))return false}return true}function si(e,n,t,s,r,a=e.arguments??[],o$1=null){let c=l=>a[l]??e;for(let l=0;l<n.params.length;l++){let u=n.params[l];if(u.variadic){let m=C$1(u.type,s),y=m.t==="array"?m.items:o.unknown;for(let f=l;f<t.length;f++)ba$1(t[f],y,r.schemes)||r.sink.report(S.notAssignable(c(f),t[f],y,r.schemes));break}let p=C$1(u.type,s);l>=t.length||ba$1(t[l],p,r.schemes)||r.sink.report(S.notAssignable(c(l),t[l],p,r.schemes));}let i=n.params.find(l=>l.variadic);if(o$1){let l=t.length,u=n.params.filter(p=>!p.optional&&!p.variadic).length;if(!(l>=u&&(i||l<n.params.length))){r.sink.report(S.spreadArgument(o$1.node));return}if(i){let p=C$1(i.type,s),m=p.t==="array"?p.items:o.unknown;ba$1(o$1.elem,m,r.schemes)||r.sink.report(S.notAssignable(o$1.node,o$1.elem,m,r.schemes));}return}}function Cn(e,n$1,t){if(e.t==="object"){let s=w$1(e.props,n$1);return s?s.optional?q(s.type):s.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let s=e.of.map(r=>Cn(J$1(r,t),n$1,t)).filter(r=>r!==void 0);return s.length===0?void 0:s.length===1?s[0]:p({t:"intersection",of:s})}if(e.t==="union")return Qr(e.of,n$1,t);if(Ht(e)){let s=e.over.t==="keyof"?o.union([o.string,o.number]):J$1(e.over,t);if(!ba$1(o.literal(n$1),s,t))return;let r={};return n(r,e.key,o.literal(n$1)),C$1(e.body,r)}}var Ht=e=>e.t==="mapped"&&E(e.over).size>0;function Qr(e,n,t){let s=e.map(r=>Cn(J$1(r,t),n,t)).filter(r=>r!==void 0);return s.length?ga$1(s):void 0}var Zt=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(Zt),Br=new WeakMap;function ri(e,n,t){let s=Br.get(t);if(s)return s;let r=new Set;for(let o of e)if(o.t==="object")for(let c of Object.keys(o.props))r.add(c);let a=new Set;for(let o of r){let i=e.map(u=>Cn(u,o,n)).filter(u=>u!==void 0);if(!i.some(Zt))continue;i.length===e.length&&i.every(u=>da$1(u,i[0]))||a.add(o);}return Br.set(t,a),a}var Hr=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&Hr(e.object);function Zr(e,n,t,s,r){let a=ri(n,s,r),o=new Set;if(!a.size)return {chosen:n,ignored:o};let c=[];for(let u of e.properties){if(u.type!=="Property")continue;let p=u,m=Ae(p);if(m===null||!a.has(m)||!Hr(p.value))continue;let y=t(p);y&&Zt(y)&&c.push([m,y]);}let i=n.map(()=>1);for(let[u,p]of c){let m=false;n.forEach((y,f)=>{if(i[f]!==1)return;let g=Cn(y,u,s);g!==void 0&&(ba$1(p,g,s)?m=true:i[f]=2);}),n.forEach((y,f)=>{i[f]===2&&(i[f]=m?0:1);}),m||o.add(u);}let l=n.filter((u,p)=>i[p]===1);return {chosen:l.length?l:n,ignored:o}}function kr(e,n$1,t,s,r,a=false){let o={},c={};for(let i of e.properties){let l=i;if(l.type==="SpreadElement"){let f=J$1(B(l.argument,t,s),s.schemes);if(f.t==="object")for(let[g,h]of Object.entries(f.props))n(o,g,h),n(c,g,h);continue}let u=l,p=Ae(u),m=p!==null?n$1(p):void 0,y=m?J(u.value,m,t,s,r):L$1(B(u.value,t,s));p!==null&&(n(o,p,{type:a?y:m??y}),n(c,p,{type:y})),N(s,l,y,t);}return {checked:o,narrowed:c}}function zt(e,n){let t=J$1(e,n);if(t.t==="conditional"){let s=ea$1(t,n);return s?zt(s,n):t}if(t.t==="union"&&t.of.some(s=>s.t==="conditional")){let s=t.of.map(r=>{if(r.t!=="conditional")return r;let a=ea$1(r,n);return a?zt(a,n):r});return J$1(o.union(s),n)}return t}function J(e,n,t,s,r=false){let a=s.inference,o$1=a?C$1(n,a.returnMapper):n,c=u=>a?C$1(u,a.nonFixing):u,i=zt(o$1,s.schemes);switch(ye(e)?"Literal":e.type){case "Literal":{let u=Oe(e);return ba$1(u,n,s.schemes)||s.sink.report(S.notAssignable(e,u,n,s.schemes)),N(s,e,Fe(e),t),r?tn(o$1,u)?u:L$1(Fe(e)):n}case "ArrayExpression":{if(vn(i)){let u=is(e,i,t,s);return ba$1(u,n,s.schemes)||Di(e,u,i,t,s)||s.sink.report(S.notAssignable(e,u,n,s.schemes)),N(s,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=J(y.argument,n,t,s,r);f.t==="array"&&u.push(f.items);}else u.push(J(y,i.items,t,s,r));}let p=r&&u.length>0?o.array(ga$1(u)):c(n);return N(s,e,p,t)}break}case "ObjectExpression":{if(i.t==="object"||i.t==="intersection"||Ht(i)){let{value:{checked:u,narrowed:p},reported:m}=Cr(s,h=>kr(e,b=>Cn(i,b,s.schemes),t,h,r)),y=m.some(h=>h.kind==="type"&&h.severity==="error"),f=Xt(e,n,s),g={t:"object",props:u};return !f&&!y&&!ba$1(g,n,s.schemes)&&s.sink.report(S.notAssignable(e,g,n,s.schemes)),N(s,e,r?{t:"object",props:p}:n,t)}if(i.t==="union"){let u=i.of.filter(P=>P.t==="object"||P.t==="intersection");if(!u.length)break;let p=e,{chosen:m,ignored:y}=Zr(p,u,P=>B(P.value,t,{...s,sink:U()}),s.schemes,n),f=s.sink.reported,{checked:g,narrowed:h}=kr(p,P=>Qr(y.has(P)?u:m,P,s.schemes),t,s,r,true),b=Xt(p,n,s),O={t:"object",props:g};return !b&&s.sink.reported===f&&!ba$1(O,n,s.schemes)&&s.sink.report(S.notAssignable(e,O,n,s.schemes)),N(s,e,r?{t:"object",props:h}:n,t)}break}case "ArrowFunctionExpression":{let u=ns(a?n.t==="var"?C$1(n,a.nonFixing):n:i,e,s.schemes),p=u&&a?a.fixing(u):u;if(p){let m=es(e,t,s,p);return ba$1(m,n,s.schemes)||s.sink.report(S.notAssignable(e,m,n,s.schemes)),N(s,e,m,t),r?m:c(n)}break}case "ConditionalExpression":{let u=e;B(u.test,t,s);let p=ee(u.test,t,s.schemes),m=J(u.consequent,n,x(t,p.then),s,r),y=J(u.alternate,n,x(t,p.else),s,r);return N(s,e,r?ga$1([m,y]):n,t)}case "Placeholder":return N(s,e,c(n),t)}let l=B(e,t,s,a?C$1(n,a.outer):n);return ba$1(l,n,s.schemes)||s.sink.report(S.notAssignable(e,l,n,s.schemes)),N(s,e,l,t)}function es(e,n,t,s){if(t.skipContextSensitive){if(z(e))return R;t={...t,skipContextSensitive:void 0};}let r=!e.async&&t.invoked.has(e),a=t.flow.size?new Map(t.flow):null,o=a?x(n,Object.fromEntries(a)):n;a&&t.flow.clear();let c=t.shadowed;r&&(t.shadowed=new Set);let i=!t.invoked.has(e);i&&t.fnDepth.value++;try{return ci(e,o,t,s)}finally{i&&t.fnDepth.value--;let l=r?ai(e,o,t):null,u=t.shadowed;if(t.shadowed=c,t.flow.clear(),a)for(let[p,m]of a)t.flow.set(p,m);if(l)for(let[p,m]of l){let y=p.slice(0,oe(p)?p.indexOf("."):p.length);!u?.has(y)&&xe(n,p,t.schemes)!==void 0&&ce(p,m,t);}}}function ai(e,n,t){let s=e.body;return s.type!=="BlockStatement"?new Map(t.flow):Ne(s,n,t).types}function ns(e,n,t){let s=o=>{let c=J$1(o,t);return c.t==="fn"&&!oi(c,n)?c:void 0},r=J$1(e,t);if(r.t!=="union")return s(r);let a;for(let o of r.of){let c=s(o);if(c)if(!a)a=[c];else if(ii(a[0],c,t))a.push(c);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 oi(e,n){let t=0;for(let s of n.params){if(s.type==="AssignmentPattern"||s.type==="RestElement"||s.optional)break;t++;}return !e.params.some(s=>s.variadic)&&e.params.length<t}function ii(e,n,t){return e.params.length!==n.params.length||(e.typeParams?.length??0)!==(n.typeParams?.length??0)?false:e.params.every((s,r)=>{let a=n.params[r];return !!s.optional==!!a.optional&&!!s.variadic==!!a.variadic&&da$1(s.type,a.type,t)})}function ci(e,n$1,t,s){let r$1=s?ns(s,e,t.schemes):void 0,a=r$1?.typeParams?.length&&e.params.some(D=>!Kt(D))?r$1.typeParams:void 0,o$1=Qn(e)??a,c=D=>o$1?{...D,typeParams:o$1}:D,i={},l=t.invoked.has(e),u=e.params.map((D,W)=>{let k=D,j=r$1?fa$1(r$1,W):void 0;if(k.type==="RestElement"){let ve=k.argument,Ge=Tn(ve,n$1,t),pe=H(ve);!Ge&&!r$1&&!l&&pe&&t.sink.report(S.implicitAny.rest(k,pe));let te=Ge??(r$1?r(r$1,W):o.array(o.any));return pe?(Te(pe,ve,t),n(i,pe,te)):be(ve,te,i,n$1,t,{annotated:Ge!==void 0,mutable:true}),t.overlay.set(ve,{type:te,scope:n$1}),t.overlay.set(k,{type:te,scope:n$1}),{name:pe??`arg${W}`,type:te,variadic:true}}if(k.type==="AssignmentPattern"){let ve=k.left,Ge=Tn(ve,n$1,t),pe=Ge??j;Ei(k,pe??o.unknown,i,n$1,t,{annotated:Ge!==void 0,mutable:true});let te=H(ve),pt=te?m(i,te):void 0,dt=pe??pt??o.unknown,ps=dt.t==="unknown"?dt:ga$1([dt,o.undefined]);return te&&pt&&n(i,Le(te),pt),t.overlay.set(k,{type:ps,scope:n$1}),{name:te??`arg${W}`,type:ps,optional:true}}let M=H(k),q=Tn(k,n$1,t),ne=q===void 0&&j===void 0&&!l;ne&&M&&t.sink.report(S.implicitAny.parameter(k,M));let ke=q??j??(ne&&k.type!=="Identifier"?ya(k,n$1,t):o.any),us=k.type==="Identifier"&&(!!k.optional||q===void 0&&!!r$1?.params[W]?.optional),Dn=us&&ke.t!=="unknown"?ga$1([ke,o.undefined]):ke;return M?(Te(M,k,t),n(i,M,Dn),n(i,Le(M),Dn)):k.type!=="Identifier"&&be(k,ke,i,n$1,t,{annotated:q!==void 0,mutable:true}),t.overlay.set(k,{type:Dn,scope:n$1}),us?{name:M??`arg${W}`,type:Dn,optional:true}:{name:M??`arg${W}`,type:ke}}),p=false;u.forEach((D,W)=>{D.optional?p=true:!D.variadic&&p&&t.sink.report(S.requiredAfterOptional(e.params[W]));});let m$1=We(n$1,i,t),y=e.body,f=ei(e,n$1,t),g=e.returnGuard,h=g?{param:g.param,type:ln(g.type,n$1,t,e)}:void 0;if(h){let D=u[h.param];D&&!ba$1(h.type,D.type,t.schemes)&&t.sink.report(S.notAssignable(e,h.type,D.type,t.schemes));}let b=D=>h?{...D,guard:h}:D;if(y.type!=="BlockStatement"&&f){let D=e.async?wn(f):f;J(y,D,m$1,t);let W=e.async?An(f):f;return N(t,e,b(c({t:"fn",params:u,returns:W})),n$1)}let O$1=f??r$1?.returns,P=O$1&&e.async?wn(O$1):O$1,le=y.type==="BlockStatement"?N(t,y,ta(y,m$1,t,new Set(Object.keys(i).filter(D=>!Zn(D))),P),m$1):B(y,m$1,t),Q$1=e.async?An(le):le;if(f){let D=e.async?wn(f):f,W=e.async?le:Q$1;ba$1(W,D,t.schemes)||t.sink.report(S.notAssignable(y,Q$1,f,t.schemes));let k=e.async?An(f):f;return N(t,e,b(c({t:"fn",params:u,returns:k})),n$1)}return N(t,e,c({t:"fn",params:u,returns:Q(O(Q$1))}),n$1)}function rn(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?rn(n.argument):rn(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?rn(n.argument):rn(n):[]);case "AssignmentPattern":return rn(e.left);default:return []}}function ea(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>rn(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?ea(e.declaration):[]}var na=Object.freeze({t:"undefined"}),vr=e=>e===na;function ta(e,n,t,s=new Set,r){let{returns:a}=ot(e.body,n,t,s,r),o$1=!ae(e)||a.some(vr),c=a.filter(i=>!vr(i));return c.length===0?o$1?o.void:o.union([]):ga$1(o$1?[...c,o.undefined]:c)}var li=[o.literal(true),o.literal(false)];function cn(e){return e.t==="union"?e.of:e.t==="boolean"?li:[e]}function sa(e,n,t){let s=cn(e);if(s.length<=1)return e;let r=s.filter(o=>ba$1(n,o,t));if(r.length===0)return e;let a=ga$1(r);return ba$1(n,a,t)?a:e}var ra=(e,n)=>oe(e)?void 0:G(n,Le(e)),rt=e=>`${e}~#`,aa=new WeakMap,ui=Object.freeze({t:"undefined"}),pi=(e,n)=>{let t=Object.freeze({t:"undefined"});return aa.set(t,{node:e,depth:n.fnDepth.value}),t};function di(e,n,t,s){let r=G(t,rt(n)),a=r&&aa.get(r);return !a||a.depth>=s.fnDepth.value?false:(s.sink.report(S.implicitAny.evolving(a.node,n)),s.sink.report(S.implicitAny.variable(e,n)),true)}var tt=(e,n,t)=>!oe(e)&&(t.evolving.has(e)||G(n,Le(e))!==void 0);function st(e,n,t,s,r,a){if(n)return N$1(s);if(a.evolving.has(e))return M(t);let o=ra(e,r);return o===void 0?t:o.t==="union"||o.t==="boolean"?sa(o,t,a.schemes):o}function ce(e,n,t){let s=e+".";for(let r of t.flow.keys())r.startsWith(s)&&t.flow.delete(r);t.flow.set(e,n);}var ts=(e,n)=>n.flow.size?n.flow.get(e):void 0;function Gt(e,n){let t=new Map(e.flow),s=n(),r=new Map;for(let[a,o]of e.flow)t.get(a)!==o&&r.set(a,o);e.flow.clear();for(let[a,o]of t)e.flow.set(a,o);return {value:s,effect:r}}function Er(e,n){let t=new Set;for(let s of e)if(s.effect)for(let r of s.effect.keys())t.add(r);for(let s of t){let r=[];for(let a of e){let o=a.effect?.get(s)??n.flow.get(s)??xe(a.scope,s,n.schemes);o!==void 0&&r.push(o);}r.length&&ce(s,ga$1(r),n);}}function ss(e,n,t){if(e.type==="MemberExpression"){let s=N(t,e,Lr(e,n,t,true),n);return at(e,t,"write")&&t.invalidTargets.add(e),s}if(e.type==="Identifier"){let s=e.name,r=ra(s,n);if(r!==void 0)return N(t,e,r,n);if(t.evolving.has(s)){let a=ts(s,t)??G(n,s);if(a!==void 0)return N(t,e,a,n)}}return B(e,n,t)}function at(e,n,t){let s=n.overlay.get(e.object)?.type;if(!s)return false;let r=fi(e,n);if(!r)return false;let a=false,o=false;for(let c of r){let i=ra$1(s,c,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 c?c.name:""));}else i==="index"&&!o&&(o=true,n.sink.report(S.readonlyWrite(e,s)));}return a&&t==="write"}function fi(e,n){let t=e.property;if(!e.computed)return [{name:t.name,element:false}];let s=n.overlay.get(t)?.type;if(!s)return null;let r=s.t==="union"?s.of:[s],a=[];for(let o of r)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 wr(e,n,t){let s=B(e,n,t),r=N$1(s);return r===s?s:N(t,e,r,n)}function Ve(e,n,t,s){switch(e.type){case "ArrayExpression":{let r=rs(n,s);r===null&&(s.sink.report(S.notIterable(e,n)),r=o.any);let a=r;e.elements.forEach((o,c)=>{if(!o)return;let i=o;if(i.type==="SpreadElement")Ve(i.argument,ma(n,c,a,s.schemes),t,s);else {let l=Ar(i),u=da(n,c,l?i.left:i,l,a,s);Ve(i,l?x$1(u).type:u,t,s);}});return}case "ObjectExpression":{let r=[];for(let a of e.properties){let o$1=a;if(o$1.type==="SpreadElement"){Ve(o$1.argument,n.t==="any"?o.any:os(n,r,s.schemes),t,s);continue}let c=Ae(o$1);c!=null&&r.push(c),Ve(o$1.value,c!=null?ua(n,c,o$1.key,s):o.any,t,s);}return}default:{if(Ar(e)){B(e,t,s),Ve(e.left,n,t,s);return}let r=ss(e,t,s);!s.invalidTargets.has(e)&&!oa(e,s)&&!ba$1(n,r,s.schemes)&&s.sink.report(S.notAssignable(e,n,r,s.schemes)),ia(e,n,r,t,s);}}}var Ar=e=>e.type==="AssignmentExpression"&&e.operator==="=",oa=(e,n)=>e.type==="Identifier"&&n.evolving.has(e.name);function ia(e,n,t,s,r){let a=Y(e);a!==null&&tt(a,s,r)?ce(a,st(a,false,n,t,s,r),r):a!==null&&oe(a)&&ce(a,t,r);}function mi(e,n,t,s,r){if(e==="ForOfStatement"){Ve(n,t,s,r);return}if(n.type==="ArrayExpression"||n.type==="ObjectExpression"){r.sink.report(S.forInDestructuring(n));return}let a=ss(n,s,r);!r.invalidTargets.has(n)&&!oa(n,r)&&!ba$1(yi(t,r),a,r.schemes)&&r.sink.report(S.forInTarget(n)),ia(n,o.string,a,s,r);}function yi(e,n){let t=K$1(o.keyof(e),n.schemes),r=(t.t==="union"?t.of:[t]).filter(a=>a.t==="string"||a.t==="literal"&&typeof a.value=="string");return r.length?o.union(r):o.string}function hi(e,n,t,s){let r=e.right,a=B(r,t,s);return ha(e.operator.slice(0,-1),n,a,e,e.left,r,s)}var Ke=new Map;function Ne(e,n,t){switch(e.type){case "BlockStatement":{let s=Ke,r=n;for(let a of e.body){let o=Ne(a,r,t);if(o.types.size){let c=new Map(s);for(let[i,l]of o.types)c.set(i,l);s=c,r=x(r,Object.fromEntries(o.types));}if(o.exits)return {types:s,exits:true}}return {types:s,exits:false}}case "IfStatement":return {types:la(e,n,t),exits:ae(e)};case "ReturnStatement":case "ThrowStatement":return {types:Ke,exits:true};case "TryStatement":{let s=e,r=[],a=Ne(s.block,n,t);if(a.exits||r.push(a),s.handler){let c=Ne(s.handler.body,n,t);c.exits||r.push(c);}let o=ca(r,n,t);if(s.finalizer){let c=o.size?x(n,Object.fromEntries(o)):n,i=Ne(s.finalizer,c,t);if(i.types.size){let l=new Map(o);for(let[u,p]of i.types)l.set(u,p);o=l;}}return {types:o,exits:ae(e)}}default:return {types:t.stmtFlow.get(e)??Ke,exits:false}}}function ca(e,n,t){let s=new Set;for(let a of e)for(let o of a.types.keys())s.add(o);if(!s.size)return Ke;let r=new Map;for(let a of s){let o=xe(n,a,t.schemes),c=[];for(let i of e){let l=i.types.get(a)??o;l!==void 0&&c.push(l);}c.length&&o!==void 0&&r.set(a,ga$1(c));}return r}function la(e,n,t){let s=Ne(e.consequent,n,t),r=e.alternate?Ne(e.alternate,n,t):{types:Ke,exits:false};if(!s.types.size&&!r.types.size)return Ke;let a=[s,r].filter(o=>!o.exits);return a.length?ca(a,n,t):Ke}var gi=5;function Or(e,n$1,t,s){let r=new Map(t.flow),a=new Map,o=n$1,c=null;for(let l=0;l<gi;l++){let u=U(),p={...t,sink:u},m=s(o,p),y=new Map(Ne(e,o,p).types);for(let[g,h]of t.flow)r.get(g)!==h&&y.set(g,h);if(Rr(r,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=xe(o,g,t.schemes);if(b===void 0||h===b)continue;let O=ga$1([b,h]);da$1(O,b)||(n(f,g,O),a.set(g,O));}if(!Object.keys(f).length){for(let g of u.all)t.sink.report(g);c=m;break}o=x(o,f);}let i=c??s(o,t);Rr(r,t);for(let[l,u]of a)ce(l,u,t);return {returns:i,head:o}}function Rr(e,n){n.flow.clear();for(let[t,s]of e)n.flow.set(t,s);}function Si(e,n,t){let s=Ne(e,n,t);return s.exits||!s.types.size?n:x(n,Object.fromEntries(s.types))}function ot(e,n,t,s=new Set,r){if(!bi(e))return Tr(e,n,t,s,r);let a=new Set(t.evolving);try{return Tr(e,n,t,s,r)}finally{t.evolving.clear();for(let o of a)t.evolving.add(o);}}function bi(e){for(let n of e){let t=n;if(t.type==="VariableDeclaration"&&t.kind!=="const")return true;if(t.type==="ExportNamedDeclaration"){let s=t.declaration;if(s?.type==="VariableDeclaration"&&s.kind!=="const")return true}}return false}function Tr(e,n,t,s,r){let a=n,o=[];for(let c of e){let i=c;for(let l of ea(i))s.has(l.name)?t.sink.report(S.cannotRedeclare(l,l.name)):s.add(l.name);if(i.type==="VariableDeclaration")a=it(i,a,t);else if(i.type!=="ImportDeclaration")if(i.type==="ExportNamedDeclaration"){let l=i;if(l.declaration?.type==="VariableDeclaration")a=it(l.declaration,a,t);else if(l.declaration?.type==="FunctionDeclaration"){let u=B(l.declaration,a,t),p=H(l.declaration.id);p&&(a=We(a,{[p]:u},t));}else for(let u of l.specifiers)G(a,u.local.name)===void 0&&t.sink.report(S.unknownName(u.local,u.local.name));}else if(i.type==="ExportDefaultDeclaration")B(i.declaration,a,t);else if(i.type==="FunctionDeclaration"){let l=B(i,a,t),u=H(i.id);u&&(a=We(a,{[u]:l},t));}else if(i.type==="IfStatement"){let l=i;o.push(...ie(i,a,t,r));let u=la(l,a,t);u.size&&(a=x(a,Object.fromEntries(u))),!l.alternate&&ae(l.consequent)&&(a=x(a,ee(l.test,a,t.schemes).else));}else o.push(...ie(i,a,t,r)),(i.type==="BlockStatement"||i.type==="TryStatement")&&(a=Si(i,a,t));a=Ni(i,a,t);}return {scope:a,returns:o}}function Ni(e,n,t){if(!t.flow.size)return n;let s=new Map(t.flow);t.flow.clear(),t.stmtFlow.set(e,s);let r=x(n,Object.fromEntries(s));for(let a of s.keys())oe(a)||(r=Wt(r,a,t.schemes));return r}function ie(e,n,t,s){switch(e.type){case "ReturnStatement":{let r=e.argument,a=r?s?(J(r,s,n,t),s):B(r,n,t):na;return N(t,e,r?a:o.undefined,n),[a]}case "IfStatement":{let r=e;B(r.test,n,t);let a=ee(r.test,n,t.schemes),o$1=ie(r.consequent,x(n,a.then),t,s);return r.alternate&&o$1.push(...ie(r.alternate,x(n,a.else),t,s)),N(t,e,o.unknown,n),o$1}case "BlockStatement":{let{returns:r}=ot(e.body,n,t,void 0,s);return N(t,e,r.length?ga$1(r):o.void,n),r}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let r=e,a=n;r.init&&(r.init.type==="VariableDeclaration"?a=it(r.init,a,t):B(r.init,a,t));let{returns:o$1}=Or(r.body,a,t,(c,i)=>(r.test&&B(r.test,c,i),r.update&&B(r.update,c,i),ie(r.body,c,i,s)));return N(t,e,o.unknown,n),o$1}case "ForOfStatement":case "ForInStatement":{let r=e,a=B(r.right,n,t),o$1=ct(a,r.right,t)?null:Pn(a);o$1&&t.sink.report(S.possiblyNullish(r.right,o$1));let c=o$1?lt(a):a,i=e.type==="ForOfStatement"?as(c,r.right,t):o.string,l=r.left.type==="VariableDeclaration",u=l?Xs(r.left):null;u&&Te(u,Ys(r.left),t);let p=u?We(n,{[u]:i},t):n,{returns:m}=Or(r.body,p,t,(y,f)=>(l||mi(e.type,r.left,e.type==="ForOfStatement"?i:c,y,f),ie(r.body,y,f,s)));return N(t,e,o.unknown,n),m}case "BreakStatement":case "ContinueStatement":return N(t,e,o.unknown,n),[];case "ThrowStatement":{let r=e.argument;return r&&B(r,n,t),N(t,e,o.unknown,n),[]}case "TryStatement":{let r=e,a=ie(r.block,n,t,s);if(r.handler){let o$1=r.handler.param,c=o$1?H(o$1):null;c&&o$1&&Te(c,o$1,t);let i=c?We(n,{[c]:o.any},t):n;a.push(...ie(r.handler.body,i,t,s));}return r.finalizer&&a.push(...ie(r.finalizer,n,t,s)),N(t,e,o.unknown,n),a}case "SwitchStatement":{let r=e;B(r.discriminant,n,t);let a=n,o$1=[];for(let c of r.cases){c.test&&B(c.test,a,t);let i=ot(c.consequent,a,t,void 0,s);a=i.scope,o$1.push(...i.returns);}return N(t,e,o.unknown,n),o$1}default:return B(e,n,t),[]}}function ua(e,n,t,s){if(e.t==="any")return o.any;let r=qa$1(e,[n],s.schemes);return r?r.type:(s.sink.report(S.noSuchMember(t,e,n)),o.any)}function rs(e,n){let t=J$1(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 s=t.of.map(r=>rs(r,n));return s.every(r=>r!==null)?ga$1(s):null}default:return null}}var pa=e=>e.t==="array"||e.t==="tuple"||e.t==="union"&&e.of.length>0&&e.of.every(pa);function da(e,n,t$1,s,r,a){if(e.t==="any")return o.any;let o$1=J$1(e,a.schemes);if(o$1.t==="tuple"&&B$1(o$1)<0&&n>=o$1.elements.length)return s||a.sink.report(S.tupleIndexOutOfRange(t$1,e,o$1.elements.length,n)),o.undefined;if(!pa(o$1))return r;let c=K$1(o.index(o$1,o.literal(n)),a.schemes);return c.t==="index"||t(c)?r:c}function as(e,n,t){let s=Z(e,t.schemes);switch(s.t){case "array":return s.items;case "tuple":return s.elements.length?ga$1([...s.elements]):o.unknown;case "string":return o.string;case "literal":if(typeof s.value=="string")return o.string;break;case "unknown":case "any":return o.unknown;case "union":return ga$1(s.of.map(r=>as(r,n,t)));}return t.sink.report(S.notIterable(n,e)),o.any}function os(e,n$1,t){let s=Z(e,t),r=(s.t==="union"?s.of:[s]).filter(c=>c.t!=="null"&&c.t!=="undefined");if(!r.length)return o.object({});if(r.length>1)return o.union(r.map(c=>os(c,n$1,t)));let a=r[0];if(a.t!=="object")return a;let o$1={};for(let c in a.props)n$1.includes(c)||n(o$1,c,fa(a.props[c]));return o.object(o$1,a.index)}function Jt(e,n){let t=J$1(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(s=>Jt(s,n));case "union":{let s=t.of.filter(r=>!Bi(r));return s.length>0&&s.every(r=>Jt(r,n))}default:return false}}var Bi=e=>e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="literal"&&!e.value,fa=e=>{if(!e.readonly)return e;let{readonly:n,...t}=e;return t};function ma(e,n,t,s){if(e.t==="any")return o.any;let r=J$1(e,s),a=r.t==="union"?r.of:[r];return a.length&&a.every(o=>o.t==="tuple")?o.union(a.map(o=>ki(o,n))):o.array(t)}function ki(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 ya(e,n$1,t){let s={...t,sink:U()},r=a=>{if(a.type==="AssignmentPattern"){let o=B(a.right,n$1,s);return {type:Q(M(o)),optional:true}}return a.type==="ObjectPattern"||a.type==="ArrayPattern"?{type:ya(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 c of e.properties){if(c.type==="RestElement"){o$1={key:"string",value:o.any};continue}let i=Ae(c),{type:l,optional:u}=r(c.value);i!==null&&n(a,i,u?{type:l,optional:u}:{type:l});}return o.object(a,o$1)}if(e.type==="ArrayPattern"){let a=e.elements,c=a[a.length-1]?.type==="RestElement",i=[],l=[];return a.forEach((u,p)=>{if(!u){i.push(o.any),l.push("req");return}let m=u;if(m.type==="RestElement"){i.push(r(m.argument).type),l.push("rest");return}let{type:y,optional:f}=r(m);i.push(y),l.push(f&&p>=vi(a)?"optional":"req");}),!i.length||i.length===1&&c?o.array(o.any):o.tuple(i,l)}return o.any}function vi(e){let n=0;return e.forEach((t,s)=>{let r=t;r&&r.type!=="RestElement"&&r.type!=="AssignmentPattern"&&(n=s+1);}),n}function Ei(e,n$1,t,s,r,a){let o=B(e.right,s,r);n$1.t!=="unknown"&&!ba$1(o,n$1,r.schemes)&&r.sink.report(S.notAssignable(e.right,o,n$1,r.schemes));let c=Q(O(o)),{type:i}=x$1(n$1),l=i.t==="unknown"?c:ga$1([i,c]),u=e.left;if(u.type==="Identifier"){let p=u.name;Te(p,u,r),n(t,p,l),r.overlay.set(u,{type:l,scope:s});}else be(u,l,t,s,r,a);}function be(e,n$1,t,s,r,a){switch(e.type){case "Identifier":{let o=Tn(e,s,r)??n$1;Te(e.name,e,r),n(t,e.name,o),r.overlay.set(e,{type:o,scope:s});return}case "AssignmentPattern":{let o$1=e,c=o$1.right,i;if(n$1.t==="any")B(c,s,r),i=o.any;else if(a.annotated){let l=B(c,s,{...r,sink:U()});i=cn(l).some(u=>u.t==="undefined")?n$1:x$1(n$1).type,J(c,i,s,r);}else {let l=B(c,s,r),u=ga$1([x$1(n$1).type,l]);i=Q(a.mutable?M(u):u);}be(o$1.left,i,t,s,r,a);return}case "ObjectPattern":{let o$1=[];for(let c of e.properties){if(c.type==="RestElement"){let p;n$1.t==="any"?p=o.any:Jt(n$1,r.schemes)?p=os(n$1,o$1,r.schemes):(r.sink.report(S.notSpreadable(c.argument)),p=o.any),be(c.argument,p,t,s,r,a);continue}let i=c,l=Ae(i);l!=null&&o$1.push(l);let u=l!=null?ua(n$1,l,i.key,r):o.any;be(i.value,u,t,s,r,a);}return}case "ArrayPattern":{let o$1=rs(n$1,r);o$1===null&&(r.sink.report(S.notIterable(e,n$1)),o$1=o.any);let c=o$1;e.elements.forEach((i,l)=>{if(!i)return;let u=i;if(u.type==="RestElement")be(u.argument,ma(n$1,l,c,r.schemes),t,s,r,a);else {let p=u.type==="AssignmentPattern",m=p?u.left:u;be(u,da(n$1,l,m,p,c,r),t,s,r,a);}});return}}}function Xt(e,n,t){let s=u=>{let p=Z(u,t.schemes);return p.t==="mapped"?J$1(p,t.schemes):p},r=s(n),a=r.t==="union"?J$1(r,t.schemes):r,o=a.t==="union"?a.of.map(s):[a],i=(r.t==="union"?Zr(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 l$1=false;for(let u of e.properties){if(u.type==="SpreadElement")continue;let p=u;if(p.computed)continue;let m=Ae(p);if(m===null)continue;i.filter(f=>l(f.props,m)||f.index?.key==="number"&&y(m)).length||(t.sink.report(S.excessProperty(p.key,m,n)),l$1=true);}return l$1}function it(e,n$1,t){let s={};for(let r of e.declarations){let a=r.id,o$1=H(a);o$1&&Te(o$1,a,t);let c=Tn(a,n$1,t);if(!r.init){if(o$1&&e.kind!=="const"){c?(n(s,o$1,c),n(s,Le(o$1),c)):(n(s,o$1,o.undefined),t.evolving.add(o$1),n(s,rt(o$1),pi(a,t)));continue}t.sink.report(S.constNeedsInit(r)),o$1&&n(s,o$1,c??o.unknown);continue}let i=c??(r.init.type==="ArrowFunctionExpression"?er(r.init):null),l=o$1&&i?We(n$1,{[o$1]:i},t):n$1,u,p=null;c?(J(r.init,c,l,t),u=c,p=c,(c.t==="union"||c.t==="boolean")&&ye(r.init)&&(u=sa(c,Oe(r.init),t.schemes))):(u=B(r.init,l,t),e.kind!=="const"&&(u=M(u)),u=Q(u),p=u),N(t,r,u,n$1),o$1?(n(s,o$1,u),e.kind!=="const"&&p&&n(s,Le(o$1),p)):be(a,u,s,n$1,t,{annotated:c!==void 0,mutable:e.kind!=="const"});}return N(t,e,o.unknown,n$1),We(n$1,s,t)}function We(e,n$1,t){let s=n$1;for(let a of t.evolving.size?Object.keys(n$1):[])Zn(a)||!t.evolving.has(a)||l(n$1,rt(a))||(s===n$1&&(s={...n$1}),n(s,rt(a),ui));let r=we(e,s);for(let a of Object.keys(n$1))Zn(a)||(t.shadowed?.add(a),r=Wt(r,a,t.schemes));return r}function wi(e,n,t){let s=B(e.left,n,t),r=B(e.right,n,t);return ha(e.operator,s,r,e,e.left,e.right,t)}function ha(e,n,t,s,r,a,o$1){e==="in"&&(an(n,r,o$1),an(t,a,o$1));let c=fn.get(e);if(!c)return o.boolean;if(c.category==="arithmetic"||c.category==="bitwise"||c.category==="relational"||c.category==="additive"&&!ba$1(n,o.string,o$1.schemes)&&!ba$1(t,o.string,o$1.schemes)){let l=an(n,r,o$1),u=an(t,a,o$1);if(c.category==="additive"&&(l.error||u.error)){let p=l.error?u.error?null:u.type:l.type;return p&&Re(p,o$1.schemes)?o.string:o.any}n=l.type,t=u.type;}if(c.category==="additive"){if(Ue(n)||Ue(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(Rn(n,o$1.schemes)&&Rn(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(s,n,t,ga(u,o$1.schemes))),o.string}return o$1.sink.report(S.operatorNotApplicable(s,"+",n,t)),o.number}if(c.category==="arithmetic"||c.category==="bitwise")Rn(n,o$1.schemes)||o$1.sink.report(S.arithmeticOperand(r,"left")),Rn(t,o$1.schemes)||o$1.sink.report(S.arithmeticOperand(a,"right"));else if(c.category==="relational"&&!Ue(n)&&!Ue(t)){let l=J$1(n,o$1.schemes),u=J$1(t,o$1.schemes),p=ba$1(l,o.number,o$1.schemes),m=ba$1(u,o.number,o$1.schemes);p&&m||!p&&!m&&(ba$1(l,u,o$1.schemes)||ba$1(u,l,o$1.schemes))||o$1.sink.report(S.operatorNotApplicable(s,e,n,t));}return Dt(c.result)}var Ue=e=>e.t==="any"||e.t==="unknown",Rn=(e,n)=>Ue(e)||ba$1(J$1(e,n),o.number,n),Re=(e,n)=>!Ue(e)&&ba$1(J$1(e,n),o.string,n),Ai=o.union([o.string,o.number,o.boolean,o.null,o.undefined]),ga=(e,n)=>Ue(e)||ba$1(J$1(e,n),Ai,n),Oi={string:o.literal(""),number:o.literal(0),boolean:o.literal(false)},et=e=>e.t==="null"||e.t==="undefined";function Ri(e,n,t,s){if(n.t==="any"||n.t==="unknown")return ga$1([n,t]);let r=(n.t==="union"?[...n.of]:[n]).flatMap(o$1=>o$1.t==="boolean"?[o.literal(true),o.literal(false)]:[o$1]);if(e==="??")return r.some(et)?ga$1([...r.filter(o=>!et(o)),t]):n;if(e==="||")return dr(n,s)?ga$1([...r.filter(o=>!et(o)&&!(o.t==="literal"&&!o.value)),t]):n;if(!fr(n,s))return n;let a=r.flatMap(o=>{if(et(o))return [o];if(o.t==="literal")return o.value?[]:[o];let c=m(Oi,o.t);return c?[c]:[]});return ga$1([...a,t])}var Ti=o.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>o.literal(e)));function Pi(e,n,t){let s=B(e.argument,n,t);switch(e.operator){case "!":return s.t==="literal"?{t:"literal",value:!s.value,fresh:true}:o.boolean;case "-":case "+":case "~":return an(s,e.argument,t),e.operator==="-"&&s.t==="literal"&&typeof s.value=="number"?{t:"literal",value:-s.value,fresh:true}:o.number;case "typeof":return Ti;case "delete":{let r=e.argument,a=r.type==="ChainExpression"?r.expression:r;a.type==="MemberExpression"&&at(a,t,"delete");}return o.boolean;case "void":return o.undefined;default:return o.unknown}}function Ci(e,n$1,t){let s={},r,a=[],o=[],c=false,i=false,l=false;for(let p of e.properties){let m=p;if(m.type==="SpreadElement"){l=true;let b=Z(B(m.argument,n$1,t),t.schemes);if(b.t==="object"){for(let O in b.props)n(s,O,fa(b.props[O]));b.index&&(r={key:b.index.key,type:b.index.value});}continue}let y=m,f=B(y.value,n$1,t),g=L$1(f);if(N(t,m,f,n$1),y.computed){let b=Z(B(y.key,n$1,t),t.schemes);b.t==="literal"&&typeof b.value=="string"?(n(s,b.value,{type:g}),a.push(g)):b.t==="literal"&&typeof b.value=="number"?(n(s,String(b.value),{type:g}),a.push(g),o.push(g)):b.t==="string"?(c=true,a.push(g)):b.t==="number"&&(i=true,a.push(g),o.push(g));continue}let h=Ae(y);h!==null&&(n(s,h,{type:g}),a.push(g),/^\d+$/.test(h)&&o.push(g));}c?r={key:"string",type:ga$1(a)}:i&&(r={key:"number",type:ga$1(o)});let u=l?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return r?{t:"object",props:s,index:{key:r.key,value:r.type},...u}:{t:"object",props:s,...u}}function Sa(e,n,t){let s=[];for(let r of e.elements){if(!r)continue;let a=r;if(a.type==="SpreadElement"){let o=Z(B(a.argument,n,t),t.schemes);o.t==="array"?s.push(o.items):o.t==="tuple"&&s.push(...o.elements);continue}s.push(L$1(B(a,n,t)));}return v(o.array(s.length?ga$1(s):o.unknown))}function is(e,n,t,s){let r=Z(n,s.schemes),a=e.elements,o$1=a.every(i=>i&&i.type!=="SpreadElement"),c=(i,l)=>i.type==="ArrayExpression"?is(i,l,t,s):z(i)?J(i,l,t,s.inference?{...s,sink:U()}:s,true):tn(l,ye(i)?Oe(i):void 0)?B(i,t,s):L$1(B(i,t,s));if(r.t==="tuple"&&o$1){let i=B$1(r),l=p=>i<0||p<i?r.elements[p]:r.elements[i],u=a.map((p,m)=>{let y=l(m);return y?c(p,y):L$1(B(p,t,s))});return N(s,e,{t:"tuple",elements:u,fromLiteral:true},t)}if(r.t==="union"&&o$1){let i=r.of.map(l=>Z(l,s.schemes));if(i.some(l=>l.t==="tuple")){let l=(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=>l(f,m)).filter(f=>f!==void 0);return y.length?c(p,ga$1(y)):L$1(B(p,t,s))});return N(s,e,{t:"tuple",elements:u,fromLiteral:true},t)}}if(r.t==="array"){let i=[];for(let l of a){if(!l)continue;let u=l;if(u.type==="SpreadElement"){B(u.argument,t,s);continue}i.push(c(u,r.items));}return N(s,e,v(o.array(i.length?ga$1(i):o.unknown)),t)}return Sa(e,t,s)}function ba(e,n,t$1){let s=J$1(e,t$1);if(s.t==="array")return s.items;if(s.t==="tuple"){let r=B$1(s);if(n>=s.elements.length||r>=0&&n>=r)return;let a=K$1(o.index(s,o.literal(n)),t$1);return t(a)?void 0:a}if(s.t==="union"){let r=s.of.map(a=>ba(a,n,t$1));return r.some(a=>a===void 0)?void 0:ga$1(r)}}function Di(e,n,t,s,r){let a=J$1(t,r.schemes);if(a.t!=="array"&&a.t!=="tuple"&&a.t!=="union")return false;let o=(i,l)=>i.t==="tuple"?i.elements[l]:i.t==="array"?i.items:void 0,c=false;return e.elements.forEach((i,l)=>{if(!i)return;let u=i;if(u.type==="SpreadElement")return;let p=ba(a,l,r.schemes);if(!p)return;let m=o(n,l);if(!m||ba$1(m,p,r.schemes))return;let y=r.sink.reported;J(u,p,s,r,false),r.sink.reported>y&&(c=true);}),c}function Yt(e,n$1,t,s){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(c=>Yt(c,n$1,t,s));return o.array(o$1.length?ga$1(o$1):o.unknown)}let r=e;if(isExprMarker(r)){let o$1;try{o$1=fromJson(r);}catch{return t.sink.report(S.unsupported(s,`'${EXPR_MARKER}: ${String(m(r,EXPR_MARKER))}'`)),o.unknown}return B(o$1,n$1,t)}let a={};for(let o of Object.keys(r))n(a,o,{type:Yt(r[o],n$1,t,s)});return {t:"object",props:a}}function Na(e,n){let t=J$1(e,n);return t.t==="object"?Object.keys(t.props).length>0||t.index!==void 0:t.t==="intersection"||Ht(t)?true:t.t==="array"?t.items.t!=="any"&&t.items.t!=="unknown":t.t==="union"?t.of.some(s=>Na(s,n)):false}function ji(e,n,t,s,r){let a=U(),o=J(e,n,t,{...s,sink:a},true);if(!(a.hasErrors()&&r)){for(let c of a.all)s.sink.report(c);return a.hasErrors()?n:o}}var Mi=(e,n)=>({...e,typeAnnotation:n}),Ii=(e,n)=>({...e,returnType:n}),Fi=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function cs(e,n){return e.get(n)?.type}function $i(e,n){return e.get(n)?.scope}function Li(e,n){let t=e.get(n)?.type;return t?qa$1(t,[])?.completions??[]:[]}function xi(e,n){let t=e.get(n)?.scope;return t?[...bt(t)].map(([s,r])=>({key:s,type:r,optional:false})):[]}var Vi=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function Ui(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 ut(e,n,t,s={}){let r=e[n],a=e[n+1];if(!(!r||!a))switch(a.type){case "ArrowFunctionExpression":case "FunctionExpression":return a.body===r?a.returnType:void 0;case "VariableDeclarator":return a.init===r?a.id?.typeAnnotation:void 0;case "TSAsExpression":return a.typeAnnotation;case "ReturnStatement":return e.slice(n+1).find(Vi)?.returnType;case "CallExpression":{let o=(a.arguments??[]).indexOf(r);if(o<0)return;let c=cs(t,a.callee);return c?.t==="fn"?c.params?.[o]?.type:void 0}case "Property":{if(a.value!==r||e[n+2]?.type!=="ObjectExpression")return;let c=ut(e,n+2,t,s),i=Ui(a);return !c||!i?void 0:qa$1(c,[i],s)?.type}case "ArrayExpression":{let o=ut(e,n+1,t,s);return o?qa$1(o,["[]"],s)?.type:void 0}case "BinaryExpression":{let o$1=fn.get(a.operator);if(!o$1)return;if(o$1.category==="arithmetic"||o$1.category==="bitwise")return o.number;let c=a.left===r?a.right:a.left,i=cs(t,c);return i&&i.t!=="any"&&i.t!=="unknown"?i:void 0}case "LogicalExpression":return ut(e,n+1,t,s);case "UnaryExpression":{let o$1=a.operator;return o$1==="-"||o$1==="+"||o$1==="~"?o.number:void 0}default:return}}function Ki(e,n){return e.filter(t=>t.node===n)}function qi(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var zi=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function ls(e,n,t,s){if(isExprMarker(e)){let r=s.island?s.island(e,n):fromExprMarker(e);return t.stamp(r,n)}return Array.isArray(e)?t.stamp(Be.arrayExpression(e.map((r,a)=>ls(r,s.child(n,a),t,s))),n):zi(e)?t.stamp(Be.objectExpression(Object.entries(e).map(([r,a])=>{let o=s.child(n,r),c=t.stamp(Be.literal(r),o);return t.stamp(Be.property(c,ls(a,o,t,s),false,false),o)})),n):t.stamp(Be.literal(e),n)}function Ji(e){let n=new WeakMap,t=[e];for(;t.length>0;){let s=t.pop();forEachChild(s,r=>{n.set(r,s),t.push(r);});}return n}function Xi(e,n,t,s){let r=Ji(e),a=new Map,o=i=>{let l=a.get(i);return l===void 0&&(l=createPositionMap(i),a.set(i,l)),l},c=i=>{let l=i;for(;l!==void 0;){let u=t.get(l);if(u!==void 0)return u;l=r.get(l);}return s.fallback};return n.map(i=>{let l=c(i.node),u=s.textOf?.(l),p=u===void 0?void 0:ka(o(u),i.node.loc);return {diagnostic:i,anchor:l,...p?{span:p}:{}}})}function ka(e,n){if(!n?.start)return;let t=a=>e.offsetAt({line:a.line-1,column:a.column}),s=t(n.start),r=n.end?t(n.end):s;return {from:s,to:r<s?s:r}}function Yi(e,n){return ka(createPositionMap(e),n)}export{fn as BINARY_OP,Ct as BINARY_OPS,Ds as FUNCTION_KINDS,La as LOGICAL_OPS,$s as UNARY_OPS,Xi as anchorDiagnostics,Mi as annotate,Ii as annotateReturn,Fi as asExpression,xa as binaryOpsProducing,vt as calleeAllowlist,kt as capabilityNodes,Mr as check,we as childScope,Xa as collectBindings,Ft as collectMutations,no as collectReferences,It as collectUnused,Vo as componentProps,Qt as componentPropsOf,ut as contextualTypeAt,qi as createAnchors,Ra as createEnv,U as createSink,S as diag,Ki as diagnosticsAt,Ro as extractModuleType,Fa as fromCapability,Bt as guard,Kn as guardsFromCompiled,G as lookup,ls as lowerValue,V as makeDiagnostic,Tt as maxArgs,wt as maxCallNesting,Ot as maxDepth,Et as maxFunctionNesting,Un as maxNestingOf,Rt as maxNodes,Li as memberCompletions,At as memberDepth,Dt as opResultSchema,Pa as resolveNamed,Ca as resolveScheme,Pt as resultType,Ts as rootScope,Ha as sameSymbol,$i as scopeAt,xi as scopeCompletions,Yi as spanOf,cs as typeAt,Va as unaryOpsProducing,bt as visibleNames};
|