@tslite/checker 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ 'use strict';var Un=100,Dn=50,zn=5e6,fe={maxTypeDepth:100,maxInstantiationDepth:50,maxInstantiationCount:5e6,maxUnionMembers:1e3,maxOverloadSignatures:200},A=fe;function qn(e){A={...fe,...e};}function Kn(){A=fe;}function M(){return A}var q=class extends Error{constructor(n=A.maxTypeDepth){super(`excessive stack depth comparing types (limit ${n}) \u2014 the comparison is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},pe=class extends Error{constructor(t,r=t==="depth"?A.maxInstantiationDepth:A.maxInstantiationCount){super(`type instantiation is excessively deep and possibly infinite (${t} limit ${r})`);this.kind=t;this.name="InstantiationLimitError";}};function Qn(){Ie=0;}var Ie=0;function Ye(){if(Ie>=A.maxInstantiationCount)throw new pe("count");Ie++;}var K=class extends Error{constructor(n,t=A.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${t})`),this.name="UnionTooComplexError";}};var F=e=>Object.freeze(e),s={any:F({t:"any"}),unknown:F({t:"unknown"}),string:F({t:"string"}),number:F({t:"number"}),boolean:F({t:"boolean"}),null:F({t:"null"}),undefined:F({t:"undefined"}),void:F({t:"void"}),nonPrimitive:F({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"?V(r):r):e,...n&&n.some(r=>r!=="req")?{flags:n}:{},...t?{readonly:true}:{}}),fn:(e,n,t)=>({t:"fn",params:e,returns:n,...t?.length?{typeParams:t}:{}}),guard:(e,n,t=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:t,type:n}}),overload:e=>({t:"overload",signatures:e}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,t,r=false)=>({t:"mapped",key:e,over:n,body:t,optional:r}),conditional:(e,n,t,r,o)=>({t:"conditional",check:e,extends:n,then:t,else:r,...o&&o.length?{infer:o}:{}}),intersection:e=>P({of:e}),and:(e,n)=>P({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=Yn(n);return r.length===1?r[0]:{t:"union",of:r}}};function Hn(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 Yn(e){let n=[],t=new Map;for(let u of e){let l=Hn(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 g(e){return e.t==="keyof"?Ee(e.of)??e:e.t==="index"?ye(e.obj,e.key)??e:e.t==="returnType"?Gn(e.fn)??e:e.t==="parameters"?Jn(e.fn)??e:e}var de={t:"union",of:[]},Oe=e=>e.t==="union"&&e.of.length===0;function Gn(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function V(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 Jn(e){let n=e.t==="fn"?e:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1]:null;if(!n)return null;let t=[],r=[];for(let o of n.params)o.variadic?(t.push(o.type.t==="array"?o.type.items:o.type),r.push("rest")):o.optional?(t.push(V(o.type)),r.push("optional")):(t.push(o.type),r.push("req"));return s.tuple(t,r)}var Pe=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Ge(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 Je(e){return e.t==="null"||e.t==="undefined"?e.t:e.t==="nonPrimitive"?"nonPrimitive":Pe(e)?"scalar":e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"?"object":null}var Ze=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function P(e){let n=[],t=i=>{let u=g(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(Oe))return de;let r=i=>n.some(u=>Je(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 de;if(n.some(i=>Je(i)==="object"&&!Ze(i)))for(let i=n.length-1;i>=0;i--)Ze(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>M().maxUnionMembers)throw new K(i);return s.union(n[o].of.map(u=>P({of:n.map((l,c)=>c===o?u:l)})))}let a=[];for(let i of n){if(i.t==="any")return s.any;if(Oe(i))return de;if(i.t!=="unknown"){if(Pe(i)){let u=false;for(let l=a.length-1;l>=0;l--){let c=a[l];if(Pe(c)){if(Ge(c,i)){u=true;break}if(Ge(i,c))a.splice(l,1);else return de}}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 Ee(e){if(e.t==="union"&&e.of.length>0){let t=e.of.map(Ee);return t.some(r=>r===null)?null:Zn(t)}if(e.t==="intersection"){let t=e.of.map(Ee);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 Zn(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 Q=Object.freeze({t:"unknown"}),me=e=>e===Q,Xe=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 ye(e,n){if(e=g(e),n=g(n),n.t==="union"){let t=[],r=false;for(let o of n.of){let a=ye(e,o);if(a===null)return null;me(a)?r=true:t.push(a);}return r?Q:s.union(t)}if(Xe(n))return null;if(e.t==="any"||Oe(e))return e;if(e.t==="intersection"){let t=[];for(let r of e.of){let o=ye(g(r),n);if(o===null)return null;me(o)||t.push(o);}return t.length===0?Q:t.length===1?t[0]:P({of:t})}if(e.t==="union"){let t=[];for(let r of e.of){let o=g(r);if(o.t==="any")return o;let a=ye(o,n);if(a===null)return null;if(me(a))return Q;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=R(e.props,String(n.value));return t?t.optional?V(t.type):t.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:Q}if(n.t==="string"||n.t==="number"){let r=n.t==="number"&&e.index?.key==="number"||false||e.index?.key==="string"?e.index:void 0;if(r)return r.value}}if(e.t==="tuple"){let t=e.flags?.findIndex(o=>o==="rest")??-1,r=t>=0?t:e.elements.length;if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]:t>=0?e.elements[t]: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:Xe(e)?null:Q}var Se=e=>(e.t==="object"||e.t==="array"||e.t==="tuple")&&!!e.fromLiteral,Xn=e=>e.t==="object"||e.t==="array"||e.t==="tuple"?e.fromLiteral?e:{...e,fromLiteral:true}:e,et=Object.prototype.hasOwnProperty,R=(e,n)=>et.call(e,n)?e[n]:void 0;function _(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 $e=e=>(+e).toString()===e;var en=(e,n)=>e.flags?.[n]??"req",H=(e,n)=>en(e,n)==="optional"?V(e.elements[n]):e.elements[n],Le=e=>e.elements.map((n,t)=>H(e,t)),nn=e=>e.flags?.[e.elements.length-1]==="rest",Z=e=>nn(e)?e.elements.length-1:-1,oe=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(t=>t!=="req");return n<0?e.elements.length:n};function tn(e,n,t,r=false){let o=Z(e),a=Z(n);if(!r&&oe(e)<oe(n))return false;if(a<0){if(o>=0)return false;let c=oe(n);return e.elements.length<c||e.elements.length>n.elements.length?false:e.elements.every((h,S)=>t(H(e,S),H(n,S)))}let i=n.elements[a],u=c=>c<a?H(n,c):i;if(o<0)return e.elements.length<oe(n)?false:e.elements.every((c,h)=>t(H(e,h),u(h)));if(o===0&&a!==0||o<oe(n))return false;let l=e.elements[o];for(let c=0;c<o;c++)if(!t(H(e,c),u(c)))return false;for(let c=o;c<a;c++)if(!t(l,H(n,c)))return false;return t(l,i)}function m(e,n,t=new WeakSet){return Ye(),nt(e,n,t)}function nt(e,n,t){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!rt(E(e),n))return e;switch(e.t){case "var":{let r=n[e.name];return r||Ce(e,n,t)}case "array":return {...e,items:m(e.items,n,t)};case "tuple":{let r=e.elements.map(o=>m(o,n,t));return {...e,elements:r}}case "union":return s.union(e.of.map(r=>m(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];r[a]={type:m(i.type,n,t),optional:i.optional};}let o=e.index?{key:e.index.key,value:m(e.index.value,n,t)}:void 0;return t.delete(e),o?{t:"object",props:r,index:o}:{t:"object",props:r}}case "fn":{if(t.has(e))return e;t.add(e);let r=Me(e,n,t);return t.delete(e),r}case "overload":return {t:"overload",signatures:e.signatures.map(r=>Me(r,n,t))};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>m(r,n,t))};case "keyof":return g({t:"keyof",of:m(e.of,n,t)});case "index":return g({t:"index",obj:m(e.obj,n,t),key:m(e.key,n,t)});case "mapped":{let r=Re([s.typeParam(e.key)],n,E(e),t),o={t:"mapped",key:r.decls[0].name,over:m(e.over,n,t),body:m(e.body,r.inner,t),optional:e.optional};return X(o)??o}case "conditional":{if(e.check.t==="var"){let o=e.check.name,a=n[o],i=a?g(a):void 0,u=i?.t==="union"?i.of:i?.t==="boolean"?[s.literal(true),s.literal(false)]:null;if(u)return {t:"union",of:u.map(l=>m(e,{...n,[o]:l},t))}}let r=e.infer?.length?Re(e.infer,n,E(e),t):{inner:n,decls:void 0};return {t:"conditional",check:m(e.check,n,t),extends:m(e.extends,r.inner,t),then:m(e.then,r.inner,t),else:m(e.else,r.inner,t),...r.decls?{infer:r.decls}:{}}}case "intersection":return P({of:e.of.map(r=>m(r,n,t))});case "returnType":return g({t:"returnType",fn:m(e.fn,n,t)});case "parameters":return g({t:"parameters",fn:m(e.fn,n,t)});default:return e}}function Ce(e,n,t,r=e.name){return !e.bound&&!e.default&&r===e.name?e:{...e,name:r,...e.bound?{bound:m(e.bound,n,t)}:{},...e.default?{default:m(e.default,n,t)}:{}}}function Me(e,n,t,r){let o=e.typeParams?.length?Re(e.typeParams,n,E(e),t,r):{inner:n,decls:void 0},a=o.inner;return {...e,params:e.params.map(i=>({...i,type:m(i.type,a,t)})),returns:m(e.returns,a,t),...e.guard?{guard:{...e.guard,type:m(e.guard.type,a,t)}}:{},...o.decls?{typeParams:o.decls}:{}}}function Ne(e,n){return e.typeParams?.some(t=>n.has(t.name))?Me(e,{},new WeakSet,n):e}function Re(e,n,t,r,o=new Set){let a=new Set(e.map(d=>d.name)),i={},u=new Set;for(let d in n)if(!a.has(d)&&(i[d]=n[d],t.has(d)))for(let y of E(n[d]))u.add(y);let l=e.filter(d=>u.has(d.name)||o.has(d.name));if(l.length===0)return {inner:i,decls:e.map(d=>Ce(d,i,r))};let c=new Set([...a,...t,...u,...o]),h=new Map;for(let d of l){let y=1;for(;c.has(`${d.name}_${y}`);)y++;let w=`${d.name}_${y}`;c.add(w),h.set(d.name,w);}let S={};for(let[d,y]of h)S[d]={t:"var",name:y};let p={...i};for(let d of l){let y=h.get(d.name);p[d.name]={t:"var",name:y,...d.bound?{bound:m(d.bound,{...i,...S},r)}:{}};}return {inner:p,decls:e.map(d=>Ce(d,p,r,h.get(d.name)??d.name))}}var tt=new Set,rn=new WeakMap;function E(e){let n=rn.get(e);if(n)return n;let t=new Set;x(e,t,new WeakSet);let r=t.size===0?tt:t;return rn.set(e,r),r}function We(e,n,t){let r=new Set;t(r);for(let o of r)e.includes(o)||n.add(o);}function on(e,n,t){let r=e.typeParams??[];We(r.map(o=>o.name),n,o=>{for(let a of r)x(a,o,t);for(let a of e.params)x(a.type,o,t);x(e.returns,o,t),e.guard&&x(e.guard.type,o,t);});}function x(e,n,t){switch(e.t){case "var":n.add(e.name),e.bound&&x(e.bound,n,t),e.default&&x(e.default,n,t);return;case "array":x(e.items,n,t);return;case "tuple":for(let r of e.elements)x(r,n,t);return;case "union":for(let r of e.of)x(r,n,t);return;case "object":if(t.has(e))return;t.add(e);for(let r in e.props)x(e.props[r].type,n,t);e.index&&x(e.index.value,n,t);return;case "fn":if(t.has(e))return;t.add(e),on(e,n,t);return;case "overload":for(let r of e.signatures)on(r,n,t);return;case "apply":for(let r of e.args)x(r,n,t);return;case "keyof":x(e.of,n,t);return;case "index":x(e.obj,n,t),x(e.key,n,t);return;case "mapped":x(e.over,n,t),We([e.key],n,r=>x(e.body,r,t));return;case "conditional":{x(e.check,n,t);let r=e.infer??[];We(r.map(o=>o.name),n,o=>{for(let a of r)x(a,o,t);x(e.extends,o,t),x(e.then,o,t),x(e.else,o,t);});return}case "intersection":for(let r of e.of)x(r,n,t);return;case "returnType":case "parameters":x(e.fn,n,t);return;default:return}}function rt(e,n){if(e.size===0)return false;for(let t of e)if(t in n)return true;return false}function Fe(e){let n=[];for(let a of e){let i=g(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;for(let l of n){let c=l.props[a];c&&(i.push(c.type),c.optional||(u=false));}r[a]={type:P({of:i}),optional:u};}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:P({of:[o.value,a.index.value]})}:a.index);return o?{t:"object",props:r,index:o}:{t:"object",props:r}}function X(e,n=g){if(e.over.t==="keyof"){let a=n(e.over.of),i=a.t==="intersection"?Fe(a.of)??a:a;if(i.t==="object"){let u={};for(let c of Object.keys(i.props)){let h=e.optional||i.props[c].optional;u[c]={type:m(e.body,{[e.key]:s.literal(c)}),...h?{optional:true}:{}};}let l=i.index?.key;return l===void 0?{t:"object",props:u}:{t:"object",props:u,index:{key:l,value:m(e.body,{[e.key]:l==="number"?s.number:s.string})}}}}let t=g(e.over);if(t.t==="string"||t.t==="number")return {t:"object",props:{},index:{key:t.t,value:m(e.body,{[e.key]:t})}};let r=ot(t);if(r===null)return null;let o={};for(let a of r)o[a]={type:m(e.body,{[e.key]:s.literal(a)}),optional:e.optional};return {t:"object",props:o}}function ot(e){if(e.t==="literal"&&typeof e.value=="string")return [e.value];if(e.t==="union"){let n=[];for(let t of e.of)if(t.t==="literal"&&typeof t.value=="string")n.push(t.value);else return null;return n}return null}function an(e){let n=e.length;for(;n>0&&e[n-1].default;)n--;return {min:n,max:e.length}}var un=(e,n)=>{let{min:t,max:r}=an(e);return n>=t&&n<=r};function ln(e,n){let t={};return e.forEach((r,o)=>{o<n.length?t[r.name]=n[o]:r.default&&(t[r.name]=m(r.default,t));}),t}function $(e,n){if(e.t!=="apply")return false;let t=n[e.name];return t!==void 0&&un(t.params,e.args.length)}function L(e,n){if(e.t!=="apply")return e;let t=n[e.name];return !t||!un(t.params,e.args.length)?e:m(t.body,ln(t.params,e.args))}function I(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?"?":""}:${I(e.props[r].type)}`).join(","),t=e.index?`,[${e.index.key}]:${I(e.index.value)}`:"";return `{${n}${t}}`}case "array":return `[${I(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(I).join(",")})`;case "union":return `(${e.of.map(I).sort().join("|")})`;case "fn":return `${e.typeParams?.length?`<${e.typeParams.map(t=>t.name).join(",")}>`:""}(${e.params.map(t=>I(t.type)).join(",")})=>${e.guard?`is${e.guard.param}:${I(e.guard.type)}`:I(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(I).join(",")}>`;case "intersection":return `&(${e.of.map(I).sort().join("&")})`;case "returnType":return `RT<${I(e.fn)}>`;default:return e.t}}var cn=()=>M().maxInstantiationDepth;function O(e,n={},t=0){if(t>cn())return e;if(e.t==="var")return e.bound?O(e.bound,n,t+1):e;if($(e,n))return O(L(e,n),n,t+1);if(e.t==="mapped"){let r=X(e,o=>O(o,n,t+1));if(r)return O(r,n,t+1)}if(e.t==="intersection")return P(e);if(e.t==="union"){let r=e.of.flatMap(a=>{let i=O(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 ee(e,n,t=0){if(t>cn())return e;let r=U(e,n);if(r!==e)return ee(r,n,t+1);let o=O(e,n,t);return o===e?e:ee(o,n,t+1)}function U(e,n={}){let t=g(e);if(t!==e)return t;switch(e.t){case "keyof":{let r=ee(e.of,n);return r===e.of?e:g({...e,of:r})}case "index":{let r=ee(e.obj,n),o=ee(e.key,n);return r===e.obj&&o===e.key?e:g({...e,obj:r,key:o})}case "returnType":{let r=ee(e.fn,n);return r===e.fn?e:g({...e,fn:r})}default:return e}}var he=e=>typeof e=="string"?s.string:typeof e=="number"?s.number:s.boolean;function Be(e){return e.t==="literal"&&e.fresh?he(e.value):e}function fn(e){if(e.t==="literal")return e.fresh?he(e.value):e;if(e.t==="union"){let n=e.of.map(fn);return n.some((t,r)=>t!==e.of[r])?v(n):e}return e}function dn(e){if(e.t==="literal")return he(e.value);if(e.t==="union"){let n=e.of.map(dn);return n.some((t,r)=>t!==e.of[r])?v(n):e}return e}function at(e){return C(e,new WeakSet)}function it(e){switch(e.t){case "array":return {t:"array",items:C(e.items,new WeakSet),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>C(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return mn(e,new WeakSet);case "fn":case "overload":return C(e,new WeakSet);default:return e}}function C(e,n){if(e.t==="literal")return e.fresh?he(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:C(e.items,n),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(t=>C(t,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return n.add(e),mn(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(t=>C(t,n))};case "fn":return n.add(e),{...e,params:e.params.map(t=>({...t,type:C(t.type,n)})),returns:C(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:C(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(t=>C(t,n))};default:return e}}function mn(e,n){let t={};for(let i in e.props)t[i]={type:C(e.props[i].type,n),optional:e.props[i].optional};let r=e.index?{key:e.index.key,value:C(e.index.value,n)}:void 0,o=e.fromLiteral?{fromLiteral:true}:{},a=e.hasSpread?{hasSpread:true}:{};return r?{t:"object",props:t,index:r,...o,...a}:{t:"object",props:t,...o,...a}}function yn(e){if(!e.siblings){let n=[];for(let t of yn(e.parent)){if(t.t!=="object"||!t.fromLiteral)continue;let r=R(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 ut(e){if(!e.propNames){let n=new Set;for(let t of yn(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 lt=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function ct(e,n,t){let r={};for(let a in e.props){let i=e.props[a],u=Y(i.type,n&&{parent:n,propertyName:a},t);r[a]=u===i.type?i:{...i,type:u};}if(n)for(let a of ut(n))R(r,a)||(r[a]={type:s.undefined,optional:true});let o=e.index?{key:e.index.key,value:Y(e.index.value,void 0,t)}:void 0;return o?{t:"object",props:r,index:o}:{t:"object",props:r}}var sn=new WeakMap;function ne(e,n){let t=sn.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=>ne(o.type,n))||!!e.index&&ne(e.index.value,n);break;case "array":r=!!e.fromLiteral||ne(e.items,n);break;case "tuple":r=!!e.fromLiteral||e.elements.some(o=>ne(o,n));break;case "union":case "intersection":r=e.of.some(o=>ne(o,n));break}return n.delete(e),sn.set(e,r),r}var pn=new WeakMap;function Y(e,n,t){if(!ne(e,new WeakSet))return e;if(!n){let o=pn.get(e);if(o)return o}if(t.has(e))return e;t.add(e);let r=st(e,n,t);return t.delete(e),n||pn.set(e,r),r}function st(e,n,t){switch(e.t){case "object":return e.fromLiteral?ct(e,n,t):e;case "union":{let r=n??{siblings:e.of},o=e.of.map(a=>a.t==="null"||a.t==="undefined"?a:Y(a,r,t));return o.some(lt)?v(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=Y(a,void 0,t);return i!==a&&(r=true),i});return r?s.intersection(o):e}case "array":{let r=Y(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=Y(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 ge(e){return Y(e,void 0,new WeakSet)}var Ae=Object.freeze({t:"union",of:Object.freeze([])});function ae(e){if(e===Ae)return true;switch(e.t){case "array":return ae(e.items);case "tuple":return e.elements.some(ae);case "union":case "intersection":return e.of.some(ae);case "apply":return e.args.some(ae);default:return false}}var Sn=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function pt(e,n){if(k(n,e))return e;if(k(e,n))return n;let t=Sn(e),r=Sn(n);return !t||!r||t===r?v([e,n]):null}var te,D=false;function ft(e){D=!D;try{return e()}finally{D=!D;}}function gn(e){let n=te,t=D,r=new Map;te=r,D=false;try{return {result:e(),candidates:r}}finally{te=n,D=t;}}var hn=(e,n)=>{if(!te)return;let t=te.get(e);t||(t={co:[],contra:[]},te.set(e,t)),(D?t.contra:t.co).push(n);};function dt(e){if(e.length<=1)return [...e];let n=e.filter(Se);return n.length?[...e.filter(t=>!Se(t)),v(n)]:[...e]}function mt(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 yt(e,n){if(e.length)return mt(e)?v([...e]):e.reduce((t,r)=>k(t,r,n)?r:t)}function xn(e,n={}){let t=dt(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 ge(v(t));let a=yt(o,n);if(a!==void 0)return ge(r.length?v([a,...r]):a)}function vn(e,n={}){if(e.length)return e.reduce((t,r)=>k(r,t,n)?r:t)}function bn(e,n={}){let t=e.co.length?xn(e.co,n):void 0;if(!e.contra.length)return t;let r=vn(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&&k(t,r,n)?t:r}function Ve(e,n){let{typeParams:t,...r}=e;return {...r,params:e.params.map(o=>({...o,type:m(o.type,n)})),returns:m(e.returns,n),...e.guard?{guard:{...e.guard,type:m(e.guard.type,n)}}:{}}}function re(e){return e.typeParams?.length?Ve(e,Object.fromEntries(e.typeParams.map(n=>[n.name,s.any]))):e}function kn(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=>t[a.name]);for(let a=0;a<n.length-1;a++)r=r.map(i=>m(i,t));let o=Object.fromEntries(n.map(a=>[a.name,s.any]));return r=r.map(a=>m(a,o)),Ve(e,Object.fromEntries(n.map((a,i)=>[a.name,r[i]])))}function Tn(e,n,t={}){if(!e.some(o=>!n[o.name]||o.bound))return n;let r={...n};for(let o of e){let a=r[o.name]??(o.default?m(o.default,r):s.unknown);if(o.bound){let i=m(o.bound,r);k(a,i,t)||(a=i);}r[o.name]=a;}return r}function _e(e,n,t={}){let r=e.typeParams??[],o=new Set(r.map(h=>h.name)),a=h=>Object.fromEntries(Object.entries(h??{}).filter(([S])=>o.has(S))),i={},u=Math.max(e.params.length,n.params.length);for(let h=0;h<u;h++){let S=ie(e,h),p=ie(n,h);S&&p&&(i=b(S,p,i)??i);}let c={...a(e.guard&&n.guard&&e.guard.param===n.guard.param?b(e.guard.type,n.guard.type,{}):b(e.returns,n.returns,{}))};return Object.assign(c,a(i)),Ve(e,Tn(r,c,t))}function b(e,n,t={}){if(n===Ae)return t;if(e.t==="var"){if(ae(n))return t;let r=t[e.name];if(!r)return hn(e.name,n),{...t,[e.name]:n};if(n.t==="any"||n.t==="unknown")return t;hn(e.name,n);let o=pt(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"?b(e.items,n.items,t):null;case "tuple":{let r=e,o=Z(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=b(r.elements[l],n.elements[l],u)??u;return u}let a=t,i=(u,l)=>{a=b(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=b(r.elements[o],u.length?v(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=b(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=n.props[o];if(!i){if(a.optional)continue;return null}r=b(a.type,i.type,r)??r;}return r}case "fn":{if(n.t!=="fn")return null;let r=re(e),o=kn(n),a=b(r.returns,o.returns,t)??t,i=Math.min(r.params.length,o.params.length);for(let u=0;u<i;u++)a=ft(()=>b(r.params[u].type,o.params[u].type,a))??a;return r.guard&&o.guard&&(a=b(r.guard.type,o.guard.type,a)??a),a}case "union":{if(!e.of.some(l=>E(l).size>0))return k(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 h=b(l,o[c],i);h!==null&&(i=h,a[c]=true);}if(r.length!==1)return i;let u=o.filter((l,c)=>!a[c]);return u.length?b(r[0],v(u),i)??i: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=b(e.args[o],n.args[o],r)??r;return r}default:return k(n,e)?t:null}}var wn="@rev",Ue=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function N(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(wn);switch(e.t){case "array":return {t:"array",items:N(e.items,n,t)};case "tuple":return {t:"tuple",elements:e.elements.map(r=>N(r,n,t)),...e.flags?{flags:e.flags}:{}};case "union":return s.union(e.of.map(r=>N(r,n,t)));case "fn":return {...e,params:e.params.map(r=>({...r,type:N(r.type,n,t)})),returns:N(e.returns,n,t)};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>N(r,n,t))};case "returnType":return {t:"returnType",fn:N(e.fn,n,t)};case "object":{let r={};for(let o in e.props)r[o]={type:N(e.props[o].type,n,t),optional:e.props[o].optional};return e.index?{t:"object",props:r,index:{key:e.index.key,value:N(e.index.value,n,t)}}:{t:"object",props:r}}default:return e}}function St(e,n,t){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let r=e.over.of.name;if(t[r])return null;let o={};for(let a in n.props){let i=N(e.body,r,e.key),u=b(i,n.props[a].type,{})?.[wn];o[a]={type:u?Be(u):s.unknown,optional:n.props[a].optional};}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(Ue(a)&&i.t==="object"){let u=St(a,i,r);u&&(r=u);}}return r}function ht(e,n,t={}){let{result:r,candidates:o}=gn(()=>{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=b(l.type,n[c],i),i===null)return null;break}if(u>=n.length){if(l.optional)continue;return null}if(!Ue(l.type)&&(i=b(l.type,n[u],i),i===null))return null}return jn(e.params,n,i)});if(r===null)return null;let a=In(r,o,t);return {returns:m(e.returns,a),bindings:a}}function In(e,n,t){let r;for(let[o,a]of n){if(a.co.length<2&&!a.contra.length)continue;let i=bn(a,t);i===void 0||i===e[o]||(r??(r={...e}),r[o]=i);}return r??e}function gt(e,n,t={}){let{result:r,candidates:o}=gn(()=>{let i={};for(let u=0;u<e.params.length&&u<n.length;u++){let l=e.params[u];if(Ue(l.type))continue;let c=b(l.type,n[u],i);c!==null&&(i=c);}return jn(e.params,n,i)}),a=In(r,o,t);return {returns:m(e.returns,a),bindings:a}}var xt=e=>e.t==="array"?e.items:e.t==="tuple"?s.union([...e.elements]):void 0;function W(e,n,t,r,o){if(e.t==="var"&&t.has(e.name)){let a=o.get(e.name);a||o.set(e.name,a={co:[],contra:[]}),(r?a.contra:a.co).push(n);return}if(!(n.t==="any"||n.t==="unknown"))switch(e.t){case "array":{let a=xt(n);a&&W(e.items,a,t,r,o);return}case "tuple":{let a=e,i=Z(a);if(i<0){n.t==="tuple"&&n.elements.length===a.elements.length&&a.elements.forEach((l,c)=>W(l,n.elements[c],t,r,o));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++)W(c<i?a.elements[c]:u,l.elements[c],t,r,o);}else if(n.t==="array"){for(let l=0;l<i;l++)W(a.elements[l],n.items,t,r,o);W(u,n.items,t,r,o);}return}case "fn":if(n.t==="fn"){let a=re(e),i=kn(n);a.params.forEach((u,l)=>{let c=i.params[l];c&&W(u.type,c.type,t,!r,o);}),W(a.returns,i.returns,t,r,o);}return;case "object":if(n.t==="object")for(let a in e.props)n.props[a]&&W(e.props[a].type,n.props[a].type,t,r,o);return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((a,i)=>W(a,n.args[i],t,r,o));return;default:return}}function vt(e,n){if(e.length===1)return e[0];let r=e.flatMap(o=>o.t==="union"?[...o.of]:[o]).filter(o=>e.every(a=>k(o,a,n)));return v(r)}var bt=e=>e.t==="union"&&e.of.length===0;function On(e,n){let t={};for(let[r,{co:o,contra:a}]of e){let i=o.length?v(o):void 0,u=a.length?vt(a,n):void 0,l=i??u;i&&u&&(l=!bt(i)&&i.t!=="any"&&k(i,u,n)?i:u),l&&(t[r]=l);}return t}function Pn(e,n={}){let t=new Map,r=(e.infer??[]).map(a=>a.name);W(e.extends,e.check,new Set(r),false,t);let o={...On(t,n)};for(let a of r)a in o||(o[a]=s.unknown);return o}function kt(e,n={},t=0){if(!e.infer?.length||E(e.check).size>0)return null;let r=new Map;W(e.extends,e.check,new Set(e.infer.map(u=>u.name)),false,r);let o=On(r,n),a=new WeakSet,i=xe(m(e.extends,o),n,a,t);return k(e.check,i,n)?xe(m(e.then,o),n,a,t):xe(m(e.else,o),n,a,t)}function xe(e,n={},t=new WeakSet,r=0,o=new Set){let a=r,i=M().maxTypeDepth,u=new Set,l=(p,d)=>d?.length?new Set([...p,...d.map(y=>y.name)]):p,c=(p,d)=>({...p,...p.bound?{bound:S(p.bound,d)}:{},...p.default?{default:S(p.default,d)}:{}}),h=(p,d)=>{let y=l(d,p.typeParams);return {...p,params:p.params.map(w=>({...w,type:S(w.type,y)})),returns:S(p.returns,y),...p.guard?{guard:{...p.guard,type:S(p.guard.type,y)}}:{},...p.typeParams?{typeParams:p.typeParams.map(w=>c(w,y))}:{}}},S=(p,d=u)=>{switch(p.t){case "var":return d.has(p.name)?c(p,d):s.unknown;case "array":return {...p,items:S(p.items,d)};case "tuple":return {...p,elements:p.elements.map(y=>S(y,d))};case "union":return s.union(p.of.map(y=>S(y,d)));case "object":{if(t.has(p))return p;t.add(p);let y={};for(let se in p.props){let He=p.props[se];y[se]={type:S(He.type,d),optional:He.optional};}let w=p.index?{key:p.index.key,value:S(p.index.value,d)}:void 0;return t.delete(p),w?{t:"object",props:y,index:w}:{t:"object",props:y}}case "fn":{if(t.has(p))return p;t.add(p);let y=h(p,d);return t.delete(p),y}case "overload":return {t:"overload",signatures:p.signatures.map(y=>h(y,d))};case "apply":{if($(p,n)){let y=L(p,n);if(y.t==="conditional"){if(a>=i)throw new q;a++;try{let w=S(y,d);if(w.t!=="conditional")return w}finally{a--;}}}return {t:"apply",name:p.name,args:p.args.map(y=>S(y,d))}}case "conditional":{let y=p.infer?.length?kt(p,n,a):z(p,n);if(y)return S(y,d);let w=l(d,p.infer);return {t:"conditional",check:S(p.check,d),extends:S(p.extends,w),then:S(p.then,w),else:S(p.else,w),...p.infer?{infer:p.infer.map(se=>c(se,w))}:{}}}case "intersection":return P({of:p.of.map(y=>S(y,d))});case "returnType":return g({t:"returnType",fn:S(p.fn,d)});default:return p}};return S(e,o)}var Tt=s.object({}),ze=(e,n,t="assignable")=>({seen:new WeakMap,exp:new Set,schemes:e,relation:t,assumed:0,explain:n,sourceStack:[],targetStack:[]}),De=0;function j(e,n,t){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:t,kind:"type"}),false}function qe(e,n,t=0){if(t>M().maxInstantiationDepth)return e;if($(e,n)){let r=L(e,n);if(r.t!=="conditional")return e;let o=z(r,n);return o?qe(o,n,t+1):e}if(e.t==="conditional"){let r=z(e,n);return r?qe(r,n,t+1):e}return e}function wt(e,n,t={}){let r=[];return !f(e,n,ze(t,{path:[],out:r}))&&r.length===0&&r.push({path:[],actual:e,expected:n,kind:"type"}),r}var jt=new WeakMap,It=new WeakMap;function Wn(e,n,t,r,o){if(e===n)return true;if(Object.keys(t).length>0)return f(e,n,ze(t,void 0,r));let a=o.get(e)?.get(n);if(a!==void 0)return a;let i=f(e,n,ze(t,void 0,r)),u=o.get(e);return u||o.set(e,u=new WeakMap),u.set(n,i),i}function k(e,n,t={}){return Wn(e,n,t,"assignable",jt)}function Ot(e,n,t={}){return Wn(e,n,t,"comparable",It)}function Pt(e,n,t={}){return k(e,n,t)&&k(n,e,t)}function z(e,n){if(e.infer?.length){if(E(e.check).size>0)return null;let t=qe(e.check,n),r=Pn({...e,check:t},n),o=m(e.extends,r);return k(t,o,n)?m(e.then,r):m(e.else,r)}return E(e.check).size>0||E(e.extends).size>0?null:k(e.check,e.extends,n)?e.then:e.else}function ue(e,n,t=0){if(t>M().maxInstantiationDepth)return e;let r=U(e,n.schemes);if(r!==e)return ue(r,n,t+1);if(e.t==="conditional"){let o=z(e,n.schemes);if(o)return ue(o,n,t+1)}return $(e,n.schemes)?ue(L(e,n.schemes),n,t+1):e.t==="union"?v(e.of.map(o=>ue(o,n,t+1))):e}var En=(e,n)=>X(e,t=>O(t,n.schemes))??X({...e,over:ue(e.over,n)});function be(e,n,t,r){if(!t.explain)return f(e,n,t);t.explain.path.push(r);try{return f(e,n,t)}finally{t.explain.path.pop();}}function f(e,n,t){if(De>=M().maxTypeDepth)throw new q;De++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return t.relation==="comparable"?!0:j(t,e,n);let r=U(e,t.schemes);if(r!==e)return f(r,n,t);let o=U(n,t.schemes);if(o!==n)return f(e,o,t);if(e.t==="mapped"){let i=En(e,t);if(i)return f(i,n,t)}if(n.t==="mapped"){let i=En(n,t);if(i)return f(e,i,t)}if(e.t==="conditional"){let i=z(e,t.schemes);if(i)return f(i,n,t)}if(n.t==="conditional"){let i=z(n,t.schemes);if(i)return f(e,i,t)}if(t.relation==="comparable"&&Ct(n,e))return !0;if(n.t==="intersection")return n.of.every(i=>f(e,i,t));if(e.t==="intersection"&&n.t!=="union"){if($t(e.of,n,t))return !0;if(n.t==="object"){let i=Fe(e.of);if(i)return f(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=`${I(e)}\u2264${I(n)}`;if(t.exp.has(i))return !0;if(Ln(e,t.sourceStack)&&Ln(n,t.targetStack))return t.assumed++,!0;t.exp.add(i),t.sourceStack.push(e),t.targetStack.push(n);let u=f(L(e,t.schemes),L(n,t.schemes),t);return t.sourceStack.pop(),t.targetStack.pop(),t.exp.delete(i),u}return Et(e,n,t)}finally{De--;}}var $n=5;function Ln(e,n){if(n.length<$n||e.t!=="apply")return false;let t=0;for(let r of n)if(r.t==="apply"&&r.name===e.name&&++t>=$n)return true;return false}function Et(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=Lt(e,n,t);return (!a||t.assumed!==o)&&r.delete(n),a}function $t(e,n,t){let r=t.intersectionSource,o=t.explain;t.intersectionSource=true,t.explain=void 0;try{return e.some(a=>f(a,n,t))}finally{t.intersectionSource=r,t.explain=o;}}function Lt(e,n,t){if(e.t==="union")return t.relation==="comparable"?e.of.length===0||e.of.some(r=>f(r,n,t)):e.of.every(r=>f(r,n,t));if(e.t==="boolean"&&n.t==="union")return t.relation==="comparable"?f(s.literal(true),n,t)||f(s.literal(false),n,t):f(s.literal(true),n,t)&&f(s.literal(false),n,t);if(n.t==="union")return Mt(e,n,t);if(e.t==="var"&&!(n.t==="var"&&n.name===e.name))return e.bound?f(e.bound,n,t):j(t,e,n);if(e.t==="nonPrimitive"&&n.t!=="nonPrimitive")return n.t==="object"&&n.index?j(t,e,n):f(Tt,n,t);if(Mn(e)&&Mn(n))return Bt(e,n,t);if(n.t==="overload")return n.signatures.every(r=>f(e,r,t));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:j(t,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Nn(e.value)===n.t?true:j(t,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:j(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:j(t,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?j(t,e,n):f(e.items,n.items,t):e.t==="tuple"?e.readonly&&!n.readonly?j(t,e,n):Le(e).every((r,o)=>be(r,n.items,t,String(o))):j(t,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return j(t,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return j(t,e,n);for(let r=0;r<e.elements.length;r++)if(!be(e.elements[r],n.elements[r],t,String(r)))return false;return true}return tn(e,n,(r,o)=>f(r,o,t),t.relation==="comparable")}case "object":if(e.t==="object")return Wt(e,n,t);if(Object.keys(n.props).length===0&&!n.index)return e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:j(t,e,n);if((e.t==="array"||e.t==="tuple")&&n.index){let r=e.t==="array"?[e.items]:Le(e);return n.index.key==="number"&&Object.values(n.props).every(o=>o.optional)&&r.every(o=>f(o,n.index.value,t))?true:j(t,e,n)}return j(t,e,n);case "fn":return e.t==="fn"?ve(e,n,t):j(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"&&f(e.of,n.of,t)&&f(n.of,e.of,t);case "index":return e.t==="index"&&f(e.obj,n.obj,t)&&f(n.obj,e.obj,t)&&f(e.key,n.key,t)&&f(n.key,e.key,t);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&f(e.over,n.over,t)&&f(n.over,e.over,t)&&f(e.body,n.body,t)&&f(n.body,e.body,t);case "conditional":return e.t==="conditional"&&f(e.check,n.check,t)&&f(n.check,e.check,t)&&f(e.extends,n.extends,t)&&f(n.extends,e.extends,t)&&f(e.then,n.then,t)&&f(e.else,n.else,t);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((r,o)=>f(r,n.args[o],t));case "returnType":return e.t==="returnType"&&f(e.fn,n.fn,t)&&f(n.fn,e.fn,t);case "parameters":return e.t==="parameters"&&f(e.fn,n.fn,t)&&f(n.fn,e.fn,t)}}var Nn=e=>typeof e;function Ct(e,n){switch(n.t){case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Nn(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 Mt(e,n,t){let r=t.explain;if(!r)return n.of.some(i=>f(e,i,t));t.explain=void 0;let o;try{o=n.of.some(i=>f(e,i,t));}finally{t.explain=r;}if(o)return true;let a=Rt(e,n,t);return a?f(e,a,t):j(t,e,n)}function Rt(e,n,t){if(e.t!=="object")return null;let r=n.of.map(o=>O(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 h=r[c];if(h.t!=="object")return !1;let S=R(h.props,o);return !!S&&f(a,S.type,t)});}finally{t.explain=i;}if(u.length===1)return u[0]}return null}function Wt(e,n,t){let r=false;for(let o in n.props)if(!(n.props[o].optional||R(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=R(e.props,o);if(!i)continue;if(i.optional&&!a.optional&&t.relation==="assignable")return false;let u=a.optional?_(i.type).type:i.optional?v([i.type,s.undefined]):i.type;if(!be(u,a.type,t,o))return false}return !(n.index&&!Nt(e,n.index,t))}function Nt(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&&!$e(o))continue;let a=e.props[o],i=a.optional?V(a.type):a.type;if(!be(i,n.value,t,o))return false}}return !e.index||f(e.index.value,n.value,t)}var Fn=e=>{let n=e.params[e.params.length-1];return n?.variadic?n:void 0},Ft=e=>{let n=e.params.findIndex(t=>t.optional||t.variadic);return n<0?e.params.length:n};function ie(e,n){let t=Fn(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 Cn=(e,n)=>{let t=ie(e,n);return t===void 0?t:e.params[n]?.optional?V(t):t},Mn=e=>e.t==="fn"||e.t==="overload";function Bt(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?Rn(r[0],o[0],t,t.relation==="comparable"):o.every(a=>r.some(i=>Rn(i,a,t,true)))}function Rn(e,n,t,r){if(r)return ve(re(e),re(n),t);let o=Ne(n,E(e));return e.typeParams?.length?ve(_e(e,o,t.schemes),o,t):ve(e,o,t)}function ve(e,n,t){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!f(e.returns,n.returns,t)||!Fn(n)&&Ft(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=Cn(e,o),i=Cn(n,o);if(a&&i&&!f(i,a,t))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!f(e.guard.type,n.guard.type,t)))}var At=e=>e.t==="object"&&!e.index&&Object.values(e.props).every(n=>n.optional);function v(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let t=M().maxUnionMembers;if(n.length>t)throw new K(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&&!At(u)&&k(a,u)&&(l<o||!k(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 Vt(e,n){let t=new Set,r=new WeakSet,o=a=>{if(!r.has(a))switch(r.add(a),a.t){case "keyof":t.add("keyof"),o(a.of);break;case "index":t.add("indexed"),o(a.obj),o(a.key);break;case "mapped":t.add("mapped"),o(a.over),o(a.body);break;case "conditional":t.add("conditional"),a.infer?.length&&t.add("infer"),a.infer?.forEach(o),o(a.check),o(a.extends),o(a.then),o(a.else);break;case "returnType":t.add("returnType"),o(a.fn);break;case "parameters":t.add("parameters"),o(a.fn);break;case "tuple":t.add("tuple"),a.elements.forEach(o);break;case "intersection":t.add("intersection"),a.of.forEach(o);break;case "overload":t.add("overload");for(let 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 _t=s.union([]);function Bn(e,n){return ke(e,n,new WeakMap)}function Ut(e){return e.reduce(Bn,_t)}function ke(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 Dt(e,n,t);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:s.unknown};return An(t,e,n,o),o.items=ke(e.items,n.items,t),o}return v([e,n])}function Dt(e,n,t){let r={t:"object",props:{}};An(t,e,n,r);for(let o in e.props){let a=e.props[o],i=n.props[o];if(i){let u=ke(a.type,i.type,t);r.props[o]=a.optional||i.optional?{type:u,optional:true}:{type:u};}else r.props[o]={type:a.type,optional:true};}for(let o in n.props)o in e.props||(r.props[o]={type:n.props[o].type,optional:true});return e.index&&n.index&&e.index.key===n.index.key&&(r.index={key:e.index.key,value:ke(e.index.value,n.index.value,t)}),r}function An(e,n,t,r){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(t,r);}var zt=4;function qt(e,n={}){return le(e,n,0)}function le(e,n,t){let r=O(U(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(le(r.elements[a],n,t));return o}case "object":{if(t>=zt)return {};let o={};for(let a of Object.keys(r.props)){let i=r.props[a];i.optional||(o[a]=le(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:le(o,n,t)}case "intersection":{let o=r.of.map(a=>le(a,n,t));return o.every(Kt)?Object.assign({},...o):null}default:return null}}var Kt=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);var Qt=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e),Ht={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"])},Vn=(e,n)=>Ht[e].has(n);function je(e,n=new WeakSet){return T(e,{seen:n,infer:new Map})}function Yt(e){return Te(e,{seen:new WeakSet,infer:new Map})}function Qe(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?Qe(e.of[0],n):"union";case "intersection":return e.of.length===1?Qe(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 B(e,n,t){let r=T(n,t);return Vn(e,Qe(n,t))?`(${r})`:r}function Te(e,n){return e.map((t,r)=>{let o=T(t,n);return r===0&&Gt(t)?`(${o})`:o}).join(", ")}var Gt=e=>e.t==="fn"&&!!e.typeParams?.length||e.t==="overload"&&e.signatures.length===1&&!!e.signatures[0].typeParams?.length;function Jt(e,n){return e?.length?`<${e.map(t=>Zt(t,n)).join(", ")}>`:""}function Zt(e,n){let t=e.bound?` extends ${T(e.bound,n)}`:"",r=e.default?` = ${T(e.default,n)}`:"";return `${e.name}${t}${r}`}function we(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 Ke(e,n,t){let r=we(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}: ${T(u.type,r)}`}).join(", "),a=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${T(e.guard.type,r)}`:T(e.returns,r),i=Jt(e.typeParams,r);return n==="=>"?`${i}(${o}) => ${a}`:`${i}(${o}): ${a}`}function T(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 ${T(r.bound,we(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=`${B("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"?`...${B("postfix",a,n)}[]`:u==="optional"?`${B("postfix",a,n)}?`:T(a,n)}).join(", ")}]`;return e.readonly?`readonly ${o}`:o}case "union":{if(e.of.length===0)return "never";if(e.of.length===1)return T(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>B("union",o,n)).join(" | ");return t.delete(e),r}case "intersection":{if(e.of.length===1)return T(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>B("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])=>`${Qt(o)?o:JSON.stringify(o)}${a.optional?"?":""}: ${T(a.type,n)}`);return e.index&&r.push(`[k: ${e.index.key}]: ${T(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=Ke(e,"=>",n);return t.delete(e),r}case "overload":{if(e.signatures.length===1)return Ke(e.signatures[0],"=>",n);if(t.has(e))return "\u2026";t.add(e);let r=e.signatures.map(o=>Ke(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}<${Te(e.args,n)}>`;return t.delete(e),r}case "keyof":return `keyof ${B("operand",e.of,n)}`;case "index":return `${B("postfix",e.obj,n)}[${T(e.key,n)}]`;case "mapped":{if(t.has(e))return "\u2026";t.add(e);let r=e.optional?"?":"",o=we(n,[e.key]),a=`{ [${e.key} in ${T(e.over,n)}]${r}: ${T(e.body,o)} }`;return t.delete(e),a}case "conditional":{if(t.has(e))return "\u2026";t.add(e);let r=e.infer??[],o=r.length?{...n,infer:new Map([...n.infer,...r.map(u=>[u.name,u])])}:n,a=we(n,r.map(u=>u.name)),i=`${B("check",e.check,n)} extends ${B("extends",e.extends,o)} ? ${T(e.then,a)} : ${T(e.else,a)}`;return t.delete(e),i}case "returnType":return `ReturnType<${Te([e.fn],n)}>`;case "parameters":return `Parameters<${Te([e.fn],n)}>`}}function _n(e){if(e.length===0)return "value";let n=e[e.length-1];if(/^\d+$/.test(n)){let t=e.slice(0,-1);return t.length?`property '${t.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function Xt(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?`${_n(t.path)} is missing`:`${_n(t.path)}: expected '${je(t.expected)}', got '${je(t.actual)}'`).join("; ")}function G(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),G(_(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(t=>G(_(t).type,n)));case "object":{if(n.has(e))return true;n.add(e);let t=Object.values(e.props).every(o=>G(_(o.type).type,n)),r=!e.index||G(_(e.index.value).type,n);return t&&r}case "union":return n.has(e)?true:(n.add(e),e.of.every(t=>G(t,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(t=>G(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 er(e,n,t={}){let r=e;for(let o of n){let a=J(r,o,t);if(a===null)return null;r=a;}return {type:r,completions:ce(r,t)}}var nr=e=>e==="[]"||/^\d+$/.test(e);function J(e,n,t,r=new Set){if(e.t==="var")return e.bound?J(O(e,t),n,t,r):null;if(e.t==="mapped"){let a=O(e,t);return a===e?null:J(a,n,t,r)}if($(e,t)){let a=I(e);if(r.has(a))return null;r.add(a);let i=J(L(e,t),n,t,r);return r.delete(a),i}let o=g(e);if(o!==e)return J(o,n,t,r);switch(e.t){case "any":return e;case "object":{let a=R(e.props,n);return a?a.optional?v([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return nr(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?v(u):null}case "union":{let a=[];for(let i of e.of){let u=J(i,n,t,r);if(u===null)return null;a.push(u);}return a.length?v(a):null}case "intersection":{let a=e.of.map(i=>J(i,n,t,r)).filter(i=>i!==null);return a.length?P({of:a}):null}default:return null}}function ce(e,n,t=new WeakSet,r=new Set){if(e.t==="var")return e.bound?ce(O(e,n),n,t,r):[];if($(e,n)){let a=I(e);if(r.has(a))return [];r.add(a);let i=ce(L(e,n),n,t,r);return r.delete(a),i}let o=g(e);if(o!==e)return ce(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 ce(u,n,t,r))i.has(l.key)||(i.add(l.key),a.push(l));return t.delete(e),a}default:return []}}exports.DEFAULT_TYPE_LIMITS=fe;exports.INSTANTIATION_COUNT_LIMIT=zn;exports.INSTANTIATION_DEPTH_LIMIT=Dn;exports.InstantiationLimitError=pe;exports.TYPE_EVAL_DEPTH_LIMIT=Un;exports.TypeEvalLimitError=q;exports.UnionTooComplexError=K;exports.apparentType=O;exports.asLiteralOrigin=Xn;exports.baseLiteralType=dn;exports.bindTypeParams=ln;exports.comparable=Ot;exports.configureTypeLimits=qn;exports.contravariantInference=vn;exports.covariantInference=xn;exports.discover=er;exports.equals=Pt;exports.erasedSignature=re;exports.expand1=L;exports.flagAt=en;exports.format=je;exports.formatTypeArgs=Yt;exports.formatTypeDiff=Xt;exports.freeVars=E;exports.groundVars=xe;exports.inferFromCandidates=bn;exports.inferredTypes=Tn;exports.instantiate=ht;exports.instantiateInContextOf=_e;exports.instantiateLoose=gt;exports.isMissingType=me;exports.isNumericLiteralName=$e;exports.isObjectOrArrayLiteral=Se;exports.isScheme=$;exports.isSerializable=G;exports.isVariadicTuple=nn;exports.join=Bn;exports.joinAll=Ut;exports.missingType=Q;exports.normalizeUnion=v;exports.ownProp=R;exports.renameTypeParams=Ne;exports.resetInstantiationCount=Qn;exports.resetTypeLimits=Kn;exports.resolveConditional=z;exports.resolveOp=U;exports.resolveTypeOp=g;exports.restIndex=Z;exports.s=s;exports.sampleValue=qt;exports.silentNever=Ae;exports.substitute=m;exports.subtype=k;exports.typeAtPosition=ie;exports.typeDiff=wt;exports.typeFeatures=Vt;exports.typeLimits=M;exports.typeNeedsParens=Vn;exports.typeParamArity=an;exports.unify=b;exports.widen=Be;exports.widenInferred=it;exports.widenLiteral=fn;exports.widenOrigin=ge;exports.widenType=at;exports.withoutUndefined=_;