@tslite/checker 1.1.0 → 1.2.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/index.js CHANGED
@@ -1 +1 @@
1
- import {l,ha,X as X$1,ja as ja$1,Y,e,h,i,k,f,la as la$1,j,ba,I as I$1,E,m,C,D as D$1,z as z$1,V,J,x as x$1,K,W as W$1,R,M,A as A$1,B as B$1,$ as $$1,G as G$1,L as L$1,H as H$1,s,t,q as q$1,w,Z as Z$1,T,_ as _$1,F as F$1,o,r,ca as ca$1}from'./chunk-BW42VHMU.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,E as apparentType,q as asLiteralOrigin,I as baseLiteralType,B as bindTypeParams,Z as comparable,e as configureTypeLimits,O as contravariantInference,N as covariantInference,la as discover,_ as equals,Q as erasedSignature,D as expand1,u as flagAt,ha as format,ia as formatTypeArgs,ja as formatTypeDiff,z as freeVars,W as groundVars,P as inferFromCandidates,R as inferredTypes,U as instantiate,S as instantiateInContextOf,V as instantiateLoose,o as isMissingType,t as isNumericLiteralName,p as isObjectOrArrayLiteral,C as isScheme,ka as isSerializable,v as isVariadicTuple,da as join,ea as joinAll,n as missingType,ba as normalizeUnion,r as ownProp,y as renameTypeParams,j as resetInstantiationCount,f as resetTypeLimits,$ as resolveConditional,F as resolveOp,m as resolveTypeOp,w as restIndex,l as s,fa as sampleValue,M as silentNever,x as substitute,Y as subtype,aa as typeAtPosition,X as typeDiff,ca as typeFeatures,g as typeLimits,ga as typeNeedsParens,A as typeParamArity,T as unify,G as widen,K as widenInferred,H as widenLiteral,L as widenOrigin,J as widenType,s as withoutUndefined}from'./chunk-BW42VHMU.js';import {rootScope,childScope,lookup,visibleNames,TSLiteError,walk,desugarJSX,isExprMarker,EXPR_MARKER,fromExprMarker,childrenOf,VisitorKeys,forEachChild}from'@tslite/ast';import {compileProfile,nodeViolation,typeFeatureViolations}from'@tslite/capability';import {fromJson}from'@tslite/json';import*as de from'@tslite/ast/builders';import {createPositionMap}from'@tslite/language-service';var qt=(e={})=>rootScope(e),he=(e,n)=>childScope(e,n),U=(e,n)=>lookup(e,n),xn=e=>{let n=visibleNames(e);for(let t of n.keys())(t.includes(".")||t.endsWith("#"))&&n.delete(t);return n},Wt=new Set(["types","schemes","accessors","asserters","matchers","modules"]),Ps=(e={},n)=>{let t=n??{},r=Object.keys(t).filter(s=>!Wt.has(s));if(r.length>0)throw new TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${r.map(s=>`'${s}'`).join(", ")} \u2014 expected ${[...Wt].join(", ")}. Named types go under 'types'.`,{unknown:r});return {scope:qt(e),types:t.types??{},schemes:t.schemes??{},accessors:t.accessors??{},asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:t.modules??{}}},js=(e,n)=>e.types[n],Ms=(e,n)=>e.schemes[n];var Jt={"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","forbidden-member":"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"},A=(e,n,t)=>({code:e,kind:Jt[e],severity:"error",node:n,message:t}),F=(e,n,t,r="error")=>({code:e,kind:Jt[e],severity:r,node:n,message:t}),S={notAssignable:(e,n,t,r={})=>{let s=X$1(n,t,r),a=s.filter(c=>c.path.length>0),o=a.length?` ${ja$1(a)}.`:"",l=A("not-assignable",e,`Type '${ha(n)}' is not assignable to type '${ha(t)}'.${o}`),i=s.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)=>A("unknown-name",e,`Cannot find name '${n}'.`),notCallable:(e,n)=>A("not-callable",e,`Type '${ha(n)}' is not callable.`),noSuchMember:(e,n,t)=>A("no-such-member",e,`Property '${t}' does not exist on type '${ha(n)}'.`),notObject:(e,n)=>A("not-object",e,`Type '${ha(n)}' has no members to access.`),possiblyNullish:(e,n,t=false)=>{let r=n.null&&n.undefined?"'null' or 'undefined'":n.null?"'null'":"'undefined'";return A("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${r}.`:`Object is possibly ${r}.`)},unknownValue:e=>A("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>A("const-needs-init",e,"'const' declarations must be initialized."),missingArgument:(e,n,t)=>A("missing-argument",e,`Missing argument '${n}' of type '${ha(t)}'.`),notASchema:(e,n)=>A("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)=>A("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)=>A("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>A("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)=>A("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),cannotRedeclare:(e,n)=>A("cannot-redeclare",e,`Cannot redeclare block-scoped variable '${n}'.`),circularTypeAlias:(e,n)=>A("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>A("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>A("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,r,s=false)=>A(r==="missing"?"missing-argument":"excess-argument",e,s?`Expected at least ${n} arguments, but got ${t}.`:`Expected ${n} arguments, but got ${t}.`),excessProperty:(e,n,t)=>A("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${ha(t)}'.`),spreadArgument:e=>A("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>A("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>A("not-iterable",e,`Type '${ha(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),propsMismatch:(e,n,t)=>A("props-mismatch",e,`Payload is not compatible with the component props '${ha(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>A("no-matching-overload",e,`No overload of '${ha(n)}' matches the arguments (${t.map(r=>ha(r)).join(", ")}).`),constraintViolation:(e,n,t,r)=>A("constraint-violation",e,`Type '${ha(t)}' does not satisfy the constraint '${n} extends ${ha(r)}'.`),unsupported:(e,n)=>A("unsupported",e,`${n} is not supported in this language.`),wrongTypeArgumentCount:(e,n,t)=>A("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,r)=>A("wrong-type-argument-count",e,`No overload expects ${n} type arguments, but overloads do exist that expect either ${t} or ${r} type arguments.`),genericTypeArity:(e,n,t,r)=>A("wrong-type-argument-count",e,r===0?`Type '${n}' is not generic.`:t===r?`Generic type '${n}' requires ${r} type argument${r===1?"":"s"}.`:`Generic type '${n}' requires between ${t} and ${r} type arguments.`),forbiddenMember:(e,n)=>A("forbidden-member",e,`'${n}' is not a member of the language \u2014 the JS runtime substrate (identity/inheritance) is not vocabulary here (FP / portable IR). Use a factory/operator via DI.`),unusedName:(e,n)=>F("unused-name",e,`'${n}' is declared but its value is never read.`,"warning"),assignToConst:(e,n,t)=>A("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)=>A("readonly-write",e,`Index signature in type '${ha(n)}' only permits reading.`),castUnsound:(e,n,t)=>A("cast-unsound",e,`Conversion of type '${ha(n)}' to type '${ha(t)}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.`),unprovableValue:(e,n,t,r)=>A("unprovable-value",e,`A value of type '${ha(n)}' can never satisfy '${r}' (${ha(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>A("not-arithmetic-operand",e,n==="operand"?"An arithmetic operand must be of type 'any' or 'number'.":`The ${n==="left"?"left":"right"}-hand side of an arithmetic operation must be of type 'any' or 'number'.`),operatorNotApplicable:(e,n,t,r)=>A("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${ha(t)}' and '${ha(r)}'.`),implicitCoercion:(e,n,t,r)=>({...A("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${ha(n)}' and '${ha(t)}'. `+(r?"Use a template literal or 'asString(\u2026)'.":"Use 'stringify(\u2026)' to serialize a structure.")),data:{kind:"implicit-coercion",textConvertible:r}}),notTextConvertible:(e,n)=>({...A("implicit-coercion",e,`Cannot convert '${ha(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 G(){let e=[];return {all:e,report(n){e.push(n);},hasErrors(){return e.some(n=>n.severity==="error")}}}function _e(e,n,t){let r=I$1(e);return Z$1(n,J(r),t)||Z$1(r,n,t)}function Yt(e,n,t){return Y(e,n,t)}function zn(e,n,t={}){return n.flatMap(r=>r(e,t))}function Ne(e,n){let t=r=>{n(r);for(let s of childrenOf(r))t(s);};t(e);}var $s=e=>Array.isArray(e)?e:[e],Xt=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function Wn(e,n="error"){return t=>{let r=[];return Ne(t,s=>{let a=nodeViolation(s,e);a&&r.push(F("node-not-allowed",s,`'${a}' is not allowed by the capability profile.`,n));}),r}}function Ht(e,n="error"){let t=e.typeTier;return r=>{if(t==="author")return [];let s=[];return Ne(r,a=>{let o=a,l=o.type==="TSTypeAliasDeclaration"?o.id?.name:void 0;for(let i of [o.typeAnnotation,o.returnType]){if(!i)continue;let c=typeFeatureViolations(ca$1(i,l),t);c.length&&s.push(F("type-feature-not-allowed",a,`authoring type feature${c.length>1?"s":""} '${c.join("', '")}' requires capability tier 'author'.`,n));}}),s}}function P(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=>P(t.type,n))||!!e.index&&P(e.index.value,n);case "array":return P(e.items,n);case "tuple":return e.elements.some(t=>P(t,n));case "union":case "intersection":return e.of.some(t=>P(t,n));case "fn":return e.params.some(t=>P(t.type,n))||P(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(r=>P(r.type,n))||P(t.returns,n));case "keyof":return P(e.of,n);case "index":return P(e.obj,n)||P(e.key,n);case "mapped":return P(e.over,n)||P(e.body,n);case "conditional":return P(e.check,n)||P(e.extends,n)||P(e.then,n)||P(e.else,n);case "returnType":case "parameters":return P(e.fn,n);case "apply":return e.args.some(t=>P(t,n));default:return false}}function Qt(e,n="error"){return t=>{if(!e.typeStrict)return [];let r=[];return Ne(t,s=>{let a=s;for(let o of [a.typeAnnotation,a.returnType])if(o&&P(o)){r.push(F("any-not-allowed",s,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),r}}function Zt(e,n="error"){return (t,r)=>{let s=r.overlay;if(!e.typeStrict||!s)return [];let a=r.schemes??{},o=[];return Ne(t,l=>{if(l.type!=="TSAsExpression")return;let{expression:i}=l,c=s.get(i)?.type,u=s.get(l)?.type;!c||!u||P(u)||!_e(c,u,a)||Yt(c,u,a)||o.push(F("narrowing-cast-not-allowed",l,`A cast may only widen under 'strict': '${ha(c)}' is not assignable to '${ha(u)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),o}}function qn(e,n="error"){let t=new Set(e);return r=>{let s=[];return Ne(r,a=>{if(a.type!=="CallExpression")return;let o=a.callee;if(o.type!=="Identifier")s.push(F("name-not-allowed",o,"Only direct calls to allowed functions are permitted.",n));else {let l=o.name;t.has(l)||s.push(F("name-not-allowed",o,`Function '${l}' is not allowed here.`,n));}}),s}}function gn(e,n,t={}){let r=new Set($s(e)),s=t.severity??"error",a=[...r].join("/");return o=>{let l=[],i=(c,u)=>{let p=r.has(c.type),m=p?u+1:u;p&&m>n&&l.push(F("too-deep",c,`Nesting of ${a} exceeds ${n}${t.hint?` \u2014 ${t.hint}`:""}.`,s));for(let y of childrenOf(c))i(y,m);};return i(o,0),l}}var Jn=(e=3,n="error")=>gn(Xt,e,{hint:"use a pipe instead of nesting functions",severity:n}),Yn=(e,n="error")=>gn("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),Xn=(e,n="error")=>gn("MemberExpression",e,{severity:n});function Hn(e,n="error"){return t=>{let r=[],s=(a,o)=>{if(o>e){r.push(F("too-deep",a,`Expression nesting exceeds ${e}.`,n));return}for(let l of childrenOf(a))s(l,o+1);};return s(t,0),r}}function Qn(e,n="error"){return t=>{let r=0;return Ne(t,()=>{r++;}),r>e?[F("too-large",t,`Expression has ${r} nodes (max ${e}).`,n)]:[]}}function Zn(e,n="error"){return t=>{let r=[];return Ne(t,s=>{if(s.type==="CallExpression"){let a=s.arguments;a&&a.length>e&&r.push(F("too-large",s,`Call has ${a.length} arguments (max ${e}).`,n));}}),r}}function et(e,n={},t="error"){return (r,s)=>{let a=s.overlay?.get(r)?.type;return a?Y(a,e,n)?[]:[F("wrong-result-type",r,`Result type '${ha(a)}' is not assignable to the required '${ha(e)}'.`,t)]:[]}}function Sn(e){let n=[Wn(e),Ht(e),Qt(e),Zt(e)];return e.hostAllow!=="*"&&n.push(qn([...e.hostAllow])),n}function Vs(e){return Sn(compileProfile(e))}var nt=[{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"}],ze=new Map(nt.map(e=>[e.op,e])),er={number:l.number,boolean:l.boolean,string:l.string},tt=e=>er[e],nr=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],Us={number:l.number,boolean:l.boolean,string:l.string,undefined:l.undefined},Ks=[{op:"&&"},{op:"||"},{op:"??"}];function Gs(e,n={}){return nt.filter(t=>t.result==="additive"?Y(l.string,e,n)||Y(l.number,e,n):Y(er[t.result],e,n))}function xs(e,n={}){return nr.filter(t=>Y(Us[t.result],e,n))}var Be=e=>({bindings:new Map,parent:e}),rr=e=>e.charCodeAt(0)===95;function bn(e,n,t,r,s,a){let o=e.bindings.get(t);o&&(o.exempt=true);let l={name:t,node:r,kind:s,exempt:a,used:false};e.bindings.set(t,l),n.all.push(l);}function qe(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)qe(r,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let r=t.path[0];typeof r=="string"&&Nn(n,r);return}for(let r of Object.keys(t))qe(t[r],n);}function sr(e,n){let t=e;qe(t.typeAnnotation,n),qe(t.returnType,n);}function Nn(e,n){for(let t=e;t;t=t.parent){let r=t.bindings.get(n);if(r){r.used=true;return}}}function se(e,n,t,r,s,a){if(e)switch(e.type){case "Identifier":{let o=e.name;sr(e,n),bn(n,t,o,e,r,s||a&&rr(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")se(c.argument,n,t,r,s,false);else {let m=c;m.computed&&D(m.key,n,t),se(m.value,n,t,r,s||p,!m.shorthand);}});return}case "ArrayPattern":{for(let o of e.elements){if(!o)continue;let l=o;se(l.type==="RestElement"?l.argument:l,n,t,r,s,true);}return}case "AssignmentPattern":se(e.left,n,t,r,s,a);return;case "RestElement":se(e.argument,n,t,r,s,true);return;default:return}}function We(e,n,t){if(e)switch(e.type){case "AssignmentPattern":D(e.right,n,t),We(e.left,n,t);return;case "ObjectPattern":for(let r of e.properties)We(r.type==="RestElement"?r.argument:r.value,n,t);return;case "ArrayPattern":for(let r of e.elements)r&&We(r,n,t);return;case "RestElement":We(e.argument,n,t);return;default:return}}function tr(e,n,t,r){for(let s of e.declarations)se(s.id,n,t,"local",r,false),D(s.init,n,t);}function rt(e,n,t){let r=e,s=Be(n),a=r.params??[];for(let o of a)se(o,s,t,"parameter",false,true);for(let o of a)We(o,s,t);D(r.body,s,t);}function D(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(sr(e,n),e.type){case "Identifier":Nn(n,e.name);return;case "MemberExpression":{let r=e;D(r.object,n,t),r.computed&&D(r.property,n,t);return}case "Property":{let r=e;r.computed&&D(r.key,n,t),D(r.value,n,t);return}case "Program":case "BlockStatement":{let r=Be(n);for(let s of e.body??[])D(s,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":rt(e,n,t);return;case "FunctionDeclaration":{let r=e.id;r&&bn(n,t,r.name,r,"local",false),rt(e,n,t);return}case "CatchClause":{let r=e,s=Be(n);se(r.param,s,t,"local",true,false),D(r.body,s,t);return}case "SwitchStatement":{let r=e;D(r.discriminant,n,t);let s=Be(n);for(let a of r.cases){D(a.test,s,t);for(let o of a.consequent??[])D(o,s,t);}return}case "ForStatement":{let r=e,s=Be(n);D(r.init,s,t),D(r.test,s,t),D(r.update,s,t),D(r.body,s,t);return}case "ForOfStatement":case "ForInStatement":{let r=e;D(r.right,n,t);let s=Be(n),a=r.left;if(a.type==="VariableDeclaration")for(let o of a.declarations)se(o.id,s,t,"local",false,true);else D(a,s,t);D(r.body,s,t);return}case "VariableDeclaration":tr(e,n,t,false);return;case "ImportDeclaration":{for(let r of e.specifiers){let s=r.local;s&&bn(n,t,s.name,s,"import",rr(s.name));}return}case "ExportNamedDeclaration":{let r=e;if(r.declaration){let s=r.declaration;if(s.type==="VariableDeclaration")tr(s,n,t,true);else if(s.type==="FunctionDeclaration"){let a=s.id;a&&bn(n,t,a.name,a,"local",true),rt(s,n,t);}else D(s,n,t);}else for(let s of r.specifiers)Nn(n,s.local.name);return}case "TSAsExpression":D(e.expression,n,t);return;case "TSTypeAliasDeclaration":qe(e.typeAnnotation,n);return;case "JsonExpression":st(e.body,n,t);return;case "JSXOpeningElement":{let r=e;ar(r.name,n);for(let s of r.attributes??[])D(s,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":D(e.value,n,t);return;default:{let r=VisitorKeys[e.type];if(!r)return;let s=e;for(let a of r){let o=s[a];if(Array.isArray(o))for(let l of o)D(l,n,t);else D(o,n,t);}return}}}function ar(e,n,t){e&&(e.type==="JSXIdentifier"?Nn(n,e.name):e.type==="JSXMemberExpression"&&ar(e.object,n));}function st(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let s of e)st(s,n,t);return}let r=e;if(isExprMarker(r)){try{D(fromJson(r),n,t);}catch{}return}for(let s of Object.keys(r))st(r[s],n,t);}function at(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};D(e,Be(void 0),t);let r=[];for(let s of t.all)s.used||s.exempt||(s.kind==="parameter"?n.parameters:n.locals)&&r.push(S.unusedName(s.node,s.name));return r}var Js=new Set(["const","import"]),Je=e=>({binds:new Map,parent:e});function Ys(e,n){for(let t=e;t;t=t.parent){let r=t.binds.get(n);if(r)return r}}function ke(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?ke(n.argument):ke(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?ke(n):[]);case "AssignmentPattern":return ke(e.left);case "RestElement":return ke(e.argument);default:return []}}var Bn=(e,n,t)=>{for(let r of ke(n))e.binds.set(r.name,t);};function ot(e,n,t){if(!e)return;if(e.type!=="Identifier"){for(let a of ke(e))ot(a,n,t);return}let r=e.name,s=Ys(n,r);s&&Js.has(s)&&(t.invalid.add(e),t.out.push(S.assignToConst(e,r,s==="import"?"import":"const")));}function L(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let r=e;ot(r.left,n,t),L(r.right,n,t);return}case "UpdateExpression":{ot(e.argument,n,t);return}case "Program":case "BlockStatement":{let r=Je(n);for(let s of e.body??[])L(s,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,s=Je(n);for(let a of r.params??[])Bn(s,a,"param");L(r.body,s,t);return}case "CatchClause":{let r=e,s=Je(n);Bn(s,r.param,"param"),L(r.body,s,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,s=Je(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)Bn(s,o.id,a.kind);else a&&L(a,s,t);L(r.right,n,t),L(r.test,s,t),L(r.update,s,t),L(r.body,s,t);return}case "VariableDeclaration":{let r=e;for(let s of r.declarations)L(s.init,n,t),Bn(n,s.id,r.kind);return}case "ImportDeclaration":{for(let r of e.specifiers){let s=r.local;s&&n.binds.set(s.name,"import");}return}case "ExportNamedDeclaration":{let r=e;r.declaration&&L(r.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":L(e.expression,n,t);return;default:{let r=VisitorKeys[e.type];if(!r)return;let s=e;for(let a of r){let o=s[a];if(Array.isArray(o))for(let l of o)L(l,n,t);else L(o,n,t);}return}}}function it(e){let n={out:[],invalid:new WeakSet};return L(e,Je(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var Ye=e=>({decls:new Map,parent:e});function Hs(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}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 []}}var kn=(e,n)=>{for(let t of Ie(n))e.decls.set(t.name,t);};function $(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let r=Hs(n,e.name);r&&r!==e&&t.set(e,r);return}case "MemberExpression":{let r=e;$(r.object,n,t),r.computed&&$(r.property,n,t);return}case "Property":{let r=e;r.computed&&$(r.key,n,t),$(r.value,n,t);return}case "Program":case "BlockStatement":{let r=Ye(n);for(let s of e.body??[])$(s,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,s=e.id;s&&n.decls.set(s.name,s);let a=Ye(n);for(let o of r.params??[])kn(a,o);$(r.body,a,t);return}case "CatchClause":{let r=e,s=Ye(n);kn(s,r.param),$(r.body,s,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,s=Ye(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)kn(s,o.id);else a&&$(a,s,t);$(r.right,n,t),$(r.test,s,t),$(r.update,s,t),$(r.body,s,t);return}case "VariableDeclaration":{for(let r of e.declarations)kn(n,r.id),$(r.init,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let s=r.local;s&&n.decls.set(s.name,s);}return}case "TSTypeAliasDeclaration":{let r=e.id;r&&n.decls.set(r.name,r);return}case "TSAsExpression":$(e.expression,n,t);return;default:{let r=VisitorKeys[e.type];if(!r)return;let s=e;for(let a of r){let o=s[a];if(Array.isArray(o))for(let l of o)$(l,n,t);else $(o,n,t);}return}}}function Qs(e){let n=new WeakMap;return $(e,Ye(void 0),n),n}function X(e,n,t,r){switch(e.t){case "apply":if(n.has(e.name)&&r.add(e.name),t.has(e.name))for(let s of e.args)X(s,n,t,r);return;case "union":case "intersection":for(let s of e.of)X(s,n,t,r);return;case "conditional":X(e.check,n,t,r),X(e.extends,n,t,r),X(e.then,n,t,r),X(e.else,n,t,r);return;case "keyof":X(e.of,n,t,r);return;case "index":X(e.obj,n,t,r),X(e.key,n,t,r);return;case "returnType":case "parameters":X(e.fn,n,t,r);return;default:return}}function ir(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),s=new Map;for(let o of t){let l=new Set;X(e[o].body,t,r,l),s.set(o,l);}let a=new Set;for(let o of t){let l=new Set,i=[...s.get(o)];for(;i.length;){let c=i.pop();if(c===o){a.add(o);break}l.has(c)||(l.add(c),i.push(...s.get(c)));}}return a}var ct=e=>`a\0${e}`,or=(e,n)=>`p\0${e}\0${n}`;function cr(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),s=new Map,a=new Map;for(let f of t)a.set(f,Zs(e[f].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"&&t.has(f.of.name)?lt(e[f.of.name].body):void 0;return g?[...g].filter(b=>h.has(b)):[]}default:return []}},i=(f,h,g)=>{switch(f.t){case "apply":if(t.has(f.name)&&g.add(ct(f.name)),r.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 E of l(f.key,b))g.add(or(f.obj.name,E));}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),s.set(ct(f),h);for(let[g,b]of o(f)??[]){let E=new Set;for(let T of b)i(T,"annotation",E);s.set(or(f,g),E);}}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=[...s.get(f)??[]];for(;b.length;){let E=b.pop();g.has(E)||(g.add(E),b.push(...s.get(E)??[]));}return g},p=new Map,m=[];for(let f of s.keys()){if(!f.startsWith("p\0")||!u(f).has(f))continue;m.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=ct(f),g=u(h);m.some(b=>g.has(b)&&u(b).has(h))&&y.add(f);}return {properties:p,aliases:y}}function Zs(e){let n=new Map,t=r=>{if(r.t==="union"||r.t==="intersection")r.of.forEach(t);else if(r.t==="object")for(let[s,a]of Object.entries(r.props))n.has(s)||n.set(s,[]),n.get(s).push(a.type);};return t(e),n}function ut(e,n){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(r=>ut(r,n))};if(e.t!=="object")return e;let t={...e.props};for(let r of Object.keys(t))n.has(r)&&(t[r]={...t[r],type:{t:"any"}});return {...e,props:t}}function lt(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...lt(n)]));case "union":{let[n,...t]=e.of.map(lt);return new Set([...n??[]].filter(r=>t.every(s=>s.has(r))))}default:return new Set}}var wn=e=>e.typeAnnotation,pt=e=>e.returnType;function vn(e){let n=e.typeParameters;if(n?.length)return n.map(t=>l.typeParam(t.name,{bound:t.bound,default:t.default}))}var _=e=>e.type==="Identifier"?e.name:null,lr=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?_(n.id):null}return _(e)},ur=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},we=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function pr(e){let n=r=>r&&r.type==="Literal"&&typeof r.value=="string"?r.value:null;if(e.length===1&&e[0].type==="ArrayExpression"){let r=[];for(let s of e[0].elements){let a=n(s);if(a===null)return null;r.push(a);}return r}let t=[];for(let r of e){let s=n(r);if(s===null)return null;t.push(s);}return t.length?t:null}function dt(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=dt(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var Qe=e=>{if(e.type!=="TemplateLiteral")return null;let n=e;if(n.expressions.length!==0||n.quasis.length!==1)return null;let{cooked:t,raw:r}=n.quasis[0].value;return t??r},ae=e=>e.type==="Literal"||Qe(e)!==null;function ve(e){let n=Qe(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return l.unknown;let r=t.value;return r===null?l.null:r===void 0?l.undefined:typeof r=="string"||typeof r=="number"||typeof r=="boolean"?{t:"literal",value:r,fresh:true}:l.unknown}var ge=e=>{let n=Qe(e);if(n!==null)return l.literal(n);let t=e.value;return t===null?l.null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?l.literal(t):ve(e)},ft=e=>e.type==="ArrowFunctionExpression",dr=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,Ze=e=>dr(e)?e.args[0]:e,en=e=>dr(e)?e:l.promise(e);function He(e){return e.t==="tuple"?true:e.t==="array"?He(e.items):e.t==="union"?e.of.some(He):false}var ea=e=>e?.t==="literal"?typeof e.value:void 0,Xe=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>Xe(t,n));function Fe(e,n){let t=ea(n);switch(e.t){case "literal":return t===void 0||typeof e.value===t;case "boolean":return t==="boolean";case "keyof":return t===void 0||t==="string";case "union":case "intersection":return e.of.some(r=>Fe(r,n));case "var":{let r=e.bound??l.unknown;return t!==void 0&&Xe(r,t)||t===void 0&&na(r)?true:Fe(r,n)}default:return false}}var na=e=>Xe(e,"string")||Xe(e,"number")||Xe(e,"boolean"),z=(e,n)=>{let t=e;for(let r=0;r<50&&t.t==="apply";r++){let s=D$1(t,n);if(s===t||s.t==="apply"&&s.name===t.name)break;t=s;}return t};function fr(e){let n=pt(e);if(!n)return null;let t=e.params.map((s,a)=>({name:_(s)??`arg${a}`,type:wn(s)??l.unknown})),r=vn(e);return {t:"fn",params:t,returns:e.async?en(n):n,...r?{typeParams:r}:{}}}var oe={then:{},else:{}};function x(e){if(e.type==="Identifier")return e.name;if(e.type!=="MemberExpression")return null;let n=e;if(n.optional)return null;let t=x(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 Z=e=>e.includes("."),Ae=e=>`${e}#`,mt=e=>e.endsWith("#");function Oe(e,n,t){let r=U(e,n);return r!==void 0?r:kr(e,n,t)}var ce=(e,n,t)=>{let r=Oe(e,n,t);return r===void 0?void 0:E(r,t)};function kr(e,n,t){let r=n.lastIndexOf(".");if(r<0)return;let s=Oe(e,n.slice(0,r),t);if(s!==void 0)return la$1(s,[n.slice(r+1)],t)?.type}function ta(e,n){let t=n+".",r=new Set;for(let s=e;s;s=s.parent)for(let a of Object.keys(s.vars))(a.startsWith(t)||a===n)&&Z(a)&&r.add(a);return [...r].sort((s,a)=>s.length-a.length)}function yt(e,n,t){let r=ta(e,n);if(!r.length)return e;let s={};for(let a of r)s[a]=kr(he(e,s),a,t)??l.unknown;return he(e,s)}var wr=new Set(["string","number","boolean","undefined","function","object"]),ra={string:l.string,number:l.number,boolean:l.boolean,undefined:l.undefined,object:l.union([l.nonPrimitive,l.null])};function vr(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 sa=l.literal(true),aa=l.literal(false),te=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[sa,aa]:[n]),$e=(e,n)=>{let t=e.filter(r=>En(r)||n(r));return t.length===e.length?null:ba(t)},En=e=>e.t==="unknown"||e.t==="any";function mr(e,n){let t=e,r=n;if(e.type==="UnaryExpression"&&t.operator==="typeof"&&n.type==="Literal"&&typeof r.value=="string"){let s=x(t.argument);if(s!==null)return {name:s,tag:r.value}}return null}function oa(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let s=te(e).filter(a=>Y(a,n,t));return ba(s)}function ia(e,n,t){return e.t==="unknown"||e.t==="any"?null:$e(te(e),r=>!Y(r,n,t))}function ca(e,n){if(!wr.has(n))return null;let t=ra[n],r=te(e),a=r.flatMap(o=>t&&En(o)?te(t):[o]).filter(o=>vr(o,n)||En(o));return a.length===r.length&&a.every((o,l)=>o===r[l])?null:ba(a)}function la(e,n){if(!wr.has(n))return null;let t=te(e),r=t.filter(s=>En(s)||!vr(s,n));return r.length===t.length?null:ba(r)}function yr(e,n){let t=x(e);if(t!==null&&ae(n)){let r=ge(n);if(r.t==="literal"||r.t==="null")return {name:t,lit:r}}return null}function hr(e,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&ae(n)){let t=x(e.object),r=ge(n);if(t!==null&&(r.t==="literal"||r.t==="null"))return {name:t,prop:e.property.name,lit:r}}return null}function gr(e,n,t,r$1,s){let a=te(e),o=l=>l.t==="object"?r(l.props,n)?.type:void 0;return $e(a,l=>{let i=o(l);return r$1?!!i&&Y(t,i,s):!(i&&Y(i,t,s))})}function Sr(e,n,t){let r=te(e),s=a=>a.t==="object"&&(n in a.props||!!a.index);return $e(r,a=>t?s(a):!s(a))}function ua(e,n,t){return e.t==="unknown"||e.t==="any"||Y(n,e,t)?n:null}function pa(e,n,t){return $e(te(e),r=>!_$1(r,n,t))}var ie=1,Ee=2,da=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function nn(e,n){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return ie|Ee;case "literal":return e.value?ie:Ee;case "null":case "undefined":case "void":return Ee;case "array":case "tuple":case "fn":case "overload":return ie;case "object":return da(e)?ie|Ee:ie;case "nonPrimitive":return ie;case "union":case "intersection":return e.of.reduce((t,r)=>t|nn(r,n),0);default:{let t=E(e,n);return t===e?ie|Ee:nn(t,n)}}}var Er=(e,n)=>(nn(e,n)&Ee)!==0,Ar=(e,n)=>(nn(e,n)&ie)!==0,br=(e,n,t)=>{let r=te(e),s=r.filter(a=>nn(a,t)&n);return s.length===r.length?null:ba(s)},Nr=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,H=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),fa=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function W(e,n,t){if(e.type==="BinaryExpression"){let s=e;if(s.operator==="in"){let h=s.left,g=s.right,b=x(g);if(h.type==="Literal"&&typeof h.value=="string"&&b!==null){let E=ce(n,b,t);if(!E)return oe;let T=String(h.value);return H(b,Sr(E,T,true),Sr(E,T,false))}return oe}if(!fa(s.operator))return oe;let a=s.operator==="!=="||s.operator==="!=",o=s.left,l=s.right,i=mr(o,l)??mr(l,o);if(i){let h=ce(n,i.name,t);if(!h)return oe;let g=ca(h,i.tag),b=la(h,i.tag);return a?H(i.name,b,g):H(i.name,g,b)}let c=Nr(o),u=Nr(l),p=c?l:u?o:null,m=p?x(p):null;if((c||u)&&m!==null){let h=m,g=ce(n,h,t);if(!g)return oe;let E=s.operator==="=="||s.operator==="!="?["null","undefined"]:[c??u],T=te(g),re=$e(T,v=>E.includes(v.t)),k=$e(T,v=>!E.includes(v.t));return a?H(h,k,re):H(h,re,k)}let y=yr(o,l)??yr(l,o),f=hr(o,l)??hr(l,o);if(y||f){let h=oe;if(y){let g=ce(n,y.name,t);if(g){let b=ua(g,y.lit,t),E=pa(g,y.lit,t);h=a?H(y.name,E,b):H(y.name,b,E);}}if(f){let g=ce(n,f.name,t);if(g){let b=gr(g,f.prop,f.lit,true,t),E=gr(g,f.prop,f.lit,false,t),T=a?H(f.name,E,b):H(f.name,b,E);h={then:{...h.then,...T.then},else:{...h.else,...T.else}};}}return h}return oe}if(e.type==="UnaryExpression"&&e.operator==="!"){let s=W(e.argument,n,t);return {then:s.else,else:s.then}}if(e.type==="CallExpression"){let s=ya(e,n,t);if(s)return s}if(e.type==="LogicalExpression"){let s=e;if(s.operator==="&&"){let a=W(s.left,n,t),o=W(s.right,I(n,a.then),t);return {then:{...a.then,...o.then},else:Br(a.else,{...a.then,...o.else},n,t)}}if(s.operator==="||"){let a=W(s.left,n,t),o=W(s.right,I(n,a.else),t);return {then:Br(a.then,{...a.else,...o.then},n,t),else:{...a.else,...o.else}}}return oe}let r=x(e);if(r!==null){let s=ce(n,r,t);if(s)return H(r,br(s,ie,t),br(s,Ee,t))}return oe}function Br(e,n,t,r){let s={};for(let a of Object.keys(e)){let o=e[a],l=n[a]??ce(t,a,r);if(!l)continue;let i=ba([o,l]),c=ce(t,a,r);c&&_$1(i,c)||(s[a]=i);}return s}function ma(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 ya(e,n,t){let r=e.callee;if(r.type!=="Identifier")return null;let s=U(n,r.name);if(!s)return null;let a=ma(s,e.arguments.length);if(!a)return null;let o=e.arguments[a.param],l=o?x(o):null;if(l===null)return null;let i=ce(n,l,t);return i?H(l,oa(i,a.type,t),ia(i,a.type,t)):null}var I=(e,n)=>Object.keys(n).length?he(e,n):e;function Q(e){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(t=>Q(t));case "IfStatement":{let n=e;return !!n.alternate&&Q(n.consequent)&&Q(n.alternate)}case "TryStatement":{let n=e;if(n.finalizer&&Q(n.finalizer))return true;let t=!n.handler||Q(n.handler.body);return Q(n.block)&&t}default:return false}}var Na=e=>{let n={};for(let t of Object.keys(e))n[t]={params:[],body:e[t]};return n};function Ba(e){let n=[];return e.maxDepth!==void 0&&n.push(Hn(e.maxDepth)),e.maxNodes!==void 0&&n.push(Qn(e.maxNodes)),e.maxArgs!==void 0&&n.push(Zn(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(Jn(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(Yn(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(Xn(e.memberDepth)),n}function ka(e,n,t){let{min:r,max:s}=A$1(e.params);return n.length<r||n.length>s?true:Nt(e.params,n,t).length>0}function Nt(e,n,t){if(!e.some(a=>a.bound))return [];let r=B$1(e,n),s=[];return e.forEach((a,o)=>{if(!a.bound||o>=n.length)return;let l=x$1(a.bound,r);Y(n[o],l,t)||s.push({param:a,arg:n[o],expected:l});}),s}function wa(e,n){let t=e.typeRefs;if(!t?.length)return [];let r=[];for(let s of t){let a={type:"Identifier",name:s.name,loc:s.loc},o=n[s.name];if(!o){r.push(F("unknown-name",a,`Cannot find name '${s.name}'.`));continue}let l=s.args;if(!l)continue;let{min:i,max:c}=A$1(o.params);if(l.length<i||l.length>c){r.push(S.genericTypeArity(a,s.name,i,c));continue}for(let u of Nt(o.params,l,n))r.push(S.constraintViolation(a,u.param.name,u.arg,u.expected));}return r}function xr(e$1,n,t={}){let r=Oa(e$1),s={...Na(n.types),...n.schemes,...r.schemes},{schemes:a,diagnostics:o}=Ea(r,s),{schemes:l$1,diagnostics:i$1}=Aa(r,a),c=it(e$1),u={overlay:new WeakMap,sink:G(),env:n,schemes:l$1,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=Ca(e$1,u);try{m=B(e$1,y,u);}catch(g){if(g instanceof h||g instanceof i)u.sink.report(F("too-deep",e$1,g.message));else if(g instanceof k)u.sink.report(F("too-complex-union",e$1,g.message));else throw g;m=l.unknown;}let f=[];p&&f.push(...Sn(p)),t.limits&&f.push(...Ba(t.limits)),t.resultType&&f.push(et(t.resultType,l$1));let h$1=[...o,...i$1,...u.sink.all,...c.diagnostics,...wa(e$1,l$1),...t.unused?at(e$1,t.unused):[],...f.length?zn(e$1,f,{overlay:u.overlay,schemes:l$1}):[]];return {type:m,overlay:u.overlay,diagnostics:h$1,schemes:u.schemes}}finally{p&&f();}}function va(e,n,t={}){let r=xr(e,n,t),s={},a=new Map,o,l$1=c=>{let u=[];if(c.type==="VariableDeclaration")for(let p of c.declarations){let m=_(p.id),y=r.overlay.get(p);m&&y&&(s[m]=y.type,u.push(m));}else if(c.type==="FunctionDeclaration"){let p=c.id?.name,m=r.overlay.get(c);p&&m&&(s[p]=m.type,u.push(p));}return u};for(let c of e.body??[])if(c.type==="VariableDeclaration"||c.type==="FunctionDeclaration")l$1(c);else if(c.type==="ExportNamedDeclaration"){let u=c;if(u.declaration)for(let p of l$1(u.declaration))a.set(p,p);else for(let p of u.specifiers)a.set(p.exported.name,p.local.name);}else if(c.type==="ExportDefaultDeclaration"){let u=r.overlay.get(c.declaration);o=u?u.type:l.unknown;}let i={};if(a.size||o!==void 0){for(let[c,u]of a)s[u]&&(i[c]={type:s[u]});o!==void 0&&(i.default={type:o});}else for(let c in s)i[c]={type:s[c]};return {type:{t:"object",props:i},diagnostics:r.diagnostics}}function Ea(e,n){let t=ir(e.schemes,n),r=Object.fromEntries(Object.entries(e.schemes).filter(([i])=>!t.has(i))),s=cr(r,n),a=new Set([...t,...s.aliases]);if(!a.size&&!s.properties.size)return {schemes:n,diagnostics:[]};let o={...n};for(let i of a)o[i]={params:e.schemes[i].params,body:l.any};for(let[i,c]of s.properties){if(a.has(i))continue;let{params:u,body:p}=e.schemes[i];o[i]={params:u,body:ut(p,c)};}let l$1=[];for(let i of t)l$1.push(S.circularTypeAlias(e.ids[i],i));for(let[i,c]of s.properties)for(let u of c)l$1.push(S.circularTypeAnnotation(e.props[i]?.[u]??e.ids[i],u));for(let i of s.aliases)l$1.push(S.circularTypeAlias(e.ids[i],i));return {schemes:o,diagnostics:l$1}}var _r=(e,n)=>e.t==="index"&&o(F$1(e,n));function Cr(e,n,t,r){let s=a=>{if(Array.isArray(a)){let c=false,u=a.map(p=>{let m=s(p);return m!==p&&(c=true),m});return c?u:a}if(!a||typeof a!="object")return a;let o=a;if(_r(o,n)){let c=o;return r.push(S.noSuchMember(t,c.obj,zr(c.key))),l.any}let l$1=false,i={};for(let c of Object.keys(o)){let u=s(o[c]);u!==o[c]&&(l$1=true),i[c]=u;}return l$1?i:o};return s(e)}var zr=e=>e.t==="literal"?String(e.value):ha(e);function Aa(e,n){let t=[],r={...n},s=false;for(let a of Object.keys(e.schemes)){let o=n[a],l=e.ids[a];if(!o||!l)continue;let i=e.props[a],c=(p,m)=>{if(i&&(p.t==="union"||p.t==="intersection")){let y=p.of.map(f=>c(f,m));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=Cr(g.type,n,i[h]??m,t);b!==g.type&&(f=true),y[h]=b===g.type?g:{...g,type:b};}return f?{...p,props:y}:p}return Cr(p,n,m,t)},u=c(o.body,l);u!==o.body&&(r[a]={...o,body:u},s=true);}return {schemes:s?r:n,diagnostics:t}}var Oa=e=>{let n={},t={},r={};return walk(e,{TSTypeAliasDeclaration(s){let a=s;if(!(!a.id?.name||!a.typeAnnotation)&&(n[a.id.name]={params:vn(s)??[],body:a.typeAnnotation},t[a.id.name]=a.id,a.typeNode)){let o={};Wr(a.typeNode,o),r[a.id.name]=o;}}}),{schemes:n,ids:t,props:r}};function Wr(e,n){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])Wr(t,n);else if(e.type==="TSTypeLiteral")for(let t of e.members??[]){let r=t.key;t.type==="TSPropertySignature"&&typeof r=="string"&&!Object.prototype.hasOwnProperty.call(n,r)&&(n[r]=t);}}function Ca(e,n){let t=n.env.modules,r={};walk(e,{ImportDeclaration(s){let a=s;if(a.importKind==="type")return;let o=a.source.value,l$1=typeof o=="string"?t?.[o]:void 0;if(!l$1){n.sink.report(S.unknownModule(a.source,String(o)));for(let i of a.specifiers)r[i.local.name]=l.unknown;return}for(let i of a.specifiers){if(i.importKind==="type")continue;let c=i.local.name;if(Se(c,i.local,n),c in r){n.sink.report(S.cannotRedeclare(i.local,c));continue}if(i.type==="ImportNamespaceSpecifier"){r[c]=l$1;continue}let u=i.type==="ImportSpecifier"?i.imported.name:"default",p=la$1(l$1,[u],n.schemes);p?r[c]=p.type:(n.sink.report(S.noSuchMember(i,l$1,u)),r[c]=l.unknown);}}});for(let s in r)n.importNames.add(s);return Object.keys(r).length?he(n.env.scope,r):n.env.scope}var N=(e,n,t,r)=>(e.overlay.set(n,{type:t,scope:r}),t);function B(e,n,t,r){switch(j(),e.type){case Xr: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,ve(e),n);case "Placeholder":return N(t,e,l.any,n);case "Identifier":{let s=e.name,a=ds(s,t)??U(n,s);return a===void 0?s==="undefined"?N(t,e,l.undefined,n):(t.sink.report(S.unknownName(e,s)),N(t,e,l.any,n)):N(t,e,a,n)}case "MemberExpression":return N(t,e,qr(e,n,t),n);case "CallExpression":return N(t,e,Va(e,n,t,r),n);case "ArrowFunctionExpression":return vt(e,n,t);case "FunctionDeclaration":return t.sink.report(S.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),N(t,e,l.unknown,n);case "FunctionExpression":return t.sink.report(S.unsupported(e,"anonymous function (use an arrow)")),N(t,e,l.unknown,n);case "ThisExpression":return t.sink.report(S.unsupported(e,"'this'")),N(t,e,l.unknown,n);case "BlockStatement":return N(t,e,ls(e,n,t),n);case "ReturnStatement":{let s=e.argument;return N(t,e,s?B(s,n,t):l.unknown,n)}case "IfStatement":return ee(e,n,t),t.overlay.get(e)?.type??l.unknown;case "ForStatement":case "WhileStatement":case "DoWhileStatement":case "ForOfStatement":case "ForInStatement":case "BreakStatement":case "ContinueStatement":case "ThrowStatement":case "TryStatement":case "SwitchStatement":return ee(e,n,t),t.overlay.get(e)?.type??l.unknown;case "AssignmentExpression":{let s=e,a=s.left;if(s.operator==="="&&(a.type==="ArrayExpression"||a.type==="ObjectExpression")){let y=B(s.right,n,t);return tn(a,y,n,t),N(t,e,y,n)}let o=s.operator!=="=",l=o?$r(a,n,t):fs(a,n,t);if(a.type==="MemberExpression"){let y=t.overlay.get(a.object)?.type,f=y&&E(y,t.schemes);f&&(f.t==="array"||f.t==="tuple")&&f.readonly&&t.sink.report(S.readonlyWrite(a,f));}let i=x(a),c=t.invalidTargets.has(a);if(!o){let y=i!==null&&t.evolving.has(i),f=s.right,h=y||c?B(f,n,t):q(f,l,n,t,true),g=ae(f)?N(t,f,ve(f),n):h;return i!==null&&Cn(i,n,t)?ne(i,Tn(i,false,g,l,n,t),t):i!==null&&Z(i)&&ne(i,l,t),N(t,e,g,n)}let u=t.sink.all.length,p=ao(s,l,n,t),m=t.sink.all.length>u;return !c&&!m&&!Y(p,l,t.schemes)&&t.sink.report(S.notAssignable(e,p,l,t.schemes)),i!==null&&Cn(i,n,t)?ne(i,Tn(i,true,p,l,n,t),t):i!==null&&Z(i)&&ne(i,I$1(l),t),N(t,e,p,n)}case "UpdateExpression":{let a=e.argument,o=$r(a,n,t);!ue(o,a,t)&&!rn(o,t.schemes)&&t.sink.report(S.arithmeticOperand(a,"operand"));let l$1=x(a);return l$1!==null&&Cn(l$1,n,t)?ne(l$1,Tn(l$1,true,o,o,n,t),t):l$1!==null&&Z(l$1)&&ne(l$1,I$1(o),t),N(t,e,l.number,n)}case "ExpressionStatement":return N(t,e,B(e.expression,n,t),n);case "VariableDeclaration":return Pn(e,n,t),N(t,e,l.unknown,n);case "TSTypeAliasDeclaration":{let s=e.id?.name,a=s?t.schemes[s]:void 0;return N(t,e,a?qa(a.body,n,t,e,a.params.length>0):l.unknown,n)}case "BinaryExpression":return N(t,e,uo(e,n,t),n);case "LogicalExpression":{let s=e,a=B(s.left,n,t),o=s.operator==="??"?void 0:W(s.left,n,t.schemes),l=I(n,o?s.operator==="&&"?o.then:o.else:{}),{value:i,effect:c}=ht(t,()=>B(s.right,l,t));return c.size&&Fr([{effect:c,scope:l},{scope:I(n,o?s.operator==="&&"?o.else:o.then:{})}],t),N(t,e,fo(s.operator,a,i,t.schemes),n)}case "UnaryExpression":return N(t,e,yo(e,n,t),n);case "ConditionalExpression":{let s=e;B(s.test,n,t);let a=W(s.test,n,t.schemes),o=I(n,a.then),l=I(n,a.else),i=ht(t,()=>B(s.consequent,o,t)),c=ht(t,()=>B(s.alternate,l,t));return (i.effect.size||c.effect.size)&&Fr([{effect:i.effect,scope:o},{effect:c.effect,scope:l}],t),N(t,e,ba([i.value,c.value]),n)}case "ObjectExpression":return N(t,e,ho(e,n,t),n);case "ArrayExpression":return N(t,e,ks(e,n,t),n);case "TemplateLiteral":{if(Qe(e)!==null)return N(t,e,ve(e),n);for(let s of e.expressions){let a=B(s,n,t);Bs(a,t.schemes)||t.sink.report(S.notTextConvertible(s,a));}return N(t,e,l.string,n)}case "AwaitExpression":{let s=e.argument,a=s?B(s,n,t):l.unknown;return N(t,e,Ze(a),n)}case "Program":{let s=Dn(e.body,n,t,new Set(t.importNames)).scope;return N(t,e,l.unknown,s)}case "JsonExpression":return N(t,e,bt(e.body,n,t,e),n);case "ChainExpression":{let s=e.expression,a=B(s,n,t);return N(t,e,Da(s,t)?ba([a,l.undefined]):a,n)}case "TSAsExpression":{let s=e,a=B(s.expression,n,t),o=Ue(s.typeAnnotation,n,t,e);return _e(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,l.unknown,n)}}var Ta=new Set(["constructor","prototype","__proto__"]);function Ra(e){if(!e.computed)return e.property.type==="Identifier"?e.property.name:null;let n=e.property;if(n.type==="Literal"){let t=n.value;if(typeof t=="string")return t}return null}function qr(e,n,t,r=false){let s=B(e.object,n,t),a=Ra(e);if(a!==null&&Ta.has(a))return t.sink.report(S.forbiddenMember(e,a)),l.unknown;let o=ja(e,s,n,t),l$1=r?null:x(e);if(l$1!==null&&Z(l$1)){let i=ds(l$1,t)??U(n,l$1);if(i!==void 0&&Y(i,o,t.schemes))return i}return o}function Da(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 Pa=e=>e.t==="unknown";function ue(e,n,t){return Pa(e)?(t.sink.report(S.unknownValue(n)),true):false}function Ve(e){let n=Rn(e),t=n.some(s=>s.t==="null"),r=n.some(s=>s.t==="undefined");return t||r?{null:t,undefined:r}:null}function Bt(e){let n=Rn(e).filter(t=>t.t!=="null"&&t.t!=="undefined");return n.length===Rn(e).length||n.length===0?e:ba(n)}var Jr=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(Jr);function ja(e,n,t,r){if(!e.optional&&ue(n,e.object,r))return N(r,e,l.any,t);let s=e.optional?null:Ve(n);s&&r.sink.report(S.possiblyNullish(e.object,s)),e.optional&&Ve(n)&&r.shortCircuits.add(e);let a=e.optional||s?Bt(n):n;if(e.computed){let i=B(e.property,t,r);if(i.t==="literal"&&typeof i.value!="boolean"){let u=String(i.value),p=la$1(a,[u],r.schemes);return p?p.type:(Tr(e,a,u,r),l.any)}let c=m(l.index(a,i));return c.t!=="index"||Jr(i)?c:l.unknown}let o=e.property.name,l$1=la$1(a,[o],r.schemes);return l$1?l$1.type:(Tr(e,a,o,r),l.any)}function Tr(e,n,t,r){let s=C(n,r.schemes)?D$1(n,r.schemes):n;s.t==="object"||s.t==="array"||s.t==="tuple"||s.t==="union"?r.sink.report(S.noSuchMember(e,n,t)):s.t!=="any"&&s.t!=="unknown"&&r.sink.report(S.notObject(e,n));}function Ma(e,n,t,r){let s=e.arguments[0];if(!s){r.sink.report(S.missingArgument(e,"schema",l.unknown));return}if(s.type!=="Identifier"){r.sink.report(S.asserterNeedsName(s,n));return}let a=s.name,o=U(t,a),l$1=r.schemes[a];if(o===void 0){r.sink.report(l$1?S.typeAsValue(s,a):S.unknownName(s,a));return}if(!l$1||l$1.params.length>0){r.sink.report(S.notASchema(s,a));return}if(!(Yr(a,r)&&!Ia(t,a)))return r.overlay.set(s,{type:l$1.body,scope:t}),l$1.body}function Yr(e,n){if(!n.env.asserters?.size)return false;let t=n.schemes[e];return t!==void 0&&t.params.length===0&&U(n.env.scope,e)!==void 0}function Ia(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 Se(e,n,t){Yr(e,t)&&t.sink.report(S.shadowsSchema(n,e));}function kt(e,n){let t=z(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function Fa(e,n){let t=U(e.scope,n);if(!t)return;let r=kt(t,e.schemes);return r?z(r,e.schemes):void 0}function $a(e,n,t,r){let s=kt(B(n[0],t,r),r.schemes),a=n.length>1?B(n[1],t,r):l.undefined;if(s){let o=X$1(a,s,r.schemes);o.length&&r.sink.report(S.propsMismatch(n[1]??e,s,ja$1(o)));}return N(r,e,l.boolean,t)}var Xr="TSLiteSyntheticArg",La=e=>({type:Xr,schema:e});function Hr(e,n,t){if(!e.some(a=>a.type==="SpreadElement"))return {nodes:[...e],spread:null};let r=[],s=null;for(let a of e){if(a.type!=="SpreadElement"){r.push(a);continue}let o=a.argument;if(o.type==="ArrayExpression"&&o.elements.every(i=>i&&i.type!=="SpreadElement")){for(let i of o.elements)r.push(i);continue}let l=z(B(o,n,t),t.schemes);if(l.t==="tuple")for(let i of l.elements)r.push(La(i));else s={elem:Et(l,o,t),node:a};}return {nodes:r,spread:s}}function Va(e,n,t,r){let s=t.inference?{...t,inference:void 0}:t,a=e.arguments,o=dt(e.callee);if(o){let f=s.env.accessors?.[o];if(f){let h=pr(a);if(h){let g=la$1(f,h,s.schemes);return g?g.type:(s.sink.report(S.noSuchMember(e,f,h.join("."))),l.unknown)}return a.forEach(g=>B(g,n,s)),l.unknown}}if(o&&s.env.asserters?.has(o)){let f=Ma(e,o,n,s);a.length<2&&a.length>0&&s.sink.report(S.missingArgument(e,"value",l.unknown));for(let h=1;h<a.length;h++){let g=B(a[h],n,s);h===1&&f&&z$1(g).size===0&&!_e(g,f,s.schemes)&&s.sink.report(S.unprovableValue(a[h],g,f,e.arguments[0].name));}return f??l.unknown}if(o&&s.env.matchers?.has(o))return $a(e,a,n,s);e.callee.type==="ArrowFunctionExpression"&&s.invoked.add(e.callee);let l$1=E(B(e.callee,n,s),s.schemes);if(!e.optional&&ue(l$1,e.callee,s))return N(s,e,l.any,n);let i=Ve(l$1);i&&(e.optional?s.shortCircuits.add(e):s.sink.report(S.possiblyNullish(e.callee,i,true)));let c=i?E(Bt(l$1),s.schemes):l$1;if(c.t==="any")return a.forEach(f=>B(f,n,s)),l.any;if(c.t==="overload")return Ga(e,c,n,s,r);if(c.t!=="fn")return a.forEach(f=>B(f,n,s)),s.sink.report(S.notCallable(e,c)),l.unknown;let u=Hr(a,n,s),p=u.nodes.map(f=>Qr(f,n,s)),m=Zr(e),y=!m||es(c,m.length);return y||s.sink.report(ns(e,[c],m.length)),an(e,c,u.nodes,p,n,s,u.spread,r,y?m:void 0)}function Qr(e,n,t){if(ft(e))return l.any;if(e.type!=="CallExpression")return B(e,n,t);let r=G(),s=B(e,n,{...t,sink:r});return r.hasErrors()?l.any:(r.all.forEach(a=>t.sink.report(a)),s)}function an(e,n,t,r,s,a,o=null,l$1,i){let c=k=>{if(!l$1)return k;let v=x$1(n.returns,k);if(v.t==="fn"&&l$1.t==="fn"){let O=k,V=Math.min(v.params.length,l$1.params.length);for(let J=0;J<V;J++)O=T(v.params[J].type,l$1.params[J].type,O)??O;return T(v.returns,l$1.returns,O)??O}return T(v,l$1,k)??k};if(!o){let k=rs(e,n,r.length,t);k&&(a.sink.report(k),a={...a,sink:G()});}let u=i?Ya(e,n,i,a):void 0,p=u??On(n,c(V(n,r).bindings)),m=u||!l$1?{}:On(n,c({})),y={returnMapper:m,nonFixing:p,outer:Rr(n,p)},f=new Set((n.typeParams??[]).map(k=>k.name)),h=k=>[...z$1(k)].some(v=>f.has(v)),g=new Set,b=[];t.forEach((k,v)=>{if(ft(k)){let O=n.params[v]?.type??l.any,V=J(x$1(O,Ua(n,O,p,a.schemes)));r[v]=vt(k,s,a,V);}else if(k.type==="CallExpression"&&r[v].t==="any")r[v]=B(k,s,a,x$1(n.params[v]?.type??l.unknown,Rr(n,p)));else if(ae(k)){let O=n.params[v]?.type??l.unknown,V=ge(k);Fe(x$1(O,m),V)&&(r[v]=N(a,k,V,s));}else if(k.type==="ArrayExpression"||k.type==="ObjectExpression"||k.type==="ConditionalExpression"){let O=n.params[v]?.type??l.unknown,V=x$1(O,m);if(k.type==="ArrayExpression"&&He(V)){r[v]=At(k,V,s,{...a,inference:y}),b.push(v);return}if(O.t==="var"&&!O.bound||!vs(V,a.schemes))return;g.add(v),h(O)&&(r[v]=q(k,O,s,{...a,sink:G(),inference:y},true)),b.push(v);}});let E=u||gt(n,On(n,c(V(n,r).bindings)),a.schemes);u&&Ka(e,n,E,a);for(let k of b)r[k]=So(t[k],x$1(n.params[k].type,E),s,a,false);Qa(e,n,r,E,a,t,o),t.forEach((k,v)=>{let O=n.params[v];k.type==="ObjectExpression"&&O&&!O.variadic&&!g.has(v)&&St(k,x$1(O.type,E),a);});let T$1=x$1(n.returns,gt(n,E,a.schemes)),re=T$1.t==="union"?ba(T$1.of):T$1;return K(W$1(re,a.schemes,void 0,0,z$1(re)))}function On(e,n){let t=e.typeParams;if(!t?.length)return {};let r={};for(let s of t)n[s.name]&&(r[s.name]=n[s.name]);return r}var gt=(e,n,t)=>R(e.typeParams??[],n,t);function Ua(e,n,t,r){if(n.t!=="fn"||!e.typeParams?.some(l=>!t[l.name]))return t;let s=new Set;for(let l of n.params)for(let i of z$1(l.type))s.add(i);let a=gt(e,t,r),o={...t};for(let l of e.typeParams)!t[l.name]&&s.has(l.name)&&(o[l.name]=a[l.name]);return o}function Rr(e,n){if(!e.typeParams?.some(r=>!n[r.name]))return n;let t={...n};for(let r of e.typeParams)n[r.name]||(t[r.name]=M);return t}function Ka(e,n,t,r){for(let s of n.typeParams??[]){let a=t[s.name];if(!s.bound||!a)continue;let o=x$1(s.bound,t);Y(a,o,r.schemes)||r.sink.report(S.constraintViolation(e,s.name,a,o));}}function Ga(e,n,t,r,s){let a=Hr(e.arguments,t,r),o=a.nodes,l=o.map(u=>Qr(u,t,r)),i=Zr(e),c=i?n.signatures.filter(u=>es(u,i.length)):n.signatures;return i&&!c.length?(r.sink.report(ns(e,n.signatures,i.length)),Pr(e,n.signatures,a,o,l,t,r,s,void 0)):Pr(e,c,a,o,l,t,r,s,i)}function xa(e,n,t,r,s,a,o){if(!n.length)return e;let i=n.map(p=>{let m=G();return an(e,p,t,[...r],s,{...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 Dr(e,n,t,r,s,a){return n.length?!n.some(l=>l.typeParams?.length)&&n.length>1?l.intersection(n.map(l=>l.returns)):an(e,_a(n,t.length),t,[...r],s,{...a,sink:G()},null):l.unknown}function _a(e,n){let t=e[0],r=-1;for(let s of e){let a=s.params.length;if(s.params.some(o=>o.variadic)||a>=n)return s;a>r&&(r=a,t=s);}return t}function Pr(e,n,t,r,s,a,o,l,i){let c={t:"overload",signatures:n},u=g=>t.spread?Xa(g,r.length):ts(g,r.length),p=c.signatures.filter(u);if(p.length>1)for(let g of p){let b=G(),E=an(e,g,r,[...s],a,{...o,sink:b},t.spread,l,i);if(!b.all.some(T=>T.kind==="type"&&T.severity==="error"))return b.all.forEach(T=>o.sink.report(T)),E}let m=p.length>1?void 0:c.signatures.find(g=>u(g)&&Ha(g,s,o));if(m||(p.length===1?m=p[0]:c.signatures.length===1&&(m=c.signatures[0])),!m){let g=t.spread?null:rs(e,c.signatures,r.length,r);return o.sink.report(g??S.noMatchingOverload(xa(e,p,r,s,a,o,t.spread),c,s)),Dr(e,c.signatures,r,s,a,o)}let y=o.sink.all.length,f=an(e,m,r,s,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?Dr(e,c.signatures,r,s,a,o):f}function za(e,n,t,r){let s=U(n,e[0]);if(s===void 0)return t.sink.report(S.unknownName(r,e[0])),l.unknown;let a=e.slice(1),o=a.length?la$1(s,a,t.schemes)?.type:s;return o?o.t==="literal"?l.literal(o.value):o:(t.sink.report(S.noSuchMember(r,s,a.join("."))),l.unknown)}function Ue(e,n,t,r){let s=a=>{if(Array.isArray(a)){let c=false,u=a.map(p=>{let m=s(p);return m!==p&&(c=true),m});return c?u:a}if(!a||typeof a!="object")return a;let o=a;if(o.t==="typeQuery")return za(o.path,n,t,r);if(o.t==="apply"&&typeof o.name=="string"){Wa(o.name,n,t,r);let c=t.schemes[o.name];if(!c)return l.any;if(Array.isArray(o.args)&&ka(c,o.args,t.schemes))return l.any}if(_r(o,t.schemes)){let c=o;return t.sink.report(S.noSuchMember(r,c.obj,zr(c.key))),l.any}if(o.t==="union"&&Array.isArray(o.of)){let c=o.of,u=c.map(y=>s(y)),p=u.every((y,f)=>y===c[f]),m=l.union(u);return m.t!=="union"?m:p?o:m}if(o.t==="intersection"&&Array.isArray(o.of)){let c=o.of,u=c.map(y=>s(y)),p=l.intersection(u);return p.t==="intersection"&&p.of.length===c.length&&p.of.every((y,f)=>y===c[f])?o:p}if(o.t==="tuple"&&Array.isArray(o.elements)){let c=o.elements,u=c.map(y=>s(y)),p=l.tuple(u,o.flags,o.readonly);return u.every((y,f)=>y===c[f])&&p.elements.every((y,f)=>y===u[f])?o:p}let l$1=false,i={};for(let c of Object.keys(o)){let u=s(o[c]);u!==o[c]&&(l$1=true),i[c]=u;}return l$1?i:o};return s(e)}function Wa(e,n,t,r){if(t.resolvedSchemes.has(e))return;let s=t.schemes[e];if(!s)return;t.resolvedSchemes.add(e);let a=Ue(s.body,n,t,r);a!==s.body&&(t.schemes[e]={...s,body:a});}function qa(e,n,t,r,s){let a={...t,sink:G(),resolvedSchemes:new Set(Object.keys(t.schemes))},o=Ue(e,n,a,r);return a.sink.hasErrors()?e:s?o:W$1(o,t.schemes)}var sn=(e,n,t)=>{let r=wn(e);return r===void 0?r:Ue(r,n,t,e)},Ja=(e,n,t)=>{let r=pt(e);return r===void 0?r:Ue(r,n,t,e)},Zr=e=>{let n=e.typeArguments;return n?.length?n:void 0},es=(e,n)=>{let{min:t,max:r}=A$1(e.typeParams??[]);return n>=t&&n<=r};function ns(e,n,t){if(n.length===1){let{min:a,max:o}=A$1(n[0].typeParams??[]);return S.wrongTypeArgumentCount(e,a<o?`${a}-${o}`:a,t)}let r=-1/0,s=1/0;for(let a of n){let{min:o,max:l}=A$1(a.typeParams??[]);o>t?s=Math.min(s,o):l<t&&(r=Math.max(r,l));}return r!==-1/0&&s!==1/0?S.noOverloadTypeArgumentCount(e,t,r,s):S.wrongTypeArgumentCount(e,r===-1/0?s:r,t)}function Ya(e,n,t,r){let s=n.typeParams??[],a=B$1(s,t.slice(0,s.length));for(let o of Nt(s,t,r.schemes))r.sink.report(S.constraintViolation(e,o.param.name,o.arg,o.expected));return a}function Xa(e,n){let t=0,r=false;for(let s of e.params)s.variadic?r=true:s.optional||t++;return n>=t&&(r||n<e.params.length)}function ts(e,n){let t=0;for(let r of e.params){if(r.variadic)return n>=t;r.optional||t++;}return n>=t&&n<=e.params.length}function rs(e,n,t,r){let s=Array.isArray(n)?n:[n];if(!s.length||s.some(c=>ts(c,t)))return null;let a=s.some(c=>c.params.some(u=>u.variadic)),o=Math.min(...s.map(c=>c.params.filter(u=>!u.optional&&!u.variadic).length)),l=Math.max(...s.map(c=>c.params.length)),i=a?`${o}`:o<l?`${o}-${l}`:`${o}`;return t<o?S.argumentArity(e,i,t,"missing",a):S.argumentArity(r[l]??e,i,t,"excess",a)}function Ha(e,n,t){let r=On(e,V(e,n).bindings);for(let s=0;s<e.params.length;s++){let a=e.params[s];if(a.variadic){let o=x$1(a.type,r),l$1=o.t==="array"?o.items:l.unknown;for(let i=s;i<n.length;i++)if(!Y(n[i],l$1,t.schemes))return false;return true}if(s>=n.length){if(!a.optional)return false;continue}if(!Y(n[s],x$1(a.type,r),t.schemes))return false}return true}function Qa(e,n,t,r,s,a=e.arguments??[],o=null){let l$1=c=>a[c]??e;for(let c=0;c<n.params.length;c++){let u=n.params[c];if(u.variadic){let m=x$1(u.type,r),y=m.t==="array"?m.items:l.unknown;for(let f=c;f<t.length;f++)Y(t[f],y,s.schemes)||s.sink.report(S.notAssignable(l$1(f),t[f],y,s.schemes));break}let p=x$1(u.type,r);c>=t.length||Y(t[c],p,s.schemes)||s.sink.report(S.notAssignable(l$1(c),t[c],p,s.schemes));}let i=n.params.find(c=>c.variadic);if(o){let c=t.length,u=n.params.filter(p=>!p.optional&&!p.variadic).length;if(!(c>=u&&(i||c<n.params.length))){s.sink.report(S.spreadArgument(o.node));return}if(i){let p=x$1(i.type,r),m=p.t==="array"?p.items:l.unknown;Y(o.elem,m,s.schemes)||s.sink.report(S.notAssignable(o.node,o.elem,m,s.schemes));}return}}function on(e,n,t){if(e.t==="object"){let r$1=r(e.props,n);return r$1?r$1.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let r=e.of.map(s=>on(E(s,t),n,t)).filter(s=>s!==void 0);return r.length===0?void 0:r.length===1?r[0]:m({t:"intersection",of:r})}if(e.t==="union")return ss(e.of,n,t)}function ss(e,n,t){let r=e.map(s=>on(E(s,t),n,t)).filter(s=>s!==void 0);return r.length?ba(r):void 0}var wt=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(wt),jr=new WeakMap;function Za(e,n,t){let r=jr.get(t);if(r)return r;let s=new Set;for(let o of e)if(o.t==="object")for(let l of Object.keys(o.props))s.add(l);let a=new Set;for(let o of s){let i=e.map(u=>on(u,o,n)).filter(u=>u!==void 0);if(!i.some(wt))continue;i.length===e.length&&i.every(u=>_$1(u,i[0]))||a.add(o);}return jr.set(t,a),a}var as=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&as(e.object),eo=(e,n)=>e.some(t=>t.t==="object"&&r(t.props,n)?.optional===true);function os(e,n,t,r,s){let a=Za(n,r,s),o=new Set;if(!a.size)return {chosen:n,ignored:o};let l$1=[],i=new Set;for(let p of e.properties){if(p.type!=="Property")continue;let m=p,y=we(m);if(y===null||(i.add(y),!a.has(y)||!as(m.value)))continue;let f=t(m);f&&wt(f)&&l$1.push([y,f]);}for(let p of a)!i.has(p)&&eo(n,p)&&l$1.push([p,l.undefined]);let c=n.map(()=>1);for(let[p,m]of l$1){let y=false;n.forEach((f,h)=>{if(c[h]!==1)return;let g=on(f,p,r);g!==void 0&&(Y(m,g,r)?y=true:c[h]=2);}),n.forEach((f,h)=>{c[h]===2&&(c[h]=y?0:1);}),y||o.add(p);}let u=n.filter((p,m)=>c[m]===1);return {chosen:u.length?u:n,ignored:o}}function Mr(e,n,t,r,s,a=false){let o={},l={};for(let i of e.properties){let c=i;if(c.type==="SpreadElement"){let f=E(B(c.argument,t,r),r.schemes);if(f.t==="object")for(let[h,g]of Object.entries(f.props))o[h]=g,l[h]=g;continue}let u=c,p=we(u),m=p!==null?n(p):void 0,y=m?q(u.value,m,t,r,s):G$1(B(u.value,t,r));p!==null&&(o[p]={type:a?y:m??y},l[p]={type:y}),N(r,c,y,t);}return {checked:o,narrowed:l}}function q(e,n,t,r,s=false){let a=r.inference,o=a?x$1(n,a.returnMapper):n,l$1=u=>a?x$1(u,a.nonFixing):u,i=E(o,r.schemes);switch(i.t==="conditional"&&(i=$$1(i,r.schemes)??i),ae(e)?"Literal":e.type){case "Literal":{let u=ge(e);return Y(u,n,r.schemes)||r.sink.report(S.notAssignable(e,u,n,r.schemes)),N(r,e,ve(e),t),s?Fe(o,u)?u:G$1(ve(e)):n}case "ArrayExpression":{if(He(i)){let u=At(e,i,t,r);return Y(u,n,r.schemes)||go(e,u,i,t,r)||r.sink.report(S.notAssignable(e,u,n,r.schemes)),N(r,e,u,t)}if(i.t==="array"){let u=[];for(let m of e.elements){if(!m)continue;let y=m;if(y.type==="SpreadElement"){let f=q(y.argument,n,t,r,s);f.t==="array"&&u.push(f.items);}else u.push(q(y,i.items,t,r,s));}let p=s&&u.length>0?l.array(ba(u)):l$1(n);return N(r,e,p,t)}break}case "ObjectExpression":{if(i.t==="object"||i.t==="intersection"){let u=r.sink.all.length,{checked:p,narrowed:m}=Mr(e,g=>on(i,g,r.schemes),t,r,s),y=r.sink.all.slice(u).some(g=>g.kind==="type"&&g.severity==="error"),f=St(e,n,r),h={t:"object",props:p};return !f&&!y&&!Y(h,n,r.schemes)&&r.sink.report(S.notAssignable(e,h,n,r.schemes)),N(r,e,s?{t:"object",props:m}:n,t)}if(i.t==="union"){let u=i.of.filter(T=>T.t==="object"||T.t==="intersection");if(!u.length)break;let p=e,{chosen:m,ignored:y}=os(p,u,T=>B(T.value,t,{...r,sink:G()}),r.schemes,n),f=r.sink.all.length,{checked:h,narrowed:g}=Mr(p,T=>ss(y.has(T)?u:m,T,r.schemes),t,r,s,true),b=St(p,n,r),E={t:"object",props:h};return !b&&r.sink.all.length===f&&!Y(E,n,r.schemes)&&r.sink.report(S.notAssignable(e,E,n,r.schemes)),N(r,e,s?{t:"object",props:g}:n,t)}break}case "ArrowFunctionExpression":{let u=a?E(x$1(n,a.nonFixing),r.schemes):i;if(u.t==="fn"){let p=vt(e,t,r,u);return Y(p,n,r.schemes)||r.sink.report(S.notAssignable(e,p,n,r.schemes)),N(r,e,l$1(n),t)}break}case "ConditionalExpression":{let u=e;B(u.test,t,r);let p=W(u.test,t,r.schemes),m=q(u.consequent,n,I(t,p.then),r,s),y=q(u.alternate,n,I(t,p.else),r,s);return N(r,e,s?ba([m,y]):n,t)}case "Placeholder":return N(r,e,l$1(n),t)}let c=B(e,t,r,a?x$1(n,a.outer):n);return Y(c,n,r.schemes)||r.sink.report(S.notAssignable(e,c,n,r.schemes)),N(r,e,c,t)}var no=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return wn(n)!==void 0};function vt(e,n,t,r){let s=!e.async&&t.invoked.has(e),a=t.flow.size?new Map(t.flow):null,o=a?I(n,Object.fromEntries(a)):n;a&&t.flow.clear();let l=t.shadowed;s&&(t.shadowed=new Set);try{return ro(e,o,t,r)}finally{let i=s?to(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,Z(u)?u.indexOf("."):u.length);!c?.has(m)&&Oe(n,u,t.schemes)!==void 0&&ne(u,p,t);}}}function to(e,n,t){let r=e.body;return r.type!=="BlockStatement"?new Map(t.flow):pe(r,n,t).types}function ro(e,n,t,r){let s=r&&r.t==="fn"?r:void 0,a=s?.typeParams?.length&&e.params.some(k=>!no(k))?s.typeParams:void 0,o=vn(e)??a,l$1=k=>o?{...k,typeParams:o}:k,i={},c=e.params.map((k,v)=>{let O=k,V=s?.params[v]?.type;if(O.type==="RestElement"){let fe=O.argument,Y=sn(fe,n,t)??(s?.params[v]?.variadic?V:void 0)??l.array(l.unknown),me=_(fe);return me?(Se(me,fe,t),i[me]=Y):le(fe,Y,i,n,t),t.overlay.set(fe,{type:Y,scope:n}),t.overlay.set(O,{type:Y,scope:n}),{name:me??`arg${v}`,type:Y,variadic:true}}if(O.type==="AssignmentPattern"){let fe=O.left,Mn=sn(fe,n,t)??V;le(O,Mn??l.unknown,i,n,t);let Y=_(fe),me=Y?i[Y]:void 0,In=Mn??me??l.unknown,Dt=In.t==="unknown"?In:ba([In,l.undefined]);return Y&&me&&(i[Ae(Y)]=me),t.overlay.set(O,{type:Dt,scope:n}),{name:Y??`arg${v}`,type:Dt,optional:true}}let J=_(O),Tt=sn(O,n,t),Ke=Tt??V??l.any,Rt=O.type==="Identifier"&&(!!O.optional||Tt===void 0&&!!s?.params[v]?.optional),cn=Rt&&Ke.t!=="unknown"?ba([Ke,l.undefined]):Ke;return J?(Se(J,O,t),i[J]=cn,i[Ae(J)]=cn):O.type!=="Identifier"&&le(O,Ke,i,n,t),t.overlay.set(O,{type:cn,scope:n}),Rt?{name:J??`arg${v}`,type:cn,optional:true}:{name:J??`arg${v}`,type:Ke}}),u=false;c.forEach((k,v)=>{k.optional?u=true:!k.variadic&&u&&t.sink.report(S.requiredAfterOptional(e.params[v]));});let p=De(n,i,t),m=e.body,y=Ja(e,n,t),f=e.returnGuard,h=f?{param:f.param,type:Ue(f.type,n,t,e)}:void 0;if(h){let k=c[h.param];k&&!Y(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.type!=="BlockStatement"&&y){let k=e.async?Ze(y):y;q(m,k,p,t);let v=e.async?en(y):y;return N(t,e,g(l$1({t:"fn",params:c,returns:v})),n)}let b=y??s?.returns,E=b&&e.async?Ze(b):b,T=m.type==="BlockStatement"?N(t,m,ls(m,p,t,new Set(Object.keys(i).filter(k=>!mt(k))),E),p):B(m,p,t),re=e.async?en(T):T;if(y){let k=e.async?Ze(y):y,v=e.async?T:re;Y(v,k,t.schemes)||t.sink.report(S.notAssignable(m,re,y,t.schemes));let O=e.async?en(y):y;return N(t,e,g(l$1({t:"fn",params:c,returns:O})),n)}return N(t,e,l$1({t:"fn",params:c,returns:L$1(J(re))}),n)}function Le(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Le(n.argument):Le(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?Le(n.argument):Le(n):[]);case "AssignmentPattern":return Le(e.left);default:return []}}function is(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>Le(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?is(e.declaration):[]}var cs=Object.freeze({t:"undefined"}),Ir=e=>e===cs;function ls(e,n,t,r=new Set,s){let{returns:a}=Dn(e.body,n,t,r,s),o=!Q(e)||a.some(Ir),l$1=a.filter(i=>!Ir(i));return l$1.length===0?o?l.void:l.union([]):ba(o?[...l$1,l.undefined]:l$1)}var so=[l.literal(true),l.literal(false)];function Rn(e){return e.t==="union"?e.of:e.t==="boolean"?so:[e]}function us(e,n,t){let r=Rn(e);if(r.length<=1)return e;let s=r.filter(o=>Y(n,o,t));if(s.length===0)return e;let a=ba(s);return Y(n,a,t)?a:e}var ps=(e,n)=>Z(e)?void 0:U(n,Ae(e)),Cn=(e,n,t)=>!Z(e)&&(t.evolving.has(e)||U(n,Ae(e))!==void 0);function Tn(e,n,t,r,s,a){if(n)return I$1(r);if(a.evolving.has(e))return H$1(t);let o=ps(e,s);return o===void 0?t:o.t==="union"||o.t==="boolean"?us(o,t,a.schemes):o}function ne(e,n,t){let r=e+".";for(let s of t.flow.keys())s.startsWith(r)&&t.flow.delete(s);t.flow.set(e,n);}var ds=(e,n)=>n.flow.size?n.flow.get(e):void 0;function ht(e,n){let t=new Map(e.flow),r=n(),s=new Map;for(let[a,o]of e.flow)t.get(a)!==o&&s.set(a,o);e.flow.clear();for(let[a,o]of t)e.flow.set(a,o);return {value:r,effect:s}}function Fr(e,n){let t=new Set;for(let r of e)if(r.effect)for(let s of r.effect.keys())t.add(s);for(let r of t){let s=[];for(let a of e){let o=a.effect?.get(r)??n.flow.get(r)??Oe(a.scope,r,n.schemes);o!==void 0&&s.push(o);}s.length&&ne(r,ba(s),n);}}function fs(e,n,t){if(e.type==="MemberExpression")return N(t,e,qr(e,n,t,true),n);if(e.type==="Identifier"){let r=ps(e.name,n);if(r!==void 0)return N(t,e,r,n)}return B(e,n,t)}function $r(e,n,t){let r=B(e,n,t),s=I$1(r);return s===r?r:N(t,e,s,n)}function tn(e,n,t,r){switch(e.type){case "ArrayExpression":{e.elements.forEach((s,a)=>{if(!s)return;let o=s;o.type==="SpreadElement"?tn(o.argument,bs(n,a),t,r):tn(o,gs(n,a),t,r);});return}case "ObjectExpression":{let s=[];for(let a of e.properties){let o=a;if(o.type==="SpreadElement"){tn(o.argument,Ss(n,s),t,r);continue}let l$1=we(o);l$1!=null&&s.push(l$1),tn(o.value,l$1!=null?hs(n,l$1,r):l.unknown,t,r);}return}default:{let s=fs(e,t,r);!r.invalidTargets.has(e)&&!(e.type==="Identifier"&&r.evolving.has(e.name))&&!Y(n,s,r.schemes)&&r.sink.report(S.notAssignable(e,n,s,r.schemes));let a=x(e);a!==null&&Cn(a,t,r)?ne(a,Tn(a,false,n,s,t,r),r):a!==null&&Z(a)&&ne(a,s,r);}}}function ao(e,n,t,r){let s=e.right,a=B(s,t,r);return Ns(e.operator.slice(0,-1),n,a,e,e.left,s,r)}var Re=new Map;function pe(e,n,t){switch(e.type){case "BlockStatement":{let r=Re,s=n;for(let a of e.body){let o=pe(a,s,t);if(o.types.size){let l=new Map(r);for(let[i,c]of o.types)l.set(i,c);r=l,s=I(s,Object.fromEntries(o.types));}if(o.exits)return {types:r,exits:true}}return {types:r,exits:false}}case "IfStatement":return {types:ys(e,n,t),exits:Q(e)};case "ReturnStatement":case "ThrowStatement":return {types:Re,exits:true};case "TryStatement":{let r=e,s=[],a=pe(r.block,n,t);if(a.exits||s.push(a),r.handler){let l=pe(r.handler.body,n,t);l.exits||s.push(l);}let o=ms(s,n,t);if(r.finalizer){let l=o.size?I(n,Object.fromEntries(o)):n,i=pe(r.finalizer,l,t);if(i.types.size){let c=new Map(o);for(let[u,p]of i.types)c.set(u,p);o=c;}}return {types:o,exits:Q(e)}}default:return {types:t.stmtFlow.get(e)??Re,exits:false}}}function ms(e,n,t){let r=new Set;for(let a of e)for(let o of a.types.keys())r.add(o);if(!r.size)return Re;let s=new Map;for(let a of r){let o=Oe(n,a,t.schemes),l=[];for(let i of e){let c=i.types.get(a)??o;c!==void 0&&l.push(c);}l.length&&o!==void 0&&s.set(a,ba(l));}return s}function ys(e,n,t){let r=pe(e.consequent,n,t),s=e.alternate?pe(e.alternate,n,t):{types:Re,exits:false};if(!r.types.size&&!s.types.size)return Re;let a=[r,s].filter(o=>!o.exits);return a.length?ms(a,n,t):Re}var oo=5;function Lr(e,n,t,r){let s=new Map(t.flow),a=new Map,o=n,l=null;for(let c=0;c<oo;c++){let u=G(),p={...t,sink:u},m=r(o,p),y=new Map(pe(e,o,p).types);for(let[h,g]of t.flow)s.get(h)!==g&&y.set(h,g);if(Vr(s,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=Oe(o,h,t.schemes);if(b===void 0||g===b)continue;let E=ba([b,g]);_$1(E,b)||(f[h]=E,a.set(h,E));}if(!Object.keys(f).length){for(let h of u.all)t.sink.report(h);l=m;break}o=I(o,f);}let i=l??r(o,t);Vr(s,t);for(let[c,u]of a)ne(c,u,t);return {returns:i,head:o}}function Vr(e,n){n.flow.clear();for(let[t,r]of e)n.flow.set(t,r);}function io(e,n,t){let r=pe(e,n,t);return r.exits||!r.types.size?n:I(n,Object.fromEntries(r.types))}function Dn(e,n,t,r=new Set,s){if(!co(e))return Ur(e,n,t,r,s);let a=new Set(t.evolving);try{return Ur(e,n,t,r,s)}finally{t.evolving.clear();for(let o of a)t.evolving.add(o);}}function co(e){for(let n of e){let t=n;if(t.type==="VariableDeclaration"&&t.kind!=="const")return true;if(t.type==="ExportNamedDeclaration"){let r=t.declaration;if(r?.type==="VariableDeclaration"&&r.kind!=="const")return true}}return false}function Ur(e,n,t,r,s){let a=n,o=[];for(let l of e){let i=l;for(let c of is(i))r.has(c.name)?t.sink.report(S.cannotRedeclare(c,c.name)):r.add(c.name);if(i.type==="VariableDeclaration")a=Pn(i,a,t);else if(i.type!=="ImportDeclaration")if(i.type==="ExportNamedDeclaration"){let c=i;if(c.declaration?.type==="VariableDeclaration")a=Pn(c.declaration,a,t);else if(c.declaration?.type==="FunctionDeclaration"){let u=B(c.declaration,a,t),p=_(c.declaration.id);p&&(a=De(a,{[p]:u},t));}else for(let u of c.specifiers)U(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=_(i.id);u&&(a=De(a,{[u]:c},t));}else if(i.type==="IfStatement"){let c=i;o.push(...ee(i,a,t,s));let u=ys(c,a,t);u.size&&(a=I(a,Object.fromEntries(u))),!c.alternate&&Q(c.consequent)&&(a=I(a,W(c.test,a,t.schemes).else));}else o.push(...ee(i,a,t,s)),(i.type==="BlockStatement"||i.type==="TryStatement")&&(a=io(i,a,t));a=lo(i,a,t);}return {scope:a,returns:o}}function lo(e,n,t){if(!t.flow.size)return n;let r=new Map(t.flow);t.flow.clear(),t.stmtFlow.set(e,r);let s=I(n,Object.fromEntries(r));for(let a of r.keys())Z(a)||(s=yt(s,a,t.schemes));return s}function ee(e,n,t,r){switch(e.type){case "ReturnStatement":{let s=e.argument,a=s?r?(q(s,r,n,t),r):B(s,n,t):cs;return N(t,e,s?a:l.undefined,n),[a]}case "IfStatement":{let s=e;B(s.test,n,t);let a=W(s.test,n,t.schemes),o=ee(s.consequent,I(n,a.then),t,r);return s.alternate&&o.push(...ee(s.alternate,I(n,a.else),t,r)),N(t,e,l.unknown,n),o}case "BlockStatement":{let{returns:s}=Dn(e.body,n,t,void 0,r);return N(t,e,s.length?ba(s):l.void,n),s}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let s=e,a=n;s.init&&(s.init.type==="VariableDeclaration"?a=Pn(s.init,a,t):B(s.init,a,t));let{returns:o}=Lr(s.body,a,t,(l,i)=>(s.test&&B(s.test,l,i),s.update&&B(s.update,l,i),ee(s.body,l,i,r)));return N(t,e,l.unknown,n),o}case "ForOfStatement":case "ForInStatement":{let s=e,a=B(s.right,n,t),o=ue(a,s.right,t)?null:Ve(a);o&&t.sink.report(S.possiblyNullish(s.right,o));let l$1=o?Bt(a):a,i=e.type==="ForOfStatement"?Et(l$1,s.right,t):l.string,c=lr(s.left);c&&Se(c,ur(s.left),t);let u=c?De(n,{[c]:i},t):n,{returns:p}=Lr(s.body,u,t,(m,y)=>ee(s.body,m,y,r));return N(t,e,l.unknown,n),p}case "BreakStatement":case "ContinueStatement":return N(t,e,l.unknown,n),[];case "ThrowStatement":{let s=e.argument;return s&&B(s,n,t),N(t,e,l.unknown,n),[]}case "TryStatement":{let s=e,a=ee(s.block,n,t,r);if(s.handler){let o=s.handler.param,l$1=o?_(o):null;l$1&&o&&Se(l$1,o,t);let i=l$1?De(n,{[l$1]:l.any},t):n;a.push(...ee(s.handler.body,i,t,r));}return s.finalizer&&a.push(...ee(s.finalizer,n,t,r)),N(t,e,l.unknown,n),a}case "SwitchStatement":{let s=e;B(s.discriminant,n,t);let a=n,o=[];for(let l of s.cases){l.test&&B(l.test,a,t);let i=Dn(l.consequent,a,t,void 0,r);a=i.scope,o.push(...i.returns);}return N(t,e,l.unknown,n),o}default:return B(e,n,t),[]}}function hs(e,n,t){let r=la$1(e,[n],t.schemes);return r?r.type:l.unknown}function Et(e,n,t){let r=z(e,t.schemes);switch(r.t){case "array":return r.items;case "tuple":return r.elements.length?ba([...r.elements]):l.unknown;case "string":return l.string;case "literal":if(typeof r.value=="string")return l.string;break;case "unknown":case "any":return l.unknown;case "union":return ba(r.of.map(s=>Et(s,n,t)));}return t.sink.report(S.notIterable(n,e)),l.any}function gs(e,n){let t=m(l.index(e,l.literal(n)));return t.t==="index"?l.unknown:t}function Ss(e,n){if(e.t!=="object")return e;let t={};for(let r in e.props)n.includes(r)||(t[r]=e.props[r]);return l.object(t,e.index)}function bs(e,n){return e.t==="tuple"?l.tuple(e.elements.slice(n)):e.t==="array"?e:l.array(l.unknown)}function le(e,n,t,r,s$1){switch(e.type){case "Identifier":{let a=sn(e,r,s$1)??n;Se(e.name,e,s$1),t[e.name]=a,s$1.overlay.set(e,{type:a,scope:r});return}case "AssignmentPattern":{let a=e,o=B(a.right,r,s$1);n.t!=="unknown"&&!Y(o,n,s$1.schemes)&&s$1.sink.report(S.notAssignable(a.right,o,n,s$1.schemes));let l=L$1(J(o)),{type:i}=s(n),c=i.t==="unknown"?l:ba([i,l]),u=a.left;if(u.type==="Identifier"){let p=u.name;Se(p,u,s$1),t[p]=c,s$1.overlay.set(u,{type:c,scope:r});}else le(u,c,t,r,s$1);return}case "ObjectPattern":{let a=[];for(let o of e.properties){if(o.type==="RestElement"){le(o.argument,Ss(n,a),t,r,s$1);continue}let l$1=o,i=we(l$1);i!=null&&a.push(i);let c=i!=null?hs(n,i,s$1):l.unknown;le(l$1.value,c,t,r,s$1);}return}case "ArrayPattern":{e.elements.forEach((a,o)=>{if(!a)return;let l=a;l.type==="RestElement"?le(l.argument,bs(n,o),t,r,s$1):le(l,gs(n,o),t,r,s$1);});return}}}function St(e,n,t$1){let r=z(n,t$1.schemes),s=r.t==="union"?E(r,t$1.schemes):r,a=s.t==="union"?s.of.map(c=>z(c,t$1.schemes)):[s],l=(r.t==="union"?os(e,a.filter(c=>c.t==="object"||c.t==="intersection"),c=>t$1.overlay.get(c.value)?.type,t$1.schemes,n).chosen:a).filter(c=>c.t==="object"&&(!c.index||c.index.key==="number"));if(!l.length||l.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=we(u);if(p===null)continue;l.filter(y=>p in y.props||y.index?.key==="number"&&t(p)).length||(t$1.sink.report(S.excessProperty(u.key,p,n)),i=true);}return i}function Pn(e,n,t){let r={};for(let s of e.declarations){let a=s.id,o=_(a);o&&Se(o,a,t);let l$1=sn(a,n,t);if(!s.init){if(o&&e.kind!=="const"){l$1?(r[o]=l$1,r[Ae(o)]=l$1):(r[o]=l.undefined,t.evolving.add(o));continue}t.sink.report(S.constNeedsInit(s)),o&&(r[o]=l$1??l.unknown);continue}let i=l$1??(s.init.type==="ArrowFunctionExpression"?fr(s.init):null),c=o&&i?De(n,{[o]:i},t):n,u,p=null;l$1?(q(s.init,l$1,c,t),u=l$1,p=l$1,(l$1.t==="union"||l$1.t==="boolean")&&ae(s.init)&&(u=us(l$1,ge(s.init),t.schemes))):(u=B(s.init,c,t),e.kind!=="const"&&(u=H$1(u)),u=L$1(u),p=u),N(t,s,u,n),o?(r[o]=u,e.kind!=="const"&&p&&(r[Ae(o)]=p)):le(a,u,r,n,t);}return N(t,e,l.unknown,n),De(n,r,t)}function De(e,n,t){let r=he(e,n);for(let s of Object.keys(n))mt(s)||(t.shadowed?.add(s),r=yt(r,s,t.schemes));return r}function uo(e,n,t){let r=B(e.left,n,t),s=B(e.right,n,t);return Ns(e.operator,r,s,e,e.left,e.right,t)}function Ns(e,n,t,r,s,a,o){if(e==="in"){let i=ue(n,s,o)?null:Ve(n);i&&o.sink.report(S.possiblyNullish(s,i));let c=ue(t,a,o)?null:Ve(t);c&&o.sink.report(S.possiblyNullish(a,c));}let l$1=ze.get(e);if(!l$1)return l.boolean;if(l$1.category==="additive"||l$1.category==="arithmetic"||l$1.category==="bitwise"||l$1.category==="relational"){let i=ue(n,s,o),c=ue(t,a,o);if(i||c)return l.any}if(l$1.category==="additive"){if(Te(n)||Te(t))return Ce(n,o.schemes)||Ce(t,o.schemes)?l.string:l.number;if(Ce(n,o.schemes)&&Ce(t,o.schemes))return l.string;if(rn(n,o.schemes)&&rn(t,o.schemes))return l.number;if(Ce(n,o.schemes)||Ce(t,o.schemes)){let c=Ce(n,o.schemes)?t:n;return o.sink.report(S.implicitCoercion(r,n,t,Bs(c,o.schemes))),l.string}return o.sink.report(S.operatorNotApplicable(r,"+",n,t)),l.number}if(l$1.category==="arithmetic"||l$1.category==="bitwise")rn(n,o.schemes)||o.sink.report(S.arithmeticOperand(s,"left")),rn(t,o.schemes)||o.sink.report(S.arithmeticOperand(a,"right"));else if(l$1.category==="relational"&&!Te(n)&&!Te(t)){let i=E(n,o.schemes),c=E(t,o.schemes),u=Y(i,l.number,o.schemes),p=Y(c,l.number,o.schemes);u&&p||!u&&!p&&(Y(i,c,o.schemes)||Y(c,i,o.schemes))||o.sink.report(S.operatorNotApplicable(r,e,n,t));}return tt(l$1.result)}var Te=e=>e.t==="any"||e.t==="unknown",rn=(e,n)=>Te(e)||Y(E(e,n),l.number,n),Ce=(e,n)=>!Te(e)&&Y(E(e,n),l.string,n),po=l.union([l.string,l.number,l.boolean,l.null,l.undefined]),Bs=(e,n)=>Te(e)||Y(E(e,n),po,n),Kr={string:l.literal(""),number:l.literal(0),boolean:l.literal(false)},An=e=>e.t==="null"||e.t==="undefined";function fo(e,n,t,r){if(n.t==="any"||n.t==="unknown")return ba([n,t]);let s=(n.t==="union"?[...n.of]:[n]).flatMap(o=>o.t==="boolean"?[l.literal(true),l.literal(false)]:[o]);if(e==="??")return s.some(An)?ba([...s.filter(o=>!An(o)),t]):n;if(e==="||")return Er(n,r)?ba([...s.filter(o=>!An(o)&&!(o.t==="literal"&&!o.value)),t]):n;if(!Ar(n,r))return n;let a=s.flatMap(o=>An(o)?[o]:o.t==="literal"?o.value?[]:[o]:Kr[o.t]?[Kr[o.t]]:[]);return ba([...a,t])}var mo=l.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>l.literal(e)));function yo(e,n,t){let r=B(e.argument,n,t);switch(e.operator){case "!":return r.t==="literal"?{t:"literal",value:!r.value,fresh:true}:l.boolean;case "-":case "+":case "~":return ue(r,e.argument,t),e.operator==="-"&&r.t==="literal"&&typeof r.value=="number"?{t:"literal",value:-r.value,fresh:true}:l.number;case "typeof":return mo;case "delete":return l.boolean;case "void":return l.undefined;default:return l.unknown}}function ho(e,n,t){let r={},s,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=z(B(m.argument,n,t),t.schemes);if(b.t==="object"){for(let E in b.props)r[E]=b.props[E];b.index&&(s={key:b.index.key,type:b.index.value});}continue}let y=m,f=B(y.value,n,t),h=G$1(f);if(N(t,m,f,n),y.computed){let b=z(B(y.key,n,t),t.schemes);b.t==="literal"&&typeof b.value=="string"?(r[b.value]={type:h},a.push(h)):b.t==="literal"&&typeof b.value=="number"?(r[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=we(y);g!==null&&(r[g]={type:h},a.push(h),/^\d+$/.test(g)&&o.push(h));}l?s={key:"string",type:ba(a)}:i&&(s={key:"number",type:ba(o)});let u=c?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return s?{t:"object",props:r,index:{key:s.key,value:s.type},...u}:{t:"object",props:r,...u}}function ks(e,n,t){let r=[];for(let s of e.elements){if(!s)continue;let a=s;if(a.type==="SpreadElement"){let o=z(B(a.argument,n,t),t.schemes);o.t==="array"?r.push(o.items):o.t==="tuple"&&r.push(...o.elements);continue}r.push(G$1(B(a,n,t)));}return q$1(l.array(r.length?ba(r):l.unknown))}function At(e,n,t,r){let s=z(n,r.schemes),a=e.elements,o=a.every(i=>i&&i.type!=="SpreadElement"),l$1=(i,c)=>i.type==="ArrayExpression"?At(i,c,t,r):Fe(c,ae(i)?ge(i):void 0)?B(i,t,r):G$1(B(i,t,r));if(s.t==="tuple"&&o){let i=w(s),c=p=>i<0||p<i?s.elements[p]:s.elements[i],u=a.map((p,m)=>{let y=c(m);return y?l$1(p,y):G$1(B(p,t,r))});return N(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}if(s.t==="union"&&o){let i=s.of.map(c=>z(c,r.schemes));if(i.some(c=>c.t==="tuple")){let c=(p,m)=>{if(p.t==="array")return p.items;if(p.t!=="tuple")return;let y=w(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$1(p,ba(y)):G$1(B(p,t,r))});return N(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}}if(s.t==="array"){let i=[];for(let c of a){if(!c)continue;let u=c;if(u.type==="SpreadElement"){B(u.argument,t,r);continue}i.push(l$1(u,s.items));}return N(r,e,q$1(l.array(i.length?ba(i):l.unknown)),t)}return ks(e,t,r)}function ws(e,n,t){let r=E(e,t);if(r.t==="array")return r.items;if(r.t==="tuple"){let s=w(r);if(n>=r.elements.length||s>=0&&n>=s)return;let a=F$1(l.index(r,l.literal(n)),t);return o(a)?void 0:a}if(r.t==="union"){let s=r.of.map(a=>ws(a,n,t));return s.some(a=>a===void 0)?void 0:ba(s)}}function go(e,n,t,r,s){let a=E(t,s.schemes);if(a.t!=="array"&&a.t!=="tuple"&&a.t!=="union")return false;let o=(i,c)=>i.t==="tuple"?i.elements[c]:i.t==="array"?i.items:void 0,l=false;return e.elements.forEach((i,c)=>{if(!i)return;let u=i;if(u.type==="SpreadElement")return;let p=ws(a,c,s.schemes);if(!p)return;let m=o(n,c);if(!m||Y(m,p,s.schemes))return;let y=s.sink.all.length;q(u,p,r,s,false),s.sink.all.length>y&&(l=true);}),l}function bt(e,n,t,r){if(e===null)return l.null;switch(typeof e){case "string":return l.string;case "number":return l.number;case "boolean":return l.boolean;case "object":break;default:return l.unknown}if(Array.isArray(e)){let o=e.map(l=>bt(l,n,t,r));return l.array(o.length?ba(o):l.unknown)}let s=e;if(isExprMarker(s)){let o;try{o=fromJson(s);}catch{return t.sink.report(S.unsupported(r,`'${EXPR_MARKER}: ${String(s[EXPR_MARKER])}'`)),l.unknown}return B(o,n,t)}let a={};for(let o of Object.keys(s))a[o]={type:bt(s[o],n,t,r)};return {t:"object",props:a}}function vs(e,n){let t=E(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(r=>vs(r,n)):false}function So(e,n,t,r,s){let a=G(),o=q(e,n,t,{...r,sink:a},true);if(a.hasErrors()&&s);let l=i=>r.sink.all.some(c=>c.node===i.node&&c.code===i.code&&c.message===i.message);for(let i of a.all)l(i)||r.sink.report(i);return a.hasErrors()?n:o}var bo=(e,n)=>({...e,typeAnnotation:n}),No=(e,n)=>({...e,returnType:n}),Bo=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function Ot(e,n){return e.get(n)?.type}function ko(e,n){return e.get(n)?.scope}function wo(e,n){let t=e.get(n)?.type;return t?la$1(t,[])?.completions??[]:[]}function vo(e,n){let t=e.get(n)?.scope;return t?[...xn(t)].map(([r,s])=>({key:r,type:s,optional:false})):[]}var Eo=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function Ao(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 jn(e,n,t,r={}){let s=e[n],a=e[n+1];if(!(!s||!a))switch(a.type){case "ArrowFunctionExpression":case "FunctionExpression":return a.body===s?a.returnType:void 0;case "VariableDeclarator":return a.init===s?a.id?.typeAnnotation:void 0;case "TSAsExpression":return a.typeAnnotation;case "ReturnStatement":return e.slice(n+1).find(Eo)?.returnType;case "CallExpression":{let o=(a.arguments??[]).indexOf(s);if(o<0)return;let l=Ot(t,a.callee);return l?.t==="fn"?l.params?.[o]?.type:void 0}case "Property":{if(a.value!==s||e[n+2]?.type!=="ObjectExpression")return;let l=jn(e,n+2,t,r),i=Ao(a);return !l||!i?void 0:la$1(l,[i],r)?.type}case "ArrayExpression":{let o=jn(e,n+1,t,r);return o?la$1(o,["[]"],r)?.type:void 0}case "BinaryExpression":{let o=ze.get(a.operator);if(!o)return;if(o.category==="arithmetic"||o.category==="bitwise")return l.number;let l$1=a.left===s?a.right:a.left,i=Ot(t,l$1);return i&&i.t!=="any"&&i.t!=="unknown"?i:void 0}case "LogicalExpression":return jn(e,n+1,t,r);case "UnaryExpression":{let o=a.operator;return o==="-"||o==="+"||o==="~"?l.number:void 0}default:return}}function Oo(e,n){return e.filter(t=>t.node===n)}function Do(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var Po=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Ct(e,n,t,r){if(isExprMarker(e)){let s=r.island?r.island(e,n):fromExprMarker(e);return t.stamp(s,n)}return Array.isArray(e)?t.stamp(de.arrayExpression(e.map((s,a)=>Ct(s,r.child(n,a),t,r))),n):Po(e)?t.stamp(de.objectExpression(Object.entries(e).map(([s,a])=>{let o=r.child(n,s),l=t.stamp(de.literal(s),o);return t.stamp(de.property(l,Ct(a,o,t,r),false,false),o)})),n):t.stamp(de.literal(e),n)}function jo(e){let n=new WeakMap,t=[e];for(;t.length>0;){let r=t.pop();forEachChild(r,s=>{n.set(s,r),t.push(s);});}return n}function Mo(e,n,t,r){let s=jo(e),a=new Map,o=i=>{let c=a.get(i);return c===void 0&&(c=createPositionMap(i),a.set(i,c)),c},l=i=>{let c=i;for(;c!==void 0;){let u=t.get(c);if(u!==void 0)return u;c=s.get(c);}return r.fallback};return n.map(i=>{let c=l(i.node),u=r.textOf?.(c),p=u===void 0?void 0:As(o(u),i.node.loc);return {diagnostic:i,anchor:c,...p?{span:p}:{}}})}function As(e,n){if(!n?.start)return;let t=a=>e.offsetAt({line:a.line-1,column:a.column}),r=t(n.start),s=n.end?t(n.end):r;return {from:r,to:s<r?r:s}}function Io(e,n){return As(createPositionMap(e),n)}export{ze as BINARY_OP,nt as BINARY_OPS,Xt as FUNCTION_KINDS,Ks as LOGICAL_OPS,nr as UNARY_OPS,Mo as anchorDiagnostics,bo as annotate,No as annotateReturn,Bo as asExpression,Gs as binaryOpsProducing,qn as calleeAllowlist,Wn as capabilityNodes,xr as check,he as childScope,Qs as collectBindings,it as collectMutations,at as collectUnused,Fa as componentProps,kt as componentPropsOf,jn as contextualTypeAt,Do as createAnchors,Ps as createEnv,G as createSink,S as diag,Oo as diagnosticsAt,va as extractModuleType,Vs as fromCapability,zn as guard,Sn as guardsFromCompiled,U as lookup,Ct as lowerValue,F as makeDiagnostic,Zn as maxArgs,Yn as maxCallNesting,Hn as maxDepth,Jn as maxFunctionNesting,gn as maxNestingOf,Qn as maxNodes,wo as memberCompletions,Xn as memberDepth,tt as opResultSchema,js as resolveNamed,Ms as resolveScheme,et as resultType,qt as rootScope,ko as scopeAt,vo as scopeCompletions,Io as spanOf,Ot as typeAt,xs as unaryOpsProducing,xn as visibleNames};
1
+ import {l,ha as ha$1,X,ja as ja$1,Y,e,h,i,k,f,la as la$1,j as j$1,ba as ba$1,I,E,m,C,D as D$1,z as z$1,V as V$1,J as J$1,x as x$1,K,W as W$1,R,M,A as A$1,B as B$1,$ as $$1,G as G$1,L as L$1,H as H$1,s,t,q as q$1,w,Z as Z$1,T,_ as _$1,F as F$1,o,r,ca as ca$1}from'./chunk-BW42VHMU.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,E as apparentType,q as asLiteralOrigin,I as baseLiteralType,B as bindTypeParams,Z as comparable,e as configureTypeLimits,O as contravariantInference,N as covariantInference,la as discover,_ as equals,Q as erasedSignature,D as expand1,u as flagAt,ha as format,ia as formatTypeArgs,ja as formatTypeDiff,z as freeVars,W as groundVars,P as inferFromCandidates,R as inferredTypes,U as instantiate,S as instantiateInContextOf,V as instantiateLoose,o as isMissingType,t as isNumericLiteralName,p as isObjectOrArrayLiteral,C as isScheme,ka as isSerializable,v as isVariadicTuple,da as join,ea as joinAll,n as missingType,ba as normalizeUnion,r as ownProp,y as renameTypeParams,j as resetInstantiationCount,f as resetTypeLimits,$ as resolveConditional,F as resolveOp,m as resolveTypeOp,w as restIndex,l as s,fa as sampleValue,M as silentNever,x as substitute,Y as subtype,aa as typeAtPosition,X as typeDiff,ca as typeFeatures,g as typeLimits,ga as typeNeedsParens,A as typeParamArity,T as unify,G as widen,K as widenInferred,H as widenLiteral,L as widenOrigin,J as widenType,s as withoutUndefined}from'./chunk-BW42VHMU.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 me from'@tslite/ast/builders';import {createPositionMap}from'@tslite/language-service';var ss=(e={})=>rootScope(e),Se=(e,n)=>childScope(e,n),x=(e,n)=>lookup(e,n),Hn=e=>{let n=visibleNames(e);for(let t of n.keys())(t.includes(".")||t.endsWith("#"))&&n.delete(t);return n},ts=new Set(["types","schemes","accessors","asserters","matchers","modules"]),zr=(e={},n)=>{let t=n??{},s=Object.keys(t).filter(r=>!ts.has(r));if(s.length>0)throw new TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${s.map(r=>`'${r}'`).join(", ")} \u2014 expected ${[...ts].join(", ")}. Named types go under 'types'.`,{unknown:s});return {scope:ss(e),types:t.types??{},schemes:t.schemes??{},accessors:t.accessors??{},asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:t.modules??{}}},Jr=(e,n)=>e.types[n],qr=(e,n)=>e.schemes[n];var rs={"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","forbidden-member":"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"},A=(e,n,t)=>({code:e,kind:rs[e],severity:"error",node:n,message:t}),$=(e,n,t,s="error")=>({code:e,kind:rs[e],severity:s,node:n,message:t}),S={notAssignable:(e,n,t,s={})=>{let r=X(n,t,s),a=r.filter(l=>l.path.length>0),o=a.length?` ${ja$1(a)}.`:"",c=A("not-assignable",e,`Type '${ha$1(n)}' is not assignable to type '${ha$1(t)}'.${o}`),i=r.filter(l=>l.kind==="missing"&&l.path.length===1).map(l=>({name:l.path[0],type:l.expected}));return i.length?{...c,data:{kind:"missing-properties",properties:i}}:c},unknownName:(e,n)=>A("unknown-name",e,`Cannot find name '${n}'.`),notCallable:(e,n)=>A("not-callable",e,`Type '${ha$1(n)}' is not callable.`),noSuchMember:(e,n,t)=>A("no-such-member",e,`Property '${t}' does not exist on type '${ha$1(n)}'.`),notObject:(e,n)=>A("not-object",e,`Type '${ha$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 A("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${s}.`:`Object is possibly ${s}.`)},unknownValue:e=>A("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>A("const-needs-init",e,"'const' declarations must be initialized."),missingArgument:(e,n,t)=>A("missing-argument",e,`Missing argument '${n}' of type '${ha$1(t)}'.`),notASchema:(e,n)=>A("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)=>A("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)=>A("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>A("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)=>A("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),cannotRedeclare:(e,n)=>A("cannot-redeclare",e,`Cannot redeclare block-scoped variable '${n}'.`),circularTypeAlias:(e,n)=>A("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>A("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>A("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,s,r=false)=>A(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)=>A("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${ha$1(t)}'.`),spreadArgument:e=>A("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>A("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>A("not-iterable",e,`Type '${ha$1(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),propsMismatch:(e,n,t)=>A("props-mismatch",e,`Payload is not compatible with the component props '${ha$1(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>A("no-matching-overload",e,`No overload of '${ha$1(n)}' matches the arguments (${t.map(s=>ha$1(s)).join(", ")}).`),constraintViolation:(e,n,t,s)=>A("constraint-violation",e,`Type '${ha$1(t)}' does not satisfy the constraint '${n} extends ${ha$1(s)}'.`),unsupported:(e,n)=>A("unsupported",e,`${n} is not supported in this language.`),wrongTypeArgumentCount:(e,n,t)=>A("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,s)=>A("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)=>A("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.`),forbiddenMember:(e,n)=>A("forbidden-member",e,`'${n}' is not a member of the language \u2014 the JS runtime substrate (identity/inheritance) is not vocabulary here (FP / portable IR). Use a factory/operator via DI.`),unusedName:(e,n)=>$("unused-name",e,`'${n}' is declared but its value is never read.`,"warning"),assignToConst:(e,n,t)=>A("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)=>A("readonly-write",e,`Index signature in type '${ha$1(n)}' only permits reading.`),castUnsound:(e,n,t)=>A("cast-unsound",e,`Conversion of type '${ha$1(n)}' to type '${ha$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)=>A("unprovable-value",e,`A value of type '${ha$1(n)}' can never satisfy '${s}' (${ha$1(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>A("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)=>A("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${ha$1(t)}' and '${ha$1(s)}'.`),implicitCoercion:(e,n,t,s)=>({...A("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${ha$1(n)}' and '${ha$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)=>({...A("implicit-coercion",e,`Cannot convert '${ha$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 W(){let e=[];return {all:e,report(n){e.push(n);},hasErrors(){return e.some(n=>n.severity==="error")}}}function Xe(e,n,t){let s=I(e);return Z$1(n,J$1(s),t)||Z$1(s,n,t)}function as(e,n,t){return Y(e,n,t)}function et(e,n,t={}){return n.flatMap(s=>s(e,t))}function ke(e,n){let t=s=>{n(s);for(let r of childrenOf(s))t(r);};t(e);}var Qr=e=>Array.isArray(e)?e:[e],os=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function nt(e,n="error"){return t=>{let s=[];return ke(t,r=>{let a=nodeViolation(r,e);a&&s.push($("node-not-allowed",r,`'${a}' is not allowed by the capability profile.`,n));}),s}}function is(e,n="error"){let t=e.typeTier;return s=>{if(t==="author")return [];let r=[];return ke(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(ca$1(i,c),t);l.length&&r.push($("type-feature-not-allowed",a,`authoring type feature${l.length>1?"s":""} '${l.join("', '")}' requires capability tier 'author'.`,n));}}),r}}function j(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=>j(t.type,n))||!!e.index&&j(e.index.value,n);case "array":return j(e.items,n);case "tuple":return e.elements.some(t=>j(t,n));case "union":case "intersection":return e.of.some(t=>j(t,n));case "fn":return e.params.some(t=>j(t.type,n))||j(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(s=>j(s.type,n))||j(t.returns,n));case "keyof":return j(e.of,n);case "index":return j(e.obj,n)||j(e.key,n);case "mapped":return j(e.over,n)||j(e.body,n);case "conditional":return j(e.check,n)||j(e.extends,n)||j(e.then,n)||j(e.else,n);case "returnType":case "parameters":return j(e.fn,n);case "apply":return e.args.some(t=>j(t,n));default:return false}}function cs(e,n="error"){return t=>{if(!e.typeStrict)return [];let s=[];return ke(t,r=>{let a=r;for(let o of [a.typeAnnotation,a.returnType])if(o&&j(o)){s.push($("any-not-allowed",r,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),s}}function ls(e,n="error"){return (t,s)=>{let r=s.overlay;if(!e.typeStrict||!r)return [];let a=s.schemes??{},o=[];return ke(t,c=>{if(c.type!=="TSAsExpression")return;let{expression:i}=c,l=r.get(i)?.type,u=r.get(c)?.type;!l||!u||j(u)||!Xe(l,u,a)||as(l,u,a)||o.push($("narrowing-cast-not-allowed",c,`A cast may only widen under 'strict': '${ha$1(l)}' is not assignable to '${ha$1(u)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),o}}function tt(e,n="error"){let t=new Set(e);return s=>{let r=[];return ke(s,a=>{if(a.type!=="CallExpression")return;let o=a.callee;if(o.type!=="Identifier")r.push($("name-not-allowed",o,"Only direct calls to allowed functions are permitted.",n));else {let c=o.name;t.has(c)||r.push($("name-not-allowed",o,`Function '${c}' is not allowed here.`,n));}}),r}}function vn(e,n,t={}){let s=new Set(Qr(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($("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 st=(e=3,n="error")=>vn(os,e,{hint:"use a pipe instead of nesting functions",severity:n}),rt=(e,n="error")=>vn("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),at=(e,n="error")=>vn("MemberExpression",e,{severity:n});function ot(e,n="error"){return t=>{let s=[],r=(a,o)=>{if(o>e){s.push($("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 it(e,n="error"){return t=>{let s=0;return ke(t,()=>{s++;}),s>e?[$("too-large",t,`Expression has ${s} nodes (max ${e}).`,n)]:[]}}function ct(e,n="error"){return t=>{let s=[];return ke(t,r=>{if(r.type==="CallExpression"){let a=r.arguments;a&&a.length>e&&s.push($("too-large",r,`Call has ${a.length} arguments (max ${e}).`,n));}}),s}}function lt(e,n={},t="error"){return (s,r)=>{let a=r.overlay?.get(s)?.type;return a?Y(a,e,n)?[]:[$("wrong-result-type",s,`Result type '${ha$1(a)}' is not assignable to the required '${ha$1(e)}'.`,t)]:[]}}function En(e){let n=[nt(e),is(e),cs(e),ls(e)];return e.hostAllow!=="*"&&n.push(tt([...e.hostAllow])),n}function Zr(e){return En(compileProfile(e))}var ut=[{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"}],Ye=new Map(ut.map(e=>[e.op,e])),us={number:l.number,boolean:l.boolean,string:l.string},pt=e=>us[e],ps=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],ea={number:l.number,boolean:l.boolean,string:l.string,undefined:l.undefined},na=[{op:"&&"},{op:"||"},{op:"??"}];function ta(e,n={}){return ut.filter(t=>t.result==="additive"?Y(l.string,e,n)||Y(l.number,e,n):Y(us[t.result],e,n))}function sa(e,n={}){return ps.filter(t=>Y(ea[t.result],e,n))}var we=e=>({bindings:new Map,parent:e}),fs=e=>e.charCodeAt(0)===95;function An(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 He(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let s of e)He(s,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let s=t.path[0];typeof s=="string"&&Rn(n,s);return}for(let s of Object.keys(t))He(t[s],n);}function ms(e,n){let t=e;He(t.typeAnnotation,n),He(t.returnType,n);}function Rn(e,n){for(let t=e;t;t=t.parent){let s=t.bindings.get(n);if(s){s.used=true;return}}}function ae(e,n,t,s,r,a){if(e)switch(e.type){case "Identifier":{let o=e.name;ms(e,n),An(n,t,o,e,s,r||a&&fs(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")ae(l.argument,n,t,s,r,false);else {let m=l;m.computed&&P(m.key,n,t),ae(m.value,n,t,s,r||p,!m.shorthand);}});return}case "ArrayPattern":{for(let o of e.elements){if(!o)continue;let c=o;ae(c.type==="RestElement"?c.argument:c,n,t,s,r,true);}return}case "AssignmentPattern":ae(e.left,n,t,s,r,a);return;case "RestElement":ae(e.argument,n,t,s,r,true);return;default:return}}function Qe(e,n,t){if(e)switch(e.type){case "AssignmentPattern":P(e.right,n,t),Qe(e.left,n,t);return;case "ObjectPattern":for(let s of e.properties)Qe(s.type==="RestElement"?s.argument:s.value,n,t);return;case "ArrayPattern":for(let s of e.elements)s&&Qe(s,n,t);return;case "RestElement":Qe(e.argument,n,t);return;default:return}}function ds(e,n,t,s){for(let r of e.declarations)ae(r.id,n,t,"local",s,false),P(r.init,n,t);}function dt(e,n,t){let s=e,r=we(n),a=s.params??[];for(let o of a)ae(o,r,t,"parameter",false,true);for(let o of a)Qe(o,r,t);P(s.body,r,t);}function P(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(ms(e,n),e.type){case "Identifier":Rn(n,e.name);return;case "MemberExpression":{let s=e;P(s.object,n,t),s.computed&&P(s.property,n,t);return}case "Property":{let s=e;s.computed&&P(s.key,n,t),P(s.value,n,t);return}case "Program":case "BlockStatement":{let s=we(n);for(let r of e.body??[])P(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":dt(e,n,t);return;case "FunctionDeclaration":{let s=e.id;s&&An(n,t,s.name,s,"local",false),dt(e,n,t);return}case "CatchClause":{let s=e,r=we(n);ae(s.param,r,t,"local",true,false),P(s.body,r,t);return}case "SwitchStatement":{let s=e;P(s.discriminant,n,t);let r=we(n);for(let a of s.cases){P(a.test,r,t);for(let o of a.consequent??[])P(o,r,t);}return}case "ForStatement":{let s=e,r=we(n);P(s.init,r,t),P(s.test,r,t),P(s.update,r,t),P(s.body,r,t);return}case "ForOfStatement":case "ForInStatement":{let s=e;P(s.right,n,t);let r=we(n),a=s.left;if(a.type==="VariableDeclaration")for(let o of a.declarations)ae(o.id,r,t,"local",false,true);else P(a,r,t);P(s.body,r,t);return}case "VariableDeclaration":ds(e,n,t,false);return;case "ImportDeclaration":{for(let s of e.specifiers){let r=s.local;r&&An(n,t,r.name,r,"import",fs(r.name));}return}case "ExportNamedDeclaration":{let s=e;if(s.declaration){let r=s.declaration;if(r.type==="VariableDeclaration")ds(r,n,t,true);else if(r.type==="FunctionDeclaration"){let a=r.id;a&&An(n,t,a.name,a,"local",true),dt(r,n,t);}else P(r,n,t);}else for(let r of s.specifiers)Rn(n,r.local.name);return}case "TSAsExpression":P(e.expression,n,t);return;case "TSTypeAliasDeclaration":He(e.typeAnnotation,n);return;case "JsonExpression":ft(e.body,n,t);return;case "JSXOpeningElement":{let s=e;ys(s.name,n);for(let r of s.attributes??[])P(r,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":P(e.value,n,t);return;default:{let s=VisitorKeys[e.type];if(!s)return;let r=e;for(let a of s){let o=r[a];if(Array.isArray(o))for(let c of o)P(c,n,t);else P(o,n,t);}return}}}function ys(e,n,t){e&&(e.type==="JSXIdentifier"?Rn(n,e.name):e.type==="JSXMemberExpression"&&ys(e.object,n));}function ft(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)ft(r,n,t);return}let s=e;if(isExprMarker(s)){try{P(fromJson(s),n,t);}catch{}return}for(let r of Object.keys(s))ft(s[r],n,t);}function mt(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};P(e,we(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 ca=new Set(["const","import"]),Ze=e=>({binds:new Map,parent:e});function la(e,n){for(let t=e;t;t=t.parent){let s=t.binds.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 On=(e,n,t)=>{for(let s of ve(n))e.binds.set(s.name,t);};function yt(e,n,t){if(!e)return;if(e.type!=="Identifier"){for(let a of ve(e))yt(a,n,t);return}let s=e.name,r=la(n,s);r&&ca.has(r)&&(t.invalid.add(e),t.out.push(S.assignToConst(e,s,r==="import"?"import":"const")));}function V(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let s=e;yt(s.left,n,t),V(s.right,n,t);return}case "UpdateExpression":{yt(e.argument,n,t);return}case "Program":case "BlockStatement":{let s=Ze(n);for(let r of e.body??[])V(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let s=e,r=Ze(n);for(let a of s.params??[])On(r,a,"param");V(s.body,r,t);return}case "CatchClause":{let s=e,r=Ze(n);On(r,s.param,"param"),V(s.body,r,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let s=e,r=Ze(n),a=s.left??s.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)On(r,o.id,a.kind);else a&&V(a,r,t);V(s.right,n,t),V(s.test,r,t),V(s.update,r,t),V(s.body,r,t);return}case "VariableDeclaration":{let s=e;for(let r of s.declarations)V(r.init,n,t),On(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&&V(s.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":V(e.expression,n,t);return;default:{let s=VisitorKeys[e.type];if(!s)return;let r=e;for(let a of s){let o=r[a];if(Array.isArray(o))for(let c of o)V(c,n,t);else V(o,n,t);}return}}}function ht(e){let n={out:[],invalid:new WeakSet};return V(e,Ze(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var en=e=>({decls:new Map,parent:e});function pa(e,n){for(let t=e;t;t=t.parent){let s=t.decls.get(n);if(s)return s}}function $e(e){if(!e)return [];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?$e(n):[]);case "AssignmentPattern":return $e(e.left);case "RestElement":return $e(e.argument);default:return []}}var Tn=(e,n)=>{for(let t of $e(n))e.decls.set(t.name,t);};function L(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let s=pa(n,e.name);s&&s!==e&&t.set(e,s);return}case "MemberExpression":{let s=e;L(s.object,n,t),s.computed&&L(s.property,n,t);return}case "Property":{let s=e;s.computed&&L(s.key,n,t),L(s.value,n,t);return}case "Program":case "BlockStatement":{let s=en(n);for(let r of e.body??[])L(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=en(n);for(let o of s.params??[])Tn(a,o);L(s.body,a,t);return}case "CatchClause":{let s=e,r=en(n);Tn(r,s.param),L(s.body,r,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let s=e,r=en(n),a=s.left??s.init;if(a?.type==="VariableDeclaration")for(let o of a.declarations)Tn(r,o.id);else a&&L(a,r,t);L(s.right,n,t),L(s.test,r,t),L(s.update,r,t),L(s.body,r,t);return}case "VariableDeclaration":{for(let s of e.declarations)Tn(n,s.id),L(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":L(e.expression,n,t);return;default:{let s=VisitorKeys[e.type];if(!s)return;let r=e;for(let a of s){let o=r[a];if(Array.isArray(o))for(let c of o)L(c,n,t);else L(o,n,t);}return}}}function da(e){let n=new WeakMap;return L(e,en(void 0),n),n}function ya(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 gs(e,n){for(let t=e;t;t=t.parent){let s=t.decls.get(n);if(s)return s}}var ha=e=>e?.type==="Literal"&&typeof e.value=="string";function Dn(e,n){if(!n&&e.type==="Identifier")return e.name;if(ha(e))return e.value}function Ve(e,n,t){if(e)switch(e.type){case "Identifier":{let s=e.name,r=gs(n,s);return r?t.aliases.get(r):[s]}case "MemberExpression":{let s=e,r=Ve(s.object,n,t),a=Dn(s.property,s.computed);return r&&a!==void 0?[...r,a]:void 0}case "ChainExpression":return Ve(e.expression,n,t);default:return}}var Ss=(e,n)=>{let t=gs(n,e);return t?{kind:"local",declaration:t}:{kind:"environment",path:[e]}};function Cn(e,n,t,s,r){s.out.push({site:"node",node:e,symbol:Ss(n,t),...r?{shorthand:r}:{}});}function tn(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 oe(e,n,t,s,r,a){if(e)switch(e.type){case "Identifier":tn(e,n,t),Ue(e,n,t),r&&s&&t.aliases.set(e,s);return;case "ObjectPattern":for(let o of e.properties){if(o.type==="RestElement"){oe(o.argument,n,t,void 0,false,a);continue}let c=o,i=c.key;c.computed&&D(i,a,t);let l=Dn(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?(tn(m,n,t,"property"),Ue(m,n,t),r&&u&&t.aliases.set(m,u),p.type==="AssignmentPattern"&&D(p.right,a,t)):oe(p,n,t,u,r,a);}return;case "ArrayPattern":for(let o of e.elements)oe(o,n,t,void 0,false,a);return;case "AssignmentPattern":{let o=e;oe(o.left,n,t,s,r,a),D(o.right,a,t);return}case "RestElement":oe(e.argument,n,t,void 0,false,a);return;default:D(e,n,t);}}function Ue(e,n,t){let s=e;for(let a of ERASABLE_TYPE_NODE_KEYS)gt(s[a],n,t);let r=s.typeParameters;if(Array.isArray(r))for(let a of r)Ue(a,n,t);}function gt(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)gt(r,n,t);return}let s=e;if(s.type==="TSTypeQuery"){let r=s.exprName,a=Ss(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"&&gt(a,n,t);}function bs(e,n,t){if(e){if(e.type==="JSXIdentifier"){let s=e.name;/^[A-Z_$]/.test(s)&&Cn(e,s,n,t);return}if(e.type==="JSXMemberExpression"){let s=e;bs(s.object,n,t);let r=s.object,a=r.type==="JSXIdentifier"?Ve({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 D(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":Cn(e,e.name,n,t);return;case "MemberExpression":{let s=e;D(s.object,n,t);let r=Ve(s.object,n,t),a=Dn(s.property,s.computed);r&&a!==void 0?t.out.push({site:"node",node:s.property,symbol:{kind:"environment",path:[...r,a]}}):s.computed&&D(s.property,n,t);return}case "Property":{let s=e;if(s.computed&&D(s.key,n,t),s.shorthand&&s.value.type==="Identifier"){let r=s.value;Cn(s.value,r.name,n,t,"property");return}D(s.value,n,t);return}case "Program":case "BlockStatement":{let s=nn(n);for(let r of e.body??[])D(r,s,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let s=e,r=e.id;r&&tn(r,n,t);let a=nn(n);for(let o of s.params??[])oe(o,a,t,void 0,false,a);Ue(e,a,t),D(s.body,a,t);return}case "CatchClause":{let s=e,r=nn(n);oe(s.param,r,t,void 0,false,r),D(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)oe(o.id,r,t,void 0,false,r),D(o.init,r,t);else a&&D(a,r,t);D(s.right,n,t),D(s.test,r,t),D(s.update,r,t),D(s.body,r,t);return}case "VariableDeclaration":{let s=e;for(let r of s.declarations){let a=Ve(r.init,n,t);oe(r.id,n,t,a,s.kind==="const",n),D(r.init,n,t);}return}case "AssignmentExpression":{let s=e,r=s.left;s.operator==="="&&["ObjectPattern","ArrayPattern","ObjectExpression","ArrayExpression"].includes(r.type)?Le(r,Ve(s.right,n,t),n,t):D(r,n,t),D(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);tn(r.local,n,t,a?"import":void 0);}return}case "TSTypeAliasDeclaration":{let s=e.id;tn(s,n,t),t.typeAliases.has(s.name)||t.typeAliases.set(s.name,s),Ue(e,n,t);return}case "TSAsExpression":D(e.expression,n,t),Ue(e,n,t);return;case "JSXOpeningElement":case "JSXClosingElement":{let s=e;if(bs(s.name,n,t),e.type==="JSXOpeningElement")for(let r of s.attributes)r.type==="JSXSpreadAttribute"?D(r.argument,n,t):D(r.value,n,t);return}default:{let s=VisitorKeys[e.type];if(!s)return;let r=e;for(let a of s){let o=r[a];if(Array.isArray(o))for(let c of o)D(c,n,t);else D(o,n,t);}return}}}function hs(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 Le(e,n,t,s){switch(e.type){case "ObjectPattern":case "ObjectExpression":for(let r of e.properties){if(r.type==="RestElement"||r.type==="SpreadElement"){Le(r.argument,void 0,t,s);continue}let a=r,o=a.key;a.computed&&D(o,t,s);let c=Dn(o,a.computed),i=n&&c!==void 0?[...n,c]:void 0,l=a.value,u=hs(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?Cn(p,p.name,t,s,"property"):Le(p,i,t,s),u&&D(u.value,t,s);}return;case "ArrayPattern":case "ArrayExpression":for(let r of e.elements)r&&Le(r.type==="SpreadElement"?r.argument:r,void 0,t,s);return;case "AssignmentPattern":case "AssignmentExpression":{let r=hs(e);if(!r)return D(e,t,s);Le(r.target,n,t,s),D(r.value,t,s);return}case "RestElement":Le(e.argument,void 0,t,s);return;default:D(e,t,s);}}function ga(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 Sa(e){let n={out:[],aliases:new WeakMap,typeAliases:new Map};return D(e,nn(void 0),n),ga(e,n),n.out}function Q(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)Q(r,n,t,s);return;case "union":case "intersection":for(let r of e.of)Q(r,n,t,s);return;case "conditional":Q(e.check,n,t,s),Q(e.extends,n,t,s),Q(e.then,n,t,s),Q(e.else,n,t,s);return;case "keyof":Q(e.of,n,t,s);return;case "index":Q(e.obj,n,t,s),Q(e.key,n,t,s);return;case "returnType":case "parameters":Q(e.fn,n,t,s);return;default:return}}function Bs(e,n){let t=new Set(Object.keys(e)),s=new Set(Object.keys(n)),r=new Map;for(let o of t){let c=new Set;Q(e[o].body,t,s,c),r.set(o,c);}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 St=e=>`a\0${e}`,Ns=(e,n)=>`p\0${e}\0${n}`;function ks(e,n){let t=new Set(Object.keys(e)),s=new Set(Object.keys(n)),r=new Map,a=new Map;for(let f of t)a.set(f,ba(e[f].body));let o=f=>a.get(f),c=(f,h)=>{switch(f.t){case "literal":return h.has(String(f.value))?[String(f.value)]:[];case "union":return f.of.flatMap(g=>c(g,h));case "keyof":{let g=f.of.t==="apply"&&t.has(f.of.name)?bt(e[f.of.name].body):void 0;return g?[...g].filter(b=>h.has(b)):[]}default:return []}},i=(f,h,g)=>{switch(f.t){case "apply":if(t.has(f.name)&&g.add(St(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 E of c(f.key,b))g.add(Ns(f.obj.name,E));}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(St(f),h);for(let[g,b]of o(f)??[]){let E=new Set;for(let T of b)i(T,"annotation",E);r.set(Ns(f,g),E);}}let l=new Map,u=f=>{let h=l.get(f);if(h)return h;let g=new Set;l.set(f,g);let b=[...r.get(f)??[]];for(;b.length;){let E=b.pop();g.has(E)||(g.add(E),b.push(...r.get(E)??[]));}return g},p=new Map,m=[];for(let f of r.keys()){if(!f.startsWith("p\0")||!u(f).has(f))continue;m.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=St(f),g=u(h);m.some(b=>g.has(b)&&u(b).has(h))&&y.add(f);}return {properties:p,aliases:y}}function ba(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 Nt(e,n){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(s=>Nt(s,n))};if(e.t!=="object")return e;let t={...e.props};for(let s of Object.keys(t))n.has(s)&&(t[s]={...t[s],type:{t:"any"}});return {...e,props:t}}function bt(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...bt(n)]));case "union":{let[n,...t]=e.of.map(bt);return new Set([...n??[]].filter(s=>t.every(r=>r.has(s))))}default:return new Set}}var Pn=e=>e.typeAnnotation,Bt=e=>e.returnType;function jn(e){let n=e.typeParameters;if(n?.length)return n.map(t=>l.typeParam(t.name,{bound:t.bound,default:t.default}))}var _=e=>e.type==="Identifier"?e.name:null,ws=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?_(n.id):null}return _(e)},vs=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},Ee=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function Es(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 kt(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=kt(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var an=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},ie=e=>e.type==="Literal"||an(e)!==null;function Ae(e){let n=an(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return l.unknown;let s=t.value;return s===null?l.null:s===void 0?l.undefined:typeof s=="string"||typeof s=="number"||typeof s=="boolean"?{t:"literal",value:s,fresh:true}:l.unknown}var be=e=>{let n=an(e);if(n!==null)return l.literal(n);let t=e.value;return t===null?l.null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?l.literal(t):Ae(e)},wt=e=>e.type==="ArrowFunctionExpression",As=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,on=e=>As(e)?e.args[0]:e,cn=e=>As(e)?e:l.promise(e);function rn(e){return e.t==="tuple"?true:e.t==="array"?rn(e.items):e.t==="union"?e.of.some(rn):false}var Na=e=>e?.t==="literal"?typeof e.value:void 0,sn=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>sn(t,n));function xe(e,n){let t=Na(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=>xe(s,n));case "var":{let s=e.bound??l.unknown;return t!==void 0&&sn(s,t)||t===void 0&&Ba(s)?true:xe(s,n)}default:return false}}var Ba=e=>sn(e,"string")||sn(e,"number")||sn(e,"boolean"),z=(e,n)=>{let t=e;for(let s=0;s<50&&t.t==="apply";s++){let r=D$1(t,n);if(r===t||r.t==="apply"&&r.name===t.name)break;t=r;}return t};function Rs(e){let n=Bt(e);if(!n)return null;let t=e.params.map((r,a)=>({name:_(r)??`arg${a}`,type:Pn(r)??l.unknown})),s=jn(e);return {t:"fn",params:t,returns:e.async?cn(n):n,...s?{typeParams:s}:{}}}var ce={then:{},else:{}};function G(e){if(e.type==="Identifier")return e.name;if(e.type!=="MemberExpression")return null;let n=e;if(n.optional)return null;let t=G(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 ee=e=>e.includes("."),Oe=e=>`${e}#`,vt=e=>e.endsWith("#");function Te(e,n,t){let s=x(e,n);return s!==void 0?s:Fs(e,n,t)}var ue=(e,n,t)=>{let s=Te(e,n,t);return s===void 0?void 0:E(s,t)};function Fs(e,n,t){let s=n.lastIndexOf(".");if(s<0)return;let r=Te(e,n.slice(0,s),t);if(r!==void 0)return la$1(r,[n.slice(s+1)],t)?.type}function ka(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)&&ee(a)&&s.add(a);return [...s].sort((r,a)=>r.length-a.length)}function Et(e,n,t){let s=ka(e,n);if(!s.length)return e;let r={};for(let a of s)r[a]=Fs(Se(e,r),a,t)??l.unknown;return Se(e,r)}var $s=new Set(["string","number","boolean","undefined","function","object"]),wa={string:l.string,number:l.number,boolean:l.boolean,undefined:l.undefined,object:l.union([l.nonPrimitive,l.null])};function Ls(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 va=l.literal(true),Ea=l.literal(false),se=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[va,Ea]:[n]),Ke=(e,n)=>{let t=e.filter(s=>Mn(s)||n(s));return t.length===e.length?null:ba$1(t)},Mn=e=>e.t==="unknown"||e.t==="any";function Os(e,n){let t=e,s=n;if(e.type==="UnaryExpression"&&t.operator==="typeof"&&n.type==="Literal"&&typeof s.value=="string"){let r=G(t.argument);if(r!==null)return {name:r,tag:s.value}}return null}function Aa(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let r=se(e).filter(a=>Y(a,n,t));return ba$1(r)}function Ra(e,n,t){return e.t==="unknown"||e.t==="any"?null:Ke(se(e),s=>!Y(s,n,t))}function Oa(e,n){if(!$s.has(n))return null;let t=wa[n],s=se(e),a=s.flatMap(o=>t&&Mn(o)?se(t):[o]).filter(o=>Ls(o,n)||Mn(o));return a.length===s.length&&a.every((o,c)=>o===s[c])?null:ba$1(a)}function Ta(e,n){if(!$s.has(n))return null;let t=se(e),s=t.filter(r=>Mn(r)||!Ls(r,n));return s.length===t.length?null:ba$1(s)}function Ts(e,n){let t=G(e);if(t!==null&&ie(n)){let s=be(n);if(s.t==="literal"||s.t==="null")return {name:t,lit:s}}return null}function Cs(e,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&ie(n)){let t=G(e.object),s=be(n);if(t!==null&&(s.t==="literal"||s.t==="null"))return {name:t,prop:e.property.name,lit:s}}return null}function Ds(e,n,t,s,r$1){let a=se(e),o=c=>c.t==="object"?r(c.props,n)?.type:void 0;return Ke(a,c=>{let i=o(c);return s?!!i&&Y(t,i,r$1):!(i&&Y(i,t,r$1))})}function Ps(e,n,t){let s=se(e),r=a=>a.t==="object"&&(n in a.props||!!a.index);return Ke(s,a=>t?r(a):!r(a))}function Ca(e,n,t){return e.t==="unknown"||e.t==="any"||Y(n,e,t)?n:null}function Da(e,n,t){return Ke(se(e),s=>!_$1(s,n,t))}var le=1,Re=2,Pa=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function ln(e,n){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return le|Re;case "literal":return e.value?le:Re;case "null":case "undefined":case "void":return Re;case "array":case "tuple":case "fn":case "overload":return le;case "object":return Pa(e)?le|Re:le;case "nonPrimitive":return le;case "union":case "intersection":return e.of.reduce((t,s)=>t|ln(s,n),0);default:{let t=E(e,n);return t===e?le|Re:ln(t,n)}}}var Vs=(e,n)=>(ln(e,n)&Re)!==0,Us=(e,n)=>(ln(e,n)&le)!==0,js=(e,n,t)=>{let s=se(e),r=s.filter(a=>ln(a,t)&n);return r.length===s.length?null:ba$1(r)},Ms=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,H=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),ja=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function J(e,n,t){if(e.type==="BinaryExpression"){let r=e;if(r.operator==="in"){let h=r.left,g=r.right,b=G(g);if(h.type==="Literal"&&typeof h.value=="string"&&b!==null){let E=ue(n,b,t);if(!E)return ce;let T=String(h.value);return H(b,Ps(E,T,true),Ps(E,T,false))}return ce}if(!ja(r.operator))return ce;let a=r.operator==="!=="||r.operator==="!=",o=r.left,c=r.right,i=Os(o,c)??Os(c,o);if(i){let h=ue(n,i.name,t);if(!h)return ce;let g=Oa(h,i.tag),b=Ta(h,i.tag);return a?H(i.name,b,g):H(i.name,g,b)}let l=Ms(o),u=Ms(c),p=l?c:u?o:null,m=p?G(p):null;if((l||u)&&m!==null){let h=m,g=ue(n,h,t);if(!g)return ce;let E=r.operator==="=="||r.operator==="!="?["null","undefined"]:[l??u],T=se(g),re=Ke(T,v=>E.includes(v.t)),k=Ke(T,v=>!E.includes(v.t));return a?H(h,k,re):H(h,re,k)}let y=Ts(o,c)??Ts(c,o),f=Cs(o,c)??Cs(c,o);if(y||f){let h=ce;if(y){let g=ue(n,y.name,t);if(g){let b=Ca(g,y.lit,t),E=Da(g,y.lit,t);h=a?H(y.name,E,b):H(y.name,b,E);}}if(f){let g=ue(n,f.name,t);if(g){let b=Ds(g,f.prop,f.lit,true,t),E=Ds(g,f.prop,f.lit,false,t),T=a?H(f.name,E,b):H(f.name,b,E);h={then:{...h.then,...T.then},else:{...h.else,...T.else}};}}return h}return ce}if(e.type==="UnaryExpression"&&e.operator==="!"){let r=J(e.argument,n,t);return {then:r.else,else:r.then}}if(e.type==="CallExpression"){let r=Ia(e,n,t);if(r)return r}if(e.type==="LogicalExpression"){let r=e;if(r.operator==="&&"){let a=J(r.left,n,t),o=J(r.right,F(n,a.then),t);return {then:{...a.then,...o.then},else:Is(a.else,{...a.then,...o.else},n,t)}}if(r.operator==="||"){let a=J(r.left,n,t),o=J(r.right,F(n,a.else),t);return {then:Is(a.then,{...a.else,...o.then},n,t),else:{...a.else,...o.else}}}return ce}let s=G(e);if(s!==null){let r=ue(n,s,t);if(r)return H(s,js(r,le,t),js(r,Re,t))}return ce}function Is(e,n,t,s){let r={};for(let a of Object.keys(e)){let o=e[a],c=n[a]??ue(t,a,s);if(!c)continue;let i=ba$1([o,c]),l=ue(t,a,s);l&&_$1(i,l)||(r[a]=i);}return r}function Ma(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 Ia(e,n,t){let s=e.callee;if(s.type!=="Identifier")return null;let r=x(n,s.name);if(!r)return null;let a=Ma(r,e.arguments.length);if(!a)return null;let o=e.arguments[a.param],c=o?G(o):null;if(c===null)return null;let i=ue(n,c,t);return i?H(c,Aa(i,a.type,t),Ra(i,a.type,t)):null}var F=(e,n)=>Object.keys(n).length?Se(e,n):e;function Z(e){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(t=>Z(t));case "IfStatement":{let n=e;return !!n.alternate&&Z(n.consequent)&&Z(n.alternate)}case "TryStatement":{let n=e;if(n.finalizer&&Z(n.finalizer))return true;let t=!n.handler||Z(n.handler.body);return Z(n.block)&&t}default:return false}}var Ua=e=>{let n={};for(let t of Object.keys(e))n[t]={params:[],body:e[t]};return n};function xa(e){let n=[];return e.maxDepth!==void 0&&n.push(ot(e.maxDepth)),e.maxNodes!==void 0&&n.push(it(e.maxNodes)),e.maxArgs!==void 0&&n.push(ct(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(st(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(rt(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(at(e.memberDepth)),n}function Ka(e,n,t){let{min:s,max:r}=A$1(e.params);return n.length<s||n.length>r?true:Ct(e.params,n,t).length>0}function Ct(e,n,t){if(!e.some(a=>a.bound))return [];let s=B$1(e,n),r=[];return e.forEach((a,o)=>{if(!a.bound||o>=n.length)return;let c=x$1(a.bound,s);Y(n[o],c,t)||r.push({param:a,arg:n[o],expected:c});}),r}function Wa(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=n[r.name];if(!o){s.push($("unknown-name",a,`Cannot find name '${r.name}'.`));continue}let c=r.args;if(!c)continue;let{min:i,max:l}=A$1(o.params);if(c.length<i||c.length>l){s.push(S.genericTypeArity(a,r.name,i,l));continue}for(let u of Ct(o.params,c,n))s.push(S.constraintViolation(a,u.param.name,u.arg,u.expected));}return s}function sr(e$1,n,t={}){let s=Ja(e$1),r={...Ua(n.types),...n.schemes,...s.schemes},{schemes:a,diagnostics:o}=_a(s,r),{schemes:c,diagnostics:i$1}=za(s,a),l$1=ht(e$1),u={overlay:new WeakMap,sink:W(),env:n,schemes:c,importNames:new Set,resolvedSchemes:new Set,invalidTargets:l$1.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=qa(e$1,u);try{m=B(e$1,y,u);}catch(g){if(g instanceof h||g instanceof i)u.sink.report($("too-deep",e$1,g.message));else if(g instanceof k)u.sink.report($("too-complex-union",e$1,g.message));else throw g;m=l.unknown;}let f=[];p&&f.push(...En(p)),t.limits&&f.push(...xa(t.limits)),t.resultType&&f.push(lt(t.resultType,c));let h$1=[...o,...i$1,...u.sink.all,...l$1.diagnostics,...Wa(e$1,c),...t.unused?mt(e$1,t.unused):[],...f.length?et(e$1,f,{overlay:u.overlay,schemes:c}):[]];return {type:m,overlay:u.overlay,diagnostics:h$1,schemes:u.schemes}}finally{p&&f();}}function Ga(e,n,t={}){let s=sr(e,n,t),r={},a=new Map,o,c=l=>{let u=[];if(l.type==="VariableDeclaration")for(let p of l.declarations){let m=_(p.id),y=s.overlay.get(p);m&&y&&(r[m]=y.type,u.push(m));}else if(l.type==="FunctionDeclaration"){let p=l.id?.name,m=s.overlay.get(l);p&&m&&(r[p]=m.type,u.push(p));}return u};for(let l$1 of e.body??[])if(l$1.type==="VariableDeclaration"||l$1.type==="FunctionDeclaration")c(l$1);else if(l$1.type==="ExportNamedDeclaration"){let u=l$1;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$1.type==="ExportDefaultDeclaration"){let u=s.overlay.get(l$1.declaration);o=u?u.type:l.unknown;}let i={};if(a.size||o!==void 0){for(let[l,u]of a)r[u]&&(i[l]={type:r[u]});o!==void 0&&(i.default={type:o});}else for(let l in r)i[l]={type:r[l]};return {type:{t:"object",props:i},diagnostics:s.diagnostics}}function _a(e,n){let t=Bs(e.schemes,n),s=Object.fromEntries(Object.entries(e.schemes).filter(([i])=>!t.has(i))),r=ks(s,n),a=new Set([...t,...r.aliases]);if(!a.size&&!r.properties.size)return {schemes:n,diagnostics:[]};let o={...n};for(let i of a)o[i]={params:e.schemes[i].params,body:l.any};for(let[i,l]of r.properties){if(a.has(i))continue;let{params:u,body:p}=e.schemes[i];o[i]={params:u,body:Nt(p,l)};}let c=[];for(let i of t)c.push(S.circularTypeAlias(e.ids[i],i));for(let[i,l]of r.properties)for(let u of l)c.push(S.circularTypeAnnotation(e.props[i]?.[u]??e.ids[i],u));for(let i of r.aliases)c.push(S.circularTypeAlias(e.ids[i],i));return {schemes:o,diagnostics:c}}var rr=(e,n)=>e.t==="index"&&o(F$1(e,n));function Ks(e,n,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=a;if(rr(o,n)){let l$1=o;return s.push(S.noSuchMember(t,l$1.obj,ar(l$1.key))),l.any}let c=false,i={};for(let l of Object.keys(o)){let u=r(o[l]);u!==o[l]&&(c=true),i[l]=u;}return c?i:o};return r(e)}var ar=e=>e.t==="literal"?String(e.value):ha$1(e);function za(e,n){let t=[],s={...n},r=false;for(let a of Object.keys(e.schemes)){let o=n[a],c=e.ids[a];if(!o||!c)continue;let i=e.props[a],l=(p,m)=>{if(i&&(p.t==="union"||p.t==="intersection")){let y=p.of.map(f=>l(f,m));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=Ks(g.type,n,i[h]??m,t);b!==g.type&&(f=true),y[h]=b===g.type?g:{...g,type:b};}return f?{...p,props:y}:p}return Ks(p,n,m,t)},u=l(o.body,c);u!==o.body&&(s[a]={...o,body:u},r=true);}return {schemes:r?s:n,diagnostics:t}}var Ja=e=>{let n={},t={},s={};return walk(e,{TSTypeAliasDeclaration(r){let a=r;if(!(!a.id?.name||!a.typeAnnotation)&&(n[a.id.name]={params:jn(r)??[],body:a.typeAnnotation},t[a.id.name]=a.id,a.typeNode)){let o={};or(a.typeNode,o),s[a.id.name]=o;}}}),{schemes:n,ids:t,props:s}};function or(e,n){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])or(t,n);else if(e.type==="TSTypeLiteral")for(let t of e.members??[]){let s=t.key;t.type==="TSPropertySignature"&&typeof s=="string"&&!Object.prototype.hasOwnProperty.call(n,s)&&(n[s]=t);}}function qa(e,n){let t=n.env.modules,s={};walk(e,{ImportDeclaration(r){let a=r;if(a.importKind==="type")return;let o=a.source.value,c=typeof o=="string"?t?.[o]:void 0;if(!c){n.sink.report(S.unknownModule(a.source,String(o)));for(let i of a.specifiers)s[i.local.name]=l.unknown;return}for(let i of a.specifiers){if(i.importKind==="type")continue;let l$1=i.local.name;if(Ne(l$1,i.local,n),l$1 in s){n.sink.report(S.cannotRedeclare(i.local,l$1));continue}if(i.type==="ImportNamespaceSpecifier"){s[l$1]=c;continue}let u=i.type==="ImportSpecifier"?i.imported.name:"default",p=la$1(c,[u],n.schemes);p?s[l$1]=p.type:(n.sink.report(S.noSuchMember(i,c,u)),s[l$1]=l.unknown);}}});for(let r in s)n.importNames.add(r);return Object.keys(s).length?Se(n.env.scope,s):n.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 ur: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,Ae(e),n);case "Placeholder":return N(t,e,l.any,n);case "Identifier":{let r=e.name,a=Ar(r,t)??x(n,r);return a===void 0?r==="undefined"?N(t,e,l.undefined,n):(t.sink.report(S.unknownName(e,r)),N(t,e,l.any,n)):N(t,e,a,n)}case "MemberExpression":return N(t,e,ir(e,n,t),n);case "CallExpression":return N(t,e,ao(e,n,t,s),n);case "ArrowFunctionExpression":return Mt(e,n,t);case "FunctionDeclaration":return t.sink.report(S.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),N(t,e,l.unknown,n);case "FunctionExpression":return t.sink.report(S.unsupported(e,"anonymous function (use an arrow)")),N(t,e,l.unknown,n);case "ThisExpression":return t.sink.report(S.unsupported(e,"'this'")),N(t,e,l.unknown,n);case "BlockStatement":return N(t,e,wr(e,n,t),n);case "ReturnStatement":{let r=e.argument;return N(t,e,r?B(r,n,t):l.unknown,n)}case "IfStatement":return ne(e,n,t),t.overlay.get(e)?.type??l.unknown;case "ForStatement":case "WhileStatement":case "DoWhileStatement":case "ForOfStatement":case "ForInStatement":case "BreakStatement":case "ContinueStatement":case "ThrowStatement":case "TryStatement":case "SwitchStatement":return ne(e,n,t),t.overlay.get(e)?.type??l.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 un(a,y,n,t),N(t,e,y,n)}let o=r.operator!=="=",c=o?Qs(a,n,t):Rr(a,n,t);if(a.type==="MemberExpression"){let y=t.overlay.get(a.object)?.type,f=y&&E(y,t.schemes);f&&(f.t==="array"||f.t==="tuple")&&f.readonly&&t.sink.report(S.readonlyWrite(a,f));}let i=G(a),l=t.invalidTargets.has(a);if(!o){let y=i!==null&&t.evolving.has(i),f=r.right,h=y||l?B(f,n,t):q(f,c,n,t,true),g=ie(f)?N(t,f,Ae(f),n):h;return i!==null&&$n(i,n,t)?te(i,Ln(i,false,g,c,n,t),t):i!==null&&ee(i)&&te(i,c,t),N(t,e,g,n)}let u=t.sink.all.length,p=Ao(r,c,n,t),m=t.sink.all.length>u;return !l&&!m&&!Y(p,c,t.schemes)&&t.sink.report(S.notAssignable(e,p,c,t.schemes)),i!==null&&$n(i,n,t)?te(i,Ln(i,true,p,c,n,t),t):i!==null&&ee(i)&&te(i,I(c),t),N(t,e,p,n)}case "UpdateExpression":{let a=e.argument,o=Qs(a,n,t);!de(o,a,t)&&!pn(o,t.schemes)&&t.sink.report(S.arithmeticOperand(a,"operand"));let c=G(a);return c!==null&&$n(c,n,t)?te(c,Ln(c,true,o,o,n,t),t):c!==null&&ee(c)&&te(c,I(o),t),N(t,e,l.number,n)}case "ExpressionStatement":return N(t,e,B(e.expression,n,t),n);case "VariableDeclaration":return xn(e,n,t),N(t,e,l.unknown,n);case "TSTypeAliasDeclaration":{let r=e.id?.name,a=r?t.schemes[r]:void 0;return N(t,e,a?mo(a.body,n,t,e,a.params.length>0):l.unknown,n)}case "BinaryExpression":return N(t,e,Do(e,n,t),n);case "LogicalExpression":{let r=e,a=B(r.left,n,t),o=r.operator==="??"?void 0:J(r.left,n,t.schemes),c=F(n,o?r.operator==="&&"?o.then:o.else:{}),{value:i,effect:l}=At(t,()=>B(r.right,c,t));return l.size&&Ys([{effect:l,scope:c},{scope:F(n,o?r.operator==="&&"?o.else:o.then:{})}],t),N(t,e,jo(r.operator,a,i,t.schemes),n)}case "UnaryExpression":return N(t,e,Io(e,n,t),n);case "ConditionalExpression":{let r=e;B(r.test,n,t);let a=J(r.test,n,t.schemes),o=F(n,a.then),c=F(n,a.else),i=At(t,()=>B(r.consequent,o,t)),l=At(t,()=>B(r.alternate,c,t));return (i.effect.size||l.effect.size)&&Ys([{effect:i.effect,scope:o},{effect:l.effect,scope:c}],t),N(t,e,ba$1([i.value,l.value]),n)}case "ObjectExpression":return N(t,e,Fo(e,n,t),n);case "ArrayExpression":return N(t,e,Fr(e,n,t),n);case "TemplateLiteral":{if(an(e)!==null)return N(t,e,Ae(e),n);for(let r of e.expressions){let a=B(r,n,t);Ir(a,t.schemes)||t.sink.report(S.notTextConvertible(r,a));}return N(t,e,l.string,n)}case "AwaitExpression":{let r=e.argument,a=r?B(r,n,t):l.unknown;return N(t,e,on(a),n)}case "Program":{let r=Un(e.body,n,t,new Set(t.importNames)).scope;return N(t,e,l.unknown,r)}case "JsonExpression":return N(t,e,Tt(e.body,n,t,e),n);case "ChainExpression":{let r=e.expression,a=B(r,n,t);return N(t,e,Qa(r,t)?ba$1([a,l.undefined]):a,n)}case "TSAsExpression":{let r=e,a=B(r.expression,n,t),o=_e(r.typeAnnotation,n,t,e);return Xe(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,l.unknown,n)}}var Xa=new Set(["constructor","prototype","__proto__"]);function Ya(e){if(!e.computed)return e.property.type==="Identifier"?e.property.name:null;let n=e.property;if(n.type==="Literal"){let t=n.value;if(typeof t=="string")return t}return null}function ir(e,n,t,s=false){let r=B(e.object,n,t),a=Ya(e);if(a!==null&&Xa.has(a))return t.sink.report(S.forbiddenMember(e,a)),l.unknown;let o=Za(e,r,n,t),c=s?null:G(e);if(c!==null&&ee(c)){let i=Ar(c,t)??x(n,c);if(i!==void 0&&Y(i,o,t.schemes))return i}return o}function Qa(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 Ha=e=>e.t==="unknown";function de(e,n,t){return Ha(e)?(t.sink.report(S.unknownValue(n)),true):false}function Ge(e){let n=Vn(e),t=n.some(r=>r.t==="null"),s=n.some(r=>r.t==="undefined");return t||s?{null:t,undefined:s}:null}function Dt(e){let n=Vn(e).filter(t=>t.t!=="null"&&t.t!=="undefined");return n.length===Vn(e).length||n.length===0?e:ba$1(n)}var cr=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(cr);function Za(e,n,t,s){if(!e.optional&&de(n,e.object,s))return N(s,e,l.any,t);let r=e.optional?null:Ge(n);r&&s.sink.report(S.possiblyNullish(e.object,r)),e.optional&&Ge(n)&&s.shortCircuits.add(e);let a=e.optional||r?Dt(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=la$1(a,[u],s.schemes);return p?p.type:(Ws(e,a,u,s),l.any)}let l$1=m(l.index(a,i));return l$1.t!=="index"||cr(i)?l$1:l.unknown}let o=e.property.name,c=la$1(a,[o],s.schemes);return c?c.type:(Ws(e,a,o,s),l.any)}function Ws(e,n,t,s){let r=C(n,s.schemes)?D$1(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 eo(e,n,t,s){let r=e.arguments[0];if(!r){s.sink.report(S.missingArgument(e,"schema",l.unknown));return}if(r.type!=="Identifier"){s.sink.report(S.asserterNeedsName(r,n));return}let a=r.name,o=x(t,a),c=s.schemes[a];if(o===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(!(lr(a,s)&&!no(t,a)))return s.overlay.set(r,{type:c.body,scope:t}),c.body}function lr(e,n){if(!n.env.asserters?.size)return false;let t=n.schemes[e];return t!==void 0&&t.params.length===0&&x(n.env.scope,e)!==void 0}function no(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 Ne(e,n,t){lr(e,t)&&t.sink.report(S.shadowsSchema(n,e));}function Pt(e,n){let t=z(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function to(e,n){let t=x(e.scope,n);if(!t)return;let s=Pt(t,e.schemes);return s?z(s,e.schemes):void 0}function so(e,n,t,s){let r=Pt(B(n[0],t,s),s.schemes),a=n.length>1?B(n[1],t,s):l.undefined;if(r){let o=X(a,r,s.schemes);o.length&&s.sink.report(S.propsMismatch(n[1]??e,r,ja$1(o)));}return N(s,e,l.boolean,t)}var ur="TSLiteSyntheticArg",ro=e=>({type:ur,schema:e});function pr(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(ro(i));else r={elem:It(c,o,t),node:a};}return {nodes:s,spread:r}}function ao(e,n,t,s){let r=t.inference?{...t,inference:void 0}:t,a=e.arguments,o=kt(e.callee);if(o){let f=r.env.accessors?.[o];if(f){let h=Es(a);if(h){let g=la$1(f,h,r.schemes);return g?g.type:(r.sink.report(S.noSuchMember(e,f,h.join("."))),l.unknown)}return a.forEach(g=>B(g,n,r)),l.unknown}}if(o&&r.env.asserters?.has(o)){let f=eo(e,o,n,r);a.length<2&&a.length>0&&r.sink.report(S.missingArgument(e,"value",l.unknown));for(let h=1;h<a.length;h++){let g=B(a[h],n,r);h===1&&f&&z$1(g).size===0&&!Xe(g,f,r.schemes)&&r.sink.report(S.unprovableValue(a[h],g,f,e.arguments[0].name));}return f??l.unknown}if(o&&r.env.matchers?.has(o))return so(e,a,n,r);e.callee.type==="ArrowFunctionExpression"&&r.invoked.add(e.callee);let c=E(B(e.callee,n,r),r.schemes);if(!e.optional&&de(c,e.callee,r))return N(r,e,l.any,n);let i=Ge(c);i&&(e.optional?r.shortCircuits.add(e):r.sink.report(S.possiblyNullish(e.callee,i,true)));let l$1=i?E(Dt(c),r.schemes):c;if(l$1.t==="any")return a.forEach(f=>B(f,n,r)),l.any;if(l$1.t==="overload")return co(e,l$1,n,r,s);if(l$1.t!=="fn")return a.forEach(f=>B(f,n,r)),r.sink.report(S.notCallable(e,l$1)),l.unknown;let u=pr(a,n,r),p=u.nodes.map(f=>dr(f,n,r)),m=fr(e),y=!m||mr(l$1,m.length);return y||r.sink.report(yr(e,[l$1],m.length)),fn(e,l$1,u.nodes,p,n,r,u.spread,s,y?m:void 0)}function dr(e,n,t){if(wt(e))return l.any;if(e.type!=="CallExpression")return B(e,n,t);let s=W(),r=B(e,n,{...t,sink:s});return s.hasErrors()?l.any:(s.all.forEach(a=>t.sink.report(a)),r)}function fn(e,n,t,s,r,a,o=null,c,i){let l$1=k=>{if(!c)return k;let v=x$1(n.returns,k);if(v.t==="fn"&&c.t==="fn"){let R=k,U=Math.min(v.params.length,c.params.length);for(let X=0;X<U;X++)R=T(v.params[X].type,c.params[X].type,R)??R;return T(v.returns,c.returns,R)??R}return T(v,c,k)??k};if(!o){let k=gr(e,n,s.length,t);k&&(a.sink.report(k),a={...a,sink:W()});}let u=i?ho(e,n,i,a):void 0,p=u??Fn(n,l$1(V$1(n,s).bindings)),m=u||!c?{}:Fn(n,l$1({})),y={returnMapper:m,nonFixing:p,outer:Gs(n,p)},f=new Set((n.typeParams??[]).map(k=>k.name)),h=k=>[...z$1(k)].some(v=>f.has(v)),g=new Set,b=[];t.forEach((k,v)=>{if(wt(k)){let R=n.params[v]?.type??l.any,U=J$1(x$1(R,oo(n,R,p,a.schemes)));s[v]=Mt(k,r,a,U);}else if(k.type==="CallExpression"&&s[v].t==="any")s[v]=B(k,r,a,x$1(n.params[v]?.type??l.unknown,Gs(n,p)));else if(ie(k)){let R=n.params[v]?.type??l.unknown,U=be(k);xe(x$1(R,m),U)&&(s[v]=N(a,k,U,r));}else if(k.type==="ArrayExpression"||k.type==="ObjectExpression"||k.type==="ConditionalExpression"){let R=n.params[v]?.type??l.unknown,U=x$1(R,m);if(k.type==="ArrayExpression"&&rn(U)){s[v]=Ft(k,U,r,{...a,inference:y}),b.push(v);return}if(R.t==="var"&&!R.bound||!Lr(U,a.schemes))return;g.add(v),h(R)&&(s[v]=q(k,R,r,{...a,sink:W(),inference:y},true)),b.push(v);}});let E=u||Rt(n,Fn(n,l$1(V$1(n,s).bindings)),a.schemes);u&&io(e,n,E,a);for(let k of b)s[k]=Lo(t[k],x$1(n.params[k].type,E),r,a,false);bo(e,n,s,E,a,t,o),t.forEach((k,v)=>{let R=n.params[v];k.type==="ObjectExpression"&&R&&!R.variadic&&!g.has(v)&&Ot(k,x$1(R.type,E),a);});let T$1=x$1(n.returns,Rt(n,E,a.schemes)),re=T$1.t==="union"?ba$1(T$1.of):T$1;return K(W$1(re,a.schemes,void 0,0,z$1(re)))}function Fn(e,n){let t=e.typeParams;if(!t?.length)return {};let s={};for(let r of t)n[r.name]&&(s[r.name]=n[r.name]);return s}var Rt=(e,n,t)=>R(e.typeParams??[],n,t);function oo(e,n,t,s){if(n.t!=="fn"||!e.typeParams?.some(c=>!t[c.name]))return t;let r=new Set;for(let c of n.params)for(let i of z$1(c.type))r.add(i);let a=Rt(e,t,s),o={...t};for(let c of e.typeParams)!t[c.name]&&r.has(c.name)&&(o[c.name]=a[c.name]);return o}function Gs(e,n){if(!e.typeParams?.some(s=>!n[s.name]))return n;let t={...n};for(let s of e.typeParams)n[s.name]||(t[s.name]=M);return t}function io(e,n,t,s){for(let r of n.typeParams??[]){let a=t[r.name];if(!r.bound||!a)continue;let o=x$1(r.bound,t);Y(a,o,s.schemes)||s.sink.report(S.constraintViolation(e,r.name,a,o));}}function co(e,n,t,s,r){let a=pr(e.arguments,t,s),o=a.nodes,c=o.map(u=>dr(u,t,s)),i=fr(e),l=i?n.signatures.filter(u=>mr(u,i.length)):n.signatures;return i&&!l.length?(s.sink.report(yr(e,n.signatures,i.length)),zs(e,n.signatures,a,o,c,t,s,r,void 0)):zs(e,l,a,o,c,t,s,r,i)}function lo(e,n,t,s,r,a,o){if(!n.length)return e;let i=n.map(p=>{let m=W();return fn(e,p,t,[...s],r,{...a,sink:m},o),m.all}).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 _s(e,n,t,s,r,a){return n.length?!n.some(c=>c.typeParams?.length)&&n.length>1?l.intersection(n.map(c=>c.returns)):fn(e,uo(n,t.length),t,[...s],r,{...a,sink:W()},null):l.unknown}function uo(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 zs(e,n,t,s,r,a,o,c,i){let l={t:"overload",signatures:n},u=g=>t.spread?go(g,s.length):hr(g,s.length),p=l.signatures.filter(u);if(p.length>1)for(let g of p){let b=W(),E=fn(e,g,s,[...r],a,{...o,sink:b},t.spread,c,i);if(!b.all.some(T=>T.kind==="type"&&T.severity==="error"))return b.all.forEach(T=>o.sink.report(T)),E}let m=p.length>1?void 0:l.signatures.find(g=>u(g)&&So(g,r,o));if(m||(p.length===1?m=p[0]:l.signatures.length===1&&(m=l.signatures[0])),!m){let g=t.spread?null:gr(e,l.signatures,s.length,s);return o.sink.report(g??S.noMatchingOverload(lo(e,p,s,r,a,o,t.spread),l,r)),_s(e,l.signatures,s,r,a,o)}let y=o.sink.all.length,f=fn(e,m,s,r,a,o,t.spread,c,i),h=o.sink.all.slice(y).some(g=>g.kind==="type"&&g.severity==="error");return l.signatures.length>1&&h?_s(e,l.signatures,s,r,a,o):f}function po(e,n,t,s){let r=x(n,e[0]);if(r===void 0)return t.sink.report(S.unknownName(s,e[0])),l.unknown;let a=e.slice(1),o=a.length?la$1(r,a,t.schemes)?.type:r;return o?o.t==="literal"?l.literal(o.value):o:(t.sink.report(S.noSuchMember(s,r,a.join("."))),l.unknown)}function _e(e,n,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=a;if(o.t==="typeQuery")return po(o.path,n,t,s);if(o.t==="apply"&&typeof o.name=="string"){fo(o.name,n,t,s);let l$1=t.schemes[o.name];if(!l$1)return l.any;if(Array.isArray(o.args)&&Ka(l$1,o.args,t.schemes))return l.any}if(rr(o,t.schemes)){let l$1=o;return t.sink.report(S.noSuchMember(s,l$1.obj,ar(l$1.key))),l.any}if(o.t==="union"&&Array.isArray(o.of)){let l$1=o.of,u=l$1.map(y=>r(y)),p=u.every((y,f)=>y===l$1[f]),m=l.union(u);return m.t!=="union"?m:p?o:m}if(o.t==="intersection"&&Array.isArray(o.of)){let l$1=o.of,u=l$1.map(y=>r(y)),p=l.intersection(u);return p.t==="intersection"&&p.of.length===l$1.length&&p.of.every((y,f)=>y===l$1[f])?o:p}if(o.t==="tuple"&&Array.isArray(o.elements)){let l$1=o.elements,u=l$1.map(y=>r(y)),p=l.tuple(u,o.flags,o.readonly);return u.every((y,f)=>y===l$1[f])&&p.elements.every((y,f)=>y===u[f])?o:p}let c=false,i={};for(let l of Object.keys(o)){let u=r(o[l]);u!==o[l]&&(c=true),i[l]=u;}return c?i:o};return r(e)}function fo(e,n,t,s){if(t.resolvedSchemes.has(e))return;let r=t.schemes[e];if(!r)return;t.resolvedSchemes.add(e);let a=_e(r.body,n,t,s);a!==r.body&&(t.schemes[e]={...r,body:a});}function mo(e,n,t,s,r){let a={...t,sink:W(),resolvedSchemes:new Set(Object.keys(t.schemes))},o=_e(e,n,a,s);return a.sink.hasErrors()?e:r?o:W$1(o,t.schemes)}var dn=(e,n,t)=>{let s=Pn(e);return s===void 0?s:_e(s,n,t,e)},yo=(e,n,t)=>{let s=Bt(e);return s===void 0?s:_e(s,n,t,e)},fr=e=>{let n=e.typeArguments;return n?.length?n:void 0},mr=(e,n)=>{let{min:t,max:s}=A$1(e.typeParams??[]);return n>=t&&n<=s};function yr(e,n,t){if(n.length===1){let{min:a,max:o}=A$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}=A$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 ho(e,n,t,s){let r=n.typeParams??[],a=B$1(r,t.slice(0,r.length));for(let o of Ct(r,t,s.schemes))s.sink.report(S.constraintViolation(e,o.param.name,o.arg,o.expected));return a}function go(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 hr(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 gr(e,n,t,s){let r=Array.isArray(n)?n:[n];if(!r.length||r.some(l=>hr(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 So(e,n,t){let s=Fn(e,V$1(e,n).bindings);for(let r=0;r<e.params.length;r++){let a=e.params[r];if(a.variadic){let o=x$1(a.type,s),c=o.t==="array"?o.items:l.unknown;for(let i=r;i<n.length;i++)if(!Y(n[i],c,t.schemes))return false;return true}if(r>=n.length){if(!a.optional)return false;continue}if(!Y(n[r],x$1(a.type,s),t.schemes))return false}return true}function bo(e,n,t,s,r,a=e.arguments??[],o=null){let c=l=>a[l]??e;for(let l$1=0;l$1<n.params.length;l$1++){let u=n.params[l$1];if(u.variadic){let m=x$1(u.type,s),y=m.t==="array"?m.items:l.unknown;for(let f=l$1;f<t.length;f++)Y(t[f],y,r.schemes)||r.sink.report(S.notAssignable(c(f),t[f],y,r.schemes));break}let p=x$1(u.type,s);l$1>=t.length||Y(t[l$1],p,r.schemes)||r.sink.report(S.notAssignable(c(l$1),t[l$1],p,r.schemes));}let i=n.params.find(l=>l.variadic);if(o){let l$1=t.length,u=n.params.filter(p=>!p.optional&&!p.variadic).length;if(!(l$1>=u&&(i||l$1<n.params.length))){r.sink.report(S.spreadArgument(o.node));return}if(i){let p=x$1(i.type,s),m=p.t==="array"?p.items:l.unknown;Y(o.elem,m,r.schemes)||r.sink.report(S.notAssignable(o.node,o.elem,m,r.schemes));}return}}function mn(e,n,t){if(e.t==="object"){let s=r(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=>mn(E(r,t),n,t)).filter(r=>r!==void 0);return s.length===0?void 0:s.length===1?s[0]:m({t:"intersection",of:s})}if(e.t==="union")return Sr(e.of,n,t)}function Sr(e,n,t){let s=e.map(r=>mn(E(r,t),n,t)).filter(r=>r!==void 0);return s.length?ba$1(s):void 0}var jt=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(jt),Js=new WeakMap;function No(e,n,t){let s=Js.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=>mn(u,o,n)).filter(u=>u!==void 0);if(!i.some(jt))continue;i.length===e.length&&i.every(u=>_$1(u,i[0]))||a.add(o);}return Js.set(t,a),a}var br=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&br(e.object),Bo=(e,n)=>e.some(t=>t.t==="object"&&r(t.props,n)?.optional===true);function Nr(e,n,t,s,r){let a=No(n,s,r),o=new Set;if(!a.size)return {chosen:n,ignored:o};let c=[],i=new Set;for(let p of e.properties){if(p.type!=="Property")continue;let m=p,y=Ee(m);if(y===null||(i.add(y),!a.has(y)||!br(m.value)))continue;let f=t(m);f&&jt(f)&&c.push([y,f]);}for(let p of a)!i.has(p)&&Bo(n,p)&&c.push([p,l.undefined]);let l$1=n.map(()=>1);for(let[p,m]of c){let y=false;n.forEach((f,h)=>{if(l$1[h]!==1)return;let g=mn(f,p,s);g!==void 0&&(Y(m,g,s)?y=true:l$1[h]=2);}),n.forEach((f,h)=>{l$1[h]===2&&(l$1[h]=y?0:1);}),y||o.add(p);}let u=n.filter((p,m)=>l$1[m]===1);return {chosen:u.length?u:n,ignored:o}}function qs(e,n,t,s,r,a=false){let o={},c={};for(let i of e.properties){let l=i;if(l.type==="SpreadElement"){let f=E(B(l.argument,t,s),s.schemes);if(f.t==="object")for(let[h,g]of Object.entries(f.props))o[h]=g,c[h]=g;continue}let u=l,p=Ee(u),m=p!==null?n(p):void 0,y=m?q(u.value,m,t,s,r):G$1(B(u.value,t,s));p!==null&&(o[p]={type:a?y:m??y},c[p]={type:y}),N(s,l,y,t);}return {checked:o,narrowed:c}}function q(e,n,t,s,r=false){let a=s.inference,o=a?x$1(n,a.returnMapper):n,c=u=>a?x$1(u,a.nonFixing):u,i=E(o,s.schemes);switch(i.t==="conditional"&&(i=$$1(i,s.schemes)??i),ie(e)?"Literal":e.type){case "Literal":{let u=be(e);return Y(u,n,s.schemes)||s.sink.report(S.notAssignable(e,u,n,s.schemes)),N(s,e,Ae(e),t),r?xe(o,u)?u:G$1(Ae(e)):n}case "ArrayExpression":{if(rn(i)){let u=Ft(e,i,t,s);return Y(u,n,s.schemes)||$o(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=q(y.argument,n,t,s,r);f.t==="array"&&u.push(f.items);}else u.push(q(y,i.items,t,s,r));}let p=r&&u.length>0?l.array(ba$1(u)):c(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}=qs(e,g=>mn(i,g,s.schemes),t,s,r),y=s.sink.all.slice(u).some(g=>g.kind==="type"&&g.severity==="error"),f=Ot(e,n,s),h={t:"object",props:p};return !f&&!y&&!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(T=>T.t==="object"||T.t==="intersection");if(!u.length)break;let p=e,{chosen:m,ignored:y}=Nr(p,u,T=>B(T.value,t,{...s,sink:W()}),s.schemes,n),f=s.sink.all.length,{checked:h,narrowed:g}=qs(p,T=>Sr(y.has(T)?u:m,T,s.schemes),t,s,r,true),b=Ot(p,n,s),E={t:"object",props:h};return !b&&s.sink.all.length===f&&!Y(E,n,s.schemes)&&s.sink.report(S.notAssignable(e,E,n,s.schemes)),N(s,e,r?{t:"object",props:g}:n,t)}break}case "ArrowFunctionExpression":{let u=a?E(x$1(n,a.nonFixing),s.schemes):i;if(u.t==="fn"){let p=Mt(e,t,s,u);return Y(p,n,s.schemes)||s.sink.report(S.notAssignable(e,p,n,s.schemes)),N(s,e,c(n),t)}break}case "ConditionalExpression":{let u=e;B(u.test,t,s);let p=J(u.test,t,s.schemes),m=q(u.consequent,n,F(t,p.then),s,r),y=q(u.alternate,n,F(t,p.else),s,r);return N(s,e,r?ba$1([m,y]):n,t)}case "Placeholder":return N(s,e,c(n),t)}let l$1=B(e,t,s,a?x$1(n,a.outer):n);return Y(l$1,n,s.schemes)||s.sink.report(S.notAssignable(e,l$1,n,s.schemes)),N(s,e,l$1,t)}var ko=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return Pn(n)!==void 0};function Mt(e,n,t,s){let r=!e.async&&t.invoked.has(e),a=t.flow.size?new Map(t.flow):null,o=a?F(n,Object.fromEntries(a)):n;a&&t.flow.clear();let c=t.shadowed;r&&(t.shadowed=new Set);try{return vo(e,o,t,s)}finally{let i=r?wo(e,o,t):null,l=t.shadowed;if(t.shadowed=c,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,ee(u)?u.indexOf("."):u.length);!l?.has(m)&&Te(n,u,t.schemes)!==void 0&&te(u,p,t);}}}function wo(e,n,t){let s=e.body;return s.type!=="BlockStatement"?new Map(t.flow):fe(s,n,t).types}function vo(e,n,t,s){let r=s&&s.t==="fn"?s:void 0,a=r?.typeParams?.length&&e.params.some(k=>!ko(k))?r.typeParams:void 0,o=jn(e)??a,c=k=>o?{...k,typeParams:o}:k,i={},l$1=e.params.map((k,v)=>{let R=k,U=r?.params[v]?.type;if(R.type==="RestElement"){let ye=R.argument,Y=dn(ye,n,t)??(r?.params[v]?.variadic?U:void 0)??l.array(l.unknown),he=_(ye);return he?(Ne(he,ye,t),i[he]=Y):pe(ye,Y,i,n,t),t.overlay.set(ye,{type:Y,scope:n}),t.overlay.set(R,{type:Y,scope:n}),{name:he??`arg${v}`,type:Y,variadic:true}}if(R.type==="AssignmentPattern"){let ye=R.left,Wn=dn(ye,n,t)??U;pe(R,Wn??l.unknown,i,n,t);let Y=_(ye),he=Y?i[Y]:void 0,Gn=Wn??he??l.unknown,xt=Gn.t==="unknown"?Gn:ba$1([Gn,l.undefined]);return Y&&he&&(i[Oe(Y)]=he),t.overlay.set(R,{type:xt,scope:n}),{name:Y??`arg${v}`,type:xt,optional:true}}let X=_(R),Vt=dn(R,n,t),ze=Vt??U??l.any,Ut=R.type==="Identifier"&&(!!R.optional||Vt===void 0&&!!r?.params[v]?.optional),yn=Ut&&ze.t!=="unknown"?ba$1([ze,l.undefined]):ze;return X?(Ne(X,R,t),i[X]=yn,i[Oe(X)]=yn):R.type!=="Identifier"&&pe(R,ze,i,n,t),t.overlay.set(R,{type:yn,scope:n}),Ut?{name:X??`arg${v}`,type:yn,optional:true}:{name:X??`arg${v}`,type:ze}}),u=false;l$1.forEach((k,v)=>{k.optional?u=true:!k.variadic&&u&&t.sink.report(S.requiredAfterOptional(e.params[v]));});let p=je(n,i,t),m=e.body,y=yo(e,n,t),f=e.returnGuard,h=f?{param:f.param,type:_e(f.type,n,t,e)}:void 0;if(h){let k=l$1[h.param];k&&!Y(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.type!=="BlockStatement"&&y){let k=e.async?on(y):y;q(m,k,p,t);let v=e.async?cn(y):y;return N(t,e,g(c({t:"fn",params:l$1,returns:v})),n)}let b=y??r?.returns,E=b&&e.async?on(b):b,T=m.type==="BlockStatement"?N(t,m,wr(m,p,t,new Set(Object.keys(i).filter(k=>!vt(k))),E),p):B(m,p,t),re=e.async?cn(T):T;if(y){let k=e.async?on(y):y,v=e.async?T:re;Y(v,k,t.schemes)||t.sink.report(S.notAssignable(m,re,y,t.schemes));let R=e.async?cn(y):y;return N(t,e,g(c({t:"fn",params:l$1,returns:R})),n)}return N(t,e,c({t:"fn",params:l$1,returns:L$1(J$1(re))}),n)}function We(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?We(n.argument):We(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?We(n.argument):We(n):[]);case "AssignmentPattern":return We(e.left);default:return []}}function Br(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>We(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?Br(e.declaration):[]}var kr=Object.freeze({t:"undefined"}),Xs=e=>e===kr;function wr(e,n,t,s=new Set,r){let{returns:a}=Un(e.body,n,t,s,r),o=!Z(e)||a.some(Xs),c=a.filter(i=>!Xs(i));return c.length===0?o?l.void:l.union([]):ba$1(o?[...c,l.undefined]:c)}var Eo=[l.literal(true),l.literal(false)];function Vn(e){return e.t==="union"?e.of:e.t==="boolean"?Eo:[e]}function vr(e,n,t){let s=Vn(e);if(s.length<=1)return e;let r=s.filter(o=>Y(n,o,t));if(r.length===0)return e;let a=ba$1(r);return Y(n,a,t)?a:e}var Er=(e,n)=>ee(e)?void 0:x(n,Oe(e)),$n=(e,n,t)=>!ee(e)&&(t.evolving.has(e)||x(n,Oe(e))!==void 0);function Ln(e,n,t,s,r,a){if(n)return I(s);if(a.evolving.has(e))return H$1(t);let o=Er(e,r);return o===void 0?t:o.t==="union"||o.t==="boolean"?vr(o,t,a.schemes):o}function te(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 Ar=(e,n)=>n.flow.size?n.flow.get(e):void 0;function At(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 Ys(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)??Te(a.scope,s,n.schemes);o!==void 0&&r.push(o);}r.length&&te(s,ba$1(r),n);}}function Rr(e,n,t){if(e.type==="MemberExpression")return N(t,e,ir(e,n,t,true),n);if(e.type==="Identifier"){let s=Er(e.name,n);if(s!==void 0)return N(t,e,s,n)}return B(e,n,t)}function Qs(e,n,t){let s=B(e,n,t),r=I(s);return r===s?s:N(t,e,r,n)}function un(e,n,t,s){switch(e.type){case "ArrayExpression":{e.elements.forEach((r,a)=>{if(!r)return;let o=r;o.type==="SpreadElement"?un(o.argument,jr(n,a),t,s):un(o,Dr(n,a),t,s);});return}case "ObjectExpression":{let r=[];for(let a of e.properties){let o=a;if(o.type==="SpreadElement"){un(o.argument,Pr(n,r),t,s);continue}let c=Ee(o);c!=null&&r.push(c),un(o.value,c!=null?Cr(n,c,s):l.unknown,t,s);}return}default:{let r=Rr(e,t,s);!s.invalidTargets.has(e)&&!(e.type==="Identifier"&&s.evolving.has(e.name))&&!Y(n,r,s.schemes)&&s.sink.report(S.notAssignable(e,n,r,s.schemes));let a=G(e);a!==null&&$n(a,t,s)?te(a,Ln(a,false,n,r,t,s),s):a!==null&&ee(a)&&te(a,r,s);}}}function Ao(e,n,t,s){let r=e.right,a=B(r,t,s);return Mr(e.operator.slice(0,-1),n,a,e,e.left,r,s)}var Pe=new Map;function fe(e,n,t){switch(e.type){case "BlockStatement":{let s=Pe,r=n;for(let a of e.body){let o=fe(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=F(r,Object.fromEntries(o.types));}if(o.exits)return {types:s,exits:true}}return {types:s,exits:false}}case "IfStatement":return {types:Tr(e,n,t),exits:Z(e)};case "ReturnStatement":case "ThrowStatement":return {types:Pe,exits:true};case "TryStatement":{let s=e,r=[],a=fe(s.block,n,t);if(a.exits||r.push(a),s.handler){let c=fe(s.handler.body,n,t);c.exits||r.push(c);}let o=Or(r,n,t);if(s.finalizer){let c=o.size?F(n,Object.fromEntries(o)):n,i=fe(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:Z(e)}}default:return {types:t.stmtFlow.get(e)??Pe,exits:false}}}function Or(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 Pe;let r=new Map;for(let a of s){let o=Te(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,ba$1(c));}return r}function Tr(e,n,t){let s=fe(e.consequent,n,t),r=e.alternate?fe(e.alternate,n,t):{types:Pe,exits:false};if(!s.types.size&&!r.types.size)return Pe;let a=[s,r].filter(o=>!o.exits);return a.length?Or(a,n,t):Pe}var Ro=5;function Hs(e,n,t,s){let r=new Map(t.flow),a=new Map,o=n,c=null;for(let l=0;l<Ro;l++){let u=W(),p={...t,sink:u},m=s(o,p),y=new Map(fe(e,o,p).types);for(let[h,g]of t.flow)r.get(h)!==g&&y.set(h,g);if(Zs(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=Te(o,h,t.schemes);if(b===void 0||g===b)continue;let E=ba$1([b,g]);_$1(E,b)||(f[h]=E,a.set(h,E));}if(!Object.keys(f).length){for(let h of u.all)t.sink.report(h);c=m;break}o=F(o,f);}let i=c??s(o,t);Zs(r,t);for(let[l,u]of a)te(l,u,t);return {returns:i,head:o}}function Zs(e,n){n.flow.clear();for(let[t,s]of e)n.flow.set(t,s);}function Oo(e,n,t){let s=fe(e,n,t);return s.exits||!s.types.size?n:F(n,Object.fromEntries(s.types))}function Un(e,n,t,s=new Set,r){if(!To(e))return er(e,n,t,s,r);let a=new Set(t.evolving);try{return er(e,n,t,s,r)}finally{t.evolving.clear();for(let o of a)t.evolving.add(o);}}function To(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 er(e,n,t,s,r){let a=n,o=[];for(let c of e){let i=c;for(let l of Br(i))s.has(l.name)?t.sink.report(S.cannotRedeclare(l,l.name)):s.add(l.name);if(i.type==="VariableDeclaration")a=xn(i,a,t);else if(i.type!=="ImportDeclaration")if(i.type==="ExportNamedDeclaration"){let l=i;if(l.declaration?.type==="VariableDeclaration")a=xn(l.declaration,a,t);else if(l.declaration?.type==="FunctionDeclaration"){let u=B(l.declaration,a,t),p=_(l.declaration.id);p&&(a=je(a,{[p]:u},t));}else for(let u of l.specifiers)x(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=_(i.id);u&&(a=je(a,{[u]:l},t));}else if(i.type==="IfStatement"){let l=i;o.push(...ne(i,a,t,r));let u=Tr(l,a,t);u.size&&(a=F(a,Object.fromEntries(u))),!l.alternate&&Z(l.consequent)&&(a=F(a,J(l.test,a,t.schemes).else));}else o.push(...ne(i,a,t,r)),(i.type==="BlockStatement"||i.type==="TryStatement")&&(a=Oo(i,a,t));a=Co(i,a,t);}return {scope:a,returns:o}}function Co(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=F(n,Object.fromEntries(s));for(let a of s.keys())ee(a)||(r=Et(r,a,t.schemes));return r}function ne(e,n,t,s){switch(e.type){case "ReturnStatement":{let r=e.argument,a=r?s?(q(r,s,n,t),s):B(r,n,t):kr;return N(t,e,r?a:l.undefined,n),[a]}case "IfStatement":{let r=e;B(r.test,n,t);let a=J(r.test,n,t.schemes),o=ne(r.consequent,F(n,a.then),t,s);return r.alternate&&o.push(...ne(r.alternate,F(n,a.else),t,s)),N(t,e,l.unknown,n),o}case "BlockStatement":{let{returns:r}=Un(e.body,n,t,void 0,s);return N(t,e,r.length?ba$1(r):l.void,n),r}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let r=e,a=n;r.init&&(r.init.type==="VariableDeclaration"?a=xn(r.init,a,t):B(r.init,a,t));let{returns:o}=Hs(r.body,a,t,(c,i)=>(r.test&&B(r.test,c,i),r.update&&B(r.update,c,i),ne(r.body,c,i,s)));return N(t,e,l.unknown,n),o}case "ForOfStatement":case "ForInStatement":{let r=e,a=B(r.right,n,t),o=de(a,r.right,t)?null:Ge(a);o&&t.sink.report(S.possiblyNullish(r.right,o));let c=o?Dt(a):a,i=e.type==="ForOfStatement"?It(c,r.right,t):l.string,l$1=ws(r.left);l$1&&Ne(l$1,vs(r.left),t);let u=l$1?je(n,{[l$1]:i},t):n,{returns:p}=Hs(r.body,u,t,(m,y)=>ne(r.body,m,y,s));return N(t,e,l.unknown,n),p}case "BreakStatement":case "ContinueStatement":return N(t,e,l.unknown,n),[];case "ThrowStatement":{let r=e.argument;return r&&B(r,n,t),N(t,e,l.unknown,n),[]}case "TryStatement":{let r=e,a=ne(r.block,n,t,s);if(r.handler){let o=r.handler.param,c=o?_(o):null;c&&o&&Ne(c,o,t);let i=c?je(n,{[c]:l.any},t):n;a.push(...ne(r.handler.body,i,t,s));}return r.finalizer&&a.push(...ne(r.finalizer,n,t,s)),N(t,e,l.unknown,n),a}case "SwitchStatement":{let r=e;B(r.discriminant,n,t);let a=n,o=[];for(let c of r.cases){c.test&&B(c.test,a,t);let i=Un(c.consequent,a,t,void 0,s);a=i.scope,o.push(...i.returns);}return N(t,e,l.unknown,n),o}default:return B(e,n,t),[]}}function Cr(e,n,t){let s=la$1(e,[n],t.schemes);return s?s.type:l.unknown}function It(e,n,t){let s=z(e,t.schemes);switch(s.t){case "array":return s.items;case "tuple":return s.elements.length?ba$1([...s.elements]):l.unknown;case "string":return l.string;case "literal":if(typeof s.value=="string")return l.string;break;case "unknown":case "any":return l.unknown;case "union":return ba$1(s.of.map(r=>It(r,n,t)));}return t.sink.report(S.notIterable(n,e)),l.any}function Dr(e,n){let t=m(l.index(e,l.literal(n)));return t.t==="index"?l.unknown:t}function Pr(e,n){if(e.t!=="object")return e;let t={};for(let s in e.props)n.includes(s)||(t[s]=e.props[s]);return l.object(t,e.index)}function jr(e,n){return e.t==="tuple"?l.tuple(e.elements.slice(n)):e.t==="array"?e:l.array(l.unknown)}function pe(e,n,t,s$1,r){switch(e.type){case "Identifier":{let a=dn(e,s$1,r)??n;Ne(e.name,e,r),t[e.name]=a,r.overlay.set(e,{type:a,scope:s$1});return}case "AssignmentPattern":{let a=e,o=B(a.right,s$1,r);n.t!=="unknown"&&!Y(o,n,r.schemes)&&r.sink.report(S.notAssignable(a.right,o,n,r.schemes));let c=L$1(J$1(o)),{type:i}=s(n),l=i.t==="unknown"?c:ba$1([i,c]),u=a.left;if(u.type==="Identifier"){let p=u.name;Ne(p,u,r),t[p]=l,r.overlay.set(u,{type:l,scope:s$1});}else pe(u,l,t,s$1,r);return}case "ObjectPattern":{let a=[];for(let o of e.properties){if(o.type==="RestElement"){pe(o.argument,Pr(n,a),t,s$1,r);continue}let c=o,i=Ee(c);i!=null&&a.push(i);let l$1=i!=null?Cr(n,i,r):l.unknown;pe(c.value,l$1,t,s$1,r);}return}case "ArrayPattern":{e.elements.forEach((a,o)=>{if(!a)return;let c=a;c.type==="RestElement"?pe(c.argument,jr(n,o),t,s$1,r):pe(c,Dr(n,o),t,s$1,r);});return}}}function Ot(e,n,t$1){let s=z(n,t$1.schemes),r=s.t==="union"?E(s,t$1.schemes):s,a=r.t==="union"?r.of.map(l=>z(l,t$1.schemes)):[r],c=(s.t==="union"?Nr(e,a.filter(l=>l.t==="object"||l.t==="intersection"),l=>t$1.overlay.get(l.value)?.type,t$1.schemes,n).chosen:a).filter(l=>l.t==="object"&&(!l.index||l.index.key==="number"));if(!c.length||c.some(l=>Object.keys(l.props).length===0&&!l.index))return false;let i=false;for(let l of e.properties){if(l.type==="SpreadElement")continue;let u=l;if(u.computed)continue;let p=Ee(u);if(p===null)continue;c.filter(y=>p in y.props||y.index?.key==="number"&&t(p)).length||(t$1.sink.report(S.excessProperty(u.key,p,n)),i=true);}return i}function xn(e,n,t){let s={};for(let r of e.declarations){let a=r.id,o=_(a);o&&Ne(o,a,t);let c=dn(a,n,t);if(!r.init){if(o&&e.kind!=="const"){c?(s[o]=c,s[Oe(o)]=c):(s[o]=l.undefined,t.evolving.add(o));continue}t.sink.report(S.constNeedsInit(r)),o&&(s[o]=c??l.unknown);continue}let i=c??(r.init.type==="ArrowFunctionExpression"?Rs(r.init):null),l$1=o&&i?je(n,{[o]:i},t):n,u,p=null;c?(q(r.init,c,l$1,t),u=c,p=c,(c.t==="union"||c.t==="boolean")&&ie(r.init)&&(u=vr(c,be(r.init),t.schemes))):(u=B(r.init,l$1,t),e.kind!=="const"&&(u=H$1(u)),u=L$1(u),p=u),N(t,r,u,n),o?(s[o]=u,e.kind!=="const"&&p&&(s[Oe(o)]=p)):pe(a,u,s,n,t);}return N(t,e,l.unknown,n),je(n,s,t)}function je(e,n,t){let s=Se(e,n);for(let r of Object.keys(n))vt(r)||(t.shadowed?.add(r),s=Et(s,r,t.schemes));return s}function Do(e,n,t){let s=B(e.left,n,t),r=B(e.right,n,t);return Mr(e.operator,s,r,e,e.left,e.right,t)}function Mr(e,n,t,s,r,a,o){if(e==="in"){let i=de(n,r,o)?null:Ge(n);i&&o.sink.report(S.possiblyNullish(r,i));let l=de(t,a,o)?null:Ge(t);l&&o.sink.report(S.possiblyNullish(a,l));}let c=Ye.get(e);if(!c)return l.boolean;if(c.category==="additive"||c.category==="arithmetic"||c.category==="bitwise"||c.category==="relational"){let i=de(n,r,o),l$1=de(t,a,o);if(i||l$1)return l.any}if(c.category==="additive"){if(De(n)||De(t))return Ce(n,o.schemes)||Ce(t,o.schemes)?l.string:l.number;if(Ce(n,o.schemes)&&Ce(t,o.schemes))return l.string;if(pn(n,o.schemes)&&pn(t,o.schemes))return l.number;if(Ce(n,o.schemes)||Ce(t,o.schemes)){let l$1=Ce(n,o.schemes)?t:n;return o.sink.report(S.implicitCoercion(s,n,t,Ir(l$1,o.schemes))),l.string}return o.sink.report(S.operatorNotApplicable(s,"+",n,t)),l.number}if(c.category==="arithmetic"||c.category==="bitwise")pn(n,o.schemes)||o.sink.report(S.arithmeticOperand(r,"left")),pn(t,o.schemes)||o.sink.report(S.arithmeticOperand(a,"right"));else if(c.category==="relational"&&!De(n)&&!De(t)){let i=E(n,o.schemes),l$1=E(t,o.schemes),u=Y(i,l.number,o.schemes),p=Y(l$1,l.number,o.schemes);u&&p||!u&&!p&&(Y(i,l$1,o.schemes)||Y(l$1,i,o.schemes))||o.sink.report(S.operatorNotApplicable(s,e,n,t));}return pt(c.result)}var De=e=>e.t==="any"||e.t==="unknown",pn=(e,n)=>De(e)||Y(E(e,n),l.number,n),Ce=(e,n)=>!De(e)&&Y(E(e,n),l.string,n),Po=l.union([l.string,l.number,l.boolean,l.null,l.undefined]),Ir=(e,n)=>De(e)||Y(E(e,n),Po,n),nr={string:l.literal(""),number:l.literal(0),boolean:l.literal(false)},In=e=>e.t==="null"||e.t==="undefined";function jo(e,n,t,s){if(n.t==="any"||n.t==="unknown")return ba$1([n,t]);let r=(n.t==="union"?[...n.of]:[n]).flatMap(o=>o.t==="boolean"?[l.literal(true),l.literal(false)]:[o]);if(e==="??")return r.some(In)?ba$1([...r.filter(o=>!In(o)),t]):n;if(e==="||")return Vs(n,s)?ba$1([...r.filter(o=>!In(o)&&!(o.t==="literal"&&!o.value)),t]):n;if(!Us(n,s))return n;let a=r.flatMap(o=>In(o)?[o]:o.t==="literal"?o.value?[]:[o]:nr[o.t]?[nr[o.t]]:[]);return ba$1([...a,t])}var Mo=l.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>l.literal(e)));function Io(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}:l.boolean;case "-":case "+":case "~":return de(s,e.argument,t),e.operator==="-"&&s.t==="literal"&&typeof s.value=="number"?{t:"literal",value:-s.value,fresh:true}:l.number;case "typeof":return Mo;case "delete":return l.boolean;case "void":return l.undefined;default:return l.unknown}}function Fo(e,n,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,t),t.schemes);if(b.t==="object"){for(let E in b.props)s[E]=b.props[E];b.index&&(r={key:b.index.key,type:b.index.value});}continue}let y=m,f=B(y.value,n,t),h=G$1(f);if(N(t,m,f,n),y.computed){let b=z(B(y.key,n,t),t.schemes);b.t==="literal"&&typeof b.value=="string"?(s[b.value]={type:h},a.push(h)):b.t==="literal"&&typeof b.value=="number"?(s[String(b.value)]={type:h},a.push(h),o.push(h)):b.t==="string"?(c=true,a.push(h)):b.t==="number"&&(i=true,a.push(h),o.push(h));continue}let g=Ee(y);g!==null&&(s[g]={type:h},a.push(h),/^\d+$/.test(g)&&o.push(h));}c?r={key:"string",type:ba$1(a)}:i&&(r={key:"number",type:ba$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 Fr(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(G$1(B(a,n,t)));}return q$1(l.array(s.length?ba$1(s):l.unknown))}function Ft(e,n,t,s){let r=z(n,s.schemes),a=e.elements,o=a.every(i=>i&&i.type!=="SpreadElement"),c=(i,l)=>i.type==="ArrayExpression"?Ft(i,l,t,s):xe(l,ie(i)?be(i):void 0)?B(i,t,s):G$1(B(i,t,s));if(r.t==="tuple"&&o){let i=w(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):G$1(B(p,t,s))});return N(s,e,{t:"tuple",elements:u,fromLiteral:true},t)}if(r.t==="union"&&o){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=w(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,ba$1(y)):G$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,q$1(l.array(i.length?ba$1(i):l.unknown)),t)}return Fr(e,t,s)}function $r(e,n,t){let s=E(e,t);if(s.t==="array")return s.items;if(s.t==="tuple"){let r=w(s);if(n>=s.elements.length||r>=0&&n>=r)return;let a=F$1(l.index(s,l.literal(n)),t);return o(a)?void 0:a}if(s.t==="union"){let r=s.of.map(a=>$r(a,n,t));return r.some(a=>a===void 0)?void 0:ba$1(r)}}function $o(e,n,t,s,r){let a=E(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=$r(a,l,r.schemes);if(!p)return;let m=o(n,l);if(!m||Y(m,p,r.schemes))return;let y=r.sink.all.length;q(u,p,s,r,false),r.sink.all.length>y&&(c=true);}),c}function Tt(e,n,t,s){if(e===null)return l.null;switch(typeof e){case "string":return l.string;case "number":return l.number;case "boolean":return l.boolean;case "object":break;default:return l.unknown}if(Array.isArray(e)){let o=e.map(c=>Tt(c,n,t,s));return l.array(o.length?ba$1(o):l.unknown)}let r=e;if(isExprMarker(r)){let o;try{o=fromJson(r);}catch{return t.sink.report(S.unsupported(s,`'${EXPR_MARKER}: ${String(r[EXPR_MARKER])}'`)),l.unknown}return B(o,n,t)}let a={};for(let o of Object.keys(r))a[o]={type:Tt(r[o],n,t,s)};return {t:"object",props:a}}function Lr(e,n){let t=E(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=>Lr(s,n)):false}function Lo(e,n,t,s,r){let a=W(),o=q(e,n,t,{...s,sink:a},true);if(a.hasErrors()&&r);let c=i=>s.sink.all.some(l=>l.node===i.node&&l.code===i.code&&l.message===i.message);for(let i of a.all)c(i)||s.sink.report(i);return a.hasErrors()?n:o}var Vo=(e,n)=>({...e,typeAnnotation:n}),Uo=(e,n)=>({...e,returnType:n}),xo=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function $t(e,n){return e.get(n)?.type}function Ko(e,n){return e.get(n)?.scope}function Wo(e,n){let t=e.get(n)?.type;return t?la$1(t,[])?.completions??[]:[]}function Go(e,n){let t=e.get(n)?.scope;return t?[...Hn(t)].map(([s,r])=>({key:s,type:r,optional:false})):[]}var _o=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function zo(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 Kn(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(_o)?.returnType;case "CallExpression":{let o=(a.arguments??[]).indexOf(r);if(o<0)return;let c=$t(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=Kn(e,n+2,t,s),i=zo(a);return !c||!i?void 0:la$1(c,[i],s)?.type}case "ArrayExpression":{let o=Kn(e,n+1,t,s);return o?la$1(o,["[]"],s)?.type:void 0}case "BinaryExpression":{let o=Ye.get(a.operator);if(!o)return;if(o.category==="arithmetic"||o.category==="bitwise")return l.number;let c=a.left===r?a.right:a.left,i=$t(t,c);return i&&i.t!=="any"&&i.t!=="unknown"?i:void 0}case "LogicalExpression":return Kn(e,n+1,t,s);case "UnaryExpression":{let o=a.operator;return o==="-"||o==="+"||o==="~"?l.number:void 0}default:return}}function Jo(e,n){return e.filter(t=>t.node===n)}function Qo(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var Ho=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Lt(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(me.arrayExpression(e.map((r,a)=>Lt(r,s.child(n,a),t,s))),n):Ho(e)?t.stamp(me.objectExpression(Object.entries(e).map(([r,a])=>{let o=s.child(n,r),c=t.stamp(me.literal(r),o);return t.stamp(me.property(c,Lt(a,o,t,s),false,false),o)})),n):t.stamp(me.literal(e),n)}function Zo(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 ei(e,n,t,s){let r=Zo(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:Ur(o(u),i.node.loc);return {diagnostic:i,anchor:l,...p?{span:p}:{}}})}function Ur(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 ni(e,n){return Ur(createPositionMap(e),n)}export{Ye as BINARY_OP,ut as BINARY_OPS,os as FUNCTION_KINDS,na as LOGICAL_OPS,ps as UNARY_OPS,ei as anchorDiagnostics,Vo as annotate,Uo as annotateReturn,xo as asExpression,ta as binaryOpsProducing,tt as calleeAllowlist,nt as capabilityNodes,sr as check,Se as childScope,da as collectBindings,ht as collectMutations,Sa as collectReferences,mt as collectUnused,to as componentProps,Pt as componentPropsOf,Kn as contextualTypeAt,Qo as createAnchors,zr as createEnv,W as createSink,S as diag,Jo as diagnosticsAt,Ga as extractModuleType,Zr as fromCapability,et as guard,En as guardsFromCompiled,x as lookup,Lt as lowerValue,$ as makeDiagnostic,ct as maxArgs,rt as maxCallNesting,ot as maxDepth,st as maxFunctionNesting,vn as maxNestingOf,it as maxNodes,Wo as memberCompletions,at as memberDepth,pt as opResultSchema,Jr as resolveNamed,qr as resolveScheme,lt as resultType,ss as rootScope,ya as sameSymbol,Ko as scopeAt,Go as scopeCompletions,ni as spanOf,$t as typeAt,sa as unaryOpsProducing,Hn as visibleNames};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tslite/checker",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "TSLite type system — a structural type checker over the AST (the 'TypeScript of TSLite')",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -44,9 +44,9 @@
44
44
  "access": "public"
45
45
  },
46
46
  "dependencies": {
47
- "@tslite/language-service": "1.0.0",
48
47
  "@tslite/capability": "1.1.0",
49
48
  "@tslite/ast": "1.1.0",
49
+ "@tslite/language-service": "1.1.0",
50
50
  "@tslite/json": "1.0.1"
51
51
  },
52
52
  "devDependencies": {