@tslite/checker 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-O7NTTIOJ.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +163 -7
- package/dist/index.d.ts +163 -7
- package/dist/index.js +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +98 -35
- package/dist/types/index.d.ts +98 -35
- package/dist/types/index.js +1 -1
- package/package.json +6 -6
- package/dist/chunk-RDCPWO2E.js +0 -1
package/dist/types/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';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";exports.DEFAULT_TYPE_LIMITS=ke;exports.INSTANTIATION_COUNT_LIMIT=vt;exports.INSTANTIATION_DEPTH_LIMIT=xt;exports.InstantiationLimitError=be;exports.TYPE_EVAL_DEPTH_LIMIT=gt;exports.TypeEvalLimitError=H;exports.UnionTooComplexError=Y;exports.apparentType=j;exports.asLiteralOrigin=$t;exports.baseLiteralType=Nn;exports.bindTypeParams=Ee;exports.comparable=ar;exports.configureTypeLimits=bt;exports.contravariantInference=Kn;exports.covariantInference=qn;exports.discover=Nr;exports.equals=pt;exports.erasedSignature=ce;exports.expand1=C;exports.flagAt=On;exports.format=_e;exports.formatTypeArgs=Rr;exports.formatTypeDiff=Fr;exports.freeVars=E;exports.groundVars=Re;exports.inferFromCandidates=Qn;exports.inferredTypes=Yn;exports.instantiate=Yt;exports.instantiateInContextOf=cn;exports.instantiateLoose=Gt;exports.isMissingType=Te;exports.isNumericLiteralName=Me;exports.isObjectOrArrayLiteral=Pe;exports.isScheme=$;exports.isSerializable=ne;exports.isVariadicTuple=Pn;exports.join=mt;exports.joinAll=Or;exports.missingType=G;exports.normalizeUnion=k;exports.ownProp=N;exports.readonlyMember=Br;exports.renameTypeParams=tn;exports.resetInstantiationCount=wt;exports.resetTypeLimits=kt;exports.resolveConditional=_;exports.resolveOp=K;exports.resolveTypeOp=x;exports.restIndex=ae;exports.restTypeAtPosition=fe;exports.s=s;exports.sampleValue=Ir;exports.silentNever=un;exports.substitute=S;exports.subtype=I;exports.typeAtPosition=le;exports.typeDiff=tr;exports.typeFeatures=Tr;exports.typeLimits=F;exports.typeNeedsParens=St;exports.typeParamArity=Rn;exports.unify=w;exports.version=Ur;exports.widen=an;exports.widenInferred=At;exports.widenLiteral=Fn;exports.widenOrigin=Ce;exports.widenType=Nt;exports.withUndefined=W;exports.withoutUndefined=B;
|
|
1
|
+
'use strict';var Gt=100,Yt=50,Jt=5e6,Ve={maxTypeDepth:100,maxInstantiationDepth:50,maxInstantiationCount:5e6,maxUnionMembers:1e3,maxOverloadSignatures:200},ne=Ve;function Zt(e){ne={...Ve,...e};}function Xt(){ne=Ve;}function D(){return ne}var ie=class extends Error{constructor(n=ne.maxTypeDepth){super(`excessive stack depth comparing types (limit ${n}) \u2014 the comparison is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},Re=class extends Error{constructor(t,r=t==="depth"?ne.maxInstantiationDepth:ne.maxInstantiationCount){super(`type instantiation is excessively deep and possibly infinite (${t} limit ${r})`);this.kind=t;this.name="InstantiationLimitError";}};function er(){un=0;}var un=0;function Bn(){if(un>=ne.maxInstantiationCount)throw new Re("count");un++;}var le=class extends Error{constructor(n,t=ne.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${t})`),this.name="UnionTooComplexError";}};var zn=Object.prototype.hasOwnProperty,ve=(e,n)=>zn.call(e,n),$=(e,n)=>zn.call(e,n)?e[n]:void 0;function w(e,n,t){n==="__proto__"?Object.defineProperty(e,n,{value:t,enumerable:true,writable:true,configurable:true}):e[n]=t;}var dn=()=>({active:new Set,byScope:new Map});function Ae(e,n,t){let r=new Map(e);for(let o of n)r.set(o.name,t(o));return r}function mn(e,n,t){let r=Ae(n,e,()=>{}),o=false,a=e.map(i=>{let l=i.bound&&q(i.bound,r,t),u=i.default&&q(i.default,r,t);return l===i.bound&&u===i.default?i:(o=true,{...i,...l?{bound:l}:{},...u?{default:u}:{}})});return o?a:e}function cn(e,n,t){let r=e.typeParams?.length?mn(e.typeParams,n,t):void 0,o=r?Ae(n,r,u=>u.bound):n,a=ke(e.params,u=>{let p=q(u.type,o,t);return p===u.type?u:{...u,type:p}}),i=q(e.returns,o,t),l=e.guard&&q(e.guard.type,o,t);return a===e.params&&i===e.returns&&l===e.guard?.type&&r===e.typeParams?e:{...e,params:a,returns:i,...e.guard&&l?{guard:{...e.guard,type:l}}:{},...r?{typeParams:r}:{}}}function ke(e,n){let t=false,r=e.map(o=>{let a=n(o);return a!==o&&(t=true),a});return t?r:e}function q(e,n,t){if(n.size===0)return e;let r=t.byScope.get(n);r||t.byScope.set(n,r=new Map);let o=r.get(e);if(o)return o;if(t.active.has(e))return e;t.active.add(e);let a=Yn(e,n,t);return t.active.delete(e),r.set(e,a),a}function Yn(e,n,t){let r=o=>q(o,n,t);switch(e.t){case "var":{if(!n.has(e.name))return e;let o=n.get(e.name);return o===e.bound&&e.default===void 0?e:o?{t:"var",name:e.name,bound:o}:{t:"var",name:e.name}}case "array":{let o=r(e.items);return o===e.items?e:{...e,items:o}}case "tuple":{let o=ke(e.elements,r);return o===e.elements?e:{...e,elements:o}}case "union":case "intersection":{let o=ke(e.of,r);return o===e.of?e:{...e,of:o}}case "object":{let o=false,a={};for(let u of Object.keys(e.props)){let p=e.props[u],y=r(p.type);y!==p.type&&(o=true),w(a,u,y===p.type?p:{...p,type:y});}let i=e.index&&r(e.index.value),l=!!e.index&&i!==e.index.value;return !o&&!l?e:{...e,props:o?a:e.props,...e.index&&i&&l?{index:{...e.index,value:i}}:{}}}case "fn":return cn(e,n,t);case "overload":{let o=ke(e.signatures,a=>cn(a,n,t));return o===e.signatures?e:{...e,signatures:o}}case "keyof":{let o=r(e.of);return o===e.of?e:{...e,of:o}}case "index":{let o=r(e.obj),a=r(e.key);return o===e.obj&&a===e.key?e:{...e,obj:o,key:a}}case "mapped":{let o=r(e.over),a=new Map(n);a.set(e.key,void 0);let i=q(e.body,a,t);return o===e.over&&i===e.body?e:{...e,over:o,body:i}}case "conditional":{let o=e.infer?.length?mn(e.infer,n,t):void 0,a=o?Ae(n,o,y=>y.bound):n,i=r(e.check),l=q(e.extends,a,t),u=q(e.then,a,t),p=q(e.else,a,t);return i===e.check&&l===e.extends&&u===e.then&&p===e.else&&o===e.infer?e:{...e,check:i,extends:l,then:u,else:p,...o?{infer:o}:{}}}case "returnType":case "parameters":{let o=r(e.fn);return o===e.fn?e:{...e,fn:o}}case "apply":{let o=ke(e.args,r);return o===e.args?e:{...e,args:o}}default:return e}}function qn(e){return e.typeParams?.length?cn(e,new Map,dn()):e}function nr(e){return e.infer?.length?Yn(e,new Map,dn()):e}function tr(e){if(!e.params.length)return e;let n=dn(),t=mn(e.params,new Map,n),r=q(e.body,Ae(new Map,t,o=>o.bound),n);return t===e.params&&r===e.body?e:{params:t,body:r}}var J=e=>Object.freeze(e),f={any:J({t:"any"}),unknown:J({t:"unknown"}),string:J({t:"string"}),number:J({t:"number"}),boolean:J({t:"boolean"}),null:J({t:"null"}),undefined:J({t:"undefined"}),void:J({t:"void"}),nonPrimitive:J({t:"nonPrimitive"}),literal:e=>({t:"literal",value:e}),object:(e,n)=>({t:"object",props:e,...n?{index:n}:{}}),record:(e,n="string")=>({t:"object",props:{},index:{key:n,value:e}}),array:(e,n)=>({t:"array",items:e,...n?{readonly:true}:{}}),tuple:(e,n,t)=>({t:"tuple",elements:n?e.map((r,o)=>n[o]==="optional"?A(r):r):e,...n&&n.some(r=>r!=="req")?{flags:n}:{},...t?{readonly:true}:{}}),fn:(e,n,t)=>qn({t:"fn",params:e,returns:n,...t?.length?{typeParams:t}:{}}),guard:(e,n,t=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:t,type:n}}),overload:e=>({t:"overload",signatures:e.map(qn)}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,t,r={})=>({t:"mapped",key:e,over:n,body:t,...r.optional?{optional:true}:{},...r.readonly?{readonly:true}:{},...r.excludeOptional?{excludeOptional:true}:{},...r.excludeReadonly?{excludeReadonly:true}:{}}),conditional:(e,n,t,r,o)=>nr({t:"conditional",check:e,extends:n,then:t,else:r,...o&&o.length?{infer:o}:{}}),scheme:(e,n)=>tr({params:e,body:n}),intersection:e=>U({of:e}),and:(e,n)=>U({of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n)=>({t:"var",name:e,...n?{bound:n}:{}}),typeParam:(e,n={})=>({t:"var",name:e,...n.bound?{bound:n.bound}:{},...n.default?{default:n.default}:{}}),typeQuery:e=>({t:"typeQuery",path:e}),apply:(e,n=[])=>({t:"apply",name:e,args:n}),promise:e=>({t:"apply",name:"Promise",args:[e]}),union:e=>{let n=[],t=o=>{o.t==="union"?o.of.forEach(t):n.push(o);};if(e.forEach(t),n.some(o=>o.t==="any"))return {t:"any"};if(n.some(o=>o.t==="unknown"))return {t:"unknown"};let r=rr(n);return r.length===1?r[0]:{t:"union",of:r}}};function ce(e){switch(e.t){case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "literal":return `#${typeof e.value}:${String(e.value)}`;default:return null}}function rr(e){let n=[],t=new Map;for(let l of e){let u=ce(l);if(u===null){n.includes(l)||n.push(l);continue}let p=t.get(u);p===void 0?(t.set(u,n.length),n.push(l)):l.t==="literal"&&!l.fresh&&(n[p]=l);}let r=l=>l.t==="literal"&&t.has(typeof l.value),o=!t.has("boolean")&&t.has("#boolean:true")&&t.has("#boolean:false"),a=false,i=[];for(let l of n)if(!r(l)){if(o&&l.t==="literal"&&typeof l.value=="boolean"){a||i.push({t:"boolean"}),a=true;continue}i.push(l);}return i}function j(e){return e.t==="keyof"?sn(e.of)??e:e.t==="index"?We(e.obj,e.key)??e:e.t==="returnType"?or(e.fn)??e:e.t==="parameters"?ar(e.fn)??e:e}var Fe={t:"union",of:[]},pn=e=>e.t==="union"&&e.of.length===0;function or(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function A(e){if(e.t==="undefined"||e.t==="any"||e.t==="unknown")return e;let n=e.t==="union"?e.of:[e];return n.some(t=>t.t==="undefined")?e:f.union([...n,{t:"undefined"}])}function ar(e){let n=e.t==="fn"?e:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1]:null;return n?Ue(n,0):null}function Te(e){let n=[],t=[],r;for(let o of e.params){if(!o.variadic){n.push(o.optional?A(o.type):o.type),t.push(o.optional?"optional":"req");continue}let a=o.type;a.t==="tuple"?a.elements.forEach((i,l)=>{let u=a.flags?.[l]??"req";u==="rest"&&(r=f.array(i)),n.push(u==="optional"?A(i):i),t.push(u);}):(r=a,n.push(a.t==="array"?a.items:a.t==="any"?a:f.index(a,f.number)),t.push("rest"));}return {types:n,flags:t,rest:r}}function Ue(e,n){let{types:t,flags:r,rest:o}=Te(e),a=t.length-(o?1:0);if(o&&n===a)return o;let i=r.findIndex(x=>x!=="req"),l=i<0?t.length:i,u=l<n?0:l-n,p=[],y=[];for(let x=n;x<t.length;x++)p.push(t[x]),y.push(o&&x===a?"rest":x-n<u?"req":"optional");return f.tuple(p,y)}var fn=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Kn(e,n){return e.t==="literal"&&n.t==="literal"?e.value===n.value:e.t==="literal"&&(n.t==="string"||n.t==="number"||n.t==="boolean")?typeof e.value===n.t:e.t===n.t&&(e.t==="string"||e.t==="number"||e.t==="boolean")}function Hn(e){return e.t==="null"||e.t==="undefined"?e.t:e.t==="nonPrimitive"?"nonPrimitive":fn(e)?"scalar":e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"?"object":null}var Qn=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function U(e){let n=[],t=i=>{let l=j(i);l.t==="intersection"?l.of.forEach(t):n.push(l);};if(e.of.forEach(t),n.some(i=>i.t==="any"))return f.any;if(n.some(pn))return Fe;let r=i=>n.some(l=>Hn(l)===i);if(r("null")&&(r("undefined")||r("scalar")||r("object")||r("nonPrimitive"))||r("undefined")&&(r("scalar")||r("object")||r("nonPrimitive"))||r("nonPrimitive")&&r("scalar"))return Fe;if(n.some(i=>Hn(i)==="object"&&!Qn(i)))for(let i=n.length-1;i>=0;i--)Qn(n[i])&&n.splice(i,1);let o=n.findIndex(i=>i.t==="union");if(o>=0){let i=n.reduce((l,u)=>l*(u.t==="union"?u.of.length:1),1);if(i>D().maxUnionMembers)throw new le(i);return f.union(n[o].of.map(l=>U({of:n.map((u,p)=>p===o?l:u)})))}let a=[];for(let i of n){if(i.t==="any")return f.any;if(pn(i))return Fe;if(i.t!=="unknown"){if(fn(i)){let l=false;for(let u=a.length-1;u>=0;u--){let p=a[u];if(fn(p)){if(Kn(p,i)){l=true;break}if(Kn(i,p))a.splice(u,1);else return Fe}}if(l)continue}else if(a.some(l=>l===i))continue;a.push(i);}}return a.length===0?f.unknown:a.length===1?a[0]:{t:"intersection",of:a}}function sn(e){if(e.t==="union"&&e.of.length>0){let t=e.of.map(sn);return t.some(r=>r===null)?null:ir(t)}if(e.t==="intersection"){let t=e.of.map(sn);return t.some(r=>r===null)?null:f.union(t)}if(e.t==="unknown")return {t:"union",of:[]};if(e.t==="any"||e.t==="union"&&e.of.length===0)return {t:"union",of:[f.string,f.number]};if(e.t==="nonPrimitive")return {t:"union",of:[]};if(e.t==="array"||e.t==="tuple")return f.number;if(e.t==="fn"||e.t==="overload")return {t:"union",of:[]};if(e.t!=="object")return null;if(e.index?.key==="string")return f.union([f.string,f.number]);let n=Object.keys(e.props).map(t=>f.literal(t));return e.index?.key==="number"?f.union([f.number,...n]):n.length===0?{t:"union",of:[]}:f.union(n)}function ir(e){let n=a=>a.t==="literal"&&typeof a.value=="string"?[a.value]:a.t==="union"?a.of.flatMap(n):[],t=e.filter(a=>a.t!=="string"&&a.t!=="number").map(n);if(t.length===0)return e[0];let r=t[0].filter(a=>t.every(i=>i.includes(a))),o=[...new Set(r)].map(a=>f.literal(a));return o.length===0?{t:"union",of:[]}:f.union(o)}var ue=Object.freeze({t:"unknown"}),Ne=e=>e===ue,Gn=e=>e.t==="var"||e.t==="apply"||e.t==="mapped"||e.t==="conditional"||e.t==="keyof"||e.t==="index"||e.t==="returnType"||e.t==="parameters"||e.t==="typeQuery";function We(e,n){if(e=j(e),n=j(n),n.t==="union"){let t=[],r=false;for(let o of n.of){let a=We(e,o);if(a===null)return null;Ne(a)?r=true:t.push(a);}return r?ue:f.union(t)}if(Gn(n))return null;if(e.t==="any"||pn(e))return e;if(e.t==="intersection"){let t=[];for(let r of e.of){let o=We(j(r),n);if(o===null)return null;Ne(o)||t.push(o);}return t.length===0?ue:t.length===1?t[0]:U({of:t})}if(e.t==="union"){let t=[];for(let r of e.of){let o=j(r);if(o.t==="any")return o;let a=We(o,n);if(a===null)return null;if(Ne(a))return ue;t.push(a);}return f.union(t)}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let t=B(e.props,String(n.value));return t?t.optional?A(t.type):t.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:ue}if(n.t==="string"||n.t==="number"){let r=n.t==="number"&&e.index?.key==="number"||false||e.index?.key==="string"?e.index:void 0;if(r)return r.value}}if(e.t==="tuple"){let t=e.flags?.findIndex(o=>o==="rest")??-1,r=t>=0?t:e.elements.length;if(n.t==="literal"&&typeof n.value=="string"&&De(n.value)&&+n.value>=0){let o=+n.value;return Number.isInteger(o)&&o<r?e.elements[o]:t>=0?e.elements[t]:f.undefined}if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]:t>=0?e.elements[t]:f.undefined;if(n.t==="number")return e.elements.length?f.union([...e.elements]):f.undefined}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:Gn(e)?null:ue}var _e=e=>(e.t==="object"||e.t==="array"||e.t==="tuple")&&!!e.fromLiteral,lr=e=>e.t==="object"||e.t==="array"||e.t==="tuple"?e.fromLiteral?e:{...e,fromLiteral:true}:e,B=(e,n)=>$(e,n);function K(e){if(e.t==="undefined")return {type:{t:"union",of:[]},hadUndefined:true};if(e.t==="union"&&e.of.some(n=>n.t==="undefined")){let n=e.of.filter(t=>t.t!=="undefined");return {type:f.union(n),hadUndefined:true}}return {type:e,hadUndefined:false}}var De=e=>(+e).toString()===e;var Jn=(e,n)=>e.flags?.[n]??"req",pe=(e,n)=>Jn(e,n)==="optional"?A(e.elements[n]):e.elements[n],yn=e=>e.elements.map((n,t)=>pe(e,t)),Zn=e=>e.flags?.[e.elements.length-1]==="rest",he=e=>Zn(e)?e.elements.length-1:-1,we=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(t=>t!=="req");return n<0?e.elements.length:n};function Xn(e,n,t,r=false){let o=he(e),a=he(n);if(!r&&we(e)<we(n))return false;if(a<0){if(o>=0)return false;let p=we(n);return e.elements.length<p||e.elements.length>n.elements.length?false:e.elements.every((y,x)=>t(pe(e,x),pe(n,x)))}let i=n.elements[a],l=p=>p<a?pe(n,p):i;if(o<0)return e.elements.length<we(n)?false:e.elements.every((p,y)=>t(pe(e,y),l(y)));if(o===0&&a!==0||o<we(n))return false;let u=e.elements[o];for(let p=0;p<o;p++)if(!t(pe(e,p),l(p)))return false;for(let p=o;p<a;p++)if(!t(u,pe(n,p)))return false;return t(u,i)}function b(e,n,t=new WeakSet){return Bn(),ur(e,n,t)}function ur(e,n,t){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!pr(N(e),n))return e;switch(e.t){case "var":{let r=$(n,e.name);return r||hn(e,n,t)}case "array":return {...e,items:b(e.items,n,t)};case "tuple":{let r=e.elements.map(o=>b(o,n,t));return {...e,elements:r}}case "union":return f.union(e.of.map(r=>b(r,n,t)));case "object":{if(t.has(e))return e;t.add(e);let r={};for(let a in e.props){let i=e.props[a];w(r,a,{type:b(i.type,n,t),optional:i.optional,...i.readonly?{readonly:true}:{}});}let o=e.index?{key:e.index.key,value:b(e.index.value,n,t),...e.index.readonly?{readonly:true}:{}}:void 0;return t.delete(e),o?{t:"object",props:r,index:o}:{t:"object",props:r}}case "fn":{if(t.has(e))return e;t.add(e);let r=gn(e,n,t);return t.delete(e),r}case "overload":return {t:"overload",signatures:e.signatures.map(r=>gn(r,n,t))};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>b(r,n,t))};case "keyof":return j({t:"keyof",of:b(e.of,n,t)});case "index":return j({t:"index",obj:b(e.obj,n,t),key:b(e.key,n,t)});case "mapped":{let r=xn([f.typeParam(e.key)],n,N(e),t),o=e.over.t==="keyof"?{t:"keyof",of:b(e.over.of,n,t)}:b(e.over,n,t),a=e.modifiers??(e.over.t==="var"&&e.over.bound?.t==="keyof"?e.over.bound.of:void 0),i=e.typeVariable||e.over.t==="keyof"&&e.over.of.t==="var",l={t:"mapped",key:r.decls[0].name,over:o,body:b(e.body,r.inner,t),...sr(e),...a?{modifiers:b(a,n,t)}:{},...i?{typeVariable:true}:{}};return je(l)??l}case "conditional":{if(e.check.t==="var"){let a=e.check.name,i=$(n,a),l=i?j(i):void 0,u=l?.t==="union"?l.of:l?.t==="boolean"?[f.literal(true),f.literal(false)]:null;if(u)return {t:"union",of:u.map(p=>b(e,{...n,[a]:p},t))}}let r=e.distributive||e.check.t==="var"&&ve(n,e.check.name)&&$(n,e.check.name)?.t!=="var",o=e.infer?.length?xn(e.infer,n,N(e),t):{inner:n,decls:void 0};return {t:"conditional",check:b(e.check,n,t),extends:b(e.extends,o.inner,t),then:b(e.then,o.inner,t),else:b(e.else,o.inner,t),...o.decls?{infer:o.decls}:{},...r?{distributive:true}:{}}}case "intersection":return U({of:e.of.map(r=>b(r,n,t))});case "returnType":return j({t:"returnType",fn:b(e.fn,n,t)});case "parameters":return j({t:"parameters",fn:b(e.fn,n,t)});default:return e}}function hn(e,n,t,r=e.name){return !e.bound&&!e.default&&r===e.name?e:{...e,name:r,...e.bound?{bound:b(e.bound,n,t)}:{},...e.default?{default:b(e.default,n,t)}:{}}}function gn(e,n,t,r){let o=e.typeParams?.length?xn(e.typeParams,n,N(e),t,r):{inner:n,decls:void 0},a=o.inner;return {...e,params:e.params.map(i=>({...i,type:b(i.type,a,t)})),returns:b(e.returns,a,t),...e.guard?{guard:{...e.guard,type:b(e.guard.type,a,t)}}:{},...o.decls?{typeParams:o.decls}:{}}}function vn(e,n){return e.typeParams?.some(t=>n.has(t.name))?gn(e,{},new WeakSet,n):e}function xn(e,n,t,r,o=new Set){let a=new Set(e.map(h=>h.name)),i={},l=new Set;for(let h in n)if(!a.has(h)&&(w(i,h,n[h]),t.has(h)))for(let v of N(n[h]))l.add(v);let u=e.filter(h=>l.has(h.name)||o.has(h.name));if(u.length===0)return {inner:i,decls:e.map(h=>hn(h,i,r))};let p=new Set([...a,...t,...l,...o]),y=new Map;for(let h of u){let v=1;for(;p.has(`${h.name}_${v}`);)v++;let O=`${h.name}_${v}`;p.add(O),y.set(h.name,O);}let x={};for(let[h,v]of y)w(x,h,{t:"var",name:v});let s={...i};for(let h of u){let v=y.get(h.name);w(s,h.name,{t:"var",name:v,...h.bound?{bound:b(h.bound,{...i,...x},r)}:{}});}return {inner:s,decls:e.map(h=>hn(h,s,r,y.get(h.name)??h.name))}}var cr=new Set,et=new WeakMap;function N(e){let n=et.get(e);if(n)return n;let t=new Set;P(e,t,new WeakSet);let r=t.size===0?cr:t;return et.set(e,r),r}function bn(e,n,t){let r=new Set;t(r);for(let o of r)e.includes(o)||n.add(o);}function nt(e,n,t){let r=e.typeParams??[];bn(r.map(o=>o.name),n,o=>{for(let a of r)P(a,o,t);for(let a of e.params)P(a.type,o,t);P(e.returns,o,t),e.guard&&P(e.guard.type,o,t);});}function P(e,n,t){switch(e.t){case "var":n.add(e.name),e.bound&&P(e.bound,n,t),e.default&&P(e.default,n,t);return;case "array":P(e.items,n,t);return;case "tuple":for(let r of e.elements)P(r,n,t);return;case "union":for(let r of e.of)P(r,n,t);return;case "object":if(t.has(e))return;t.add(e);for(let r in e.props)P(e.props[r].type,n,t);e.index&&P(e.index.value,n,t);return;case "fn":if(t.has(e))return;t.add(e),nt(e,n,t);return;case "overload":for(let r of e.signatures)nt(r,n,t);return;case "apply":for(let r of e.args)P(r,n,t);return;case "keyof":P(e.of,n,t);return;case "index":P(e.obj,n,t),P(e.key,n,t);return;case "mapped":P(e.over,n,t),e.modifiers&&P(e.modifiers,n,t),bn([e.key],n,r=>P(e.body,r,t));return;case "conditional":{P(e.check,n,t);let r=e.infer??[];bn(r.map(o=>o.name),n,o=>{for(let a of r)P(a,o,t);P(e.extends,o,t),P(e.then,o,t),P(e.else,o,t);});return}case "intersection":for(let r of e.of)P(r,n,t);return;case "returnType":case "parameters":P(e.fn,n,t);return;default:return}}function pr(e,n){if(e.size===0)return false;for(let t of e)if(ve(n,t))return true;return false}function Be(e){let n=[];for(let a of e){let i=j(a);if(i.t!=="object")return null;n.push(i);}let t=new Set;for(let a of n)for(let i in a.props)t.add(i);let r={};for(let a of t){let i=[],l=true,u=false;for(let p of n){let y=$(p.props,a);y&&(i.push(y.type),y.optional||(l=false),y.readonly&&(u=true));}w(r,a,{type:U({of:i}),optional:l,...u?{readonly:true}:{}});}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:U({of:[o.value,a.index.value]}),...o.readonly&&a.index.readonly?{readonly:true}:{}}:a.index);return o?{t:"object",props:r,index:o}:{t:"object",props:r}}function je(e,n=j,t=j){if(e.typeVariable&&e.over.t==="keyof"&&e.over.of.t!=="var"){let i=dr(e,n(e.over.of),n,t);if(i!==void 0)return i}if(e.over.t==="keyof"){let i=n(e.over.of),l=i.t==="intersection"?Be(i.of)??i:i;if(l.t==="object")return Sn(e,l,Object.keys(l.props),l.index?.key,t);if(l.t==="any")return Sn(e,void 0,[],"string",t)}let r=fr(j(e.over));if(r===null)return null;let o=e.modifiers?n(e.modifiers):void 0,a=o?.t==="intersection"?Be(o.of)??o:o;return Sn(e,a?.t==="object"?a:void 0,r.names,r.index,t)}function fr(e){let n=[],t;for(let r of e.t==="union"?e.of:[e])switch(r.t){case "literal":(typeof r.value=="string"||typeof r.value=="number")&&n.push(r.value);continue;case "string":case "any":t="string";continue;case "number":t!=="string"&&(t="number");continue;case "var":case "apply":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "typeQuery":return null;case "intersection":if(N(r).size>0)return null;continue;default:continue}return {names:n,index:t}}function Sn(e,n,t,r,o){let a={};for(let l of t){let u=String(l),p=n?$(n.props,u):void 0,y=!!e.optional||!e.excludeOptional&&!!p?.optional,x=!!e.readonly||!e.excludeReadonly&&!!p?.readonly,s=b(e.body,{[e.key]:f.literal(l)});if(!y&&p?.optional){let h=o(s);if(rt(h))return null;s=K(h).type;}w(a,u,{type:s,...y?{optional:true}:{},...x?{readonly:true}:{}});}if(r===void 0)return {t:"object",props:a};let i=b(e.body,{[e.key]:r==="number"?f.number:f.string});return {t:"object",props:a,index:{key:r,value:e.optional?A(i):i,...e.readonly?{readonly:true}:{}}}}var rt=e=>e.t==="index"||e.t==="keyof"||e.t==="mapped"||e.t==="conditional"||e.t==="returnType"||e.t==="parameters"||e.t==="apply"||e.t==="typeQuery",sr=e=>({...e.optional?{optional:true}:{},...e.readonly?{readonly:true}:{},...e.excludeOptional?{excludeOptional:true}:{},...e.excludeReadonly?{excludeReadonly:true}:{}});function dr(e,n,t,r){let o=a=>e.readonly?true:e.excludeReadonly?false:!!a;switch(n.t){case "union":{let a=e.over.of;return f.union(n.of.map(i=>{let l={...e,over:{t:"keyof",of:i},body:Pe(e.body,a,i)};return je(l,t,r)??l}))}case "array":{let a=tt(e,f.number,true,r);return a===null?null:f.array(a,o(n.readonly))}case "tuple":{let a=n.flags??n.elements.map(()=>"req"),i=[];for(let u=0;u<n.elements.length;u++){let p=tt(e,f.literal(String(u)),a[u]==="optional",r);if(p===null)return null;i.push(p);}let l=a.map(u=>u==="rest"?"rest":e.optional?"optional":e.excludeOptional?"req":u);return f.tuple(i,l,o(n.readonly))}case "string":case "number":case "boolean":case "literal":case "null":case "undefined":case "void":case "nonPrimitive":return n;default:return}}function Pe(e,n,t){let r=new Map,o=a=>{if(a===n)return t;if(a===null||typeof a!="object")return a;let i=r.get(a);if(i!==void 0)return i;r.set(a,a);let l=false,u;if(Array.isArray(a)){let p=a.map(y=>{let x=o(y);return x!==y&&(l=true),x});u=l?p:a;}else {let p={};for(let y of Object.keys(a)){let x=$(a,y),s=o(x);s!==x&&(l=true),w(p,y,s);}u=l?p:a;}return r.set(a,u),u};return o(e)}function tt(e,n,t,r){let o=b(e.body,{[e.key]:n});if(e.optional)return A(o);if(e.excludeOptional&&t){let a=r(o);return rt(a)?null:K(a).type}return o}function ot(e){let n=e.length;for(;n>0&&e[n-1].default;)n--;return {min:n,max:e.length}}var at=(e,n)=>{let{min:t,max:r}=ot(e);return n>=t&&n<=r};function ze(e,n){let t={};return e.forEach((r,o)=>{o<n.length?w(t,r.name,n[o]):r.default&&w(t,r.name,b(r.default,t));}),t}function F(e,n){if(e.t!=="apply")return false;let t=$(n,e.name);return t!==void 0&&at(t.params,e.args.length)}function W(e,n){if(e.t!=="apply")return e;let t=$(n,e.name);return !t||!at(t.params,e.args.length)?e:b(t.body,ze(t.params,e.args))}function V(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(r=>`${r}${e.props[r].optional?"?":""}:${V(e.props[r].type)}`).join(","),t=e.index?`,[${e.index.key}]:${V(e.index.value)}`:"";return `{${n}${t}}`}case "array":return `[${V(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(V).join(",")})`;case "union":return `(${e.of.map(V).sort().join("|")})`;case "fn":return `${e.typeParams?.length?`<${e.typeParams.map(t=>t.name).join(",")}>`:""}(${e.params.map(t=>V(t.type)).join(",")})=>${e.guard?`is${e.guard.param}:${V(e.guard.type)}`:V(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(V).join(",")}>`;case "intersection":return `&(${e.of.map(V).sort().join("&")})`;case "returnType":return `RT<${V(e.fn)}>`;default:return e.t}}var kn=()=>D().maxInstantiationDepth;function M(e,n={},t=0){if(t>kn())return e;if(e.t==="var")return e.bound?M(e.bound,n,t+1):e;if(F(e,n))return M(W(e,n),n,t+1);if(e.t==="mapped"){let r=Me(e,n,t+1);if(r)return M(r,n,t+1)}if(e.t==="intersection")return U(e);if(e.t==="union"){let r=e.of.flatMap(a=>{let i=M(a,n,t+1);return i.t==="union"?i.of:[i]});return r.length===e.of.length&&r.every((a,i)=>a===e.of[i])?e:{t:"union",of:r}}return e}function Me(e,n,t=0){let r=a=>M(a,n,t),o=a=>fe(a,n,t);return je(e,r,o)??je({...e,over:Oe(e.over,n,t)},r,o)}function Oe(e,n,t=0){if(t>kn())return e;let r=H(e,n);if(r!==e)return Oe(r,n,t+1);if(e.t==="conditional"){let o=Q(e,n);if(o)return Oe(o,n,t+1)}return F(e,n)?Oe(W(e,n),n,t+1):e.t==="union"?I(e.of.map(o=>Oe(o,n,t+1))):e}function fe(e,n,t=0){if(t>kn())return e;let r=H(e,n);if(r!==e)return fe(r,n,t+1);let o=M(e,n,t);return o===e?e:fe(o,n,t+1)}function H(e,n={}){let t=j(e);if(t!==e)return t;switch(e.t){case "keyof":{let r=fe(e.of,n);return r===e.of?e:j({...e,of:r})}case "index":{let r=fe(e.obj,n),o=fe(e.key,n);return r===e.obj&&o===e.key?e:j({...e,obj:r,key:o})}case "returnType":{let r=fe(e.fn,n);return r===e.fn?e:j({...e,fn:r})}default:return e}}var qe=e=>typeof e=="string"?f.string:typeof e=="number"?f.number:f.boolean;function Tn(e){return e.t==="literal"&&e.fresh?qe(e.value):e}function Ke(e){if(e.t==="literal")return e.fresh?qe(e.value):e;if(e.t==="union"){let n=e.of.map(Ke);return n.some((t,r)=>t!==e.of[r])?I(n):e}return e}function ut(e){if(e.t==="literal")return qe(e.value);if(e.t==="union"){let n=e.of.map(ut);return n.some((t,r)=>t!==e.of[r])?I(n):e}return e}function mr(e){return _(e,new WeakSet)}function yr(e){switch(e.t){case "array":return {t:"array",items:_(e.items,new WeakSet),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>_(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return ct(e,new WeakSet);case "fn":case "overload":return _(e,new WeakSet);default:return e}}function _(e,n){if(e.t==="literal")return e.fresh?qe(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:_(e.items,n),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(t=>_(t,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return n.add(e),ct(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(t=>_(t,n))};case "fn":return n.add(e),{...e,params:e.params.map(t=>({...t,type:_(t.type,n)})),returns:_(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:_(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(t=>_(t,n))};default:return e}}function ct(e,n){let t={};for(let i in e.props)w(t,i,{type:_(e.props[i].type,n),optional:e.props[i].optional,...e.props[i].readonly?{readonly:true}:{}});let r=e.index?{key:e.index.key,value:_(e.index.value,n),...e.index.readonly?{readonly:true}:{}}:void 0,o=e.fromLiteral?{fromLiteral:true}:{},a=e.hasSpread?{hasSpread:true}:{};return r?{t:"object",props:t,index:r,...o,...a}:{t:"object",props:t,...o,...a}}function pt(e){if(!e.siblings){let n=[];for(let t of pt(e.parent)){if(t.t!=="object"||!t.fromLiteral)continue;let r=B(t.props,e.propertyName);r&&(r.type.t==="union"?n.push(...r.type.of):n.push(r.type));}e.siblings=n;}return e.siblings}function Sr(e){if(!e.propNames){let n=new Set;for(let t of pt(e))if(t.t==="object"&&t.fromLiteral&&!t.hasSpread)for(let r in t.props)n.add(r);e.propNames=[...n];}return e.propNames}var hr=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function gr(e,n,t){let r={};for(let a in e.props){let i=e.props[a],l=se(i.type,n&&{parent:n,propertyName:a},t);w(r,a,l===i.type?i:{...i,type:l});}if(n)for(let a of Sr(n))B(r,a)||w(r,a,{type:f.undefined,optional:true});let o=e.index?{key:e.index.key,value:se(e.index.value,void 0,t),...e.index.readonly?{readonly:true}:{}}:void 0;return o?{t:"object",props:r,index:o}:{t:"object",props:r}}var it=new WeakMap;function ge(e,n){let t=it.get(e);if(t!==void 0)return t;if(n.has(e))return false;n.add(e);let r=false;switch(e.t){case "object":r=!!e.fromLiteral||Object.values(e.props).some(o=>ge(o.type,n))||!!e.index&&ge(e.index.value,n);break;case "array":r=!!e.fromLiteral||ge(e.items,n);break;case "tuple":r=!!e.fromLiteral||e.elements.some(o=>ge(o,n));break;case "union":case "intersection":r=e.of.some(o=>ge(o,n));break}return n.delete(e),it.set(e,r),r}var lt=new WeakMap;function se(e,n,t){if(!ge(e,new WeakSet))return e;if(!n){let o=lt.get(e);if(o)return o}if(t.has(e))return e;t.add(e);let r=xr(e,n,t);return t.delete(e),n||lt.set(e,r),r}function xr(e,n,t){switch(e.t){case "object":return e.fromLiteral?gr(e,n,t):e;case "union":{let r=n??{siblings:e.of},o=e.of.map(a=>a.t==="null"||a.t==="undefined"?a:se(a,r,t));return o.some(hr)?I(o):o.every((a,i)=>a===e.of[i])?e:f.union(o)}case "intersection":{let r=false,o=e.of.map(a=>{let i=se(a,void 0,t);return i!==a&&(r=true),i});return r?f.intersection(o):e}case "array":{let r=se(e.items,void 0,t);return r===e.items&&!e.fromLiteral?e:{t:"array",items:r,...e.readonly?{readonly:true}:{}}}case "tuple":{let r=false,o=e.elements.map(a=>{let i=se(a,void 0,t);return i!==a&&(r=true),i});return !r&&!e.fromLiteral?e:{t:"tuple",elements:o,...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}}}default:return e}}function Ie(e){return se(e,void 0,new WeakSet)}var mt=Object.freeze({t:"union",of:Object.freeze([])});function X(e){if(e===mt)return true;switch(e.t){case "array":return X(e.items);case "tuple":return e.elements.some(X);case "union":case "intersection":return e.of.some(X);case "apply":return e.args.some(X);case "object":return !!e.fromLiteral&&(Object.values(e.props).some(n=>X(n.type))||!!e.index&&X(e.index.value));default:return false}}var L={NakedTypeVariable:1,HomomorphicMappedType:2,PartialHomomorphicMappedType:4,MappedTypeConstraint:8,ContravariantConditional:16,ReturnType:32,LiteralKeyof:64,NoConstraints:128,AlwaysStrict:256,MaxValue:512,PriorityImpliesCombination:104,Circularity:-1};function Ye(e){let n=new Map;for(let t of e??[])n.set(t.name,{co:[],contra:[]});return n}function br(e){if(e.length<=1)return [...e];let n=e.filter(_e);return n.length?[...e.filter(t=>!_e(t)),I(n)]:[...e]}function vr(e){let n;for(let t of e){if(t.t!=="literal")return false;let r=typeof t.value;if(n===void 0)n=r;else if(r!==n)return false}return true}function kr(e,n){if(e.length)return vr(e)?I([...e]):e.reduce((t,r)=>z(t,r,n)?r:t)}function yt(e,n={},t=false){let r=br(e);if(t)return r.length?Ie(I(r)):void 0;let o=r.filter(l=>l.t==="null"||l.t==="undefined"),a=r.filter(l=>l.t!=="null"&&l.t!=="undefined");if(!a.length)return Ie(I(r));let i=kr(a,n);if(i!==void 0)return Ie(o.length?I([i,...o]):i)}function St(e,n={},t=false){if(e.length)return t?f.intersection(e):e.reduce((r,o)=>z(o,r,n)?o:r)}var Tr=e=>e.priority!==void 0&&(e.priority&L.PriorityImpliesCombination)!==0;function ht(e,n={}){let t=Tr(e),r=e.co.length?yt(e.co,n,t):void 0;if(!e.contra.length)return r;let o=St(e.contra,n,t);if(o===void 0)return r;let a=r!==void 0&&r.t==="union"&&r.of.length===0;return r!==void 0&&!a&&z(r,o,n)?r:o}function Cn(e,n){let{typeParams:t,...r}=e;return {...r,params:e.params.map(o=>({...o,type:b(o.type,n)})),returns:b(e.returns,n),...e.guard?{guard:{...e.guard,type:b(e.guard.type,n)}}:{}}}function Ee(e){return e.typeParams?.length?Cn(e,Object.fromEntries(e.typeParams.map(n=>[n.name,f.any]))):e}function wr(e){let n=e.typeParams;if(!n?.length)return e;let t=Object.fromEntries(n.map(a=>[a.name,a.bound??f.unknown])),r=n.map(a=>a.bound??f.unknown);for(let a=0;a<n.length-1;a++)r=r.map(i=>b(i,t));let o=Object.fromEntries(n.map(a=>[a.name,f.any]));return r=r.map(a=>b(a,o)),Cn(e,Object.fromEntries(n.map((a,i)=>[a.name,r[i]])))}function gt(e,n,t={}){if(!e.some(o=>!$(n,o.name)||o.bound))return n;let r={...n};for(let o of e){let a=$(r,o.name)??(o.default?b(o.default,r):f.unknown);if(o.bound){let i=b(o.bound,r);z(a,i,t)||(a=i);}w(r,o.name,a);}return r}var Pn=(e,n)=>n<e.types.length?e.types[n]:e.rest?e.types[e.types.length-1]:void 0;function xt(e,n,t){let r=Te(e),o=Te(n),a=o.types.length-(o.rest?1:0),i=r.rest?a:Math.min(r.types.length,a);for(let l=0;l<i;l++){let u=Pn(r,l),p=Pn(o,l);u&&p&&t(u,p);}o.rest&&t(Ue(e,i),o.rest);}function bt(e,n,t){e.guard&&n.guard&&e.guard.param===n.guard.param?t(e.guard.type,n.guard.type):t(e.returns,n.returns);}var On=e=>e.t==="fn"?[e]:e.t==="overload"?e.signatures:[],vt=e=>N(e).size>0,de=e=>e.t==="union"&&e.of.length>0,Mn=e=>de(e)?e.of:[e];function In(e,n){if(e===n)return true;if(e.t==="var"&&n.t==="var")return e.name===n.name;let t=ce(e);return t!==null&&t===ce(n)}var jr=(e,n)=>In(e,n)||e.t==="literal"&&(n.t==="string"&&typeof e.value=="string"||n.t==="number"&&typeof e.value=="number"),Pr=(e,n,t)=>e.t==="apply"&&n.t==="apply"&&e.name===n.name&&(e.args.length>0||!F(e,t)),ft=e=>e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"||e.t==="mapped"||e.t==="intersection",Or=e=>e.t==="var"||e.t==="keyof"||e.t==="index"||e.t==="conditional",wn=e=>e.t==="mapped"&&vt(e.over);function xe(e){let n=new Map,t=r=>{if(r.t==="intersection")return r.of.forEach(t);if(r.t==="object")for(let o in r.props){let a=r.props[o],i=n.get(o);n.set(o,i?{type:f.intersection([i.type,a.type]),optional:i.optional&&a.optional}:a);}};return t(e),n}var He=e=>e.optional?A(e.type):e.type;function Z(e,n){if(n==="number"){if(e.t==="array")return e.items;if(e.t==="tuple")return f.union([...e.elements])}if(e.t==="object"&&e.index?.key===n)return e.index.value}function st(e,n){if(e.t!=="object"&&e.t!=="intersection")return;let t=[];for(let[r,o]of xe(e))(n==="string"||Mr(r))&&t.push(He(o));if(n==="string"){let r=Z(e,"number");r&&t.push(r);}return t.length?f.union(t):void 0}var Mr=e=>String(Number(e))===e;function Ir(e,n){return e.t==="tuple"&&n.t==="tuple"?Er(e,n):dt(e,n)&&dt(n,e)}function Er(e,n){let t=Ge(e),r=Ge(n);return r.minLength>t.minLength||!r.rest&&(!!t.rest||r.length<t.length)}function Ge(e){let n=he(e),t=n<0?e.elements.length:n,r=(e.flags??[]).findIndex(a=>a!=="req"),o=r<0?t:Math.min(r,t);return n<0?{length:t,minLength:o}:{length:t,minLength:o,rest:e.elements[n]}}function dt(e,n){let t=xe(e);for(let[r,o]of xe(n)){if(o.optional)continue;let a=t.get(r);if(!a)return true;let i=ce(o.type);if(i!==null&&(o.type.t==="literal"||o.type.t==="null"||o.type.t==="undefined")&&a.type.t!=="any"&&ce(a.type)!==i)return true}return false}function Cr(e){let n={};for(let t of Mn(e))t.t==="literal"&&typeof t.value=="string"&&w(n,t.value,{type:f.any,optional:false});return e.t==="string"?f.object(n,{key:"string",value:f.object({})}):f.object(n)}var kt=e=>!X(e)||e.t==="object"&&!!e.fromLiteral&&Object.values(e.props).some(n=>kt(n.type));function te(e,n,t,r={},o=0,a=false){let i=o,l=a,u=L.MaxValue,p=true,y=new WeakMap,x=0;s(n,t);function s(c,d){if(vt(d)){if(c.t==="apply"&&d.t==="apply"&&c.name===d.name&&c.args.length>0){_n(c.args,d.args);return}if(F(c,r)||F(d,r)){re(c,d,(m,g)=>{if(!(x>=D().maxInstantiationDepth)){x++;try{F(m,r)?s(W(m,r),g):s(m,W(g,r));}finally{x--;}}});return}if(c===d&&(c.t==="union"||c.t==="intersection")){for(let m of c.of)s(m,m);return}if(de(d)){let[m,g]=oe(Mn(c),d.of,jr),[k,T]=oe(m,g,(E,ae)=>Pr(E,ae,r));if(!T.length)return;if(d=f.union(T),!k.length){O(c,d,L.NakedTypeVariable);return}c=f.union(k);}else if(d.t==="intersection"&&d.of.some(m=>v(m)||wn(m)&&m.over.t==="keyof"&&!!v(m.over.of))&&!de(c)){let[m,g]=oe(c.t==="intersection"?c.of:[c],d.of,In);if(!m.length||!g.length)return;c=f.intersection(m),d=f.intersection(g);}if(d.t==="var"){if(X(c))return;let m=v(d);if(m){if((m.priority===void 0||i<m.priority)&&(m.co.length=0,m.contra.length=0,m.priority=i),i===m.priority){let g=l?m.contra:m.co;g.includes(c)||g.push(c);}u=Math.min(u,i);return}}if(c.t==="array"&&d.t==="array")s(c.items,d.items);else if(c.t==="apply"&&d.t==="apply"&&c.name===d.name)_n(c.args,d.args);else if(c.t==="keyof"&&d.t==="keyof")l=!l,s(c.of,d.of),l=!l;else if((c.t==="literal"||c.t==="string"||h(c))&&d.t==="keyof"){let m=Cr(c);l=!l,O(m,d.of,L.LiteralKeyof),l=!l;}else if(c.t==="index"&&d.t==="index")s(c.obj,d.obj),s(c.key,d.key);else if(c.t==="conditional"&&d.t==="conditional")s(c.check,d.check),s(c.extends,d.extends),s(c.then,d.then),s(c.else,d.else);else if(d.t==="conditional"){let m=i;i|=l?L.ContravariantConditional:0,Dn(c,[d.then,d.else],"conditional"),i=m;}else if(de(d)||d.t==="intersection")Dn(c,d.of,d.t==="intersection"?"intersection":"union");else if(de(c))for(let m of c.of)s(m,d);else {if(!(i&L.NoConstraints&&(c.t==="intersection"||Or(c)))){let m=M(c,r);if(m!==c&&p&&!ft(m))return p=false,s(m,d);c=m;}ft(c)&&re(c,d,zt);}}}function h(c){return de(c)&&c.of.every(d=>ce(d)!==null)}function v(c){return c.t==="var"?e.get(c.name):void 0}function O(c,d,m){let g=i;i|=m,s(c,d),i=g;}function re(c,d,m){let g=y.get(c),k=g?.get(d);if(k!==void 0){u=Math.min(u,k);return}g||y.set(c,g=new Map),g.set(d,L.Circularity);let T=u;u=L.MaxValue,m(c,d),g.set(d,u),u=Math.min(u,T);}function oe(c,d,m){let g=new Set,k=new Set;for(let T of d)for(let E of c)m(E,T)&&(s(E,T),g.add(E),k.add(T));return [c.filter(T=>!g.has(T)),d.filter(T=>!k.has(T))]}function _n(c,d){let m=Math.min(c.length,d.length);for(let g=0;g<m;g++)s(c[g],d[g]);}function Dt(c,d){l=!l,s(c,d),l=!l;}function Bt(c){let d;for(let m of c){let g=m.t==="intersection"?m.of.find(k=>!!v(k)):void 0;if(!g||d&&!In(g,d))return;d=g;}return d}function Dn(c,d,m){let g=0;if(m==="union"){let k,T=Mn(c),E=T.map(()=>false),ae=false;for(let Y of d)if(v(Y))k=Y,g++;else for(let be=0;be<T.length;be++){let ln=u;u=L.MaxValue,s(T[be],Y),u===i&&(E[be]=true),ae||(ae=u===L.Circularity),u=Math.min(u,ln);}if(g===0){let Y=Bt(d);Y&&O(c,Y,L.NakedTypeVariable);return}if(g===1&&!ae){let Y=T.filter((be,ln)=>!E[ln]);if(Y.length){s(f.union(Y),k);return}}}else for(let k of d)v(k)?g++:s(c,k);if(m==="intersection"?g===1:g>0)for(let k of d)v(k)&&O(c,k,L.NakedTypeVariable);}function an(c,d,m){if(de(m)){let g=false;for(let k of m.of)g=an(c,d,k)||g;return g}if(m.t==="keyof"){if(v(m.of)&&m.of.t==="var"){let k=$r(c,d,m.of.name,r);k&&O(k,m.of,X(c)?L.PartialHomomorphicMappedType:L.HomomorphicMappedType);}return true}if(m.t==="var"){if(O(H(f.keyof(c),r),m,L.MappedTypeConstraint),m.bound&&an(c,d,m.bound))return true;let g=[...xe(c).values()].map(He),k=Z(c,"string"),T=Z(c,"number");return k&&g.push(k),T&&g.push(T),s(f.union(g),d.body),true}return false}function zt(c,d){if(c.t==="array"&&d.t==="array"){s(c.items,d.items);return}if(wn(c)&&wn(d)&&(s(c.over,d.over),s(c.body,d.body)),d.t==="mapped"){if(an(c,d,d.over))return;let m=Me(d,r);if(!m)return;d=m;}if(!Ir(c,d)){if(c.t==="array"||c.t==="tuple"){if(d.t==="tuple"){qt(c,d);return}if(d.t==="array"){let m=Z(c,"number");m&&s(m,d.items);return}}Kt(c,d),Ht(c,d),Qt(c,d);}}function qt(c,d){let m=c.t==="tuple"?Ge(c):c.t==="array"?{length:0,rest:c.items}:void 0;if(!m)return;let g=Ge(d),k=c.t==="tuple"?c.elements:[],T=g.length<m.length||m.rest?g.length:m.length;for(let E=0;E<T;E++)s(E<m.length?k[E]:m.rest,d.elements[E]);if(g.rest){let E=T<m.length?k.slice(T,m.length):[];m.rest&&E.push(m.rest),E.length&&s(f.union(E),g.rest);}}function Kt(c,d){let m=xe(c);for(let[g,k]of xe(d)){let T=m.get(g);T&&s(He(T),He(k));}}function Ht(c,d){let m=On(c),g=On(d),k=Math.min(m.length,g.length);for(let T=0;T<k;T++){let E=wr(m[m.length-k+T]),ae=Ee(g[g.length-k+T]);xt(E,ae,Dt),bt(E,ae,s);}}function Qt(c,d){let m=Z(d,"string");if(m){let k=Z(c,"string")??st(c,"string");k&&s(k,m);}let g=Z(d,"number");if(g){let k=Z(c,"number")??Z(c,"string")??st(c,"number");k&&s(k,g);}}}function $n(e,n={}){let t={};for(let[r,o]of e){if(!o.co.length&&!o.contra.length)continue;let a=ht(o,n);a&&w(t,r,a);}return t}function Ln(e,n,t={}){let r=e.typeParams??[],o=Ye(r);return xt(n,e,(a,i)=>te(o,a,i,t)),bt(n,e,(a,i)=>te(o,a,i,t,L.ReturnType)),Cn(e,gt(r,$n(o,t),t))}var En="@rev";function G(e,n,t){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===t)return f.var(En);switch(e.t){case "array":return {t:"array",items:G(e.items,n,t)};case "tuple":return {t:"tuple",elements:e.elements.map(r=>G(r,n,t)),...e.flags?{flags:e.flags}:{}};case "union":return f.union(e.of.map(r=>G(r,n,t)));case "fn":return {...e,params:e.params.map(r=>({...r,type:G(r.type,n,t)})),returns:G(e.returns,n,t)};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>G(r,n,t))};case "returnType":return {t:"returnType",fn:G(e.fn,n,t)};case "object":{let r={};for(let o in e.props)w(r,o,{type:G(e.props[o].type,n,t),optional:e.props[o].optional,...e.props[o].readonly?{readonly:true}:{}});return e.index?{t:"object",props:r,index:{key:e.index.key,value:G(e.index.value,n,t),...e.index.readonly?{readonly:true}:{}}}:{t:"object",props:r}}default:return e}}function jn(e,n,t,r){let o=new Map([[En,{co:[],contra:[]}]]);te(o,e,G(n.body,t,n.key),r);let a=o.get(En),i=a.co.length?I(a.co):a.contra.length?f.intersection(a.contra):void 0;return i?Tn(i):f.unknown}function $r(e,n,t,r){if(!kt(e))return;if(e.t==="array")return f.array(jn(e.items,n,t,r));if(e.t==="tuple"){let i=e.elements.map(u=>jn(u,n,t,r)),l=e.elements.map((u,p)=>{let y=e.flags?.[p]??"req";return n.optional&&y!=="rest"?"req":y});return {...f.tuple(i,l),...e.readonly?{readonly:true}:{}}}if(e.t!=="object")return;let o=Object.keys(e.props);if(!o.length&&e.index?.key!=="string")return;let a={};for(let i of o){let l=$(e.props,i);w(a,i,{type:jn(l.type,n,t,r),...l.optional&&!n.optional?{optional:true}:{},...l.readonly&&!n.readonly?{readonly:true}:{}});}return {t:"object",props:a}}function Lr(e){if(e.t!=="tuple")return e;let n=he(e);return n<0?void 0:f.array(e.elements[n])}function Rr(e,n,t,r){let o=Te(n),a=n.params[n.params.length-1],i=a?.variadic?Lr(a.type):void 0,l=i&&i.t!=="array"&&i.t!=="any"&&!(i.t==="union"&&i.of.length===0)?i:void 0,u=l?Math.min(o.types.length-1,t.length):t.length;for(let p=0;p<u;p++){let y=Pn(o,p);y&&te(e,t[p],y,r);}l&&te(e,f.tuple(t.slice(u).map(Ke)),l,r);}var Vr=e=>{let n=On(e);return n.length===1?n[0]:void 0};function Fr(e,n,t={},r){let o=Ye(e.typeParams);if(!o.size)return {returns:e.returns,bindings:{}};if(r){let i=Vr(r),l=i?.typeParams?.length?(({typeParams:u,...p})=>p)(i):r;te(o,l,e.returns,t,L.ReturnType);}Rr(o,e,n,t);let a=$n(o,t);return {returns:b(e.returns,a),bindings:a}}function Nr(e,n,t){let r=new Map,o=(u,p)=>r.set(u,[...r.get(u)??[],p]),a=u=>u?.t==="var"&&n.has(u.name),i=u=>{if(Array.isArray(u))return u.forEach(i);if(!u||typeof u!="object")return;let p=u;if(p.t==="fn")for(let y of p.params)y.variadic&&a(y.type)&&o(y.type.name,f.array(f.unknown));if(p.t==="apply"){let y=$(t,p.name);y&&p.args.forEach((x,s)=>{let h=y.params[s]?.bound;if(!a(x)||!h)return;let v=b(h,ze(y.params,p.args));v.t==="var"&&v.name===x.name||o(x.name,v);});}for(let y of Object.keys(p))i($(p,y));};i(e);let l=new Map;for(let[u,p]of r)l.set(u,p.length===1?p[0]:f.intersection(p));return l}function Rn(e,n={}){let t=Ye(e.infer);te(t,e.check,e.extends,n,L.NoConstraints|L.AlwaysStrict);let r=Nr(e.extends,new Set(t.keys()),n),o={};for(let a of e.infer??[]){let i=t.get(a.name),l=i?.co.length?I(i.co):i?.contra.length?f.intersection(i.contra):void 0,u=a.bound??r.get(a.name);u&&(!l||!z(l,u,n))&&(l=u),w(o,a.name,l??f.unknown);}return o}function Tt(e,n={},t=0){if(!e.infer?.length)return null;let r=Vn(e,n,l=>Tt(l,n,t));if(r!==void 0)return r;if(N(e.check).size>0)return null;let o=Rn(e,n),a=new WeakSet,i=Qe(b(e.extends,o),n,a,t);return Ze(Je(e.check,i,n),()=>Qe(b(e.then,o),n,a,t),()=>Qe(b(e.else,o),n,a,t))}function Qe(e,n={},t=new WeakSet,r=0,o=new Set){let a=r,i=D().maxTypeDepth,l=new Set,u=(s,h)=>h?.length?new Set([...s,...h.map(v=>v.name)]):s,p=(s,h)=>({...s,...s.bound?{bound:x(s.bound,h)}:{},...s.default?{default:x(s.default,h)}:{}}),y=(s,h)=>{let v=u(h,s.typeParams);return {...s,params:s.params.map(O=>({...O,type:x(O.type,v)})),returns:x(s.returns,v),...s.guard?{guard:{...s.guard,type:x(s.guard.type,v)}}:{},...s.typeParams?{typeParams:s.typeParams.map(O=>p(O,v))}:{}}},x=(s,h=l)=>{switch(s.t){case "var":return h.has(s.name)?p(s,h):f.unknown;case "array":return {...s,items:x(s.items,h)};case "tuple":return {...s,elements:s.elements.map(v=>x(v,h))};case "union":return f.union(s.of.map(v=>x(v,h)));case "object":{if(t.has(s))return s;t.add(s);let v={};for(let re in s.props){let oe=s.props[re];w(v,re,{type:x(oe.type,h),optional:oe.optional,...oe.readonly?{readonly:true}:{}});}let O=s.index?{key:s.index.key,value:x(s.index.value,h),...s.index.readonly?{readonly:true}:{}}:void 0;return t.delete(s),O?{t:"object",props:v,index:O}:{t:"object",props:v}}case "fn":{if(t.has(s))return s;t.add(s);let v=y(s,h);return t.delete(s),v}case "overload":return {t:"overload",signatures:s.signatures.map(v=>y(v,h))};case "apply":{if(F(s,n)){let v=W(s,n);if(v.t==="conditional"){if(a>=i)throw new ie;a++;try{let O=x(v,h);if(O.t!=="conditional")return O}finally{a--;}}}return {t:"apply",name:s.name,args:s.args.map(v=>x(v,h))}}case "conditional":{let v=s.infer?.length?Tt(s,n,a):Q(s,n);if(v)return x(v,h);let O=u(h,s.infer);return {t:"conditional",check:x(s.check,h),extends:x(s.extends,O),then:x(s.then,O),else:x(s.else,O),...s.infer?{infer:s.infer.map(re=>p(re,O))}:{},...s.distributive?{distributive:true}:{}}}case "intersection":return U({of:s.of.map(v=>x(v,h))});case "returnType":return j({t:"returnType",fn:x(s.fn,h)});default:return s}};return x(e,o)}var Wr=f.object({}),Nn=(e,n,t="assignable")=>({seen:new WeakMap,exp:new Set,schemes:e,relation:t,assumed:0,explain:n,sourceStack:[],targetStack:[]}),Fn=0;function C(e,n,t){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:t,kind:"type"}),false}function Wn(e,n,t=0){if(t>D().maxInstantiationDepth)return e;if(F(e,n)){let r=W(e,n);if(r.t!=="conditional")return e;let o=Q(r,n);return o?Wn(o,n,t+1):e}if(e.t==="conditional"){let r=Q(e,n);return r?Wn(r,n,t+1):e}return e}function Ar(e,n,t={}){let r=[];return !S(e,n,Nn(t,{path:[],out:r}))&&r.length===0&&r.push({path:[],actual:e,expected:n,kind:"type"}),r}var Ur=new WeakMap,_r=new WeakMap;function $t(e,n,t,r,o){if(e===n)return true;if(Object.keys(t).length>0)return S(e,n,Nn(t,void 0,r));let a=o.get(e)?.get(n);if(a!==void 0)return a;let i=S(e,n,Nn(t,void 0,r)),l=o.get(e);return l||o.set(e,l=new WeakMap),l.set(n,i),i}function z(e,n,t={}){return $t(e,n,t,"assignable",Ur)}function Dr(e,n,t={}){return $t(e,n,t,"comparable",_r)}function Lt(e,n,t={}){return z(e,n,t)&&z(n,e,t)}function Q(e,n){let t=Vn(e,n,r=>Q(r,n));if(t!==void 0)return t;if(e.infer?.length){if(N(e.check).size>0)return null;let r=Wn(e.check,n),o=Rn({...e,check:r},n);return Ze(Je(r,b(e.extends,o),n),()=>b(e.then,o),()=>b(e.else,o))}return N(e.check).size>0||N(e.extends).size>0?null:Ze(Je(e.check,e.extends,n),()=>e.then,()=>e.else)}function Je(e,n,t){let r=M(n,t);return r.t==="any"||r.t==="unknown"?"then":M(e,t).t==="any"?"both":z(e,n,t)?"then":"else"}var Ze=(e,n,t)=>e==="then"?n():e==="else"?t():f.union([n(),t()]);function Vn(e,n,t){if(!e.distributive)return;let r=M(e.check,n),o=r.t==="union"?r.of:r.t==="boolean"?[f.literal(true),f.literal(false)]:void 0;if(!o)return;let a=[];for(let i of o){let l=t({t:"conditional",check:i,extends:Pe(e.extends,e.check,i),then:Pe(e.then,e.check,i),else:Pe(e.else,e.check,i),...e.infer?{infer:e.infer}:{}});if(l===null)return null;a.push(l);}return f.union(a)}var wt=(e,n)=>Me(e,n.schemes);function en(e,n,t,r){if(!t.explain)return S(e,n,t);t.explain.path.push(r);try{return S(e,n,t)}finally{t.explain.path.pop();}}function S(e,n,t){if(Fn>=D().maxTypeDepth)throw new ie;Fn++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return t.relation==="comparable"?!0:C(t,e,n);let r=H(e,t.schemes);if(r!==e)return S(r,n,t);let o=H(n,t.schemes);if(o!==n)return S(e,o,t);if(n.t==="mapped"&&Ce(n))return Hr(e,n,t);if(e.t==="mapped"&&Ce(e)&&n.t==="var")return Qr(e,n,t);if(e.t==="mapped"){let i=wt(e,t);if(i)return S(i,n,t)}if(n.t==="mapped"){let i=wt(n,t);if(i)return S(e,i,t)}if(e.t==="conditional"){let i=Q(e,t.schemes);if(i)return S(i,n,t)}if(n.t==="conditional"){let i=Q(n,t.schemes);if(i)return S(e,i,t)}if(t.relation==="comparable"&&Xr(n,e))return !0;if(n.t==="intersection")return n.of.every(i=>S(e,i,t));if(e.t==="intersection"&&n.t!=="union"){if(zr(e.of,n,t))return !0;if(n.t==="object"){let i=Be(e.of);if(i)return S(i,n,t)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(F(e,t.schemes)||F(n,t.schemes))){let i=`${V(e)}\u2264${V(n)}`;if(t.exp.has(i))return !0;if(Pt(e,t.sourceStack)&&Pt(n,t.targetStack))return t.assumed++,!0;t.exp.add(i),t.sourceStack.push(e),t.targetStack.push(n);let l=S(W(e,t.schemes),W(n,t.schemes),t);return t.sourceStack.pop(),t.targetStack.pop(),t.exp.delete(i),l}return Br(e,n,t)}finally{Fn--;}}var jt=5;function Pt(e,n){if(n.length<jt||e.t!=="apply")return false;let t=0;for(let r of n)if(r.t==="apply"&&r.name===e.name&&++t>=jt)return true;return false}function Br(e,n,t){let r=t.seen.get(e);if(r?.has(n))return t.assumed++,true;r||(r=new WeakSet,t.seen.set(e,r)),r.add(n);let o=t.assumed,a=qr(e,n,t);return (!a||t.assumed!==o)&&r.delete(n),a}function zr(e,n,t){let r=t.intersectionSource,o=t.explain;t.intersectionSource=true,t.explain=void 0;try{return e.some(a=>S(a,n,t))}finally{t.intersectionSource=r,t.explain=o;}}function qr(e,n,t){if(e.t==="union")return t.relation==="comparable"?e.of.length===0||e.of.some(r=>S(r,n,t)):e.of.every(r=>S(r,n,t));if(e.t==="boolean"&&n.t==="union")return t.relation==="comparable"?S(f.literal(true),n,t)||S(f.literal(false),n,t):S(f.literal(true),n,t)&&S(f.literal(false),n,t);if(e.t==="conditional")return Kr(e,n,t);if(n.t==="union")return eo(e,n,t);if(e.t==="var"&&!(n.t==="var"&&n.name===e.name))return e.bound?S(e.bound,n,t):C(t,e,n);if(e.t==="nonPrimitive"&&n.t!=="nonPrimitive")return n.t==="object"&&n.index?C(t,e,n):S(Wr,n,t);if(Et(e)&&Et(n))return ao(e,n,t);if(n.t==="overload")return n.signatures.every(r=>S(e,r,t));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:C(t,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Rt(e.value)===n.t?true:C(t,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:C(t,e,n);case "nonPrimitive":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"||e.t==="apply"||e.t==="nonPrimitive"?true:C(t,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?C(t,e,n):S(e.items,n.items,t):e.t==="tuple"?e.readonly&&!n.readonly?C(t,e,n):yn(e).every((r,o)=>en(r,n.items,t,o)):C(t,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return C(t,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return C(t,e,n);for(let r=0;r<e.elements.length;r++)if(!en(e.elements[r],n.elements[r],t,r))return false;return true}return Xn(e,n,(r,o)=>S(r,o,t),t.relation==="comparable")}case "object":if(e.t==="object")return to(e,n,t);if(Object.keys(n.props).length===0&&!n.index)return e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:C(t,e,n);if((e.t==="array"||e.t==="tuple")&&n.index){let r=e.t==="array"?[e.items]:yn(e);return n.index.key==="number"&&Object.values(n.props).every(o=>o.optional)&&r.every(o=>S(o,n.index.value,t))?true:C(t,e,n)}return C(t,e,n);case "fn":return e.t==="fn"?Xe(e,n,t):C(t,e,n);case "var":return e.t==="var"&&e.name===n.name;case "typeQuery":return e.t==="typeQuery"&&e.path.length===n.path.length&&e.path.every((r,o)=>r===n.path[o]);case "keyof":return e.t==="keyof"&&S(e.of,n.of,t)&&S(n.of,e.of,t);case "index":return e.t==="index"&&S(e.obj,n.obj,t)&&S(n.obj,e.obj,t)&&S(e.key,n.key,t)&&S(n.key,e.key,t);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&S(e.over,n.over,t)&&S(n.over,e.over,t)&&S(e.body,n.body,t)&&S(n.body,e.body,t);case "conditional":return C(t,e,n);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((r,o)=>S(r,n.args[o],t));case "returnType":return e.t==="returnType"&&S(e.fn,n.fn,t)&&S(n.fn,e.fn,t);case "parameters":return e.t==="parameters"&&S(e.fn,n.fn,t)&&S(n.fn,e.fn,t)}}var Rt=e=>typeof e;function Kr(e,n,t){return n.t==="conditional"&&S(e.check,n.check,t)&&S(n.check,e.check,t)&&S(e.extends,n.extends,t)&&S(n.extends,e.extends,t)&&S(e.then,n.then,t)&&S(e.else,n.else,t)?true:S(Zr(e),n,t)}var Ce=e=>N(e.over).size>0;function Hr(e,n,t){if(e.t==="mapped"&&Ce(e)&&Gr(e,n,t)||n.optional&&Yr(e))return true;if(!n.excludeOptional){let r=n.body;if(r.t==="index"&&r.key.t==="var"&&r.key.name===n.key&&Lt(r.obj,e,t.schemes))return true;if(!(e.t==="mapped"&&Ce(e))){let o=f.keyof(e),a=n.optional?f.intersection([n.over,o]):S(n.over,o,t)?n.over:null;if(a!==null&&!Jr(a)&&S(f.index(e,a),b(r,{[n.key]:a}),t))return true}}return C(t,e,n)}function Qr(e,n,t){return !e.optional&&S(f.keyof(n),e.over,t)&&S(e.body,f.index(n,f.var(e.key)),t)?true:C(t,e,n)}function Gr(e,n,t){return t.relation!=="comparable"&&Mt(e)>Mt(n)?false:S(n.over,e.over,t)&&S(b(e.body,{[e.key]:f.var(n.key)}),n.body,t)}var Ot=e=>e.excludeOptional?-1:e.optional?1:0;function Mt(e){let n=Ot(e);if(n!==0)return n;let t=e.over.t==="keyof"?e.over.of:e.modifiers;return t?.t==="mapped"&&Ce(t)?Ot(t):0}var Yr=e=>e.t==="object"&&Object.keys(e.props).length===0&&!e.index,Jr=e=>e.t==="union"&&e.of.length===0,Zr=e=>e.then.t==="any"?e.else:e.else.t==="any"?e.then:f.union([e.then,e.else]);function Xr(e,n){switch(n.t){case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Rt(e.value)===n.t;case "literal":return e.t==="literal"&&e.value===n.value;case "void":return e.t==="void"||e.t==="undefined";default:return false}}function eo(e,n,t){let r=t.explain;if(!r)return n.of.some(i=>S(e,i,t));t.explain=void 0;let o;try{o=n.of.some(i=>S(e,i,t));}finally{t.explain=r;}if(o)return true;let a=no(e,n,t);return a?S(e,a,t):C(t,e,n)}function no(e,n,t){if(e.t!=="object")return null;let r=n.of.map(o=>M(o,t.schemes));for(let o in e.props){let a=e.props[o].type;if(a.t!=="literal")continue;let i=t.explain;t.explain=void 0;let l;try{l=n.of.filter((u,p)=>{let y=r[p];if(y.t!=="object")return !1;let x=B(y.props,o);return !!x&&S(a,x.type,t)});}finally{t.explain=i;}if(l.length===1)return l[0]}return null}function to(e,n,t){let r=false;for(let o in n.props)if(!(n.props[o].optional||B(e.props,o))){if(!t.explain)return false;t.explain.out.push({path:[...t.explain.path,o],expected:n.props[o].type,kind:"missing"}),r=true;}if(r)return false;for(let o in n.props){let a=n.props[o],i=B(e.props,o);if(!i)continue;if(i.optional&&!a.optional&&t.relation==="assignable")return false;let l=a.optional?K(i.type).type:i.optional?I([i.type,f.undefined]):i.type;if(!en(l,a.type,t,o))return false}return !(n.index&&!ro(e,n.index,t))}function ro(e,n,t){if(t.intersectionSource){if(!e.index)return false}else {let r=n.key==="number";for(let o in e.props){if(r&&!De(o))continue;let a=e.props[o],i=a.optional?A(a.type):a.type;if(!en(i,n.value,t,o))return false}}return !e.index||S(e.index.value,n.value,t)}var Vt=e=>{let n=e.params[e.params.length-1];return n?.variadic?n:void 0},oo=e=>{let n=e.params.findIndex(t=>t.optional||t.variadic);return n<0?e.params.length:n};function Ft(e,n){let t=Vt(e),r=t?e.params.length-1:e.params.length;if(n<r)return e.params[n].type;if(!t)return;let o=t.type;if(o.t==="array")return o.items;if(o.t==="tuple"&&!o.flags)return o.elements[n-r]}var It=(e,n)=>{let t=Ft(e,n);return t===void 0?t:e.params[n]?.optional?A(t):t},Et=e=>e.t==="fn"||e.t==="overload";function ao(e,n,t){let r=e.t==="overload"?e.signatures:[e],o=n.t==="overload"?n.signatures:[n];return r.length===1&&o.length===1?Ct(r[0],o[0],t,t.relation==="comparable"):o.every(a=>r.some(i=>Ct(i,a,t,true)))}function Ct(e,n,t,r){if(r)return Xe(Ee(e),Ee(n),t);let o=vn(n,N(e));return e.typeParams?.length?Xe(Ln(e,o,t.schemes),o,t):Xe(e,o,t)}function Xe(e,n,t){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!S(e.returns,n.returns,t)||!Vt(n)&&oo(e)>n.params.length)return false;let r=Math.max(e.params.length,n.params.length);for(let o=0;o<r;o++){let a=It(e,o),i=It(n,o);if(a&&i&&!S(i,a,t))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!S(e.guard.type,n.guard.type,t)))}var io=e=>e.t==="object"&&!e.index&&Object.values(e.props).every(n=>n.optional);function I(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let t=D().maxUnionMembers;if(n.length>t)throw new le(n.length,t);if(n.some(o=>o.t==="any"))return f.any;let r=[...n];for(let o=r.length-1;o>=0;o--){let a=r[o];r.some((l,u)=>u!==o&&!io(l)&&z(a,l)&&(u<o||!z(l,a)))&&r.splice(o,1);}if(r.some(o=>o.t==="literal"&&o.value===true)&&r.some(o=>o.t==="literal"&&o.value===false)){let o=r.filter(a=>!(a.t==="boolean"||a.t==="literal"&&typeof a.value=="boolean"));o.push(f.boolean),r.length=0,r.push(...o);}return r.length===1?r[0]:{t:"union",of:r}}function lo(e,n){let t=new Set,r=new WeakSet,o=a=>{if(!r.has(a))switch(r.add(a),a.t){case "keyof":t.add("keyof"),o(a.of);break;case "index":t.add("indexed"),o(a.obj),o(a.key);break;case "mapped":t.add("mapped"),o(a.over),o(a.body);break;case "conditional":t.add("conditional"),a.infer?.length&&t.add("infer"),a.infer?.forEach(o),o(a.check),o(a.extends),o(a.then),o(a.else);break;case "returnType":case "parameters":o(a.fn);break;case "tuple":t.add("tuple"),a.elements.forEach(o);break;case "intersection":t.add("intersection"),a.of.forEach(o);break;case "overload":t.add("overload");for(let i of a.signatures){i.typeParams?.forEach(o);for(let l of i.params)o(l.type);o(i.returns),i.guard&&o(i.guard.type);}break;case "object":for(let i in a.props)o(a.props[i].type);a.index&&o(a.index.value);break;case "array":o(a.items);break;case "union":a.of.forEach(o);break;case "fn":a.typeParams?.forEach(o);for(let i of a.params)o(i.type);o(a.returns),a.guard&&o(a.guard.type);break;case "var":a.bound&&o(a.bound),a.default&&o(a.default);break;case "apply":n&&a.name===n&&t.add("recursion"),a.args.forEach(o);break}};return o(e),t}var uo=f.union([]);function Nt(e,n){return nn(e,n,new WeakMap)}function co(e){return e.reduce(Nt,uo)}function nn(e,n,t){if(e.t==="any"||n.t==="any")return f.any;if(e===n)return e;let r=t.get(e)?.get(n);if(r)return r;if(e.t==="object"&&n.t==="object")return po(e,n,t);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:f.unknown};return Wt(t,e,n,o),o.items=nn(e.items,n.items,t),o}return I([e,n])}function po(e,n,t){let r={t:"object",props:{}};Wt(t,e,n,r);for(let o in e.props){let a=e.props[o],i=$(n.props,o);if(i){let l=nn(a.type,i.type,t);w(r.props,o,{type:l,...a.optional||i.optional?{optional:true}:{},...a.readonly||i.readonly?{readonly:true}:{}});}else w(r.props,o,{type:a.type,optional:true,...a.readonly?{readonly:true}:{}});}for(let o in n.props){if(ve(e.props,o))continue;let a=n.props[o];w(r.props,o,{type:a.type,optional:true,...a.readonly?{readonly:true}:{}});}return e.index&&n.index&&e.index.key===n.index.key&&(r.index={key:e.index.key,value:nn(e.index.value,n.index.value,t),...e.index.readonly||n.index.readonly?{readonly:true}:{}}),r}function Wt(e,n,t,r){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(t,r);}var fo=4;function so(e,n={}){return $e(e,n,0)}function $e(e,n,t){let r=M(H(e,n),n);switch(r.t){case "string":return "";case "number":return 0;case "boolean":return false;case "null":return null;case "literal":return r.value;case "array":return [];case "tuple":{let o=[];for(let a=0;a<r.elements.length&&(r.flags?.[a]??"req")==="req";a++)o.push($e(r.elements[a],n,t));return o}case "object":{if(t>=fo)return {};let o={};for(let a of Object.keys(r.props)){let i=r.props[a];i.optional||w(o,a,$e(i.type,n,t+1));}return o}case "nonPrimitive":return {};case "union":{if(r.of.some(a=>a.t==="null"))return null;let o=r.of.find(a=>a.t!=="undefined");return o===void 0?null:$e(o,n,t)}case "intersection":{let o=r.of.map(i=>$e(i,n,t));if(!o.every(mo))return null;let a={};for(let i of o)for(let l of Object.keys(i))w(a,l,i[l]);return a}default:return null}}var mo=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);var yo=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e),At=e=>{let n=e.indexOf("@");return n<0?e:e.slice(0,n)},So={check:new Set(["function","conditional"]),extends:new Set(["conditional"]),union:new Set(["function","conditional","union","intersection"]),intersection:new Set(["function","conditional","union","intersection"]),operand:new Set(["function","conditional","union","intersection"]),postfix:new Set(["function","conditional","union","intersection","operator","query"])},Ut=(e,n)=>So[e].has(n);function on(e,n=new WeakSet){return R(e,{seen:n,infer:new Map})}function ho(e){return tn(e,{seen:new WeakSet,infer:new Map})}function Un(e,n){switch(e.t){case "fn":return "function";case "overload":return e.signatures.length===1?"function":"primary";case "conditional":return "conditional";case "union":return e.of.length===0?"primary":e.of.length===1?Un(e.of[0],n):"union";case "intersection":return e.of.length===1?Un(e.of[0],n):"intersection";case "keyof":return "operator";case "array":case "tuple":return e.readonly?"operator":"primary";case "typeQuery":return "query";case "var":{let t=n.infer.get(e.name);return t?t.bound?"conditional":"operator":"primary"}default:return "primary"}}function ee(e,n,t){let r=R(n,t);return Ut(e,Un(n,t))?`(${r})`:r}function tn(e,n){return e.map((t,r)=>{let o=R(t,n);return r===0&&go(t)?`(${o})`:o}).join(", ")}var go=e=>e.t==="fn"&&!!e.typeParams?.length||e.t==="overload"&&e.signatures.length===1&&!!e.signatures[0].typeParams?.length;function xo(e,n){return e?.length?`<${e.map(t=>bo(t,n)).join(", ")}>`:""}function bo(e,n){let t=e.bound?` extends ${R(e.bound,n)}`:"",r=e.default?` = ${R(e.default,n)}`:"";return `${e.name}${t}${r}`}function rn(e,n){if(!n.some(r=>e.infer.has(r)))return e;let t=new Map(e.infer);for(let r of n)t.delete(r);return {...e,infer:t}}function An(e,n,t){let r=rn(t,(e.typeParams??[]).map(l=>l.name)),o=e.params.map(l=>{let u=l.variadic?"...":"",p=l.optional&&!l.variadic?"?":"";return `${u}${l.name}${p}: ${R(l.type,r)}`}).join(", "),a=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${R(e.guard.type,r)}`:R(e.returns,r),i=xo(e.typeParams,r);return n==="=>"?`${i}(${o}) => ${a}`:`${i}(${o}): ${a}`}function R(e,n){let{seen:t}=n;switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "nonPrimitive":return "object";case "var":{let r=n.infer.get(e.name);return r?r.bound?`infer ${e.name} extends ${R(r.bound,rn(n,[e.name]))}`:`infer ${e.name}`:e.name}case "typeQuery":return `typeof ${e.path.join(".")}`;case "literal":return typeof e.value=="string"?JSON.stringify(e.value):String(e.value);case "array":{let r=`${ee("postfix",e.items,n)}[]`;return e.readonly?`readonly ${r}`:r}case "tuple":{let o=`[${e.elements.map((a,i)=>{let l=e.flags?.[i]??"req";return l==="rest"?`...${ee("postfix",a,n)}[]`:l==="optional"?`${ee("postfix",a,n)}?`:R(a,n)}).join(", ")}]`;return e.readonly?`readonly ${o}`:o}case "union":{if(e.of.length===0)return "never";if(e.of.length===1)return R(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>ee("union",o,n)).join(" | ");return t.delete(e),r}case "intersection":{if(e.of.length===1)return R(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>ee("intersection",o,n)).join(" & ");return t.delete(e),r}case "object":{if(t.has(e))return "\u2026";t.add(e);let r=Object.entries(e.props).map(([o,a])=>{let i=yo(o)?o:JSON.stringify(o);return `${a.readonly?"readonly ":""}${i}${a.optional?"?":""}: ${R(a.type,n)}`});return e.index&&r.push(`${e.index.readonly?"readonly ":""}[k: ${e.index.key}]: ${R(e.index.value,n)}`),t.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(t.has(e))return "\u2026";t.add(e);let r=An(e,"=>",n);return t.delete(e),r}case "overload":{if(e.signatures.length===1)return An(e.signatures[0],"=>",n);if(t.has(e))return "\u2026";t.add(e);let r=e.signatures.map(o=>An(o,":",n));return t.delete(e),`{ ${r.join("; ")} }`}case "apply":{let r=At(e.name);if(e.args.length===0)return r;if(t.has(e))return "\u2026";t.add(e);let o=`${r}<${tn(e.args,n)}>`;return t.delete(e),o}case "keyof":return `keyof ${ee("operand",e.of,n)}`;case "index":return `${ee("postfix",e.obj,n)}[${R(e.key,n)}]`;case "mapped":{if(t.has(e))return "\u2026";t.add(e);let r=e.readonly?"readonly ":e.excludeReadonly?"-readonly ":"",o=e.optional?"?":e.excludeOptional?"-?":"",a=rn(n,[e.key]),i=`{ ${r}[${e.key} in ${R(e.over,n)}]${o}: ${R(e.body,a)} }`;return t.delete(e),i}case "conditional":{if(t.has(e))return "\u2026";t.add(e);let r=e.infer??[],o=r.length?{...n,infer:new Map([...n.infer,...r.map(l=>[l.name,l])])}:n,a=rn(n,r.map(l=>l.name)),i=`${ee("check",e.check,n)} extends ${ee("extends",e.extends,o)} ? ${R(e.then,a)} : ${R(e.else,a)}`;return t.delete(e),i}case "returnType":return `ReturnType<${tn([e.fn],n)}>`;case "parameters":return `Parameters<${tn([e.fn],n)}>`}}function _t(e){if(e.length===0)return "value";let n=e[e.length-1];if(typeof n=="number"){let t=e.slice(0,-1);return t.length?`property '${t.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function vo(e){let n=e.filter(t=>t.kind==="missing");if(n.length&&n.length===e.length){let t=n.map(r=>`'${r.path.join(".")}'`).join(", ");return n.length===1?`property ${t} is missing`:`properties ${t} are missing`}return e.map(t=>t.actual===void 0?`${_t(t.path)} is missing`:`${_t(t.path)}: expected '${on(t.expected)}', got '${on(t.actual)}'`).join("; ")}function me(e,n=new WeakSet){switch(e.t){case "string":case "number":case "boolean":case "null":case "literal":return true;case "array":return n.has(e)?true:(n.add(e),me(K(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(t=>me(K(t).type,n)));case "object":{if(n.has(e))return true;n.add(e);let t=Object.values(e.props).every(o=>me(K(o.type).type,n)),r=!e.index||me(K(e.index.value).type,n);return t&&r}case "union":return n.has(e)?true:(n.add(e),e.of.every(t=>me(t,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(t=>me(t,n)));case "undefined":case "void":case "fn":case "overload":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "var":case "typeQuery":case "apply":case "any":case "unknown":case "nonPrimitive":return false}}function ko(e,n,t={}){let r=e;for(let o of n){let a=ye(r,o,t);if(a===null)return null;r=a;}return {type:r,completions:Le(r,t)}}var To=e=>e==="[]"||/^\d+$/.test(e);function ye(e,n,t,r=new Set){if(e.t==="var")return e.bound?ye(M(e,t),n,t,r):null;if(e.t==="mapped"){let a=M(e,t);return a===e?null:ye(a,n,t,r)}if(F(e,t)){let a=V(e);if(r.has(a))return null;r.add(a);let i=ye(W(e,t),n,t,r);return r.delete(a),i}let o=j(e);if(o!==e)return ye(o,n,t,r);switch(e.t){case "any":return e;case "object":{let a=B(e.props,n);return a?a.optional?I([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return To(n)?e.items:null;case "tuple":{let a=e.flags?.findIndex(u=>u!=="req")??-1,i=Number(n);if(!(Number.isInteger(i)&&i>=0))return null;if(a<0)return i<e.elements.length?e.elements[i]:null;if(i<a)return e.elements[i];let l=e.elements.slice(a);return l.length?I(l):null}case "union":{let a=[];for(let i of e.of){let l=ye(i,n,t,r);if(l===null)return null;a.push(l);}return a.length?I(a):null}case "intersection":{let a=e.of.map(i=>ye(i,n,t,r)).filter(i=>i!==null);return a.length?U({of:a}):null}default:return null}}function wo(e,n,t={}){let r=Se(e,n,t,new Set);return r?.readonly?r.via:null}var jo=e=>e!==""&&String(Number(e))===e;function Se(e,n,t,r){if(e.t==="var")return e.bound?Se(M(e,t),n,t,r):null;if(e.t==="mapped"){let l=M(e,t);return l===e?null:Se(l,n,t,r)}if(F(e,t)){let l=V(e);if(r.has(l))return null;r.add(l);let u=Se(W(e,t),n,t,r);return r.delete(l),u}let o=j(e);if(o!==e)return Se(o,n,t,r);let a="name"in n?n.name:null,i="base"in n?n.base==="number":n.element&&jo(n.name);switch(e.t){case "object":{let l=a===null?void 0:B(e.props,a);if(l)return {via:"property",readonly:!!l.readonly};let u=e.index;return u&&(u.key==="string"||i)?{via:"index",readonly:!!u.readonly}:null}case "array":return i?{via:"index",readonly:!!e.readonly}:null;case "tuple":{if(!i)return null;let u=(e.flags??[]).indexOf("rest"),p=u<0?e.elements.length:u,y=a===null?-1:Number(a);return Number.isInteger(y)&&y>=0&&y<p?{via:"property",readonly:!!e.readonly}:u>=0||a===null?{via:"index",readonly:!!e.readonly}:null}case "union":{let l=[];for(let p of e.of){let y=Se(p,n,t,r);if(y===null)return null;l.push(y);}let u=l.some(p=>p.readonly);return l.some(p=>p.via==="property")?{via:"property",readonly:u}:{via:"index",readonly:u}}case "intersection":{let l=e.of.map(p=>Se(p,n,t,r)).filter(p=>p!==null),u=l.filter(p=>p.via==="property");return u.length?{via:"property",readonly:u.some(p=>p.readonly)}:l.length?{via:"index",readonly:l.every(p=>p.readonly)}:null}default:return null}}function Le(e,n,t=new WeakSet,r=new Set){if(e.t==="var")return e.bound?Le(M(e,n),n,t,r):[];if(F(e,n)){let a=V(e);if(r.has(a))return [];r.add(a);let i=Le(W(e,n),n,t,r);return r.delete(a),i}let o=j(e);if(o!==e)return Le(o,n,t,r);switch(e.t){case "object":return Object.entries(e.props).map(([a,i])=>({key:a,type:i.type,optional:!!i.optional}));case "array":return [{key:"[]",type:e.items,optional:false}];case "tuple":return e.elements.map((a,i)=>({key:String(i),type:a,optional:false}));case "union":case "intersection":{if(t.has(e))return [];t.add(e);let a=[],i=new Set;for(let l of e.of)for(let u of Le(l,n,t,r))i.has(u.key)||(i.add(u.key),a.push(u));return t.delete(e),a}default:return []}}var Po="1.8.0";exports.DEFAULT_TYPE_LIMITS=Ve;exports.INSTANTIATION_COUNT_LIMIT=Jt;exports.INSTANTIATION_DEPTH_LIMIT=Yt;exports.InferencePriority=L;exports.InstantiationLimitError=Re;exports.TYPE_EVAL_DEPTH_LIMIT=Gt;exports.TypeEvalLimitError=ie;exports.UnionTooComplexError=le;exports.apparentType=M;exports.asLiteralOrigin=lr;exports.baseLiteralType=ut;exports.bindTypeParams=ze;exports.comparable=Dr;exports.configureTypeLimits=Zt;exports.contravariantInference=St;exports.covariantInference=yt;exports.createInferences=Ye;exports.discover=ko;exports.equals=Lt;exports.erasedSignature=Ee;exports.expand1=W;exports.flagAt=Jn;exports.format=on;exports.formatTypeArgs=ho;exports.formatTypeDiff=vo;exports.freeVars=N;exports.groundVars=Qe;exports.inferFromCandidates=ht;exports.inferTypes=te;exports.inferredBindings=$n;exports.inferredTypes=gt;exports.instantiateInContextOf=Ln;exports.instantiateLoose=Fr;exports.isMissingType=Ne;exports.isNumericLiteralName=De;exports.isObjectOrArrayLiteral=_e;exports.isScheme=F;exports.isSerializable=me;exports.isVariadicTuple=Zn;exports.join=Nt;exports.joinAll=co;exports.missingType=ue;exports.normalizeUnion=I;exports.ownProp=B;exports.readonlyMember=wo;exports.renameTypeParams=vn;exports.resetInstantiationCount=er;exports.resetTypeLimits=Xt;exports.resolveConditional=Q;exports.resolveOp=H;exports.resolveTypeOp=j;exports.restIndex=he;exports.restTypeAtPosition=Ue;exports.s=f;exports.sampleValue=so;exports.silentNever=mt;exports.substitute=b;exports.subtype=z;exports.typeAtPosition=Ft;exports.typeDiff=Ar;exports.typeFeatures=lo;exports.typeLimits=D;exports.typeNameOf=At;exports.typeNeedsParens=Ut;exports.typeParamArity=ot;exports.version=Po;exports.widen=Tn;exports.widenInferred=yr;exports.widenLiteral=Ke;exports.widenOrigin=Ie;exports.widenType=mr;exports.withUndefined=A;exports.withoutUndefined=K;
|
package/dist/types/index.d.cts
CHANGED
|
@@ -733,34 +733,80 @@ declare function freeVars(schema: Schema): ReadonlySet<string>;
|
|
|
733
733
|
* dado persistível: vive só durante a inferência de uma chamada.
|
|
734
734
|
*/
|
|
735
735
|
declare const silentNever: Schema;
|
|
736
|
+
/**
|
|
737
|
+
* A prioridade de uma inferência — o `InferencePriority` do tsc (`types.ts:4925`). MENOR
|
|
738
|
+
* vale mais: um candidato de prioridade menor descarta os que a var já tinha, um de
|
|
739
|
+
* prioridade maior é ignorado, e os de prioridade igual se somam. As flags se combinam
|
|
740
|
+
* pelo caminho (`inferWithPriority` faz `priority |= p`).
|
|
741
|
+
*/
|
|
742
|
+
declare const InferencePriority: {
|
|
743
|
+
/** A var nua dentro de uma união ou interseção — menos específica que a de dentro de
|
|
744
|
+
* uma estrutura (`Promise<string>` contra `T | Promise<T>` dá `string`). */
|
|
745
|
+
readonly NakedTypeVariable: number;
|
|
746
|
+
/** A inferência reversa de um mapped homomórfico (`{ [K in keyof T]: … }`). */
|
|
747
|
+
readonly HomomorphicMappedType: number;
|
|
748
|
+
/** A mesma, de uma fonte parcialmente inferível (um literal com um membro pulado). */
|
|
749
|
+
readonly PartialHomomorphicMappedType: number;
|
|
750
|
+
/** As chaves da fonte para o `K` de `{ [P in K]: … }`. */
|
|
751
|
+
readonly MappedTypeConstraint: number;
|
|
752
|
+
/** Um conditional em posição contravariante. */
|
|
753
|
+
readonly ContravariantConditional: number;
|
|
754
|
+
/** O tipo esperado do retorno de uma chamada (checker D52). */
|
|
755
|
+
readonly ReturnType: number;
|
|
756
|
+
/** Um literal de string para um `keyof T`. */
|
|
757
|
+
readonly LiteralKeyof: number;
|
|
758
|
+
/** Não troca uma fonte genérica pela constraint dela (o `infer` de um conditional). */
|
|
759
|
+
readonly NoConstraints: number;
|
|
760
|
+
/** Contravariância estrita mesmo sem `strictFunctionTypes` — é o nosso regime sempre. */
|
|
761
|
+
readonly AlwaysStrict: number;
|
|
762
|
+
/** A semente do rastreio da prioridade das inferências feitas num sub-walk. */
|
|
763
|
+
readonly MaxValue: number;
|
|
764
|
+
/** As prioridades em que a decisão COMBINA os candidatos (a união, a interseção), em
|
|
765
|
+
* vez de escolher o supertipo (o subtipo) comum. */
|
|
766
|
+
readonly PriorityImpliesCombination: number;
|
|
767
|
+
/** O sub-walk esbarrou num par já em curso — menor que todas. */
|
|
768
|
+
readonly Circularity: -1;
|
|
769
|
+
};
|
|
736
770
|
/**
|
|
737
771
|
* Os candidatos de inferência de uma var, na ORDEM em que a inferência os encontrou —
|
|
738
|
-
* o `InferenceInfo
|
|
739
|
-
*
|
|
740
|
-
*
|
|
772
|
+
* o `InferenceInfo` do tsc. Duas listas, porque a POSIÇÃO em que o candidato foi achado
|
|
773
|
+
* decide como ele vale: o que veio de um PARÂMETRO de função é contravariante (TC48). E
|
|
774
|
+
* a prioridade deles (TC66): todos os candidatos de uma var têm a mesma.
|
|
741
775
|
*/
|
|
742
776
|
interface VarCandidates {
|
|
743
777
|
readonly co: Schema[];
|
|
744
778
|
readonly contra: Schema[];
|
|
779
|
+
/** A prioridade dos candidatos das listas; sem candidato, nenhuma. */
|
|
780
|
+
priority?: number;
|
|
745
781
|
}
|
|
782
|
+
/**
|
|
783
|
+
* O contexto de uma inferência: um slot por type param que ela liga — o
|
|
784
|
+
* `InferenceContext.inferences` do tsc. Uma var que não está aqui não é inferida: é
|
|
785
|
+
* rígida (o `T` da função que envolve a chamada) ou de outro binder.
|
|
786
|
+
*/
|
|
787
|
+
type Candidates = Map<string, VarCandidates>;
|
|
788
|
+
/** Um slot vazio por type param declarado — o `createInferenceContext`. */
|
|
789
|
+
declare function createInferences(decls: readonly VarSchema[] | undefined): Candidates;
|
|
746
790
|
/**
|
|
747
791
|
* O tipo inferido de uma var a partir dos seus candidatos — o `getCovariantInference`
|
|
748
792
|
* do tsc (`checker.ts:19156`), em TRÊS etapas: os de origem literal se juntam num só
|
|
749
|
-
* (posto no fim), o resto decide o supertipo comum,
|
|
750
|
-
*
|
|
751
|
-
*
|
|
793
|
+
* (posto no fim), o resto decide o supertipo comum — ou, numa prioridade que implica
|
|
794
|
+
* COMBINAÇÃO (o retorno esperado, TC66), a união com a redução por subtipo —, e o que
|
|
795
|
+
* sai passa pelo {@link widenOrigin} — o `getWidenedType` que fecha a função lá
|
|
796
|
+
* (`checker.ts:19174`), e que é o que completa uma união de literais com as chaves dos
|
|
797
|
+
* irmãos (TC53).
|
|
752
798
|
*/
|
|
753
|
-
declare function covariantInference(candidates: readonly Schema[], schemes?: Schemes): Schema | undefined;
|
|
799
|
+
declare function covariantInference(candidates: readonly Schema[], schemes?: Schemes, combine?: boolean): Schema | undefined;
|
|
754
800
|
/**
|
|
755
801
|
* O tipo inferido de uma var a partir dos candidatos CONTRAVARIANTES — o
|
|
756
|
-
* `getContravariantInference` do tsc (`checker.ts:19152`)
|
|
757
|
-
*
|
|
758
|
-
*
|
|
802
|
+
* `getContravariantInference` do tsc (`checker.ts:19152`): o `getCommonSubtype`
|
|
803
|
+
* (`checker.ts:17700`), o menor deles pelo `reduceLeft` com a relação invertida; ou,
|
|
804
|
+
* numa prioridade que implica combinação, a INTERSEÇÃO deles.
|
|
759
805
|
*/
|
|
760
|
-
declare function contravariantInference(candidates: readonly Schema[], schemes?: Schemes): Schema | undefined;
|
|
806
|
+
declare function contravariantInference(candidates: readonly Schema[], schemes?: Schemes, combine?: boolean): Schema | undefined;
|
|
761
807
|
/**
|
|
762
808
|
* A decisão de UMA var, com as duas listas — o `getInferredType` do tsc
|
|
763
|
-
* (`checker.ts:19177`).
|
|
809
|
+
* (`checker.ts:19177`), no ramo em que a inferência é de uma ASSINATURA.
|
|
764
810
|
*
|
|
765
811
|
* Havendo candidatos contravariantes, eles têm a preferência, **salvo** quando o
|
|
766
812
|
* covariante existe, não é `never` e é subtipo deles. É essa exceção que faz
|
|
@@ -782,38 +828,48 @@ declare function erasedSignature(sig: FnSchema$1): FnSchema$1;
|
|
|
782
828
|
*/
|
|
783
829
|
declare function inferredTypes(decls: readonly VarSchema[], b: Bindings, schemes?: Schemes): Bindings;
|
|
784
830
|
/**
|
|
785
|
-
*
|
|
786
|
-
*
|
|
787
|
-
*
|
|
788
|
-
*
|
|
831
|
+
* Infere os type params de `inferences` casando `source` contra `target` — o
|
|
832
|
+
* `inferTypes` do tsc (`checker.ts:18555`). Os candidatos entram nos slots; quem chamou
|
|
833
|
+
* decide no fim.
|
|
834
|
+
*
|
|
835
|
+
* `priority` é a prioridade de partida ({@link InferencePriority}) e `contravariant`, a
|
|
836
|
+
* variância: a chamada infere com `0`, o tipo esperado do retorno com `ReturnType`, e o
|
|
837
|
+
* `infer` de um conditional com `NoConstraints | AlwaysStrict`.
|
|
838
|
+
*/
|
|
839
|
+
declare function inferTypes(inferences: Candidates, originalSource: Schema, originalTarget: Schema, schemes?: Schemes, initialPriority?: number, initialContravariant?: boolean): void;
|
|
840
|
+
/**
|
|
841
|
+
* As ligações decididas de um contexto — o `getInferredTypes` no ramo de uma
|
|
842
|
+
* ASSINATURA, sem o default: cada type param com candidato vale o
|
|
843
|
+
* {@link inferFromCandidates}; o sem candidato fica de fora, e quem chamou decide o que
|
|
844
|
+
* ele vale (o default, a constraint ou `unknown`, pelo {@link inferredTypes}).
|
|
845
|
+
*/
|
|
846
|
+
declare function inferredBindings(inferences: Candidates, schemes?: Schemes): Bindings;
|
|
847
|
+
/**
|
|
848
|
+
* O `instantiateSignatureInContextOf` do tsc (`checker.ts:24965`), para relacionar uma
|
|
849
|
+
* assinatura-FONTE genérica com uma assinatura-ALVO: os type params da fonte são
|
|
850
|
+
* inferidos dos parâmetros do alvo e, com a prioridade menor do retorno
|
|
851
|
+
* (`InferencePriority.ReturnType`), do retorno dele. O resto passa pelo
|
|
789
852
|
* `inferredTypes`. Os type params do ALVO ficam como estão: rígidos, o canônico do tsc.
|
|
790
853
|
* Devolve a fonte instanciada, não-genérica.
|
|
791
854
|
*/
|
|
792
855
|
declare function instantiateInContextOf(sig: FnSchema$1, context: FnSchema$1, schemes?: Schemes): FnSchema$1;
|
|
793
|
-
/**
|
|
794
|
-
* Liga as `var`s de `pattern` aos tipos correspondentes em `actual`. Devolve as
|
|
795
|
-
* ligações estendidas, ou `null` se forem incompatíveis. `actual` que seja
|
|
796
|
-
* `any`/`unknown` não constrange vars (deixa-as livres).
|
|
797
|
-
*/
|
|
798
|
-
declare function unify(pattern: Schema, actual: Schema, bindings?: Bindings): Bindings | null;
|
|
799
856
|
/** Resultado de instanciar uma assinatura contra argumentos. */
|
|
800
857
|
interface Instantiation {
|
|
801
858
|
readonly returns: Schema;
|
|
802
859
|
readonly bindings: Bindings;
|
|
803
860
|
}
|
|
804
861
|
/**
|
|
805
|
-
*
|
|
806
|
-
*
|
|
807
|
-
*
|
|
808
|
-
*
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
*
|
|
813
|
-
*
|
|
814
|
-
* (útil para aplicação parcial e enquanto o usuário ainda digita).
|
|
862
|
+
* A inferência de uma chamada — o `inferTypeArguments` do tsc (`checker.ts:24992`) —
|
|
863
|
+
* seguida da decisão sem o default. Nunca falha: o argumento que não se relaciona só
|
|
864
|
+
* não contribui (checker D65), e quem acusa é a relação, depois.
|
|
865
|
+
*
|
|
866
|
+
* `expected` é o tipo ESPERADO do retorno (checker D52): ele infere primeiro, contra o
|
|
867
|
+
* retorno, com a prioridade `ReturnType` — a menor, então o que um argumento inferir
|
|
868
|
+
* para a mesma var o descarta. Uma função genérica esperada entra com os type params
|
|
869
|
+
* DELA, e não apagados: é o que liga o `T` de `arrayMap(value => …)` ao `A` de `<A>(a:
|
|
870
|
+
* A[]) => …` (o `getSignatureInstantiationWithoutFillingInTypeArguments`).
|
|
815
871
|
*/
|
|
816
|
-
declare function instantiateLoose(sig: FnSchema$1, args: readonly Schema[], schemes?: Schemes): Instantiation;
|
|
872
|
+
declare function instantiateLoose(sig: FnSchema$1, args: readonly Schema[], schemes?: Schemes, expected?: Schema): Instantiation;
|
|
817
873
|
/**
|
|
818
874
|
* Aterra as `var`s remanescentes em `unknown` (para exibição do resultado). Resolve
|
|
819
875
|
* de passagem um `conditional` cujo discriminante já é ground → o tipo do resultado
|
|
@@ -971,6 +1027,13 @@ declare function widenInferred(t: Schema): Schema;
|
|
|
971
1027
|
*/
|
|
972
1028
|
declare function widenOrigin(t: Schema): Schema;
|
|
973
1029
|
|
|
1030
|
+
/**
|
|
1031
|
+
* O nome EXIBIDO de um tipo nomeado. A chave de um alias no catálogo é o nome escrito, salvo
|
|
1032
|
+
* quando o nome não é único — um alias local, o segundo de dois com o mesmo nome —, e aí ela
|
|
1033
|
+
* leva o sufixo `@` da declaração (checker D88): a identidade que no tsc é o símbolo. O sufixo
|
|
1034
|
+
* nunca se exibe; o tsc mostra o nome, mesmo fora do escopo do alias.
|
|
1035
|
+
*/
|
|
1036
|
+
declare const typeNameOf: (key: string) => string;
|
|
974
1037
|
/**
|
|
975
1038
|
* A forma de topo de um tipo impresso, para decidir parênteses. Um printer de tipo —
|
|
976
1039
|
* este, do `Schema`, e o de type-node do `@tslite/format` — classifica o nó numa forma
|
|
@@ -1067,6 +1130,6 @@ type WriteKey = {
|
|
|
1067
1130
|
declare function readonlyMember(schema: Schema, key: WriteKey, schemes?: Schemes): "property" | "index" | null;
|
|
1068
1131
|
|
|
1069
1132
|
/** A versão deste package, a do módulo de fato carregado. */
|
|
1070
|
-
declare const version = "1.
|
|
1133
|
+
declare const version = "1.8.0";
|
|
1071
1134
|
|
|
1072
|
-
export { type AnySchema, type ApplySchema, type ArraySchema, type Bindings, type Completion, DEFAULT_TYPE_LIMITS, type Discovery, type ElementFlag, type FnSchema$1 as FnSchema, type GuardSig, INSTANTIATION_COUNT_LIMIT, INSTANTIATION_DEPTH_LIMIT, type Incompatibility, type IncompatibilityKind, type IndexSchema, type Instantiation, InstantiationLimitError, type KeyofSchema, type LiteralSchema, type MappedSchema, type ObjectSchema, type OverloadSchema, type Param, type PathSegment, type Prop, type ScalarSchema, type Schema, type Schemes, TYPE_EVAL_DEPTH_LIMIT, type TupleSchema, TypeEvalLimitError, type TypeEvalLimits, type TypeForm, type TypePosition, type TypeScheme, type UnionSchema, UnionTooComplexError, type UnknownSchema, type VarCandidates, type VarSchema, type WriteKey, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates,
|
|
1135
|
+
export { type AnySchema, type ApplySchema, type ArraySchema, type Bindings, type Candidates, type Completion, DEFAULT_TYPE_LIMITS, type Discovery, type ElementFlag, type FnSchema$1 as FnSchema, type GuardSig, INSTANTIATION_COUNT_LIMIT, INSTANTIATION_DEPTH_LIMIT, type Incompatibility, type IncompatibilityKind, type IndexSchema, InferencePriority, type Instantiation, InstantiationLimitError, type KeyofSchema, type LiteralSchema, type MappedSchema, type ObjectSchema, type OverloadSchema, type Param, type PathSegment, type Prop, type ScalarSchema, type Schema, type Schemes, TYPE_EVAL_DEPTH_LIMIT, type TupleSchema, TypeEvalLimitError, type TypeEvalLimits, type TypeForm, type TypePosition, type TypeScheme, type UnionSchema, UnionTooComplexError, type UnknownSchema, type VarCandidates, type VarSchema, type WriteKey, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, createInferences, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates, inferTypes, inferredBindings, inferredTypes, instantiateInContextOf, instantiateLoose, isMissingType, isNumericLiteralName, isObjectOrArrayLiteral, isScheme, isSerializable, isVariadicTuple, join, joinAll, missingType, normalizeUnion, ownProp, readonlyMember, renameTypeParams, resetInstantiationCount, resetTypeLimits, resolveConditional, resolveOp, resolveTypeOp, restIndex, restTypeAtPosition, s, sampleValue, silentNever, substitute, subtype, typeAtPosition, typeDiff, typeFeatures, typeLimits, typeNameOf, typeNeedsParens, typeParamArity, version, widen, widenInferred, widenLiteral, widenOrigin, widenType, withUndefined, withoutUndefined };
|