@tslite/checker 1.5.0 → 1.8.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.
@@ -0,0 +1 @@
1
+ var Gt=100,Yt=50,Jt=5e6,Ve={maxTypeDepth:100,maxInstantiationDepth:50,maxInstantiationCount:5e6,maxUnionMembers:1e3,maxOverloadSignatures:200},ne=Ve;function Zt(e){ne={...Ve,...e};}function Xt(){ne=Ve;}function D(){return ne}var ie=class extends Error{constructor(n=ne.maxTypeDepth){super(`excessive stack depth comparing types (limit ${n}) \u2014 the comparison is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},Re=class extends Error{constructor(t,r=t==="depth"?ne.maxInstantiationDepth:ne.maxInstantiationCount){super(`type instantiation is excessively deep and possibly infinite (${t} limit ${r})`);this.kind=t;this.name="InstantiationLimitError";}};function er(){un=0;}var un=0;function Bn(){if(un>=ne.maxInstantiationCount)throw new Re("count");un++;}var le=class extends Error{constructor(n,t=ne.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${t})`),this.name="UnionTooComplexError";}};var zn=Object.prototype.hasOwnProperty,ve=(e,n)=>zn.call(e,n),$=(e,n)=>zn.call(e,n)?e[n]:void 0;function w(e,n,t){n==="__proto__"?Object.defineProperty(e,n,{value:t,enumerable:true,writable:true,configurable:true}):e[n]=t;}var dn=()=>({active:new Set,byScope:new Map});function Ae(e,n,t){let r=new Map(e);for(let o of n)r.set(o.name,t(o));return r}function mn(e,n,t){let r=Ae(n,e,()=>{}),o=false,a=e.map(i=>{let l=i.bound&&q(i.bound,r,t),u=i.default&&q(i.default,r,t);return l===i.bound&&u===i.default?i:(o=true,{...i,...l?{bound:l}:{},...u?{default:u}:{}})});return o?a:e}function cn(e,n,t){let r=e.typeParams?.length?mn(e.typeParams,n,t):void 0,o=r?Ae(n,r,u=>u.bound):n,a=ke(e.params,u=>{let p=q(u.type,o,t);return p===u.type?u:{...u,type:p}}),i=q(e.returns,o,t),l=e.guard&&q(e.guard.type,o,t);return a===e.params&&i===e.returns&&l===e.guard?.type&&r===e.typeParams?e:{...e,params:a,returns:i,...e.guard&&l?{guard:{...e.guard,type:l}}:{},...r?{typeParams:r}:{}}}function ke(e,n){let t=false,r=e.map(o=>{let a=n(o);return a!==o&&(t=true),a});return t?r:e}function q(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=Yn(e,n,t);return t.active.delete(e),r.set(e,a),a}function Yn(e,n,t){let r=o=>q(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=ke(e.elements,r);return o===e.elements?e:{...e,elements:o}}case "union":case "intersection":{let o=ke(e.of,r);return o===e.of?e:{...e,of:o}}case "object":{let o=false,a={};for(let u of Object.keys(e.props)){let p=e.props[u],y=r(p.type);y!==p.type&&(o=true),w(a,u,y===p.type?p:{...p,type:y});}let i=e.index&&r(e.index.value),l=!!e.index&&i!==e.index.value;return !o&&!l?e:{...e,props:o?a:e.props,...e.index&&i&&l?{index:{...e.index,value:i}}:{}}}case "fn":return cn(e,n,t);case "overload":{let o=ke(e.signatures,a=>cn(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 i=q(e.body,a,t);return o===e.over&&i===e.body?e:{...e,over:o,body:i}}case "conditional":{let o=e.infer?.length?mn(e.infer,n,t):void 0,a=o?Ae(n,o,y=>y.bound):n,i=r(e.check),l=q(e.extends,a,t),u=q(e.then,a,t),p=q(e.else,a,t);return i===e.check&&l===e.extends&&u===e.then&&p===e.else&&o===e.infer?e:{...e,check:i,extends:l,then:u,else:p,...o?{infer:o}:{}}}case "returnType":case "parameters":{let o=r(e.fn);return o===e.fn?e:{...e,fn:o}}case "apply":{let o=ke(e.args,r);return o===e.args?e:{...e,args:o}}default:return e}}function qn(e){return e.typeParams?.length?cn(e,new Map,dn()):e}function nr(e){return e.infer?.length?Yn(e,new Map,dn()):e}function tr(e){if(!e.params.length)return e;let n=dn(),t=mn(e.params,new Map,n),r=q(e.body,Ae(new Map,t,o=>o.bound),n);return t===e.params&&r===e.body?e:{params:t,body:r}}var J=e=>Object.freeze(e),f={any:J({t:"any"}),unknown:J({t:"unknown"}),string:J({t:"string"}),number:J({t:"number"}),boolean:J({t:"boolean"}),null:J({t:"null"}),undefined:J({t:"undefined"}),void:J({t:"void"}),nonPrimitive:J({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"?A(r):r):e,...n&&n.some(r=>r!=="req")?{flags:n}:{},...t?{readonly:true}:{}}),fn:(e,n,t)=>qn({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(qn)}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,t,r={})=>({t:"mapped",key:e,over:n,body:t,...r.optional?{optional:true}:{},...r.readonly?{readonly:true}:{},...r.excludeOptional?{excludeOptional:true}:{},...r.excludeReadonly?{excludeReadonly:true}:{}}),conditional:(e,n,t,r,o)=>nr({t:"conditional",check:e,extends:n,then:t,else:r,...o&&o.length?{infer:o}:{}}),scheme:(e,n)=>tr({params:e,body:n}),intersection:e=>U({of:e}),and:(e,n)=>U({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=rr(n);return r.length===1?r[0]:{t:"union",of:r}}};function ce(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 rr(e){let n=[],t=new Map;for(let l of e){let u=ce(l);if(u===null){n.includes(l)||n.push(l);continue}let p=t.get(u);p===void 0?(t.set(u,n.length),n.push(l)):l.t==="literal"&&!l.fresh&&(n[p]=l);}let r=l=>l.t==="literal"&&t.has(typeof l.value),o=!t.has("boolean")&&t.has("#boolean:true")&&t.has("#boolean:false"),a=false,i=[];for(let l of n)if(!r(l)){if(o&&l.t==="literal"&&typeof l.value=="boolean"){a||i.push({t:"boolean"}),a=true;continue}i.push(l);}return i}function j(e){return e.t==="keyof"?sn(e.of)??e:e.t==="index"?We(e.obj,e.key)??e:e.t==="returnType"?or(e.fn)??e:e.t==="parameters"?ar(e.fn)??e:e}var Fe={t:"union",of:[]},pn=e=>e.t==="union"&&e.of.length===0;function or(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function A(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:f.union([...n,{t:"undefined"}])}function ar(e){let n=e.t==="fn"?e:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1]:null;return n?Ue(n,0):null}function Te(e){let n=[],t=[],r;for(let o of e.params){if(!o.variadic){n.push(o.optional?A(o.type):o.type),t.push(o.optional?"optional":"req");continue}let a=o.type;a.t==="tuple"?a.elements.forEach((i,l)=>{let u=a.flags?.[l]??"req";u==="rest"&&(r=f.array(i)),n.push(u==="optional"?A(i):i),t.push(u);}):(r=a,n.push(a.t==="array"?a.items:a.t==="any"?a:f.index(a,f.number)),t.push("rest"));}return {types:n,flags:t,rest:r}}function Ue(e,n){let{types:t,flags:r,rest:o}=Te(e),a=t.length-(o?1:0);if(o&&n===a)return o;let i=r.findIndex(x=>x!=="req"),l=i<0?t.length:i,u=l<n?0:l-n,p=[],y=[];for(let x=n;x<t.length;x++)p.push(t[x]),y.push(o&&x===a?"rest":x-n<u?"req":"optional");return f.tuple(p,y)}var fn=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Kn(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 Hn(e){return e.t==="null"||e.t==="undefined"?e.t:e.t==="nonPrimitive"?"nonPrimitive":fn(e)?"scalar":e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"?"object":null}var Qn=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function U(e){let n=[],t=i=>{let l=j(i);l.t==="intersection"?l.of.forEach(t):n.push(l);};if(e.of.forEach(t),n.some(i=>i.t==="any"))return f.any;if(n.some(pn))return Fe;let r=i=>n.some(l=>Hn(l)===i);if(r("null")&&(r("undefined")||r("scalar")||r("object")||r("nonPrimitive"))||r("undefined")&&(r("scalar")||r("object")||r("nonPrimitive"))||r("nonPrimitive")&&r("scalar"))return Fe;if(n.some(i=>Hn(i)==="object"&&!Qn(i)))for(let i=n.length-1;i>=0;i--)Qn(n[i])&&n.splice(i,1);let o=n.findIndex(i=>i.t==="union");if(o>=0){let i=n.reduce((l,u)=>l*(u.t==="union"?u.of.length:1),1);if(i>D().maxUnionMembers)throw new le(i);return f.union(n[o].of.map(l=>U({of:n.map((u,p)=>p===o?l:u)})))}let a=[];for(let i of n){if(i.t==="any")return f.any;if(pn(i))return Fe;if(i.t!=="unknown"){if(fn(i)){let l=false;for(let u=a.length-1;u>=0;u--){let p=a[u];if(fn(p)){if(Kn(p,i)){l=true;break}if(Kn(i,p))a.splice(u,1);else return Fe}}if(l)continue}else if(a.some(l=>l===i))continue;a.push(i);}}return a.length===0?f.unknown:a.length===1?a[0]:{t:"intersection",of:a}}function sn(e){if(e.t==="union"&&e.of.length>0){let t=e.of.map(sn);return t.some(r=>r===null)?null:ir(t)}if(e.t==="intersection"){let t=e.of.map(sn);return t.some(r=>r===null)?null:f.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:[f.string,f.number]};if(e.t==="nonPrimitive")return {t:"union",of:[]};if(e.t==="array"||e.t==="tuple")return f.number;if(e.t==="fn"||e.t==="overload")return {t:"union",of:[]};if(e.t!=="object")return null;if(e.index?.key==="string")return f.union([f.string,f.number]);let n=Object.keys(e.props).map(t=>f.literal(t));return e.index?.key==="number"?f.union([f.number,...n]):n.length===0?{t:"union",of:[]}:f.union(n)}function ir(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(i=>i.includes(a))),o=[...new Set(r)].map(a=>f.literal(a));return o.length===0?{t:"union",of:[]}:f.union(o)}var ue=Object.freeze({t:"unknown"}),Ne=e=>e===ue,Gn=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 We(e,n){if(e=j(e),n=j(n),n.t==="union"){let t=[],r=false;for(let o of n.of){let a=We(e,o);if(a===null)return null;Ne(a)?r=true:t.push(a);}return r?ue:f.union(t)}if(Gn(n))return null;if(e.t==="any"||pn(e))return e;if(e.t==="intersection"){let t=[];for(let r of e.of){let o=We(j(r),n);if(o===null)return null;Ne(o)||t.push(o);}return t.length===0?ue:t.length===1?t[0]:U({of:t})}if(e.t==="union"){let t=[];for(let r of e.of){let o=j(r);if(o.t==="any")return o;let a=We(o,n);if(a===null)return null;if(Ne(a))return ue;t.push(a);}return f.union(t)}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let t=B(e.props,String(n.value));return t?t.optional?A(t.type):t.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:ue}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=="string"&&De(n.value)&&+n.value>=0){let o=+n.value;return Number.isInteger(o)&&o<r?e.elements[o]:t>=0?e.elements[t]:f.undefined}if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]:t>=0?e.elements[t]:f.undefined;if(n.t==="number")return e.elements.length?f.union([...e.elements]):f.undefined}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:Gn(e)?null:ue}var _e=e=>(e.t==="object"||e.t==="array"||e.t==="tuple")&&!!e.fromLiteral,lr=e=>e.t==="object"||e.t==="array"||e.t==="tuple"?e.fromLiteral?e:{...e,fromLiteral:true}:e,B=(e,n)=>$(e,n);function K(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:f.union(n),hadUndefined:true}}return {type:e,hadUndefined:false}}var De=e=>(+e).toString()===e;var Jn=(e,n)=>e.flags?.[n]??"req",pe=(e,n)=>Jn(e,n)==="optional"?A(e.elements[n]):e.elements[n],yn=e=>e.elements.map((n,t)=>pe(e,t)),Zn=e=>e.flags?.[e.elements.length-1]==="rest",he=e=>Zn(e)?e.elements.length-1:-1,we=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(t=>t!=="req");return n<0?e.elements.length:n};function Xn(e,n,t,r=false){let o=he(e),a=he(n);if(!r&&we(e)<we(n))return false;if(a<0){if(o>=0)return false;let p=we(n);return e.elements.length<p||e.elements.length>n.elements.length?false:e.elements.every((y,x)=>t(pe(e,x),pe(n,x)))}let i=n.elements[a],l=p=>p<a?pe(n,p):i;if(o<0)return e.elements.length<we(n)?false:e.elements.every((p,y)=>t(pe(e,y),l(y)));if(o===0&&a!==0||o<we(n))return false;let u=e.elements[o];for(let p=0;p<o;p++)if(!t(pe(e,p),l(p)))return false;for(let p=o;p<a;p++)if(!t(u,pe(n,p)))return false;return t(u,i)}function b(e,n,t=new WeakSet){return Bn(),ur(e,n,t)}function ur(e,n,t){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!pr(N(e),n))return e;switch(e.t){case "var":{let r=$(n,e.name);return r||hn(e,n,t)}case "array":return {...e,items:b(e.items,n,t)};case "tuple":{let r=e.elements.map(o=>b(o,n,t));return {...e,elements:r}}case "union":return f.union(e.of.map(r=>b(r,n,t)));case "object":{if(t.has(e))return e;t.add(e);let r={};for(let a in e.props){let i=e.props[a];w(r,a,{type:b(i.type,n,t),optional:i.optional,...i.readonly?{readonly:true}:{}});}let o=e.index?{key:e.index.key,value:b(e.index.value,n,t),...e.index.readonly?{readonly:true}:{}}: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=gn(e,n,t);return t.delete(e),r}case "overload":return {t:"overload",signatures:e.signatures.map(r=>gn(r,n,t))};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>b(r,n,t))};case "keyof":return j({t:"keyof",of:b(e.of,n,t)});case "index":return j({t:"index",obj:b(e.obj,n,t),key:b(e.key,n,t)});case "mapped":{let r=xn([f.typeParam(e.key)],n,N(e),t),o=e.over.t==="keyof"?{t:"keyof",of:b(e.over.of,n,t)}:b(e.over,n,t),a=e.modifiers??(e.over.t==="var"&&e.over.bound?.t==="keyof"?e.over.bound.of:void 0),i=e.typeVariable||e.over.t==="keyof"&&e.over.of.t==="var",l={t:"mapped",key:r.decls[0].name,over:o,body:b(e.body,r.inner,t),...sr(e),...a?{modifiers:b(a,n,t)}:{},...i?{typeVariable:true}:{}};return je(l)??l}case "conditional":{if(e.check.t==="var"){let a=e.check.name,i=$(n,a),l=i?j(i):void 0,u=l?.t==="union"?l.of:l?.t==="boolean"?[f.literal(true),f.literal(false)]:null;if(u)return {t:"union",of:u.map(p=>b(e,{...n,[a]:p},t))}}let r=e.distributive||e.check.t==="var"&&ve(n,e.check.name)&&$(n,e.check.name)?.t!=="var",o=e.infer?.length?xn(e.infer,n,N(e),t):{inner:n,decls:void 0};return {t:"conditional",check:b(e.check,n,t),extends:b(e.extends,o.inner,t),then:b(e.then,o.inner,t),else:b(e.else,o.inner,t),...o.decls?{infer:o.decls}:{},...r?{distributive:true}:{}}}case "intersection":return U({of:e.of.map(r=>b(r,n,t))});case "returnType":return j({t:"returnType",fn:b(e.fn,n,t)});case "parameters":return j({t:"parameters",fn:b(e.fn,n,t)});default:return e}}function hn(e,n,t,r=e.name){return !e.bound&&!e.default&&r===e.name?e:{...e,name:r,...e.bound?{bound:b(e.bound,n,t)}:{},...e.default?{default:b(e.default,n,t)}:{}}}function gn(e,n,t,r){let o=e.typeParams?.length?xn(e.typeParams,n,N(e),t,r):{inner:n,decls:void 0},a=o.inner;return {...e,params:e.params.map(i=>({...i,type:b(i.type,a,t)})),returns:b(e.returns,a,t),...e.guard?{guard:{...e.guard,type:b(e.guard.type,a,t)}}:{},...o.decls?{typeParams:o.decls}:{}}}function vn(e,n){return e.typeParams?.some(t=>n.has(t.name))?gn(e,{},new WeakSet,n):e}function xn(e,n,t,r,o=new Set){let a=new Set(e.map(h=>h.name)),i={},l=new Set;for(let h in n)if(!a.has(h)&&(w(i,h,n[h]),t.has(h)))for(let v of N(n[h]))l.add(v);let u=e.filter(h=>l.has(h.name)||o.has(h.name));if(u.length===0)return {inner:i,decls:e.map(h=>hn(h,i,r))};let p=new Set([...a,...t,...l,...o]),y=new Map;for(let h of u){let v=1;for(;p.has(`${h.name}_${v}`);)v++;let O=`${h.name}_${v}`;p.add(O),y.set(h.name,O);}let x={};for(let[h,v]of y)w(x,h,{t:"var",name:v});let s={...i};for(let h of u){let v=y.get(h.name);w(s,h.name,{t:"var",name:v,...h.bound?{bound:b(h.bound,{...i,...x},r)}:{}});}return {inner:s,decls:e.map(h=>hn(h,s,r,y.get(h.name)??h.name))}}var cr=new Set,et=new WeakMap;function N(e){let n=et.get(e);if(n)return n;let t=new Set;P(e,t,new WeakSet);let r=t.size===0?cr:t;return et.set(e,r),r}function bn(e,n,t){let r=new Set;t(r);for(let o of r)e.includes(o)||n.add(o);}function nt(e,n,t){let r=e.typeParams??[];bn(r.map(o=>o.name),n,o=>{for(let a of r)P(a,o,t);for(let a of e.params)P(a.type,o,t);P(e.returns,o,t),e.guard&&P(e.guard.type,o,t);});}function P(e,n,t){switch(e.t){case "var":n.add(e.name),e.bound&&P(e.bound,n,t),e.default&&P(e.default,n,t);return;case "array":P(e.items,n,t);return;case "tuple":for(let r of e.elements)P(r,n,t);return;case "union":for(let r of e.of)P(r,n,t);return;case "object":if(t.has(e))return;t.add(e);for(let r in e.props)P(e.props[r].type,n,t);e.index&&P(e.index.value,n,t);return;case "fn":if(t.has(e))return;t.add(e),nt(e,n,t);return;case "overload":for(let r of e.signatures)nt(r,n,t);return;case "apply":for(let r of e.args)P(r,n,t);return;case "keyof":P(e.of,n,t);return;case "index":P(e.obj,n,t),P(e.key,n,t);return;case "mapped":P(e.over,n,t),e.modifiers&&P(e.modifiers,n,t),bn([e.key],n,r=>P(e.body,r,t));return;case "conditional":{P(e.check,n,t);let r=e.infer??[];bn(r.map(o=>o.name),n,o=>{for(let a of r)P(a,o,t);P(e.extends,o,t),P(e.then,o,t),P(e.else,o,t);});return}case "intersection":for(let r of e.of)P(r,n,t);return;case "returnType":case "parameters":P(e.fn,n,t);return;default:return}}function pr(e,n){if(e.size===0)return false;for(let t of e)if(ve(n,t))return true;return false}function Be(e){let n=[];for(let a of e){let i=j(a);if(i.t!=="object")return null;n.push(i);}let t=new Set;for(let a of n)for(let i in a.props)t.add(i);let r={};for(let a of t){let i=[],l=true,u=false;for(let p of n){let y=$(p.props,a);y&&(i.push(y.type),y.optional||(l=false),y.readonly&&(u=true));}w(r,a,{type:U({of:i}),optional:l,...u?{readonly:true}:{}});}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:U({of:[o.value,a.index.value]}),...o.readonly&&a.index.readonly?{readonly:true}:{}}:a.index);return o?{t:"object",props:r,index:o}:{t:"object",props:r}}function je(e,n=j,t=j){if(e.typeVariable&&e.over.t==="keyof"&&e.over.of.t!=="var"){let i=dr(e,n(e.over.of),n,t);if(i!==void 0)return i}if(e.over.t==="keyof"){let i=n(e.over.of),l=i.t==="intersection"?Be(i.of)??i:i;if(l.t==="object")return Sn(e,l,Object.keys(l.props),l.index?.key,t);if(l.t==="any")return Sn(e,void 0,[],"string",t)}let r=fr(j(e.over));if(r===null)return null;let o=e.modifiers?n(e.modifiers):void 0,a=o?.t==="intersection"?Be(o.of)??o:o;return Sn(e,a?.t==="object"?a:void 0,r.names,r.index,t)}function fr(e){let n=[],t;for(let r of e.t==="union"?e.of:[e])switch(r.t){case "literal":(typeof r.value=="string"||typeof r.value=="number")&&n.push(r.value);continue;case "string":case "any":t="string";continue;case "number":t!=="string"&&(t="number");continue;case "var":case "apply":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "typeQuery":return null;case "intersection":if(N(r).size>0)return null;continue;default:continue}return {names:n,index:t}}function Sn(e,n,t,r,o){let a={};for(let l of t){let u=String(l),p=n?$(n.props,u):void 0,y=!!e.optional||!e.excludeOptional&&!!p?.optional,x=!!e.readonly||!e.excludeReadonly&&!!p?.readonly,s=b(e.body,{[e.key]:f.literal(l)});if(!y&&p?.optional){let h=o(s);if(rt(h))return null;s=K(h).type;}w(a,u,{type:s,...y?{optional:true}:{},...x?{readonly:true}:{}});}if(r===void 0)return {t:"object",props:a};let i=b(e.body,{[e.key]:r==="number"?f.number:f.string});return {t:"object",props:a,index:{key:r,value:e.optional?A(i):i,...e.readonly?{readonly:true}:{}}}}var rt=e=>e.t==="index"||e.t==="keyof"||e.t==="mapped"||e.t==="conditional"||e.t==="returnType"||e.t==="parameters"||e.t==="apply"||e.t==="typeQuery",sr=e=>({...e.optional?{optional:true}:{},...e.readonly?{readonly:true}:{},...e.excludeOptional?{excludeOptional:true}:{},...e.excludeReadonly?{excludeReadonly:true}:{}});function dr(e,n,t,r){let o=a=>e.readonly?true:e.excludeReadonly?false:!!a;switch(n.t){case "union":{let a=e.over.of;return f.union(n.of.map(i=>{let l={...e,over:{t:"keyof",of:i},body:Pe(e.body,a,i)};return je(l,t,r)??l}))}case "array":{let a=tt(e,f.number,true,r);return a===null?null:f.array(a,o(n.readonly))}case "tuple":{let a=n.flags??n.elements.map(()=>"req"),i=[];for(let u=0;u<n.elements.length;u++){let p=tt(e,f.literal(String(u)),a[u]==="optional",r);if(p===null)return null;i.push(p);}let l=a.map(u=>u==="rest"?"rest":e.optional?"optional":e.excludeOptional?"req":u);return f.tuple(i,l,o(n.readonly))}case "string":case "number":case "boolean":case "literal":case "null":case "undefined":case "void":case "nonPrimitive":return n;default:return}}function Pe(e,n,t){let r=new Map,o=a=>{if(a===n)return t;if(a===null||typeof a!="object")return a;let i=r.get(a);if(i!==void 0)return i;r.set(a,a);let l=false,u;if(Array.isArray(a)){let p=a.map(y=>{let x=o(y);return x!==y&&(l=true),x});u=l?p:a;}else {let p={};for(let y of Object.keys(a)){let x=$(a,y),s=o(x);s!==x&&(l=true),w(p,y,s);}u=l?p:a;}return r.set(a,u),u};return o(e)}function tt(e,n,t,r){let o=b(e.body,{[e.key]:n});if(e.optional)return A(o);if(e.excludeOptional&&t){let a=r(o);return rt(a)?null:K(a).type}return o}function ot(e){let n=e.length;for(;n>0&&e[n-1].default;)n--;return {min:n,max:e.length}}var at=(e,n)=>{let{min:t,max:r}=ot(e);return n>=t&&n<=r};function ze(e,n){let t={};return e.forEach((r,o)=>{o<n.length?w(t,r.name,n[o]):r.default&&w(t,r.name,b(r.default,t));}),t}function F(e,n){if(e.t!=="apply")return false;let t=$(n,e.name);return t!==void 0&&at(t.params,e.args.length)}function W(e,n){if(e.t!=="apply")return e;let t=$(n,e.name);return !t||!at(t.params,e.args.length)?e:b(t.body,ze(t.params,e.args))}function V(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?"?":""}:${V(e.props[r].type)}`).join(","),t=e.index?`,[${e.index.key}]:${V(e.index.value)}`:"";return `{${n}${t}}`}case "array":return `[${V(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(V).join(",")})`;case "union":return `(${e.of.map(V).sort().join("|")})`;case "fn":return `${e.typeParams?.length?`<${e.typeParams.map(t=>t.name).join(",")}>`:""}(${e.params.map(t=>V(t.type)).join(",")})=>${e.guard?`is${e.guard.param}:${V(e.guard.type)}`:V(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(V).join(",")}>`;case "intersection":return `&(${e.of.map(V).sort().join("&")})`;case "returnType":return `RT<${V(e.fn)}>`;default:return e.t}}var kn=()=>D().maxInstantiationDepth;function M(e,n={},t=0){if(t>kn())return e;if(e.t==="var")return e.bound?M(e.bound,n,t+1):e;if(F(e,n))return M(W(e,n),n,t+1);if(e.t==="mapped"){let r=Me(e,n,t+1);if(r)return M(r,n,t+1)}if(e.t==="intersection")return U(e);if(e.t==="union"){let r=e.of.flatMap(a=>{let i=M(a,n,t+1);return i.t==="union"?i.of:[i]});return r.length===e.of.length&&r.every((a,i)=>a===e.of[i])?e:{t:"union",of:r}}return e}function Me(e,n,t=0){let r=a=>M(a,n,t),o=a=>fe(a,n,t);return je(e,r,o)??je({...e,over:Oe(e.over,n,t)},r,o)}function Oe(e,n,t=0){if(t>kn())return e;let r=H(e,n);if(r!==e)return Oe(r,n,t+1);if(e.t==="conditional"){let o=Q(e,n);if(o)return Oe(o,n,t+1)}return F(e,n)?Oe(W(e,n),n,t+1):e.t==="union"?I(e.of.map(o=>Oe(o,n,t+1))):e}function fe(e,n,t=0){if(t>kn())return e;let r=H(e,n);if(r!==e)return fe(r,n,t+1);let o=M(e,n,t);return o===e?e:fe(o,n,t+1)}function H(e,n={}){let t=j(e);if(t!==e)return t;switch(e.t){case "keyof":{let r=fe(e.of,n);return r===e.of?e:j({...e,of:r})}case "index":{let r=fe(e.obj,n),o=fe(e.key,n);return r===e.obj&&o===e.key?e:j({...e,obj:r,key:o})}case "returnType":{let r=fe(e.fn,n);return r===e.fn?e:j({...e,fn:r})}default:return e}}var qe=e=>typeof e=="string"?f.string:typeof e=="number"?f.number:f.boolean;function Tn(e){return e.t==="literal"&&e.fresh?qe(e.value):e}function Ke(e){if(e.t==="literal")return e.fresh?qe(e.value):e;if(e.t==="union"){let n=e.of.map(Ke);return n.some((t,r)=>t!==e.of[r])?I(n):e}return e}function ut(e){if(e.t==="literal")return qe(e.value);if(e.t==="union"){let n=e.of.map(ut);return n.some((t,r)=>t!==e.of[r])?I(n):e}return e}function mr(e){return _(e,new WeakSet)}function yr(e){switch(e.t){case "array":return {t:"array",items:_(e.items,new WeakSet),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>_(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return ct(e,new WeakSet);case "fn":case "overload":return _(e,new WeakSet);default:return e}}function _(e,n){if(e.t==="literal")return e.fresh?qe(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:_(e.items,n),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(t=>_(t,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return n.add(e),ct(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(t=>_(t,n))};case "fn":return n.add(e),{...e,params:e.params.map(t=>({...t,type:_(t.type,n)})),returns:_(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:_(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(t=>_(t,n))};default:return e}}function ct(e,n){let t={};for(let i in e.props)w(t,i,{type:_(e.props[i].type,n),optional:e.props[i].optional,...e.props[i].readonly?{readonly:true}:{}});let r=e.index?{key:e.index.key,value:_(e.index.value,n),...e.index.readonly?{readonly:true}:{}}: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 pt(e){if(!e.siblings){let n=[];for(let t of pt(e.parent)){if(t.t!=="object"||!t.fromLiteral)continue;let r=B(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 Sr(e){if(!e.propNames){let n=new Set;for(let t of pt(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 hr=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function gr(e,n,t){let r={};for(let a in e.props){let i=e.props[a],l=se(i.type,n&&{parent:n,propertyName:a},t);w(r,a,l===i.type?i:{...i,type:l});}if(n)for(let a of Sr(n))B(r,a)||w(r,a,{type:f.undefined,optional:true});let o=e.index?{key:e.index.key,value:se(e.index.value,void 0,t),...e.index.readonly?{readonly:true}:{}}:void 0;return o?{t:"object",props:r,index:o}:{t:"object",props:r}}var it=new WeakMap;function ge(e,n){let t=it.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=>ge(o.type,n))||!!e.index&&ge(e.index.value,n);break;case "array":r=!!e.fromLiteral||ge(e.items,n);break;case "tuple":r=!!e.fromLiteral||e.elements.some(o=>ge(o,n));break;case "union":case "intersection":r=e.of.some(o=>ge(o,n));break}return n.delete(e),it.set(e,r),r}var lt=new WeakMap;function se(e,n,t){if(!ge(e,new WeakSet))return e;if(!n){let o=lt.get(e);if(o)return o}if(t.has(e))return e;t.add(e);let r=xr(e,n,t);return t.delete(e),n||lt.set(e,r),r}function xr(e,n,t){switch(e.t){case "object":return e.fromLiteral?gr(e,n,t):e;case "union":{let r=n??{siblings:e.of},o=e.of.map(a=>a.t==="null"||a.t==="undefined"?a:se(a,r,t));return o.some(hr)?I(o):o.every((a,i)=>a===e.of[i])?e:f.union(o)}case "intersection":{let r=false,o=e.of.map(a=>{let i=se(a,void 0,t);return i!==a&&(r=true),i});return r?f.intersection(o):e}case "array":{let r=se(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 i=se(a,void 0,t);return i!==a&&(r=true),i});return !r&&!e.fromLiteral?e:{t:"tuple",elements:o,...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}}}default:return e}}function Ie(e){return se(e,void 0,new WeakSet)}var mt=Object.freeze({t:"union",of:Object.freeze([])});function X(e){if(e===mt)return true;switch(e.t){case "array":return X(e.items);case "tuple":return e.elements.some(X);case "union":case "intersection":return e.of.some(X);case "apply":return e.args.some(X);case "object":return !!e.fromLiteral&&(Object.values(e.props).some(n=>X(n.type))||!!e.index&&X(e.index.value));default:return false}}var L={NakedTypeVariable:1,HomomorphicMappedType:2,PartialHomomorphicMappedType:4,MappedTypeConstraint:8,ContravariantConditional:16,ReturnType:32,LiteralKeyof:64,NoConstraints:128,AlwaysStrict:256,MaxValue:512,PriorityImpliesCombination:104,Circularity:-1};function Ye(e){let n=new Map;for(let t of e??[])n.set(t.name,{co:[],contra:[]});return n}function br(e){if(e.length<=1)return [...e];let n=e.filter(_e);return n.length?[...e.filter(t=>!_e(t)),I(n)]:[...e]}function vr(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 kr(e,n){if(e.length)return vr(e)?I([...e]):e.reduce((t,r)=>z(t,r,n)?r:t)}function yt(e,n={},t=false){let r=br(e);if(t)return r.length?Ie(I(r)):void 0;let o=r.filter(l=>l.t==="null"||l.t==="undefined"),a=r.filter(l=>l.t!=="null"&&l.t!=="undefined");if(!a.length)return Ie(I(r));let i=kr(a,n);if(i!==void 0)return Ie(o.length?I([i,...o]):i)}function St(e,n={},t=false){if(e.length)return t?f.intersection(e):e.reduce((r,o)=>z(o,r,n)?o:r)}var Tr=e=>e.priority!==void 0&&(e.priority&L.PriorityImpliesCombination)!==0;function ht(e,n={}){let t=Tr(e),r=e.co.length?yt(e.co,n,t):void 0;if(!e.contra.length)return r;let o=St(e.contra,n,t);if(o===void 0)return r;let a=r!==void 0&&r.t==="union"&&r.of.length===0;return r!==void 0&&!a&&z(r,o,n)?r:o}function Cn(e,n){let{typeParams:t,...r}=e;return {...r,params:e.params.map(o=>({...o,type:b(o.type,n)})),returns:b(e.returns,n),...e.guard?{guard:{...e.guard,type:b(e.guard.type,n)}}:{}}}function Ee(e){return e.typeParams?.length?Cn(e,Object.fromEntries(e.typeParams.map(n=>[n.name,f.any]))):e}function wr(e){let n=e.typeParams;if(!n?.length)return e;let t=Object.fromEntries(n.map(a=>[a.name,a.bound??f.unknown])),r=n.map(a=>a.bound??f.unknown);for(let a=0;a<n.length-1;a++)r=r.map(i=>b(i,t));let o=Object.fromEntries(n.map(a=>[a.name,f.any]));return r=r.map(a=>b(a,o)),Cn(e,Object.fromEntries(n.map((a,i)=>[a.name,r[i]])))}function gt(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?b(o.default,r):f.unknown);if(o.bound){let i=b(o.bound,r);z(a,i,t)||(a=i);}w(r,o.name,a);}return r}var Pn=(e,n)=>n<e.types.length?e.types[n]:e.rest?e.types[e.types.length-1]:void 0;function xt(e,n,t){let r=Te(e),o=Te(n),a=o.types.length-(o.rest?1:0),i=r.rest?a:Math.min(r.types.length,a);for(let l=0;l<i;l++){let u=Pn(r,l),p=Pn(o,l);u&&p&&t(u,p);}o.rest&&t(Ue(e,i),o.rest);}function bt(e,n,t){e.guard&&n.guard&&e.guard.param===n.guard.param?t(e.guard.type,n.guard.type):t(e.returns,n.returns);}var On=e=>e.t==="fn"?[e]:e.t==="overload"?e.signatures:[],vt=e=>N(e).size>0,de=e=>e.t==="union"&&e.of.length>0,Mn=e=>de(e)?e.of:[e];function In(e,n){if(e===n)return true;if(e.t==="var"&&n.t==="var")return e.name===n.name;let t=ce(e);return t!==null&&t===ce(n)}var jr=(e,n)=>In(e,n)||e.t==="literal"&&(n.t==="string"&&typeof e.value=="string"||n.t==="number"&&typeof e.value=="number"),Pr=(e,n,t)=>e.t==="apply"&&n.t==="apply"&&e.name===n.name&&(e.args.length>0||!F(e,t)),ft=e=>e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"||e.t==="mapped"||e.t==="intersection",Or=e=>e.t==="var"||e.t==="keyof"||e.t==="index"||e.t==="conditional",wn=e=>e.t==="mapped"&&vt(e.over);function xe(e){let n=new Map,t=r=>{if(r.t==="intersection")return r.of.forEach(t);if(r.t==="object")for(let o in r.props){let a=r.props[o],i=n.get(o);n.set(o,i?{type:f.intersection([i.type,a.type]),optional:i.optional&&a.optional}:a);}};return t(e),n}var He=e=>e.optional?A(e.type):e.type;function Z(e,n){if(n==="number"){if(e.t==="array")return e.items;if(e.t==="tuple")return f.union([...e.elements])}if(e.t==="object"&&e.index?.key===n)return e.index.value}function st(e,n){if(e.t!=="object"&&e.t!=="intersection")return;let t=[];for(let[r,o]of xe(e))(n==="string"||Mr(r))&&t.push(He(o));if(n==="string"){let r=Z(e,"number");r&&t.push(r);}return t.length?f.union(t):void 0}var Mr=e=>String(Number(e))===e;function Ir(e,n){return e.t==="tuple"&&n.t==="tuple"?Er(e,n):dt(e,n)&&dt(n,e)}function Er(e,n){let t=Ge(e),r=Ge(n);return r.minLength>t.minLength||!r.rest&&(!!t.rest||r.length<t.length)}function Ge(e){let n=he(e),t=n<0?e.elements.length:n,r=(e.flags??[]).findIndex(a=>a!=="req"),o=r<0?t:Math.min(r,t);return n<0?{length:t,minLength:o}:{length:t,minLength:o,rest:e.elements[n]}}function dt(e,n){let t=xe(e);for(let[r,o]of xe(n)){if(o.optional)continue;let a=t.get(r);if(!a)return true;let i=ce(o.type);if(i!==null&&(o.type.t==="literal"||o.type.t==="null"||o.type.t==="undefined")&&a.type.t!=="any"&&ce(a.type)!==i)return true}return false}function Cr(e){let n={};for(let t of Mn(e))t.t==="literal"&&typeof t.value=="string"&&w(n,t.value,{type:f.any,optional:false});return e.t==="string"?f.object(n,{key:"string",value:f.object({})}):f.object(n)}var kt=e=>!X(e)||e.t==="object"&&!!e.fromLiteral&&Object.values(e.props).some(n=>kt(n.type));function te(e,n,t,r={},o=0,a=false){let i=o,l=a,u=L.MaxValue,p=true,y=new WeakMap,x=0;s(n,t);function s(c,d){if(vt(d)){if(c.t==="apply"&&d.t==="apply"&&c.name===d.name&&c.args.length>0){_n(c.args,d.args);return}if(F(c,r)||F(d,r)){re(c,d,(m,g)=>{if(!(x>=D().maxInstantiationDepth)){x++;try{F(m,r)?s(W(m,r),g):s(m,W(g,r));}finally{x--;}}});return}if(c===d&&(c.t==="union"||c.t==="intersection")){for(let m of c.of)s(m,m);return}if(de(d)){let[m,g]=oe(Mn(c),d.of,jr),[k,T]=oe(m,g,(E,ae)=>Pr(E,ae,r));if(!T.length)return;if(d=f.union(T),!k.length){O(c,d,L.NakedTypeVariable);return}c=f.union(k);}else if(d.t==="intersection"&&d.of.some(m=>v(m)||wn(m)&&m.over.t==="keyof"&&!!v(m.over.of))&&!de(c)){let[m,g]=oe(c.t==="intersection"?c.of:[c],d.of,In);if(!m.length||!g.length)return;c=f.intersection(m),d=f.intersection(g);}if(d.t==="var"){if(X(c))return;let m=v(d);if(m){if((m.priority===void 0||i<m.priority)&&(m.co.length=0,m.contra.length=0,m.priority=i),i===m.priority){let g=l?m.contra:m.co;g.includes(c)||g.push(c);}u=Math.min(u,i);return}}if(c.t==="array"&&d.t==="array")s(c.items,d.items);else if(c.t==="apply"&&d.t==="apply"&&c.name===d.name)_n(c.args,d.args);else if(c.t==="keyof"&&d.t==="keyof")l=!l,s(c.of,d.of),l=!l;else if((c.t==="literal"||c.t==="string"||h(c))&&d.t==="keyof"){let m=Cr(c);l=!l,O(m,d.of,L.LiteralKeyof),l=!l;}else if(c.t==="index"&&d.t==="index")s(c.obj,d.obj),s(c.key,d.key);else if(c.t==="conditional"&&d.t==="conditional")s(c.check,d.check),s(c.extends,d.extends),s(c.then,d.then),s(c.else,d.else);else if(d.t==="conditional"){let m=i;i|=l?L.ContravariantConditional:0,Dn(c,[d.then,d.else],"conditional"),i=m;}else if(de(d)||d.t==="intersection")Dn(c,d.of,d.t==="intersection"?"intersection":"union");else if(de(c))for(let m of c.of)s(m,d);else {if(!(i&L.NoConstraints&&(c.t==="intersection"||Or(c)))){let m=M(c,r);if(m!==c&&p&&!ft(m))return p=false,s(m,d);c=m;}ft(c)&&re(c,d,zt);}}}function h(c){return de(c)&&c.of.every(d=>ce(d)!==null)}function v(c){return c.t==="var"?e.get(c.name):void 0}function O(c,d,m){let g=i;i|=m,s(c,d),i=g;}function re(c,d,m){let g=y.get(c),k=g?.get(d);if(k!==void 0){u=Math.min(u,k);return}g||y.set(c,g=new Map),g.set(d,L.Circularity);let T=u;u=L.MaxValue,m(c,d),g.set(d,u),u=Math.min(u,T);}function oe(c,d,m){let g=new Set,k=new Set;for(let T of d)for(let E of c)m(E,T)&&(s(E,T),g.add(E),k.add(T));return [c.filter(T=>!g.has(T)),d.filter(T=>!k.has(T))]}function _n(c,d){let m=Math.min(c.length,d.length);for(let g=0;g<m;g++)s(c[g],d[g]);}function Dt(c,d){l=!l,s(c,d),l=!l;}function Bt(c){let d;for(let m of c){let g=m.t==="intersection"?m.of.find(k=>!!v(k)):void 0;if(!g||d&&!In(g,d))return;d=g;}return d}function Dn(c,d,m){let g=0;if(m==="union"){let k,T=Mn(c),E=T.map(()=>false),ae=false;for(let Y of d)if(v(Y))k=Y,g++;else for(let be=0;be<T.length;be++){let ln=u;u=L.MaxValue,s(T[be],Y),u===i&&(E[be]=true),ae||(ae=u===L.Circularity),u=Math.min(u,ln);}if(g===0){let Y=Bt(d);Y&&O(c,Y,L.NakedTypeVariable);return}if(g===1&&!ae){let Y=T.filter((be,ln)=>!E[ln]);if(Y.length){s(f.union(Y),k);return}}}else for(let k of d)v(k)?g++:s(c,k);if(m==="intersection"?g===1:g>0)for(let k of d)v(k)&&O(c,k,L.NakedTypeVariable);}function an(c,d,m){if(de(m)){let g=false;for(let k of m.of)g=an(c,d,k)||g;return g}if(m.t==="keyof"){if(v(m.of)&&m.of.t==="var"){let k=$r(c,d,m.of.name,r);k&&O(k,m.of,X(c)?L.PartialHomomorphicMappedType:L.HomomorphicMappedType);}return true}if(m.t==="var"){if(O(H(f.keyof(c),r),m,L.MappedTypeConstraint),m.bound&&an(c,d,m.bound))return true;let g=[...xe(c).values()].map(He),k=Z(c,"string"),T=Z(c,"number");return k&&g.push(k),T&&g.push(T),s(f.union(g),d.body),true}return false}function zt(c,d){if(c.t==="array"&&d.t==="array"){s(c.items,d.items);return}if(wn(c)&&wn(d)&&(s(c.over,d.over),s(c.body,d.body)),d.t==="mapped"){if(an(c,d,d.over))return;let m=Me(d,r);if(!m)return;d=m;}if(!Ir(c,d)){if(c.t==="array"||c.t==="tuple"){if(d.t==="tuple"){qt(c,d);return}if(d.t==="array"){let m=Z(c,"number");m&&s(m,d.items);return}}Kt(c,d),Ht(c,d),Qt(c,d);}}function qt(c,d){let m=c.t==="tuple"?Ge(c):c.t==="array"?{length:0,rest:c.items}:void 0;if(!m)return;let g=Ge(d),k=c.t==="tuple"?c.elements:[],T=g.length<m.length||m.rest?g.length:m.length;for(let E=0;E<T;E++)s(E<m.length?k[E]:m.rest,d.elements[E]);if(g.rest){let E=T<m.length?k.slice(T,m.length):[];m.rest&&E.push(m.rest),E.length&&s(f.union(E),g.rest);}}function Kt(c,d){let m=xe(c);for(let[g,k]of xe(d)){let T=m.get(g);T&&s(He(T),He(k));}}function Ht(c,d){let m=On(c),g=On(d),k=Math.min(m.length,g.length);for(let T=0;T<k;T++){let E=wr(m[m.length-k+T]),ae=Ee(g[g.length-k+T]);xt(E,ae,Dt),bt(E,ae,s);}}function Qt(c,d){let m=Z(d,"string");if(m){let k=Z(c,"string")??st(c,"string");k&&s(k,m);}let g=Z(d,"number");if(g){let k=Z(c,"number")??Z(c,"string")??st(c,"number");k&&s(k,g);}}}function $n(e,n={}){let t={};for(let[r,o]of e){if(!o.co.length&&!o.contra.length)continue;let a=ht(o,n);a&&w(t,r,a);}return t}function Ln(e,n,t={}){let r=e.typeParams??[],o=Ye(r);return xt(n,e,(a,i)=>te(o,a,i,t)),bt(n,e,(a,i)=>te(o,a,i,t,L.ReturnType)),Cn(e,gt(r,$n(o,t),t))}var En="@rev";function G(e,n,t){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===t)return f.var(En);switch(e.t){case "array":return {t:"array",items:G(e.items,n,t)};case "tuple":return {t:"tuple",elements:e.elements.map(r=>G(r,n,t)),...e.flags?{flags:e.flags}:{}};case "union":return f.union(e.of.map(r=>G(r,n,t)));case "fn":return {...e,params:e.params.map(r=>({...r,type:G(r.type,n,t)})),returns:G(e.returns,n,t)};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>G(r,n,t))};case "returnType":return {t:"returnType",fn:G(e.fn,n,t)};case "object":{let r={};for(let o in e.props)w(r,o,{type:G(e.props[o].type,n,t),optional:e.props[o].optional,...e.props[o].readonly?{readonly:true}:{}});return e.index?{t:"object",props:r,index:{key:e.index.key,value:G(e.index.value,n,t),...e.index.readonly?{readonly:true}:{}}}:{t:"object",props:r}}default:return e}}function jn(e,n,t,r){let o=new Map([[En,{co:[],contra:[]}]]);te(o,e,G(n.body,t,n.key),r);let a=o.get(En),i=a.co.length?I(a.co):a.contra.length?f.intersection(a.contra):void 0;return i?Tn(i):f.unknown}function $r(e,n,t,r){if(!kt(e))return;if(e.t==="array")return f.array(jn(e.items,n,t,r));if(e.t==="tuple"){let i=e.elements.map(u=>jn(u,n,t,r)),l=e.elements.map((u,p)=>{let y=e.flags?.[p]??"req";return n.optional&&y!=="rest"?"req":y});return {...f.tuple(i,l),...e.readonly?{readonly:true}:{}}}if(e.t!=="object")return;let o=Object.keys(e.props);if(!o.length&&e.index?.key!=="string")return;let a={};for(let i of o){let l=$(e.props,i);w(a,i,{type:jn(l.type,n,t,r),...l.optional&&!n.optional?{optional:true}:{},...l.readonly&&!n.readonly?{readonly:true}:{}});}return {t:"object",props:a}}function Lr(e){if(e.t!=="tuple")return e;let n=he(e);return n<0?void 0:f.array(e.elements[n])}function Rr(e,n,t,r){let o=Te(n),a=n.params[n.params.length-1],i=a?.variadic?Lr(a.type):void 0,l=i&&i.t!=="array"&&i.t!=="any"&&!(i.t==="union"&&i.of.length===0)?i:void 0,u=l?Math.min(o.types.length-1,t.length):t.length;for(let p=0;p<u;p++){let y=Pn(o,p);y&&te(e,t[p],y,r);}l&&te(e,f.tuple(t.slice(u).map(Ke)),l,r);}var Vr=e=>{let n=On(e);return n.length===1?n[0]:void 0};function Fr(e,n,t={},r){let o=Ye(e.typeParams);if(!o.size)return {returns:e.returns,bindings:{}};if(r){let i=Vr(r),l=i?.typeParams?.length?(({typeParams:u,...p})=>p)(i):r;te(o,l,e.returns,t,L.ReturnType);}Rr(o,e,n,t);let a=$n(o,t);return {returns:b(e.returns,a),bindings:a}}function Nr(e,n,t){let r=new Map,o=(u,p)=>r.set(u,[...r.get(u)??[],p]),a=u=>u?.t==="var"&&n.has(u.name),i=u=>{if(Array.isArray(u))return u.forEach(i);if(!u||typeof u!="object")return;let p=u;if(p.t==="fn")for(let y of p.params)y.variadic&&a(y.type)&&o(y.type.name,f.array(f.unknown));if(p.t==="apply"){let y=$(t,p.name);y&&p.args.forEach((x,s)=>{let h=y.params[s]?.bound;if(!a(x)||!h)return;let v=b(h,ze(y.params,p.args));v.t==="var"&&v.name===x.name||o(x.name,v);});}for(let y of Object.keys(p))i($(p,y));};i(e);let l=new Map;for(let[u,p]of r)l.set(u,p.length===1?p[0]:f.intersection(p));return l}function Rn(e,n={}){let t=Ye(e.infer);te(t,e.check,e.extends,n,L.NoConstraints|L.AlwaysStrict);let r=Nr(e.extends,new Set(t.keys()),n),o={};for(let a of e.infer??[]){let i=t.get(a.name),l=i?.co.length?I(i.co):i?.contra.length?f.intersection(i.contra):void 0,u=a.bound??r.get(a.name);u&&(!l||!z(l,u,n))&&(l=u),w(o,a.name,l??f.unknown);}return o}function Tt(e,n={},t=0){if(!e.infer?.length)return null;let r=Vn(e,n,l=>Tt(l,n,t));if(r!==void 0)return r;if(N(e.check).size>0)return null;let o=Rn(e,n),a=new WeakSet,i=Qe(b(e.extends,o),n,a,t);return Ze(Je(e.check,i,n),()=>Qe(b(e.then,o),n,a,t),()=>Qe(b(e.else,o),n,a,t))}function Qe(e,n={},t=new WeakSet,r=0,o=new Set){let a=r,i=D().maxTypeDepth,l=new Set,u=(s,h)=>h?.length?new Set([...s,...h.map(v=>v.name)]):s,p=(s,h)=>({...s,...s.bound?{bound:x(s.bound,h)}:{},...s.default?{default:x(s.default,h)}:{}}),y=(s,h)=>{let v=u(h,s.typeParams);return {...s,params:s.params.map(O=>({...O,type:x(O.type,v)})),returns:x(s.returns,v),...s.guard?{guard:{...s.guard,type:x(s.guard.type,v)}}:{},...s.typeParams?{typeParams:s.typeParams.map(O=>p(O,v))}:{}}},x=(s,h=l)=>{switch(s.t){case "var":return h.has(s.name)?p(s,h):f.unknown;case "array":return {...s,items:x(s.items,h)};case "tuple":return {...s,elements:s.elements.map(v=>x(v,h))};case "union":return f.union(s.of.map(v=>x(v,h)));case "object":{if(t.has(s))return s;t.add(s);let v={};for(let re in s.props){let oe=s.props[re];w(v,re,{type:x(oe.type,h),optional:oe.optional,...oe.readonly?{readonly:true}:{}});}let O=s.index?{key:s.index.key,value:x(s.index.value,h),...s.index.readonly?{readonly:true}:{}}:void 0;return t.delete(s),O?{t:"object",props:v,index:O}:{t:"object",props:v}}case "fn":{if(t.has(s))return s;t.add(s);let v=y(s,h);return t.delete(s),v}case "overload":return {t:"overload",signatures:s.signatures.map(v=>y(v,h))};case "apply":{if(F(s,n)){let v=W(s,n);if(v.t==="conditional"){if(a>=i)throw new ie;a++;try{let O=x(v,h);if(O.t!=="conditional")return O}finally{a--;}}}return {t:"apply",name:s.name,args:s.args.map(v=>x(v,h))}}case "conditional":{let v=s.infer?.length?Tt(s,n,a):Q(s,n);if(v)return x(v,h);let O=u(h,s.infer);return {t:"conditional",check:x(s.check,h),extends:x(s.extends,O),then:x(s.then,O),else:x(s.else,O),...s.infer?{infer:s.infer.map(re=>p(re,O))}:{},...s.distributive?{distributive:true}:{}}}case "intersection":return U({of:s.of.map(v=>x(v,h))});case "returnType":return j({t:"returnType",fn:x(s.fn,h)});default:return s}};return x(e,o)}var Wr=f.object({}),Nn=(e,n,t="assignable")=>({seen:new WeakMap,exp:new Set,schemes:e,relation:t,assumed:0,explain:n,sourceStack:[],targetStack:[]}),Fn=0;function C(e,n,t){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:t,kind:"type"}),false}function Wn(e,n,t=0){if(t>D().maxInstantiationDepth)return e;if(F(e,n)){let r=W(e,n);if(r.t!=="conditional")return e;let o=Q(r,n);return o?Wn(o,n,t+1):e}if(e.t==="conditional"){let r=Q(e,n);return r?Wn(r,n,t+1):e}return e}function Ar(e,n,t={}){let r=[];return !S(e,n,Nn(t,{path:[],out:r}))&&r.length===0&&r.push({path:[],actual:e,expected:n,kind:"type"}),r}var Ur=new WeakMap,_r=new WeakMap;function $t(e,n,t,r,o){if(e===n)return true;if(Object.keys(t).length>0)return S(e,n,Nn(t,void 0,r));let a=o.get(e)?.get(n);if(a!==void 0)return a;let i=S(e,n,Nn(t,void 0,r)),l=o.get(e);return l||o.set(e,l=new WeakMap),l.set(n,i),i}function z(e,n,t={}){return $t(e,n,t,"assignable",Ur)}function Dr(e,n,t={}){return $t(e,n,t,"comparable",_r)}function Lt(e,n,t={}){return z(e,n,t)&&z(n,e,t)}function Q(e,n){let t=Vn(e,n,r=>Q(r,n));if(t!==void 0)return t;if(e.infer?.length){if(N(e.check).size>0)return null;let r=Wn(e.check,n),o=Rn({...e,check:r},n);return Ze(Je(r,b(e.extends,o),n),()=>b(e.then,o),()=>b(e.else,o))}return N(e.check).size>0||N(e.extends).size>0?null:Ze(Je(e.check,e.extends,n),()=>e.then,()=>e.else)}function Je(e,n,t){let r=M(n,t);return r.t==="any"||r.t==="unknown"?"then":M(e,t).t==="any"?"both":z(e,n,t)?"then":"else"}var Ze=(e,n,t)=>e==="then"?n():e==="else"?t():f.union([n(),t()]);function Vn(e,n,t){if(!e.distributive)return;let r=M(e.check,n),o=r.t==="union"?r.of:r.t==="boolean"?[f.literal(true),f.literal(false)]:void 0;if(!o)return;let a=[];for(let i of o){let l=t({t:"conditional",check:i,extends:Pe(e.extends,e.check,i),then:Pe(e.then,e.check,i),else:Pe(e.else,e.check,i),...e.infer?{infer:e.infer}:{}});if(l===null)return null;a.push(l);}return f.union(a)}var wt=(e,n)=>Me(e,n.schemes);function en(e,n,t,r){if(!t.explain)return S(e,n,t);t.explain.path.push(r);try{return S(e,n,t)}finally{t.explain.path.pop();}}function S(e,n,t){if(Fn>=D().maxTypeDepth)throw new ie;Fn++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return t.relation==="comparable"?!0:C(t,e,n);let r=H(e,t.schemes);if(r!==e)return S(r,n,t);let o=H(n,t.schemes);if(o!==n)return S(e,o,t);if(n.t==="mapped"&&Ce(n))return Hr(e,n,t);if(e.t==="mapped"&&Ce(e)&&n.t==="var")return Qr(e,n,t);if(e.t==="mapped"){let i=wt(e,t);if(i)return S(i,n,t)}if(n.t==="mapped"){let i=wt(n,t);if(i)return S(e,i,t)}if(e.t==="conditional"){let i=Q(e,t.schemes);if(i)return S(i,n,t)}if(n.t==="conditional"){let i=Q(n,t.schemes);if(i)return S(e,i,t)}if(t.relation==="comparable"&&Xr(n,e))return !0;if(n.t==="intersection")return n.of.every(i=>S(e,i,t));if(e.t==="intersection"&&n.t!=="union"){if(zr(e.of,n,t))return !0;if(n.t==="object"){let i=Be(e.of);if(i)return S(i,n,t)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(F(e,t.schemes)||F(n,t.schemes))){let i=`${V(e)}\u2264${V(n)}`;if(t.exp.has(i))return !0;if(Pt(e,t.sourceStack)&&Pt(n,t.targetStack))return t.assumed++,!0;t.exp.add(i),t.sourceStack.push(e),t.targetStack.push(n);let l=S(W(e,t.schemes),W(n,t.schemes),t);return t.sourceStack.pop(),t.targetStack.pop(),t.exp.delete(i),l}return Br(e,n,t)}finally{Fn--;}}var jt=5;function Pt(e,n){if(n.length<jt||e.t!=="apply")return false;let t=0;for(let r of n)if(r.t==="apply"&&r.name===e.name&&++t>=jt)return true;return false}function Br(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=qr(e,n,t);return (!a||t.assumed!==o)&&r.delete(n),a}function zr(e,n,t){let r=t.intersectionSource,o=t.explain;t.intersectionSource=true,t.explain=void 0;try{return e.some(a=>S(a,n,t))}finally{t.intersectionSource=r,t.explain=o;}}function qr(e,n,t){if(e.t==="union")return t.relation==="comparable"?e.of.length===0||e.of.some(r=>S(r,n,t)):e.of.every(r=>S(r,n,t));if(e.t==="boolean"&&n.t==="union")return t.relation==="comparable"?S(f.literal(true),n,t)||S(f.literal(false),n,t):S(f.literal(true),n,t)&&S(f.literal(false),n,t);if(e.t==="conditional")return Kr(e,n,t);if(n.t==="union")return eo(e,n,t);if(e.t==="var"&&!(n.t==="var"&&n.name===e.name))return e.bound?S(e.bound,n,t):C(t,e,n);if(e.t==="nonPrimitive"&&n.t!=="nonPrimitive")return n.t==="object"&&n.index?C(t,e,n):S(Wr,n,t);if(Et(e)&&Et(n))return ao(e,n,t);if(n.t==="overload")return n.signatures.every(r=>S(e,r,t));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:C(t,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Rt(e.value)===n.t?true:C(t,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:C(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:C(t,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?C(t,e,n):S(e.items,n.items,t):e.t==="tuple"?e.readonly&&!n.readonly?C(t,e,n):yn(e).every((r,o)=>en(r,n.items,t,o)):C(t,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return C(t,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return C(t,e,n);for(let r=0;r<e.elements.length;r++)if(!en(e.elements[r],n.elements[r],t,r))return false;return true}return Xn(e,n,(r,o)=>S(r,o,t),t.relation==="comparable")}case "object":if(e.t==="object")return to(e,n,t);if(Object.keys(n.props).length===0&&!n.index)return e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:C(t,e,n);if((e.t==="array"||e.t==="tuple")&&n.index){let r=e.t==="array"?[e.items]:yn(e);return n.index.key==="number"&&Object.values(n.props).every(o=>o.optional)&&r.every(o=>S(o,n.index.value,t))?true:C(t,e,n)}return C(t,e,n);case "fn":return e.t==="fn"?Xe(e,n,t):C(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"&&S(e.of,n.of,t)&&S(n.of,e.of,t);case "index":return e.t==="index"&&S(e.obj,n.obj,t)&&S(n.obj,e.obj,t)&&S(e.key,n.key,t)&&S(n.key,e.key,t);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&S(e.over,n.over,t)&&S(n.over,e.over,t)&&S(e.body,n.body,t)&&S(n.body,e.body,t);case "conditional":return C(t,e,n);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((r,o)=>S(r,n.args[o],t));case "returnType":return e.t==="returnType"&&S(e.fn,n.fn,t)&&S(n.fn,e.fn,t);case "parameters":return e.t==="parameters"&&S(e.fn,n.fn,t)&&S(n.fn,e.fn,t)}}var Rt=e=>typeof e;function Kr(e,n,t){return n.t==="conditional"&&S(e.check,n.check,t)&&S(n.check,e.check,t)&&S(e.extends,n.extends,t)&&S(n.extends,e.extends,t)&&S(e.then,n.then,t)&&S(e.else,n.else,t)?true:S(Zr(e),n,t)}var Ce=e=>N(e.over).size>0;function Hr(e,n,t){if(e.t==="mapped"&&Ce(e)&&Gr(e,n,t)||n.optional&&Yr(e))return true;if(!n.excludeOptional){let r=n.body;if(r.t==="index"&&r.key.t==="var"&&r.key.name===n.key&&Lt(r.obj,e,t.schemes))return true;if(!(e.t==="mapped"&&Ce(e))){let o=f.keyof(e),a=n.optional?f.intersection([n.over,o]):S(n.over,o,t)?n.over:null;if(a!==null&&!Jr(a)&&S(f.index(e,a),b(r,{[n.key]:a}),t))return true}}return C(t,e,n)}function Qr(e,n,t){return !e.optional&&S(f.keyof(n),e.over,t)&&S(e.body,f.index(n,f.var(e.key)),t)?true:C(t,e,n)}function Gr(e,n,t){return t.relation!=="comparable"&&Mt(e)>Mt(n)?false:S(n.over,e.over,t)&&S(b(e.body,{[e.key]:f.var(n.key)}),n.body,t)}var Ot=e=>e.excludeOptional?-1:e.optional?1:0;function Mt(e){let n=Ot(e);if(n!==0)return n;let t=e.over.t==="keyof"?e.over.of:e.modifiers;return t?.t==="mapped"&&Ce(t)?Ot(t):0}var Yr=e=>e.t==="object"&&Object.keys(e.props).length===0&&!e.index,Jr=e=>e.t==="union"&&e.of.length===0,Zr=e=>e.then.t==="any"?e.else:e.else.t==="any"?e.then:f.union([e.then,e.else]);function Xr(e,n){switch(n.t){case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Rt(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 eo(e,n,t){let r=t.explain;if(!r)return n.of.some(i=>S(e,i,t));t.explain=void 0;let o;try{o=n.of.some(i=>S(e,i,t));}finally{t.explain=r;}if(o)return true;let a=no(e,n,t);return a?S(e,a,t):C(t,e,n)}function no(e,n,t){if(e.t!=="object")return null;let r=n.of.map(o=>M(o,t.schemes));for(let o in e.props){let a=e.props[o].type;if(a.t!=="literal")continue;let i=t.explain;t.explain=void 0;let l;try{l=n.of.filter((u,p)=>{let y=r[p];if(y.t!=="object")return !1;let x=B(y.props,o);return !!x&&S(a,x.type,t)});}finally{t.explain=i;}if(l.length===1)return l[0]}return null}function to(e,n,t){let r=false;for(let o in n.props)if(!(n.props[o].optional||B(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],i=B(e.props,o);if(!i)continue;if(i.optional&&!a.optional&&t.relation==="assignable")return false;let l=a.optional?K(i.type).type:i.optional?I([i.type,f.undefined]):i.type;if(!en(l,a.type,t,o))return false}return !(n.index&&!ro(e,n.index,t))}function ro(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&&!De(o))continue;let a=e.props[o],i=a.optional?A(a.type):a.type;if(!en(i,n.value,t,o))return false}}return !e.index||S(e.index.value,n.value,t)}var Vt=e=>{let n=e.params[e.params.length-1];return n?.variadic?n:void 0},oo=e=>{let n=e.params.findIndex(t=>t.optional||t.variadic);return n<0?e.params.length:n};function Ft(e,n){let t=Vt(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 It=(e,n)=>{let t=Ft(e,n);return t===void 0?t:e.params[n]?.optional?A(t):t},Et=e=>e.t==="fn"||e.t==="overload";function ao(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?Ct(r[0],o[0],t,t.relation==="comparable"):o.every(a=>r.some(i=>Ct(i,a,t,true)))}function Ct(e,n,t,r){if(r)return Xe(Ee(e),Ee(n),t);let o=vn(n,N(e));return e.typeParams?.length?Xe(Ln(e,o,t.schemes),o,t):Xe(e,o,t)}function Xe(e,n,t){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!S(e.returns,n.returns,t)||!Vt(n)&&oo(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=It(e,o),i=It(n,o);if(a&&i&&!S(i,a,t))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!S(e.guard.type,n.guard.type,t)))}var io=e=>e.t==="object"&&!e.index&&Object.values(e.props).every(n=>n.optional);function I(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let t=D().maxUnionMembers;if(n.length>t)throw new le(n.length,t);if(n.some(o=>o.t==="any"))return f.any;let r=[...n];for(let o=r.length-1;o>=0;o--){let a=r[o];r.some((l,u)=>u!==o&&!io(l)&&z(a,l)&&(u<o||!z(l,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(f.boolean),r.length=0,r.push(...o);}return r.length===1?r[0]:{t:"union",of:r}}function lo(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":case "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 i of a.signatures){i.typeParams?.forEach(o);for(let l of i.params)o(l.type);o(i.returns),i.guard&&o(i.guard.type);}break;case "object":for(let i in a.props)o(a.props[i].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 i of a.params)o(i.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 uo=f.union([]);function Nt(e,n){return nn(e,n,new WeakMap)}function co(e){return e.reduce(Nt,uo)}function nn(e,n,t){if(e.t==="any"||n.t==="any")return f.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 po(e,n,t);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:f.unknown};return Wt(t,e,n,o),o.items=nn(e.items,n.items,t),o}return I([e,n])}function po(e,n,t){let r={t:"object",props:{}};Wt(t,e,n,r);for(let o in e.props){let a=e.props[o],i=$(n.props,o);if(i){let l=nn(a.type,i.type,t);w(r.props,o,{type:l,...a.optional||i.optional?{optional:true}:{},...a.readonly||i.readonly?{readonly:true}:{}});}else w(r.props,o,{type:a.type,optional:true,...a.readonly?{readonly:true}:{}});}for(let o in n.props){if(ve(e.props,o))continue;let a=n.props[o];w(r.props,o,{type:a.type,optional:true,...a.readonly?{readonly:true}:{}});}return e.index&&n.index&&e.index.key===n.index.key&&(r.index={key:e.index.key,value:nn(e.index.value,n.index.value,t),...e.index.readonly||n.index.readonly?{readonly:true}:{}}),r}function Wt(e,n,t,r){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(t,r);}var fo=4;function so(e,n={}){return $e(e,n,0)}function $e(e,n,t){let r=M(H(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($e(r.elements[a],n,t));return o}case "object":{if(t>=fo)return {};let o={};for(let a of Object.keys(r.props)){let i=r.props[a];i.optional||w(o,a,$e(i.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:$e(o,n,t)}case "intersection":{let o=r.of.map(i=>$e(i,n,t));if(!o.every(mo))return null;let a={};for(let i of o)for(let l of Object.keys(i))w(a,l,i[l]);return a}default:return null}}var mo=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);var yo=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e),At=e=>{let n=e.indexOf("@");return n<0?e:e.slice(0,n)},So={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"])},Ut=(e,n)=>So[e].has(n);function on(e,n=new WeakSet){return R(e,{seen:n,infer:new Map})}function ho(e){return tn(e,{seen:new WeakSet,infer:new Map})}function Un(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?Un(e.of[0],n):"union";case "intersection":return e.of.length===1?Un(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 ee(e,n,t){let r=R(n,t);return Ut(e,Un(n,t))?`(${r})`:r}function tn(e,n){return e.map((t,r)=>{let o=R(t,n);return r===0&&go(t)?`(${o})`:o}).join(", ")}var go=e=>e.t==="fn"&&!!e.typeParams?.length||e.t==="overload"&&e.signatures.length===1&&!!e.signatures[0].typeParams?.length;function xo(e,n){return e?.length?`<${e.map(t=>bo(t,n)).join(", ")}>`:""}function bo(e,n){let t=e.bound?` extends ${R(e.bound,n)}`:"",r=e.default?` = ${R(e.default,n)}`:"";return `${e.name}${t}${r}`}function rn(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 An(e,n,t){let r=rn(t,(e.typeParams??[]).map(l=>l.name)),o=e.params.map(l=>{let u=l.variadic?"...":"",p=l.optional&&!l.variadic?"?":"";return `${u}${l.name}${p}: ${R(l.type,r)}`}).join(", "),a=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${R(e.guard.type,r)}`:R(e.returns,r),i=xo(e.typeParams,r);return n==="=>"?`${i}(${o}) => ${a}`:`${i}(${o}): ${a}`}function R(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 ${R(r.bound,rn(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=`${ee("postfix",e.items,n)}[]`;return e.readonly?`readonly ${r}`:r}case "tuple":{let o=`[${e.elements.map((a,i)=>{let l=e.flags?.[i]??"req";return l==="rest"?`...${ee("postfix",a,n)}[]`:l==="optional"?`${ee("postfix",a,n)}?`:R(a,n)}).join(", ")}]`;return e.readonly?`readonly ${o}`:o}case "union":{if(e.of.length===0)return "never";if(e.of.length===1)return R(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>ee("union",o,n)).join(" | ");return t.delete(e),r}case "intersection":{if(e.of.length===1)return R(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>ee("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])=>{let i=yo(o)?o:JSON.stringify(o);return `${a.readonly?"readonly ":""}${i}${a.optional?"?":""}: ${R(a.type,n)}`});return e.index&&r.push(`${e.index.readonly?"readonly ":""}[k: ${e.index.key}]: ${R(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=An(e,"=>",n);return t.delete(e),r}case "overload":{if(e.signatures.length===1)return An(e.signatures[0],"=>",n);if(t.has(e))return "\u2026";t.add(e);let r=e.signatures.map(o=>An(o,":",n));return t.delete(e),`{ ${r.join("; ")} }`}case "apply":{let r=At(e.name);if(e.args.length===0)return r;if(t.has(e))return "\u2026";t.add(e);let o=`${r}<${tn(e.args,n)}>`;return t.delete(e),o}case "keyof":return `keyof ${ee("operand",e.of,n)}`;case "index":return `${ee("postfix",e.obj,n)}[${R(e.key,n)}]`;case "mapped":{if(t.has(e))return "\u2026";t.add(e);let r=e.readonly?"readonly ":e.excludeReadonly?"-readonly ":"",o=e.optional?"?":e.excludeOptional?"-?":"",a=rn(n,[e.key]),i=`{ ${r}[${e.key} in ${R(e.over,n)}]${o}: ${R(e.body,a)} }`;return t.delete(e),i}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(l=>[l.name,l])])}:n,a=rn(n,r.map(l=>l.name)),i=`${ee("check",e.check,n)} extends ${ee("extends",e.extends,o)} ? ${R(e.then,a)} : ${R(e.else,a)}`;return t.delete(e),i}case "returnType":return `ReturnType<${tn([e.fn],n)}>`;case "parameters":return `Parameters<${tn([e.fn],n)}>`}}function _t(e){if(e.length===0)return "value";let n=e[e.length-1];if(typeof n=="number"){let t=e.slice(0,-1);return t.length?`property '${t.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function vo(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?`${_t(t.path)} is missing`:`${_t(t.path)}: expected '${on(t.expected)}', got '${on(t.actual)}'`).join("; ")}function me(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),me(K(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(t=>me(K(t).type,n)));case "object":{if(n.has(e))return true;n.add(e);let t=Object.values(e.props).every(o=>me(K(o.type).type,n)),r=!e.index||me(K(e.index.value).type,n);return t&&r}case "union":return n.has(e)?true:(n.add(e),e.of.every(t=>me(t,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(t=>me(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 ko(e,n,t={}){let r=e;for(let o of n){let a=ye(r,o,t);if(a===null)return null;r=a;}return {type:r,completions:Le(r,t)}}var To=e=>e==="[]"||/^\d+$/.test(e);function ye(e,n,t,r=new Set){if(e.t==="var")return e.bound?ye(M(e,t),n,t,r):null;if(e.t==="mapped"){let a=M(e,t);return a===e?null:ye(a,n,t,r)}if(F(e,t)){let a=V(e);if(r.has(a))return null;r.add(a);let i=ye(W(e,t),n,t,r);return r.delete(a),i}let o=j(e);if(o!==e)return ye(o,n,t,r);switch(e.t){case "any":return e;case "object":{let a=B(e.props,n);return a?a.optional?I([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return To(n)?e.items:null;case "tuple":{let a=e.flags?.findIndex(u=>u!=="req")??-1,i=Number(n);if(!(Number.isInteger(i)&&i>=0))return null;if(a<0)return i<e.elements.length?e.elements[i]:null;if(i<a)return e.elements[i];let l=e.elements.slice(a);return l.length?I(l):null}case "union":{let a=[];for(let i of e.of){let l=ye(i,n,t,r);if(l===null)return null;a.push(l);}return a.length?I(a):null}case "intersection":{let a=e.of.map(i=>ye(i,n,t,r)).filter(i=>i!==null);return a.length?U({of:a}):null}default:return null}}function wo(e,n,t={}){let r=Se(e,n,t,new Set);return r?.readonly?r.via:null}var jo=e=>e!==""&&String(Number(e))===e;function Se(e,n,t,r){if(e.t==="var")return e.bound?Se(M(e,t),n,t,r):null;if(e.t==="mapped"){let l=M(e,t);return l===e?null:Se(l,n,t,r)}if(F(e,t)){let l=V(e);if(r.has(l))return null;r.add(l);let u=Se(W(e,t),n,t,r);return r.delete(l),u}let o=j(e);if(o!==e)return Se(o,n,t,r);let a="name"in n?n.name:null,i="base"in n?n.base==="number":n.element&&jo(n.name);switch(e.t){case "object":{let l=a===null?void 0:B(e.props,a);if(l)return {via:"property",readonly:!!l.readonly};let u=e.index;return u&&(u.key==="string"||i)?{via:"index",readonly:!!u.readonly}:null}case "array":return i?{via:"index",readonly:!!e.readonly}:null;case "tuple":{if(!i)return null;let u=(e.flags??[]).indexOf("rest"),p=u<0?e.elements.length:u,y=a===null?-1:Number(a);return Number.isInteger(y)&&y>=0&&y<p?{via:"property",readonly:!!e.readonly}:u>=0||a===null?{via:"index",readonly:!!e.readonly}:null}case "union":{let l=[];for(let p of e.of){let y=Se(p,n,t,r);if(y===null)return null;l.push(y);}let u=l.some(p=>p.readonly);return l.some(p=>p.via==="property")?{via:"property",readonly:u}:{via:"index",readonly:u}}case "intersection":{let l=e.of.map(p=>Se(p,n,t,r)).filter(p=>p!==null),u=l.filter(p=>p.via==="property");return u.length?{via:"property",readonly:u.some(p=>p.readonly)}:l.length?{via:"index",readonly:l.every(p=>p.readonly)}:null}default:return null}}function Le(e,n,t=new WeakSet,r=new Set){if(e.t==="var")return e.bound?Le(M(e,n),n,t,r):[];if(F(e,n)){let a=V(e);if(r.has(a))return [];r.add(a);let i=Le(W(e,n),n,t,r);return r.delete(a),i}let o=j(e);if(o!==e)return Le(o,n,t,r);switch(e.t){case "object":return Object.entries(e.props).map(([a,i])=>({key:a,type:i.type,optional:!!i.optional}));case "array":return [{key:"[]",type:e.items,optional:false}];case "tuple":return e.elements.map((a,i)=>({key:String(i),type:a,optional:false}));case "union":case "intersection":{if(t.has(e))return [];t.add(e);let a=[],i=new Set;for(let l of e.of)for(let u of Le(l,n,t,r))i.has(u.key)||(i.add(u.key),a.push(u));return t.delete(e),a}default:return []}}var Po="1.8.0";export{Ln as $,Zn as A,he as B,b as C,vn as D,N as E,ot as F,ze as G,F as H,W as I,M as J,H as K,Tn as L,Ke as M,ut as N,mr as O,yr as P,Ie as Q,mt as R,L as S,Ye as T,yt as U,St as V,ht as W,Ee as X,gt as Y,te as Z,$n as _,Gt as a,Fr as aa,Yt as b,Qe as ba,Jt as c,Ar as ca,Ve as d,z as da,Zt as e,Dr as ea,Xt as f,Lt as fa,D as g,Q as ga,ie as h,Ft as ha,Re as i,I as ia,er as j,lo as ja,le as k,Nt as ka,ve as l,co as la,$ as m,so as ma,w as n,At as na,f as o,Ut as oa,j as p,on as pa,A as q,ho as qa,Ue as r,vo as ra,ue as s,me as sa,Ne as t,ko as ta,_e as u,wo as ua,lr as v,Po as va,B as w,K as x,De as y,Jn as z};