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