@tslite/checker 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-J5CVPE4U.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +63 -2
- package/dist/index.d.ts +63 -2
- package/dist/index.js +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +14 -3
- package/dist/types/index.d.ts +14 -3
- package/dist/types/index.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-BW42VHMU.js +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var ast=require('@tslite/ast'),capability=require('@tslite/capability'),json=require('@tslite/json'),Fe=require('@tslite/ast/builders'),languageService=require('@tslite/language-service');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Fe__namespace=/*#__PURE__*/_interopNamespace(Fe);var Ns=100,vs=50,ws=5e6,it={maxTypeDepth:100,maxInstantiationDepth:50,maxInstantiationCount:5e6,maxUnionMembers:1e3,maxOverloadSignatures:200},Ue=it;function Vt(e){Ue={...it,...e};}function Ut(){Ue=it;}function re(){return Ue}var Ee=class extends Error{constructor(n=Ue.maxTypeDepth){super(`excessive stack depth comparing types (limit ${n}) \u2014 the comparison is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},Sn=class extends Error{constructor(t,r=t==="depth"?Ue.maxInstantiationDepth:Ue.maxInstantiationCount){super(`type instantiation is excessively deep and possibly infinite (${t} limit ${r})`);this.kind=t;this.name="InstantiationLimitError";}};function Wt(){Lt=0;}var Lt=0;function Qr(){if(Lt>=Ue.maxInstantiationCount)throw new Sn("count");Lt++;}var Te=class extends Error{constructor(n,t=Ue.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${t})`),this.name="UnionTooComplexError";}};var Ae=e=>Object.freeze(e),p={any:Ae({t:"any"}),unknown:Ae({t:"unknown"}),string:Ae({t:"string"}),number:Ae({t:"number"}),boolean:Ae({t:"boolean"}),null:Ae({t:"null"}),undefined:Ae({t:"undefined"}),void:Ae({t:"void"}),nonPrimitive:Ae({t:"nonPrimitive"}),literal:e=>({t:"literal",value:e}),object:(e,n)=>({t:"object",props:e,...n?{index:n}:{}}),record:(e,n="string")=>({t:"object",props:{},index:{key:n,value:e}}),array:(e,n)=>({t:"array",items:e,...n?{readonly:true}:{}}),tuple:(e,n,t)=>({t:"tuple",elements:n?e.map((r,o)=>n[o]==="optional"?We(r):r):e,...n&&n.some(r=>r!=="req")?{flags:n}:{},...t?{readonly:true}:{}}),fn:(e,n,t)=>({t:"fn",params:e,returns:n,...t?.length?{typeParams:t}:{}}),guard:(e,n,t=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:t,type:n}}),overload:e=>({t:"overload",signatures:e}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,t,r=false)=>({t:"mapped",key:e,over:n,body:t,optional:r}),conditional:(e,n,t,r,o)=>({t:"conditional",check:e,extends:n,then:t,else:r,...o&&o.length?{infer:o}:{}}),intersection:e=>H({of:e}),and:(e,n)=>H({of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n)=>({t:"var",name:e,...n?{bound:n}:{}}),typeParam:(e,n={})=>({t:"var",name:e,...n.bound?{bound:n.bound}:{},...n.default?{default:n.default}:{}}),typeQuery:e=>({t:"typeQuery",path:e}),apply:(e,n=[])=>({t:"apply",name:e,args:n}),promise:e=>({t:"apply",name:"Promise",args:[e]}),union:e=>{let n=[],t=o=>{o.t==="union"?o.of.forEach(t):n.push(o);};if(e.forEach(t),n.some(o=>o.t==="any"))return {t:"any"};if(n.some(o=>o.t==="unknown"))return {t:"unknown"};let r=Es(n);return r.length===1?r[0]:{t:"union",of:r}}};function Bs(e){switch(e.t){case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "literal":return `#${typeof e.value}:${String(e.value)}`;default:return null}}function Es(e){let n=[],t=new Map;for(let i of e){let c=Bs(i);if(c===null){n.includes(i)||n.push(i);continue}let l=t.get(c);l===void 0?(t.set(c,n.length),n.push(i)):i.t==="literal"&&!i.fresh&&(n[l]=i);}let r=i=>i.t==="literal"&&t.has(typeof i.value),o=!t.has("boolean")&&t.has("#boolean:true")&&t.has("#boolean:false"),a=false,s=[];for(let i of n)if(!r(i)){if(o&&i.t==="literal"&&typeof i.value=="boolean"){a||s.push({t:"boolean"}),a=true;continue}s.push(i);}return s}function D(e){return e.t==="keyof"?Kt(e.of)??e:e.t==="index"?lt(e.obj,e.key)??e:e.t==="returnType"?Ts(e.fn)??e:e.t==="parameters"?As(e.fn)??e:e}var ct={t:"union",of:[]},_t=e=>e.t==="union"&&e.of.length===0;function Ts(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function We(e){if(e.t==="undefined"||e.t==="any"||e.t==="unknown")return e;let n=e.t==="union"?e.of:[e];return n.some(t=>t.t==="undefined")?e:p.union([...n,{t:"undefined"}])}function As(e){let n=e.t==="fn"?e:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1]:null;if(!n)return null;let t=[],r=[];for(let o of n.params)o.variadic?(t.push(o.type.t==="array"?o.type.items:o.type),r.push("rest")):o.optional?(t.push(We(o.type)),r.push("optional")):(t.push(o.type),r.push("req"));return p.tuple(t,r)}var zt=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Zr(e,n){return e.t==="literal"&&n.t==="literal"?e.value===n.value:e.t==="literal"&&(n.t==="string"||n.t==="number"||n.t==="boolean")?typeof e.value===n.t:e.t===n.t&&(e.t==="string"||e.t==="number"||e.t==="boolean")}function eo(e){return e.t==="null"||e.t==="undefined"?e.t:e.t==="nonPrimitive"?"nonPrimitive":zt(e)?"scalar":e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"?"object":null}var no=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function H(e){let n=[],t=s=>{let i=D(s);i.t==="intersection"?i.of.forEach(t):n.push(i);};if(e.of.forEach(t),n.some(s=>s.t==="any"))return p.any;if(n.some(_t))return ct;let r=s=>n.some(i=>eo(i)===s);if(r("null")&&(r("undefined")||r("scalar")||r("object")||r("nonPrimitive"))||r("undefined")&&(r("scalar")||r("object")||r("nonPrimitive"))||r("nonPrimitive")&&r("scalar"))return ct;if(n.some(s=>eo(s)==="object"&&!no(s)))for(let s=n.length-1;s>=0;s--)no(n[s])&&n.splice(s,1);let o=n.findIndex(s=>s.t==="union");if(o>=0){let s=n.reduce((i,c)=>i*(c.t==="union"?c.of.length:1),1);if(s>re().maxUnionMembers)throw new Te(s);return p.union(n[o].of.map(i=>H({of:n.map((c,l)=>l===o?i:c)})))}let a=[];for(let s of n){if(s.t==="any")return p.any;if(_t(s))return ct;if(s.t!=="unknown"){if(zt(s)){let i=false;for(let c=a.length-1;c>=0;c--){let l=a[c];if(zt(l)){if(Zr(l,s)){i=true;break}if(Zr(s,l))a.splice(c,1);else return ct}}if(i)continue}else if(a.some(i=>i===s))continue;a.push(s);}}return a.length===0?p.unknown:a.length===1?a[0]:{t:"intersection",of:a}}function Kt(e){if(e.t==="union"&&e.of.length>0){let t=e.of.map(Kt);return t.some(r=>r===null)?null:xs(t)}if(e.t==="intersection"){let t=e.of.map(Kt);return t.some(r=>r===null)?null:p.union(t)}if(e.t==="unknown")return {t:"union",of:[]};if(e.t==="any"||e.t==="union"&&e.of.length===0)return {t:"union",of:[p.string,p.number]};if(e.t==="nonPrimitive")return {t:"union",of:[]};if(e.t==="array"||e.t==="tuple")return p.number;if(e.t==="fn"||e.t==="overload")return {t:"union",of:[]};if(e.t!=="object")return null;if(e.index?.key==="string")return p.union([p.string,p.number]);let n=Object.keys(e.props).map(t=>p.literal(t));return e.index?.key==="number"?p.union([p.number,...n]):n.length===0?{t:"union",of:[]}:p.union(n)}function xs(e){let n=a=>a.t==="literal"&&typeof a.value=="string"?[a.value]:a.t==="union"?a.of.flatMap(n):[],t=e.filter(a=>a.t!=="string"&&a.t!=="number").map(n);if(t.length===0)return e[0];let r=t[0].filter(a=>t.every(s=>s.includes(a))),o=[...new Set(r)].map(a=>p.literal(a));return o.length===0?{t:"union",of:[]}:p.union(o)}var Je=Object.freeze({t:"unknown"}),Xe=e=>e===Je,to=e=>e.t==="var"||e.t==="apply"||e.t==="mapped"||e.t==="conditional"||e.t==="keyof"||e.t==="index"||e.t==="returnType"||e.t==="parameters"||e.t==="typeQuery";function lt(e,n){if(e=D(e),n=D(n),n.t==="union"){let t=[],r=false;for(let o of n.of){let a=lt(e,o);if(a===null)return null;Xe(a)?r=true:t.push(a);}return r?Je:p.union(t)}if(to(n))return null;if(e.t==="any"||_t(e))return e;if(e.t==="intersection"){let t=[];for(let r of e.of){let o=lt(D(r),n);if(o===null)return null;Xe(o)||t.push(o);}return t.length===0?Je:t.length===1?t[0]:H({of:t})}if(e.t==="union"){let t=[];for(let r of e.of){let o=D(r);if(o.t==="any")return o;let a=lt(o,n);if(a===null)return null;if(Xe(a))return Je;t.push(a);}return p.union(t)}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let t=G(e.props,String(n.value));return t?t.optional?We(t.type):t.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:Je}if(n.t==="string"||n.t==="number"){let r=n.t==="number"&&e.index?.key==="number"||false||e.index?.key==="string"?e.index:void 0;if(r)return r.value}}if(e.t==="tuple"){let t=e.flags?.findIndex(o=>o==="rest")??-1,r=t>=0?t:e.elements.length;if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]:t>=0?e.elements[t]:p.undefined;if(n.t==="number")return e.elements.length?p.union([...e.elements]):p.undefined}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:to(e)?null:Je}var ut=e=>(e.t==="object"||e.t==="array"||e.t==="tuple")&&!!e.fromLiteral,pt=e=>e.t==="object"||e.t==="array"||e.t==="tuple"?e.fromLiteral?e:{...e,fromLiteral:true}:e,Os=Object.prototype.hasOwnProperty,G=(e,n)=>Os.call(e,n)?e[n]:void 0;function be(e){if(e.t==="undefined")return {type:{t:"union",of:[]},hadUndefined:true};if(e.t==="union"&&e.of.some(n=>n.t==="undefined")){let n=e.of.filter(t=>t.t!=="undefined");return {type:p.union(n),hadUndefined:true}}return {type:e,hadUndefined:false}}var jn=e=>(+e).toString()===e;var ro=(e,n)=>e.flags?.[n]??"req",He=(e,n)=>ro(e,n)==="optional"?We(e.elements[n]):e.elements[n],qt=e=>e.elements.map((n,t)=>He(e,t)),oo=e=>e.flags?.[e.elements.length-1]==="rest",ke=e=>oo(e)?e.elements.length-1:-1,Cn=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(t=>t!=="req");return n<0?e.elements.length:n};function ao(e,n,t,r=false){let o=ke(e),a=ke(n);if(!r&&Cn(e)<Cn(n))return false;if(a<0){if(o>=0)return false;let l=Cn(n);return e.elements.length<l||e.elements.length>n.elements.length?false:e.elements.every((u,f)=>t(He(e,f),He(n,f)))}let s=n.elements[a],i=l=>l<a?He(n,l):s;if(o<0)return e.elements.length<Cn(n)?false:e.elements.every((l,u)=>t(He(e,u),i(u)));if(o===0&&a!==0||o<Cn(n))return false;let c=e.elements[o];for(let l=0;l<o;l++)if(!t(He(e,l),i(l)))return false;for(let l=o;l<a;l++)if(!t(c,He(n,l)))return false;return t(c,s)}function N(e,n,t=new WeakSet){return Qr(),js(e,n,t)}function js(e,n,t){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!Ps(L(e),n))return e;switch(e.t){case "var":{let r=n[e.name];return r||Gt(e,n,t)}case "array":return {...e,items:N(e.items,n,t)};case "tuple":{let r=e.elements.map(o=>N(o,n,t));return {...e,elements:r}}case "union":return p.union(e.of.map(r=>N(r,n,t)));case "object":{if(t.has(e))return e;t.add(e);let r={};for(let a in e.props){let s=e.props[a];r[a]={type:N(s.type,n,t),optional:s.optional};}let o=e.index?{key:e.index.key,value:N(e.index.value,n,t)}:void 0;return t.delete(e),o?{t:"object",props:r,index:o}:{t:"object",props:r}}case "fn":{if(t.has(e))return e;t.add(e);let r=Yt(e,n,t);return t.delete(e),r}case "overload":return {t:"overload",signatures:e.signatures.map(r=>Yt(r,n,t))};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>N(r,n,t))};case "keyof":return D({t:"keyof",of:N(e.of,n,t)});case "index":return D({t:"index",obj:N(e.obj,n,t),key:N(e.key,n,t)});case "mapped":{let r=Jt([p.typeParam(e.key)],n,L(e),t),o={t:"mapped",key:r.decls[0].name,over:N(e.over,n,t),body:N(e.body,r.inner,t),optional:e.optional};return gn(o)??o}case "conditional":{if(e.check.t==="var"){let o=e.check.name,a=n[o],s=a?D(a):void 0,i=s?.t==="union"?s.of:s?.t==="boolean"?[p.literal(true),p.literal(false)]:null;if(i)return {t:"union",of:i.map(c=>N(e,{...n,[o]:c},t))}}let r=e.infer?.length?Jt(e.infer,n,L(e),t):{inner:n,decls:void 0};return {t:"conditional",check:N(e.check,n,t),extends:N(e.extends,r.inner,t),then:N(e.then,r.inner,t),else:N(e.else,r.inner,t),...r.decls?{infer:r.decls}:{}}}case "intersection":return H({of:e.of.map(r=>N(r,n,t))});case "returnType":return D({t:"returnType",fn:N(e.fn,n,t)});case "parameters":return D({t:"parameters",fn:N(e.fn,n,t)});default:return e}}function Gt(e,n,t,r=e.name){return !e.bound&&!e.default&&r===e.name?e:{...e,name:r,...e.bound?{bound:N(e.bound,n,t)}:{},...e.default?{default:N(e.default,n,t)}:{}}}function Yt(e,n,t,r){let o=e.typeParams?.length?Jt(e.typeParams,n,L(e),t,r):{inner:n,decls:void 0},a=o.inner;return {...e,params:e.params.map(s=>({...s,type:N(s.type,a,t)})),returns:N(e.returns,a,t),...e.guard?{guard:{...e.guard,type:N(e.guard.type,a,t)}}:{},...o.decls?{typeParams:o.decls}:{}}}function Ht(e,n){return e.typeParams?.some(t=>n.has(t.name))?Yt(e,{},new WeakSet,n):e}function Jt(e,n,t,r,o=new Set){let a=new Set(e.map(y=>y.name)),s={},i=new Set;for(let y in n)if(!a.has(y)&&(s[y]=n[y],t.has(y)))for(let d of L(n[y]))i.add(d);let c=e.filter(y=>i.has(y.name)||o.has(y.name));if(c.length===0)return {inner:s,decls:e.map(y=>Gt(y,s,r))};let l=new Set([...a,...t,...i,...o]),u=new Map;for(let y of c){let d=1;for(;l.has(`${y.name}_${d}`);)d++;let h=`${y.name}_${d}`;l.add(h),u.set(y.name,h);}let f={};for(let[y,d]of u)f[y]={t:"var",name:d};let m={...s};for(let y of c){let d=u.get(y.name);m[y.name]={t:"var",name:d,...y.bound?{bound:N(y.bound,{...s,...f},r)}:{}};}return {inner:m,decls:e.map(y=>Gt(y,m,r,u.get(y.name)??y.name))}}var Cs=new Set,so=new WeakMap;function L(e){let n=so.get(e);if(n)return n;let t=new Set;M(e,t,new WeakSet);let r=t.size===0?Cs:t;return so.set(e,r),r}function Xt(e,n,t){let r=new Set;t(r);for(let o of r)e.includes(o)||n.add(o);}function io(e,n,t){let r=e.typeParams??[];Xt(r.map(o=>o.name),n,o=>{for(let a of r)M(a,o,t);for(let a of e.params)M(a.type,o,t);M(e.returns,o,t),e.guard&&M(e.guard.type,o,t);});}function M(e,n,t){switch(e.t){case "var":n.add(e.name),e.bound&&M(e.bound,n,t),e.default&&M(e.default,n,t);return;case "array":M(e.items,n,t);return;case "tuple":for(let r of e.elements)M(r,n,t);return;case "union":for(let r of e.of)M(r,n,t);return;case "object":if(t.has(e))return;t.add(e);for(let r in e.props)M(e.props[r].type,n,t);e.index&&M(e.index.value,n,t);return;case "fn":if(t.has(e))return;t.add(e),io(e,n,t);return;case "overload":for(let r of e.signatures)io(r,n,t);return;case "apply":for(let r of e.args)M(r,n,t);return;case "keyof":M(e.of,n,t);return;case "index":M(e.obj,n,t),M(e.key,n,t);return;case "mapped":M(e.over,n,t),Xt([e.key],n,r=>M(e.body,r,t));return;case "conditional":{M(e.check,n,t);let r=e.infer??[];Xt(r.map(o=>o.name),n,o=>{for(let a of r)M(a,o,t);M(e.extends,o,t),M(e.then,o,t),M(e.else,o,t);});return}case "intersection":for(let r of e.of)M(r,n,t);return;case "returnType":case "parameters":M(e.fn,n,t);return;default:return}}function Ps(e,n){if(e.size===0)return false;for(let t of e)if(t in n)return true;return false}function Qt(e){let n=[];for(let a of e){let s=D(a);if(s.t!=="object")return null;n.push(s);}let t=new Set;for(let a of n)for(let s in a.props)t.add(s);let r={};for(let a of t){let s=[],i=true;for(let c of n){let l=c.props[a];l&&(s.push(l.type),l.optional||(i=false));}r[a]={type:H({of:s}),optional:i};}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:H({of:[o.value,a.index.value]})}:a.index);return o?{t:"object",props:r,index:o}:{t:"object",props:r}}function gn(e,n=D){if(e.over.t==="keyof"){let a=n(e.over.of),s=a.t==="intersection"?Qt(a.of)??a:a;if(s.t==="object"){let i={};for(let l of Object.keys(s.props)){let u=e.optional||s.props[l].optional;i[l]={type:N(e.body,{[e.key]:p.literal(l)}),...u?{optional:true}:{}};}let c=s.index?.key;return c===void 0?{t:"object",props:i}:{t:"object",props:i,index:{key:c,value:N(e.body,{[e.key]:c==="number"?p.number:p.string})}}}}let t=D(e.over);if(t.t==="string"||t.t==="number")return {t:"object",props:{},index:{key:t.t,value:N(e.body,{[e.key]:t})}};let r=Rs(t);if(r===null)return null;let o={};for(let a of r)o[a]={type:N(e.body,{[e.key]:p.literal(a)}),optional:e.optional};return {t:"object",props:o}}function Rs(e){if(e.t==="literal"&&typeof e.value=="string")return [e.value];if(e.t==="union"){let n=[];for(let t of e.of)if(t.t==="literal"&&typeof t.value=="string")n.push(t.value);else return null;return n}return null}function _e(e){let n=e.length;for(;n>0&&e[n-1].default;)n--;return {min:n,max:e.length}}var co=(e,n)=>{let{min:t,max:r}=_e(e);return n>=t&&n<=r};function Pn(e,n){let t={};return e.forEach((r,o)=>{o<n.length?t[r.name]=n[o]:r.default&&(t[r.name]=N(r.default,t));}),t}function Y(e,n){if(e.t!=="apply")return false;let t=n[e.name];return t!==void 0&&co(t.params,e.args.length)}function K(e,n){if(e.t!=="apply")return e;let t=n[e.name];return !t||!co(t.params,e.args.length)?e:N(t.body,Pn(t.params,e.args))}function z(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(r=>`${r}${e.props[r].optional?"?":""}:${z(e.props[r].type)}`).join(","),t=e.index?`,[${e.index.key}]:${z(e.index.value)}`:"";return `{${n}${t}}`}case "array":return `[${z(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(z).join(",")})`;case "union":return `(${e.of.map(z).sort().join("|")})`;case "fn":return `${e.typeParams?.length?`<${e.typeParams.map(t=>t.name).join(",")}>`:""}(${e.params.map(t=>z(t.type)).join(",")})=>${e.guard?`is${e.guard.param}:${z(e.guard.type)}`:z(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(z).join(",")}>`;case "intersection":return `&(${e.of.map(z).sort().join("&")})`;case "returnType":return `RT<${z(e.fn)}>`;default:return e.t}}var lo=()=>re().maxInstantiationDepth;function C(e,n={},t=0){if(t>lo())return e;if(e.t==="var")return e.bound?C(e.bound,n,t+1):e;if(Y(e,n))return C(K(e,n),n,t+1);if(e.t==="mapped"){let r=gn(e,o=>C(o,n,t+1));if(r)return C(r,n,t+1)}if(e.t==="intersection")return H(e);if(e.t==="union"){let r=e.of.flatMap(a=>{let s=C(a,n,t+1);return s.t==="union"?s.of:[s]});return r.length===e.of.length&&r.every((a,s)=>a===e.of[s])?e:{t:"union",of:r}}return e}function bn(e,n,t=0){if(t>lo())return e;let r=ue(e,n);if(r!==e)return bn(r,n,t+1);let o=C(e,n,t);return o===e?e:bn(o,n,t+1)}function ue(e,n={}){let t=D(e);if(t!==e)return t;switch(e.t){case "keyof":{let r=bn(e.of,n);return r===e.of?e:D({...e,of:r})}case "index":{let r=bn(e.obj,n),o=bn(e.key,n);return r===e.obj&&o===e.key?e:D({...e,obj:r,key:o})}case "returnType":{let r=bn(e.fn,n);return r===e.fn?e:D({...e,fn:r})}default:return e}}var ft=e=>typeof e=="string"?p.string:typeof e=="number"?p.number:p.boolean;function pe(e){return e.t==="literal"&&e.fresh?ft(e.value):e}function Rn(e){if(e.t==="literal")return e.fresh?ft(e.value):e;if(e.t==="union"){let n=e.of.map(Rn);return n.some((t,r)=>t!==e.of[r])?B(n):e}return e}function xe(e){if(e.t==="literal")return ft(e.value);if(e.t==="union"){let n=e.of.map(xe);return n.some((t,r)=>t!==e.of[r])?B(n):e}return e}function Ze(e){return ee(e,new WeakSet)}function Zt(e){switch(e.t){case "array":return {t:"array",items:ee(e.items,new WeakSet),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>ee(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return fo(e,new WeakSet);case "fn":case "overload":return ee(e,new WeakSet);default:return e}}function ee(e,n){if(e.t==="literal")return e.fresh?ft(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:ee(e.items,n),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(t=>ee(t,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return n.add(e),fo(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(t=>ee(t,n))};case "fn":return n.add(e),{...e,params:e.params.map(t=>({...t,type:ee(t.type,n)})),returns:ee(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:ee(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(t=>ee(t,n))};default:return e}}function fo(e,n){let t={};for(let s in e.props)t[s]={type:ee(e.props[s].type,n),optional:e.props[s].optional};let r=e.index?{key:e.index.key,value:ee(e.index.value,n)}:void 0,o=e.fromLiteral?{fromLiteral:true}:{},a=e.hasSpread?{hasSpread:true}:{};return r?{t:"object",props:t,index:r,...o,...a}:{t:"object",props:t,...o,...a}}function mo(e){if(!e.siblings){let n=[];for(let t of mo(e.parent)){if(t.t!=="object"||!t.fromLiteral)continue;let r=G(t.props,e.propertyName);r&&(r.type.t==="union"?n.push(...r.type.of):n.push(r.type));}e.siblings=n;}return e.siblings}function Ds(e){if(!e.propNames){let n=new Set;for(let t of mo(e))if(t.t==="object"&&t.fromLiteral&&!t.hasSpread)for(let r in t.props)n.add(r);e.propNames=[...n];}return e.propNames}var Is=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function Ms(e,n,t){let r={};for(let a in e.props){let s=e.props[a],i=Qe(s.type,n&&{parent:n,propertyName:a},t);r[a]=i===s.type?s:{...s,type:i};}if(n)for(let a of Ds(n))G(r,a)||(r[a]={type:p.undefined,optional:true});let o=e.index?{key:e.index.key,value:Qe(e.index.value,void 0,t)}:void 0;return o?{t:"object",props:r,index:o}:{t:"object",props:r}}var uo=new WeakMap;function kn(e,n){let t=uo.get(e);if(t!==void 0)return t;if(n.has(e))return false;n.add(e);let r=false;switch(e.t){case "object":r=!!e.fromLiteral||Object.values(e.props).some(o=>kn(o.type,n))||!!e.index&&kn(e.index.value,n);break;case "array":r=!!e.fromLiteral||kn(e.items,n);break;case "tuple":r=!!e.fromLiteral||e.elements.some(o=>kn(o,n));break;case "union":case "intersection":r=e.of.some(o=>kn(o,n));break}return n.delete(e),uo.set(e,r),r}var po=new WeakMap;function Qe(e,n,t){if(!kn(e,new WeakSet))return e;if(!n){let o=po.get(e);if(o)return o}if(t.has(e))return e;t.add(e);let r=$s(e,n,t);return t.delete(e),n||po.set(e,r),r}function $s(e,n,t){switch(e.t){case "object":return e.fromLiteral?Ms(e,n,t):e;case "union":{let r=n??{siblings:e.of},o=e.of.map(a=>a.t==="null"||a.t==="undefined"?a:Qe(a,r,t));return o.some(Is)?B(o):o.every((a,s)=>a===e.of[s])?e:p.union(o)}case "intersection":{let r=false,o=e.of.map(a=>{let s=Qe(a,void 0,t);return s!==a&&(r=true),s});return r?p.intersection(o):e}case "array":{let r=Qe(e.items,void 0,t);return r===e.items&&!e.fromLiteral?e:{t:"array",items:r,...e.readonly?{readonly:true}:{}}}case "tuple":{let r=false,o=e.elements.map(a=>{let s=Qe(a,void 0,t);return s!==a&&(r=true),s});return !r&&!e.fromLiteral?e:{t:"tuple",elements:o,...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}}}default:return e}}function ze(e){return Qe(e,void 0,new WeakSet)}var Mn=Object.freeze({t:"union",of:Object.freeze([])});function Dn(e){if(e===Mn)return true;switch(e.t){case "array":return Dn(e.items);case "tuple":return e.elements.some(Dn);case "union":case "intersection":return e.of.some(Dn);case "apply":return e.args.some(Dn);default:return false}}var yo=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Fs(e,n){if(w(n,e))return e;if(w(e,n))return n;let t=yo(e),r=yo(n);return !t||!r||t===r?B([e,n]):null}var Nn,Ke=false;function Ls(e){Ke=!Ke;try{return e()}finally{Ke=!Ke;}}function So(e){let n=Nn,t=Ke,r=new Map;Nn=r,Ke=false;try{return {result:e(),candidates:r}}finally{Nn=n,Ke=t;}}var ho=(e,n)=>{if(!Nn)return;let t=Nn.get(e);t||(t={co:[],contra:[]},Nn.set(e,t)),(Ke?t.contra:t.co).push(n);};function Vs(e){if(e.length<=1)return [...e];let n=e.filter(ut);return n.length?[...e.filter(t=>!ut(t)),B(n)]:[...e]}function Us(e){let n;for(let t of e){if(t.t!=="literal")return false;let r=typeof t.value;if(n===void 0)n=r;else if(r!==n)return false}return true}function Ws(e,n){if(e.length)return Us(e)?B([...e]):e.reduce((t,r)=>w(t,r,n)?r:t)}function go(e,n={}){let t=Vs(e),r=t.filter(s=>s.t==="null"||s.t==="undefined"),o=t.filter(s=>s.t!=="null"&&s.t!=="undefined");if(!o.length)return ze(B(t));let a=Ws(o,n);if(a!==void 0)return ze(r.length?B([a,...r]):a)}function bo(e,n={}){if(e.length)return e.reduce((t,r)=>w(r,t,n)?r:t)}function ko(e,n={}){let t=e.co.length?go(e.co,n):void 0;if(!e.contra.length)return t;let r=bo(e.contra,n);if(r===void 0)return t;let o=t!==void 0&&t.t==="union"&&t.of.length===0;return t!==void 0&&!o&&w(t,r,n)?t:r}function er(e,n){let{typeParams:t,...r}=e;return {...r,params:e.params.map(o=>({...o,type:N(o.type,n)})),returns:N(e.returns,n),...e.guard?{guard:{...e.guard,type:N(e.guard.type,n)}}:{}}}function vn(e){return e.typeParams?.length?er(e,Object.fromEntries(e.typeParams.map(n=>[n.name,p.any]))):e}function No(e){let n=e.typeParams;if(!n?.length)return e;let t=Object.fromEntries(n.map(a=>[a.name,a.bound??p.unknown])),r=n.map(a=>t[a.name]);for(let a=0;a<n.length-1;a++)r=r.map(s=>N(s,t));let o=Object.fromEntries(n.map(a=>[a.name,p.any]));return r=r.map(a=>N(a,o)),er(e,Object.fromEntries(n.map((a,s)=>[a.name,r[s]])))}function dt(e,n,t={}){if(!e.some(o=>!n[o.name]||o.bound))return n;let r={...n};for(let o of e){let a=r[o.name]??(o.default?N(o.default,r):p.unknown);if(o.bound){let s=N(o.bound,r);w(a,s,t)||(a=s);}r[o.name]=a;}return r}function nr(e,n,t={}){let r=e.typeParams??[],o=new Set(r.map(u=>u.name)),a=u=>Object.fromEntries(Object.entries(u??{}).filter(([f])=>o.has(f))),s={},i=Math.max(e.params.length,n.params.length);for(let u=0;u<i;u++){let f=In(e,u),m=In(n,u);f&&m&&(s=$(f,m,s)??s);}let l={...a(e.guard&&n.guard&&e.guard.param===n.guard.param?$(e.guard.type,n.guard.type,{}):$(e.returns,n.returns,{}))};return Object.assign(l,a(s)),er(e,dt(r,l,t))}function $(e,n,t={}){if(n===Mn)return t;if(e.t==="var"){if(Dn(n))return t;let r=t[e.name];if(!r)return ho(e.name,n),{...t,[e.name]:n};if(n.t==="any"||n.t==="unknown")return t;ho(e.name,n);let o=Fs(r,n);return o?{...t,[e.name]:o}:t}if(n.t==="any"||n.t==="unknown")return t;switch(e.t){case "array":return n.t==="array"?$(e.items,n.items,t):null;case "tuple":{let r=e,o=ke(r);if(o<0){if(n.t!=="tuple"||n.elements.length!==r.elements.length)return null;let i=t;for(let c=0;c<r.elements.length;c++)i=$(r.elements[c],n.elements[c],i)??i;return i}let a=t,s=(i,c)=>{a=$(i,c,a)??a;};if(n.t==="tuple"){if(n.elements.length<o)return null;for(let c=0;c<o;c++)s(r.elements[c],n.elements[c]);let i=n.elements.slice(o);return a=$(r.elements[o],i.length?B(i):p.unknown,a)??a,a}if(n.t==="array"){for(let i=0;i<o;i++)s(r.elements[i],n.items);return a=$(r.elements[o],n.items,a)??a,a}return null}case "object":{if(n.t!=="object")return null;let r=t;for(let o in e.props){let a=e.props[o],s=n.props[o];if(!s){if(a.optional)continue;return null}r=$(a.type,s.type,r)??r;}return r}case "fn":{if(n.t!=="fn")return null;let r=vn(e),o=No(n),a=$(r.returns,o.returns,t)??t,s=Math.min(r.params.length,o.params.length);for(let i=0;i<s;i++)a=Ls(()=>$(r.params[i].type,o.params[i].type,a))??a;return r.guard&&o.guard&&(a=$(r.guard.type,o.guard.type,a)??a),a}case "union":{if(!e.of.some(c=>L(c).size>0))return w(n,e)?t:null;let r=e.of.filter(c=>c.t==="var"),o=n.t==="union"?n.of:[n],a=o.map(()=>false),s=t;for(let c of e.of)if(c.t!=="var")for(let l=0;l<o.length;l++){let u=$(c,o[l],s);u!==null&&(s=u,a[l]=true);}if(r.length!==1)return s;let i=o.filter((c,l)=>!a[l]);return i.length?$(r[0],B(i),s)??s:s}case "apply":{if(n.t!=="apply"||n.name!==e.name||n.args.length!==e.args.length)return null;let r=t;for(let o=0;o<e.args.length;o++)r=$(e.args[o],n.args[o],r)??r;return r}default:return w(n,e)?t:null}}var vo="@rev",tr=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function Ne(e,n,t){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===t)return p.var(vo);switch(e.t){case "array":return {t:"array",items:Ne(e.items,n,t)};case "tuple":return {t:"tuple",elements:e.elements.map(r=>Ne(r,n,t)),...e.flags?{flags:e.flags}:{}};case "union":return p.union(e.of.map(r=>Ne(r,n,t)));case "fn":return {...e,params:e.params.map(r=>({...r,type:Ne(r.type,n,t)})),returns:Ne(e.returns,n,t)};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>Ne(r,n,t))};case "returnType":return {t:"returnType",fn:Ne(e.fn,n,t)};case "object":{let r={};for(let o in e.props)r[o]={type:Ne(e.props[o].type,n,t),optional:e.props[o].optional};return e.index?{t:"object",props:r,index:{key:e.index.key,value:Ne(e.index.value,n,t)}}:{t:"object",props:r}}default:return e}}function _s(e,n,t){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let r=e.over.of.name;if(t[r])return null;let o={};for(let a in n.props){let s=Ne(e.body,r,e.key),i=$(s,n.props[a].type,{})?.[vo];o[a]={type:i?pe(i):p.unknown,optional:n.props[a].optional};}return {...t,[r]:{t:"object",props:o}}}function wo(e,n,t){let r=t;for(let o=0;o<e.length&&o<n.length;o++){let a=e[o].type,s=n[o];if(tr(a)&&s.t==="object"){let i=_s(a,s,r);i&&(r=i);}}return r}function zs(e,n,t={}){let{result:r,candidates:o}=So(()=>{let s={};for(let i=0;i<e.params.length;i++){let c=e.params[i];if(c.variadic){for(let l=i;l<n.length;l++)if(s=$(c.type,n[l],s),s===null)return null;break}if(i>=n.length){if(c.optional)continue;return null}if(!tr(c.type)&&(s=$(c.type,n[i],s),s===null))return null}return wo(e.params,n,s)});if(r===null)return null;let a=Bo(r,o,t);return {returns:N(e.returns,a),bindings:a}}function Bo(e,n,t){let r;for(let[o,a]of n){if(a.co.length<2&&!a.contra.length)continue;let s=ko(a,t);s===void 0||s===e[o]||(r??(r={...e}),r[o]=s);}return r??e}function $n(e,n,t={}){let{result:r,candidates:o}=So(()=>{let s={};for(let i=0;i<e.params.length&&i<n.length;i++){let c=e.params[i];if(tr(c.type))continue;let l=$(c.type,n[i],s);l!==null&&(s=l);}return wo(e.params,n,s)}),a=Bo(r,o,t);return {returns:N(e.returns,a),bindings:a}}var Ks=e=>e.t==="array"?e.items:e.t==="tuple"?p.union([...e.elements]):void 0;function fe(e,n,t,r,o){if(e.t==="var"&&t.has(e.name)){let a=o.get(e.name);a||o.set(e.name,a={co:[],contra:[]}),(r?a.contra:a.co).push(n);return}if(!(n.t==="any"||n.t==="unknown"))switch(e.t){case "array":{let a=Ks(n);a&&fe(e.items,a,t,r,o);return}case "tuple":{let a=e,s=ke(a);if(s<0){n.t==="tuple"&&n.elements.length===a.elements.length&&a.elements.forEach((c,l)=>fe(c,n.elements[l],t,r,o));return}let i=a.elements[s];if(n.t==="tuple"){let c=n;if(c.elements.length<s)return;for(let l=0;l<c.elements.length;l++)fe(l<s?a.elements[l]:i,c.elements[l],t,r,o);}else if(n.t==="array"){for(let c=0;c<s;c++)fe(a.elements[c],n.items,t,r,o);fe(i,n.items,t,r,o);}return}case "fn":if(n.t==="fn"){let a=vn(e),s=No(n);a.params.forEach((i,c)=>{let l=s.params[c];l&&fe(i.type,l.type,t,!r,o);}),fe(a.returns,s.returns,t,r,o);}return;case "object":if(n.t==="object")for(let a in e.props)n.props[a]&&fe(e.props[a].type,n.props[a].type,t,r,o);return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((a,s)=>fe(a,n.args[s],t,r,o));return;default:return}}function qs(e,n){if(e.length===1)return e[0];let r=e.flatMap(o=>o.t==="union"?[...o.of]:[o]).filter(o=>e.every(a=>w(o,a,n)));return B(r)}var Gs=e=>e.t==="union"&&e.of.length===0;function Eo(e,n){let t={};for(let[r,{co:o,contra:a}]of e){let s=o.length?B(o):void 0,i=a.length?qs(a,n):void 0,c=s??i;s&&i&&(c=!Gs(s)&&s.t!=="any"&&w(s,i,n)?s:i),c&&(t[r]=c);}return t}function To(e,n={}){let t=new Map,r=(e.infer??[]).map(a=>a.name);fe(e.extends,e.check,new Set(r),false,t);let o={...Eo(t,n)};for(let a of r)a in o||(o[a]=p.unknown);return o}function Ys(e,n={},t=0){if(!e.infer?.length||L(e.check).size>0)return null;let r=new Map;fe(e.extends,e.check,new Set(e.infer.map(i=>i.name)),false,r);let o=Eo(r,n),a=new WeakSet,s=en(N(e.extends,o),n,a,t);return w(e.check,s,n)?en(N(e.then,o),n,a,t):en(N(e.else,o),n,a,t)}function en(e,n={},t=new WeakSet,r=0,o=new Set){let a=r,s=re().maxTypeDepth,i=new Set,c=(m,y)=>y?.length?new Set([...m,...y.map(d=>d.name)]):m,l=(m,y)=>({...m,...m.bound?{bound:f(m.bound,y)}:{},...m.default?{default:f(m.default,y)}:{}}),u=(m,y)=>{let d=c(y,m.typeParams);return {...m,params:m.params.map(h=>({...h,type:f(h.type,d)})),returns:f(m.returns,d),...m.guard?{guard:{...m.guard,type:f(m.guard.type,d)}}:{},...m.typeParams?{typeParams:m.typeParams.map(h=>l(h,d))}:{}}},f=(m,y=i)=>{switch(m.t){case "var":return y.has(m.name)?l(m,y):p.unknown;case "array":return {...m,items:f(m.items,y)};case "tuple":return {...m,elements:m.elements.map(d=>f(d,y))};case "union":return p.union(m.of.map(d=>f(d,y)));case "object":{if(t.has(m))return m;t.add(m);let d={};for(let S in m.props){let b=m.props[S];d[S]={type:f(b.type,y),optional:b.optional};}let h=m.index?{key:m.index.key,value:f(m.index.value,y)}:void 0;return t.delete(m),h?{t:"object",props:d,index:h}:{t:"object",props:d}}case "fn":{if(t.has(m))return m;t.add(m);let d=u(m,y);return t.delete(m),d}case "overload":return {t:"overload",signatures:m.signatures.map(d=>u(d,y))};case "apply":{if(Y(m,n)){let d=K(m,n);if(d.t==="conditional"){if(a>=s)throw new Ee;a++;try{let h=f(d,y);if(h.t!=="conditional")return h}finally{a--;}}}return {t:"apply",name:m.name,args:m.args.map(d=>f(d,y))}}case "conditional":{let d=m.infer?.length?Ys(m,n,a):ve(m,n);if(d)return f(d,y);let h=c(y,m.infer);return {t:"conditional",check:f(m.check,y),extends:f(m.extends,h),then:f(m.then,h),else:f(m.else,h),...m.infer?{infer:m.infer.map(S=>l(S,h))}:{}}}case "intersection":return H({of:m.of.map(d=>f(d,y))});case "returnType":return D({t:"returnType",fn:f(m.fn,y)});default:return m}};return f(e,o)}var Js=p.object({}),or=(e,n,t="assignable")=>({seen:new WeakMap,exp:new Set,schemes:e,relation:t,assumed:0,explain:n,sourceStack:[],targetStack:[]}),rr=0;function W(e,n,t){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:t,kind:"type"}),false}function ar(e,n,t=0){if(t>re().maxInstantiationDepth)return e;if(Y(e,n)){let r=K(e,n);if(r.t!=="conditional")return e;let o=ve(r,n);return o?ar(o,n,t+1):e}if(e.t==="conditional"){let r=ve(e,n);return r?ar(r,n,t+1):e}return e}function Ln(e,n,t={}){let r=[];return !T(e,n,or(t,{path:[],out:r}))&&r.length===0&&r.push({path:[],actual:e,expected:n,kind:"type"}),r}var Xs=new WeakMap,Hs=new WeakMap;function Ro(e,n,t,r,o){if(e===n)return true;if(Object.keys(t).length>0)return T(e,n,or(t,void 0,r));let a=o.get(e)?.get(n);if(a!==void 0)return a;let s=T(e,n,or(t,void 0,r)),i=o.get(e);return i||o.set(e,i=new WeakMap),i.set(n,s),s}function w(e,n,t={}){return Ro(e,n,t,"assignable",Xs)}function ht(e,n,t={}){return Ro(e,n,t,"comparable",Hs)}function nn(e,n,t={}){return w(e,n,t)&&w(n,e,t)}function ve(e,n){if(e.infer?.length){if(L(e.check).size>0)return null;let t=ar(e.check,n),r=To({...e,check:t},n),o=N(e.extends,r);return w(t,o,n)?N(e.then,r):N(e.else,r)}return L(e.check).size>0||L(e.extends).size>0?null:w(e.check,e.extends,n)?e.then:e.else}function Fn(e,n,t=0){if(t>re().maxInstantiationDepth)return e;let r=ue(e,n.schemes);if(r!==e)return Fn(r,n,t+1);if(e.t==="conditional"){let o=ve(e,n.schemes);if(o)return Fn(o,n,t+1)}return Y(e,n.schemes)?Fn(K(e,n.schemes),n,t+1):e.t==="union"?B(e.of.map(o=>Fn(o,n,t+1))):e}var Ao=(e,n)=>gn(e,t=>C(t,n.schemes))??gn({...e,over:Fn(e.over,n)});function yt(e,n,t,r){if(!t.explain)return T(e,n,t);t.explain.path.push(r);try{return T(e,n,t)}finally{t.explain.path.pop();}}function T(e,n,t){if(rr>=re().maxTypeDepth)throw new Ee;rr++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return t.relation==="comparable"?!0:W(t,e,n);let r=ue(e,t.schemes);if(r!==e)return T(r,n,t);let o=ue(n,t.schemes);if(o!==n)return T(e,o,t);if(e.t==="mapped"){let s=Ao(e,t);if(s)return T(s,n,t)}if(n.t==="mapped"){let s=Ao(n,t);if(s)return T(e,s,t)}if(e.t==="conditional"){let s=ve(e,t.schemes);if(s)return T(s,n,t)}if(n.t==="conditional"){let s=ve(n,t.schemes);if(s)return T(e,s,t)}if(t.relation==="comparable"&&ni(n,e))return !0;if(n.t==="intersection")return n.of.every(s=>T(e,s,t));if(e.t==="intersection"&&n.t!=="union"){if(Zs(e.of,n,t))return !0;if(n.t==="object"){let s=Qt(e.of);if(s)return T(s,n,t)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(Y(e,t.schemes)||Y(n,t.schemes))){let s=`${z(e)}\u2264${z(n)}`;if(t.exp.has(s))return !0;if(Oo(e,t.sourceStack)&&Oo(n,t.targetStack))return t.assumed++,!0;t.exp.add(s),t.sourceStack.push(e),t.targetStack.push(n);let i=T(K(e,t.schemes),K(n,t.schemes),t);return t.sourceStack.pop(),t.targetStack.pop(),t.exp.delete(s),i}return Qs(e,n,t)}finally{rr--;}}var xo=5;function Oo(e,n){if(n.length<xo||e.t!=="apply")return false;let t=0;for(let r of n)if(r.t==="apply"&&r.name===e.name&&++t>=xo)return true;return false}function Qs(e,n,t){let r=t.seen.get(e);if(r?.has(n))return t.assumed++,true;r||(r=new WeakSet,t.seen.set(e,r)),r.add(n);let o=t.assumed,a=ei(e,n,t);return (!a||t.assumed!==o)&&r.delete(n),a}function Zs(e,n,t){let r=t.intersectionSource,o=t.explain;t.intersectionSource=true,t.explain=void 0;try{return e.some(a=>T(a,n,t))}finally{t.intersectionSource=r,t.explain=o;}}function ei(e,n,t){if(e.t==="union")return t.relation==="comparable"?e.of.length===0||e.of.some(r=>T(r,n,t)):e.of.every(r=>T(r,n,t));if(e.t==="boolean"&&n.t==="union")return t.relation==="comparable"?T(p.literal(true),n,t)||T(p.literal(false),n,t):T(p.literal(true),n,t)&&T(p.literal(false),n,t);if(n.t==="union")return ti(e,n,t);if(e.t==="var"&&!(n.t==="var"&&n.name===e.name))return e.bound?T(e.bound,n,t):W(t,e,n);if(e.t==="nonPrimitive"&&n.t!=="nonPrimitive")return n.t==="object"&&n.index?W(t,e,n):T(Js,n,t);if(Co(e)&&Co(n))return ii(e,n,t);if(n.t==="overload")return n.signatures.every(r=>T(e,r,t));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:W(t,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Do(e.value)===n.t?true:W(t,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:W(t,e,n);case "nonPrimitive":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"||e.t==="apply"||e.t==="nonPrimitive"?true:W(t,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?W(t,e,n):T(e.items,n.items,t):e.t==="tuple"?e.readonly&&!n.readonly?W(t,e,n):qt(e).every((r,o)=>yt(r,n.items,t,String(o))):W(t,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return W(t,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return W(t,e,n);for(let r=0;r<e.elements.length;r++)if(!yt(e.elements[r],n.elements[r],t,String(r)))return false;return true}return ao(e,n,(r,o)=>T(r,o,t),t.relation==="comparable")}case "object":if(e.t==="object")return oi(e,n,t);if(Object.keys(n.props).length===0&&!n.index)return e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:W(t,e,n);if((e.t==="array"||e.t==="tuple")&&n.index){let r=e.t==="array"?[e.items]:qt(e);return n.index.key==="number"&&Object.values(n.props).every(o=>o.optional)&&r.every(o=>T(o,n.index.value,t))?true:W(t,e,n)}return W(t,e,n);case "fn":return e.t==="fn"?mt(e,n,t):W(t,e,n);case "var":return e.t==="var"&&e.name===n.name;case "typeQuery":return e.t==="typeQuery"&&e.path.length===n.path.length&&e.path.every((r,o)=>r===n.path[o]);case "keyof":return e.t==="keyof"&&T(e.of,n.of,t)&&T(n.of,e.of,t);case "index":return e.t==="index"&&T(e.obj,n.obj,t)&&T(n.obj,e.obj,t)&&T(e.key,n.key,t)&&T(n.key,e.key,t);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&T(e.over,n.over,t)&&T(n.over,e.over,t)&&T(e.body,n.body,t)&&T(n.body,e.body,t);case "conditional":return e.t==="conditional"&&T(e.check,n.check,t)&&T(n.check,e.check,t)&&T(e.extends,n.extends,t)&&T(n.extends,e.extends,t)&&T(e.then,n.then,t)&&T(e.else,n.else,t);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((r,o)=>T(r,n.args[o],t));case "returnType":return e.t==="returnType"&&T(e.fn,n.fn,t)&&T(n.fn,e.fn,t);case "parameters":return e.t==="parameters"&&T(e.fn,n.fn,t)&&T(n.fn,e.fn,t)}}var Do=e=>typeof e;function ni(e,n){switch(n.t){case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Do(e.value)===n.t;case "literal":return e.t==="literal"&&e.value===n.value;case "void":return e.t==="void"||e.t==="undefined";default:return false}}function ti(e,n,t){let r=t.explain;if(!r)return n.of.some(s=>T(e,s,t));t.explain=void 0;let o;try{o=n.of.some(s=>T(e,s,t));}finally{t.explain=r;}if(o)return true;let a=ri(e,n,t);return a?T(e,a,t):W(t,e,n)}function ri(e,n,t){if(e.t!=="object")return null;let r=n.of.map(o=>C(o,t.schemes));for(let o in e.props){let a=e.props[o].type;if(a.t!=="literal")continue;let s=t.explain;t.explain=void 0;let i;try{i=n.of.filter((c,l)=>{let u=r[l];if(u.t!=="object")return !1;let f=G(u.props,o);return !!f&&T(a,f.type,t)});}finally{t.explain=s;}if(i.length===1)return i[0]}return null}function oi(e,n,t){let r=false;for(let o in n.props)if(!(n.props[o].optional||G(e.props,o))){if(!t.explain)return false;t.explain.out.push({path:[...t.explain.path,o],expected:n.props[o].type,kind:"missing"}),r=true;}if(r)return false;for(let o in n.props){let a=n.props[o],s=G(e.props,o);if(!s)continue;if(s.optional&&!a.optional&&t.relation==="assignable")return false;let i=a.optional?be(s.type).type:s.optional?B([s.type,p.undefined]):s.type;if(!yt(i,a.type,t,o))return false}return !(n.index&&!ai(e,n.index,t))}function ai(e,n,t){if(t.intersectionSource){if(!e.index)return false}else {let r=n.key==="number";for(let o in e.props){if(r&&!jn(o))continue;let a=e.props[o],s=a.optional?We(a.type):a.type;if(!yt(s,n.value,t,o))return false}}return !e.index||T(e.index.value,n.value,t)}var Io=e=>{let n=e.params[e.params.length-1];return n?.variadic?n:void 0},si=e=>{let n=e.params.findIndex(t=>t.optional||t.variadic);return n<0?e.params.length:n};function In(e,n){let t=Io(e),r=t?e.params.length-1:e.params.length;if(n<r)return e.params[n].type;if(!t)return;let o=t.type;if(o.t==="array")return o.items;if(o.t==="tuple"&&!o.flags)return o.elements[n-r]}var jo=(e,n)=>{let t=In(e,n);return t===void 0?t:e.params[n]?.optional?We(t):t},Co=e=>e.t==="fn"||e.t==="overload";function ii(e,n,t){let r=e.t==="overload"?e.signatures:[e],o=n.t==="overload"?n.signatures:[n];return r.length===1&&o.length===1?Po(r[0],o[0],t,t.relation==="comparable"):o.every(a=>r.some(s=>Po(s,a,t,true)))}function Po(e,n,t,r){if(r)return mt(vn(e),vn(n),t);let o=Ht(n,L(e));return e.typeParams?.length?mt(nr(e,o,t.schemes),o,t):mt(e,o,t)}function mt(e,n,t){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!T(e.returns,n.returns,t)||!Io(n)&&si(e)>n.params.length)return false;let r=Math.max(e.params.length,n.params.length);for(let o=0;o<r;o++){let a=jo(e,o),s=jo(n,o);if(a&&s&&!T(s,a,t))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!T(e.guard.type,n.guard.type,t)))}var ci=e=>e.t==="object"&&!e.index&&Object.values(e.props).every(n=>n.optional);function B(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let t=re().maxUnionMembers;if(n.length>t)throw new Te(n.length,t);if(n.some(o=>o.t==="any"))return p.any;let r=[...n];for(let o=r.length-1;o>=0;o--){let a=r[o];r.some((i,c)=>c!==o&&!ci(i)&&w(a,i)&&(c<o||!w(i,a)))&&r.splice(o,1);}if(r.some(o=>o.t==="literal"&&o.value===true)&&r.some(o=>o.t==="literal"&&o.value===false)){let o=r.filter(a=>!(a.t==="boolean"||a.t==="literal"&&typeof a.value=="boolean"));o.push(p.boolean),r.length=0,r.push(...o);}return r.length===1?r[0]:{t:"union",of:r}}function sr(e,n){let t=new Set,r=new WeakSet,o=a=>{if(!r.has(a))switch(r.add(a),a.t){case "keyof":t.add("keyof"),o(a.of);break;case "index":t.add("indexed"),o(a.obj),o(a.key);break;case "mapped":t.add("mapped"),o(a.over),o(a.body);break;case "conditional":t.add("conditional"),a.infer?.length&&t.add("infer"),a.infer?.forEach(o),o(a.check),o(a.extends),o(a.then),o(a.else);break;case "returnType":t.add("returnType"),o(a.fn);break;case "parameters":t.add("parameters"),o(a.fn);break;case "tuple":t.add("tuple"),a.elements.forEach(o);break;case "intersection":t.add("intersection"),a.of.forEach(o);break;case "overload":t.add("overload");for(let s of a.signatures){s.typeParams?.forEach(o);for(let i of s.params)o(i.type);o(s.returns),s.guard&&o(s.guard.type);}break;case "object":for(let s in a.props)o(a.props[s].type);a.index&&o(a.index.value);break;case "array":o(a.items);break;case "union":a.of.forEach(o);break;case "fn":a.typeParams?.forEach(o);for(let s of a.params)o(s.type);o(a.returns),a.guard&&o(a.guard.type);break;case "var":a.bound&&o(a.bound),a.default&&o(a.default);break;case "apply":n&&a.name===n&&t.add("recursion"),a.args.forEach(o);break}};return o(e),t}var li=p.union([]);function Mo(e,n){return St(e,n,new WeakMap)}function ui(e){return e.reduce(Mo,li)}function St(e,n,t){if(e.t==="any"||n.t==="any")return p.any;if(e===n)return e;let r=t.get(e)?.get(n);if(r)return r;if(e.t==="object"&&n.t==="object")return pi(e,n,t);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:p.unknown};return $o(t,e,n,o),o.items=St(e.items,n.items,t),o}return B([e,n])}function pi(e,n,t){let r={t:"object",props:{}};$o(t,e,n,r);for(let o in e.props){let a=e.props[o],s=n.props[o];if(s){let i=St(a.type,s.type,t);r.props[o]=a.optional||s.optional?{type:i,optional:true}:{type:i};}else r.props[o]={type:a.type,optional:true};}for(let o in n.props)o in e.props||(r.props[o]={type:n.props[o].type,optional:true});return e.index&&n.index&&e.index.key===n.index.key&&(r.index={key:e.index.key,value:St(e.index.value,n.index.value,t)}),r}function $o(e,n,t,r){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(t,r);}var fi=4;function di(e,n={}){return Vn(e,n,0)}function Vn(e,n,t){let r=C(ue(e,n),n);switch(r.t){case "string":return "";case "number":return 0;case "boolean":return false;case "null":return null;case "literal":return r.value;case "array":return [];case "tuple":{let o=[];for(let a=0;a<r.elements.length&&(r.flags?.[a]??"req")==="req";a++)o.push(Vn(r.elements[a],n,t));return o}case "object":{if(t>=fi)return {};let o={};for(let a of Object.keys(r.props)){let s=r.props[a];s.optional||(o[a]=Vn(s.type,n,t+1));}return o}case "nonPrimitive":return {};case "union":{if(r.of.some(a=>a.t==="null"))return null;let o=r.of.find(a=>a.t!=="undefined");return o===void 0?null:Vn(o,n,t)}case "intersection":{let o=r.of.map(a=>Vn(a,n,t));return o.every(mi)?Object.assign({},...o):null}default:return null}}var mi=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);var yi=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e),hi={check:new Set(["function","conditional"]),extends:new Set(["conditional"]),union:new Set(["function","conditional","union","intersection"]),intersection:new Set(["function","conditional","union","intersection"]),operand:new Set(["function","conditional","union","intersection"]),postfix:new Set(["function","conditional","union","intersection","operator","query"])},Fo=(e,n)=>hi[e].has(n);function P(e,n=new WeakSet){return V(e,{seen:n,infer:new Map})}function Si(e){return gt(e,{seen:new WeakSet,infer:new Map})}function cr(e,n){switch(e.t){case "fn":return "function";case "overload":return e.signatures.length===1?"function":"primary";case "conditional":return "conditional";case "union":return e.of.length===0?"primary":e.of.length===1?cr(e.of[0],n):"union";case "intersection":return e.of.length===1?cr(e.of[0],n):"intersection";case "keyof":return "operator";case "array":case "tuple":return e.readonly?"operator":"primary";case "typeQuery":return "query";case "var":{let t=n.infer.get(e.name);return t?t.bound?"conditional":"operator":"primary"}default:return "primary"}}function Oe(e,n,t){let r=V(n,t);return Fo(e,cr(n,t))?`(${r})`:r}function gt(e,n){return e.map((t,r)=>{let o=V(t,n);return r===0&&gi(t)?`(${o})`:o}).join(", ")}var gi=e=>e.t==="fn"&&!!e.typeParams?.length||e.t==="overload"&&e.signatures.length===1&&!!e.signatures[0].typeParams?.length;function bi(e,n){return e?.length?`<${e.map(t=>ki(t,n)).join(", ")}>`:""}function ki(e,n){let t=e.bound?` extends ${V(e.bound,n)}`:"",r=e.default?` = ${V(e.default,n)}`:"";return `${e.name}${t}${r}`}function bt(e,n){if(!n.some(r=>e.infer.has(r)))return e;let t=new Map(e.infer);for(let r of n)t.delete(r);return {...e,infer:t}}function ir(e,n,t){let r=bt(t,(e.typeParams??[]).map(i=>i.name)),o=e.params.map(i=>{let c=i.variadic?"...":"",l=i.optional&&!i.variadic?"?":"";return `${c}${i.name}${l}: ${V(i.type,r)}`}).join(", "),a=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${V(e.guard.type,r)}`:V(e.returns,r),s=bi(e.typeParams,r);return n==="=>"?`${s}(${o}) => ${a}`:`${s}(${o}): ${a}`}function V(e,n){let{seen:t}=n;switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "nonPrimitive":return "object";case "var":{let r=n.infer.get(e.name);return r?r.bound?`infer ${e.name} extends ${V(r.bound,bt(n,[e.name]))}`:`infer ${e.name}`:e.name}case "typeQuery":return `typeof ${e.path.join(".")}`;case "literal":return typeof e.value=="string"?JSON.stringify(e.value):String(e.value);case "array":{let r=`${Oe("postfix",e.items,n)}[]`;return e.readonly?`readonly ${r}`:r}case "tuple":{let o=`[${e.elements.map((a,s)=>{let i=e.flags?.[s]??"req";return i==="rest"?`...${Oe("postfix",a,n)}[]`:i==="optional"?`${Oe("postfix",a,n)}?`:V(a,n)}).join(", ")}]`;return e.readonly?`readonly ${o}`:o}case "union":{if(e.of.length===0)return "never";if(e.of.length===1)return V(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>Oe("union",o,n)).join(" | ");return t.delete(e),r}case "intersection":{if(e.of.length===1)return V(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>Oe("intersection",o,n)).join(" & ");return t.delete(e),r}case "object":{if(t.has(e))return "\u2026";t.add(e);let r=Object.entries(e.props).map(([o,a])=>`${yi(o)?o:JSON.stringify(o)}${a.optional?"?":""}: ${V(a.type,n)}`);return e.index&&r.push(`[k: ${e.index.key}]: ${V(e.index.value,n)}`),t.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(t.has(e))return "\u2026";t.add(e);let r=ir(e,"=>",n);return t.delete(e),r}case "overload":{if(e.signatures.length===1)return ir(e.signatures[0],"=>",n);if(t.has(e))return "\u2026";t.add(e);let r=e.signatures.map(o=>ir(o,":",n));return t.delete(e),`{ ${r.join("; ")} }`}case "apply":{if(e.args.length===0)return e.name;if(t.has(e))return "\u2026";t.add(e);let r=`${e.name}<${gt(e.args,n)}>`;return t.delete(e),r}case "keyof":return `keyof ${Oe("operand",e.of,n)}`;case "index":return `${Oe("postfix",e.obj,n)}[${V(e.key,n)}]`;case "mapped":{if(t.has(e))return "\u2026";t.add(e);let r=e.optional?"?":"",o=bt(n,[e.key]),a=`{ [${e.key} in ${V(e.over,n)}]${r}: ${V(e.body,o)} }`;return t.delete(e),a}case "conditional":{if(t.has(e))return "\u2026";t.add(e);let r=e.infer??[],o=r.length?{...n,infer:new Map([...n.infer,...r.map(i=>[i.name,i])])}:n,a=bt(n,r.map(i=>i.name)),s=`${Oe("check",e.check,n)} extends ${Oe("extends",e.extends,o)} ? ${V(e.then,a)} : ${V(e.else,a)}`;return t.delete(e),s}case "returnType":return `ReturnType<${gt([e.fn],n)}>`;case "parameters":return `Parameters<${gt([e.fn],n)}>`}}function Lo(e){if(e.length===0)return "value";let n=e[e.length-1];if(/^\d+$/.test(n)){let t=e.slice(0,-1);return t.length?`property '${t.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function Un(e){let n=e.filter(t=>t.kind==="missing");if(n.length&&n.length===e.length){let t=n.map(r=>`'${r.path.join(".")}'`).join(", ");return n.length===1?`property ${t} is missing`:`properties ${t} are missing`}return e.map(t=>t.actual===void 0?`${Lo(t.path)} is missing`:`${Lo(t.path)}: expected '${P(t.expected)}', got '${P(t.actual)}'`).join("; ")}function tn(e,n=new WeakSet){switch(e.t){case "string":case "number":case "boolean":case "null":case "literal":return true;case "array":return n.has(e)?true:(n.add(e),tn(be(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(t=>tn(be(t).type,n)));case "object":{if(n.has(e))return true;n.add(e);let t=Object.values(e.props).every(o=>tn(be(o.type).type,n)),r=!e.index||tn(be(e.index.value).type,n);return t&&r}case "union":return n.has(e)?true:(n.add(e),e.of.every(t=>tn(t,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(t=>tn(t,n)));case "undefined":case "void":case "fn":case "overload":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "var":case "typeQuery":case "apply":case "any":case "unknown":case "nonPrimitive":return false}}function Q(e,n,t={}){let r=e;for(let o of n){let a=rn(r,o,t);if(a===null)return null;r=a;}return {type:r,completions:Wn(r,t)}}var Ni=e=>e==="[]"||/^\d+$/.test(e);function rn(e,n,t,r=new Set){if(e.t==="var")return e.bound?rn(C(e,t),n,t,r):null;if(e.t==="mapped"){let a=C(e,t);return a===e?null:rn(a,n,t,r)}if(Y(e,t)){let a=z(e);if(r.has(a))return null;r.add(a);let s=rn(K(e,t),n,t,r);return r.delete(a),s}let o=D(e);if(o!==e)return rn(o,n,t,r);switch(e.t){case "any":return e;case "object":{let a=G(e.props,n);return a?a.optional?B([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return Ni(n)?e.items:null;case "tuple":{let a=e.flags?.findIndex(c=>c!=="req")??-1,s=Number(n);if(!(Number.isInteger(s)&&s>=0))return null;if(a<0)return s<e.elements.length?e.elements[s]:null;if(s<a)return e.elements[s];let i=e.elements.slice(a);return i.length?B(i):null}case "union":{let a=[];for(let s of e.of){let i=rn(s,n,t,r);if(i===null)return null;a.push(i);}return a.length?B(a):null}case "intersection":{let a=e.of.map(s=>rn(s,n,t,r)).filter(s=>s!==null);return a.length?H({of:a}):null}default:return null}}function Wn(e,n,t=new WeakSet,r=new Set){if(e.t==="var")return e.bound?Wn(C(e,n),n,t,r):[];if(Y(e,n)){let a=z(e);if(r.has(a))return [];r.add(a);let s=Wn(K(e,n),n,t,r);return r.delete(a),s}let o=D(e);if(o!==e)return Wn(o,n,t,r);switch(e.t){case "object":return Object.entries(e.props).map(([a,s])=>({key:a,type:s.type,optional:!!s.optional}));case "array":return [{key:"[]",type:e.items,optional:false}];case "tuple":return e.elements.map((a,s)=>({key:String(s),type:a,optional:false}));case "union":case "intersection":{if(t.has(e))return [];t.add(e);let a=[],s=new Set;for(let i of e.of)for(let c of Wn(i,n,t,r))s.has(c.key)||(s.add(c.key),a.push(c));return t.delete(e),a}default:return []}}var Uo=(e={})=>ast.rootScope(e),qe=(e,n)=>ast.childScope(e,n),Z=(e,n)=>ast.lookup(e,n),lr=e=>{let n=ast.visibleNames(e);for(let t of n.keys())(t.includes(".")||t.endsWith("#"))&&n.delete(t);return n},Vo=new Set(["types","schemes","accessors","asserters","matchers","modules"]),Ai=(e={},n)=>{let t=n??{},r=Object.keys(t).filter(o=>!Vo.has(o));if(r.length>0)throw new ast.TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${r.map(o=>`'${o}'`).join(", ")} \u2014 expected ${[...Vo].join(", ")}. Named types go under 'types'.`,{unknown:r});return {scope:Uo(e),types:t.types??{},schemes:t.schemes??{},accessors:t.accessors??{},asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:t.modules??{}}},xi=(e,n)=>e.types[n],Oi=(e,n)=>e.schemes[n];var Wo={"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"},O=(e,n,t)=>({code:e,kind:Wo[e],severity:"error",node:n,message:t}),_=(e,n,t,r="error")=>({code:e,kind:Wo[e],severity:r,node:n,message:t}),g={notAssignable:(e,n,t,r={})=>{let o=Ln(n,t,r),a=o.filter(l=>l.path.length>0),s=a.length?` ${Un(a)}.`:"",i=O("not-assignable",e,`Type '${P(n)}' is not assignable to type '${P(t)}'.${s}`),c=o.filter(l=>l.kind==="missing"&&l.path.length===1).map(l=>({name:l.path[0],type:l.expected}));return c.length?{...i,data:{kind:"missing-properties",properties:c}}:i},unknownName:(e,n)=>O("unknown-name",e,`Cannot find name '${n}'.`),notCallable:(e,n)=>O("not-callable",e,`Type '${P(n)}' is not callable.`),noSuchMember:(e,n,t)=>O("no-such-member",e,`Property '${t}' does not exist on type '${P(n)}'.`),notObject:(e,n)=>O("not-object",e,`Type '${P(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 O("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${r}.`:`Object is possibly ${r}.`)},unknownValue:e=>O("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>O("const-needs-init",e,"'const' declarations must be initialized."),missingArgument:(e,n,t)=>O("missing-argument",e,`Missing argument '${n}' of type '${P(t)}'.`),notASchema:(e,n)=>O("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)=>O("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)=>O("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>O("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)=>O("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),cannotRedeclare:(e,n)=>O("cannot-redeclare",e,`Cannot redeclare block-scoped variable '${n}'.`),circularTypeAlias:(e,n)=>O("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>O("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>O("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,r,o=false)=>O(r==="missing"?"missing-argument":"excess-argument",e,o?`Expected at least ${n} arguments, but got ${t}.`:`Expected ${n} arguments, but got ${t}.`),excessProperty:(e,n,t)=>O("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${P(t)}'.`),spreadArgument:e=>O("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>O("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>O("not-iterable",e,`Type '${P(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),propsMismatch:(e,n,t)=>O("props-mismatch",e,`Payload is not compatible with the component props '${P(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>O("no-matching-overload",e,`No overload of '${P(n)}' matches the arguments (${t.map(r=>P(r)).join(", ")}).`),constraintViolation:(e,n,t,r)=>O("constraint-violation",e,`Type '${P(t)}' does not satisfy the constraint '${n} extends ${P(r)}'.`),unsupported:(e,n)=>O("unsupported",e,`${n} is not supported in this language.`),wrongTypeArgumentCount:(e,n,t)=>O("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,r)=>O("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)=>O("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)=>O("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)=>O("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)=>O("readonly-write",e,`Index signature in type '${P(n)}' only permits reading.`),castUnsound:(e,n,t)=>O("cast-unsound",e,`Conversion of type '${P(n)}' to type '${P(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)=>O("unprovable-value",e,`A value of type '${P(n)}' can never satisfy '${r}' (${P(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>O("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)=>O("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${P(t)}' and '${P(r)}'.`),implicitCoercion:(e,n,t,r)=>({...O("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${P(n)}' and '${P(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)=>({...O("implicit-coercion",e,`Cannot convert '${P(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 ne(){let e=[];return {all:e,report(n){e.push(n);},hasErrors(){return e.some(n=>n.severity==="error")}}}function _n(e,n,t){let r=xe(e);return ht(n,Ze(r),t)||ht(r,n,t)}function _o(e,n,t){return w(e,n,t)}function pr(e,n,t={}){return n.flatMap(r=>r(e,t))}function on(e,n){let t=r=>{n(r);for(let o of ast.childrenOf(r))t(o);};t(e);}var Pi=e=>Array.isArray(e)?e:[e],zo=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function fr(e,n="error"){return t=>{let r=[];return on(t,o=>{let a=capability.nodeViolation(o,e);a&&r.push(_("node-not-allowed",o,`'${a}' is not allowed by the capability profile.`,n));}),r}}function Ko(e,n="error"){let t=e.typeTier;return r=>{if(t==="author")return [];let o=[];return on(r,a=>{let s=a,i=s.type==="TSTypeAliasDeclaration"?s.id?.name:void 0;for(let c of [s.typeAnnotation,s.returnType]){if(!c)continue;let l=capability.typeFeatureViolations(sr(c,i),t);l.length&&o.push(_("type-feature-not-allowed",a,`authoring type feature${l.length>1?"s":""} '${l.join("', '")}' requires capability tier 'author'.`,n));}}),o}}function F(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=>F(t.type,n))||!!e.index&&F(e.index.value,n);case "array":return F(e.items,n);case "tuple":return e.elements.some(t=>F(t,n));case "union":case "intersection":return e.of.some(t=>F(t,n));case "fn":return e.params.some(t=>F(t.type,n))||F(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(r=>F(r.type,n))||F(t.returns,n));case "keyof":return F(e.of,n);case "index":return F(e.obj,n)||F(e.key,n);case "mapped":return F(e.over,n)||F(e.body,n);case "conditional":return F(e.check,n)||F(e.extends,n)||F(e.then,n)||F(e.else,n);case "returnType":case "parameters":return F(e.fn,n);case "apply":return e.args.some(t=>F(t,n));default:return false}}function qo(e,n="error"){return t=>{if(!e.typeStrict)return [];let r=[];return on(t,o=>{let a=o;for(let s of [a.typeAnnotation,a.returnType])if(s&&F(s)){r.push(_("any-not-allowed",o,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),r}}function Go(e,n="error"){return (t,r)=>{let o=r.overlay;if(!e.typeStrict||!o)return [];let a=r.schemes??{},s=[];return on(t,i=>{if(i.type!=="TSAsExpression")return;let{expression:c}=i,l=o.get(c)?.type,u=o.get(i)?.type;!l||!u||F(u)||!_n(l,u,a)||_o(l,u,a)||s.push(_("narrowing-cast-not-allowed",i,`A cast may only widen under 'strict': '${P(l)}' is not assignable to '${P(u)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),s}}function dr(e,n="error"){let t=new Set(e);return r=>{let o=[];return on(r,a=>{if(a.type!=="CallExpression")return;let s=a.callee;if(s.type!=="Identifier")o.push(_("name-not-allowed",s,"Only direct calls to allowed functions are permitted.",n));else {let i=s.name;t.has(i)||o.push(_("name-not-allowed",s,`Function '${i}' is not allowed here.`,n));}}),o}}function kt(e,n,t={}){let r=new Set(Pi(e)),o=t.severity??"error",a=[...r].join("/");return s=>{let i=[],c=(l,u)=>{let f=r.has(l.type),m=f?u+1:u;f&&m>n&&i.push(_("too-deep",l,`Nesting of ${a} exceeds ${n}${t.hint?` \u2014 ${t.hint}`:""}.`,o));for(let y of ast.childrenOf(l))c(y,m);};return c(s,0),i}}var mr=(e=3,n="error")=>kt(zo,e,{hint:"use a pipe instead of nesting functions",severity:n}),yr=(e,n="error")=>kt("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),hr=(e,n="error")=>kt("MemberExpression",e,{severity:n});function Sr(e,n="error"){return t=>{let r=[],o=(a,s)=>{if(s>e){r.push(_("too-deep",a,`Expression nesting exceeds ${e}.`,n));return}for(let i of ast.childrenOf(a))o(i,s+1);};return o(t,0),r}}function gr(e,n="error"){return t=>{let r=0;return on(t,()=>{r++;}),r>e?[_("too-large",t,`Expression has ${r} nodes (max ${e}).`,n)]:[]}}function br(e,n="error"){return t=>{let r=[];return on(t,o=>{if(o.type==="CallExpression"){let a=o.arguments;a&&a.length>e&&r.push(_("too-large",o,`Call has ${a.length} arguments (max ${e}).`,n));}}),r}}function kr(e,n={},t="error"){return (r,o)=>{let a=o.overlay?.get(r)?.type;return a?w(a,e,n)?[]:[_("wrong-result-type",r,`Result type '${P(a)}' is not assignable to the required '${P(e)}'.`,t)]:[]}}function Nt(e){let n=[fr(e),Ko(e),qo(e),Go(e)];return e.hostAllow!=="*"&&n.push(dr([...e.hostAllow])),n}function Di(e){return Nt(capability.compileProfile(e))}var Nr=[{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"}],zn=new Map(Nr.map(e=>[e.op,e])),Yo={number:p.number,boolean:p.boolean,string:p.string},vr=e=>Yo[e],Jo=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],Ii={number:p.number,boolean:p.boolean,string:p.string,undefined:p.undefined},Mi=[{op:"&&"},{op:"||"},{op:"??"}];function $i(e,n={}){return Nr.filter(t=>t.result==="additive"?w(p.string,e,n)||w(p.number,e,n):w(Yo[t.result],e,n))}function Fi(e,n={}){return Jo.filter(t=>w(Ii[t.result],e,n))}var an=e=>({bindings:new Map,parent:e}),Ho=e=>e.charCodeAt(0)===95;function vt(e,n,t,r,o,a){let s=e.bindings.get(t);s&&(s.exempt=true);let i={name:t,node:r,kind:o,exempt:a,used:false};e.bindings.set(t,i),n.all.push(i);}function qn(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)qn(r,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let r=t.path[0];typeof r=="string"&&wt(n,r);return}for(let r of Object.keys(t))qn(t[r],n);}function Qo(e,n){let t=e;qn(t.typeAnnotation,n),qn(t.returnType,n);}function wt(e,n){for(let t=e;t;t=t.parent){let r=t.bindings.get(n);if(r){r.used=true;return}}}function je(e,n,t,r,o,a){if(e)switch(e.type){case "Identifier":{let s=e.name;Qo(e,n),vt(n,t,s,e,r,o||a&&Ho(s));return}case "ObjectPattern":{let s=e.properties,i=s[s.length-1],c=!!i&&i.type==="RestElement";s.forEach((l,u)=>{let f=c&&u<s.length-1;if(l.type==="RestElement")je(l.argument,n,t,r,o,false);else {let m=l;m.computed&&I(m.key,n,t),je(m.value,n,t,r,o||f,!m.shorthand);}});return}case "ArrayPattern":{for(let s of e.elements){if(!s)continue;let i=s;je(i.type==="RestElement"?i.argument:i,n,t,r,o,true);}return}case "AssignmentPattern":je(e.left,n,t,r,o,a);return;case "RestElement":je(e.argument,n,t,r,o,true);return;default:return}}function Kn(e,n,t){if(e)switch(e.type){case "AssignmentPattern":I(e.right,n,t),Kn(e.left,n,t);return;case "ObjectPattern":for(let r of e.properties)Kn(r.type==="RestElement"?r.argument:r.value,n,t);return;case "ArrayPattern":for(let r of e.elements)r&&Kn(r,n,t);return;case "RestElement":Kn(e.argument,n,t);return;default:return}}function Xo(e,n,t,r){for(let o of e.declarations)je(o.id,n,t,"local",r,false),I(o.init,n,t);}function wr(e,n,t){let r=e,o=an(n),a=r.params??[];for(let s of a)je(s,o,t,"parameter",false,true);for(let s of a)Kn(s,o,t);I(r.body,o,t);}function I(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(Qo(e,n),e.type){case "Identifier":wt(n,e.name);return;case "MemberExpression":{let r=e;I(r.object,n,t),r.computed&&I(r.property,n,t);return}case "Property":{let r=e;r.computed&&I(r.key,n,t),I(r.value,n,t);return}case "Program":case "BlockStatement":{let r=an(n);for(let o of e.body??[])I(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":wr(e,n,t);return;case "FunctionDeclaration":{let r=e.id;r&&vt(n,t,r.name,r,"local",false),wr(e,n,t);return}case "CatchClause":{let r=e,o=an(n);je(r.param,o,t,"local",true,false),I(r.body,o,t);return}case "SwitchStatement":{let r=e;I(r.discriminant,n,t);let o=an(n);for(let a of r.cases){I(a.test,o,t);for(let s of a.consequent??[])I(s,o,t);}return}case "ForStatement":{let r=e,o=an(n);I(r.init,o,t),I(r.test,o,t),I(r.update,o,t),I(r.body,o,t);return}case "ForOfStatement":case "ForInStatement":{let r=e;I(r.right,n,t);let o=an(n),a=r.left;if(a.type==="VariableDeclaration")for(let s of a.declarations)je(s.id,o,t,"local",false,true);else I(a,o,t);I(r.body,o,t);return}case "VariableDeclaration":Xo(e,n,t,false);return;case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&vt(n,t,o.name,o,"import",Ho(o.name));}return}case "ExportNamedDeclaration":{let r=e;if(r.declaration){let o=r.declaration;if(o.type==="VariableDeclaration")Xo(o,n,t,true);else if(o.type==="FunctionDeclaration"){let a=o.id;a&&vt(n,t,a.name,a,"local",true),wr(o,n,t);}else I(o,n,t);}else for(let o of r.specifiers)wt(n,o.local.name);return}case "TSAsExpression":I(e.expression,n,t);return;case "TSTypeAliasDeclaration":qn(e.typeAnnotation,n);return;case "JsonExpression":Br(e.body,n,t);return;case "JSXOpeningElement":{let r=e;Zo(r.name,n);for(let o of r.attributes??[])I(o,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":I(e.value,n,t);return;default:{let r=ast.VisitorKeys[e.type];if(!r)return;let o=e;for(let a of r){let s=o[a];if(Array.isArray(s))for(let i of s)I(i,n,t);else I(s,n,t);}return}}}function Zo(e,n,t){e&&(e.type==="JSXIdentifier"?wt(n,e.name):e.type==="JSXMemberExpression"&&Zo(e.object,n));}function Br(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let o of e)Br(o,n,t);return}let r=e;if(ast.isExprMarker(r)){try{I(json.fromJson(r),n,t);}catch{}return}for(let o of Object.keys(r))Br(r[o],n,t);}function Er(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};I(e,an(void 0),t);let r=[];for(let o of t.all)o.used||o.exempt||(o.kind==="parameter"?n.parameters:n.locals)&&r.push(g.unusedName(o.node,o.name));return r}var _i=new Set(["const","import"]),Gn=e=>({binds:new Map,parent:e});function zi(e,n){for(let t=e;t;t=t.parent){let r=t.binds.get(n);if(r)return r}}function sn(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?sn(n.argument):sn(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?sn(n):[]);case "AssignmentPattern":return sn(e.left);case "RestElement":return sn(e.argument);default:return []}}var Bt=(e,n,t)=>{for(let r of sn(n))e.binds.set(r.name,t);};function Tr(e,n,t){if(!e)return;if(e.type!=="Identifier"){for(let a of sn(e))Tr(a,n,t);return}let r=e.name,o=zi(n,r);o&&_i.has(o)&&(t.invalid.add(e),t.out.push(g.assignToConst(e,r,o==="import"?"import":"const")));}function J(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let r=e;Tr(r.left,n,t),J(r.right,n,t);return}case "UpdateExpression":{Tr(e.argument,n,t);return}case "Program":case "BlockStatement":{let r=Gn(n);for(let o of e.body??[])J(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=Gn(n);for(let a of r.params??[])Bt(o,a,"param");J(r.body,o,t);return}case "CatchClause":{let r=e,o=Gn(n);Bt(o,r.param,"param"),J(r.body,o,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,o=Gn(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let s of a.declarations)Bt(o,s.id,a.kind);else a&&J(a,o,t);J(r.right,n,t),J(r.test,o,t),J(r.update,o,t),J(r.body,o,t);return}case "VariableDeclaration":{let r=e;for(let o of r.declarations)J(o.init,n,t),Bt(n,o.id,r.kind);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&n.binds.set(o.name,"import");}return}case "ExportNamedDeclaration":{let r=e;r.declaration&&J(r.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":J(e.expression,n,t);return;default:{let r=ast.VisitorKeys[e.type];if(!r)return;let o=e;for(let a of r){let s=o[a];if(Array.isArray(s))for(let i of s)J(i,n,t);else J(s,n,t);}return}}}function Ar(e){let n={out:[],invalid:new WeakSet};return J(e,Gn(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var Yn=e=>({decls:new Map,parent:e});function qi(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}function wn(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?wn(n.argument):wn(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?wn(n):[]);case "AssignmentPattern":return wn(e.left);case "RestElement":return wn(e.argument);default:return []}}var Et=(e,n)=>{for(let t of wn(n))e.decls.set(t.name,t);};function q(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let r=qi(n,e.name);r&&r!==e&&t.set(e,r);return}case "MemberExpression":{let r=e;q(r.object,n,t),r.computed&&q(r.property,n,t);return}case "Property":{let r=e;r.computed&&q(r.key,n,t),q(r.value,n,t);return}case "Program":case "BlockStatement":{let r=Yn(n);for(let o of e.body??[])q(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=e.id;o&&n.decls.set(o.name,o);let a=Yn(n);for(let s of r.params??[])Et(a,s);q(r.body,a,t);return}case "CatchClause":{let r=e,o=Yn(n);Et(o,r.param),q(r.body,o,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,o=Yn(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let s of a.declarations)Et(o,s.id);else a&&q(a,o,t);q(r.right,n,t),q(r.test,o,t),q(r.update,o,t),q(r.body,o,t);return}case "VariableDeclaration":{for(let r of e.declarations)Et(n,r.id),q(r.init,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&n.decls.set(o.name,o);}return}case "TSTypeAliasDeclaration":{let r=e.id;r&&n.decls.set(r.name,r);return}case "TSAsExpression":q(e.expression,n,t);return;default:{let r=ast.VisitorKeys[e.type];if(!r)return;let o=e;for(let a of r){let s=o[a];if(Array.isArray(s))for(let i of s)q(i,n,t);else q(s,n,t);}return}}}function Gi(e){let n=new WeakMap;return q(e,Yn(void 0),n),n}function de(e,n,t,r){switch(e.t){case "apply":if(n.has(e.name)&&r.add(e.name),t.has(e.name))for(let o of e.args)de(o,n,t,r);return;case "union":case "intersection":for(let o of e.of)de(o,n,t,r);return;case "conditional":de(e.check,n,t,r),de(e.extends,n,t,r),de(e.then,n,t,r),de(e.else,n,t,r);return;case "keyof":de(e.of,n,t,r);return;case "index":de(e.obj,n,t,r),de(e.key,n,t,r);return;case "returnType":case "parameters":de(e.fn,n,t,r);return;default:return}}function na(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),o=new Map;for(let s of t){let i=new Set;de(e[s].body,t,r,i),o.set(s,i);}let a=new Set;for(let s of t){let i=new Set,c=[...o.get(s)];for(;c.length;){let l=c.pop();if(l===s){a.add(s);break}i.has(l)||(i.add(l),c.push(...o.get(l)));}}return a}var xr=e=>`a\0${e}`,ea=(e,n)=>`p\0${e}\0${n}`;function ta(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),o=new Map,a=new Map;for(let d of t)a.set(d,Yi(e[d].body));let s=d=>a.get(d),i=(d,h)=>{switch(d.t){case "literal":return h.has(String(d.value))?[String(d.value)]:[];case "union":return d.of.flatMap(S=>i(S,h));case "keyof":{let S=d.of.t==="apply"&&t.has(d.of.name)?Or(e[d.of.name].body):void 0;return S?[...S].filter(b=>h.has(b)):[]}default:return []}},c=(d,h,S)=>{switch(d.t){case "apply":if(t.has(d.name)&&S.add(xr(d.name)),r.has(d.name)||h==="annotation")for(let b of d.args)c(b,h,S);return;case "index":{if(d.obj.t==="apply"){let b=s(d.obj.name);if(b)for(let x of i(d.key,b))S.add(ea(d.obj.name,x));}c(d.obj,h,S),c(d.key,h,S);return}case "union":case "intersection":for(let b of d.of)c(b,h,S);return;case "conditional":c(d.check,h,S),c(d.extends,h,S),c(d.then,h,S),c(d.else,h,S);return;case "keyof":c(d.of,h,S);return;case "returnType":case "parameters":c(d.fn,h,S);return;case "array":h==="annotation"&&c(d.items,h,S);return;case "tuple":if(h==="annotation")for(let b of d.elements)c(b,h,S);return;default:return}};for(let d of Object.keys(e)){let h=new Set;c(e[d].body,"aliasBody",h),o.set(xr(d),h);for(let[S,b]of s(d)??[]){let x=new Set;for(let R of b)c(R,"annotation",x);o.set(ea(d,S),x);}}let l=new Map,u=d=>{let h=l.get(d);if(h)return h;let S=new Set;l.set(d,S);let b=[...o.get(d)??[]];for(;b.length;){let x=b.pop();S.has(x)||(S.add(x),b.push(...o.get(x)??[]));}return S},f=new Map,m=[];for(let d of o.keys()){if(!d.startsWith("p\0")||!u(d).has(d))continue;m.push(d);let[,h,S]=d.split("\0");f.has(h)||f.set(h,new Set),f.get(h).add(S);}let y=new Set;for(let d of Object.keys(e)){let h=xr(d),S=u(h);m.some(b=>S.has(b)&&u(b).has(h))&&y.add(d);}return {properties:f,aliases:y}}function Yi(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[o,a]of Object.entries(r.props))n.has(o)||n.set(o,[]),n.get(o).push(a.type);};return t(e),n}function jr(e,n){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(r=>jr(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 Or(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...Or(n)]));case "union":{let[n,...t]=e.of.map(Or);return new Set([...n??[]].filter(r=>t.every(o=>o.has(r))))}default:return new Set}}var Tt=e=>e.typeAnnotation,Cr=e=>e.returnType;function At(e){let n=e.typeParameters;if(n?.length)return n.map(t=>p.typeParam(t.name,{bound:t.bound,default:t.default}))}var oe=e=>e.type==="Identifier"?e.name:null,ra=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?oe(n.id):null}return oe(e)},oa=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},cn=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function aa(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 o of e[0].elements){let a=n(o);if(a===null)return null;r.push(a);}return r}let t=[];for(let r of e){let o=n(r);if(o===null)return null;t.push(o);}return t.length?t:null}function Pr(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=Pr(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var Hn=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},Ce=e=>e.type==="Literal"||Hn(e)!==null;function ln(e){let n=Hn(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return p.unknown;let r=t.value;return r===null?p.null:r===void 0?p.undefined:typeof r=="string"||typeof r=="number"||typeof r=="boolean"?{t:"literal",value:r,fresh:true}:p.unknown}var Ge=e=>{let n=Hn(e);if(n!==null)return p.literal(n);let t=e.value;return t===null?p.null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?p.literal(t):ln(e)},Rr=e=>e.type==="ArrowFunctionExpression",sa=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,Qn=e=>sa(e)?e.args[0]:e,Zn=e=>sa(e)?e:p.promise(e);function Xn(e){return e.t==="tuple"?true:e.t==="array"?Xn(e.items):e.t==="union"?e.of.some(Xn):false}var Ji=e=>e?.t==="literal"?typeof e.value:void 0,Jn=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>Jn(t,n));function Bn(e,n){let t=Ji(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=>Bn(r,n));case "var":{let r=e.bound??p.unknown;return t!==void 0&&Jn(r,t)||t===void 0&&Xi(r)?true:Bn(r,n)}default:return false}}var Xi=e=>Jn(e,"string")||Jn(e,"number")||Jn(e,"boolean"),ae=(e,n)=>{let t=e;for(let r=0;r<50&&t.t==="apply";r++){let o=K(t,n);if(o===t||o.t==="apply"&&o.name===t.name)break;t=o;}return t};function ia(e){let n=Cr(e);if(!n)return null;let t=e.params.map((o,a)=>({name:oe(o)??`arg${a}`,type:Tt(o)??p.unknown})),r=At(e);return {t:"fn",params:t,returns:e.async?Zn(n):n,...r?{typeParams:r}:{}}}var Pe={then:{},else:{}};function te(e){if(e.type==="Identifier")return e.name;if(e.type!=="MemberExpression")return null;let n=e;if(n.optional)return null;let t=te(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 he=e=>e.includes("."),pn=e=>`${e}#`,Dr=e=>e.endsWith("#");function fn(e,n,t){let r=Z(e,n);return r!==void 0?r:ha(e,n,t)}var De=(e,n,t)=>{let r=fn(e,n,t);return r===void 0?void 0:C(r,t)};function ha(e,n,t){let r=n.lastIndexOf(".");if(r<0)return;let o=fn(e,n.slice(0,r),t);if(o!==void 0)return Q(o,[n.slice(r+1)],t)?.type}function Hi(e,n){let t=n+".",r=new Set;for(let o=e;o;o=o.parent)for(let a of Object.keys(o.vars))(a.startsWith(t)||a===n)&&he(a)&&r.add(a);return [...r].sort((o,a)=>o.length-a.length)}function Ir(e,n,t){let r=Hi(e,n);if(!r.length)return e;let o={};for(let a of r)o[a]=ha(qe(e,o),a,t)??p.unknown;return qe(e,o)}var Sa=new Set(["string","number","boolean","undefined","function","object"]),Qi={string:p.string,number:p.number,boolean:p.boolean,undefined:p.undefined,object:p.union([p.nonPrimitive,p.null])};function ga(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 Zi=p.literal(true),ec=p.literal(false),we=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[Zi,ec]:[n]),En=(e,n)=>{let t=e.filter(r=>xt(r)||n(r));return t.length===e.length?null:B(t)},xt=e=>e.t==="unknown"||e.t==="any";function ca(e,n){let t=e,r=n;if(e.type==="UnaryExpression"&&t.operator==="typeof"&&n.type==="Literal"&&typeof r.value=="string"){let o=te(t.argument);if(o!==null)return {name:o,tag:r.value}}return null}function nc(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let o=we(e).filter(a=>w(a,n,t));return B(o)}function tc(e,n,t){return e.t==="unknown"||e.t==="any"?null:En(we(e),r=>!w(r,n,t))}function rc(e,n){if(!Sa.has(n))return null;let t=Qi[n],r=we(e),a=r.flatMap(s=>t&&xt(s)?we(t):[s]).filter(s=>ga(s,n)||xt(s));return a.length===r.length&&a.every((s,i)=>s===r[i])?null:B(a)}function oc(e,n){if(!Sa.has(n))return null;let t=we(e),r=t.filter(o=>xt(o)||!ga(o,n));return r.length===t.length?null:B(r)}function la(e,n){let t=te(e);if(t!==null&&Ce(n)){let r=Ge(n);if(r.t==="literal"||r.t==="null")return {name:t,lit:r}}return null}function ua(e,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&Ce(n)){let t=te(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 pa(e,n,t,r,o){let a=we(e),s=i=>i.t==="object"?G(i.props,n)?.type:void 0;return En(a,i=>{let c=s(i);return r?!!c&&w(t,c,o):!(c&&w(c,t,o))})}function fa(e,n,t){let r=we(e),o=a=>a.t==="object"&&(n in a.props||!!a.index);return En(r,a=>t?o(a):!o(a))}function ac(e,n,t){return e.t==="unknown"||e.t==="any"||w(n,e,t)?n:null}function sc(e,n,t){return En(we(e),r=>!nn(r,n,t))}var Re=1,un=2,ic=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function et(e,n){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return Re|un;case "literal":return e.value?Re:un;case "null":case "undefined":case "void":return un;case "array":case "tuple":case "fn":case "overload":return Re;case "object":return ic(e)?Re|un:Re;case "nonPrimitive":return Re;case "union":case "intersection":return e.of.reduce((t,r)=>t|et(r,n),0);default:{let t=C(e,n);return t===e?Re|un:et(t,n)}}}var ba=(e,n)=>(et(e,n)&un)!==0,ka=(e,n)=>(et(e,n)&Re)!==0,da=(e,n,t)=>{let r=we(e),o=r.filter(a=>et(a,t)&n);return o.length===r.length?null:B(o)},ma=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,me=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),cc=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function se(e,n,t){if(e.type==="BinaryExpression"){let o=e;if(o.operator==="in"){let h=o.left,S=o.right,b=te(S);if(h.type==="Literal"&&typeof h.value=="string"&&b!==null){let x=De(n,b,t);if(!x)return Pe;let R=String(h.value);return me(b,fa(x,R,true),fa(x,R,false))}return Pe}if(!cc(o.operator))return Pe;let a=o.operator==="!=="||o.operator==="!=",s=o.left,i=o.right,c=ca(s,i)??ca(i,s);if(c){let h=De(n,c.name,t);if(!h)return Pe;let S=rc(h,c.tag),b=oc(h,c.tag);return a?me(c.name,b,S):me(c.name,S,b)}let l=ma(s),u=ma(i),f=l?i:u?s:null,m=f?te(f):null;if((l||u)&&m!==null){let h=m,S=De(n,h,t);if(!S)return Pe;let x=o.operator==="=="||o.operator==="!="?["null","undefined"]:[l??u],R=we(S),Be=En(R,A=>x.includes(A.t)),E=En(R,A=>!x.includes(A.t));return a?me(h,E,Be):me(h,Be,E)}let y=la(s,i)??la(i,s),d=ua(s,i)??ua(i,s);if(y||d){let h=Pe;if(y){let S=De(n,y.name,t);if(S){let b=ac(S,y.lit,t),x=sc(S,y.lit,t);h=a?me(y.name,x,b):me(y.name,b,x);}}if(d){let S=De(n,d.name,t);if(S){let b=pa(S,d.prop,d.lit,true,t),x=pa(S,d.prop,d.lit,false,t),R=a?me(d.name,x,b):me(d.name,b,x);h={then:{...h.then,...R.then},else:{...h.else,...R.else}};}}return h}return Pe}if(e.type==="UnaryExpression"&&e.operator==="!"){let o=se(e.argument,n,t);return {then:o.else,else:o.then}}if(e.type==="CallExpression"){let o=uc(e,n,t);if(o)return o}if(e.type==="LogicalExpression"){let o=e;if(o.operator==="&&"){let a=se(o.left,n,t),s=se(o.right,U(n,a.then),t);return {then:{...a.then,...s.then},else:ya(a.else,{...a.then,...s.else},n,t)}}if(o.operator==="||"){let a=se(o.left,n,t),s=se(o.right,U(n,a.else),t);return {then:ya(a.then,{...a.else,...s.then},n,t),else:{...a.else,...s.else}}}return Pe}let r=te(e);if(r!==null){let o=De(n,r,t);if(o)return me(r,da(o,Re,t),da(o,un,t))}return Pe}function ya(e,n,t,r){let o={};for(let a of Object.keys(e)){let s=e[a],i=n[a]??De(t,a,r);if(!i)continue;let c=B([s,i]),l=De(t,a,r);l&&nn(c,l)||(o[a]=c);}return o}function lc(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 uc(e,n,t){let r=e.callee;if(r.type!=="Identifier")return null;let o=Z(n,r.name);if(!o)return null;let a=lc(o,e.arguments.length);if(!a)return null;let s=e.arguments[a.param],i=s?te(s):null;if(i===null)return null;let c=De(n,i,t);return c?me(i,nc(c,a.type,t),tc(c,a.type,t)):null}var U=(e,n)=>Object.keys(n).length?qe(e,n):e;function ye(e){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(t=>ye(t));case "IfStatement":{let n=e;return !!n.alternate&&ye(n.consequent)&&ye(n.alternate)}case "TryStatement":{let n=e;if(n.finalizer&&ye(n.finalizer))return true;let t=!n.handler||ye(n.handler.body);return ye(n.block)&&t}default:return false}}var yc=e=>{let n={};for(let t of Object.keys(e))n[t]={params:[],body:e[t]};return n};function hc(e){let n=[];return e.maxDepth!==void 0&&n.push(Sr(e.maxDepth)),e.maxNodes!==void 0&&n.push(gr(e.maxNodes)),e.maxArgs!==void 0&&n.push(br(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(mr(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(yr(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(hr(e.memberDepth)),n}function Sc(e,n,t){let{min:r,max:o}=_e(e.params);return n.length<r||n.length>o?true:Vr(e.params,n,t).length>0}function Vr(e,n,t){if(!e.some(a=>a.bound))return [];let r=Pn(e,n),o=[];return e.forEach((a,s)=>{if(!a.bound||s>=n.length)return;let i=N(a.bound,r);w(n[s],i,t)||o.push({param:a,arg:n[s],expected:i});}),o}function gc(e,n){let t=e.typeRefs;if(!t?.length)return [];let r=[];for(let o of t){let a={type:"Identifier",name:o.name,loc:o.loc},s=n[o.name];if(!s){r.push(_("unknown-name",a,`Cannot find name '${o.name}'.`));continue}let i=o.args;if(!i)continue;let{min:c,max:l}=_e(s.params);if(i.length<c||i.length>l){r.push(g.genericTypeArity(a,o.name,c,l));continue}for(let u of Vr(s.params,i,n))r.push(g.constraintViolation(a,u.param.name,u.arg,u.expected));}return r}function $a(e,n,t={}){let r=vc(e),o={...yc(n.types),...n.schemes,...r.schemes},{schemes:a,diagnostics:s}=kc(r,o),{schemes:i,diagnostics:c}=Nc(r,a),l=Ar(e),u={overlay:new WeakMap,sink:ne(),env:n,schemes:i,importNames:new Set,resolvedSchemes:new Set,invalidTargets:l.invalidTargets,evolving:new Set,flow:new Map,stmtFlow:new WeakMap,invoked:new WeakSet,shadowed:null,shortCircuits:new WeakSet},f=t.profile?capability.compileProfile(t.profile):void 0;f&&Vt(f.typeLimits);try{let m,y=wc(e,u);try{m=v(e,y,u);}catch(S){if(S instanceof Ee||S instanceof Sn)u.sink.report(_("too-deep",e,S.message));else if(S instanceof Te)u.sink.report(_("too-complex-union",e,S.message));else throw S;m=p.unknown;}let d=[];f&&d.push(...Nt(f)),t.limits&&d.push(...hc(t.limits)),t.resultType&&d.push(kr(t.resultType,i));let h=[...s,...c,...u.sink.all,...l.diagnostics,...gc(e,i),...t.unused?Er(e,t.unused):[],...d.length?pr(e,d,{overlay:u.overlay,schemes:i}):[]];return {type:m,overlay:u.overlay,diagnostics:h,schemes:u.schemes}}finally{f&&Ut();}}function bc(e,n,t={}){let r=$a(e,n,t),o={},a=new Map,s,i=l=>{let u=[];if(l.type==="VariableDeclaration")for(let f of l.declarations){let m=oe(f.id),y=r.overlay.get(f);m&&y&&(o[m]=y.type,u.push(m));}else if(l.type==="FunctionDeclaration"){let f=l.id?.name,m=r.overlay.get(l);f&&m&&(o[f]=m.type,u.push(f));}return u};for(let l of e.body??[])if(l.type==="VariableDeclaration"||l.type==="FunctionDeclaration")i(l);else if(l.type==="ExportNamedDeclaration"){let u=l;if(u.declaration)for(let f of i(u.declaration))a.set(f,f);else for(let f of u.specifiers)a.set(f.exported.name,f.local.name);}else if(l.type==="ExportDefaultDeclaration"){let u=r.overlay.get(l.declaration);s=u?u.type:p.unknown;}let c={};if(a.size||s!==void 0){for(let[l,u]of a)o[u]&&(c[l]={type:o[u]});s!==void 0&&(c.default={type:s});}else for(let l in o)c[l]={type:o[l]};return {type:{t:"object",props:c},diagnostics:r.diagnostics}}function kc(e,n){let t=na(e.schemes,n),r=Object.fromEntries(Object.entries(e.schemes).filter(([c])=>!t.has(c))),o=ta(r,n),a=new Set([...t,...o.aliases]);if(!a.size&&!o.properties.size)return {schemes:n,diagnostics:[]};let s={...n};for(let c of a)s[c]={params:e.schemes[c].params,body:p.any};for(let[c,l]of o.properties){if(a.has(c))continue;let{params:u,body:f}=e.schemes[c];s[c]={params:u,body:jr(f,l)};}let i=[];for(let c of t)i.push(g.circularTypeAlias(e.ids[c],c));for(let[c,l]of o.properties)for(let u of l)i.push(g.circularTypeAnnotation(e.props[c]?.[u]??e.ids[c],u));for(let c of o.aliases)i.push(g.circularTypeAlias(e.ids[c],c));return {schemes:s,diagnostics:i}}var Fa=(e,n)=>e.t==="index"&&Xe(ue(e,n));function va(e,n,t,r){let o=a=>{if(Array.isArray(a)){let l=false,u=a.map(f=>{let m=o(f);return m!==f&&(l=true),m});return l?u:a}if(!a||typeof a!="object")return a;let s=a;if(Fa(s,n)){let l=s;return r.push(g.noSuchMember(t,l.obj,La(l.key))),p.any}let i=false,c={};for(let l of Object.keys(s)){let u=o(s[l]);u!==s[l]&&(i=true),c[l]=u;}return i?c:s};return o(e)}var La=e=>e.t==="literal"?String(e.value):P(e);function Nc(e,n){let t=[],r={...n},o=false;for(let a of Object.keys(e.schemes)){let s=n[a],i=e.ids[a];if(!s||!i)continue;let c=e.props[a],l=(f,m)=>{if(c&&(f.t==="union"||f.t==="intersection")){let y=f.of.map(d=>l(d,m));return y.every((d,h)=>d===f.of[h])?f:{...f,of:y}}if(c&&f.t==="object"){let y={},d=false;for(let[h,S]of Object.entries(f.props)){let b=va(S.type,n,c[h]??m,t);b!==S.type&&(d=true),y[h]=b===S.type?S:{...S,type:b};}return d?{...f,props:y}:f}return va(f,n,m,t)},u=l(s.body,i);u!==s.body&&(r[a]={...s,body:u},o=true);}return {schemes:o?r:n,diagnostics:t}}var vc=e=>{let n={},t={},r={};return ast.walk(e,{TSTypeAliasDeclaration(o){let a=o;if(!(!a.id?.name||!a.typeAnnotation)&&(n[a.id.name]={params:At(o)??[],body:a.typeAnnotation},t[a.id.name]=a.id,a.typeNode)){let s={};Va(a.typeNode,s),r[a.id.name]=s;}}}),{schemes:n,ids:t,props:r}};function Va(e,n){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])Va(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 wc(e,n){let t=n.env.modules,r={};ast.walk(e,{ImportDeclaration(o){let a=o;if(a.importKind==="type")return;let s=a.source.value,i=typeof s=="string"?t?.[s]:void 0;if(!i){n.sink.report(g.unknownModule(a.source,String(s)));for(let c of a.specifiers)r[c.local.name]=p.unknown;return}for(let c of a.specifiers){if(c.importKind==="type")continue;let l=c.local.name;if(Ye(l,c.local,n),l in r){n.sink.report(g.cannotRedeclare(c.local,l));continue}if(c.type==="ImportNamespaceSpecifier"){r[l]=i;continue}let u=c.type==="ImportSpecifier"?c.imported.name:"default",f=Q(i,[u],n.schemes);f?r[l]=f.type:(n.sink.report(g.noSuchMember(c,i,u)),r[l]=p.unknown);}}});for(let o in r)n.importNames.add(o);return Object.keys(r).length?qe(n.env.scope,r):n.env.scope}var k=(e,n,t,r)=>(e.overlay.set(n,{type:t,scope:r}),t);function v(e,n,t,r){switch(Wt(),e.type){case za:return e.schema;case "JSXElement":case "JSXFragment":return k(t,e,v(ast.desugarJSX(e,{emptyPropsAsObject:true}),n,t),n);case "Literal":return k(t,e,ln(e),n);case "Placeholder":return k(t,e,p.any,n);case "Identifier":{let o=e.name,a=ss(o,t)??Z(n,o);return a===void 0?o==="undefined"?k(t,e,p.undefined,n):(t.sink.report(g.unknownName(e,o)),k(t,e,p.any,n)):k(t,e,a,n)}case "MemberExpression":return k(t,e,Ua(e,n,t),n);case "CallExpression":return k(t,e,Dc(e,n,t,r),n);case "ArrowFunctionExpression":return zr(e,n,t);case "FunctionDeclaration":return t.sink.report(g.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),k(t,e,p.unknown,n);case "FunctionExpression":return t.sink.report(g.unsupported(e,"anonymous function (use an arrow)")),k(t,e,p.unknown,n);case "ThisExpression":return t.sink.report(g.unsupported(e,"'this'")),k(t,e,p.unknown,n);case "BlockStatement":return k(t,e,rs(e,n,t),n);case "ReturnStatement":{let o=e.argument;return k(t,e,o?v(o,n,t):p.unknown,n)}case "IfStatement":return Se(e,n,t),t.overlay.get(e)?.type??p.unknown;case "ForStatement":case "WhileStatement":case "DoWhileStatement":case "ForOfStatement":case "ForInStatement":case "BreakStatement":case "ContinueStatement":case "ThrowStatement":case "TryStatement":case "SwitchStatement":return Se(e,n,t),t.overlay.get(e)?.type??p.unknown;case "AssignmentExpression":{let o=e,a=o.left;if(o.operator==="="&&(a.type==="ArrayExpression"||a.type==="ObjectExpression")){let y=v(o.right,n,t);return nt(a,y,n,t),k(t,e,y,n)}let s=o.operator!=="=",i=s?Ca(a,n,t):is(a,n,t);if(a.type==="MemberExpression"){let y=t.overlay.get(a.object)?.type,d=y&&C(y,t.schemes);d&&(d.t==="array"||d.t==="tuple")&&d.readonly&&t.sink.report(g.readonlyWrite(a,d));}let c=te(a),l=t.invalidTargets.has(a);if(!s){let y=c!==null&&t.evolving.has(c),d=o.right,h=y||l?v(d,n,t):ie(d,i,n,t,true),S=Ce(d)?k(t,d,ln(d),n):h;return c!==null&&Ct(c,n,t)?ge(c,Pt(c,false,S,i,n,t),t):c!==null&&he(c)&&ge(c,i,t),k(t,e,S,n)}let u=t.sink.all.length,f=el(o,i,n,t),m=t.sink.all.length>u;return !l&&!m&&!w(f,i,t.schemes)&&t.sink.report(g.notAssignable(e,f,i,t.schemes)),c!==null&&Ct(c,n,t)?ge(c,Pt(c,true,f,i,n,t),t):c!==null&&he(c)&&ge(c,xe(i),t),k(t,e,f,n)}case "UpdateExpression":{let a=e.argument,s=Ca(a,n,t);!Me(s,a,t)&&!tt(s,t.schemes)&&t.sink.report(g.arithmeticOperand(a,"operand"));let i=te(a);return i!==null&&Ct(i,n,t)?ge(i,Pt(i,true,s,s,n,t),t):i!==null&&he(i)&&ge(i,xe(s),t),k(t,e,p.number,n)}case "ExpressionStatement":return k(t,e,v(e.expression,n,t),n);case "VariableDeclaration":return It(e,n,t),k(t,e,p.unknown,n);case "TSTypeAliasDeclaration":{let o=e.id?.name,a=o?t.schemes[o]:void 0;return k(t,e,a?Wc(a.body,n,t,e,a.params.length>0):p.unknown,n)}case "BinaryExpression":return k(t,e,al(e,n,t),n);case "LogicalExpression":{let o=e,a=v(o.left,n,t),s=o.operator==="??"?void 0:se(o.left,n,t.schemes),i=U(n,s?o.operator==="&&"?s.then:s.else:{}),{value:c,effect:l}=Mr(t,()=>v(o.right,i,t));return l.size&&ja([{effect:l,scope:i},{scope:U(n,s?o.operator==="&&"?s.else:s.then:{})}],t),k(t,e,il(o.operator,a,c,t.schemes),n)}case "UnaryExpression":return k(t,e,ll(e,n,t),n);case "ConditionalExpression":{let o=e;v(o.test,n,t);let a=se(o.test,n,t.schemes),s=U(n,a.then),i=U(n,a.else),c=Mr(t,()=>v(o.consequent,s,t)),l=Mr(t,()=>v(o.alternate,i,t));return (c.effect.size||l.effect.size)&&ja([{effect:c.effect,scope:s},{effect:l.effect,scope:i}],t),k(t,e,B([c.value,l.value]),n)}case "ObjectExpression":return k(t,e,ul(e,n,t),n);case "ArrayExpression":return k(t,e,hs(e,n,t),n);case "TemplateLiteral":{if(Hn(e)!==null)return k(t,e,ln(e),n);for(let o of e.expressions){let a=v(o,n,t);ys(a,t.schemes)||t.sink.report(g.notTextConvertible(o,a));}return k(t,e,p.string,n)}case "AwaitExpression":{let o=e.argument,a=o?v(o,n,t):p.unknown;return k(t,e,Qn(a),n)}case "Program":{let o=Dt(e.body,n,t,new Set(t.importNames)).scope;return k(t,e,p.unknown,o)}case "JsonExpression":return k(t,e,Lr(e.body,n,t,e),n);case "ChainExpression":{let o=e.expression,a=v(o,n,t);return k(t,e,Tc(o,t)?B([a,p.undefined]):a,n)}case "TSAsExpression":{let o=e,a=v(o.expression,n,t),s=xn(o.typeAnnotation,n,t,e);return _n(a,s,t.schemes)||t.sink.report(g.castUnsound(e,a,s)),k(t,e,s,n)}default:return t.sink.report(g.unsupported(e,`'${e.type}'`)),k(t,e,p.unknown,n)}}var Bc=new Set(["constructor","prototype","__proto__"]);function Ec(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 Ua(e,n,t,r=false){let o=v(e.object,n,t),a=Ec(e);if(a!==null&&Bc.has(a))return t.sink.report(g.forbiddenMember(e,a)),p.unknown;let s=xc(e,o,n,t),i=r?null:te(e);if(i!==null&&he(i)){let c=ss(i,t)??Z(n,i);if(c!==void 0&&w(c,s,t.schemes))return c}return s}function Tc(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 Ac=e=>e.t==="unknown";function Me(e,n,t){return Ac(e)?(t.sink.report(g.unknownValue(n)),true):false}function An(e){let n=Rt(e),t=n.some(o=>o.t==="null"),r=n.some(o=>o.t==="undefined");return t||r?{null:t,undefined:r}:null}function Ur(e){let n=Rt(e).filter(t=>t.t!=="null"&&t.t!=="undefined");return n.length===Rt(e).length||n.length===0?e:B(n)}var Wa=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(Wa);function xc(e,n,t,r){if(!e.optional&&Me(n,e.object,r))return k(r,e,p.any,t);let o=e.optional?null:An(n);o&&r.sink.report(g.possiblyNullish(e.object,o)),e.optional&&An(n)&&r.shortCircuits.add(e);let a=e.optional||o?Ur(n):n;if(e.computed){let c=v(e.property,t,r);if(c.t==="literal"&&typeof c.value!="boolean"){let u=String(c.value),f=Q(a,[u],r.schemes);return f?f.type:(wa(e,a,u,r),p.any)}let l=D(p.index(a,c));return l.t!=="index"||Wa(c)?l:p.unknown}let s=e.property.name,i=Q(a,[s],r.schemes);return i?i.type:(wa(e,a,s,r),p.any)}function wa(e,n,t,r){let o=Y(n,r.schemes)?K(n,r.schemes):n;o.t==="object"||o.t==="array"||o.t==="tuple"||o.t==="union"?r.sink.report(g.noSuchMember(e,n,t)):o.t!=="any"&&o.t!=="unknown"&&r.sink.report(g.notObject(e,n));}function Oc(e,n,t,r){let o=e.arguments[0];if(!o){r.sink.report(g.missingArgument(e,"schema",p.unknown));return}if(o.type!=="Identifier"){r.sink.report(g.asserterNeedsName(o,n));return}let a=o.name,s=Z(t,a),i=r.schemes[a];if(s===void 0){r.sink.report(i?g.typeAsValue(o,a):g.unknownName(o,a));return}if(!i||i.params.length>0){r.sink.report(g.notASchema(o,a));return}if(!(_a(a,r)&&!jc(t,a)))return r.overlay.set(o,{type:i.body,scope:t}),i.body}function _a(e,n){if(!n.env.asserters?.size)return false;let t=n.schemes[e];return t!==void 0&&t.params.length===0&&Z(n.env.scope,e)!==void 0}function jc(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 Ye(e,n,t){_a(e,t)&&t.sink.report(g.shadowsSchema(n,e));}function Wr(e,n){let t=ae(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function Cc(e,n){let t=Z(e.scope,n);if(!t)return;let r=Wr(t,e.schemes);return r?ae(r,e.schemes):void 0}function Pc(e,n,t,r){let o=Wr(v(n[0],t,r),r.schemes),a=n.length>1?v(n[1],t,r):p.undefined;if(o){let s=Ln(a,o,r.schemes);s.length&&r.sink.report(g.propsMismatch(n[1]??e,o,Un(s)));}return k(r,e,p.boolean,t)}var za="TSLiteSyntheticArg",Rc=e=>({type:za,schema:e});function Ka(e,n,t){if(!e.some(a=>a.type==="SpreadElement"))return {nodes:[...e],spread:null};let r=[],o=null;for(let a of e){if(a.type!=="SpreadElement"){r.push(a);continue}let s=a.argument;if(s.type==="ArrayExpression"&&s.elements.every(c=>c&&c.type!=="SpreadElement")){for(let c of s.elements)r.push(c);continue}let i=ae(v(s,n,t),t.schemes);if(i.t==="tuple")for(let c of i.elements)r.push(Rc(c));else o={elem:Kr(i,s,t),node:a};}return {nodes:r,spread:o}}function Dc(e,n,t,r){let o=t.inference?{...t,inference:void 0}:t,a=e.arguments,s=Pr(e.callee);if(s){let d=o.env.accessors?.[s];if(d){let h=aa(a);if(h){let S=Q(d,h,o.schemes);return S?S.type:(o.sink.report(g.noSuchMember(e,d,h.join("."))),p.unknown)}return a.forEach(S=>v(S,n,o)),p.unknown}}if(s&&o.env.asserters?.has(s)){let d=Oc(e,s,n,o);a.length<2&&a.length>0&&o.sink.report(g.missingArgument(e,"value",p.unknown));for(let h=1;h<a.length;h++){let S=v(a[h],n,o);h===1&&d&&L(S).size===0&&!_n(S,d,o.schemes)&&o.sink.report(g.unprovableValue(a[h],S,d,e.arguments[0].name));}return d??p.unknown}if(s&&o.env.matchers?.has(s))return Pc(e,a,n,o);e.callee.type==="ArrowFunctionExpression"&&o.invoked.add(e.callee);let i=C(v(e.callee,n,o),o.schemes);if(!e.optional&&Me(i,e.callee,o))return k(o,e,p.any,n);let c=An(i);c&&(e.optional?o.shortCircuits.add(e):o.sink.report(g.possiblyNullish(e.callee,c,true)));let l=c?C(Ur(i),o.schemes):i;if(l.t==="any")return a.forEach(d=>v(d,n,o)),p.any;if(l.t==="overload")return $c(e,l,n,o,r);if(l.t!=="fn")return a.forEach(d=>v(d,n,o)),o.sink.report(g.notCallable(e,l)),p.unknown;let u=Ka(a,n,o),f=u.nodes.map(d=>qa(d,n,o)),m=Ga(e),y=!m||Ya(l,m.length);return y||o.sink.report(Ja(e,[l],m.length)),ot(e,l,u.nodes,f,n,o,u.spread,r,y?m:void 0)}function qa(e,n,t){if(Rr(e))return p.any;if(e.type!=="CallExpression")return v(e,n,t);let r=ne(),o=v(e,n,{...t,sink:r});return r.hasErrors()?p.any:(r.all.forEach(a=>t.sink.report(a)),o)}function ot(e,n,t,r,o,a,s=null,i,c){let l=E=>{if(!i)return E;let A=N(n.returns,E);if(A.t==="fn"&&i.t==="fn"){let j=E,X=Math.min(A.params.length,i.params.length);for(let ce=0;ce<X;ce++)j=$(A.params[ce].type,i.params[ce].type,j)??j;return $(A.returns,i.returns,j)??j}return $(A,i,E)??E};if(!s){let E=Ha(e,n,r.length,t);E&&(a.sink.report(E),a={...a,sink:ne()});}let u=c?zc(e,n,c,a):void 0,f=u??jt(n,l($n(n,r).bindings)),m=u||!i?{}:jt(n,l({})),y={returnMapper:m,nonFixing:f,outer:Ba(n,f)},d=new Set((n.typeParams??[]).map(E=>E.name)),h=E=>[...L(E)].some(A=>d.has(A)),S=new Set,b=[];t.forEach((E,A)=>{if(Rr(E)){let j=n.params[A]?.type??p.any,X=Ze(N(j,Ic(n,j,f,a.schemes)));r[A]=zr(E,o,a,X);}else if(E.type==="CallExpression"&&r[A].t==="any")r[A]=v(E,o,a,N(n.params[A]?.type??p.unknown,Ba(n,f)));else if(Ce(E)){let j=n.params[A]?.type??p.unknown,X=Ge(E);Bn(N(j,m),X)&&(r[A]=k(a,E,X,o));}else if(E.type==="ArrayExpression"||E.type==="ObjectExpression"||E.type==="ConditionalExpression"){let j=n.params[A]?.type??p.unknown,X=N(j,m);if(E.type==="ArrayExpression"&&Xn(X)){r[A]=qr(E,X,o,{...a,inference:y}),b.push(A);return}if(j.t==="var"&&!j.bound||!gs(X,a.schemes))return;S.add(A),h(j)&&(r[A]=ie(E,j,o,{...a,sink:ne(),inference:y},true)),b.push(A);}});let x=u||$r(n,jt(n,l($n(n,r).bindings)),a.schemes);u&&Mc(e,n,x,a);for(let E of b)r[E]=fl(t[E],N(n.params[E].type,x),o,a,false);Gc(e,n,r,x,a,t,s),t.forEach((E,A)=>{let j=n.params[A];E.type==="ObjectExpression"&&j&&!j.variadic&&!S.has(A)&&Fr(E,N(j.type,x),a);});let R=N(n.returns,$r(n,x,a.schemes)),Be=R.t==="union"?B(R.of):R;return Zt(en(Be,a.schemes,void 0,0,L(Be)))}function jt(e,n){let t=e.typeParams;if(!t?.length)return {};let r={};for(let o of t)n[o.name]&&(r[o.name]=n[o.name]);return r}var $r=(e,n,t)=>dt(e.typeParams??[],n,t);function Ic(e,n,t,r){if(n.t!=="fn"||!e.typeParams?.some(i=>!t[i.name]))return t;let o=new Set;for(let i of n.params)for(let c of L(i.type))o.add(c);let a=$r(e,t,r),s={...t};for(let i of e.typeParams)!t[i.name]&&o.has(i.name)&&(s[i.name]=a[i.name]);return s}function Ba(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]=Mn);return t}function Mc(e,n,t,r){for(let o of n.typeParams??[]){let a=t[o.name];if(!o.bound||!a)continue;let s=N(o.bound,t);w(a,s,r.schemes)||r.sink.report(g.constraintViolation(e,o.name,a,s));}}function $c(e,n,t,r,o){let a=Ka(e.arguments,t,r),s=a.nodes,i=s.map(u=>qa(u,t,r)),c=Ga(e),l=c?n.signatures.filter(u=>Ya(u,c.length)):n.signatures;return c&&!l.length?(r.sink.report(Ja(e,n.signatures,c.length)),Ta(e,n.signatures,a,s,i,t,r,o,void 0)):Ta(e,l,a,s,i,t,r,o,c)}function Fc(e,n,t,r,o,a,s){if(!n.length)return e;let c=n.map(f=>{let m=ne();return ot(e,f,t,[...r],o,{...a,sink:m},s),m.all}).filter(f=>f.length>0);if(!c.length)return e;let l=c.length===1||c.length>3?c[c.length-1]:c.some(f=>f.length>1)?c.reduce((f,m)=>m.length<=f.length?m:f):c.flat(),u=l[0].node;return l.every(f=>f.node===u)?u:e}function Ea(e,n,t,r,o,a){return n.length?!n.some(i=>i.typeParams?.length)&&n.length>1?p.intersection(n.map(i=>i.returns)):ot(e,Lc(n,t.length),t,[...r],o,{...a,sink:ne()},null):p.unknown}function Lc(e,n){let t=e[0],r=-1;for(let o of e){let a=o.params.length;if(o.params.some(s=>s.variadic)||a>=n)return o;a>r&&(r=a,t=o);}return t}function Ta(e,n,t,r,o,a,s,i,c){let l={t:"overload",signatures:n},u=S=>t.spread?Kc(S,r.length):Xa(S,r.length),f=l.signatures.filter(u);if(f.length>1)for(let S of f){let b=ne(),x=ot(e,S,r,[...o],a,{...s,sink:b},t.spread,i,c);if(!b.all.some(R=>R.kind==="type"&&R.severity==="error"))return b.all.forEach(R=>s.sink.report(R)),x}let m=f.length>1?void 0:l.signatures.find(S=>u(S)&&qc(S,o,s));if(m||(f.length===1?m=f[0]:l.signatures.length===1&&(m=l.signatures[0])),!m){let S=t.spread?null:Ha(e,l.signatures,r.length,r);return s.sink.report(S??g.noMatchingOverload(Fc(e,f,r,o,a,s,t.spread),l,o)),Ea(e,l.signatures,r,o,a,s)}let y=s.sink.all.length,d=ot(e,m,r,o,a,s,t.spread,i,c),h=s.sink.all.slice(y).some(S=>S.kind==="type"&&S.severity==="error");return l.signatures.length>1&&h?Ea(e,l.signatures,r,o,a,s):d}function Vc(e,n,t,r){let o=Z(n,e[0]);if(o===void 0)return t.sink.report(g.unknownName(r,e[0])),p.unknown;let a=e.slice(1),s=a.length?Q(o,a,t.schemes)?.type:o;return s?s.t==="literal"?p.literal(s.value):s:(t.sink.report(g.noSuchMember(r,o,a.join("."))),p.unknown)}function xn(e,n,t,r){let o=a=>{if(Array.isArray(a)){let l=false,u=a.map(f=>{let m=o(f);return m!==f&&(l=true),m});return l?u:a}if(!a||typeof a!="object")return a;let s=a;if(s.t==="typeQuery")return Vc(s.path,n,t,r);if(s.t==="apply"&&typeof s.name=="string"){Uc(s.name,n,t,r);let l=t.schemes[s.name];if(!l)return p.any;if(Array.isArray(s.args)&&Sc(l,s.args,t.schemes))return p.any}if(Fa(s,t.schemes)){let l=s;return t.sink.report(g.noSuchMember(r,l.obj,La(l.key))),p.any}if(s.t==="union"&&Array.isArray(s.of)){let l=s.of,u=l.map(y=>o(y)),f=u.every((y,d)=>y===l[d]),m=p.union(u);return m.t!=="union"?m:f?s:m}if(s.t==="intersection"&&Array.isArray(s.of)){let l=s.of,u=l.map(y=>o(y)),f=p.intersection(u);return f.t==="intersection"&&f.of.length===l.length&&f.of.every((y,d)=>y===l[d])?s:f}if(s.t==="tuple"&&Array.isArray(s.elements)){let l=s.elements,u=l.map(y=>o(y)),f=p.tuple(u,s.flags,s.readonly);return u.every((y,d)=>y===l[d])&&f.elements.every((y,d)=>y===u[d])?s:f}let i=false,c={};for(let l of Object.keys(s)){let u=o(s[l]);u!==s[l]&&(i=true),c[l]=u;}return i?c:s};return o(e)}function Uc(e,n,t,r){if(t.resolvedSchemes.has(e))return;let o=t.schemes[e];if(!o)return;t.resolvedSchemes.add(e);let a=xn(o.body,n,t,r);a!==o.body&&(t.schemes[e]={...o,body:a});}function Wc(e,n,t,r,o){let a={...t,sink:ne(),resolvedSchemes:new Set(Object.keys(t.schemes))},s=xn(e,n,a,r);return a.sink.hasErrors()?e:o?s:en(s,t.schemes)}var rt=(e,n,t)=>{let r=Tt(e);return r===void 0?r:xn(r,n,t,e)},_c=(e,n,t)=>{let r=Cr(e);return r===void 0?r:xn(r,n,t,e)},Ga=e=>{let n=e.typeArguments;return n?.length?n:void 0},Ya=(e,n)=>{let{min:t,max:r}=_e(e.typeParams??[]);return n>=t&&n<=r};function Ja(e,n,t){if(n.length===1){let{min:a,max:s}=_e(n[0].typeParams??[]);return g.wrongTypeArgumentCount(e,a<s?`${a}-${s}`:a,t)}let r=-1/0,o=1/0;for(let a of n){let{min:s,max:i}=_e(a.typeParams??[]);s>t?o=Math.min(o,s):i<t&&(r=Math.max(r,i));}return r!==-1/0&&o!==1/0?g.noOverloadTypeArgumentCount(e,t,r,o):g.wrongTypeArgumentCount(e,r===-1/0?o:r,t)}function zc(e,n,t,r){let o=n.typeParams??[],a=Pn(o,t.slice(0,o.length));for(let s of Vr(o,t,r.schemes))r.sink.report(g.constraintViolation(e,s.param.name,s.arg,s.expected));return a}function Kc(e,n){let t=0,r=false;for(let o of e.params)o.variadic?r=true:o.optional||t++;return n>=t&&(r||n<e.params.length)}function Xa(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 Ha(e,n,t,r){let o=Array.isArray(n)?n:[n];if(!o.length||o.some(l=>Xa(l,t)))return null;let a=o.some(l=>l.params.some(u=>u.variadic)),s=Math.min(...o.map(l=>l.params.filter(u=>!u.optional&&!u.variadic).length)),i=Math.max(...o.map(l=>l.params.length)),c=a?`${s}`:s<i?`${s}-${i}`:`${s}`;return t<s?g.argumentArity(e,c,t,"missing",a):g.argumentArity(r[i]??e,c,t,"excess",a)}function qc(e,n,t){let r=jt(e,$n(e,n).bindings);for(let o=0;o<e.params.length;o++){let a=e.params[o];if(a.variadic){let s=N(a.type,r),i=s.t==="array"?s.items:p.unknown;for(let c=o;c<n.length;c++)if(!w(n[c],i,t.schemes))return false;return true}if(o>=n.length){if(!a.optional)return false;continue}if(!w(n[o],N(a.type,r),t.schemes))return false}return true}function Gc(e,n,t,r,o,a=e.arguments??[],s=null){let i=l=>a[l]??e;for(let l=0;l<n.params.length;l++){let u=n.params[l];if(u.variadic){let m=N(u.type,r),y=m.t==="array"?m.items:p.unknown;for(let d=l;d<t.length;d++)w(t[d],y,o.schemes)||o.sink.report(g.notAssignable(i(d),t[d],y,o.schemes));break}let f=N(u.type,r);l>=t.length||w(t[l],f,o.schemes)||o.sink.report(g.notAssignable(i(l),t[l],f,o.schemes));}let c=n.params.find(l=>l.variadic);if(s){let l=t.length,u=n.params.filter(f=>!f.optional&&!f.variadic).length;if(!(l>=u&&(c||l<n.params.length))){o.sink.report(g.spreadArgument(s.node));return}if(c){let f=N(c.type,r),m=f.t==="array"?f.items:p.unknown;w(s.elem,m,o.schemes)||o.sink.report(g.notAssignable(s.node,s.elem,m,o.schemes));}return}}function at(e,n,t){if(e.t==="object"){let r=G(e.props,n);return r?r.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let r=e.of.map(o=>at(C(o,t),n,t)).filter(o=>o!==void 0);return r.length===0?void 0:r.length===1?r[0]:D({t:"intersection",of:r})}if(e.t==="union")return Qa(e.of,n,t)}function Qa(e,n,t){let r=e.map(o=>at(C(o,t),n,t)).filter(o=>o!==void 0);return r.length?B(r):void 0}var _r=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(_r),Aa=new WeakMap;function Yc(e,n,t){let r=Aa.get(t);if(r)return r;let o=new Set;for(let s of e)if(s.t==="object")for(let i of Object.keys(s.props))o.add(i);let a=new Set;for(let s of o){let c=e.map(u=>at(u,s,n)).filter(u=>u!==void 0);if(!c.some(_r))continue;c.length===e.length&&c.every(u=>nn(u,c[0]))||a.add(s);}return Aa.set(t,a),a}var Za=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&Za(e.object),Jc=(e,n)=>e.some(t=>t.t==="object"&&G(t.props,n)?.optional===true);function es(e,n,t,r,o){let a=Yc(n,r,o),s=new Set;if(!a.size)return {chosen:n,ignored:s};let i=[],c=new Set;for(let f of e.properties){if(f.type!=="Property")continue;let m=f,y=cn(m);if(y===null||(c.add(y),!a.has(y)||!Za(m.value)))continue;let d=t(m);d&&_r(d)&&i.push([y,d]);}for(let f of a)!c.has(f)&&Jc(n,f)&&i.push([f,p.undefined]);let l=n.map(()=>1);for(let[f,m]of i){let y=false;n.forEach((d,h)=>{if(l[h]!==1)return;let S=at(d,f,r);S!==void 0&&(w(m,S,r)?y=true:l[h]=2);}),n.forEach((d,h)=>{l[h]===2&&(l[h]=y?0:1);}),y||s.add(f);}let u=n.filter((f,m)=>l[m]===1);return {chosen:u.length?u:n,ignored:s}}function xa(e,n,t,r,o,a=false){let s={},i={};for(let c of e.properties){let l=c;if(l.type==="SpreadElement"){let d=C(v(l.argument,t,r),r.schemes);if(d.t==="object")for(let[h,S]of Object.entries(d.props))s[h]=S,i[h]=S;continue}let u=l,f=cn(u),m=f!==null?n(f):void 0,y=m?ie(u.value,m,t,r,o):pe(v(u.value,t,r));f!==null&&(s[f]={type:a?y:m??y},i[f]={type:y}),k(r,l,y,t);}return {checked:s,narrowed:i}}function ie(e,n,t,r,o=false){let a=r.inference,s=a?N(n,a.returnMapper):n,i=u=>a?N(u,a.nonFixing):u,c=C(s,r.schemes);switch(c.t==="conditional"&&(c=ve(c,r.schemes)??c),Ce(e)?"Literal":e.type){case "Literal":{let u=Ge(e);return w(u,n,r.schemes)||r.sink.report(g.notAssignable(e,u,n,r.schemes)),k(r,e,ln(e),t),o?Bn(s,u)?u:pe(ln(e)):n}case "ArrayExpression":{if(Xn(c)){let u=qr(e,c,t,r);return w(u,n,r.schemes)||pl(e,u,c,t,r)||r.sink.report(g.notAssignable(e,u,n,r.schemes)),k(r,e,u,t)}if(c.t==="array"){let u=[];for(let m of e.elements){if(!m)continue;let y=m;if(y.type==="SpreadElement"){let d=ie(y.argument,n,t,r,o);d.t==="array"&&u.push(d.items);}else u.push(ie(y,c.items,t,r,o));}let f=o&&u.length>0?p.array(B(u)):i(n);return k(r,e,f,t)}break}case "ObjectExpression":{if(c.t==="object"||c.t==="intersection"){let u=r.sink.all.length,{checked:f,narrowed:m}=xa(e,S=>at(c,S,r.schemes),t,r,o),y=r.sink.all.slice(u).some(S=>S.kind==="type"&&S.severity==="error"),d=Fr(e,n,r),h={t:"object",props:f};return !d&&!y&&!w(h,n,r.schemes)&&r.sink.report(g.notAssignable(e,h,n,r.schemes)),k(r,e,o?{t:"object",props:m}:n,t)}if(c.t==="union"){let u=c.of.filter(R=>R.t==="object"||R.t==="intersection");if(!u.length)break;let f=e,{chosen:m,ignored:y}=es(f,u,R=>v(R.value,t,{...r,sink:ne()}),r.schemes,n),d=r.sink.all.length,{checked:h,narrowed:S}=xa(f,R=>Qa(y.has(R)?u:m,R,r.schemes),t,r,o,true),b=Fr(f,n,r),x={t:"object",props:h};return !b&&r.sink.all.length===d&&!w(x,n,r.schemes)&&r.sink.report(g.notAssignable(e,x,n,r.schemes)),k(r,e,o?{t:"object",props:S}:n,t)}break}case "ArrowFunctionExpression":{let u=a?C(N(n,a.nonFixing),r.schemes):c;if(u.t==="fn"){let f=zr(e,t,r,u);return w(f,n,r.schemes)||r.sink.report(g.notAssignable(e,f,n,r.schemes)),k(r,e,i(n),t)}break}case "ConditionalExpression":{let u=e;v(u.test,t,r);let f=se(u.test,t,r.schemes),m=ie(u.consequent,n,U(t,f.then),r,o),y=ie(u.alternate,n,U(t,f.else),r,o);return k(r,e,o?B([m,y]):n,t)}case "Placeholder":return k(r,e,i(n),t)}let l=v(e,t,r,a?N(n,a.outer):n);return w(l,n,r.schemes)||r.sink.report(g.notAssignable(e,l,n,r.schemes)),k(r,e,l,t)}var Xc=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return Tt(n)!==void 0};function zr(e,n,t,r){let o=!e.async&&t.invoked.has(e),a=t.flow.size?new Map(t.flow):null,s=a?U(n,Object.fromEntries(a)):n;a&&t.flow.clear();let i=t.shadowed;o&&(t.shadowed=new Set);try{return Qc(e,s,t,r)}finally{let c=o?Hc(e,s,t):null,l=t.shadowed;if(t.shadowed=i,t.flow.clear(),a)for(let[u,f]of a)t.flow.set(u,f);if(c)for(let[u,f]of c){let m=u.slice(0,he(u)?u.indexOf("."):u.length);!l?.has(m)&&fn(n,u,t.schemes)!==void 0&&ge(u,f,t);}}}function Hc(e,n,t){let r=e.body;return r.type!=="BlockStatement"?new Map(t.flow):$e(r,n,t).types}function Qc(e,n,t,r){let o=r&&r.t==="fn"?r:void 0,a=o?.typeParams?.length&&e.params.some(E=>!Xc(E))?o.typeParams:void 0,s=At(e)??a,i=E=>s?{...E,typeParams:s}:E,c={},l=e.params.map((E,A)=>{let j=E,X=o?.params[A]?.type;if(j.type==="RestElement"){let Le=j.argument,le=rt(Le,n,t)??(o?.params[A]?.variadic?X:void 0)??p.array(p.unknown),Ve=oe(Le);return Ve?(Ye(Ve,Le,t),c[Ve]=le):Ie(Le,le,c,n,t),t.overlay.set(Le,{type:le,scope:n}),t.overlay.set(j,{type:le,scope:n}),{name:Ve??`arg${A}`,type:le,variadic:true}}if(j.type==="AssignmentPattern"){let Le=j.left,$t=rt(Le,n,t)??X;Ie(j,$t??p.unknown,c,n,t);let le=oe(Le),Ve=le?c[le]:void 0,Ft=$t??Ve??p.unknown,Hr=Ft.t==="unknown"?Ft:B([Ft,p.undefined]);return le&&Ve&&(c[pn(le)]=Ve),t.overlay.set(j,{type:Hr,scope:n}),{name:le??`arg${A}`,type:Hr,optional:true}}let ce=oe(j),Jr=rt(j,n,t),On=Jr??X??p.any,Xr=j.type==="Identifier"&&(!!j.optional||Jr===void 0&&!!o?.params[A]?.optional),st=Xr&&On.t!=="unknown"?B([On,p.undefined]):On;return ce?(Ye(ce,j,t),c[ce]=st,c[pn(ce)]=st):j.type!=="Identifier"&&Ie(j,On,c,n,t),t.overlay.set(j,{type:st,scope:n}),Xr?{name:ce??`arg${A}`,type:st,optional:true}:{name:ce??`arg${A}`,type:On}}),u=false;l.forEach((E,A)=>{E.optional?u=true:!E.variadic&&u&&t.sink.report(g.requiredAfterOptional(e.params[A]));});let f=hn(n,c,t),m=e.body,y=_c(e,n,t),d=e.returnGuard,h=d?{param:d.param,type:xn(d.type,n,t,e)}:void 0;if(h){let E=l[h.param];E&&!w(h.type,E.type,t.schemes)&&t.sink.report(g.notAssignable(e,h.type,E.type,t.schemes));}let S=E=>h?{...E,guard:h}:E;if(m.type!=="BlockStatement"&&y){let E=e.async?Qn(y):y;ie(m,E,f,t);let A=e.async?Zn(y):y;return k(t,e,S(i({t:"fn",params:l,returns:A})),n)}let b=y??o?.returns,x=b&&e.async?Qn(b):b,R=m.type==="BlockStatement"?k(t,m,rs(m,f,t,new Set(Object.keys(c).filter(E=>!Dr(E))),x),f):v(m,f,t),Be=e.async?Zn(R):R;if(y){let E=e.async?Qn(y):y,A=e.async?R:Be;w(A,E,t.schemes)||t.sink.report(g.notAssignable(m,Be,y,t.schemes));let j=e.async?Zn(y):y;return k(t,e,S(i({t:"fn",params:l,returns:j})),n)}return k(t,e,i({t:"fn",params:l,returns:ze(Ze(Be))}),n)}function Tn(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Tn(n.argument):Tn(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?Tn(n.argument):Tn(n):[]);case "AssignmentPattern":return Tn(e.left);default:return []}}function ns(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>Tn(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?ns(e.declaration):[]}var ts=Object.freeze({t:"undefined"}),Oa=e=>e===ts;function rs(e,n,t,r=new Set,o){let{returns:a}=Dt(e.body,n,t,r,o),s=!ye(e)||a.some(Oa),i=a.filter(c=>!Oa(c));return i.length===0?s?p.void:p.union([]):B(s?[...i,p.undefined]:i)}var Zc=[p.literal(true),p.literal(false)];function Rt(e){return e.t==="union"?e.of:e.t==="boolean"?Zc:[e]}function os(e,n,t){let r=Rt(e);if(r.length<=1)return e;let o=r.filter(s=>w(n,s,t));if(o.length===0)return e;let a=B(o);return w(n,a,t)?a:e}var as=(e,n)=>he(e)?void 0:Z(n,pn(e)),Ct=(e,n,t)=>!he(e)&&(t.evolving.has(e)||Z(n,pn(e))!==void 0);function Pt(e,n,t,r,o,a){if(n)return xe(r);if(a.evolving.has(e))return Rn(t);let s=as(e,o);return s===void 0?t:s.t==="union"||s.t==="boolean"?os(s,t,a.schemes):s}function ge(e,n,t){let r=e+".";for(let o of t.flow.keys())o.startsWith(r)&&t.flow.delete(o);t.flow.set(e,n);}var ss=(e,n)=>n.flow.size?n.flow.get(e):void 0;function Mr(e,n){let t=new Map(e.flow),r=n(),o=new Map;for(let[a,s]of e.flow)t.get(a)!==s&&o.set(a,s);e.flow.clear();for(let[a,s]of t)e.flow.set(a,s);return {value:r,effect:o}}function ja(e,n){let t=new Set;for(let r of e)if(r.effect)for(let o of r.effect.keys())t.add(o);for(let r of t){let o=[];for(let a of e){let s=a.effect?.get(r)??n.flow.get(r)??fn(a.scope,r,n.schemes);s!==void 0&&o.push(s);}o.length&&ge(r,B(o),n);}}function is(e,n,t){if(e.type==="MemberExpression")return k(t,e,Ua(e,n,t,true),n);if(e.type==="Identifier"){let r=as(e.name,n);if(r!==void 0)return k(t,e,r,n)}return v(e,n,t)}function Ca(e,n,t){let r=v(e,n,t),o=xe(r);return o===r?r:k(t,e,o,n)}function nt(e,n,t,r){switch(e.type){case "ArrayExpression":{e.elements.forEach((o,a)=>{if(!o)return;let s=o;s.type==="SpreadElement"?nt(s.argument,ds(n,a),t,r):nt(s,ps(n,a),t,r);});return}case "ObjectExpression":{let o=[];for(let a of e.properties){let s=a;if(s.type==="SpreadElement"){nt(s.argument,fs(n,o),t,r);continue}let i=cn(s);i!=null&&o.push(i),nt(s.value,i!=null?us(n,i,r):p.unknown,t,r);}return}default:{let o=is(e,t,r);!r.invalidTargets.has(e)&&!(e.type==="Identifier"&&r.evolving.has(e.name))&&!w(n,o,r.schemes)&&r.sink.report(g.notAssignable(e,n,o,r.schemes));let a=te(e);a!==null&&Ct(a,t,r)?ge(a,Pt(a,false,n,o,t,r),r):a!==null&&he(a)&&ge(a,o,r);}}}function el(e,n,t,r){let o=e.right,a=v(o,t,r);return ms(e.operator.slice(0,-1),n,a,e,e.left,o,r)}var yn=new Map;function $e(e,n,t){switch(e.type){case "BlockStatement":{let r=yn,o=n;for(let a of e.body){let s=$e(a,o,t);if(s.types.size){let i=new Map(r);for(let[c,l]of s.types)i.set(c,l);r=i,o=U(o,Object.fromEntries(s.types));}if(s.exits)return {types:r,exits:true}}return {types:r,exits:false}}case "IfStatement":return {types:ls(e,n,t),exits:ye(e)};case "ReturnStatement":case "ThrowStatement":return {types:yn,exits:true};case "TryStatement":{let r=e,o=[],a=$e(r.block,n,t);if(a.exits||o.push(a),r.handler){let i=$e(r.handler.body,n,t);i.exits||o.push(i);}let s=cs(o,n,t);if(r.finalizer){let i=s.size?U(n,Object.fromEntries(s)):n,c=$e(r.finalizer,i,t);if(c.types.size){let l=new Map(s);for(let[u,f]of c.types)l.set(u,f);s=l;}}return {types:s,exits:ye(e)}}default:return {types:t.stmtFlow.get(e)??yn,exits:false}}}function cs(e,n,t){let r=new Set;for(let a of e)for(let s of a.types.keys())r.add(s);if(!r.size)return yn;let o=new Map;for(let a of r){let s=fn(n,a,t.schemes),i=[];for(let c of e){let l=c.types.get(a)??s;l!==void 0&&i.push(l);}i.length&&s!==void 0&&o.set(a,B(i));}return o}function ls(e,n,t){let r=$e(e.consequent,n,t),o=e.alternate?$e(e.alternate,n,t):{types:yn,exits:false};if(!r.types.size&&!o.types.size)return yn;let a=[r,o].filter(s=>!s.exits);return a.length?cs(a,n,t):yn}var nl=5;function Pa(e,n,t,r){let o=new Map(t.flow),a=new Map,s=n,i=null;for(let l=0;l<nl;l++){let u=ne(),f={...t,sink:u},m=r(s,f),y=new Map($e(e,s,f).types);for(let[h,S]of t.flow)o.get(h)!==S&&y.set(h,S);if(Ra(o,t),!y.size){for(let h of u.all)t.sink.report(h);return {returns:m,head:s}}let d={};for(let[h,S]of y){let b=fn(s,h,t.schemes);if(b===void 0||S===b)continue;let x=B([b,S]);nn(x,b)||(d[h]=x,a.set(h,x));}if(!Object.keys(d).length){for(let h of u.all)t.sink.report(h);i=m;break}s=U(s,d);}let c=i??r(s,t);Ra(o,t);for(let[l,u]of a)ge(l,u,t);return {returns:c,head:s}}function Ra(e,n){n.flow.clear();for(let[t,r]of e)n.flow.set(t,r);}function tl(e,n,t){let r=$e(e,n,t);return r.exits||!r.types.size?n:U(n,Object.fromEntries(r.types))}function Dt(e,n,t,r=new Set,o){if(!rl(e))return Da(e,n,t,r,o);let a=new Set(t.evolving);try{return Da(e,n,t,r,o)}finally{t.evolving.clear();for(let s of a)t.evolving.add(s);}}function rl(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 Da(e,n,t,r,o){let a=n,s=[];for(let i of e){let c=i;for(let l of ns(c))r.has(l.name)?t.sink.report(g.cannotRedeclare(l,l.name)):r.add(l.name);if(c.type==="VariableDeclaration")a=It(c,a,t);else if(c.type!=="ImportDeclaration")if(c.type==="ExportNamedDeclaration"){let l=c;if(l.declaration?.type==="VariableDeclaration")a=It(l.declaration,a,t);else if(l.declaration?.type==="FunctionDeclaration"){let u=v(l.declaration,a,t),f=oe(l.declaration.id);f&&(a=hn(a,{[f]:u},t));}else for(let u of l.specifiers)Z(a,u.local.name)===void 0&&t.sink.report(g.unknownName(u.local,u.local.name));}else if(c.type==="ExportDefaultDeclaration")v(c.declaration,a,t);else if(c.type==="FunctionDeclaration"){let l=v(c,a,t),u=oe(c.id);u&&(a=hn(a,{[u]:l},t));}else if(c.type==="IfStatement"){let l=c;s.push(...Se(c,a,t,o));let u=ls(l,a,t);u.size&&(a=U(a,Object.fromEntries(u))),!l.alternate&&ye(l.consequent)&&(a=U(a,se(l.test,a,t.schemes).else));}else s.push(...Se(c,a,t,o)),(c.type==="BlockStatement"||c.type==="TryStatement")&&(a=tl(c,a,t));a=ol(c,a,t);}return {scope:a,returns:s}}function ol(e,n,t){if(!t.flow.size)return n;let r=new Map(t.flow);t.flow.clear(),t.stmtFlow.set(e,r);let o=U(n,Object.fromEntries(r));for(let a of r.keys())he(a)||(o=Ir(o,a,t.schemes));return o}function Se(e,n,t,r){switch(e.type){case "ReturnStatement":{let o=e.argument,a=o?r?(ie(o,r,n,t),r):v(o,n,t):ts;return k(t,e,o?a:p.undefined,n),[a]}case "IfStatement":{let o=e;v(o.test,n,t);let a=se(o.test,n,t.schemes),s=Se(o.consequent,U(n,a.then),t,r);return o.alternate&&s.push(...Se(o.alternate,U(n,a.else),t,r)),k(t,e,p.unknown,n),s}case "BlockStatement":{let{returns:o}=Dt(e.body,n,t,void 0,r);return k(t,e,o.length?B(o):p.void,n),o}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let o=e,a=n;o.init&&(o.init.type==="VariableDeclaration"?a=It(o.init,a,t):v(o.init,a,t));let{returns:s}=Pa(o.body,a,t,(i,c)=>(o.test&&v(o.test,i,c),o.update&&v(o.update,i,c),Se(o.body,i,c,r)));return k(t,e,p.unknown,n),s}case "ForOfStatement":case "ForInStatement":{let o=e,a=v(o.right,n,t),s=Me(a,o.right,t)?null:An(a);s&&t.sink.report(g.possiblyNullish(o.right,s));let i=s?Ur(a):a,c=e.type==="ForOfStatement"?Kr(i,o.right,t):p.string,l=ra(o.left);l&&Ye(l,oa(o.left),t);let u=l?hn(n,{[l]:c},t):n,{returns:f}=Pa(o.body,u,t,(m,y)=>Se(o.body,m,y,r));return k(t,e,p.unknown,n),f}case "BreakStatement":case "ContinueStatement":return k(t,e,p.unknown,n),[];case "ThrowStatement":{let o=e.argument;return o&&v(o,n,t),k(t,e,p.unknown,n),[]}case "TryStatement":{let o=e,a=Se(o.block,n,t,r);if(o.handler){let s=o.handler.param,i=s?oe(s):null;i&&s&&Ye(i,s,t);let c=i?hn(n,{[i]:p.any},t):n;a.push(...Se(o.handler.body,c,t,r));}return o.finalizer&&a.push(...Se(o.finalizer,n,t,r)),k(t,e,p.unknown,n),a}case "SwitchStatement":{let o=e;v(o.discriminant,n,t);let a=n,s=[];for(let i of o.cases){i.test&&v(i.test,a,t);let c=Dt(i.consequent,a,t,void 0,r);a=c.scope,s.push(...c.returns);}return k(t,e,p.unknown,n),s}default:return v(e,n,t),[]}}function us(e,n,t){let r=Q(e,[n],t.schemes);return r?r.type:p.unknown}function Kr(e,n,t){let r=ae(e,t.schemes);switch(r.t){case "array":return r.items;case "tuple":return r.elements.length?B([...r.elements]):p.unknown;case "string":return p.string;case "literal":if(typeof r.value=="string")return p.string;break;case "unknown":case "any":return p.unknown;case "union":return B(r.of.map(o=>Kr(o,n,t)));}return t.sink.report(g.notIterable(n,e)),p.any}function ps(e,n){let t=D(p.index(e,p.literal(n)));return t.t==="index"?p.unknown:t}function fs(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 p.object(t,e.index)}function ds(e,n){return e.t==="tuple"?p.tuple(e.elements.slice(n)):e.t==="array"?e:p.array(p.unknown)}function Ie(e,n,t,r,o){switch(e.type){case "Identifier":{let a=rt(e,r,o)??n;Ye(e.name,e,o),t[e.name]=a,o.overlay.set(e,{type:a,scope:r});return}case "AssignmentPattern":{let a=e,s=v(a.right,r,o);n.t!=="unknown"&&!w(s,n,o.schemes)&&o.sink.report(g.notAssignable(a.right,s,n,o.schemes));let i=ze(Ze(s)),{type:c}=be(n),l=c.t==="unknown"?i:B([c,i]),u=a.left;if(u.type==="Identifier"){let f=u.name;Ye(f,u,o),t[f]=l,o.overlay.set(u,{type:l,scope:r});}else Ie(u,l,t,r,o);return}case "ObjectPattern":{let a=[];for(let s of e.properties){if(s.type==="RestElement"){Ie(s.argument,fs(n,a),t,r,o);continue}let i=s,c=cn(i);c!=null&&a.push(c);let l=c!=null?us(n,c,o):p.unknown;Ie(i.value,l,t,r,o);}return}case "ArrayPattern":{e.elements.forEach((a,s)=>{if(!a)return;let i=a;i.type==="RestElement"?Ie(i.argument,ds(n,s),t,r,o):Ie(i,ps(n,s),t,r,o);});return}}}function Fr(e,n,t){let r=ae(n,t.schemes),o=r.t==="union"?C(r,t.schemes):r,a=o.t==="union"?o.of.map(l=>ae(l,t.schemes)):[o],i=(r.t==="union"?es(e,a.filter(l=>l.t==="object"||l.t==="intersection"),l=>t.overlay.get(l.value)?.type,t.schemes,n).chosen:a).filter(l=>l.t==="object"&&(!l.index||l.index.key==="number"));if(!i.length||i.some(l=>Object.keys(l.props).length===0&&!l.index))return false;let c=false;for(let l of e.properties){if(l.type==="SpreadElement")continue;let u=l;if(u.computed)continue;let f=cn(u);if(f===null)continue;i.filter(y=>f in y.props||y.index?.key==="number"&&jn(f)).length||(t.sink.report(g.excessProperty(u.key,f,n)),c=true);}return c}function It(e,n,t){let r={};for(let o of e.declarations){let a=o.id,s=oe(a);s&&Ye(s,a,t);let i=rt(a,n,t);if(!o.init){if(s&&e.kind!=="const"){i?(r[s]=i,r[pn(s)]=i):(r[s]=p.undefined,t.evolving.add(s));continue}t.sink.report(g.constNeedsInit(o)),s&&(r[s]=i??p.unknown);continue}let c=i??(o.init.type==="ArrowFunctionExpression"?ia(o.init):null),l=s&&c?hn(n,{[s]:c},t):n,u,f=null;i?(ie(o.init,i,l,t),u=i,f=i,(i.t==="union"||i.t==="boolean")&&Ce(o.init)&&(u=os(i,Ge(o.init),t.schemes))):(u=v(o.init,l,t),e.kind!=="const"&&(u=Rn(u)),u=ze(u),f=u),k(t,o,u,n),s?(r[s]=u,e.kind!=="const"&&f&&(r[pn(s)]=f)):Ie(a,u,r,n,t);}return k(t,e,p.unknown,n),hn(n,r,t)}function hn(e,n,t){let r=qe(e,n);for(let o of Object.keys(n))Dr(o)||(t.shadowed?.add(o),r=Ir(r,o,t.schemes));return r}function al(e,n,t){let r=v(e.left,n,t),o=v(e.right,n,t);return ms(e.operator,r,o,e,e.left,e.right,t)}function ms(e,n,t,r,o,a,s){if(e==="in"){let c=Me(n,o,s)?null:An(n);c&&s.sink.report(g.possiblyNullish(o,c));let l=Me(t,a,s)?null:An(t);l&&s.sink.report(g.possiblyNullish(a,l));}let i=zn.get(e);if(!i)return p.boolean;if(i.category==="additive"||i.category==="arithmetic"||i.category==="bitwise"||i.category==="relational"){let c=Me(n,o,s),l=Me(t,a,s);if(c||l)return p.any}if(i.category==="additive"){if(mn(n)||mn(t))return dn(n,s.schemes)||dn(t,s.schemes)?p.string:p.number;if(dn(n,s.schemes)&&dn(t,s.schemes))return p.string;if(tt(n,s.schemes)&&tt(t,s.schemes))return p.number;if(dn(n,s.schemes)||dn(t,s.schemes)){let l=dn(n,s.schemes)?t:n;return s.sink.report(g.implicitCoercion(r,n,t,ys(l,s.schemes))),p.string}return s.sink.report(g.operatorNotApplicable(r,"+",n,t)),p.number}if(i.category==="arithmetic"||i.category==="bitwise")tt(n,s.schemes)||s.sink.report(g.arithmeticOperand(o,"left")),tt(t,s.schemes)||s.sink.report(g.arithmeticOperand(a,"right"));else if(i.category==="relational"&&!mn(n)&&!mn(t)){let c=C(n,s.schemes),l=C(t,s.schemes),u=w(c,p.number,s.schemes),f=w(l,p.number,s.schemes);u&&f||!u&&!f&&(w(c,l,s.schemes)||w(l,c,s.schemes))||s.sink.report(g.operatorNotApplicable(r,e,n,t));}return vr(i.result)}var mn=e=>e.t==="any"||e.t==="unknown",tt=(e,n)=>mn(e)||w(C(e,n),p.number,n),dn=(e,n)=>!mn(e)&&w(C(e,n),p.string,n),sl=p.union([p.string,p.number,p.boolean,p.null,p.undefined]),ys=(e,n)=>mn(e)||w(C(e,n),sl,n),Ia={string:p.literal(""),number:p.literal(0),boolean:p.literal(false)},Ot=e=>e.t==="null"||e.t==="undefined";function il(e,n,t,r){if(n.t==="any"||n.t==="unknown")return B([n,t]);let o=(n.t==="union"?[...n.of]:[n]).flatMap(s=>s.t==="boolean"?[p.literal(true),p.literal(false)]:[s]);if(e==="??")return o.some(Ot)?B([...o.filter(s=>!Ot(s)),t]):n;if(e==="||")return ba(n,r)?B([...o.filter(s=>!Ot(s)&&!(s.t==="literal"&&!s.value)),t]):n;if(!ka(n,r))return n;let a=o.flatMap(s=>Ot(s)?[s]:s.t==="literal"?s.value?[]:[s]:Ia[s.t]?[Ia[s.t]]:[]);return B([...a,t])}var cl=p.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>p.literal(e)));function ll(e,n,t){let r=v(e.argument,n,t);switch(e.operator){case "!":return r.t==="literal"?{t:"literal",value:!r.value,fresh:true}:p.boolean;case "-":case "+":case "~":return Me(r,e.argument,t),e.operator==="-"&&r.t==="literal"&&typeof r.value=="number"?{t:"literal",value:-r.value,fresh:true}:p.number;case "typeof":return cl;case "delete":return p.boolean;case "void":return p.undefined;default:return p.unknown}}function ul(e,n,t){let r={},o,a=[],s=[],i=false,c=false,l=false;for(let f of e.properties){let m=f;if(m.type==="SpreadElement"){l=true;let b=ae(v(m.argument,n,t),t.schemes);if(b.t==="object"){for(let x in b.props)r[x]=b.props[x];b.index&&(o={key:b.index.key,type:b.index.value});}continue}let y=m,d=v(y.value,n,t),h=pe(d);if(k(t,m,d,n),y.computed){let b=ae(v(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),s.push(h)):b.t==="string"?(i=true,a.push(h)):b.t==="number"&&(c=true,a.push(h),s.push(h));continue}let S=cn(y);S!==null&&(r[S]={type:h},a.push(h),/^\d+$/.test(S)&&s.push(h));}i?o={key:"string",type:B(a)}:c&&(o={key:"number",type:B(s)});let u=l?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return o?{t:"object",props:r,index:{key:o.key,value:o.type},...u}:{t:"object",props:r,...u}}function hs(e,n,t){let r=[];for(let o of e.elements){if(!o)continue;let a=o;if(a.type==="SpreadElement"){let s=ae(v(a.argument,n,t),t.schemes);s.t==="array"?r.push(s.items):s.t==="tuple"&&r.push(...s.elements);continue}r.push(pe(v(a,n,t)));}return pt(p.array(r.length?B(r):p.unknown))}function qr(e,n,t,r){let o=ae(n,r.schemes),a=e.elements,s=a.every(c=>c&&c.type!=="SpreadElement"),i=(c,l)=>c.type==="ArrayExpression"?qr(c,l,t,r):Bn(l,Ce(c)?Ge(c):void 0)?v(c,t,r):pe(v(c,t,r));if(o.t==="tuple"&&s){let c=ke(o),l=f=>c<0||f<c?o.elements[f]:o.elements[c],u=a.map((f,m)=>{let y=l(m);return y?i(f,y):pe(v(f,t,r))});return k(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}if(o.t==="union"&&s){let c=o.of.map(l=>ae(l,r.schemes));if(c.some(l=>l.t==="tuple")){let l=(f,m)=>{if(f.t==="array")return f.items;if(f.t!=="tuple")return;let y=ke(f);return y<0||m<y?f.elements[m]:f.elements[y]},u=a.map((f,m)=>{let y=c.map(d=>l(d,m)).filter(d=>d!==void 0);return y.length?i(f,B(y)):pe(v(f,t,r))});return k(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}}if(o.t==="array"){let c=[];for(let l of a){if(!l)continue;let u=l;if(u.type==="SpreadElement"){v(u.argument,t,r);continue}c.push(i(u,o.items));}return k(r,e,pt(p.array(c.length?B(c):p.unknown)),t)}return hs(e,t,r)}function Ss(e,n,t){let r=C(e,t);if(r.t==="array")return r.items;if(r.t==="tuple"){let o=ke(r);if(n>=r.elements.length||o>=0&&n>=o)return;let a=ue(p.index(r,p.literal(n)),t);return Xe(a)?void 0:a}if(r.t==="union"){let o=r.of.map(a=>Ss(a,n,t));return o.some(a=>a===void 0)?void 0:B(o)}}function pl(e,n,t,r,o){let a=C(t,o.schemes);if(a.t!=="array"&&a.t!=="tuple"&&a.t!=="union")return false;let s=(c,l)=>c.t==="tuple"?c.elements[l]:c.t==="array"?c.items:void 0,i=false;return e.elements.forEach((c,l)=>{if(!c)return;let u=c;if(u.type==="SpreadElement")return;let f=Ss(a,l,o.schemes);if(!f)return;let m=s(n,l);if(!m||w(m,f,o.schemes))return;let y=o.sink.all.length;ie(u,f,r,o,false),o.sink.all.length>y&&(i=true);}),i}function Lr(e,n,t,r){if(e===null)return p.null;switch(typeof e){case "string":return p.string;case "number":return p.number;case "boolean":return p.boolean;case "object":break;default:return p.unknown}if(Array.isArray(e)){let s=e.map(i=>Lr(i,n,t,r));return p.array(s.length?B(s):p.unknown)}let o=e;if(ast.isExprMarker(o)){let s;try{s=json.fromJson(o);}catch{return t.sink.report(g.unsupported(r,`'${ast.EXPR_MARKER}: ${String(o[ast.EXPR_MARKER])}'`)),p.unknown}return v(s,n,t)}let a={};for(let s of Object.keys(o))a[s]={type:Lr(o[s],n,t,r)};return {t:"object",props:a}}function gs(e,n){let t=C(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=>gs(r,n)):false}function fl(e,n,t,r,o){let a=ne(),s=ie(e,n,t,{...r,sink:a},true);if(a.hasErrors()&&o);let i=c=>r.sink.all.some(l=>l.node===c.node&&l.code===c.code&&l.message===c.message);for(let c of a.all)i(c)||r.sink.report(c);return a.hasErrors()?n:s}var dl=(e,n)=>({...e,typeAnnotation:n}),ml=(e,n)=>({...e,returnType:n}),yl=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function Gr(e,n){return e.get(n)?.type}function hl(e,n){return e.get(n)?.scope}function Sl(e,n){let t=e.get(n)?.type;return t?Q(t,[])?.completions??[]:[]}function gl(e,n){let t=e.get(n)?.scope;return t?[...lr(t)].map(([r,o])=>({key:r,type:o,optional:false})):[]}var bl=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function kl(e){if(!e||e.computed)return;let n=e.key;if(n?.type==="Identifier")return n.name;if(n?.type==="Literal"&&typeof n.value=="string")return n.value}function Mt(e,n,t,r={}){let o=e[n],a=e[n+1];if(!(!o||!a))switch(a.type){case "ArrowFunctionExpression":case "FunctionExpression":return a.body===o?a.returnType:void 0;case "VariableDeclarator":return a.init===o?a.id?.typeAnnotation:void 0;case "TSAsExpression":return a.typeAnnotation;case "ReturnStatement":return e.slice(n+1).find(bl)?.returnType;case "CallExpression":{let s=(a.arguments??[]).indexOf(o);if(s<0)return;let i=Gr(t,a.callee);return i?.t==="fn"?i.params?.[s]?.type:void 0}case "Property":{if(a.value!==o||e[n+2]?.type!=="ObjectExpression")return;let i=Mt(e,n+2,t,r),c=kl(a);return !i||!c?void 0:Q(i,[c],r)?.type}case "ArrayExpression":{let s=Mt(e,n+1,t,r);return s?Q(s,["[]"],r)?.type:void 0}case "BinaryExpression":{let s=zn.get(a.operator);if(!s)return;if(s.category==="arithmetic"||s.category==="bitwise")return p.number;let i=a.left===o?a.right:a.left,c=Gr(t,i);return c&&c.t!=="any"&&c.t!=="unknown"?c:void 0}case "LogicalExpression":return Mt(e,n+1,t,r);case "UnaryExpression":{let s=a.operator;return s==="-"||s==="+"||s==="~"?p.number:void 0}default:return}}function Nl(e,n){return e.filter(t=>t.node===n)}function El(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var Tl=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Yr(e,n,t,r){if(ast.isExprMarker(e)){let o=r.island?r.island(e,n):ast.fromExprMarker(e);return t.stamp(o,n)}return Array.isArray(e)?t.stamp(Fe__namespace.arrayExpression(e.map((o,a)=>Yr(o,r.child(n,a),t,r))),n):Tl(e)?t.stamp(Fe__namespace.objectExpression(Object.entries(e).map(([o,a])=>{let s=r.child(n,o),i=t.stamp(Fe__namespace.literal(o),s);return t.stamp(Fe__namespace.property(i,Yr(a,s,t,r),false,false),s)})),n):t.stamp(Fe__namespace.literal(e),n)}function Al(e){let n=new WeakMap,t=[e];for(;t.length>0;){let r=t.pop();ast.forEachChild(r,o=>{n.set(o,r),t.push(o);});}return n}function xl(e,n,t,r){let o=Al(e),a=new Map,s=c=>{let l=a.get(c);return l===void 0&&(l=languageService.createPositionMap(c),a.set(c,l)),l},i=c=>{let l=c;for(;l!==void 0;){let u=t.get(l);if(u!==void 0)return u;l=o.get(l);}return r.fallback};return n.map(c=>{let l=i(c.node),u=r.textOf?.(l),f=u===void 0?void 0:ks(s(u),c.node.loc);return {diagnostic:c,anchor:l,...f?{span:f}:{}}})}function ks(e,n){if(!n?.start)return;let t=a=>e.offsetAt({line:a.line-1,column:a.column}),r=t(n.start),o=n.end?t(n.end):r;return {from:r,to:o<r?r:o}}function Ol(e,n){return ks(languageService.createPositionMap(e),n)}exports.BINARY_OP=zn;exports.BINARY_OPS=Nr;exports.DEFAULT_TYPE_LIMITS=it;exports.FUNCTION_KINDS=zo;exports.INSTANTIATION_COUNT_LIMIT=ws;exports.INSTANTIATION_DEPTH_LIMIT=vs;exports.InstantiationLimitError=Sn;exports.LOGICAL_OPS=Mi;exports.TYPE_EVAL_DEPTH_LIMIT=Ns;exports.TypeEvalLimitError=Ee;exports.UNARY_OPS=Jo;exports.UnionTooComplexError=Te;exports.anchorDiagnostics=xl;exports.annotate=dl;exports.annotateReturn=ml;exports.apparentType=C;exports.asExpression=yl;exports.asLiteralOrigin=pt;exports.baseLiteralType=xe;exports.binaryOpsProducing=$i;exports.bindTypeParams=Pn;exports.calleeAllowlist=dr;exports.capabilityNodes=fr;exports.check=$a;exports.childScope=qe;exports.collectBindings=Gi;exports.collectMutations=Ar;exports.collectUnused=Er;exports.comparable=ht;exports.componentProps=Cc;exports.componentPropsOf=Wr;exports.configureTypeLimits=Vt;exports.contextualTypeAt=Mt;exports.contravariantInference=bo;exports.covariantInference=go;exports.createAnchors=El;exports.createEnv=Ai;exports.createSink=ne;exports.diag=g;exports.diagnosticsAt=Nl;exports.discover=Q;exports.equals=nn;exports.erasedSignature=vn;exports.expand1=K;exports.extractModuleType=bc;exports.flagAt=ro;exports.format=P;exports.formatTypeArgs=Si;exports.formatTypeDiff=Un;exports.freeVars=L;exports.fromCapability=Di;exports.groundVars=en;exports.guard=pr;exports.guardsFromCompiled=Nt;exports.inferFromCandidates=ko;exports.inferredTypes=dt;exports.instantiate=zs;exports.instantiateInContextOf=nr;exports.instantiateLoose=$n;exports.isMissingType=Xe;exports.isNumericLiteralName=jn;exports.isObjectOrArrayLiteral=ut;exports.isScheme=Y;exports.isSerializable=tn;exports.isVariadicTuple=oo;exports.join=Mo;exports.joinAll=ui;exports.lookup=Z;exports.lowerValue=Yr;exports.makeDiagnostic=_;exports.maxArgs=br;exports.maxCallNesting=yr;exports.maxDepth=Sr;exports.maxFunctionNesting=mr;exports.maxNestingOf=kt;exports.maxNodes=gr;exports.memberCompletions=Sl;exports.memberDepth=hr;exports.missingType=Je;exports.normalizeUnion=B;exports.opResultSchema=vr;exports.ownProp=G;exports.renameTypeParams=Ht;exports.resetInstantiationCount=Wt;exports.resetTypeLimits=Ut;exports.resolveConditional=ve;exports.resolveNamed=xi;exports.resolveOp=ue;exports.resolveScheme=Oi;exports.resolveTypeOp=D;exports.restIndex=ke;exports.resultType=kr;exports.rootScope=Uo;exports.s=p;exports.sampleValue=di;exports.scopeAt=hl;exports.scopeCompletions=gl;exports.silentNever=Mn;exports.spanOf=Ol;exports.substitute=N;exports.subtype=w;exports.typeAt=Gr;exports.typeAtPosition=In;exports.typeDiff=Ln;exports.typeFeatures=sr;exports.typeLimits=re;exports.typeNeedsParens=Fo;exports.typeParamArity=_e;exports.unaryOpsProducing=Fi;exports.unify=$;exports.visibleNames=lr;exports.widen=pe;exports.widenInferred=Zt;exports.widenLiteral=Rn;exports.widenOrigin=ze;exports.widenType=Ze;exports.withoutUndefined=be;
|
|
1
|
+
'use strict';var ast=require('@tslite/ast'),capability=require('@tslite/capability'),json=require('@tslite/json'),Ue=require('@tslite/ast/builders'),languageService=require('@tslite/language-service');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Ue__namespace=/*#__PURE__*/_interopNamespace(Ue);var _s=100,zs=50,Ks=5e6,ht={maxTypeDepth:100,maxInstantiationDepth:50,maxInstantiationCount:5e6,maxUnionMembers:1e3,maxOverloadSignatures:200},ze=ht;function Ht(e){ze={...ht,...e};}function Zt(){ze=ht;}function oe(){return ze}var Ae=class extends Error{constructor(n=ze.maxTypeDepth){super(`excessive stack depth comparing types (limit ${n}) \u2014 the comparison is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},kn=class extends Error{constructor(t,r=t==="depth"?ze.maxInstantiationDepth:ze.maxInstantiationCount){super(`type instantiation is excessively deep and possibly infinite (${t} limit ${r})`);this.kind=t;this.name="InstantiationLimitError";}};function er(){Qt=0;}var Qt=0;function yo(){if(Qt>=ze.maxInstantiationCount)throw new kn("count");Qt++;}var xe=class extends Error{constructor(n,t=ze.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${t})`),this.name="UnionTooComplexError";}};var ar=()=>({active:new Set,byScope:new Map});function bt(e,n,t){let r=new Map(e);for(let o of n)r.set(o.name,t(o));return r}function sr(e,n,t){let r=bt(n,e,()=>{}),o=false,a=e.map(s=>{let i=s.bound&&pe(s.bound,r,t),c=s.default&&pe(s.default,r,t);return i===s.bound&&c===s.default?s:(o=true,{...s,...i?{bound:i}:{},...c?{default:c}:{}})});return o?a:e}function nr(e,n,t){let r=e.typeParams?.length?sr(e.typeParams,n,t):void 0,o=r?bt(n,r,c=>c.bound):n,a=Mn(e.params,c=>{let l=pe(c.type,o,t);return l===c.type?c:{...c,type:l}}),s=pe(e.returns,o,t),i=e.guard&&pe(e.guard.type,o,t);return a===e.params&&s===e.returns&&i===e.guard?.type&&r===e.typeParams?e:{...e,params:a,returns:s,...e.guard&&i?{guard:{...e.guard,type:i}}:{},...r?{typeParams:r}:{}}}function Mn(e,n){let t=false,r=e.map(o=>{let a=n(o);return a!==o&&(t=true),a});return t?r:e}function pe(e,n,t){if(n.size===0)return e;let r=t.byScope.get(n);r||t.byScope.set(n,r=new Map);let o=r.get(e);if(o)return o;if(t.active.has(e))return e;t.active.add(e);let a=No(e,n,t);return t.active.delete(e),r.set(e,a),a}function No(e,n,t){let r=o=>pe(o,n,t);switch(e.t){case "var":{if(!n.has(e.name))return e;let o=n.get(e.name);return o===e.bound&&e.default===void 0?e:o?{t:"var",name:e.name,bound:o}:{t:"var",name:e.name}}case "array":{let o=r(e.items);return o===e.items?e:{...e,items:o}}case "tuple":{let o=Mn(e.elements,r);return o===e.elements?e:{...e,elements:o}}case "union":case "intersection":{let o=Mn(e.of,r);return o===e.of?e:{...e,of:o}}case "object":{let o=false,a={};for(let c of Object.keys(e.props)){let l=e.props[c],u=r(l.type);u!==l.type&&(o=true),Object.defineProperty(a,c,{value:u===l.type?l:{...l,type:u},enumerable:true,writable:true,configurable:true});}let s=e.index&&r(e.index.value),i=!!e.index&&s!==e.index.value;return !o&&!i?e:{...e,props:o?a:e.props,...e.index&&s&&i?{index:{...e.index,value:s}}:{}}}case "fn":return nr(e,n,t);case "overload":{let o=Mn(e.signatures,a=>nr(a,n,t));return o===e.signatures?e:{...e,signatures:o}}case "keyof":{let o=r(e.of);return o===e.of?e:{...e,of:o}}case "index":{let o=r(e.obj),a=r(e.key);return o===e.obj&&a===e.key?e:{...e,obj:o,key:a}}case "mapped":{let o=r(e.over),a=new Map(n);a.set(e.key,void 0);let s=pe(e.body,a,t);return o===e.over&&s===e.body?e:{...e,over:o,body:s}}case "conditional":{let o=e.infer?.length?sr(e.infer,n,t):void 0,a=o?bt(n,o,u=>u.bound):n,s=r(e.check),i=pe(e.extends,a,t),c=pe(e.then,a,t),l=pe(e.else,a,t);return s===e.check&&i===e.extends&&c===e.then&&l===e.else&&o===e.infer?e:{...e,check:s,extends:i,then:c,else:l,...o?{infer:o}:{}}}case "returnType":case "parameters":{let o=r(e.fn);return o===e.fn?e:{...e,fn:o}}case "apply":{let o=Mn(e.args,r);return o===e.args?e:{...e,args:o}}default:return e}}function ho(e){return e.typeParams?.length?nr(e,new Map,ar()):e}function qs(e){return e.infer?.length?No(e,new Map,ar()):e}function Gs(e){if(!e.params.length)return e;let n=ar(),t=sr(e.params,new Map,n),r=pe(e.body,bt(new Map,t,o=>o.bound),n);return t===e.params&&r===e.body?e:{params:t,body:r}}var Oe=e=>Object.freeze(e),p={any:Oe({t:"any"}),unknown:Oe({t:"unknown"}),string:Oe({t:"string"}),number:Oe({t:"number"}),boolean:Oe({t:"boolean"}),null:Oe({t:"null"}),undefined:Oe({t:"undefined"}),void:Oe({t:"void"}),nonPrimitive:Oe({t:"nonPrimitive"}),literal:e=>({t:"literal",value:e}),object:(e,n)=>({t:"object",props:e,...n?{index:n}:{}}),record:(e,n="string")=>({t:"object",props:{},index:{key:n,value:e}}),array:(e,n)=>({t:"array",items:e,...n?{readonly:true}:{}}),tuple:(e,n,t)=>({t:"tuple",elements:n?e.map((r,o)=>n[o]==="optional"?Ke(r):r):e,...n&&n.some(r=>r!=="req")?{flags:n}:{},...t?{readonly:true}:{}}),fn:(e,n,t)=>ho({t:"fn",params:e,returns:n,...t?.length?{typeParams:t}:{}}),guard:(e,n,t=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:t,type:n}}),overload:e=>({t:"overload",signatures:e.map(ho)}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,t,r=false)=>({t:"mapped",key:e,over:n,body:t,optional:r}),conditional:(e,n,t,r,o)=>qs({t:"conditional",check:e,extends:n,then:t,else:r,...o&&o.length?{infer:o}:{}}),scheme:(e,n)=>Gs({params:e,body:n}),intersection:e=>H({of:e}),and:(e,n)=>H({of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n)=>({t:"var",name:e,...n?{bound:n}:{}}),typeParam:(e,n={})=>({t:"var",name:e,...n.bound?{bound:n.bound}:{},...n.default?{default:n.default}:{}}),typeQuery:e=>({t:"typeQuery",path:e}),apply:(e,n=[])=>({t:"apply",name:e,args:n}),promise:e=>({t:"apply",name:"Promise",args:[e]}),union:e=>{let n=[],t=o=>{o.t==="union"?o.of.forEach(t):n.push(o);};if(e.forEach(t),n.some(o=>o.t==="any"))return {t:"any"};if(n.some(o=>o.t==="unknown"))return {t:"unknown"};let r=Xs(n);return r.length===1?r[0]:{t:"union",of:r}}};function Js(e){switch(e.t){case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "literal":return `#${typeof e.value}:${String(e.value)}`;default:return null}}function Xs(e){let n=[],t=new Map;for(let i of e){let c=Js(i);if(c===null){n.includes(i)||n.push(i);continue}let l=t.get(c);l===void 0?(t.set(c,n.length),n.push(i)):i.t==="literal"&&!i.fresh&&(n[l]=i);}let r=i=>i.t==="literal"&&t.has(typeof i.value),o=!t.has("boolean")&&t.has("#boolean:true")&&t.has("#boolean:false"),a=false,s=[];for(let i of n)if(!r(i)){if(o&&i.t==="literal"&&typeof i.value=="boolean"){a||s.push({t:"boolean"}),a=true;continue}s.push(i);}return s}function D(e){return e.t==="keyof"?or(e.of)??e:e.t==="index"?gt(e.obj,e.key)??e:e.t==="returnType"?Ys(e.fn)??e:e.t==="parameters"?Qs(e.fn)??e:e}var St={t:"union",of:[]},tr=e=>e.t==="union"&&e.of.length===0;function Ys(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function Ke(e){if(e.t==="undefined"||e.t==="any"||e.t==="unknown")return e;let n=e.t==="union"?e.of:[e];return n.some(t=>t.t==="undefined")?e:p.union([...n,{t:"undefined"}])}function Qs(e){let n=e.t==="fn"?e:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1]:null;if(!n)return null;let t=[],r=[];for(let o of n.params)o.variadic?(t.push(o.type.t==="array"?o.type.items:o.type),r.push("rest")):o.optional?(t.push(Ke(o.type)),r.push("optional")):(t.push(o.type),r.push("req"));return p.tuple(t,r)}var rr=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function So(e,n){return e.t==="literal"&&n.t==="literal"?e.value===n.value:e.t==="literal"&&(n.t==="string"||n.t==="number"||n.t==="boolean")?typeof e.value===n.t:e.t===n.t&&(e.t==="string"||e.t==="number"||e.t==="boolean")}function go(e){return e.t==="null"||e.t==="undefined"?e.t:e.t==="nonPrimitive"?"nonPrimitive":rr(e)?"scalar":e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"?"object":null}var bo=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function H(e){let n=[],t=s=>{let i=D(s);i.t==="intersection"?i.of.forEach(t):n.push(i);};if(e.of.forEach(t),n.some(s=>s.t==="any"))return p.any;if(n.some(tr))return St;let r=s=>n.some(i=>go(i)===s);if(r("null")&&(r("undefined")||r("scalar")||r("object")||r("nonPrimitive"))||r("undefined")&&(r("scalar")||r("object")||r("nonPrimitive"))||r("nonPrimitive")&&r("scalar"))return St;if(n.some(s=>go(s)==="object"&&!bo(s)))for(let s=n.length-1;s>=0;s--)bo(n[s])&&n.splice(s,1);let o=n.findIndex(s=>s.t==="union");if(o>=0){let s=n.reduce((i,c)=>i*(c.t==="union"?c.of.length:1),1);if(s>oe().maxUnionMembers)throw new xe(s);return p.union(n[o].of.map(i=>H({of:n.map((c,l)=>l===o?i:c)})))}let a=[];for(let s of n){if(s.t==="any")return p.any;if(tr(s))return St;if(s.t!=="unknown"){if(rr(s)){let i=false;for(let c=a.length-1;c>=0;c--){let l=a[c];if(rr(l)){if(So(l,s)){i=true;break}if(So(s,l))a.splice(c,1);else return St}}if(i)continue}else if(a.some(i=>i===s))continue;a.push(s);}}return a.length===0?p.unknown:a.length===1?a[0]:{t:"intersection",of:a}}function or(e){if(e.t==="union"&&e.of.length>0){let t=e.of.map(or);return t.some(r=>r===null)?null:Hs(t)}if(e.t==="intersection"){let t=e.of.map(or);return t.some(r=>r===null)?null:p.union(t)}if(e.t==="unknown")return {t:"union",of:[]};if(e.t==="any"||e.t==="union"&&e.of.length===0)return {t:"union",of:[p.string,p.number]};if(e.t==="nonPrimitive")return {t:"union",of:[]};if(e.t==="array"||e.t==="tuple")return p.number;if(e.t==="fn"||e.t==="overload")return {t:"union",of:[]};if(e.t!=="object")return null;if(e.index?.key==="string")return p.union([p.string,p.number]);let n=Object.keys(e.props).map(t=>p.literal(t));return e.index?.key==="number"?p.union([p.number,...n]):n.length===0?{t:"union",of:[]}:p.union(n)}function Hs(e){let n=a=>a.t==="literal"&&typeof a.value=="string"?[a.value]:a.t==="union"?a.of.flatMap(n):[],t=e.filter(a=>a.t!=="string"&&a.t!=="number").map(n);if(t.length===0)return e[0];let r=t[0].filter(a=>t.every(s=>s.includes(a))),o=[...new Set(r)].map(a=>p.literal(a));return o.length===0?{t:"union",of:[]}:p.union(o)}var He=Object.freeze({t:"unknown"}),Ze=e=>e===He,ko=e=>e.t==="var"||e.t==="apply"||e.t==="mapped"||e.t==="conditional"||e.t==="keyof"||e.t==="index"||e.t==="returnType"||e.t==="parameters"||e.t==="typeQuery";function gt(e,n){if(e=D(e),n=D(n),n.t==="union"){let t=[],r=false;for(let o of n.of){let a=gt(e,o);if(a===null)return null;Ze(a)?r=true:t.push(a);}return r?He:p.union(t)}if(ko(n))return null;if(e.t==="any"||tr(e))return e;if(e.t==="intersection"){let t=[];for(let r of e.of){let o=gt(D(r),n);if(o===null)return null;Ze(o)||t.push(o);}return t.length===0?He:t.length===1?t[0]:H({of:t})}if(e.t==="union"){let t=[];for(let r of e.of){let o=D(r);if(o.t==="any")return o;let a=gt(o,n);if(a===null)return null;if(Ze(a))return He;t.push(a);}return p.union(t)}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let t=J(e.props,String(n.value));return t?t.optional?Ke(t.type):t.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:He}if(n.t==="string"||n.t==="number"){let r=n.t==="number"&&e.index?.key==="number"||false||e.index?.key==="string"?e.index:void 0;if(r)return r.value}}if(e.t==="tuple"){let t=e.flags?.findIndex(o=>o==="rest")??-1,r=t>=0?t:e.elements.length;if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]:t>=0?e.elements[t]:p.undefined;if(n.t==="number")return e.elements.length?p.union([...e.elements]):p.undefined}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:ko(e)?null:He}var kt=e=>(e.t==="object"||e.t==="array"||e.t==="tuple")&&!!e.fromLiteral,Nt=e=>e.t==="object"||e.t==="array"||e.t==="tuple"?e.fromLiteral?e:{...e,fromLiteral:true}:e,Zs=Object.prototype.hasOwnProperty,J=(e,n)=>Zs.call(e,n)?e[n]:void 0;function Ne(e){if(e.t==="undefined")return {type:{t:"union",of:[]},hadUndefined:true};if(e.t==="union"&&e.of.some(n=>n.t==="undefined")){let n=e.of.filter(t=>t.t!=="undefined");return {type:p.union(n),hadUndefined:true}}return {type:e,hadUndefined:false}}var $n=e=>(+e).toString()===e;var Bo=(e,n)=>e.flags?.[n]??"req",en=(e,n)=>Bo(e,n)==="optional"?Ke(e.elements[n]):e.elements[n],ir=e=>e.elements.map((n,t)=>en(e,t)),vo=e=>e.flags?.[e.elements.length-1]==="rest",Be=e=>vo(e)?e.elements.length-1:-1,Fn=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(t=>t!=="req");return n<0?e.elements.length:n};function wo(e,n,t,r=false){let o=Be(e),a=Be(n);if(!r&&Fn(e)<Fn(n))return false;if(a<0){if(o>=0)return false;let l=Fn(n);return e.elements.length<l||e.elements.length>n.elements.length?false:e.elements.every((u,f)=>t(en(e,f),en(n,f)))}let s=n.elements[a],i=l=>l<a?en(n,l):s;if(o<0)return e.elements.length<Fn(n)?false:e.elements.every((l,u)=>t(en(e,u),i(u)));if(o===0&&a!==0||o<Fn(n))return false;let c=e.elements[o];for(let l=0;l<o;l++)if(!t(en(e,l),i(l)))return false;for(let l=o;l<a;l++)if(!t(c,en(n,l)))return false;return t(c,s)}function N(e,n,t=new WeakSet){return yo(),ei(e,n,t)}function ei(e,n,t){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!ti(V(e),n))return e;switch(e.t){case "var":{let r=n[e.name];return r||cr(e,n,t)}case "array":return {...e,items:N(e.items,n,t)};case "tuple":{let r=e.elements.map(o=>N(o,n,t));return {...e,elements:r}}case "union":return p.union(e.of.map(r=>N(r,n,t)));case "object":{if(t.has(e))return e;t.add(e);let r={};for(let a in e.props){let s=e.props[a];r[a]={type:N(s.type,n,t),optional:s.optional};}let o=e.index?{key:e.index.key,value:N(e.index.value,n,t)}:void 0;return t.delete(e),o?{t:"object",props:r,index:o}:{t:"object",props:r}}case "fn":{if(t.has(e))return e;t.add(e);let r=lr(e,n,t);return t.delete(e),r}case "overload":return {t:"overload",signatures:e.signatures.map(r=>lr(r,n,t))};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>N(r,n,t))};case "keyof":return D({t:"keyof",of:N(e.of,n,t)});case "index":return D({t:"index",obj:N(e.obj,n,t),key:N(e.key,n,t)});case "mapped":{let r=ur([p.typeParam(e.key)],n,V(e),t),o={t:"mapped",key:r.decls[0].name,over:N(e.over,n,t),body:N(e.body,r.inner,t),optional:e.optional};return Nn(o)??o}case "conditional":{if(e.check.t==="var"){let o=e.check.name,a=n[o],s=a?D(a):void 0,i=s?.t==="union"?s.of:s?.t==="boolean"?[p.literal(true),p.literal(false)]:null;if(i)return {t:"union",of:i.map(c=>N(e,{...n,[o]:c},t))}}let r=e.infer?.length?ur(e.infer,n,V(e),t):{inner:n,decls:void 0};return {t:"conditional",check:N(e.check,n,t),extends:N(e.extends,r.inner,t),then:N(e.then,r.inner,t),else:N(e.else,r.inner,t),...r.decls?{infer:r.decls}:{}}}case "intersection":return H({of:e.of.map(r=>N(r,n,t))});case "returnType":return D({t:"returnType",fn:N(e.fn,n,t)});case "parameters":return D({t:"parameters",fn:N(e.fn,n,t)});default:return e}}function cr(e,n,t,r=e.name){return !e.bound&&!e.default&&r===e.name?e:{...e,name:r,...e.bound?{bound:N(e.bound,n,t)}:{},...e.default?{default:N(e.default,n,t)}:{}}}function lr(e,n,t,r){let o=e.typeParams?.length?ur(e.typeParams,n,V(e),t,r):{inner:n,decls:void 0},a=o.inner;return {...e,params:e.params.map(s=>({...s,type:N(s.type,a,t)})),returns:N(e.returns,a,t),...e.guard?{guard:{...e.guard,type:N(e.guard.type,a,t)}}:{},...o.decls?{typeParams:o.decls}:{}}}function fr(e,n){return e.typeParams?.some(t=>n.has(t.name))?lr(e,{},new WeakSet,n):e}function ur(e,n,t,r,o=new Set){let a=new Set(e.map(y=>y.name)),s={},i=new Set;for(let y in n)if(!a.has(y)&&(s[y]=n[y],t.has(y)))for(let m of V(n[y]))i.add(m);let c=e.filter(y=>i.has(y.name)||o.has(y.name));if(c.length===0)return {inner:s,decls:e.map(y=>cr(y,s,r))};let l=new Set([...a,...t,...i,...o]),u=new Map;for(let y of c){let m=1;for(;l.has(`${y.name}_${m}`);)m++;let h=`${y.name}_${m}`;l.add(h),u.set(y.name,h);}let f={};for(let[y,m]of u)f[y]={t:"var",name:m};let d={...s};for(let y of c){let m=u.get(y.name);d[y.name]={t:"var",name:m,...y.bound?{bound:N(y.bound,{...s,...f},r)}:{}};}return {inner:d,decls:e.map(y=>cr(y,d,r,u.get(y.name)??y.name))}}var ni=new Set,Eo=new WeakMap;function V(e){let n=Eo.get(e);if(n)return n;let t=new Set;$(e,t,new WeakSet);let r=t.size===0?ni:t;return Eo.set(e,r),r}function pr(e,n,t){let r=new Set;t(r);for(let o of r)e.includes(o)||n.add(o);}function To(e,n,t){let r=e.typeParams??[];pr(r.map(o=>o.name),n,o=>{for(let a of r)$(a,o,t);for(let a of e.params)$(a.type,o,t);$(e.returns,o,t),e.guard&&$(e.guard.type,o,t);});}function $(e,n,t){switch(e.t){case "var":n.add(e.name),e.bound&&$(e.bound,n,t),e.default&&$(e.default,n,t);return;case "array":$(e.items,n,t);return;case "tuple":for(let r of e.elements)$(r,n,t);return;case "union":for(let r of e.of)$(r,n,t);return;case "object":if(t.has(e))return;t.add(e);for(let r in e.props)$(e.props[r].type,n,t);e.index&&$(e.index.value,n,t);return;case "fn":if(t.has(e))return;t.add(e),To(e,n,t);return;case "overload":for(let r of e.signatures)To(r,n,t);return;case "apply":for(let r of e.args)$(r,n,t);return;case "keyof":$(e.of,n,t);return;case "index":$(e.obj,n,t),$(e.key,n,t);return;case "mapped":$(e.over,n,t),pr([e.key],n,r=>$(e.body,r,t));return;case "conditional":{$(e.check,n,t);let r=e.infer??[];pr(r.map(o=>o.name),n,o=>{for(let a of r)$(a,o,t);$(e.extends,o,t),$(e.then,o,t),$(e.else,o,t);});return}case "intersection":for(let r of e.of)$(r,n,t);return;case "returnType":case "parameters":$(e.fn,n,t);return;default:return}}function ti(e,n){if(e.size===0)return false;for(let t of e)if(t in n)return true;return false}function dr(e){let n=[];for(let a of e){let s=D(a);if(s.t!=="object")return null;n.push(s);}let t=new Set;for(let a of n)for(let s in a.props)t.add(s);let r={};for(let a of t){let s=[],i=true;for(let c of n){let l=c.props[a];l&&(s.push(l.type),l.optional||(i=false));}r[a]={type:H({of:s}),optional:i};}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:H({of:[o.value,a.index.value]})}:a.index);return o?{t:"object",props:r,index:o}:{t:"object",props:r}}function Nn(e,n=D){if(e.over.t==="keyof"){let a=n(e.over.of),s=a.t==="intersection"?dr(a.of)??a:a;if(s.t==="object"){let i={};for(let l of Object.keys(s.props)){let u=e.optional||s.props[l].optional;i[l]={type:N(e.body,{[e.key]:p.literal(l)}),...u?{optional:true}:{}};}let c=s.index?.key;return c===void 0?{t:"object",props:i}:{t:"object",props:i,index:{key:c,value:N(e.body,{[e.key]:c==="number"?p.number:p.string})}}}}let t=D(e.over);if(t.t==="string"||t.t==="number")return {t:"object",props:{},index:{key:t.t,value:N(e.body,{[e.key]:t})}};let r=ri(t);if(r===null)return null;let o={};for(let a of r)o[a]={type:N(e.body,{[e.key]:p.literal(a)}),optional:e.optional};return {t:"object",props:o}}function ri(e){if(e.t==="literal"&&typeof e.value=="string")return [e.value];if(e.t==="union"){let n=[];for(let t of e.of)if(t.t==="literal"&&typeof t.value=="string")n.push(t.value);else return null;return n}return null}function qe(e){let n=e.length;for(;n>0&&e[n-1].default;)n--;return {min:n,max:e.length}}var Ao=(e,n)=>{let{min:t,max:r}=qe(e);return n>=t&&n<=r};function Ln(e,n){let t={};return e.forEach((r,o)=>{o<n.length?t[r.name]=n[o]:r.default&&(t[r.name]=N(r.default,t));}),t}function X(e,n){if(e.t!=="apply")return false;let t=n[e.name];return t!==void 0&&Ao(t.params,e.args.length)}function q(e,n){if(e.t!=="apply")return e;let t=n[e.name];return !t||!Ao(t.params,e.args.length)?e:N(t.body,Ln(t.params,e.args))}function K(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(r=>`${r}${e.props[r].optional?"?":""}:${K(e.props[r].type)}`).join(","),t=e.index?`,[${e.index.key}]:${K(e.index.value)}`:"";return `{${n}${t}}`}case "array":return `[${K(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(K).join(",")})`;case "union":return `(${e.of.map(K).sort().join("|")})`;case "fn":return `${e.typeParams?.length?`<${e.typeParams.map(t=>t.name).join(",")}>`:""}(${e.params.map(t=>K(t.type)).join(",")})=>${e.guard?`is${e.guard.param}:${K(e.guard.type)}`:K(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(K).join(",")}>`;case "intersection":return `&(${e.of.map(K).sort().join("&")})`;case "returnType":return `RT<${K(e.fn)}>`;default:return e.t}}var xo=()=>oe().maxInstantiationDepth;function P(e,n={},t=0){if(t>xo())return e;if(e.t==="var")return e.bound?P(e.bound,n,t+1):e;if(X(e,n))return P(q(e,n),n,t+1);if(e.t==="mapped"){let r=Nn(e,o=>P(o,n,t+1));if(r)return P(r,n,t+1)}if(e.t==="intersection")return H(e);if(e.t==="union"){let r=e.of.flatMap(a=>{let s=P(a,n,t+1);return s.t==="union"?s.of:[s]});return r.length===e.of.length&&r.every((a,s)=>a===e.of[s])?e:{t:"union",of:r}}return e}function Bn(e,n,t=0){if(t>xo())return e;let r=fe(e,n);if(r!==e)return Bn(r,n,t+1);let o=P(e,n,t);return o===e?e:Bn(o,n,t+1)}function fe(e,n={}){let t=D(e);if(t!==e)return t;switch(e.t){case "keyof":{let r=Bn(e.of,n);return r===e.of?e:D({...e,of:r})}case "index":{let r=Bn(e.obj,n),o=Bn(e.key,n);return r===e.obj&&o===e.key?e:D({...e,obj:r,key:o})}case "returnType":{let r=Bn(e.fn,n);return r===e.fn?e:D({...e,fn:r})}default:return e}}var Bt=e=>typeof e=="string"?p.string:typeof e=="number"?p.number:p.boolean;function de(e){return e.t==="literal"&&e.fresh?Bt(e.value):e}function Vn(e){if(e.t==="literal")return e.fresh?Bt(e.value):e;if(e.t==="union"){let n=e.of.map(Vn);return n.some((t,r)=>t!==e.of[r])?w(n):e}return e}function je(e){if(e.t==="literal")return Bt(e.value);if(e.t==="union"){let n=e.of.map(je);return n.some((t,r)=>t!==e.of[r])?w(n):e}return e}function tn(e){return ne(e,new WeakSet)}function mr(e){switch(e.t){case "array":return {t:"array",items:ne(e.items,new WeakSet),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>ne(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return Po(e,new WeakSet);case "fn":case "overload":return ne(e,new WeakSet);default:return e}}function ne(e,n){if(e.t==="literal")return e.fresh?Bt(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:ne(e.items,n),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(t=>ne(t,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return n.add(e),Po(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(t=>ne(t,n))};case "fn":return n.add(e),{...e,params:e.params.map(t=>({...t,type:ne(t.type,n)})),returns:ne(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:ne(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(t=>ne(t,n))};default:return e}}function Po(e,n){let t={};for(let s in e.props)t[s]={type:ne(e.props[s].type,n),optional:e.props[s].optional};let r=e.index?{key:e.index.key,value:ne(e.index.value,n)}:void 0,o=e.fromLiteral?{fromLiteral:true}:{},a=e.hasSpread?{hasSpread:true}:{};return r?{t:"object",props:t,index:r,...o,...a}:{t:"object",props:t,...o,...a}}function Ro(e){if(!e.siblings){let n=[];for(let t of Ro(e.parent)){if(t.t!=="object"||!t.fromLiteral)continue;let r=J(t.props,e.propertyName);r&&(r.type.t==="union"?n.push(...r.type.of):n.push(r.type));}e.siblings=n;}return e.siblings}function oi(e){if(!e.propNames){let n=new Set;for(let t of Ro(e))if(t.t==="object"&&t.fromLiteral&&!t.hasSpread)for(let r in t.props)n.add(r);e.propNames=[...n];}return e.propNames}var ai=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function si(e,n,t){let r={};for(let a in e.props){let s=e.props[a],i=nn(s.type,n&&{parent:n,propertyName:a},t);r[a]=i===s.type?s:{...s,type:i};}if(n)for(let a of oi(n))J(r,a)||(r[a]={type:p.undefined,optional:true});let o=e.index?{key:e.index.key,value:nn(e.index.value,void 0,t)}:void 0;return o?{t:"object",props:r,index:o}:{t:"object",props:r}}var Oo=new WeakMap;function vn(e,n){let t=Oo.get(e);if(t!==void 0)return t;if(n.has(e))return false;n.add(e);let r=false;switch(e.t){case "object":r=!!e.fromLiteral||Object.values(e.props).some(o=>vn(o.type,n))||!!e.index&&vn(e.index.value,n);break;case "array":r=!!e.fromLiteral||vn(e.items,n);break;case "tuple":r=!!e.fromLiteral||e.elements.some(o=>vn(o,n));break;case "union":case "intersection":r=e.of.some(o=>vn(o,n));break}return n.delete(e),Oo.set(e,r),r}var jo=new WeakMap;function nn(e,n,t){if(!vn(e,new WeakSet))return e;if(!n){let o=jo.get(e);if(o)return o}if(t.has(e))return e;t.add(e);let r=ii(e,n,t);return t.delete(e),n||jo.set(e,r),r}function ii(e,n,t){switch(e.t){case "object":return e.fromLiteral?si(e,n,t):e;case "union":{let r=n??{siblings:e.of},o=e.of.map(a=>a.t==="null"||a.t==="undefined"?a:nn(a,r,t));return o.some(ai)?w(o):o.every((a,s)=>a===e.of[s])?e:p.union(o)}case "intersection":{let r=false,o=e.of.map(a=>{let s=nn(a,void 0,t);return s!==a&&(r=true),s});return r?p.intersection(o):e}case "array":{let r=nn(e.items,void 0,t);return r===e.items&&!e.fromLiteral?e:{t:"array",items:r,...e.readonly?{readonly:true}:{}}}case "tuple":{let r=false,o=e.elements.map(a=>{let s=nn(a,void 0,t);return s!==a&&(r=true),s});return !r&&!e.fromLiteral?e:{t:"tuple",elements:o,...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}}}default:return e}}function Ge(e){return nn(e,void 0,new WeakSet)}var _n=Object.freeze({t:"union",of:Object.freeze([])});function Un(e){if(e===_n)return true;switch(e.t){case "array":return Un(e.items);case "tuple":return e.elements.some(Un);case "union":case "intersection":return e.of.some(Un);case "apply":return e.args.some(Un);default:return false}}var Co=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function ci(e,n){if(v(n,e))return e;if(v(e,n))return n;let t=Co(e),r=Co(n);return !t||!r||t===r?w([e,n]):null}var wn,Je=false;function li(e){Je=!Je;try{return e()}finally{Je=!Je;}}function Do(e){let n=wn,t=Je,r=new Map;wn=r,Je=false;try{return {result:e(),candidates:r}}finally{wn=n,Je=t;}}var Io=(e,n)=>{if(!wn)return;let t=wn.get(e);t||(t={co:[],contra:[]},wn.set(e,t)),(Je?t.contra:t.co).push(n);};function ui(e){if(e.length<=1)return [...e];let n=e.filter(kt);return n.length?[...e.filter(t=>!kt(t)),w(n)]:[...e]}function pi(e){let n;for(let t of e){if(t.t!=="literal")return false;let r=typeof t.value;if(n===void 0)n=r;else if(r!==n)return false}return true}function fi(e,n){if(e.length)return pi(e)?w([...e]):e.reduce((t,r)=>v(t,r,n)?r:t)}function Mo(e,n={}){let t=ui(e),r=t.filter(s=>s.t==="null"||s.t==="undefined"),o=t.filter(s=>s.t!=="null"&&s.t!=="undefined");if(!o.length)return Ge(w(t));let a=fi(o,n);if(a!==void 0)return Ge(r.length?w([a,...r]):a)}function $o(e,n={}){if(e.length)return e.reduce((t,r)=>v(r,t,n)?r:t)}function Fo(e,n={}){let t=e.co.length?Mo(e.co,n):void 0;if(!e.contra.length)return t;let r=$o(e.contra,n);if(r===void 0)return t;let o=t!==void 0&&t.t==="union"&&t.of.length===0;return t!==void 0&&!o&&v(t,r,n)?t:r}function yr(e,n){let{typeParams:t,...r}=e;return {...r,params:e.params.map(o=>({...o,type:N(o.type,n)})),returns:N(e.returns,n),...e.guard?{guard:{...e.guard,type:N(e.guard.type,n)}}:{}}}function En(e){return e.typeParams?.length?yr(e,Object.fromEntries(e.typeParams.map(n=>[n.name,p.any]))):e}function Lo(e){let n=e.typeParams;if(!n?.length)return e;let t=Object.fromEntries(n.map(a=>[a.name,a.bound??p.unknown])),r=n.map(a=>t[a.name]);for(let a=0;a<n.length-1;a++)r=r.map(s=>N(s,t));let o=Object.fromEntries(n.map(a=>[a.name,p.any]));return r=r.map(a=>N(a,o)),yr(e,Object.fromEntries(n.map((a,s)=>[a.name,r[s]])))}function vt(e,n,t={}){if(!e.some(o=>!n[o.name]||o.bound))return n;let r={...n};for(let o of e){let a=r[o.name]??(o.default?N(o.default,r):p.unknown);if(o.bound){let s=N(o.bound,r);v(a,s,t)||(a=s);}r[o.name]=a;}return r}function hr(e,n,t={}){let r=e.typeParams??[],o=new Set(r.map(u=>u.name)),a=u=>Object.fromEntries(Object.entries(u??{}).filter(([f])=>o.has(f))),s={},i=Math.max(e.params.length,n.params.length);for(let u=0;u<i;u++){let f=Wn(e,u),d=Wn(n,u);f&&d&&(s=F(f,d,s)??s);}let l={...a(e.guard&&n.guard&&e.guard.param===n.guard.param?F(e.guard.type,n.guard.type,{}):F(e.returns,n.returns,{}))};return Object.assign(l,a(s)),yr(e,vt(r,l,t))}function F(e,n,t={}){if(n===_n)return t;if(e.t==="var"){if(Un(n))return t;let r=t[e.name];if(!r)return Io(e.name,n),{...t,[e.name]:n};if(n.t==="any"||n.t==="unknown")return t;Io(e.name,n);let o=ci(r,n);return o?{...t,[e.name]:o}:t}if(n.t==="any"||n.t==="unknown")return t;switch(e.t){case "array":return n.t==="array"?F(e.items,n.items,t):null;case "tuple":{let r=e,o=Be(r);if(o<0){if(n.t!=="tuple"||n.elements.length!==r.elements.length)return null;let i=t;for(let c=0;c<r.elements.length;c++)i=F(r.elements[c],n.elements[c],i)??i;return i}let a=t,s=(i,c)=>{a=F(i,c,a)??a;};if(n.t==="tuple"){if(n.elements.length<o)return null;for(let c=0;c<o;c++)s(r.elements[c],n.elements[c]);let i=n.elements.slice(o);return a=F(r.elements[o],i.length?w(i):p.unknown,a)??a,a}if(n.t==="array"){for(let i=0;i<o;i++)s(r.elements[i],n.items);return a=F(r.elements[o],n.items,a)??a,a}return null}case "object":{if(n.t!=="object")return null;let r=t;for(let o in e.props){let a=e.props[o],s=n.props[o];if(!s){if(a.optional)continue;return null}r=F(a.type,s.type,r)??r;}return r}case "fn":{if(n.t!=="fn")return null;let r=En(e),o=Lo(n),a=F(r.returns,o.returns,t)??t,s=Math.min(r.params.length,o.params.length);for(let i=0;i<s;i++)a=li(()=>F(r.params[i].type,o.params[i].type,a))??a;return r.guard&&o.guard&&(a=F(r.guard.type,o.guard.type,a)??a),a}case "union":{if(!e.of.some(c=>V(c).size>0))return v(n,e)?t:null;let r=e.of.filter(c=>c.t==="var"),o=n.t==="union"?n.of:[n],a=o.map(()=>false),s=t;for(let c of e.of)if(c.t!=="var")for(let l=0;l<o.length;l++){let u=F(c,o[l],s);u!==null&&(s=u,a[l]=true);}if(r.length!==1)return s;let i=o.filter((c,l)=>!a[l]);return i.length?F(r[0],w(i),s)??s:s}case "apply":{if(n.t!=="apply"||n.name!==e.name||n.args.length!==e.args.length)return null;let r=t;for(let o=0;o<e.args.length;o++)r=F(e.args[o],n.args[o],r)??r;return r}default:return v(n,e)?t:null}}var Vo="@rev",Sr=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function ve(e,n,t){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===t)return p.var(Vo);switch(e.t){case "array":return {t:"array",items:ve(e.items,n,t)};case "tuple":return {t:"tuple",elements:e.elements.map(r=>ve(r,n,t)),...e.flags?{flags:e.flags}:{}};case "union":return p.union(e.of.map(r=>ve(r,n,t)));case "fn":return {...e,params:e.params.map(r=>({...r,type:ve(r.type,n,t)})),returns:ve(e.returns,n,t)};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>ve(r,n,t))};case "returnType":return {t:"returnType",fn:ve(e.fn,n,t)};case "object":{let r={};for(let o in e.props)r[o]={type:ve(e.props[o].type,n,t),optional:e.props[o].optional};return e.index?{t:"object",props:r,index:{key:e.index.key,value:ve(e.index.value,n,t)}}:{t:"object",props:r}}default:return e}}function di(e,n,t){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let r=e.over.of.name;if(t[r])return null;let o={};for(let a in n.props){let s=ve(e.body,r,e.key),i=F(s,n.props[a].type,{})?.[Vo];o[a]={type:i?de(i):p.unknown,optional:n.props[a].optional};}return {...t,[r]:{t:"object",props:o}}}function Uo(e,n,t){let r=t;for(let o=0;o<e.length&&o<n.length;o++){let a=e[o].type,s=n[o];if(Sr(a)&&s.t==="object"){let i=di(a,s,r);i&&(r=i);}}return r}function mi(e,n,t={}){let{result:r,candidates:o}=Do(()=>{let s={};for(let i=0;i<e.params.length;i++){let c=e.params[i];if(c.variadic){for(let l=i;l<n.length;l++)if(s=F(c.type,n[l],s),s===null)return null;break}if(i>=n.length){if(c.optional)continue;return null}if(!Sr(c.type)&&(s=F(c.type,n[i],s),s===null))return null}return Uo(e.params,n,s)});if(r===null)return null;let a=Wo(r,o,t);return {returns:N(e.returns,a),bindings:a}}function Wo(e,n,t){let r;for(let[o,a]of n){if(a.co.length<2&&!a.contra.length)continue;let s=Fo(a,t);s===void 0||s===e[o]||(r??(r={...e}),r[o]=s);}return r??e}function zn(e,n,t={}){let{result:r,candidates:o}=Do(()=>{let s={};for(let i=0;i<e.params.length&&i<n.length;i++){let c=e.params[i];if(Sr(c.type))continue;let l=F(c.type,n[i],s);l!==null&&(s=l);}return Uo(e.params,n,s)}),a=Wo(r,o,t);return {returns:N(e.returns,a),bindings:a}}var yi=e=>e.t==="array"?e.items:e.t==="tuple"?p.union([...e.elements]):void 0;function me(e,n,t,r,o){if(e.t==="var"&&t.has(e.name)){let a=o.get(e.name);a||o.set(e.name,a={co:[],contra:[]}),(r?a.contra:a.co).push(n);return}if(!(n.t==="any"||n.t==="unknown"))switch(e.t){case "array":{let a=yi(n);a&&me(e.items,a,t,r,o);return}case "tuple":{let a=e,s=Be(a);if(s<0){n.t==="tuple"&&n.elements.length===a.elements.length&&a.elements.forEach((c,l)=>me(c,n.elements[l],t,r,o));return}let i=a.elements[s];if(n.t==="tuple"){let c=n;if(c.elements.length<s)return;for(let l=0;l<c.elements.length;l++)me(l<s?a.elements[l]:i,c.elements[l],t,r,o);}else if(n.t==="array"){for(let c=0;c<s;c++)me(a.elements[c],n.items,t,r,o);me(i,n.items,t,r,o);}return}case "fn":if(n.t==="fn"){let a=En(e),s=Lo(n);a.params.forEach((i,c)=>{let l=s.params[c];l&&me(i.type,l.type,t,!r,o);}),me(a.returns,s.returns,t,r,o);}return;case "object":if(n.t==="object")for(let a in e.props)n.props[a]&&me(e.props[a].type,n.props[a].type,t,r,o);return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((a,s)=>me(a,n.args[s],t,r,o));return;default:return}}function hi(e,n){if(e.length===1)return e[0];let r=e.flatMap(o=>o.t==="union"?[...o.of]:[o]).filter(o=>e.every(a=>v(o,a,n)));return w(r)}var Si=e=>e.t==="union"&&e.of.length===0;function _o(e,n){let t={};for(let[r,{co:o,contra:a}]of e){let s=o.length?w(o):void 0,i=a.length?hi(a,n):void 0,c=s??i;s&&i&&(c=!Si(s)&&s.t!=="any"&&v(s,i,n)?s:i),c&&(t[r]=c);}return t}function zo(e,n={}){let t=new Map,r=(e.infer??[]).map(a=>a.name);me(e.extends,e.check,new Set(r),false,t);let o={..._o(t,n)};for(let a of r)a in o||(o[a]=p.unknown);return o}function gi(e,n={},t=0){if(!e.infer?.length||V(e.check).size>0)return null;let r=new Map;me(e.extends,e.check,new Set(e.infer.map(i=>i.name)),false,r);let o=_o(r,n),a=new WeakSet,s=rn(N(e.extends,o),n,a,t);return v(e.check,s,n)?rn(N(e.then,o),n,a,t):rn(N(e.else,o),n,a,t)}function rn(e,n={},t=new WeakSet,r=0,o=new Set){let a=r,s=oe().maxTypeDepth,i=new Set,c=(d,y)=>y?.length?new Set([...d,...y.map(m=>m.name)]):d,l=(d,y)=>({...d,...d.bound?{bound:f(d.bound,y)}:{},...d.default?{default:f(d.default,y)}:{}}),u=(d,y)=>{let m=c(y,d.typeParams);return {...d,params:d.params.map(h=>({...h,type:f(h.type,m)})),returns:f(d.returns,m),...d.guard?{guard:{...d.guard,type:f(d.guard.type,m)}}:{},...d.typeParams?{typeParams:d.typeParams.map(h=>l(h,m))}:{}}},f=(d,y=i)=>{switch(d.t){case "var":return y.has(d.name)?l(d,y):p.unknown;case "array":return {...d,items:f(d.items,y)};case "tuple":return {...d,elements:d.elements.map(m=>f(m,y))};case "union":return p.union(d.of.map(m=>f(m,y)));case "object":{if(t.has(d))return d;t.add(d);let m={};for(let S in d.props){let b=d.props[S];m[S]={type:f(b.type,y),optional:b.optional};}let h=d.index?{key:d.index.key,value:f(d.index.value,y)}:void 0;return t.delete(d),h?{t:"object",props:m,index:h}:{t:"object",props:m}}case "fn":{if(t.has(d))return d;t.add(d);let m=u(d,y);return t.delete(d),m}case "overload":return {t:"overload",signatures:d.signatures.map(m=>u(m,y))};case "apply":{if(X(d,n)){let m=q(d,n);if(m.t==="conditional"){if(a>=s)throw new Ae;a++;try{let h=f(m,y);if(h.t!=="conditional")return h}finally{a--;}}}return {t:"apply",name:d.name,args:d.args.map(m=>f(m,y))}}case "conditional":{let m=d.infer?.length?gi(d,n,a):we(d,n);if(m)return f(m,y);let h=c(y,d.infer);return {t:"conditional",check:f(d.check,y),extends:f(d.extends,h),then:f(d.then,h),else:f(d.else,h),...d.infer?{infer:d.infer.map(S=>l(S,h))}:{}}}case "intersection":return H({of:d.of.map(m=>f(m,y))});case "returnType":return D({t:"returnType",fn:f(d.fn,y)});default:return d}};return f(e,o)}var bi=p.object({}),br=(e,n,t="assignable")=>({seen:new WeakMap,exp:new Set,schemes:e,relation:t,assumed:0,explain:n,sourceStack:[],targetStack:[]}),gr=0;function _(e,n,t){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:t,kind:"type"}),false}function kr(e,n,t=0){if(t>oe().maxInstantiationDepth)return e;if(X(e,n)){let r=q(e,n);if(r.t!=="conditional")return e;let o=we(r,n);return o?kr(o,n,t+1):e}if(e.t==="conditional"){let r=we(e,n);return r?kr(r,n,t+1):e}return e}function qn(e,n,t={}){let r=[];return !T(e,n,br(t,{path:[],out:r}))&&r.length===0&&r.push({path:[],actual:e,expected:n,kind:"type"}),r}var ki=new WeakMap,Ni=new WeakMap;function Qo(e,n,t,r,o){if(e===n)return true;if(Object.keys(t).length>0)return T(e,n,br(t,void 0,r));let a=o.get(e)?.get(n);if(a!==void 0)return a;let s=T(e,n,br(t,void 0,r)),i=o.get(e);return i||o.set(e,i=new WeakMap),i.set(n,s),s}function v(e,n,t={}){return Qo(e,n,t,"assignable",ki)}function Tt(e,n,t={}){return Qo(e,n,t,"comparable",Ni)}function on(e,n,t={}){return v(e,n,t)&&v(n,e,t)}function we(e,n){if(e.infer?.length){if(V(e.check).size>0)return null;let t=kr(e.check,n),r=zo({...e,check:t},n),o=N(e.extends,r);return v(t,o,n)?N(e.then,r):N(e.else,r)}return V(e.check).size>0||V(e.extends).size>0?null:v(e.check,e.extends,n)?e.then:e.else}function Kn(e,n,t=0){if(t>oe().maxInstantiationDepth)return e;let r=fe(e,n.schemes);if(r!==e)return Kn(r,n,t+1);if(e.t==="conditional"){let o=we(e,n.schemes);if(o)return Kn(o,n,t+1)}return X(e,n.schemes)?Kn(q(e,n.schemes),n,t+1):e.t==="union"?w(e.of.map(o=>Kn(o,n,t+1))):e}var Ko=(e,n)=>Nn(e,t=>P(t,n.schemes))??Nn({...e,over:Kn(e.over,n)});function Et(e,n,t,r){if(!t.explain)return T(e,n,t);t.explain.path.push(r);try{return T(e,n,t)}finally{t.explain.path.pop();}}function T(e,n,t){if(gr>=oe().maxTypeDepth)throw new Ae;gr++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return t.relation==="comparable"?!0:_(t,e,n);let r=fe(e,t.schemes);if(r!==e)return T(r,n,t);let o=fe(n,t.schemes);if(o!==n)return T(e,o,t);if(e.t==="mapped"){let s=Ko(e,t);if(s)return T(s,n,t)}if(n.t==="mapped"){let s=Ko(n,t);if(s)return T(e,s,t)}if(e.t==="conditional"){let s=we(e,t.schemes);if(s)return T(s,n,t)}if(n.t==="conditional"){let s=we(n,t.schemes);if(s)return T(e,s,t)}if(t.relation==="comparable"&&Ei(n,e))return !0;if(n.t==="intersection")return n.of.every(s=>T(e,s,t));if(e.t==="intersection"&&n.t!=="union"){if(vi(e.of,n,t))return !0;if(n.t==="object"){let s=dr(e.of);if(s)return T(s,n,t)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(X(e,t.schemes)||X(n,t.schemes))){let s=`${K(e)}\u2264${K(n)}`;if(t.exp.has(s))return !0;if(Go(e,t.sourceStack)&&Go(n,t.targetStack))return t.assumed++,!0;t.exp.add(s),t.sourceStack.push(e),t.targetStack.push(n);let i=T(q(e,t.schemes),q(n,t.schemes),t);return t.sourceStack.pop(),t.targetStack.pop(),t.exp.delete(s),i}return Bi(e,n,t)}finally{gr--;}}var qo=5;function Go(e,n){if(n.length<qo||e.t!=="apply")return false;let t=0;for(let r of n)if(r.t==="apply"&&r.name===e.name&&++t>=qo)return true;return false}function Bi(e,n,t){let r=t.seen.get(e);if(r?.has(n))return t.assumed++,true;r||(r=new WeakSet,t.seen.set(e,r)),r.add(n);let o=t.assumed,a=wi(e,n,t);return (!a||t.assumed!==o)&&r.delete(n),a}function vi(e,n,t){let r=t.intersectionSource,o=t.explain;t.intersectionSource=true,t.explain=void 0;try{return e.some(a=>T(a,n,t))}finally{t.intersectionSource=r,t.explain=o;}}function wi(e,n,t){if(e.t==="union")return t.relation==="comparable"?e.of.length===0||e.of.some(r=>T(r,n,t)):e.of.every(r=>T(r,n,t));if(e.t==="boolean"&&n.t==="union")return t.relation==="comparable"?T(p.literal(true),n,t)||T(p.literal(false),n,t):T(p.literal(true),n,t)&&T(p.literal(false),n,t);if(n.t==="union")return Ti(e,n,t);if(e.t==="var"&&!(n.t==="var"&&n.name===e.name))return e.bound?T(e.bound,n,t):_(t,e,n);if(e.t==="nonPrimitive"&&n.t!=="nonPrimitive")return n.t==="object"&&n.index?_(t,e,n):T(bi,n,t);if(Xo(e)&&Xo(n))return Pi(e,n,t);if(n.t==="overload")return n.signatures.every(r=>T(e,r,t));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:_(t,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Ho(e.value)===n.t?true:_(t,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:_(t,e,n);case "nonPrimitive":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"||e.t==="apply"||e.t==="nonPrimitive"?true:_(t,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?_(t,e,n):T(e.items,n.items,t):e.t==="tuple"?e.readonly&&!n.readonly?_(t,e,n):ir(e).every((r,o)=>Et(r,n.items,t,String(o))):_(t,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return _(t,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return _(t,e,n);for(let r=0;r<e.elements.length;r++)if(!Et(e.elements[r],n.elements[r],t,String(r)))return false;return true}return wo(e,n,(r,o)=>T(r,o,t),t.relation==="comparable")}case "object":if(e.t==="object")return xi(e,n,t);if(Object.keys(n.props).length===0&&!n.index)return e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:_(t,e,n);if((e.t==="array"||e.t==="tuple")&&n.index){let r=e.t==="array"?[e.items]:ir(e);return n.index.key==="number"&&Object.values(n.props).every(o=>o.optional)&&r.every(o=>T(o,n.index.value,t))?true:_(t,e,n)}return _(t,e,n);case "fn":return e.t==="fn"?wt(e,n,t):_(t,e,n);case "var":return e.t==="var"&&e.name===n.name;case "typeQuery":return e.t==="typeQuery"&&e.path.length===n.path.length&&e.path.every((r,o)=>r===n.path[o]);case "keyof":return e.t==="keyof"&&T(e.of,n.of,t)&&T(n.of,e.of,t);case "index":return e.t==="index"&&T(e.obj,n.obj,t)&&T(n.obj,e.obj,t)&&T(e.key,n.key,t)&&T(n.key,e.key,t);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&T(e.over,n.over,t)&&T(n.over,e.over,t)&&T(e.body,n.body,t)&&T(n.body,e.body,t);case "conditional":return e.t==="conditional"&&T(e.check,n.check,t)&&T(n.check,e.check,t)&&T(e.extends,n.extends,t)&&T(n.extends,e.extends,t)&&T(e.then,n.then,t)&&T(e.else,n.else,t);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((r,o)=>T(r,n.args[o],t));case "returnType":return e.t==="returnType"&&T(e.fn,n.fn,t)&&T(n.fn,e.fn,t);case "parameters":return e.t==="parameters"&&T(e.fn,n.fn,t)&&T(n.fn,e.fn,t)}}var Ho=e=>typeof e;function Ei(e,n){switch(n.t){case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Ho(e.value)===n.t;case "literal":return e.t==="literal"&&e.value===n.value;case "void":return e.t==="void"||e.t==="undefined";default:return false}}function Ti(e,n,t){let r=t.explain;if(!r)return n.of.some(s=>T(e,s,t));t.explain=void 0;let o;try{o=n.of.some(s=>T(e,s,t));}finally{t.explain=r;}if(o)return true;let a=Ai(e,n,t);return a?T(e,a,t):_(t,e,n)}function Ai(e,n,t){if(e.t!=="object")return null;let r=n.of.map(o=>P(o,t.schemes));for(let o in e.props){let a=e.props[o].type;if(a.t!=="literal")continue;let s=t.explain;t.explain=void 0;let i;try{i=n.of.filter((c,l)=>{let u=r[l];if(u.t!=="object")return !1;let f=J(u.props,o);return !!f&&T(a,f.type,t)});}finally{t.explain=s;}if(i.length===1)return i[0]}return null}function xi(e,n,t){let r=false;for(let o in n.props)if(!(n.props[o].optional||J(e.props,o))){if(!t.explain)return false;t.explain.out.push({path:[...t.explain.path,o],expected:n.props[o].type,kind:"missing"}),r=true;}if(r)return false;for(let o in n.props){let a=n.props[o],s=J(e.props,o);if(!s)continue;if(s.optional&&!a.optional&&t.relation==="assignable")return false;let i=a.optional?Ne(s.type).type:s.optional?w([s.type,p.undefined]):s.type;if(!Et(i,a.type,t,o))return false}return !(n.index&&!Oi(e,n.index,t))}function Oi(e,n,t){if(t.intersectionSource){if(!e.index)return false}else {let r=n.key==="number";for(let o in e.props){if(r&&!$n(o))continue;let a=e.props[o],s=a.optional?Ke(a.type):a.type;if(!Et(s,n.value,t,o))return false}}return !e.index||T(e.index.value,n.value,t)}var Zo=e=>{let n=e.params[e.params.length-1];return n?.variadic?n:void 0},ji=e=>{let n=e.params.findIndex(t=>t.optional||t.variadic);return n<0?e.params.length:n};function Wn(e,n){let t=Zo(e),r=t?e.params.length-1:e.params.length;if(n<r)return e.params[n].type;if(!t)return;let o=t.type;if(o.t==="array")return o.items;if(o.t==="tuple"&&!o.flags)return o.elements[n-r]}var Jo=(e,n)=>{let t=Wn(e,n);return t===void 0?t:e.params[n]?.optional?Ke(t):t},Xo=e=>e.t==="fn"||e.t==="overload";function Pi(e,n,t){let r=e.t==="overload"?e.signatures:[e],o=n.t==="overload"?n.signatures:[n];return r.length===1&&o.length===1?Yo(r[0],o[0],t,t.relation==="comparable"):o.every(a=>r.some(s=>Yo(s,a,t,true)))}function Yo(e,n,t,r){if(r)return wt(En(e),En(n),t);let o=fr(n,V(e));return e.typeParams?.length?wt(hr(e,o,t.schemes),o,t):wt(e,o,t)}function wt(e,n,t){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!T(e.returns,n.returns,t)||!Zo(n)&&ji(e)>n.params.length)return false;let r=Math.max(e.params.length,n.params.length);for(let o=0;o<r;o++){let a=Jo(e,o),s=Jo(n,o);if(a&&s&&!T(s,a,t))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!T(e.guard.type,n.guard.type,t)))}var Ri=e=>e.t==="object"&&!e.index&&Object.values(e.props).every(n=>n.optional);function w(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let t=oe().maxUnionMembers;if(n.length>t)throw new xe(n.length,t);if(n.some(o=>o.t==="any"))return p.any;let r=[...n];for(let o=r.length-1;o>=0;o--){let a=r[o];r.some((i,c)=>c!==o&&!Ri(i)&&v(a,i)&&(c<o||!v(i,a)))&&r.splice(o,1);}if(r.some(o=>o.t==="literal"&&o.value===true)&&r.some(o=>o.t==="literal"&&o.value===false)){let o=r.filter(a=>!(a.t==="boolean"||a.t==="literal"&&typeof a.value=="boolean"));o.push(p.boolean),r.length=0,r.push(...o);}return r.length===1?r[0]:{t:"union",of:r}}function Nr(e,n){let t=new Set,r=new WeakSet,o=a=>{if(!r.has(a))switch(r.add(a),a.t){case "keyof":t.add("keyof"),o(a.of);break;case "index":t.add("indexed"),o(a.obj),o(a.key);break;case "mapped":t.add("mapped"),o(a.over),o(a.body);break;case "conditional":t.add("conditional"),a.infer?.length&&t.add("infer"),a.infer?.forEach(o),o(a.check),o(a.extends),o(a.then),o(a.else);break;case "returnType":t.add("returnType"),o(a.fn);break;case "parameters":t.add("parameters"),o(a.fn);break;case "tuple":t.add("tuple"),a.elements.forEach(o);break;case "intersection":t.add("intersection"),a.of.forEach(o);break;case "overload":t.add("overload");for(let s of a.signatures){s.typeParams?.forEach(o);for(let i of s.params)o(i.type);o(s.returns),s.guard&&o(s.guard.type);}break;case "object":for(let s in a.props)o(a.props[s].type);a.index&&o(a.index.value);break;case "array":o(a.items);break;case "union":a.of.forEach(o);break;case "fn":a.typeParams?.forEach(o);for(let s of a.params)o(s.type);o(a.returns),a.guard&&o(a.guard.type);break;case "var":a.bound&&o(a.bound),a.default&&o(a.default);break;case "apply":n&&a.name===n&&t.add("recursion"),a.args.forEach(o);break}};return o(e),t}var Ci=p.union([]);function ea(e,n){return At(e,n,new WeakMap)}function Ii(e){return e.reduce(ea,Ci)}function At(e,n,t){if(e.t==="any"||n.t==="any")return p.any;if(e===n)return e;let r=t.get(e)?.get(n);if(r)return r;if(e.t==="object"&&n.t==="object")return Di(e,n,t);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:p.unknown};return na(t,e,n,o),o.items=At(e.items,n.items,t),o}return w([e,n])}function Di(e,n,t){let r={t:"object",props:{}};na(t,e,n,r);for(let o in e.props){let a=e.props[o],s=n.props[o];if(s){let i=At(a.type,s.type,t);r.props[o]=a.optional||s.optional?{type:i,optional:true}:{type:i};}else r.props[o]={type:a.type,optional:true};}for(let o in n.props)o in e.props||(r.props[o]={type:n.props[o].type,optional:true});return e.index&&n.index&&e.index.key===n.index.key&&(r.index={key:e.index.key,value:At(e.index.value,n.index.value,t)}),r}function na(e,n,t,r){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(t,r);}var Mi=4;function $i(e,n={}){return Gn(e,n,0)}function Gn(e,n,t){let r=P(fe(e,n),n);switch(r.t){case "string":return "";case "number":return 0;case "boolean":return false;case "null":return null;case "literal":return r.value;case "array":return [];case "tuple":{let o=[];for(let a=0;a<r.elements.length&&(r.flags?.[a]??"req")==="req";a++)o.push(Gn(r.elements[a],n,t));return o}case "object":{if(t>=Mi)return {};let o={};for(let a of Object.keys(r.props)){let s=r.props[a];s.optional||(o[a]=Gn(s.type,n,t+1));}return o}case "nonPrimitive":return {};case "union":{if(r.of.some(a=>a.t==="null"))return null;let o=r.of.find(a=>a.t!=="undefined");return o===void 0?null:Gn(o,n,t)}case "intersection":{let o=r.of.map(a=>Gn(a,n,t));return o.every(Fi)?Object.assign({},...o):null}default:return null}}var Fi=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);var Li=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e),Vi={check:new Set(["function","conditional"]),extends:new Set(["conditional"]),union:new Set(["function","conditional","union","intersection"]),intersection:new Set(["function","conditional","union","intersection"]),operand:new Set(["function","conditional","union","intersection"]),postfix:new Set(["function","conditional","union","intersection","operator","query"])},ta=(e,n)=>Vi[e].has(n);function R(e,n=new WeakSet){return U(e,{seen:n,infer:new Map})}function Ui(e){return xt(e,{seen:new WeakSet,infer:new Map})}function vr(e,n){switch(e.t){case "fn":return "function";case "overload":return e.signatures.length===1?"function":"primary";case "conditional":return "conditional";case "union":return e.of.length===0?"primary":e.of.length===1?vr(e.of[0],n):"union";case "intersection":return e.of.length===1?vr(e.of[0],n):"intersection";case "keyof":return "operator";case "array":case "tuple":return e.readonly?"operator":"primary";case "typeQuery":return "query";case "var":{let t=n.infer.get(e.name);return t?t.bound?"conditional":"operator":"primary"}default:return "primary"}}function Pe(e,n,t){let r=U(n,t);return ta(e,vr(n,t))?`(${r})`:r}function xt(e,n){return e.map((t,r)=>{let o=U(t,n);return r===0&&Wi(t)?`(${o})`:o}).join(", ")}var Wi=e=>e.t==="fn"&&!!e.typeParams?.length||e.t==="overload"&&e.signatures.length===1&&!!e.signatures[0].typeParams?.length;function _i(e,n){return e?.length?`<${e.map(t=>zi(t,n)).join(", ")}>`:""}function zi(e,n){let t=e.bound?` extends ${U(e.bound,n)}`:"",r=e.default?` = ${U(e.default,n)}`:"";return `${e.name}${t}${r}`}function Ot(e,n){if(!n.some(r=>e.infer.has(r)))return e;let t=new Map(e.infer);for(let r of n)t.delete(r);return {...e,infer:t}}function Br(e,n,t){let r=Ot(t,(e.typeParams??[]).map(i=>i.name)),o=e.params.map(i=>{let c=i.variadic?"...":"",l=i.optional&&!i.variadic?"?":"";return `${c}${i.name}${l}: ${U(i.type,r)}`}).join(", "),a=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${U(e.guard.type,r)}`:U(e.returns,r),s=_i(e.typeParams,r);return n==="=>"?`${s}(${o}) => ${a}`:`${s}(${o}): ${a}`}function U(e,n){let{seen:t}=n;switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "nonPrimitive":return "object";case "var":{let r=n.infer.get(e.name);return r?r.bound?`infer ${e.name} extends ${U(r.bound,Ot(n,[e.name]))}`:`infer ${e.name}`:e.name}case "typeQuery":return `typeof ${e.path.join(".")}`;case "literal":return typeof e.value=="string"?JSON.stringify(e.value):String(e.value);case "array":{let r=`${Pe("postfix",e.items,n)}[]`;return e.readonly?`readonly ${r}`:r}case "tuple":{let o=`[${e.elements.map((a,s)=>{let i=e.flags?.[s]??"req";return i==="rest"?`...${Pe("postfix",a,n)}[]`:i==="optional"?`${Pe("postfix",a,n)}?`:U(a,n)}).join(", ")}]`;return e.readonly?`readonly ${o}`:o}case "union":{if(e.of.length===0)return "never";if(e.of.length===1)return U(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>Pe("union",o,n)).join(" | ");return t.delete(e),r}case "intersection":{if(e.of.length===1)return U(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>Pe("intersection",o,n)).join(" & ");return t.delete(e),r}case "object":{if(t.has(e))return "\u2026";t.add(e);let r=Object.entries(e.props).map(([o,a])=>`${Li(o)?o:JSON.stringify(o)}${a.optional?"?":""}: ${U(a.type,n)}`);return e.index&&r.push(`[k: ${e.index.key}]: ${U(e.index.value,n)}`),t.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(t.has(e))return "\u2026";t.add(e);let r=Br(e,"=>",n);return t.delete(e),r}case "overload":{if(e.signatures.length===1)return Br(e.signatures[0],"=>",n);if(t.has(e))return "\u2026";t.add(e);let r=e.signatures.map(o=>Br(o,":",n));return t.delete(e),`{ ${r.join("; ")} }`}case "apply":{if(e.args.length===0)return e.name;if(t.has(e))return "\u2026";t.add(e);let r=`${e.name}<${xt(e.args,n)}>`;return t.delete(e),r}case "keyof":return `keyof ${Pe("operand",e.of,n)}`;case "index":return `${Pe("postfix",e.obj,n)}[${U(e.key,n)}]`;case "mapped":{if(t.has(e))return "\u2026";t.add(e);let r=e.optional?"?":"",o=Ot(n,[e.key]),a=`{ [${e.key} in ${U(e.over,n)}]${r}: ${U(e.body,o)} }`;return t.delete(e),a}case "conditional":{if(t.has(e))return "\u2026";t.add(e);let r=e.infer??[],o=r.length?{...n,infer:new Map([...n.infer,...r.map(i=>[i.name,i])])}:n,a=Ot(n,r.map(i=>i.name)),s=`${Pe("check",e.check,n)} extends ${Pe("extends",e.extends,o)} ? ${U(e.then,a)} : ${U(e.else,a)}`;return t.delete(e),s}case "returnType":return `ReturnType<${xt([e.fn],n)}>`;case "parameters":return `Parameters<${xt([e.fn],n)}>`}}function ra(e){if(e.length===0)return "value";let n=e[e.length-1];if(/^\d+$/.test(n)){let t=e.slice(0,-1);return t.length?`property '${t.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function Jn(e){let n=e.filter(t=>t.kind==="missing");if(n.length&&n.length===e.length){let t=n.map(r=>`'${r.path.join(".")}'`).join(", ");return n.length===1?`property ${t} is missing`:`properties ${t} are missing`}return e.map(t=>t.actual===void 0?`${ra(t.path)} is missing`:`${ra(t.path)}: expected '${R(t.expected)}', got '${R(t.actual)}'`).join("; ")}function an(e,n=new WeakSet){switch(e.t){case "string":case "number":case "boolean":case "null":case "literal":return true;case "array":return n.has(e)?true:(n.add(e),an(Ne(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(t=>an(Ne(t).type,n)));case "object":{if(n.has(e))return true;n.add(e);let t=Object.values(e.props).every(o=>an(Ne(o.type).type,n)),r=!e.index||an(Ne(e.index.value).type,n);return t&&r}case "union":return n.has(e)?true:(n.add(e),e.of.every(t=>an(t,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(t=>an(t,n)));case "undefined":case "void":case "fn":case "overload":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "var":case "typeQuery":case "apply":case "any":case "unknown":case "nonPrimitive":return false}}function Z(e,n,t={}){let r=e;for(let o of n){let a=sn(r,o,t);if(a===null)return null;r=a;}return {type:r,completions:Xn(r,t)}}var Ki=e=>e==="[]"||/^\d+$/.test(e);function sn(e,n,t,r=new Set){if(e.t==="var")return e.bound?sn(P(e,t),n,t,r):null;if(e.t==="mapped"){let a=P(e,t);return a===e?null:sn(a,n,t,r)}if(X(e,t)){let a=K(e);if(r.has(a))return null;r.add(a);let s=sn(q(e,t),n,t,r);return r.delete(a),s}let o=D(e);if(o!==e)return sn(o,n,t,r);switch(e.t){case "any":return e;case "object":{let a=J(e.props,n);return a?a.optional?w([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return Ki(n)?e.items:null;case "tuple":{let a=e.flags?.findIndex(c=>c!=="req")??-1,s=Number(n);if(!(Number.isInteger(s)&&s>=0))return null;if(a<0)return s<e.elements.length?e.elements[s]:null;if(s<a)return e.elements[s];let i=e.elements.slice(a);return i.length?w(i):null}case "union":{let a=[];for(let s of e.of){let i=sn(s,n,t,r);if(i===null)return null;a.push(i);}return a.length?w(a):null}case "intersection":{let a=e.of.map(s=>sn(s,n,t,r)).filter(s=>s!==null);return a.length?H({of:a}):null}default:return null}}function Xn(e,n,t=new WeakSet,r=new Set){if(e.t==="var")return e.bound?Xn(P(e,n),n,t,r):[];if(X(e,n)){let a=K(e);if(r.has(a))return [];r.add(a);let s=Xn(q(e,n),n,t,r);return r.delete(a),s}let o=D(e);if(o!==e)return Xn(o,n,t,r);switch(e.t){case "object":return Object.entries(e.props).map(([a,s])=>({key:a,type:s.type,optional:!!s.optional}));case "array":return [{key:"[]",type:e.items,optional:false}];case "tuple":return e.elements.map((a,s)=>({key:String(s),type:a,optional:false}));case "union":case "intersection":{if(t.has(e))return [];t.add(e);let a=[],s=new Set;for(let i of e.of)for(let c of Xn(i,n,t,r))s.has(c.key)||(s.add(c.key),a.push(c));return t.delete(e),a}default:return []}}var aa=(e={})=>ast.rootScope(e),Xe=(e,n)=>ast.childScope(e,n),ee=(e,n)=>ast.lookup(e,n),wr=e=>{let n=ast.visibleNames(e);for(let t of n.keys())(t.includes(".")||t.endsWith("#"))&&n.delete(t);return n},oa=new Set(["types","schemes","accessors","asserters","matchers","modules"]),Qi=(e={},n)=>{let t=n??{},r=Object.keys(t).filter(o=>!oa.has(o));if(r.length>0)throw new ast.TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${r.map(o=>`'${o}'`).join(", ")} \u2014 expected ${[...oa].join(", ")}. Named types go under 'types'.`,{unknown:r});return {scope:aa(e),types:t.types??{},schemes:Hi(t.schemes??{}),accessors:t.accessors??{},asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:t.modules??{}}};function Hi(e){let n=false,t=Object.entries(e).map(([r,o])=>{let a=p.scheme(o.params,o.body),s=a.params===o.params&&a.body===o.body;return s||(n=true),[r,s?o:a]});return n?Object.fromEntries(t):e}var Zi=(e,n)=>e.types[n],ec=(e,n)=>e.schemes[n];var sa={"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"},O=(e,n,t)=>({code:e,kind:sa[e],severity:"error",node:n,message:t}),z=(e,n,t,r="error")=>({code:e,kind:sa[e],severity:r,node:n,message:t}),g={notAssignable:(e,n,t,r={})=>{let o=qn(n,t,r),a=o.filter(l=>l.path.length>0),s=a.length?` ${Jn(a)}.`:"",i=O("not-assignable",e,`Type '${R(n)}' is not assignable to type '${R(t)}'.${s}`),c=o.filter(l=>l.kind==="missing"&&l.path.length===1).map(l=>({name:l.path[0],type:l.expected}));return c.length?{...i,data:{kind:"missing-properties",properties:c}}:i},unknownName:(e,n)=>O("unknown-name",e,`Cannot find name '${n}'.`),notCallable:(e,n)=>O("not-callable",e,`Type '${R(n)}' is not callable.`),noSuchMember:(e,n,t)=>O("no-such-member",e,`Property '${t}' does not exist on type '${R(n)}'.`),notObject:(e,n)=>O("not-object",e,`Type '${R(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 O("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${r}.`:`Object is possibly ${r}.`)},unknownValue:e=>O("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>O("const-needs-init",e,"'const' declarations must be initialized."),missingArgument:(e,n,t)=>O("missing-argument",e,`Missing argument '${n}' of type '${R(t)}'.`),notASchema:(e,n)=>O("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)=>O("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)=>O("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>O("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)=>O("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),cannotRedeclare:(e,n)=>O("cannot-redeclare",e,`Cannot redeclare block-scoped variable '${n}'.`),circularTypeAlias:(e,n)=>O("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>O("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>O("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,r,o=false)=>O(r==="missing"?"missing-argument":"excess-argument",e,o?`Expected at least ${n} arguments, but got ${t}.`:`Expected ${n} arguments, but got ${t}.`),excessProperty:(e,n,t)=>O("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${R(t)}'.`),spreadArgument:e=>O("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>O("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>O("not-iterable",e,`Type '${R(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),propsMismatch:(e,n,t)=>O("props-mismatch",e,`Payload is not compatible with the component props '${R(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>O("no-matching-overload",e,`No overload of '${R(n)}' matches the arguments (${t.map(r=>R(r)).join(", ")}).`),constraintViolation:(e,n,t,r)=>O("constraint-violation",e,`Type '${R(t)}' does not satisfy the constraint '${n} extends ${R(r)}'.`),unsupported:(e,n)=>O("unsupported",e,`${n} is not supported in this language.`),wrongTypeArgumentCount:(e,n,t)=>O("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,r)=>O("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)=>O("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)=>O("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)=>z("unused-name",e,`'${n}' is declared but its value is never read.`,"warning"),assignToConst:(e,n,t)=>O("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)=>O("readonly-write",e,`Index signature in type '${R(n)}' only permits reading.`),castUnsound:(e,n,t)=>O("cast-unsound",e,`Conversion of type '${R(n)}' to type '${R(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)=>O("unprovable-value",e,`A value of type '${R(n)}' can never satisfy '${r}' (${R(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>O("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)=>O("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${R(t)}' and '${R(r)}'.`),implicitCoercion:(e,n,t,r)=>({...O("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${R(n)}' and '${R(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)=>({...O("implicit-coercion",e,`Cannot convert '${R(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 te(){let e=[];return {all:e,report(n){e.push(n);},hasErrors(){return e.some(n=>n.severity==="error")}}}function Yn(e,n,t){let r=je(e);return Tt(n,tn(r),t)||Tt(r,n,t)}function ia(e,n,t){return v(e,n,t)}function Tr(e,n,t={}){return n.flatMap(r=>r(e,t))}function cn(e,n){let t=r=>{n(r);for(let o of ast.childrenOf(r))t(o);};t(e);}var rc=e=>Array.isArray(e)?e:[e],ca=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function Ar(e,n="error"){return t=>{let r=[];return cn(t,o=>{let a=capability.nodeViolation(o,e);a&&r.push(z("node-not-allowed",o,`'${a}' is not allowed by the capability profile.`,n));}),r}}function la(e,n="error"){let t=e.typeTier;return r=>{if(t==="author")return [];let o=[];return cn(r,a=>{let s=a,i=s.type==="TSTypeAliasDeclaration"?s.id?.name:void 0;for(let c of [s.typeAnnotation,s.returnType]){if(!c)continue;let l=capability.typeFeatureViolations(Nr(c,i),t);l.length&&o.push(z("type-feature-not-allowed",a,`authoring type feature${l.length>1?"s":""} '${l.join("', '")}' requires capability tier 'author'.`,n));}}),o}}function L(e,n=new WeakSet){if(!e||typeof e!="object"||n.has(e))return false;switch(n.add(e),e.t){case "any":return true;case "object":return Object.values(e.props).some(t=>L(t.type,n))||!!e.index&&L(e.index.value,n);case "array":return L(e.items,n);case "tuple":return e.elements.some(t=>L(t,n));case "union":case "intersection":return e.of.some(t=>L(t,n));case "fn":return e.params.some(t=>L(t.type,n))||L(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(r=>L(r.type,n))||L(t.returns,n));case "keyof":return L(e.of,n);case "index":return L(e.obj,n)||L(e.key,n);case "mapped":return L(e.over,n)||L(e.body,n);case "conditional":return L(e.check,n)||L(e.extends,n)||L(e.then,n)||L(e.else,n);case "returnType":case "parameters":return L(e.fn,n);case "apply":return e.args.some(t=>L(t,n));default:return false}}function ua(e,n="error"){return t=>{if(!e.typeStrict)return [];let r=[];return cn(t,o=>{let a=o;for(let s of [a.typeAnnotation,a.returnType])if(s&&L(s)){r.push(z("any-not-allowed",o,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),r}}function pa(e,n="error"){return (t,r)=>{let o=r.overlay;if(!e.typeStrict||!o)return [];let a=r.schemes??{},s=[];return cn(t,i=>{if(i.type!=="TSAsExpression")return;let{expression:c}=i,l=o.get(c)?.type,u=o.get(i)?.type;!l||!u||L(u)||!Yn(l,u,a)||ia(l,u,a)||s.push(z("narrowing-cast-not-allowed",i,`A cast may only widen under 'strict': '${R(l)}' is not assignable to '${R(u)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),s}}function xr(e,n="error"){let t=new Set(e);return r=>{let o=[];return cn(r,a=>{if(a.type!=="CallExpression")return;let s=a.callee;if(s.type!=="Identifier")o.push(z("name-not-allowed",s,"Only direct calls to allowed functions are permitted.",n));else {let i=s.name;t.has(i)||o.push(z("name-not-allowed",s,`Function '${i}' is not allowed here.`,n));}}),o}}function jt(e,n,t={}){let r=new Set(rc(e)),o=t.severity??"error",a=[...r].join("/");return s=>{let i=[],c=(l,u)=>{let f=r.has(l.type),d=f?u+1:u;f&&d>n&&i.push(z("too-deep",l,`Nesting of ${a} exceeds ${n}${t.hint?` \u2014 ${t.hint}`:""}.`,o));for(let y of ast.childrenOf(l))c(y,d);};return c(s,0),i}}var Or=(e=3,n="error")=>jt(ca,e,{hint:"use a pipe instead of nesting functions",severity:n}),jr=(e,n="error")=>jt("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),Pr=(e,n="error")=>jt("MemberExpression",e,{severity:n});function Rr(e,n="error"){return t=>{let r=[],o=(a,s)=>{if(s>e){r.push(z("too-deep",a,`Expression nesting exceeds ${e}.`,n));return}for(let i of ast.childrenOf(a))o(i,s+1);};return o(t,0),r}}function Cr(e,n="error"){return t=>{let r=0;return cn(t,()=>{r++;}),r>e?[z("too-large",t,`Expression has ${r} nodes (max ${e}).`,n)]:[]}}function Ir(e,n="error"){return t=>{let r=[];return cn(t,o=>{if(o.type==="CallExpression"){let a=o.arguments;a&&a.length>e&&r.push(z("too-large",o,`Call has ${a.length} arguments (max ${e}).`,n));}}),r}}function Dr(e,n={},t="error"){return (r,o)=>{let a=o.overlay?.get(r)?.type;return a?v(a,e,n)?[]:[z("wrong-result-type",r,`Result type '${R(a)}' is not assignable to the required '${R(e)}'.`,t)]:[]}}function Pt(e){let n=[Ar(e),la(e),ua(e),pa(e)];return e.hostAllow!=="*"&&n.push(xr([...e.hostAllow])),n}function ac(e){return Pt(capability.compileProfile(e))}var Mr=[{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"}],Qn=new Map(Mr.map(e=>[e.op,e])),fa={number:p.number,boolean:p.boolean,string:p.string},$r=e=>fa[e],da=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],sc={number:p.number,boolean:p.boolean,string:p.string,undefined:p.undefined},ic=[{op:"&&"},{op:"||"},{op:"??"}];function cc(e,n={}){return Mr.filter(t=>t.result==="additive"?v(p.string,e,n)||v(p.number,e,n):v(fa[t.result],e,n))}function lc(e,n={}){return da.filter(t=>v(sc[t.result],e,n))}var ln=e=>({bindings:new Map,parent:e}),ya=e=>e.charCodeAt(0)===95;function Rt(e,n,t,r,o,a){let s=e.bindings.get(t);s&&(s.exempt=true);let i={name:t,node:r,kind:o,exempt:a,used:false};e.bindings.set(t,i),n.all.push(i);}function Zn(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)Zn(r,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let r=t.path[0];typeof r=="string"&&Ct(n,r);return}for(let r of Object.keys(t))Zn(t[r],n);}function ha(e,n){let t=e;Zn(t.typeAnnotation,n),Zn(t.returnType,n);}function Ct(e,n){for(let t=e;t;t=t.parent){let r=t.bindings.get(n);if(r){r.used=true;return}}}function Re(e,n,t,r,o,a){if(e)switch(e.type){case "Identifier":{let s=e.name;ha(e,n),Rt(n,t,s,e,r,o||a&&ya(s));return}case "ObjectPattern":{let s=e.properties,i=s[s.length-1],c=!!i&&i.type==="RestElement";s.forEach((l,u)=>{let f=c&&u<s.length-1;if(l.type==="RestElement")Re(l.argument,n,t,r,o,false);else {let d=l;d.computed&&M(d.key,n,t),Re(d.value,n,t,r,o||f,!d.shorthand);}});return}case "ArrayPattern":{for(let s of e.elements){if(!s)continue;let i=s;Re(i.type==="RestElement"?i.argument:i,n,t,r,o,true);}return}case "AssignmentPattern":Re(e.left,n,t,r,o,a);return;case "RestElement":Re(e.argument,n,t,r,o,true);return;default:return}}function Hn(e,n,t){if(e)switch(e.type){case "AssignmentPattern":M(e.right,n,t),Hn(e.left,n,t);return;case "ObjectPattern":for(let r of e.properties)Hn(r.type==="RestElement"?r.argument:r.value,n,t);return;case "ArrayPattern":for(let r of e.elements)r&&Hn(r,n,t);return;case "RestElement":Hn(e.argument,n,t);return;default:return}}function ma(e,n,t,r){for(let o of e.declarations)Re(o.id,n,t,"local",r,false),M(o.init,n,t);}function Fr(e,n,t){let r=e,o=ln(n),a=r.params??[];for(let s of a)Re(s,o,t,"parameter",false,true);for(let s of a)Hn(s,o,t);M(r.body,o,t);}function M(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(ha(e,n),e.type){case "Identifier":Ct(n,e.name);return;case "MemberExpression":{let r=e;M(r.object,n,t),r.computed&&M(r.property,n,t);return}case "Property":{let r=e;r.computed&&M(r.key,n,t),M(r.value,n,t);return}case "Program":case "BlockStatement":{let r=ln(n);for(let o of e.body??[])M(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":Fr(e,n,t);return;case "FunctionDeclaration":{let r=e.id;r&&Rt(n,t,r.name,r,"local",false),Fr(e,n,t);return}case "CatchClause":{let r=e,o=ln(n);Re(r.param,o,t,"local",true,false),M(r.body,o,t);return}case "SwitchStatement":{let r=e;M(r.discriminant,n,t);let o=ln(n);for(let a of r.cases){M(a.test,o,t);for(let s of a.consequent??[])M(s,o,t);}return}case "ForStatement":{let r=e,o=ln(n);M(r.init,o,t),M(r.test,o,t),M(r.update,o,t),M(r.body,o,t);return}case "ForOfStatement":case "ForInStatement":{let r=e;M(r.right,n,t);let o=ln(n),a=r.left;if(a.type==="VariableDeclaration")for(let s of a.declarations)Re(s.id,o,t,"local",false,true);else M(a,o,t);M(r.body,o,t);return}case "VariableDeclaration":ma(e,n,t,false);return;case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&Rt(n,t,o.name,o,"import",ya(o.name));}return}case "ExportNamedDeclaration":{let r=e;if(r.declaration){let o=r.declaration;if(o.type==="VariableDeclaration")ma(o,n,t,true);else if(o.type==="FunctionDeclaration"){let a=o.id;a&&Rt(n,t,a.name,a,"local",true),Fr(o,n,t);}else M(o,n,t);}else for(let o of r.specifiers)Ct(n,o.local.name);return}case "TSAsExpression":M(e.expression,n,t);return;case "TSTypeAliasDeclaration":Zn(e.typeAnnotation,n);return;case "JsonExpression":Lr(e.body,n,t);return;case "JSXOpeningElement":{let r=e;Sa(r.name,n);for(let o of r.attributes??[])M(o,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":M(e.value,n,t);return;default:{let r=ast.VisitorKeys[e.type];if(!r)return;let o=e;for(let a of r){let s=o[a];if(Array.isArray(s))for(let i of s)M(i,n,t);else M(s,n,t);}return}}}function Sa(e,n,t){e&&(e.type==="JSXIdentifier"?Ct(n,e.name):e.type==="JSXMemberExpression"&&Sa(e.object,n));}function Lr(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let o of e)Lr(o,n,t);return}let r=e;if(ast.isExprMarker(r)){try{M(json.fromJson(r),n,t);}catch{}return}for(let o of Object.keys(r))Lr(r[o],n,t);}function Vr(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};M(e,ln(void 0),t);let r=[];for(let o of t.all)o.used||o.exempt||(o.kind==="parameter"?n.parameters:n.locals)&&r.push(g.unusedName(o.node,o.name));return r}var mc=new Set(["const","import"]),et=e=>({binds:new Map,parent:e});function yc(e,n){for(let t=e;t;t=t.parent){let r=t.binds.get(n);if(r)return r}}function un(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?un(n.argument):un(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?un(n):[]);case "AssignmentPattern":return un(e.left);case "RestElement":return un(e.argument);default:return []}}var It=(e,n,t)=>{for(let r of un(n))e.binds.set(r.name,t);};function Ur(e,n,t){if(!e)return;if(e.type!=="Identifier"){for(let a of un(e))Ur(a,n,t);return}let r=e.name,o=yc(n,r);o&&mc.has(o)&&(t.invalid.add(e),t.out.push(g.assignToConst(e,r,o==="import"?"import":"const")));}function Y(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let r=e;Ur(r.left,n,t),Y(r.right,n,t);return}case "UpdateExpression":{Ur(e.argument,n,t);return}case "Program":case "BlockStatement":{let r=et(n);for(let o of e.body??[])Y(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=et(n);for(let a of r.params??[])It(o,a,"param");Y(r.body,o,t);return}case "CatchClause":{let r=e,o=et(n);It(o,r.param,"param"),Y(r.body,o,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,o=et(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let s of a.declarations)It(o,s.id,a.kind);else a&&Y(a,o,t);Y(r.right,n,t),Y(r.test,o,t),Y(r.update,o,t),Y(r.body,o,t);return}case "VariableDeclaration":{let r=e;for(let o of r.declarations)Y(o.init,n,t),It(n,o.id,r.kind);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&n.binds.set(o.name,"import");}return}case "ExportNamedDeclaration":{let r=e;r.declaration&&Y(r.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":Y(e.expression,n,t);return;default:{let r=ast.VisitorKeys[e.type];if(!r)return;let o=e;for(let a of r){let s=o[a];if(Array.isArray(s))for(let i of s)Y(i,n,t);else Y(s,n,t);}return}}}function Wr(e){let n={out:[],invalid:new WeakSet};return Y(e,et(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var nt=e=>({decls:new Map,parent:e});function Sc(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}function Tn(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Tn(n.argument):Tn(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?Tn(n):[]);case "AssignmentPattern":return Tn(e.left);case "RestElement":return Tn(e.argument);default:return []}}var Dt=(e,n)=>{for(let t of Tn(n))e.decls.set(t.name,t);};function G(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let r=Sc(n,e.name);r&&r!==e&&t.set(e,r);return}case "MemberExpression":{let r=e;G(r.object,n,t),r.computed&&G(r.property,n,t);return}case "Property":{let r=e;r.computed&&G(r.key,n,t),G(r.value,n,t);return}case "Program":case "BlockStatement":{let r=nt(n);for(let o of e.body??[])G(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=e.id;o&&n.decls.set(o.name,o);let a=nt(n);for(let s of r.params??[])Dt(a,s);G(r.body,a,t);return}case "CatchClause":{let r=e,o=nt(n);Dt(o,r.param),G(r.body,o,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,o=nt(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let s of a.declarations)Dt(o,s.id);else a&&G(a,o,t);G(r.right,n,t),G(r.test,o,t),G(r.update,o,t),G(r.body,o,t);return}case "VariableDeclaration":{for(let r of e.declarations)Dt(n,r.id),G(r.init,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&n.decls.set(o.name,o);}return}case "TSTypeAliasDeclaration":{let r=e.id;r&&n.decls.set(r.name,r);return}case "TSAsExpression":G(e.expression,n,t);return;default:{let r=ast.VisitorKeys[e.type];if(!r)return;let o=e;for(let a of r){let s=o[a];if(Array.isArray(s))for(let i of s)G(i,n,t);else G(s,n,t);}return}}}function gc(e){let n=new WeakMap;return G(e,nt(void 0),n),n}function Nc(e,n){return e.kind==="local"?n.kind==="local"&&e.declaration===n.declaration:n.kind==="environment"&&e.path.length===n.path.length&&e.path.every((t,r)=>t===n.path[r])}var tt=e=>({decls:new Map,parent:e});function ba(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}var Bc=e=>e?.type==="Literal"&&typeof e.value=="string";function $t(e,n){if(!n&&e.type==="Identifier")return e.name;if(Bc(e))return e.value}function xn(e,n,t){if(e)switch(e.type){case "Identifier":{let r=e.name,o=ba(n,r);return o?t.aliases.get(o):[r]}case "MemberExpression":{let r=e,o=xn(r.object,n,t),a=$t(r.property,r.computed);return o&&a!==void 0?[...o,a]:void 0}case "ChainExpression":return xn(e.expression,n,t);default:return}}var ka=(e,n)=>{let t=ba(n,e);return t?{kind:"local",declaration:t}:{kind:"environment",path:[e]}};function Mt(e,n,t,r,o){r.out.push({site:"node",node:e,symbol:ka(n,t),...o?{shorthand:o}:{}});}function rt(e,n,t,r){n.decls.set(e.name,e),t.out.push({site:"node",node:e,symbol:{kind:"local",declaration:e},isDeclaration:true,...r?{shorthand:r}:{}});}function Ce(e,n,t,r,o,a){if(e)switch(e.type){case "Identifier":rt(e,n,t),On(e,n,t),o&&r&&t.aliases.set(e,r);return;case "ObjectPattern":for(let s of e.properties){if(s.type==="RestElement"){Ce(s.argument,n,t,void 0,false,a);continue}let i=s,c=i.key;i.computed&&I(c,a,t);let l=$t(c,i.computed),u=r&&l!==void 0?[...r,l]:void 0,f=i.value,d=f.type==="AssignmentPattern"?f.left:f,y=!!i.shorthand&&d.type==="Identifier";u&&t.out.push({site:"node",node:c,symbol:{kind:"environment",path:u},...y?{shorthand:"binding"}:{}}),y?(rt(d,n,t,"property"),On(d,n,t),o&&u&&t.aliases.set(d,u),f.type==="AssignmentPattern"&&I(f.right,a,t)):Ce(f,n,t,u,o,a);}return;case "ArrayPattern":for(let s of e.elements)Ce(s,n,t,void 0,false,a);return;case "AssignmentPattern":{let s=e;Ce(s.left,n,t,r,o,a),I(s.right,a,t);return}case "RestElement":Ce(e.argument,n,t,void 0,false,a);return;default:I(e,n,t);}}function On(e,n,t){let r=e;for(let a of ast.ERASABLE_TYPE_NODE_KEYS)_r(r[a],n,t);let o=r.typeParameters;if(Array.isArray(o))for(let a of o)On(a,n,t);}function _r(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let o of e)_r(o,n,t);return}let r=e;if(r.type==="TSTypeQuery"){let o=r.exprName,a=ka(o[0],n);t.out.push({site:"typeQuery",node:e,segment:0,symbol:a});let s=a.kind==="environment"?a.path:t.aliases.get(a.declaration);s&&o.slice(1).forEach((i,c)=>t.out.push({site:"typeQuery",node:e,segment:c+1,symbol:{kind:"environment",path:[...s,...o.slice(1,c+2)]}}));return}for(let[o,a]of Object.entries(r))o!=="loc"&&o!=="range"&&_r(a,n,t);}function Na(e,n,t){if(e){if(e.type==="JSXIdentifier"){let r=e.name;/^[A-Z_$]/.test(r)&&Mt(e,r,n,t);return}if(e.type==="JSXMemberExpression"){let r=e;Na(r.object,n,t);let o=r.object,a=o.type==="JSXIdentifier"?xn({type:"Identifier",name:o.name},n,t):void 0;a&&t.out.push({site:"node",node:r.property,symbol:{kind:"environment",path:[...a,r.property.name]}});}}}function I(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":Mt(e,e.name,n,t);return;case "MemberExpression":{let r=e;I(r.object,n,t);let o=xn(r.object,n,t),a=$t(r.property,r.computed);o&&a!==void 0?t.out.push({site:"node",node:r.property,symbol:{kind:"environment",path:[...o,a]}}):r.computed&&I(r.property,n,t);return}case "Property":{let r=e;if(r.computed&&I(r.key,n,t),r.shorthand&&r.value.type==="Identifier"){let o=r.value;Mt(r.value,o.name,n,t,"property");return}I(r.value,n,t);return}case "Program":case "BlockStatement":{let r=tt(n);for(let o of e.body??[])I(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=e.id;o&&rt(o,n,t);let a=tt(n);for(let s of r.params??[])Ce(s,a,t,void 0,false,a);On(e,a,t),I(r.body,a,t);return}case "CatchClause":{let r=e,o=tt(n);Ce(r.param,o,t,void 0,false,o),I(r.body,o,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,o=tt(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let s of a.declarations)Ce(s.id,o,t,void 0,false,o),I(s.init,o,t);else a&&I(a,o,t);I(r.right,n,t),I(r.test,o,t),I(r.update,o,t),I(r.body,o,t);return}case "VariableDeclaration":{let r=e;for(let o of r.declarations){let a=xn(o.init,n,t);Ce(o.id,n,t,a,r.kind==="const",n),I(o.init,n,t);}return}case "AssignmentExpression":{let r=e,o=r.left;r.operator==="="&&["ObjectPattern","ArrayPattern","ObjectExpression","ArrayExpression"].includes(o.type)?An(o,xn(r.right,n,t),n,t):I(o,n,t),I(r.right,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r,a=o.type==="ImportSpecifier"&&(o.imported===o.local||o.imported?.name===o.local.name);rt(o.local,n,t,a?"import":void 0);}return}case "TSTypeAliasDeclaration":{let r=e.id;rt(r,n,t),t.typeAliases.has(r.name)||t.typeAliases.set(r.name,r),On(e,n,t);return}case "TSAsExpression":I(e.expression,n,t),On(e,n,t);return;case "JSXOpeningElement":case "JSXClosingElement":{let r=e;if(Na(r.name,n,t),e.type==="JSXOpeningElement")for(let o of r.attributes)o.type==="JSXSpreadAttribute"?I(o.argument,n,t):I(o.value,n,t);return}default:{let r=ast.VisitorKeys[e.type];if(!r)return;let o=e;for(let a of r){let s=o[a];if(Array.isArray(s))for(let i of s)I(i,n,t);else I(s,n,t);}return}}}function ga(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 An(e,n,t,r){switch(e.type){case "ObjectPattern":case "ObjectExpression":for(let o of e.properties){if(o.type==="RestElement"||o.type==="SpreadElement"){An(o.argument,void 0,t,r);continue}let a=o,s=a.key;a.computed&&I(s,t,r);let i=$t(s,a.computed),c=n&&i!==void 0?[...n,i]:void 0,l=a.value,u=ga(l),f=u?.target??l,d=!!a.shorthand&&f.type==="Identifier";c&&r.out.push({site:"node",node:s,symbol:{kind:"environment",path:c},...d?{shorthand:"binding"}:{}}),d?Mt(f,f.name,t,r,"property"):An(f,c,t,r),u&&I(u.value,t,r);}return;case "ArrayPattern":case "ArrayExpression":for(let o of e.elements)o&&An(o.type==="SpreadElement"?o.argument:o,void 0,t,r);return;case "AssignmentPattern":case "AssignmentExpression":{let o=ga(e);if(!o)return I(e,t,r);An(o.target,n,t,r),I(o.value,t,r);return}case "RestElement":An(e.argument,void 0,t,r);return;default:I(e,t,r);}}function vc(e,n){let t=e.typeRefs;if(t?.length)for(let r of t){let o=r.name?n.typeAliases.get(r.name):void 0;o&&n.out.push({site:"typeRef",ref:r,symbol:{kind:"local",declaration:o}});}}function wc(e){let n={out:[],aliases:new WeakMap,typeAliases:new Map};return I(e,tt(void 0),n),vc(e,n),n.out}function ye(e,n,t,r){switch(e.t){case "apply":if(n.has(e.name)&&r.add(e.name),t.has(e.name))for(let o of e.args)ye(o,n,t,r);return;case "union":case "intersection":for(let o of e.of)ye(o,n,t,r);return;case "conditional":ye(e.check,n,t,r),ye(e.extends,n,t,r),ye(e.then,n,t,r),ye(e.else,n,t,r);return;case "keyof":ye(e.of,n,t,r);return;case "index":ye(e.obj,n,t,r),ye(e.key,n,t,r);return;case "returnType":case "parameters":ye(e.fn,n,t,r);return;default:return}}function va(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),o=new Map;for(let s of t){let i=new Set;ye(e[s].body,t,r,i),o.set(s,i);}let a=new Set;for(let s of t){let i=new Set,c=[...o.get(s)];for(;c.length;){let l=c.pop();if(l===s){a.add(s);break}i.has(l)||(i.add(l),c.push(...o.get(l)));}}return a}var zr=e=>`a\0${e}`,Ba=(e,n)=>`p\0${e}\0${n}`;function wa(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),o=new Map,a=new Map;for(let m of t)a.set(m,Ec(e[m].body));let s=m=>a.get(m),i=(m,h)=>{switch(m.t){case "literal":return h.has(String(m.value))?[String(m.value)]:[];case "union":return m.of.flatMap(S=>i(S,h));case "keyof":{let S=m.of.t==="apply"&&t.has(m.of.name)?Kr(e[m.of.name].body):void 0;return S?[...S].filter(b=>h.has(b)):[]}default:return []}},c=(m,h,S)=>{switch(m.t){case "apply":if(t.has(m.name)&&S.add(zr(m.name)),r.has(m.name)||h==="annotation")for(let b of m.args)c(b,h,S);return;case "index":{if(m.obj.t==="apply"){let b=s(m.obj.name);if(b)for(let x of i(m.key,b))S.add(Ba(m.obj.name,x));}c(m.obj,h,S),c(m.key,h,S);return}case "union":case "intersection":for(let b of m.of)c(b,h,S);return;case "conditional":c(m.check,h,S),c(m.extends,h,S),c(m.then,h,S),c(m.else,h,S);return;case "keyof":c(m.of,h,S);return;case "returnType":case "parameters":c(m.fn,h,S);return;case "array":h==="annotation"&&c(m.items,h,S);return;case "tuple":if(h==="annotation")for(let b of m.elements)c(b,h,S);return;default:return}};for(let m of Object.keys(e)){let h=new Set;c(e[m].body,"aliasBody",h),o.set(zr(m),h);for(let[S,b]of s(m)??[]){let x=new Set;for(let C of b)c(C,"annotation",x);o.set(Ba(m,S),x);}}let l=new Map,u=m=>{let h=l.get(m);if(h)return h;let S=new Set;l.set(m,S);let b=[...o.get(m)??[]];for(;b.length;){let x=b.pop();S.has(x)||(S.add(x),b.push(...o.get(x)??[]));}return S},f=new Map,d=[];for(let m of o.keys()){if(!m.startsWith("p\0")||!u(m).has(m))continue;d.push(m);let[,h,S]=m.split("\0");f.has(h)||f.set(h,new Set),f.get(h).add(S);}let y=new Set;for(let m of Object.keys(e)){let h=zr(m),S=u(h);d.some(b=>S.has(b)&&u(b).has(h))&&y.add(m);}return {properties:f,aliases:y}}function Ec(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[o,a]of Object.entries(r.props))n.has(o)||n.set(o,[]),n.get(o).push(a.type);};return t(e),n}function qr(e,n){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(r=>qr(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 Kr(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...Kr(n)]));case "union":{let[n,...t]=e.of.map(Kr);return new Set([...n??[]].filter(r=>t.every(o=>o.has(r))))}default:return new Set}}var Ft=e=>e.typeAnnotation,Gr=e=>e.returnType;function Lt(e){let n=e.typeParameters;if(n?.length)return n.map(t=>p.typeParam(t.name,{bound:t.bound,default:t.default}))}var ae=e=>e.type==="Identifier"?e.name:null,Ea=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?ae(n.id):null}return ae(e)},Ta=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},pn=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function Aa(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 o of e[0].elements){let a=n(o);if(a===null)return null;r.push(a);}return r}let t=[];for(let r of e){let o=n(r);if(o===null)return null;t.push(o);}return t.length?t:null}function Jr(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=Jr(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var st=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},Ie=e=>e.type==="Literal"||st(e)!==null;function fn(e){let n=st(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return p.unknown;let r=t.value;return r===null?p.null:r===void 0?p.undefined:typeof r=="string"||typeof r=="number"||typeof r=="boolean"?{t:"literal",value:r,fresh:true}:p.unknown}var Ye=e=>{let n=st(e);if(n!==null)return p.literal(n);let t=e.value;return t===null?p.null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?p.literal(t):fn(e)},Xr=e=>e.type==="ArrowFunctionExpression",xa=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,it=e=>xa(e)?e.args[0]:e,ct=e=>xa(e)?e:p.promise(e);function at(e){return e.t==="tuple"?true:e.t==="array"?at(e.items):e.t==="union"?e.of.some(at):false}var Tc=e=>e?.t==="literal"?typeof e.value:void 0,ot=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>ot(t,n));function jn(e,n){let t=Tc(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=>jn(r,n));case "var":{let r=e.bound??p.unknown;return t!==void 0&&ot(r,t)||t===void 0&&Ac(r)?true:jn(r,n)}default:return false}}var Ac=e=>ot(e,"string")||ot(e,"number")||ot(e,"boolean"),se=(e,n)=>{let t=e;for(let r=0;r<50&&t.t==="apply";r++){let o=q(t,n);if(o===t||o.t==="apply"&&o.name===t.name)break;t=o;}return t};function Oa(e){let n=Gr(e);if(!n)return null;let t=e.params.map((o,a)=>({name:ae(o)??`arg${a}`,type:Ft(o)??p.unknown})),r=Lt(e);return {t:"fn",params:t,returns:e.async?ct(n):n,...r?{typeParams:r}:{}}}var De={then:{},else:{}};function re(e){if(e.type==="Identifier")return e.name;if(e.type!=="MemberExpression")return null;let n=e;if(n.optional)return null;let t=re(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 ge=e=>e.includes("."),mn=e=>`${e}#`,Yr=e=>e.endsWith("#");function yn(e,n,t){let r=ee(e,n);return r!==void 0?r:Fa(e,n,t)}var $e=(e,n,t)=>{let r=yn(e,n,t);return r===void 0?void 0:P(r,t)};function Fa(e,n,t){let r=n.lastIndexOf(".");if(r<0)return;let o=yn(e,n.slice(0,r),t);if(o!==void 0)return Z(o,[n.slice(r+1)],t)?.type}function xc(e,n){let t=n+".",r=new Set;for(let o=e;o;o=o.parent)for(let a of Object.keys(o.vars))(a.startsWith(t)||a===n)&&ge(a)&&r.add(a);return [...r].sort((o,a)=>o.length-a.length)}function Qr(e,n,t){let r=xc(e,n);if(!r.length)return e;let o={};for(let a of r)o[a]=Fa(Xe(e,o),a,t)??p.unknown;return Xe(e,o)}var La=new Set(["string","number","boolean","undefined","function","object"]),Oc={string:p.string,number:p.number,boolean:p.boolean,undefined:p.undefined,object:p.union([p.nonPrimitive,p.null])};function Va(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 jc=p.literal(true),Pc=p.literal(false),Ee=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[jc,Pc]:[n]),Pn=(e,n)=>{let t=e.filter(r=>Vt(r)||n(r));return t.length===e.length?null:w(t)},Vt=e=>e.t==="unknown"||e.t==="any";function ja(e,n){let t=e,r=n;if(e.type==="UnaryExpression"&&t.operator==="typeof"&&n.type==="Literal"&&typeof r.value=="string"){let o=re(t.argument);if(o!==null)return {name:o,tag:r.value}}return null}function Rc(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let o=Ee(e).filter(a=>v(a,n,t));return w(o)}function Cc(e,n,t){return e.t==="unknown"||e.t==="any"?null:Pn(Ee(e),r=>!v(r,n,t))}function Ic(e,n){if(!La.has(n))return null;let t=Oc[n],r=Ee(e),a=r.flatMap(s=>t&&Vt(s)?Ee(t):[s]).filter(s=>Va(s,n)||Vt(s));return a.length===r.length&&a.every((s,i)=>s===r[i])?null:w(a)}function Dc(e,n){if(!La.has(n))return null;let t=Ee(e),r=t.filter(o=>Vt(o)||!Va(o,n));return r.length===t.length?null:w(r)}function Pa(e,n){let t=re(e);if(t!==null&&Ie(n)){let r=Ye(n);if(r.t==="literal"||r.t==="null")return {name:t,lit:r}}return null}function Ra(e,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&Ie(n)){let t=re(e.object),r=Ye(n);if(t!==null&&(r.t==="literal"||r.t==="null"))return {name:t,prop:e.property.name,lit:r}}return null}function Ca(e,n,t,r,o){let a=Ee(e),s=i=>i.t==="object"?J(i.props,n)?.type:void 0;return Pn(a,i=>{let c=s(i);return r?!!c&&v(t,c,o):!(c&&v(c,t,o))})}function Ia(e,n,t){let r=Ee(e),o=a=>a.t==="object"&&(n in a.props||!!a.index);return Pn(r,a=>t?o(a):!o(a))}function Mc(e,n,t){return e.t==="unknown"||e.t==="any"||v(n,e,t)?n:null}function $c(e,n,t){return Pn(Ee(e),r=>!on(r,n,t))}var Me=1,dn=2,Fc=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function lt(e,n){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return Me|dn;case "literal":return e.value?Me:dn;case "null":case "undefined":case "void":return dn;case "array":case "tuple":case "fn":case "overload":return Me;case "object":return Fc(e)?Me|dn:Me;case "nonPrimitive":return Me;case "union":case "intersection":return e.of.reduce((t,r)=>t|lt(r,n),0);default:{let t=P(e,n);return t===e?Me|dn:lt(t,n)}}}var Ua=(e,n)=>(lt(e,n)&dn)!==0,Wa=(e,n)=>(lt(e,n)&Me)!==0,Da=(e,n,t)=>{let r=Ee(e),o=r.filter(a=>lt(a,t)&n);return o.length===r.length?null:w(o)},Ma=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,he=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),Lc=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function ie(e,n,t){if(e.type==="BinaryExpression"){let o=e;if(o.operator==="in"){let h=o.left,S=o.right,b=re(S);if(h.type==="Literal"&&typeof h.value=="string"&&b!==null){let x=$e(n,b,t);if(!x)return De;let C=String(h.value);return he(b,Ia(x,C,true),Ia(x,C,false))}return De}if(!Lc(o.operator))return De;let a=o.operator==="!=="||o.operator==="!=",s=o.left,i=o.right,c=ja(s,i)??ja(i,s);if(c){let h=$e(n,c.name,t);if(!h)return De;let S=Ic(h,c.tag),b=Dc(h,c.tag);return a?he(c.name,b,S):he(c.name,S,b)}let l=Ma(s),u=Ma(i),f=l?i:u?s:null,d=f?re(f):null;if((l||u)&&d!==null){let h=d,S=$e(n,h,t);if(!S)return De;let x=o.operator==="=="||o.operator==="!="?["null","undefined"]:[l??u],C=Ee(S),Te=Pn(C,A=>x.includes(A.t)),E=Pn(C,A=>!x.includes(A.t));return a?he(h,E,Te):he(h,Te,E)}let y=Pa(s,i)??Pa(i,s),m=Ra(s,i)??Ra(i,s);if(y||m){let h=De;if(y){let S=$e(n,y.name,t);if(S){let b=Mc(S,y.lit,t),x=$c(S,y.lit,t);h=a?he(y.name,x,b):he(y.name,b,x);}}if(m){let S=$e(n,m.name,t);if(S){let b=Ca(S,m.prop,m.lit,true,t),x=Ca(S,m.prop,m.lit,false,t),C=a?he(m.name,x,b):he(m.name,b,x);h={then:{...h.then,...C.then},else:{...h.else,...C.else}};}}return h}return De}if(e.type==="UnaryExpression"&&e.operator==="!"){let o=ie(e.argument,n,t);return {then:o.else,else:o.then}}if(e.type==="CallExpression"){let o=Uc(e,n,t);if(o)return o}if(e.type==="LogicalExpression"){let o=e;if(o.operator==="&&"){let a=ie(o.left,n,t),s=ie(o.right,W(n,a.then),t);return {then:{...a.then,...s.then},else:$a(a.else,{...a.then,...s.else},n,t)}}if(o.operator==="||"){let a=ie(o.left,n,t),s=ie(o.right,W(n,a.else),t);return {then:$a(a.then,{...a.else,...s.then},n,t),else:{...a.else,...s.else}}}return De}let r=re(e);if(r!==null){let o=$e(n,r,t);if(o)return he(r,Da(o,Me,t),Da(o,dn,t))}return De}function $a(e,n,t,r){let o={};for(let a of Object.keys(e)){let s=e[a],i=n[a]??$e(t,a,r);if(!i)continue;let c=w([s,i]),l=$e(t,a,r);l&&on(c,l)||(o[a]=c);}return o}function Vc(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 Uc(e,n,t){let r=e.callee;if(r.type!=="Identifier")return null;let o=ee(n,r.name);if(!o)return null;let a=Vc(o,e.arguments.length);if(!a)return null;let s=e.arguments[a.param],i=s?re(s):null;if(i===null)return null;let c=$e(n,i,t);return c?he(i,Rc(c,a.type,t),Cc(c,a.type,t)):null}var W=(e,n)=>Object.keys(n).length?Xe(e,n):e;function Se(e){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(t=>Se(t));case "IfStatement":{let n=e;return !!n.alternate&&Se(n.consequent)&&Se(n.alternate)}case "TryStatement":{let n=e;if(n.finalizer&&Se(n.finalizer))return true;let t=!n.handler||Se(n.handler.body);return Se(n.block)&&t}default:return false}}var qc=e=>{let n={};for(let t of Object.keys(e))n[t]={params:[],body:e[t]};return n};function Gc(e){let n=[];return e.maxDepth!==void 0&&n.push(Rr(e.maxDepth)),e.maxNodes!==void 0&&n.push(Cr(e.maxNodes)),e.maxArgs!==void 0&&n.push(Ir(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(Or(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(jr(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(Pr(e.memberDepth)),n}function Jc(e,n,t){let{min:r,max:o}=qe(e.params);return n.length<r||n.length>o?true:to(e.params,n,t).length>0}function to(e,n,t){if(!e.some(a=>a.bound))return [];let r=Ln(e,n),o=[];return e.forEach((a,s)=>{if(!a.bound||s>=n.length)return;let i=N(a.bound,r);v(n[s],i,t)||o.push({param:a,arg:n[s],expected:i});}),o}function Xc(e,n){let t=e.typeRefs;if(!t?.length)return [];let r=[];for(let o of t){let a={type:"Identifier",name:o.name,loc:o.loc},s=n[o.name];if(!s){r.push(z("unknown-name",a,`Cannot find name '${o.name}'.`));continue}let i=o.args;if(!i)continue;let{min:c,max:l}=qe(s.params);if(i.length<c||i.length>l){r.push(g.genericTypeArity(a,o.name,c,l));continue}for(let u of to(s.params,i,n))r.push(g.constraintViolation(a,u.param.name,u.arg,u.expected));}return r}function as(e,n,t={}){let r=Zc(e),o={...qc(n.types),...n.schemes,...r.schemes},{schemes:a,diagnostics:s}=Qc(r,o),{schemes:i,diagnostics:c}=Hc(r,a),l=Wr(e),u={overlay:new WeakMap,sink:te(),env:n,schemes:i,importNames:new Set,resolvedSchemes:new Set,invalidTargets:l.invalidTargets,evolving:new Set,flow:new Map,stmtFlow:new WeakMap,invoked:new WeakSet,shadowed:null,shortCircuits:new WeakSet},f=t.profile?capability.compileProfile(t.profile):void 0;f&&Ht(f.typeLimits);try{let d,y=el(e,u);try{d=B(e,y,u);}catch(S){if(S instanceof Ae||S instanceof kn)u.sink.report(z("too-deep",e,S.message));else if(S instanceof xe)u.sink.report(z("too-complex-union",e,S.message));else throw S;d=p.unknown;}let m=[];f&&m.push(...Pt(f)),t.limits&&m.push(...Gc(t.limits)),t.resultType&&m.push(Dr(t.resultType,i));let h=[...s,...c,...u.sink.all,...l.diagnostics,...Xc(e,i),...t.unused?Vr(e,t.unused):[],...m.length?Tr(e,m,{overlay:u.overlay,schemes:i}):[]];return {type:d,overlay:u.overlay,diagnostics:h,schemes:u.schemes}}finally{f&&Zt();}}function Yc(e,n,t={}){let r=as(e,n,t),o={},a=new Map,s,i=l=>{let u=[];if(l.type==="VariableDeclaration")for(let f of l.declarations){let d=ae(f.id),y=r.overlay.get(f);d&&y&&(o[d]=y.type,u.push(d));}else if(l.type==="FunctionDeclaration"){let f=l.id?.name,d=r.overlay.get(l);f&&d&&(o[f]=d.type,u.push(f));}return u};for(let l of e.body??[])if(l.type==="VariableDeclaration"||l.type==="FunctionDeclaration")i(l);else if(l.type==="ExportNamedDeclaration"){let u=l;if(u.declaration)for(let f of i(u.declaration))a.set(f,f);else for(let f of u.specifiers)a.set(f.exported.name,f.local.name);}else if(l.type==="ExportDefaultDeclaration"){let u=r.overlay.get(l.declaration);s=u?u.type:p.unknown;}let c={};if(a.size||s!==void 0){for(let[l,u]of a)o[u]&&(c[l]={type:o[u]});s!==void 0&&(c.default={type:s});}else for(let l in o)c[l]={type:o[l]};return {type:{t:"object",props:c},diagnostics:r.diagnostics}}function Qc(e,n){let t=va(e.schemes,n),r=Object.fromEntries(Object.entries(e.schemes).filter(([c])=>!t.has(c))),o=wa(r,n),a=new Set([...t,...o.aliases]);if(!a.size&&!o.properties.size)return {schemes:n,diagnostics:[]};let s={...n};for(let c of a)s[c]={params:e.schemes[c].params,body:p.any};for(let[c,l]of o.properties){if(a.has(c))continue;let{params:u,body:f}=e.schemes[c];s[c]={params:u,body:qr(f,l)};}let i=[];for(let c of t)i.push(g.circularTypeAlias(e.ids[c],c));for(let[c,l]of o.properties)for(let u of l)i.push(g.circularTypeAnnotation(e.props[c]?.[u]??e.ids[c],u));for(let c of o.aliases)i.push(g.circularTypeAlias(e.ids[c],c));return {schemes:s,diagnostics:i}}var ss=(e,n)=>e.t==="index"&&Ze(fe(e,n));function za(e,n,t,r){let o=a=>{if(Array.isArray(a)){let l=false,u=a.map(f=>{let d=o(f);return d!==f&&(l=true),d});return l?u:a}if(!a||typeof a!="object")return a;let s=a;if(ss(s,n)){let l=s;return r.push(g.noSuchMember(t,l.obj,is(l.key))),p.any}let i=false,c={};for(let l of Object.keys(s)){let u=o(s[l]);u!==s[l]&&(i=true),c[l]=u;}return i?c:s};return o(e)}var is=e=>e.t==="literal"?String(e.value):R(e);function Hc(e,n){let t=[],r={...n},o=false;for(let a of Object.keys(e.schemes)){let s=n[a],i=e.ids[a];if(!s||!i)continue;let c=e.props[a],l=(f,d)=>{if(c&&(f.t==="union"||f.t==="intersection")){let y=f.of.map(m=>l(m,d));return y.every((m,h)=>m===f.of[h])?f:{...f,of:y}}if(c&&f.t==="object"){let y={},m=false;for(let[h,S]of Object.entries(f.props)){let b=za(S.type,n,c[h]??d,t);b!==S.type&&(m=true),y[h]=b===S.type?S:{...S,type:b};}return m?{...f,props:y}:f}return za(f,n,d,t)},u=l(s.body,i);u!==s.body&&(r[a]={...s,body:u},o=true);}return {schemes:o?r:n,diagnostics:t}}var Zc=e=>{let n={},t={},r={};return ast.walk(e,{TSTypeAliasDeclaration(o){let a=o;if(!(!a.id?.name||!a.typeAnnotation)&&(n[a.id.name]={params:Lt(o)??[],body:a.typeAnnotation},t[a.id.name]=a.id,a.typeNode)){let s={};cs(a.typeNode,s),r[a.id.name]=s;}}}),{schemes:n,ids:t,props:r}};function cs(e,n){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])cs(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 el(e,n){let t=n.env.modules,r={};ast.walk(e,{ImportDeclaration(o){let a=o;if(a.importKind==="type")return;let s=a.source.value,i=typeof s=="string"?t?.[s]:void 0;if(!i){n.sink.report(g.unknownModule(a.source,String(s)));for(let c of a.specifiers)r[c.local.name]=p.unknown;return}for(let c of a.specifiers){if(c.importKind==="type")continue;let l=c.local.name;if(Qe(l,c.local,n),l in r){n.sink.report(g.cannotRedeclare(c.local,l));continue}if(c.type==="ImportNamespaceSpecifier"){r[l]=i;continue}let u=c.type==="ImportSpecifier"?c.imported.name:"default",f=Z(i,[u],n.schemes);f?r[l]=f.type:(n.sink.report(g.noSuchMember(c,i,u)),r[l]=p.unknown);}}});for(let o in r)n.importNames.add(o);return Object.keys(r).length?Xe(n.env.scope,r):n.env.scope}var k=(e,n,t,r)=>(e.overlay.set(n,{type:t,scope:r}),t);function B(e,n,t,r){switch(er(),e.type){case fs:return e.schema;case "JSXElement":case "JSXFragment":return k(t,e,B(ast.desugarJSX(e,{emptyPropsAsObject:true}),n,t),n);case "Literal":return k(t,e,fn(e),n);case "Placeholder":return k(t,e,p.any,n);case "Identifier":{let o=e.name,a=xs(o,t)??ee(n,o);return a===void 0?o==="undefined"?k(t,e,p.undefined,n):(t.sink.report(g.unknownName(e,o)),k(t,e,p.any,n)):k(t,e,a,n)}case "MemberExpression":return k(t,e,ls(e,n,t),n);case "CallExpression":return k(t,e,pl(e,n,t,r),n);case "ArrowFunctionExpression":return so(e,n,t);case "FunctionDeclaration":return t.sink.report(g.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),k(t,e,p.unknown,n);case "FunctionExpression":return t.sink.report(g.unsupported(e,"anonymous function (use an arrow)")),k(t,e,p.unknown,n);case "ThisExpression":return t.sink.report(g.unsupported(e,"'this'")),k(t,e,p.unknown,n);case "BlockStatement":return k(t,e,Es(e,n,t),n);case "ReturnStatement":{let o=e.argument;return k(t,e,o?B(o,n,t):p.unknown,n)}case "IfStatement":return be(e,n,t),t.overlay.get(e)?.type??p.unknown;case "ForStatement":case "WhileStatement":case "DoWhileStatement":case "ForOfStatement":case "ForInStatement":case "BreakStatement":case "ContinueStatement":case "ThrowStatement":case "TryStatement":case "SwitchStatement":return be(e,n,t),t.overlay.get(e)?.type??p.unknown;case "AssignmentExpression":{let o=e,a=o.left;if(o.operator==="="&&(a.type==="ArrayExpression"||a.type==="ObjectExpression")){let y=B(o.right,n,t);return ut(a,y,n,t),k(t,e,y,n)}let s=o.operator!=="=",i=s?Za(a,n,t):Os(a,n,t);if(a.type==="MemberExpression"){let y=t.overlay.get(a.object)?.type,m=y&&P(y,t.schemes);m&&(m.t==="array"||m.t==="tuple")&&m.readonly&&t.sink.report(g.readonlyWrite(a,m));}let c=re(a),l=t.invalidTargets.has(a);if(!s){let y=c!==null&&t.evolving.has(c),m=o.right,h=y||l?B(m,n,t):ce(m,i,n,t,true),S=Ie(m)?k(t,m,fn(m),n):h;return c!==null&&_t(c,n,t)?ke(c,zt(c,false,S,i,n,t),t):c!==null&&ge(c)&&ke(c,i,t),k(t,e,S,n)}let u=t.sink.all.length,f=Pl(o,i,n,t),d=t.sink.all.length>u;return !l&&!d&&!v(f,i,t.schemes)&&t.sink.report(g.notAssignable(e,f,i,t.schemes)),c!==null&&_t(c,n,t)?ke(c,zt(c,true,f,i,n,t),t):c!==null&&ge(c)&&ke(c,je(i),t),k(t,e,f,n)}case "UpdateExpression":{let a=e.argument,s=Za(a,n,t);!Le(s,a,t)&&!pt(s,t.schemes)&&t.sink.report(g.arithmeticOperand(a,"operand"));let i=re(a);return i!==null&&_t(i,n,t)?ke(i,zt(i,true,s,s,n,t),t):i!==null&&ge(i)&&ke(i,je(s),t),k(t,e,p.number,n)}case "ExpressionStatement":return k(t,e,B(e.expression,n,t),n);case "VariableDeclaration":return Gt(e,n,t),k(t,e,p.unknown,n);case "TSTypeAliasDeclaration":{let o=e.id?.name,a=o?t.schemes[o]:void 0;return k(t,e,a?bl(a.body,n,t,e,a.params.length>0):p.unknown,n)}case "BinaryExpression":return k(t,e,Ml(e,n,t),n);case "LogicalExpression":{let o=e,a=B(o.left,n,t),s=o.operator==="??"?void 0:ie(o.left,n,t.schemes),i=W(n,s?o.operator==="&&"?s.then:s.else:{}),{value:c,effect:l}=Hr(t,()=>B(o.right,i,t));return l.size&&Ha([{effect:l,scope:i},{scope:W(n,s?o.operator==="&&"?s.else:s.then:{})}],t),k(t,e,Fl(o.operator,a,c,t.schemes),n)}case "UnaryExpression":return k(t,e,Vl(e,n,t),n);case "ConditionalExpression":{let o=e;B(o.test,n,t);let a=ie(o.test,n,t.schemes),s=W(n,a.then),i=W(n,a.else),c=Hr(t,()=>B(o.consequent,s,t)),l=Hr(t,()=>B(o.alternate,i,t));return (c.effect.size||l.effect.size)&&Ha([{effect:c.effect,scope:s},{effect:l.effect,scope:i}],t),k(t,e,w([c.value,l.value]),n)}case "ObjectExpression":return k(t,e,Ul(e,n,t),n);case "ArrayExpression":return k(t,e,Fs(e,n,t),n);case "TemplateLiteral":{if(st(e)!==null)return k(t,e,fn(e),n);for(let o of e.expressions){let a=B(o,n,t);$s(a,t.schemes)||t.sink.report(g.notTextConvertible(o,a));}return k(t,e,p.string,n)}case "AwaitExpression":{let o=e.argument,a=o?B(o,n,t):p.unknown;return k(t,e,it(a),n)}case "Program":{let o=qt(e.body,n,t,new Set(t.importNames)).scope;return k(t,e,p.unknown,o)}case "JsonExpression":return k(t,e,no(e.body,n,t,e),n);case "ChainExpression":{let o=e.expression,a=B(o,n,t);return k(t,e,rl(o,t)?w([a,p.undefined]):a,n)}case "TSAsExpression":{let o=e,a=B(o.expression,n,t),s=In(o.typeAnnotation,n,t,e);return Yn(a,s,t.schemes)||t.sink.report(g.castUnsound(e,a,s)),k(t,e,s,n)}default:return t.sink.report(g.unsupported(e,`'${e.type}'`)),k(t,e,p.unknown,n)}}var nl=new Set(["constructor","prototype","__proto__"]);function tl(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 ls(e,n,t,r=false){let o=B(e.object,n,t),a=tl(e);if(a!==null&&nl.has(a))return t.sink.report(g.forbiddenMember(e,a)),p.unknown;let s=al(e,o,n,t),i=r?null:re(e);if(i!==null&&ge(i)){let c=xs(i,t)??ee(n,i);if(c!==void 0&&v(c,s,t.schemes))return c}return s}function rl(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 ol=e=>e.t==="unknown";function Le(e,n,t){return ol(e)?(t.sink.report(g.unknownValue(n)),true):false}function Cn(e){let n=Kt(e),t=n.some(o=>o.t==="null"),r=n.some(o=>o.t==="undefined");return t||r?{null:t,undefined:r}:null}function ro(e){let n=Kt(e).filter(t=>t.t!=="null"&&t.t!=="undefined");return n.length===Kt(e).length||n.length===0?e:w(n)}var us=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(us);function al(e,n,t,r){if(!e.optional&&Le(n,e.object,r))return k(r,e,p.any,t);let o=e.optional?null:Cn(n);o&&r.sink.report(g.possiblyNullish(e.object,o)),e.optional&&Cn(n)&&r.shortCircuits.add(e);let a=e.optional||o?ro(n):n;if(e.computed){let c=B(e.property,t,r);if(c.t==="literal"&&typeof c.value!="boolean"){let u=String(c.value),f=Z(a,[u],r.schemes);return f?f.type:(Ka(e,a,u,r),p.any)}let l=D(p.index(a,c));return l.t!=="index"||us(c)?l:p.unknown}let s=e.property.name,i=Z(a,[s],r.schemes);return i?i.type:(Ka(e,a,s,r),p.any)}function Ka(e,n,t,r){let o=X(n,r.schemes)?q(n,r.schemes):n;o.t==="object"||o.t==="array"||o.t==="tuple"||o.t==="union"?r.sink.report(g.noSuchMember(e,n,t)):o.t!=="any"&&o.t!=="unknown"&&r.sink.report(g.notObject(e,n));}function sl(e,n,t,r){let o=e.arguments[0];if(!o){r.sink.report(g.missingArgument(e,"schema",p.unknown));return}if(o.type!=="Identifier"){r.sink.report(g.asserterNeedsName(o,n));return}let a=o.name,s=ee(t,a),i=r.schemes[a];if(s===void 0){r.sink.report(i?g.typeAsValue(o,a):g.unknownName(o,a));return}if(!i||i.params.length>0){r.sink.report(g.notASchema(o,a));return}if(!(ps(a,r)&&!il(t,a)))return r.overlay.set(o,{type:i.body,scope:t}),i.body}function ps(e,n){if(!n.env.asserters?.size)return false;let t=n.schemes[e];return t!==void 0&&t.params.length===0&&ee(n.env.scope,e)!==void 0}function il(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 Qe(e,n,t){ps(e,t)&&t.sink.report(g.shadowsSchema(n,e));}function oo(e,n){let t=se(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function cl(e,n){let t=ee(e.scope,n);if(!t)return;let r=oo(t,e.schemes);return r?se(r,e.schemes):void 0}function ll(e,n,t,r){let o=oo(B(n[0],t,r),r.schemes),a=n.length>1?B(n[1],t,r):p.undefined;if(o){let s=qn(a,o,r.schemes);s.length&&r.sink.report(g.propsMismatch(n[1]??e,o,Jn(s)));}return k(r,e,p.boolean,t)}var fs="TSLiteSyntheticArg",ul=e=>({type:fs,schema:e});function ds(e,n,t){if(!e.some(a=>a.type==="SpreadElement"))return {nodes:[...e],spread:null};let r=[],o=null;for(let a of e){if(a.type!=="SpreadElement"){r.push(a);continue}let s=a.argument;if(s.type==="ArrayExpression"&&s.elements.every(c=>c&&c.type!=="SpreadElement")){for(let c of s.elements)r.push(c);continue}let i=se(B(s,n,t),t.schemes);if(i.t==="tuple")for(let c of i.elements)r.push(ul(c));else o={elem:io(i,s,t),node:a};}return {nodes:r,spread:o}}function pl(e,n,t,r){let o=t.inference?{...t,inference:void 0}:t,a=e.arguments,s=Jr(e.callee);if(s){let m=o.env.accessors?.[s];if(m){let h=Aa(a);if(h){let S=Z(m,h,o.schemes);return S?S.type:(o.sink.report(g.noSuchMember(e,m,h.join("."))),p.unknown)}return a.forEach(S=>B(S,n,o)),p.unknown}}if(s&&o.env.asserters?.has(s)){let m=sl(e,s,n,o);a.length<2&&a.length>0&&o.sink.report(g.missingArgument(e,"value",p.unknown));for(let h=1;h<a.length;h++){let S=B(a[h],n,o);h===1&&m&&V(S).size===0&&!Yn(S,m,o.schemes)&&o.sink.report(g.unprovableValue(a[h],S,m,e.arguments[0].name));}return m??p.unknown}if(s&&o.env.matchers?.has(s))return ll(e,a,n,o);e.callee.type==="ArrowFunctionExpression"&&o.invoked.add(e.callee);let i=P(B(e.callee,n,o),o.schemes);if(!e.optional&&Le(i,e.callee,o))return k(o,e,p.any,n);let c=Cn(i);c&&(e.optional?o.shortCircuits.add(e):o.sink.report(g.possiblyNullish(e.callee,c,true)));let l=c?P(ro(i),o.schemes):i;if(l.t==="any")return a.forEach(m=>B(m,n,o)),p.any;if(l.t==="overload")return ml(e,l,n,o,r);if(l.t!=="fn")return a.forEach(m=>B(m,n,o)),o.sink.report(g.notCallable(e,l)),p.unknown;let u=ds(a,n,o),f=u.nodes.map(m=>ms(m,n,o)),d=ys(e),y=!d||hs(l,d.length);return y||o.sink.report(Ss(e,[l],d.length)),dt(e,l,u.nodes,f,n,o,u.spread,r,y?d:void 0)}function ms(e,n,t){if(Xr(e))return p.any;if(e.type!=="CallExpression")return B(e,n,t);let r=te(),o=B(e,n,{...t,sink:r});return r.hasErrors()?p.any:(r.all.forEach(a=>t.sink.report(a)),o)}function dt(e,n,t,r,o,a,s=null,i,c){let l=E=>{if(!i)return E;let A=N(n.returns,E);if(A.t==="fn"&&i.t==="fn"){let j=E,Q=Math.min(A.params.length,i.params.length);for(let le=0;le<Q;le++)j=F(A.params[le].type,i.params[le].type,j)??j;return F(A.returns,i.returns,j)??j}return F(A,i,E)??E};if(!s){let E=bs(e,n,r.length,t);E&&(a.sink.report(E),a={...a,sink:te()});}let u=c?Nl(e,n,c,a):void 0,f=u??Wt(n,l(zn(n,r).bindings)),d=u||!i?{}:Wt(n,l({})),y={returnMapper:d,nonFixing:f,outer:qa(n,f)},m=new Set((n.typeParams??[]).map(E=>E.name)),h=E=>[...V(E)].some(A=>m.has(A)),S=new Set,b=[];t.forEach((E,A)=>{if(Xr(E)){let j=n.params[A]?.type??p.any,Q=tn(N(j,fl(n,j,f,a.schemes)));r[A]=so(E,o,a,Q);}else if(E.type==="CallExpression"&&r[A].t==="any")r[A]=B(E,o,a,N(n.params[A]?.type??p.unknown,qa(n,f)));else if(Ie(E)){let j=n.params[A]?.type??p.unknown,Q=Ye(E);jn(N(j,d),Q)&&(r[A]=k(a,E,Q,o));}else if(E.type==="ArrayExpression"||E.type==="ObjectExpression"||E.type==="ConditionalExpression"){let j=n.params[A]?.type??p.unknown,Q=N(j,d);if(E.type==="ArrayExpression"&&at(Q)){r[A]=co(E,Q,o,{...a,inference:y}),b.push(A);return}if(j.t==="var"&&!j.bound||!Vs(Q,a.schemes))return;S.add(A),h(j)&&(r[A]=ce(E,j,o,{...a,sink:te(),inference:y},true)),b.push(A);}});let x=u||Zr(n,Wt(n,l(zn(n,r).bindings)),a.schemes);u&&dl(e,n,x,a);for(let E of b)r[E]=_l(t[E],N(n.params[E].type,x),o,a,false);wl(e,n,r,x,a,t,s),t.forEach((E,A)=>{let j=n.params[A];E.type==="ObjectExpression"&&j&&!j.variadic&&!S.has(A)&&eo(E,N(j.type,x),a);});let C=N(n.returns,Zr(n,x,a.schemes)),Te=C.t==="union"?w(C.of):C;return mr(rn(Te,a.schemes,void 0,0,V(Te)))}function Wt(e,n){let t=e.typeParams;if(!t?.length)return {};let r={};for(let o of t)n[o.name]&&(r[o.name]=n[o.name]);return r}var Zr=(e,n,t)=>vt(e.typeParams??[],n,t);function fl(e,n,t,r){if(n.t!=="fn"||!e.typeParams?.some(i=>!t[i.name]))return t;let o=new Set;for(let i of n.params)for(let c of V(i.type))o.add(c);let a=Zr(e,t,r),s={...t};for(let i of e.typeParams)!t[i.name]&&o.has(i.name)&&(s[i.name]=a[i.name]);return s}function qa(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]=_n);return t}function dl(e,n,t,r){for(let o of n.typeParams??[]){let a=t[o.name];if(!o.bound||!a)continue;let s=N(o.bound,t);v(a,s,r.schemes)||r.sink.report(g.constraintViolation(e,o.name,a,s));}}function ml(e,n,t,r,o){let a=ds(e.arguments,t,r),s=a.nodes,i=s.map(u=>ms(u,t,r)),c=ys(e),l=c?n.signatures.filter(u=>hs(u,c.length)):n.signatures;return c&&!l.length?(r.sink.report(Ss(e,n.signatures,c.length)),Ja(e,n.signatures,a,s,i,t,r,o,void 0)):Ja(e,l,a,s,i,t,r,o,c)}function yl(e,n,t,r,o,a,s){if(!n.length)return e;let c=n.map(f=>{let d=te();return dt(e,f,t,[...r],o,{...a,sink:d},s),d.all}).filter(f=>f.length>0);if(!c.length)return e;let l=c.length===1||c.length>3?c[c.length-1]:c.some(f=>f.length>1)?c.reduce((f,d)=>d.length<=f.length?d:f):c.flat(),u=l[0].node;return l.every(f=>f.node===u)?u:e}function Ga(e,n,t,r,o,a){return n.length?!n.some(i=>i.typeParams?.length)&&n.length>1?p.intersection(n.map(i=>i.returns)):dt(e,hl(n,t.length),t,[...r],o,{...a,sink:te()},null):p.unknown}function hl(e,n){let t=e[0],r=-1;for(let o of e){let a=o.params.length;if(o.params.some(s=>s.variadic)||a>=n)return o;a>r&&(r=a,t=o);}return t}function Ja(e,n,t,r,o,a,s,i,c){let l={t:"overload",signatures:n},u=S=>t.spread?Bl(S,r.length):gs(S,r.length),f=l.signatures.filter(u);if(f.length>1)for(let S of f){let b=te(),x=dt(e,S,r,[...o],a,{...s,sink:b},t.spread,i,c);if(!b.all.some(C=>C.kind==="type"&&C.severity==="error"))return b.all.forEach(C=>s.sink.report(C)),x}let d=f.length>1?void 0:l.signatures.find(S=>u(S)&&vl(S,o,s));if(d||(f.length===1?d=f[0]:l.signatures.length===1&&(d=l.signatures[0])),!d){let S=t.spread?null:bs(e,l.signatures,r.length,r);return s.sink.report(S??g.noMatchingOverload(yl(e,f,r,o,a,s,t.spread),l,o)),Ga(e,l.signatures,r,o,a,s)}let y=s.sink.all.length,m=dt(e,d,r,o,a,s,t.spread,i,c),h=s.sink.all.slice(y).some(S=>S.kind==="type"&&S.severity==="error");return l.signatures.length>1&&h?Ga(e,l.signatures,r,o,a,s):m}function Sl(e,n,t,r){let o=ee(n,e[0]);if(o===void 0)return t.sink.report(g.unknownName(r,e[0])),p.unknown;let a=e.slice(1),s=a.length?Z(o,a,t.schemes)?.type:o;return s?s.t==="literal"?p.literal(s.value):s:(t.sink.report(g.noSuchMember(r,o,a.join("."))),p.unknown)}function In(e,n,t,r){let o=a=>{if(Array.isArray(a)){let l=false,u=a.map(f=>{let d=o(f);return d!==f&&(l=true),d});return l?u:a}if(!a||typeof a!="object")return a;let s=a;if(s.t==="typeQuery")return Sl(s.path,n,t,r);if(s.t==="apply"&&typeof s.name=="string"){gl(s.name,n,t,r);let l=t.schemes[s.name];if(!l)return p.any;if(Array.isArray(s.args)&&Jc(l,s.args,t.schemes))return p.any}if(ss(s,t.schemes)){let l=s;return t.sink.report(g.noSuchMember(r,l.obj,is(l.key))),p.any}if(s.t==="union"&&Array.isArray(s.of)){let l=s.of,u=l.map(y=>o(y)),f=u.every((y,m)=>y===l[m]),d=p.union(u);return d.t!=="union"?d:f?s:d}if(s.t==="intersection"&&Array.isArray(s.of)){let l=s.of,u=l.map(y=>o(y)),f=p.intersection(u);return f.t==="intersection"&&f.of.length===l.length&&f.of.every((y,m)=>y===l[m])?s:f}if(s.t==="tuple"&&Array.isArray(s.elements)){let l=s.elements,u=l.map(y=>o(y)),f=p.tuple(u,s.flags,s.readonly);return u.every((y,m)=>y===l[m])&&f.elements.every((y,m)=>y===u[m])?s:f}let i=false,c={};for(let l of Object.keys(s)){let u=o(s[l]);u!==s[l]&&(i=true),c[l]=u;}return i?c:s};return o(e)}function gl(e,n,t,r){if(t.resolvedSchemes.has(e))return;let o=t.schemes[e];if(!o)return;t.resolvedSchemes.add(e);let a=In(o.body,n,t,r);a!==o.body&&(t.schemes[e]={...o,body:a});}function bl(e,n,t,r,o){let a={...t,sink:te(),resolvedSchemes:new Set(Object.keys(t.schemes))},s=In(e,n,a,r);return a.sink.hasErrors()?e:o?s:rn(s,t.schemes)}var ft=(e,n,t)=>{let r=Ft(e);return r===void 0?r:In(r,n,t,e)},kl=(e,n,t)=>{let r=Gr(e);return r===void 0?r:In(r,n,t,e)},ys=e=>{let n=e.typeArguments;return n?.length?n:void 0},hs=(e,n)=>{let{min:t,max:r}=qe(e.typeParams??[]);return n>=t&&n<=r};function Ss(e,n,t){if(n.length===1){let{min:a,max:s}=qe(n[0].typeParams??[]);return g.wrongTypeArgumentCount(e,a<s?`${a}-${s}`:a,t)}let r=-1/0,o=1/0;for(let a of n){let{min:s,max:i}=qe(a.typeParams??[]);s>t?o=Math.min(o,s):i<t&&(r=Math.max(r,i));}return r!==-1/0&&o!==1/0?g.noOverloadTypeArgumentCount(e,t,r,o):g.wrongTypeArgumentCount(e,r===-1/0?o:r,t)}function Nl(e,n,t,r){let o=n.typeParams??[],a=Ln(o,t.slice(0,o.length));for(let s of to(o,t,r.schemes))r.sink.report(g.constraintViolation(e,s.param.name,s.arg,s.expected));return a}function Bl(e,n){let t=0,r=false;for(let o of e.params)o.variadic?r=true:o.optional||t++;return n>=t&&(r||n<e.params.length)}function gs(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 bs(e,n,t,r){let o=Array.isArray(n)?n:[n];if(!o.length||o.some(l=>gs(l,t)))return null;let a=o.some(l=>l.params.some(u=>u.variadic)),s=Math.min(...o.map(l=>l.params.filter(u=>!u.optional&&!u.variadic).length)),i=Math.max(...o.map(l=>l.params.length)),c=a?`${s}`:s<i?`${s}-${i}`:`${s}`;return t<s?g.argumentArity(e,c,t,"missing",a):g.argumentArity(r[i]??e,c,t,"excess",a)}function vl(e,n,t){let r=Wt(e,zn(e,n).bindings);for(let o=0;o<e.params.length;o++){let a=e.params[o];if(a.variadic){let s=N(a.type,r),i=s.t==="array"?s.items:p.unknown;for(let c=o;c<n.length;c++)if(!v(n[c],i,t.schemes))return false;return true}if(o>=n.length){if(!a.optional)return false;continue}if(!v(n[o],N(a.type,r),t.schemes))return false}return true}function wl(e,n,t,r,o,a=e.arguments??[],s=null){let i=l=>a[l]??e;for(let l=0;l<n.params.length;l++){let u=n.params[l];if(u.variadic){let d=N(u.type,r),y=d.t==="array"?d.items:p.unknown;for(let m=l;m<t.length;m++)v(t[m],y,o.schemes)||o.sink.report(g.notAssignable(i(m),t[m],y,o.schemes));break}let f=N(u.type,r);l>=t.length||v(t[l],f,o.schemes)||o.sink.report(g.notAssignable(i(l),t[l],f,o.schemes));}let c=n.params.find(l=>l.variadic);if(s){let l=t.length,u=n.params.filter(f=>!f.optional&&!f.variadic).length;if(!(l>=u&&(c||l<n.params.length))){o.sink.report(g.spreadArgument(s.node));return}if(c){let f=N(c.type,r),d=f.t==="array"?f.items:p.unknown;v(s.elem,d,o.schemes)||o.sink.report(g.notAssignable(s.node,s.elem,d,o.schemes));}return}}function mt(e,n,t){if(e.t==="object"){let r=J(e.props,n);return r?r.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let r=e.of.map(o=>mt(P(o,t),n,t)).filter(o=>o!==void 0);return r.length===0?void 0:r.length===1?r[0]:D({t:"intersection",of:r})}if(e.t==="union")return ks(e.of,n,t)}function ks(e,n,t){let r=e.map(o=>mt(P(o,t),n,t)).filter(o=>o!==void 0);return r.length?w(r):void 0}var ao=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(ao),Xa=new WeakMap;function El(e,n,t){let r=Xa.get(t);if(r)return r;let o=new Set;for(let s of e)if(s.t==="object")for(let i of Object.keys(s.props))o.add(i);let a=new Set;for(let s of o){let c=e.map(u=>mt(u,s,n)).filter(u=>u!==void 0);if(!c.some(ao))continue;c.length===e.length&&c.every(u=>on(u,c[0]))||a.add(s);}return Xa.set(t,a),a}var Ns=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&Ns(e.object),Tl=(e,n)=>e.some(t=>t.t==="object"&&J(t.props,n)?.optional===true);function Bs(e,n,t,r,o){let a=El(n,r,o),s=new Set;if(!a.size)return {chosen:n,ignored:s};let i=[],c=new Set;for(let f of e.properties){if(f.type!=="Property")continue;let d=f,y=pn(d);if(y===null||(c.add(y),!a.has(y)||!Ns(d.value)))continue;let m=t(d);m&&ao(m)&&i.push([y,m]);}for(let f of a)!c.has(f)&&Tl(n,f)&&i.push([f,p.undefined]);let l=n.map(()=>1);for(let[f,d]of i){let y=false;n.forEach((m,h)=>{if(l[h]!==1)return;let S=mt(m,f,r);S!==void 0&&(v(d,S,r)?y=true:l[h]=2);}),n.forEach((m,h)=>{l[h]===2&&(l[h]=y?0:1);}),y||s.add(f);}let u=n.filter((f,d)=>l[d]===1);return {chosen:u.length?u:n,ignored:s}}function Ya(e,n,t,r,o,a=false){let s={},i={};for(let c of e.properties){let l=c;if(l.type==="SpreadElement"){let m=P(B(l.argument,t,r),r.schemes);if(m.t==="object")for(let[h,S]of Object.entries(m.props))s[h]=S,i[h]=S;continue}let u=l,f=pn(u),d=f!==null?n(f):void 0,y=d?ce(u.value,d,t,r,o):de(B(u.value,t,r));f!==null&&(s[f]={type:a?y:d??y},i[f]={type:y}),k(r,l,y,t);}return {checked:s,narrowed:i}}function ce(e,n,t,r,o=false){let a=r.inference,s=a?N(n,a.returnMapper):n,i=u=>a?N(u,a.nonFixing):u,c=P(s,r.schemes);switch(c.t==="conditional"&&(c=we(c,r.schemes)??c),Ie(e)?"Literal":e.type){case "Literal":{let u=Ye(e);return v(u,n,r.schemes)||r.sink.report(g.notAssignable(e,u,n,r.schemes)),k(r,e,fn(e),t),o?jn(s,u)?u:de(fn(e)):n}case "ArrayExpression":{if(at(c)){let u=co(e,c,t,r);return v(u,n,r.schemes)||Wl(e,u,c,t,r)||r.sink.report(g.notAssignable(e,u,n,r.schemes)),k(r,e,u,t)}if(c.t==="array"){let u=[];for(let d of e.elements){if(!d)continue;let y=d;if(y.type==="SpreadElement"){let m=ce(y.argument,n,t,r,o);m.t==="array"&&u.push(m.items);}else u.push(ce(y,c.items,t,r,o));}let f=o&&u.length>0?p.array(w(u)):i(n);return k(r,e,f,t)}break}case "ObjectExpression":{if(c.t==="object"||c.t==="intersection"){let u=r.sink.all.length,{checked:f,narrowed:d}=Ya(e,S=>mt(c,S,r.schemes),t,r,o),y=r.sink.all.slice(u).some(S=>S.kind==="type"&&S.severity==="error"),m=eo(e,n,r),h={t:"object",props:f};return !m&&!y&&!v(h,n,r.schemes)&&r.sink.report(g.notAssignable(e,h,n,r.schemes)),k(r,e,o?{t:"object",props:d}:n,t)}if(c.t==="union"){let u=c.of.filter(C=>C.t==="object"||C.t==="intersection");if(!u.length)break;let f=e,{chosen:d,ignored:y}=Bs(f,u,C=>B(C.value,t,{...r,sink:te()}),r.schemes,n),m=r.sink.all.length,{checked:h,narrowed:S}=Ya(f,C=>ks(y.has(C)?u:d,C,r.schemes),t,r,o,true),b=eo(f,n,r),x={t:"object",props:h};return !b&&r.sink.all.length===m&&!v(x,n,r.schemes)&&r.sink.report(g.notAssignable(e,x,n,r.schemes)),k(r,e,o?{t:"object",props:S}:n,t)}break}case "ArrowFunctionExpression":{let u=a?P(N(n,a.nonFixing),r.schemes):c;if(u.t==="fn"){let f=so(e,t,r,u);return v(f,n,r.schemes)||r.sink.report(g.notAssignable(e,f,n,r.schemes)),k(r,e,i(n),t)}break}case "ConditionalExpression":{let u=e;B(u.test,t,r);let f=ie(u.test,t,r.schemes),d=ce(u.consequent,n,W(t,f.then),r,o),y=ce(u.alternate,n,W(t,f.else),r,o);return k(r,e,o?w([d,y]):n,t)}case "Placeholder":return k(r,e,i(n),t)}let l=B(e,t,r,a?N(n,a.outer):n);return v(l,n,r.schemes)||r.sink.report(g.notAssignable(e,l,n,r.schemes)),k(r,e,l,t)}var Al=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return Ft(n)!==void 0};function so(e,n,t,r){let o=!e.async&&t.invoked.has(e),a=t.flow.size?new Map(t.flow):null,s=a?W(n,Object.fromEntries(a)):n;a&&t.flow.clear();let i=t.shadowed;o&&(t.shadowed=new Set);try{return Ol(e,s,t,r)}finally{let c=o?xl(e,s,t):null,l=t.shadowed;if(t.shadowed=i,t.flow.clear(),a)for(let[u,f]of a)t.flow.set(u,f);if(c)for(let[u,f]of c){let d=u.slice(0,ge(u)?u.indexOf("."):u.length);!l?.has(d)&&yn(n,u,t.schemes)!==void 0&&ke(u,f,t);}}}function xl(e,n,t){let r=e.body;return r.type!=="BlockStatement"?new Map(t.flow):Ve(r,n,t).types}function Ol(e,n,t,r){let o=r&&r.t==="fn"?r:void 0,a=o?.typeParams?.length&&e.params.some(E=>!Al(E))?o.typeParams:void 0,s=Lt(e)??a,i=E=>s?{...E,typeParams:s}:E,c={},l=e.params.map((E,A)=>{let j=E,Q=o?.params[A]?.type;if(j.type==="RestElement"){let We=j.argument,ue=ft(We,n,t)??(o?.params[A]?.variadic?Q:void 0)??p.array(p.unknown),_e=ae(We);return _e?(Qe(_e,We,t),c[_e]=ue):Fe(We,ue,c,n,t),t.overlay.set(We,{type:ue,scope:n}),t.overlay.set(j,{type:ue,scope:n}),{name:_e??`arg${A}`,type:ue,variadic:true}}if(j.type==="AssignmentPattern"){let We=j.left,Xt=ft(We,n,t)??Q;Fe(j,Xt??p.unknown,c,n,t);let ue=ae(We),_e=ue?c[ue]:void 0,Yt=Xt??_e??p.unknown,mo=Yt.t==="unknown"?Yt:w([Yt,p.undefined]);return ue&&_e&&(c[mn(ue)]=_e),t.overlay.set(j,{type:mo,scope:n}),{name:ue??`arg${A}`,type:mo,optional:true}}let le=ae(j),po=ft(j,n,t),Dn=po??Q??p.any,fo=j.type==="Identifier"&&(!!j.optional||po===void 0&&!!o?.params[A]?.optional),yt=fo&&Dn.t!=="unknown"?w([Dn,p.undefined]):Dn;return le?(Qe(le,j,t),c[le]=yt,c[mn(le)]=yt):j.type!=="Identifier"&&Fe(j,Dn,c,n,t),t.overlay.set(j,{type:yt,scope:n}),fo?{name:le??`arg${A}`,type:yt,optional:true}:{name:le??`arg${A}`,type:Dn}}),u=false;l.forEach((E,A)=>{E.optional?u=true:!E.variadic&&u&&t.sink.report(g.requiredAfterOptional(e.params[A]));});let f=bn(n,c,t),d=e.body,y=kl(e,n,t),m=e.returnGuard,h=m?{param:m.param,type:In(m.type,n,t,e)}:void 0;if(h){let E=l[h.param];E&&!v(h.type,E.type,t.schemes)&&t.sink.report(g.notAssignable(e,h.type,E.type,t.schemes));}let S=E=>h?{...E,guard:h}:E;if(d.type!=="BlockStatement"&&y){let E=e.async?it(y):y;ce(d,E,f,t);let A=e.async?ct(y):y;return k(t,e,S(i({t:"fn",params:l,returns:A})),n)}let b=y??o?.returns,x=b&&e.async?it(b):b,C=d.type==="BlockStatement"?k(t,d,Es(d,f,t,new Set(Object.keys(c).filter(E=>!Yr(E))),x),f):B(d,f,t),Te=e.async?ct(C):C;if(y){let E=e.async?it(y):y,A=e.async?C:Te;v(A,E,t.schemes)||t.sink.report(g.notAssignable(d,Te,y,t.schemes));let j=e.async?ct(y):y;return k(t,e,S(i({t:"fn",params:l,returns:j})),n)}return k(t,e,i({t:"fn",params:l,returns:Ge(tn(Te))}),n)}function Rn(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Rn(n.argument):Rn(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?Rn(n.argument):Rn(n):[]);case "AssignmentPattern":return Rn(e.left);default:return []}}function vs(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>Rn(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?vs(e.declaration):[]}var ws=Object.freeze({t:"undefined"}),Qa=e=>e===ws;function Es(e,n,t,r=new Set,o){let{returns:a}=qt(e.body,n,t,r,o),s=!Se(e)||a.some(Qa),i=a.filter(c=>!Qa(c));return i.length===0?s?p.void:p.union([]):w(s?[...i,p.undefined]:i)}var jl=[p.literal(true),p.literal(false)];function Kt(e){return e.t==="union"?e.of:e.t==="boolean"?jl:[e]}function Ts(e,n,t){let r=Kt(e);if(r.length<=1)return e;let o=r.filter(s=>v(n,s,t));if(o.length===0)return e;let a=w(o);return v(n,a,t)?a:e}var As=(e,n)=>ge(e)?void 0:ee(n,mn(e)),_t=(e,n,t)=>!ge(e)&&(t.evolving.has(e)||ee(n,mn(e))!==void 0);function zt(e,n,t,r,o,a){if(n)return je(r);if(a.evolving.has(e))return Vn(t);let s=As(e,o);return s===void 0?t:s.t==="union"||s.t==="boolean"?Ts(s,t,a.schemes):s}function ke(e,n,t){let r=e+".";for(let o of t.flow.keys())o.startsWith(r)&&t.flow.delete(o);t.flow.set(e,n);}var xs=(e,n)=>n.flow.size?n.flow.get(e):void 0;function Hr(e,n){let t=new Map(e.flow),r=n(),o=new Map;for(let[a,s]of e.flow)t.get(a)!==s&&o.set(a,s);e.flow.clear();for(let[a,s]of t)e.flow.set(a,s);return {value:r,effect:o}}function Ha(e,n){let t=new Set;for(let r of e)if(r.effect)for(let o of r.effect.keys())t.add(o);for(let r of t){let o=[];for(let a of e){let s=a.effect?.get(r)??n.flow.get(r)??yn(a.scope,r,n.schemes);s!==void 0&&o.push(s);}o.length&&ke(r,w(o),n);}}function Os(e,n,t){if(e.type==="MemberExpression")return k(t,e,ls(e,n,t,true),n);if(e.type==="Identifier"){let r=As(e.name,n);if(r!==void 0)return k(t,e,r,n)}return B(e,n,t)}function Za(e,n,t){let r=B(e,n,t),o=je(r);return o===r?r:k(t,e,o,n)}function ut(e,n,t,r){switch(e.type){case "ArrayExpression":{e.elements.forEach((o,a)=>{if(!o)return;let s=o;s.type==="SpreadElement"?ut(s.argument,Ds(n,a),t,r):ut(s,Cs(n,a),t,r);});return}case "ObjectExpression":{let o=[];for(let a of e.properties){let s=a;if(s.type==="SpreadElement"){ut(s.argument,Is(n,o),t,r);continue}let i=pn(s);i!=null&&o.push(i),ut(s.value,i!=null?Rs(n,i,r):p.unknown,t,r);}return}default:{let o=Os(e,t,r);!r.invalidTargets.has(e)&&!(e.type==="Identifier"&&r.evolving.has(e.name))&&!v(n,o,r.schemes)&&r.sink.report(g.notAssignable(e,n,o,r.schemes));let a=re(e);a!==null&&_t(a,t,r)?ke(a,zt(a,false,n,o,t,r),r):a!==null&&ge(a)&&ke(a,o,r);}}}function Pl(e,n,t,r){let o=e.right,a=B(o,t,r);return Ms(e.operator.slice(0,-1),n,a,e,e.left,o,r)}var gn=new Map;function Ve(e,n,t){switch(e.type){case "BlockStatement":{let r=gn,o=n;for(let a of e.body){let s=Ve(a,o,t);if(s.types.size){let i=new Map(r);for(let[c,l]of s.types)i.set(c,l);r=i,o=W(o,Object.fromEntries(s.types));}if(s.exits)return {types:r,exits:true}}return {types:r,exits:false}}case "IfStatement":return {types:Ps(e,n,t),exits:Se(e)};case "ReturnStatement":case "ThrowStatement":return {types:gn,exits:true};case "TryStatement":{let r=e,o=[],a=Ve(r.block,n,t);if(a.exits||o.push(a),r.handler){let i=Ve(r.handler.body,n,t);i.exits||o.push(i);}let s=js(o,n,t);if(r.finalizer){let i=s.size?W(n,Object.fromEntries(s)):n,c=Ve(r.finalizer,i,t);if(c.types.size){let l=new Map(s);for(let[u,f]of c.types)l.set(u,f);s=l;}}return {types:s,exits:Se(e)}}default:return {types:t.stmtFlow.get(e)??gn,exits:false}}}function js(e,n,t){let r=new Set;for(let a of e)for(let s of a.types.keys())r.add(s);if(!r.size)return gn;let o=new Map;for(let a of r){let s=yn(n,a,t.schemes),i=[];for(let c of e){let l=c.types.get(a)??s;l!==void 0&&i.push(l);}i.length&&s!==void 0&&o.set(a,w(i));}return o}function Ps(e,n,t){let r=Ve(e.consequent,n,t),o=e.alternate?Ve(e.alternate,n,t):{types:gn,exits:false};if(!r.types.size&&!o.types.size)return gn;let a=[r,o].filter(s=>!s.exits);return a.length?js(a,n,t):gn}var Rl=5;function es(e,n,t,r){let o=new Map(t.flow),a=new Map,s=n,i=null;for(let l=0;l<Rl;l++){let u=te(),f={...t,sink:u},d=r(s,f),y=new Map(Ve(e,s,f).types);for(let[h,S]of t.flow)o.get(h)!==S&&y.set(h,S);if(ns(o,t),!y.size){for(let h of u.all)t.sink.report(h);return {returns:d,head:s}}let m={};for(let[h,S]of y){let b=yn(s,h,t.schemes);if(b===void 0||S===b)continue;let x=w([b,S]);on(x,b)||(m[h]=x,a.set(h,x));}if(!Object.keys(m).length){for(let h of u.all)t.sink.report(h);i=d;break}s=W(s,m);}let c=i??r(s,t);ns(o,t);for(let[l,u]of a)ke(l,u,t);return {returns:c,head:s}}function ns(e,n){n.flow.clear();for(let[t,r]of e)n.flow.set(t,r);}function Cl(e,n,t){let r=Ve(e,n,t);return r.exits||!r.types.size?n:W(n,Object.fromEntries(r.types))}function qt(e,n,t,r=new Set,o){if(!Il(e))return ts(e,n,t,r,o);let a=new Set(t.evolving);try{return ts(e,n,t,r,o)}finally{t.evolving.clear();for(let s of a)t.evolving.add(s);}}function Il(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 ts(e,n,t,r,o){let a=n,s=[];for(let i of e){let c=i;for(let l of vs(c))r.has(l.name)?t.sink.report(g.cannotRedeclare(l,l.name)):r.add(l.name);if(c.type==="VariableDeclaration")a=Gt(c,a,t);else if(c.type!=="ImportDeclaration")if(c.type==="ExportNamedDeclaration"){let l=c;if(l.declaration?.type==="VariableDeclaration")a=Gt(l.declaration,a,t);else if(l.declaration?.type==="FunctionDeclaration"){let u=B(l.declaration,a,t),f=ae(l.declaration.id);f&&(a=bn(a,{[f]:u},t));}else for(let u of l.specifiers)ee(a,u.local.name)===void 0&&t.sink.report(g.unknownName(u.local,u.local.name));}else if(c.type==="ExportDefaultDeclaration")B(c.declaration,a,t);else if(c.type==="FunctionDeclaration"){let l=B(c,a,t),u=ae(c.id);u&&(a=bn(a,{[u]:l},t));}else if(c.type==="IfStatement"){let l=c;s.push(...be(c,a,t,o));let u=Ps(l,a,t);u.size&&(a=W(a,Object.fromEntries(u))),!l.alternate&&Se(l.consequent)&&(a=W(a,ie(l.test,a,t.schemes).else));}else s.push(...be(c,a,t,o)),(c.type==="BlockStatement"||c.type==="TryStatement")&&(a=Cl(c,a,t));a=Dl(c,a,t);}return {scope:a,returns:s}}function Dl(e,n,t){if(!t.flow.size)return n;let r=new Map(t.flow);t.flow.clear(),t.stmtFlow.set(e,r);let o=W(n,Object.fromEntries(r));for(let a of r.keys())ge(a)||(o=Qr(o,a,t.schemes));return o}function be(e,n,t,r){switch(e.type){case "ReturnStatement":{let o=e.argument,a=o?r?(ce(o,r,n,t),r):B(o,n,t):ws;return k(t,e,o?a:p.undefined,n),[a]}case "IfStatement":{let o=e;B(o.test,n,t);let a=ie(o.test,n,t.schemes),s=be(o.consequent,W(n,a.then),t,r);return o.alternate&&s.push(...be(o.alternate,W(n,a.else),t,r)),k(t,e,p.unknown,n),s}case "BlockStatement":{let{returns:o}=qt(e.body,n,t,void 0,r);return k(t,e,o.length?w(o):p.void,n),o}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let o=e,a=n;o.init&&(o.init.type==="VariableDeclaration"?a=Gt(o.init,a,t):B(o.init,a,t));let{returns:s}=es(o.body,a,t,(i,c)=>(o.test&&B(o.test,i,c),o.update&&B(o.update,i,c),be(o.body,i,c,r)));return k(t,e,p.unknown,n),s}case "ForOfStatement":case "ForInStatement":{let o=e,a=B(o.right,n,t),s=Le(a,o.right,t)?null:Cn(a);s&&t.sink.report(g.possiblyNullish(o.right,s));let i=s?ro(a):a,c=e.type==="ForOfStatement"?io(i,o.right,t):p.string,l=Ea(o.left);l&&Qe(l,Ta(o.left),t);let u=l?bn(n,{[l]:c},t):n,{returns:f}=es(o.body,u,t,(d,y)=>be(o.body,d,y,r));return k(t,e,p.unknown,n),f}case "BreakStatement":case "ContinueStatement":return k(t,e,p.unknown,n),[];case "ThrowStatement":{let o=e.argument;return o&&B(o,n,t),k(t,e,p.unknown,n),[]}case "TryStatement":{let o=e,a=be(o.block,n,t,r);if(o.handler){let s=o.handler.param,i=s?ae(s):null;i&&s&&Qe(i,s,t);let c=i?bn(n,{[i]:p.any},t):n;a.push(...be(o.handler.body,c,t,r));}return o.finalizer&&a.push(...be(o.finalizer,n,t,r)),k(t,e,p.unknown,n),a}case "SwitchStatement":{let o=e;B(o.discriminant,n,t);let a=n,s=[];for(let i of o.cases){i.test&&B(i.test,a,t);let c=qt(i.consequent,a,t,void 0,r);a=c.scope,s.push(...c.returns);}return k(t,e,p.unknown,n),s}default:return B(e,n,t),[]}}function Rs(e,n,t){let r=Z(e,[n],t.schemes);return r?r.type:p.unknown}function io(e,n,t){let r=se(e,t.schemes);switch(r.t){case "array":return r.items;case "tuple":return r.elements.length?w([...r.elements]):p.unknown;case "string":return p.string;case "literal":if(typeof r.value=="string")return p.string;break;case "unknown":case "any":return p.unknown;case "union":return w(r.of.map(o=>io(o,n,t)));}return t.sink.report(g.notIterable(n,e)),p.any}function Cs(e,n){let t=D(p.index(e,p.literal(n)));return t.t==="index"?p.unknown:t}function Is(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 p.object(t,e.index)}function Ds(e,n){return e.t==="tuple"?p.tuple(e.elements.slice(n)):e.t==="array"?e:p.array(p.unknown)}function Fe(e,n,t,r,o){switch(e.type){case "Identifier":{let a=ft(e,r,o)??n;Qe(e.name,e,o),t[e.name]=a,o.overlay.set(e,{type:a,scope:r});return}case "AssignmentPattern":{let a=e,s=B(a.right,r,o);n.t!=="unknown"&&!v(s,n,o.schemes)&&o.sink.report(g.notAssignable(a.right,s,n,o.schemes));let i=Ge(tn(s)),{type:c}=Ne(n),l=c.t==="unknown"?i:w([c,i]),u=a.left;if(u.type==="Identifier"){let f=u.name;Qe(f,u,o),t[f]=l,o.overlay.set(u,{type:l,scope:r});}else Fe(u,l,t,r,o);return}case "ObjectPattern":{let a=[];for(let s of e.properties){if(s.type==="RestElement"){Fe(s.argument,Is(n,a),t,r,o);continue}let i=s,c=pn(i);c!=null&&a.push(c);let l=c!=null?Rs(n,c,o):p.unknown;Fe(i.value,l,t,r,o);}return}case "ArrayPattern":{e.elements.forEach((a,s)=>{if(!a)return;let i=a;i.type==="RestElement"?Fe(i.argument,Ds(n,s),t,r,o):Fe(i,Cs(n,s),t,r,o);});return}}}function eo(e,n,t){let r=se(n,t.schemes),o=r.t==="union"?P(r,t.schemes):r,a=o.t==="union"?o.of.map(l=>se(l,t.schemes)):[o],i=(r.t==="union"?Bs(e,a.filter(l=>l.t==="object"||l.t==="intersection"),l=>t.overlay.get(l.value)?.type,t.schemes,n).chosen:a).filter(l=>l.t==="object"&&(!l.index||l.index.key==="number"));if(!i.length||i.some(l=>Object.keys(l.props).length===0&&!l.index))return false;let c=false;for(let l of e.properties){if(l.type==="SpreadElement")continue;let u=l;if(u.computed)continue;let f=pn(u);if(f===null)continue;i.filter(y=>f in y.props||y.index?.key==="number"&&$n(f)).length||(t.sink.report(g.excessProperty(u.key,f,n)),c=true);}return c}function Gt(e,n,t){let r={};for(let o of e.declarations){let a=o.id,s=ae(a);s&&Qe(s,a,t);let i=ft(a,n,t);if(!o.init){if(s&&e.kind!=="const"){i?(r[s]=i,r[mn(s)]=i):(r[s]=p.undefined,t.evolving.add(s));continue}t.sink.report(g.constNeedsInit(o)),s&&(r[s]=i??p.unknown);continue}let c=i??(o.init.type==="ArrowFunctionExpression"?Oa(o.init):null),l=s&&c?bn(n,{[s]:c},t):n,u,f=null;i?(ce(o.init,i,l,t),u=i,f=i,(i.t==="union"||i.t==="boolean")&&Ie(o.init)&&(u=Ts(i,Ye(o.init),t.schemes))):(u=B(o.init,l,t),e.kind!=="const"&&(u=Vn(u)),u=Ge(u),f=u),k(t,o,u,n),s?(r[s]=u,e.kind!=="const"&&f&&(r[mn(s)]=f)):Fe(a,u,r,n,t);}return k(t,e,p.unknown,n),bn(n,r,t)}function bn(e,n,t){let r=Xe(e,n);for(let o of Object.keys(n))Yr(o)||(t.shadowed?.add(o),r=Qr(r,o,t.schemes));return r}function Ml(e,n,t){let r=B(e.left,n,t),o=B(e.right,n,t);return Ms(e.operator,r,o,e,e.left,e.right,t)}function Ms(e,n,t,r,o,a,s){if(e==="in"){let c=Le(n,o,s)?null:Cn(n);c&&s.sink.report(g.possiblyNullish(o,c));let l=Le(t,a,s)?null:Cn(t);l&&s.sink.report(g.possiblyNullish(a,l));}let i=Qn.get(e);if(!i)return p.boolean;if(i.category==="additive"||i.category==="arithmetic"||i.category==="bitwise"||i.category==="relational"){let c=Le(n,o,s),l=Le(t,a,s);if(c||l)return p.any}if(i.category==="additive"){if(Sn(n)||Sn(t))return hn(n,s.schemes)||hn(t,s.schemes)?p.string:p.number;if(hn(n,s.schemes)&&hn(t,s.schemes))return p.string;if(pt(n,s.schemes)&&pt(t,s.schemes))return p.number;if(hn(n,s.schemes)||hn(t,s.schemes)){let l=hn(n,s.schemes)?t:n;return s.sink.report(g.implicitCoercion(r,n,t,$s(l,s.schemes))),p.string}return s.sink.report(g.operatorNotApplicable(r,"+",n,t)),p.number}if(i.category==="arithmetic"||i.category==="bitwise")pt(n,s.schemes)||s.sink.report(g.arithmeticOperand(o,"left")),pt(t,s.schemes)||s.sink.report(g.arithmeticOperand(a,"right"));else if(i.category==="relational"&&!Sn(n)&&!Sn(t)){let c=P(n,s.schemes),l=P(t,s.schemes),u=v(c,p.number,s.schemes),f=v(l,p.number,s.schemes);u&&f||!u&&!f&&(v(c,l,s.schemes)||v(l,c,s.schemes))||s.sink.report(g.operatorNotApplicable(r,e,n,t));}return $r(i.result)}var Sn=e=>e.t==="any"||e.t==="unknown",pt=(e,n)=>Sn(e)||v(P(e,n),p.number,n),hn=(e,n)=>!Sn(e)&&v(P(e,n),p.string,n),$l=p.union([p.string,p.number,p.boolean,p.null,p.undefined]),$s=(e,n)=>Sn(e)||v(P(e,n),$l,n),rs={string:p.literal(""),number:p.literal(0),boolean:p.literal(false)},Ut=e=>e.t==="null"||e.t==="undefined";function Fl(e,n,t,r){if(n.t==="any"||n.t==="unknown")return w([n,t]);let o=(n.t==="union"?[...n.of]:[n]).flatMap(s=>s.t==="boolean"?[p.literal(true),p.literal(false)]:[s]);if(e==="??")return o.some(Ut)?w([...o.filter(s=>!Ut(s)),t]):n;if(e==="||")return Ua(n,r)?w([...o.filter(s=>!Ut(s)&&!(s.t==="literal"&&!s.value)),t]):n;if(!Wa(n,r))return n;let a=o.flatMap(s=>Ut(s)?[s]:s.t==="literal"?s.value?[]:[s]:rs[s.t]?[rs[s.t]]:[]);return w([...a,t])}var Ll=p.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>p.literal(e)));function Vl(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}:p.boolean;case "-":case "+":case "~":return Le(r,e.argument,t),e.operator==="-"&&r.t==="literal"&&typeof r.value=="number"?{t:"literal",value:-r.value,fresh:true}:p.number;case "typeof":return Ll;case "delete":return p.boolean;case "void":return p.undefined;default:return p.unknown}}function Ul(e,n,t){let r={},o,a=[],s=[],i=false,c=false,l=false;for(let f of e.properties){let d=f;if(d.type==="SpreadElement"){l=true;let b=se(B(d.argument,n,t),t.schemes);if(b.t==="object"){for(let x in b.props)r[x]=b.props[x];b.index&&(o={key:b.index.key,type:b.index.value});}continue}let y=d,m=B(y.value,n,t),h=de(m);if(k(t,d,m,n),y.computed){let b=se(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),s.push(h)):b.t==="string"?(i=true,a.push(h)):b.t==="number"&&(c=true,a.push(h),s.push(h));continue}let S=pn(y);S!==null&&(r[S]={type:h},a.push(h),/^\d+$/.test(S)&&s.push(h));}i?o={key:"string",type:w(a)}:c&&(o={key:"number",type:w(s)});let u=l?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return o?{t:"object",props:r,index:{key:o.key,value:o.type},...u}:{t:"object",props:r,...u}}function Fs(e,n,t){let r=[];for(let o of e.elements){if(!o)continue;let a=o;if(a.type==="SpreadElement"){let s=se(B(a.argument,n,t),t.schemes);s.t==="array"?r.push(s.items):s.t==="tuple"&&r.push(...s.elements);continue}r.push(de(B(a,n,t)));}return Nt(p.array(r.length?w(r):p.unknown))}function co(e,n,t,r){let o=se(n,r.schemes),a=e.elements,s=a.every(c=>c&&c.type!=="SpreadElement"),i=(c,l)=>c.type==="ArrayExpression"?co(c,l,t,r):jn(l,Ie(c)?Ye(c):void 0)?B(c,t,r):de(B(c,t,r));if(o.t==="tuple"&&s){let c=Be(o),l=f=>c<0||f<c?o.elements[f]:o.elements[c],u=a.map((f,d)=>{let y=l(d);return y?i(f,y):de(B(f,t,r))});return k(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}if(o.t==="union"&&s){let c=o.of.map(l=>se(l,r.schemes));if(c.some(l=>l.t==="tuple")){let l=(f,d)=>{if(f.t==="array")return f.items;if(f.t!=="tuple")return;let y=Be(f);return y<0||d<y?f.elements[d]:f.elements[y]},u=a.map((f,d)=>{let y=c.map(m=>l(m,d)).filter(m=>m!==void 0);return y.length?i(f,w(y)):de(B(f,t,r))});return k(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}}if(o.t==="array"){let c=[];for(let l of a){if(!l)continue;let u=l;if(u.type==="SpreadElement"){B(u.argument,t,r);continue}c.push(i(u,o.items));}return k(r,e,Nt(p.array(c.length?w(c):p.unknown)),t)}return Fs(e,t,r)}function Ls(e,n,t){let r=P(e,t);if(r.t==="array")return r.items;if(r.t==="tuple"){let o=Be(r);if(n>=r.elements.length||o>=0&&n>=o)return;let a=fe(p.index(r,p.literal(n)),t);return Ze(a)?void 0:a}if(r.t==="union"){let o=r.of.map(a=>Ls(a,n,t));return o.some(a=>a===void 0)?void 0:w(o)}}function Wl(e,n,t,r,o){let a=P(t,o.schemes);if(a.t!=="array"&&a.t!=="tuple"&&a.t!=="union")return false;let s=(c,l)=>c.t==="tuple"?c.elements[l]:c.t==="array"?c.items:void 0,i=false;return e.elements.forEach((c,l)=>{if(!c)return;let u=c;if(u.type==="SpreadElement")return;let f=Ls(a,l,o.schemes);if(!f)return;let d=s(n,l);if(!d||v(d,f,o.schemes))return;let y=o.sink.all.length;ce(u,f,r,o,false),o.sink.all.length>y&&(i=true);}),i}function no(e,n,t,r){if(e===null)return p.null;switch(typeof e){case "string":return p.string;case "number":return p.number;case "boolean":return p.boolean;case "object":break;default:return p.unknown}if(Array.isArray(e)){let s=e.map(i=>no(i,n,t,r));return p.array(s.length?w(s):p.unknown)}let o=e;if(ast.isExprMarker(o)){let s;try{s=json.fromJson(o);}catch{return t.sink.report(g.unsupported(r,`'${ast.EXPR_MARKER}: ${String(o[ast.EXPR_MARKER])}'`)),p.unknown}return B(s,n,t)}let a={};for(let s of Object.keys(o))a[s]={type:no(o[s],n,t,r)};return {t:"object",props:a}}function Vs(e,n){let t=P(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 _l(e,n,t,r,o){let a=te(),s=ce(e,n,t,{...r,sink:a},true);if(a.hasErrors()&&o);let i=c=>r.sink.all.some(l=>l.node===c.node&&l.code===c.code&&l.message===c.message);for(let c of a.all)i(c)||r.sink.report(c);return a.hasErrors()?n:s}var zl=(e,n)=>({...e,typeAnnotation:n}),Kl=(e,n)=>({...e,returnType:n}),ql=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function lo(e,n){return e.get(n)?.type}function Gl(e,n){return e.get(n)?.scope}function Jl(e,n){let t=e.get(n)?.type;return t?Z(t,[])?.completions??[]:[]}function Xl(e,n){let t=e.get(n)?.scope;return t?[...wr(t)].map(([r,o])=>({key:r,type:o,optional:false})):[]}var Yl=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function Ql(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 Jt(e,n,t,r={}){let o=e[n],a=e[n+1];if(!(!o||!a))switch(a.type){case "ArrowFunctionExpression":case "FunctionExpression":return a.body===o?a.returnType:void 0;case "VariableDeclarator":return a.init===o?a.id?.typeAnnotation:void 0;case "TSAsExpression":return a.typeAnnotation;case "ReturnStatement":return e.slice(n+1).find(Yl)?.returnType;case "CallExpression":{let s=(a.arguments??[]).indexOf(o);if(s<0)return;let i=lo(t,a.callee);return i?.t==="fn"?i.params?.[s]?.type:void 0}case "Property":{if(a.value!==o||e[n+2]?.type!=="ObjectExpression")return;let i=Jt(e,n+2,t,r),c=Ql(a);return !i||!c?void 0:Z(i,[c],r)?.type}case "ArrayExpression":{let s=Jt(e,n+1,t,r);return s?Z(s,["[]"],r)?.type:void 0}case "BinaryExpression":{let s=Qn.get(a.operator);if(!s)return;if(s.category==="arithmetic"||s.category==="bitwise")return p.number;let i=a.left===o?a.right:a.left,c=lo(t,i);return c&&c.t!=="any"&&c.t!=="unknown"?c:void 0}case "LogicalExpression":return Jt(e,n+1,t,r);case "UnaryExpression":{let s=a.operator;return s==="-"||s==="+"||s==="~"?p.number:void 0}default:return}}function Hl(e,n){return e.filter(t=>t.node===n)}function tu(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var ru=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function uo(e,n,t,r){if(ast.isExprMarker(e)){let o=r.island?r.island(e,n):ast.fromExprMarker(e);return t.stamp(o,n)}return Array.isArray(e)?t.stamp(Ue__namespace.arrayExpression(e.map((o,a)=>uo(o,r.child(n,a),t,r))),n):ru(e)?t.stamp(Ue__namespace.objectExpression(Object.entries(e).map(([o,a])=>{let s=r.child(n,o),i=t.stamp(Ue__namespace.literal(o),s);return t.stamp(Ue__namespace.property(i,uo(a,s,t,r),false,false),s)})),n):t.stamp(Ue__namespace.literal(e),n)}function ou(e){let n=new WeakMap,t=[e];for(;t.length>0;){let r=t.pop();ast.forEachChild(r,o=>{n.set(o,r),t.push(o);});}return n}function au(e,n,t,r){let o=ou(e),a=new Map,s=c=>{let l=a.get(c);return l===void 0&&(l=languageService.createPositionMap(c),a.set(c,l)),l},i=c=>{let l=c;for(;l!==void 0;){let u=t.get(l);if(u!==void 0)return u;l=o.get(l);}return r.fallback};return n.map(c=>{let l=i(c.node),u=r.textOf?.(l),f=u===void 0?void 0:Ws(s(u),c.node.loc);return {diagnostic:c,anchor:l,...f?{span:f}:{}}})}function Ws(e,n){if(!n?.start)return;let t=a=>e.offsetAt({line:a.line-1,column:a.column}),r=t(n.start),o=n.end?t(n.end):r;return {from:r,to:o<r?r:o}}function su(e,n){return Ws(languageService.createPositionMap(e),n)}exports.BINARY_OP=Qn;exports.BINARY_OPS=Mr;exports.DEFAULT_TYPE_LIMITS=ht;exports.FUNCTION_KINDS=ca;exports.INSTANTIATION_COUNT_LIMIT=Ks;exports.INSTANTIATION_DEPTH_LIMIT=zs;exports.InstantiationLimitError=kn;exports.LOGICAL_OPS=ic;exports.TYPE_EVAL_DEPTH_LIMIT=_s;exports.TypeEvalLimitError=Ae;exports.UNARY_OPS=da;exports.UnionTooComplexError=xe;exports.anchorDiagnostics=au;exports.annotate=zl;exports.annotateReturn=Kl;exports.apparentType=P;exports.asExpression=ql;exports.asLiteralOrigin=Nt;exports.baseLiteralType=je;exports.binaryOpsProducing=cc;exports.bindTypeParams=Ln;exports.calleeAllowlist=xr;exports.capabilityNodes=Ar;exports.check=as;exports.childScope=Xe;exports.collectBindings=gc;exports.collectMutations=Wr;exports.collectReferences=wc;exports.collectUnused=Vr;exports.comparable=Tt;exports.componentProps=cl;exports.componentPropsOf=oo;exports.configureTypeLimits=Ht;exports.contextualTypeAt=Jt;exports.contravariantInference=$o;exports.covariantInference=Mo;exports.createAnchors=tu;exports.createEnv=Qi;exports.createSink=te;exports.diag=g;exports.diagnosticsAt=Hl;exports.discover=Z;exports.equals=on;exports.erasedSignature=En;exports.expand1=q;exports.extractModuleType=Yc;exports.flagAt=Bo;exports.format=R;exports.formatTypeArgs=Ui;exports.formatTypeDiff=Jn;exports.freeVars=V;exports.fromCapability=ac;exports.groundVars=rn;exports.guard=Tr;exports.guardsFromCompiled=Pt;exports.inferFromCandidates=Fo;exports.inferredTypes=vt;exports.instantiate=mi;exports.instantiateInContextOf=hr;exports.instantiateLoose=zn;exports.isMissingType=Ze;exports.isNumericLiteralName=$n;exports.isObjectOrArrayLiteral=kt;exports.isScheme=X;exports.isSerializable=an;exports.isVariadicTuple=vo;exports.join=ea;exports.joinAll=Ii;exports.lookup=ee;exports.lowerValue=uo;exports.makeDiagnostic=z;exports.maxArgs=Ir;exports.maxCallNesting=jr;exports.maxDepth=Rr;exports.maxFunctionNesting=Or;exports.maxNestingOf=jt;exports.maxNodes=Cr;exports.memberCompletions=Jl;exports.memberDepth=Pr;exports.missingType=He;exports.normalizeUnion=w;exports.opResultSchema=$r;exports.ownProp=J;exports.renameTypeParams=fr;exports.resetInstantiationCount=er;exports.resetTypeLimits=Zt;exports.resolveConditional=we;exports.resolveNamed=Zi;exports.resolveOp=fe;exports.resolveScheme=ec;exports.resolveTypeOp=D;exports.restIndex=Be;exports.resultType=Dr;exports.rootScope=aa;exports.s=p;exports.sameSymbol=Nc;exports.sampleValue=$i;exports.scopeAt=Gl;exports.scopeCompletions=Xl;exports.silentNever=_n;exports.spanOf=su;exports.substitute=N;exports.subtype=v;exports.typeAt=lo;exports.typeAtPosition=Wn;exports.typeDiff=qn;exports.typeFeatures=Nr;exports.typeLimits=oe;exports.typeNeedsParens=ta;exports.typeParamArity=qe;exports.unaryOpsProducing=lc;exports.unify=F;exports.visibleNames=wr;exports.widen=de;exports.widenInferred=mr;exports.widenLiteral=Vn;exports.widenOrigin=Ge;exports.widenType=tn;exports.withoutUndefined=Ne;
|