@tslite/checker 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-FY7J7P5X.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +104 -10
- package/dist/index.d.ts +104 -10
- package/dist/index.js +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +111 -7
- package/dist/types/index.d.ts +111 -7
- package/dist/types/index.js +1 -1
- package/package.json +5 -5
- package/dist/chunk-DFZOAHNG.js +0 -1
package/dist/types/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var et=100,nt=50,tt=5e6,he={maxTypeDepth:100,maxInstantiationDepth:50,maxInstantiationCount:5e6,maxUnionMembers:1e3,maxOverloadSignatures:200},U=he;function rt(e){U={...he,...e};}function ot(){U=he;}function W(){return U}var H=class extends Error{constructor(n=U.maxTypeDepth){super(`excessive stack depth comparing types (limit ${n}) \u2014 the comparison is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},Se=class extends Error{constructor(t,r=t==="depth"?U.maxInstantiationDepth:U.maxInstantiationCount){super(`type instantiation is excessively deep and possibly infinite (${t} limit ${r})`);this.kind=t;this.name="InstantiationLimitError";}};function at(){Ce=0;}var Ce=0;function on(){if(Ce>=U.maxInstantiationCount)throw new Se("count");Ce++;}var Y=class extends Error{constructor(n,t=U.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${t})`),this.name="UnionTooComplexError";}};var an=Object.prototype.hasOwnProperty,ne=(e,n)=>an.call(e,n),k=(e,n)=>an.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 Ne=()=>({active:new Set,byScope:new Map});function be(e,n,t){let r=new Map(e);for(let o of n)r.set(o.name,t(o));return r}function Ve(e,n,t){let r=be(n,e,()=>{}),o=false,a=e.map(i=>{let u=i.bound&&F(i.bound,r,t),l=i.default&&F(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 Le(e,n,t){let r=e.typeParams?.length?Ve(e.typeParams,n,t):void 0,o=r?be(n,r,l=>l.bound):n,a=le(e.params,l=>{let c=F(l.type,o,t);return c===l.type?l:{...l,type:c}}),i=F(e.returns,o,t),u=e.guard&&F(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 le(e,n){let t=false,r=e.map(o=>{let a=n(o);return a!==o&&(t=true),a});return t?r:e}function F(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=fn(e,n,t);return t.active.delete(e),r.set(e,a),a}function fn(e,n,t){let r=o=>F(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=le(e.elements,r);return o===e.elements?e:{...e,elements:o}}case "union":case "intersection":{let o=le(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],S=r(c.type);S!==c.type&&(o=true),g(a,l,S===c.type?c:{...c,type:S});}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 Le(e,n,t);case "overload":{let o=le(e.signatures,a=>Le(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=F(e.body,a,t);return o===e.over&&i===e.body?e:{...e,over:o,body:i}}case "conditional":{let o=e.infer?.length?Ve(e.infer,n,t):void 0,a=o?be(n,o,S=>S.bound):n,i=r(e.check),u=F(e.extends,a,t),l=F(e.then,a,t),c=F(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=le(e.args,r);return o===e.args?e:{...e,args:o}}default:return e}}function un(e){return e.typeParams?.length?Le(e,new Map,Ne()):e}function it(e){return e.infer?.length?fn(e,new Map,Ne()):e}function ut(e){if(!e.params.length)return e;let n=Ne(),t=Ve(e.params,new Map,n),r=F(e.body,be(new Map,t,o=>o.bound),n);return t===e.params&&r===e.body?e:{params:t,body:r}}var A=e=>Object.freeze(e),s={any:A({t:"any"}),unknown:A({t:"unknown"}),string:A({t:"string"}),number:A({t:"number"}),boolean:A({t:"boolean"}),null:A({t:"null"}),undefined:A({t:"undefined"}),void:A({t:"void"}),nonPrimitive:A({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"?D(r):r):e,...n&&n.some(r=>r!=="req")?{flags:n}:{},...t?{readonly:true}:{}}),fn:(e,n,t)=>un({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(un)}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,t,r=false)=>({t:"mapped",key:e,over:n,body:t,optional:r}),conditional:(e,n,t,r,o)=>it({t:"conditional",check:e,extends:n,then:t,else:r,...o&&o.length?{infer:o}:{}}),scheme:(e,n)=>ut({params:e,body:n}),intersection:e=>$({of:e}),and:(e,n)=>$({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=ct(n);return r.length===1?r[0]:{t:"union",of:r}}};function lt(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 ct(e){let n=[],t=new Map;for(let u of e){let l=lt(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"?Fe(e.of)??e:e.t==="index"?ve(e.obj,e.key)??e:e.t==="returnType"?st(e.fn)??e:e.t==="parameters"?pt(e.fn)??e:e}var ge={t:"union",of:[]},Re=e=>e.t==="union"&&e.of.length===0;function st(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function D(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 pt(e){let n=e.t==="fn"?e:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1]:null;if(!n)return null;let t=[],r=[];for(let o of n.params)o.variadic?(t.push(o.type.t==="array"?o.type.items:o.type),r.push("rest")):o.optional?(t.push(D(o.type)),r.push("optional")):(t.push(o.type),r.push("req"));return s.tuple(t,r)}var We=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function ln(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 cn(e){return e.t==="null"||e.t==="undefined"?e.t:e.t==="nonPrimitive"?"nonPrimitive":We(e)?"scalar":e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"?"object":null}var sn=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function $(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(Re))return ge;let r=i=>n.some(u=>cn(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 ge;if(n.some(i=>cn(i)==="object"&&!sn(i)))for(let i=n.length-1;i>=0;i--)sn(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>W().maxUnionMembers)throw new Y(i);return s.union(n[o].of.map(u=>$({of:n.map((l,c)=>c===o?u:l)})))}let a=[];for(let i of n){if(i.t==="any")return s.any;if(Re(i))return ge;if(i.t!=="unknown"){if(We(i)){let u=false;for(let l=a.length-1;l>=0;l--){let c=a[l];if(We(c)){if(ln(c,i)){u=true;break}if(ln(i,c))a.splice(l,1);else return ge}}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 Fe(e){if(e.t==="union"&&e.of.length>0){let t=e.of.map(Fe);return t.some(r=>r===null)?null:ft(t)}if(e.t==="intersection"){let t=e.of.map(Fe);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 ft(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"}),xe=e=>e===G,pn=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 ve(e,n){if(e=x(e),n=x(n),n.t==="union"){let t=[],r=false;for(let o of n.of){let a=ve(e,o);if(a===null)return null;xe(a)?r=true:t.push(a);}return r?G:s.union(t)}if(pn(n))return null;if(e.t==="any"||Re(e))return e;if(e.t==="intersection"){let t=[];for(let r of e.of){let o=ve(x(r),n);if(o===null)return null;xe(o)||t.push(o);}return t.length===0?G:t.length===1?t[0]:$({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=ve(o,n);if(a===null)return null;if(xe(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?D(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=="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:pn(e)?null:G}var ke=e=>(e.t==="object"||e.t==="array"||e.t==="tuple")&&!!e.fromLiteral,dt=e=>e.t==="object"||e.t==="array"||e.t==="tuple"?e.fromLiteral?e:{...e,fromLiteral:true}:e,N=(e,n)=>k(e,n);function z(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 Be=e=>(+e).toString()===e;var dn=(e,n)=>e.flags?.[n]??"req",J=(e,n)=>dn(e,n)==="optional"?D(e.elements[n]):e.elements[n],Ae=e=>e.elements.map((n,t)=>J(e,t)),mn=e=>e.flags?.[e.elements.length-1]==="rest",te=e=>mn(e)?e.elements.length-1:-1,ce=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(t=>t!=="req");return n<0?e.elements.length:n};function yn(e,n,t,r=false){let o=te(e),a=te(n);if(!r&&ce(e)<ce(n))return false;if(a<0){if(o>=0)return false;let c=ce(n);return e.elements.length<c||e.elements.length>n.elements.length?false:e.elements.every((S,h)=>t(J(e,h),J(n,h)))}let i=n.elements[a],u=c=>c<a?J(n,c):i;if(o<0)return e.elements.length<ce(n)?false:e.elements.every((c,S)=>t(J(e,S),u(S)));if(o===0&&a!==0||o<ce(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 m(e,n,t=new WeakSet){return on(),mt(e,n,t)}function mt(e,n,t){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!St(M(e),n))return e;switch(e.t){case "var":{let r=k(n,e.name);return r||_e(e,n,t)}case "array":return {...e,items:m(e.items,n,t)};case "tuple":{let r=e.elements.map(o=>m(o,n,t));return {...e,elements:r}}case "union":return s.union(e.of.map(r=>m(r,n,t)));case "object":{if(t.has(e))return e;t.add(e);let r={};for(let a in e.props){let i=e.props[a];g(r,a,{type:m(i.type,n,t),optional:i.optional});}let o=e.index?{key:e.index.key,value:m(e.index.value,n,t)}:void 0;return t.delete(e),o?{t:"object",props:r,index:o}:{t:"object",props:r}}case "fn":{if(t.has(e))return e;t.add(e);let r=Ue(e,n,t);return t.delete(e),r}case "overload":return {t:"overload",signatures:e.signatures.map(r=>Ue(r,n,t))};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>m(r,n,t))};case "keyof":return x({t:"keyof",of:m(e.of,n,t)});case "index":return x({t:"index",obj:m(e.obj,n,t),key:m(e.key,n,t)});case "mapped":{let r=De([s.typeParam(e.key)],n,M(e),t),o={t:"mapped",key:r.decls[0].name,over:m(e.over,n,t),body:m(e.body,r.inner,t),optional:e.optional};return re(o)??o}case "conditional":{if(e.check.t==="var"){let o=e.check.name,a=k(n,o),i=a?x(a):void 0,u=i?.t==="union"?i.of:i?.t==="boolean"?[s.literal(true),s.literal(false)]:null;if(u)return {t:"union",of:u.map(l=>m(e,{...n,[o]:l},t))}}let r=e.infer?.length?De(e.infer,n,M(e),t):{inner:n,decls:void 0};return {t:"conditional",check:m(e.check,n,t),extends:m(e.extends,r.inner,t),then:m(e.then,r.inner,t),else:m(e.else,r.inner,t),...r.decls?{infer:r.decls}:{}}}case "intersection":return $({of:e.of.map(r=>m(r,n,t))});case "returnType":return x({t:"returnType",fn:m(e.fn,n,t)});case "parameters":return x({t:"parameters",fn:m(e.fn,n,t)});default:return e}}function _e(e,n,t,r=e.name){return !e.bound&&!e.default&&r===e.name?e:{...e,name:r,...e.bound?{bound:m(e.bound,n,t)}:{},...e.default?{default:m(e.default,n,t)}:{}}}function Ue(e,n,t,r){let o=e.typeParams?.length?De(e.typeParams,n,M(e),t,r):{inner:n,decls:void 0},a=o.inner;return {...e,params:e.params.map(i=>({...i,type:m(i.type,a,t)})),returns:m(e.returns,a,t),...e.guard?{guard:{...e.guard,type:m(e.guard.type,a,t)}}:{},...o.decls?{typeParams:o.decls}:{}}}function qe(e,n){return e.typeParams?.some(t=>n.has(t.name))?Ue(e,{},new WeakSet,n):e}function De(e,n,t,r,o=new Set){let a=new Set(e.map(d=>d.name)),i={},u=new Set;for(let d in n)if(!a.has(d)&&(g(i,d,n[d]),t.has(d)))for(let y of M(n[d]))u.add(y);let l=e.filter(d=>u.has(d.name)||o.has(d.name));if(l.length===0)return {inner:i,decls:e.map(d=>_e(d,i,r))};let c=new Set([...a,...t,...u,...o]),S=new Map;for(let d of l){let y=1;for(;c.has(`${d.name}_${y}`);)y++;let O=`${d.name}_${y}`;c.add(O),S.set(d.name,O);}let h={};for(let[d,y]of S)g(h,d,{t:"var",name:y});let p={...i};for(let d of l){let y=S.get(d.name);g(p,d.name,{t:"var",name:y,...d.bound?{bound:m(d.bound,{...i,...h},r)}:{}});}return {inner:p,decls:e.map(d=>_e(d,p,r,S.get(d.name)??d.name))}}var yt=new Set,Sn=new WeakMap;function M(e){let n=Sn.get(e);if(n)return n;let t=new Set;v(e,t,new WeakSet);let r=t.size===0?yt:t;return Sn.set(e,r),r}function ze(e,n,t){let r=new Set;t(r);for(let o of r)e.includes(o)||n.add(o);}function hn(e,n,t){let r=e.typeParams??[];ze(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),hn(e,n,t);return;case "overload":for(let r of e.signatures)hn(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),ze([e.key],n,r=>v(e.body,r,t));return;case "conditional":{v(e.check,n,t);let r=e.infer??[];ze(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 St(e,n){if(e.size===0)return false;for(let t of e)if(ne(n,t))return true;return false}function Ke(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;for(let l of n){let c=k(l.props,a);c&&(i.push(c.type),c.optional||(u=false));}g(r,a,{type:$({of:i}),optional:u});}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:$({of:[o.value,a.index.value]})}:a.index);return o?{t:"object",props:r,index:o}:{t:"object",props:r}}function re(e,n=x){if(e.over.t==="keyof"){let a=n(e.over.of),i=a.t==="intersection"?Ke(a.of)??a:a;if(i.t==="object"){let u={};for(let c of Object.keys(i.props)){let S=e.optional||i.props[c].optional;g(u,c,{type:m(e.body,{[e.key]:s.literal(c)}),...S?{optional:true}:{}});}let l=i.index?.key;return l===void 0?{t:"object",props:u}:{t:"object",props:u,index:{key:l,value:m(e.body,{[e.key]:l==="number"?s.number:s.string})}}}}let t=x(e.over);if(t.t==="string"||t.t==="number")return {t:"object",props:{},index:{key:t.t,value:m(e.body,{[e.key]:t})}};let r=ht(t);if(r===null)return null;let o={};for(let a of r)g(o,a,{type:m(e.body,{[e.key]:s.literal(a)}),optional:e.optional});return {t:"object",props:o}}function ht(e){if(e.t==="literal"&&typeof e.value=="string")return [e.value];if(e.t==="union"){let n=[];for(let t of e.of)if(t.t==="literal"&&typeof t.value=="string")n.push(t.value);else return null;return n}return null}function gn(e){let n=e.length;for(;n>0&&e[n-1].default;)n--;return {min:n,max:e.length}}var xn=(e,n)=>{let{min:t,max:r}=gn(e);return n>=t&&n<=r};function vn(e,n){let t={};return e.forEach((r,o)=>{o<n.length?g(t,r.name,n[o]):r.default&&g(t,r.name,m(r.default,t));}),t}function C(e,n){if(e.t!=="apply")return false;let t=k(n,e.name);return t!==void 0&&xn(t.params,e.args.length)}function L(e,n){if(e.t!=="apply")return e;let t=k(n,e.name);return !t||!xn(t.params,e.args.length)?e:m(t.body,vn(t.params,e.args))}function P(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?"?":""}:${P(e.props[r].type)}`).join(","),t=e.index?`,[${e.index.key}]:${P(e.index.value)}`:"";return `{${n}${t}}`}case "array":return `[${P(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(P).join(",")})`;case "union":return `(${e.of.map(P).sort().join("|")})`;case "fn":return `${e.typeParams?.length?`<${e.typeParams.map(t=>t.name).join(",")}>`:""}(${e.params.map(t=>P(t.type)).join(",")})=>${e.guard?`is${e.guard.param}:${P(e.guard.type)}`:P(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(P).join(",")}>`;case "intersection":return `&(${e.of.map(P).sort().join("&")})`;case "returnType":return `RT<${P(e.fn)}>`;default:return e.t}}var bn=()=>W().maxInstantiationDepth;function E(e,n={},t=0){if(t>bn())return e;if(e.t==="var")return e.bound?E(e.bound,n,t+1):e;if(C(e,n))return E(L(e,n),n,t+1);if(e.t==="mapped"){let r=re(e,o=>E(o,n,t+1));if(r)return E(r,n,t+1)}if(e.t==="intersection")return $(e);if(e.t==="union"){let r=e.of.flatMap(a=>{let i=E(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 oe(e,n,t=0){if(t>bn())return e;let r=q(e,n);if(r!==e)return oe(r,n,t+1);let o=E(e,n,t);return o===e?e:oe(o,n,t+1)}function q(e,n={}){let t=x(e);if(t!==e)return t;switch(e.t){case "keyof":{let r=oe(e.of,n);return r===e.of?e:x({...e,of:r})}case "index":{let r=oe(e.obj,n),o=oe(e.key,n);return r===e.obj&&o===e.key?e:x({...e,obj:r,key:o})}case "returnType":{let r=oe(e.fn,n);return r===e.fn?e:x({...e,fn:r})}default:return e}}var we=e=>typeof e=="string"?s.string:typeof e=="number"?s.number:s.boolean;function Qe(e){return e.t==="literal"&&e.fresh?we(e.value):e}function Tn(e){if(e.t==="literal")return e.fresh?we(e.value):e;if(e.t==="union"){let n=e.of.map(Tn);return n.some((t,r)=>t!==e.of[r])?b(n):e}return e}function jn(e){if(e.t==="literal")return we(e.value);if(e.t==="union"){let n=e.of.map(jn);return n.some((t,r)=>t!==e.of[r])?b(n):e}return e}function gt(e){return R(e,new WeakSet)}function xt(e){switch(e.t){case "array":return {t:"array",items:R(e.items,new WeakSet),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>R(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return On(e,new WeakSet);case "fn":case "overload":return R(e,new WeakSet);default:return e}}function R(e,n){if(e.t==="literal")return e.fresh?we(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:R(e.items,n),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(t=>R(t,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return n.add(e),On(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(t=>R(t,n))};case "fn":return n.add(e),{...e,params:e.params.map(t=>({...t,type:R(t.type,n)})),returns:R(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:R(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(t=>R(t,n))};default:return e}}function On(e,n){let t={};for(let i in e.props)g(t,i,{type:R(e.props[i].type,n),optional:e.props[i].optional});let r=e.index?{key:e.index.key,value:R(e.index.value,n)}:void 0,o=e.fromLiteral?{fromLiteral:true}:{},a=e.hasSpread?{hasSpread:true}:{};return r?{t:"object",props:t,index:r,...o,...a}:{t:"object",props:t,...o,...a}}function In(e){if(!e.siblings){let n=[];for(let t of In(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 vt(e){if(!e.propNames){let n=new Set;for(let t of In(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 bt=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function kt(e,n,t){let r={};for(let a in e.props){let i=e.props[a],u=Z(i.type,n&&{parent:n,propertyName:a},t);g(r,a,u===i.type?i:{...i,type:u});}if(n)for(let a of vt(n))N(r,a)||g(r,a,{type:s.undefined,optional:true});let o=e.index?{key:e.index.key,value:Z(e.index.value,void 0,t)}:void 0;return o?{t:"object",props:r,index:o}:{t:"object",props:r}}var kn=new WeakMap;function ae(e,n){let t=kn.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=>ae(o.type,n))||!!e.index&&ae(e.index.value,n);break;case "array":r=!!e.fromLiteral||ae(e.items,n);break;case "tuple":r=!!e.fromLiteral||e.elements.some(o=>ae(o,n));break;case "union":case "intersection":r=e.of.some(o=>ae(o,n));break}return n.delete(e),kn.set(e,r),r}var wn=new WeakMap;function Z(e,n,t){if(!ae(e,new WeakSet))return e;if(!n){let o=wn.get(e);if(o)return o}if(t.has(e))return e;t.add(e);let r=wt(e,n,t);return t.delete(e),n||wn.set(e,r),r}function wt(e,n,t){switch(e.t){case "object":return e.fromLiteral?kt(e,n,t):e;case "union":{let r=n??{siblings:e.of},o=e.of.map(a=>a.t==="null"||a.t==="undefined"?a:Z(a,r,t));return o.some(bt)?b(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=Z(a,void 0,t);return i!==a&&(r=true),i});return r?s.intersection(o):e}case "array":{let r=Z(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=Z(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 Te(e){return Z(e,void 0,new WeakSet)}var He=Object.freeze({t:"union",of:Object.freeze([])});function se(e){if(e===He)return true;switch(e.t){case "array":return se(e.items);case "tuple":return e.elements.some(se);case "union":case "intersection":return e.of.some(se);case "apply":return e.args.some(se);default:return false}}var Pn=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Tt(e,n){if(T(n,e))return e;if(T(e,n))return n;let t=Pn(e),r=Pn(n);return !t||!r||t===r?b([e,n]):null}var ie,K=false;function jt(e){K=!K;try{return e()}finally{K=!K;}}function $n(e){let n=ie,t=K,r=new Map;ie=r,K=false;try{return {result:e(),candidates:r}}finally{ie=n,K=t;}}var En=(e,n)=>{if(!ie)return;let t=ie.get(e);t||(t={co:[],contra:[]},ie.set(e,t)),(K?t.contra:t.co).push(n);};function Ot(e){if(e.length<=1)return [...e];let n=e.filter(ke);return n.length?[...e.filter(t=>!ke(t)),b(n)]:[...e]}function It(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 Pt(e,n){if(e.length)return It(e)?b([...e]):e.reduce((t,r)=>T(t,r,n)?r:t)}function Mn(e,n={}){let t=Ot(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 Te(b(t));let a=Pt(o,n);if(a!==void 0)return Te(r.length?b([a,...r]):a)}function Cn(e,n={}){if(e.length)return e.reduce((t,r)=>T(r,t,n)?r:t)}function Ln(e,n={}){let t=e.co.length?Mn(e.co,n):void 0;if(!e.contra.length)return t;let r=Cn(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&&T(t,r,n)?t:r}function Ye(e,n){let{typeParams:t,...r}=e;return {...r,params:e.params.map(o=>({...o,type:m(o.type,n)})),returns:m(e.returns,n),...e.guard?{guard:{...e.guard,type:m(e.guard.type,n)}}:{}}}function ue(e){return e.typeParams?.length?Ye(e,Object.fromEntries(e.typeParams.map(n=>[n.name,s.any]))):e}function Rn(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=>m(i,t));let o=Object.fromEntries(n.map(a=>[a.name,s.any]));return r=r.map(a=>m(a,o)),Ye(e,Object.fromEntries(n.map((a,i)=>[a.name,r[i]])))}function Wn(e,n,t={}){if(!e.some(o=>!k(n,o.name)||o.bound))return n;let r={...n};for(let o of e){let a=k(r,o.name)??(o.default?m(o.default,r):s.unknown);if(o.bound){let i=m(o.bound,r);T(a,i,t)||(a=i);}g(r,o.name,a);}return r}function Ge(e,n,t={}){let r=e.typeParams??[],o=new Set(r.map(S=>S.name)),a=S=>Object.fromEntries(Object.entries(S??{}).filter(([h])=>o.has(h))),i={},u=Math.max(e.params.length,n.params.length);for(let S=0;S<u;S++){let h=pe(e,S),p=pe(n,S);h&&p&&(i=w(h,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[S,h]of Object.entries(a(i)))g(c,S,h);return Ye(e,Wn(r,c,t))}function w(e,n,t={}){if(n===He)return t;if(e.t==="var"){if(se(n))return t;let r=k(t,e.name);if(!r)return En(e.name,n),{...t,[e.name]:n};if(n.t==="any"||n.t==="unknown")return t;En(e.name,n);let o=Tt(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=te(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?b(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=k(n.props,o);if(!i){if(a.optional)continue;return null}r=w(a.type,i.type,r)??r;}return r}case "fn":{if(n.t!=="fn")return null;let r=ue(e),o=Rn(n),a=w(r.returns,o.returns,t)??t,i=Math.min(r.params.length,o.params.length);for(let u=0;u<i;u++)a=jt(()=>w(r.params[u].type,o.params[u].type,a))??a;return r.guard&&o.guard&&(a=w(r.guard.type,o.guard.type,a)??a),a}case "union":{if(!e.of.some(l=>M(l).size>0))return T(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 S=w(l,o[c],i);S!==null&&(i=S,a[c]=true);}if(r.length!==1)return i;let u=o.filter((l,c)=>!a[c]);return u.length?w(r[0],b(u),i)??i:i}case "apply":{if(n.t!=="apply"||n.name!==e.name||n.args.length!==e.args.length)return null;let r=t;for(let o=0;o<e.args.length;o++)r=w(e.args[o],n.args[o],r)??r;return r}default:return T(n,e)?t:null}}var Fn="@rev",Je=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function B(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(Fn);switch(e.t){case "array":return {t:"array",items:B(e.items,n,t)};case "tuple":return {t:"tuple",elements:e.elements.map(r=>B(r,n,t)),...e.flags?{flags:e.flags}:{}};case "union":return s.union(e.of.map(r=>B(r,n,t)));case "fn":return {...e,params:e.params.map(r=>({...r,type:B(r.type,n,t)})),returns:B(e.returns,n,t)};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>B(r,n,t))};case "returnType":return {t:"returnType",fn:B(e.fn,n,t)};case "object":{let r={};for(let o in e.props)g(r,o,{type:B(e.props[o].type,n,t),optional:e.props[o].optional});return e.index?{t:"object",props:r,index:{key:e.index.key,value:B(e.index.value,n,t)}}:{t:"object",props:r}}default:return e}}function Et(e,n,t){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let r=e.over.of.name;if(k(t,r))return null;let o={};for(let a in n.props){let i=B(e.body,r,e.key),u=w(i,n.props[a].type,{}),l=u?k(u,Fn):void 0;g(o,a,{type:l?Qe(l):s.unknown,optional:n.props[a].optional});}return {...t,[r]:{t:"object",props:o}}}function Nn(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(Je(a)&&i.t==="object"){let u=Et(a,i,r);u&&(r=u);}}return r}function $t(e,n,t={}){let{result:r,candidates:o}=$n(()=>{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(!Je(l.type)&&(i=w(l.type,n[u],i),i===null))return null}return Nn(e.params,n,i)});if(r===null)return null;let a=Vn(r,o,t);return {returns:m(e.returns,a),bindings:a}}function Vn(e,n,t){let r;for(let[o,a]of n){if(a.co.length<2&&!a.contra.length)continue;let i=Ln(a,t);i===void 0||i===k(e,o)||(r??(r={...e}),g(r,o,i));}return r??e}function Mt(e,n,t={}){let{result:r,candidates:o}=$n(()=>{let i={};for(let u=0;u<e.params.length&&u<n.length;u++){let l=e.params[u];if(Je(l.type))continue;let c=w(l.type,n[u],i);c!==null&&(i=c);}return Nn(e.params,n,i)}),a=Vn(r,o,t);return {returns:m(e.returns,a),bindings:a}}var Ct=e=>e.t==="array"?e.items:e.t==="tuple"?s.union([...e.elements]):void 0;function V(e,n,t,r,o){if(e.t==="var"&&t.has(e.name)){let a=o.get(e.name);a||o.set(e.name,a={co:[],contra:[]}),(r?a.contra:a.co).push(n);return}if(!(n.t==="any"||n.t==="unknown"))switch(e.t){case "array":{let a=Ct(n);a&&V(e.items,a,t,r,o);return}case "tuple":{let a=e,i=te(a);if(i<0){n.t==="tuple"&&n.elements.length===a.elements.length&&a.elements.forEach((l,c)=>V(l,n.elements[c],t,r,o));return}let u=a.elements[i];if(n.t==="tuple"){let l=n;if(l.elements.length<i)return;for(let c=0;c<l.elements.length;c++)V(c<i?a.elements[c]:u,l.elements[c],t,r,o);}else if(n.t==="array"){for(let l=0;l<i;l++)V(a.elements[l],n.items,t,r,o);V(u,n.items,t,r,o);}return}case "fn":if(n.t==="fn"){let a=ue(e),i=Rn(n);a.params.forEach((u,l)=>{let c=i.params[l];c&&V(u.type,c.type,t,!r,o);}),V(a.returns,i.returns,t,r,o);}return;case "object":if(n.t==="object")for(let a in e.props){let i=k(n.props,a);i&&V(e.props[a].type,i.type,t,r,o);}return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((a,i)=>V(a,n.args[i],t,r,o));return;default:return}}function Lt(e,n){if(e.length===1)return e[0];let r=e.flatMap(o=>o.t==="union"?[...o.of]:[o]).filter(o=>e.every(a=>T(o,a,n)));return b(r)}var Rt=e=>e.t==="union"&&e.of.length===0;function Bn(e,n){let t={};for(let[r,{co:o,contra:a}]of e){let i=o.length?b(o):void 0,u=a.length?Lt(a,n):void 0,l=i??u;i&&u&&(l=!Rt(i)&&i.t!=="any"&&T(i,u,n)?i:u),l&&g(t,r,l);}return t}function An(e,n={}){let t=new Map,r=(e.infer??[]).map(a=>a.name);V(e.extends,e.check,new Set(r),false,t);let o={...Bn(t,n)};for(let a of r)ne(o,a)||g(o,a,s.unknown);return o}function Wt(e,n={},t=0){if(!e.infer?.length||M(e.check).size>0)return null;let r=new Map;V(e.extends,e.check,new Set(e.infer.map(u=>u.name)),false,r);let o=Bn(r,n),a=new WeakSet,i=je(m(e.extends,o),n,a,t);return T(e.check,i,n)?je(m(e.then,o),n,a,t):je(m(e.else,o),n,a,t)}function je(e,n={},t=new WeakSet,r=0,o=new Set){let a=r,i=W().maxTypeDepth,u=new Set,l=(p,d)=>d?.length?new Set([...p,...d.map(y=>y.name)]):p,c=(p,d)=>({...p,...p.bound?{bound:h(p.bound,d)}:{},...p.default?{default:h(p.default,d)}:{}}),S=(p,d)=>{let y=l(d,p.typeParams);return {...p,params:p.params.map(O=>({...O,type:h(O.type,y)})),returns:h(p.returns,y),...p.guard?{guard:{...p.guard,type:h(p.guard.type,y)}}:{},...p.typeParams?{typeParams:p.typeParams.map(O=>c(O,y))}:{}}},h=(p,d=u)=>{switch(p.t){case "var":return d.has(p.name)?c(p,d):s.unknown;case "array":return {...p,items:h(p.items,d)};case "tuple":return {...p,elements:p.elements.map(y=>h(y,d))};case "union":return s.union(p.of.map(y=>h(y,d)));case "object":{if(t.has(p))return p;t.add(p);let y={};for(let ye in p.props){let rn=p.props[ye];g(y,ye,{type:h(rn.type,d),optional:rn.optional});}let O=p.index?{key:p.index.key,value:h(p.index.value,d)}:void 0;return t.delete(p),O?{t:"object",props:y,index:O}:{t:"object",props:y}}case "fn":{if(t.has(p))return p;t.add(p);let y=S(p,d);return t.delete(p),y}case "overload":return {t:"overload",signatures:p.signatures.map(y=>S(y,d))};case "apply":{if(C(p,n)){let y=L(p,n);if(y.t==="conditional"){if(a>=i)throw new H;a++;try{let O=h(y,d);if(O.t!=="conditional")return O}finally{a--;}}}return {t:"apply",name:p.name,args:p.args.map(y=>h(y,d))}}case "conditional":{let y=p.infer?.length?Wt(p,n,a):Q(p,n);if(y)return h(y,d);let O=l(d,p.infer);return {t:"conditional",check:h(p.check,d),extends:h(p.extends,O),then:h(p.then,O),else:h(p.else,O),...p.infer?{infer:p.infer.map(ye=>c(ye,O))}:{}}}case "intersection":return $({of:p.of.map(y=>h(y,d))});case "returnType":return x({t:"returnType",fn:h(p.fn,d)});default:return p}};return h(e,o)}var Ft=s.object({}),Xe=(e,n,t="assignable")=>({seen:new WeakMap,exp:new Set,schemes:e,relation:t,assumed:0,explain:n,sourceStack:[],targetStack:[]}),Ze=0;function I(e,n,t){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:t,kind:"type"}),false}function en(e,n,t=0){if(t>W().maxInstantiationDepth)return e;if(C(e,n)){let r=L(e,n);if(r.t!=="conditional")return e;let o=Q(r,n);return o?en(o,n,t+1):e}if(e.t==="conditional"){let r=Q(e,n);return r?en(r,n,t+1):e}return e}function Nt(e,n,t={}){let r=[];return !f(e,n,Xe(t,{path:[],out:r}))&&r.length===0&&r.push({path:[],actual:e,expected:n,kind:"type"}),r}var Vt=new WeakMap,Bt=new WeakMap;function Qn(e,n,t,r,o){if(e===n)return true;if(Object.keys(t).length>0)return f(e,n,Xe(t,void 0,r));let a=o.get(e)?.get(n);if(a!==void 0)return a;let i=f(e,n,Xe(t,void 0,r)),u=o.get(e);return u||o.set(e,u=new WeakMap),u.set(n,i),i}function T(e,n,t={}){return Qn(e,n,t,"assignable",Vt)}function At(e,n,t={}){return Qn(e,n,t,"comparable",Bt)}function _t(e,n,t={}){return T(e,n,t)&&T(n,e,t)}function Q(e,n){if(e.infer?.length){if(M(e.check).size>0)return null;let t=en(e.check,n),r=An({...e,check:t},n),o=m(e.extends,r);return T(t,o,n)?m(e.then,r):m(e.else,r)}return M(e.check).size>0||M(e.extends).size>0?null:T(e.check,e.extends,n)?e.then:e.else}function fe(e,n,t=0){if(t>W().maxInstantiationDepth)return e;let r=q(e,n.schemes);if(r!==e)return fe(r,n,t+1);if(e.t==="conditional"){let o=Q(e,n.schemes);if(o)return fe(o,n,t+1)}return C(e,n.schemes)?fe(L(e,n.schemes),n,t+1):e.t==="union"?b(e.of.map(o=>fe(o,n,t+1))):e}var _n=(e,n)=>re(e,t=>E(t,n.schemes))??re({...e,over:fe(e.over,n)});function Ie(e,n,t,r){if(!t.explain)return f(e,n,t);t.explain.path.push(r);try{return f(e,n,t)}finally{t.explain.path.pop();}}function f(e,n,t){if(Ze>=W().maxTypeDepth)throw new H;Ze++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return t.relation==="comparable"?!0:I(t,e,n);let r=q(e,t.schemes);if(r!==e)return f(r,n,t);let o=q(n,t.schemes);if(o!==n)return f(e,o,t);if(e.t==="mapped"){let i=_n(e,t);if(i)return f(i,n,t)}if(n.t==="mapped"){let i=_n(n,t);if(i)return f(e,i,t)}if(e.t==="conditional"){let i=Q(e,t.schemes);if(i)return f(i,n,t)}if(n.t==="conditional"){let i=Q(n,t.schemes);if(i)return f(e,i,t)}if(t.relation==="comparable"&&qt(n,e))return !0;if(n.t==="intersection")return n.of.every(i=>f(e,i,t));if(e.t==="intersection"&&n.t!=="union"){if(Dt(e.of,n,t))return !0;if(n.t==="object"){let i=Ke(e.of);if(i)return f(i,n,t)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(C(e,t.schemes)||C(n,t.schemes))){let i=`${P(e)}\u2264${P(n)}`;if(t.exp.has(i))return !0;if(Dn(e,t.sourceStack)&&Dn(n,t.targetStack))return t.assumed++,!0;t.exp.add(i),t.sourceStack.push(e),t.targetStack.push(n);let u=f(L(e,t.schemes),L(n,t.schemes),t);return t.sourceStack.pop(),t.targetStack.pop(),t.exp.delete(i),u}return Ut(e,n,t)}finally{Ze--;}}var Un=5;function Dn(e,n){if(n.length<Un||e.t!=="apply")return false;let t=0;for(let r of n)if(r.t==="apply"&&r.name===e.name&&++t>=Un)return true;return false}function Ut(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=zt(e,n,t);return (!a||t.assumed!==o)&&r.delete(n),a}function Dt(e,n,t){let r=t.intersectionSource,o=t.explain;t.intersectionSource=true,t.explain=void 0;try{return e.some(a=>f(a,n,t))}finally{t.intersectionSource=r,t.explain=o;}}function zt(e,n,t){if(e.t==="union")return t.relation==="comparable"?e.of.length===0||e.of.some(r=>f(r,n,t)):e.of.every(r=>f(r,n,t));if(e.t==="boolean"&&n.t==="union")return t.relation==="comparable"?f(s.literal(true),n,t)||f(s.literal(false),n,t):f(s.literal(true),n,t)&&f(s.literal(false),n,t);if(n.t==="union")return Kt(e,n,t);if(e.t==="var"&&!(n.t==="var"&&n.name===e.name))return e.bound?f(e.bound,n,t):I(t,e,n);if(e.t==="nonPrimitive"&&n.t!=="nonPrimitive")return n.t==="object"&&n.index?I(t,e,n):f(Ft,n,t);if(qn(e)&&qn(n))return Jt(e,n,t);if(n.t==="overload")return n.signatures.every(r=>f(e,r,t));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:I(t,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Hn(e.value)===n.t?true:I(t,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:I(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:I(t,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?I(t,e,n):f(e.items,n.items,t):e.t==="tuple"?e.readonly&&!n.readonly?I(t,e,n):Ae(e).every((r,o)=>Ie(r,n.items,t,String(o))):I(t,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return I(t,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return I(t,e,n);for(let r=0;r<e.elements.length;r++)if(!Ie(e.elements[r],n.elements[r],t,String(r)))return false;return true}return yn(e,n,(r,o)=>f(r,o,t),t.relation==="comparable")}case "object":if(e.t==="object")return Ht(e,n,t);if(Object.keys(n.props).length===0&&!n.index)return e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:I(t,e,n);if((e.t==="array"||e.t==="tuple")&&n.index){let r=e.t==="array"?[e.items]:Ae(e);return n.index.key==="number"&&Object.values(n.props).every(o=>o.optional)&&r.every(o=>f(o,n.index.value,t))?true:I(t,e,n)}return I(t,e,n);case "fn":return e.t==="fn"?Oe(e,n,t):I(t,e,n);case "var":return e.t==="var"&&e.name===n.name;case "typeQuery":return e.t==="typeQuery"&&e.path.length===n.path.length&&e.path.every((r,o)=>r===n.path[o]);case "keyof":return e.t==="keyof"&&f(e.of,n.of,t)&&f(n.of,e.of,t);case "index":return e.t==="index"&&f(e.obj,n.obj,t)&&f(n.obj,e.obj,t)&&f(e.key,n.key,t)&&f(n.key,e.key,t);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&f(e.over,n.over,t)&&f(n.over,e.over,t)&&f(e.body,n.body,t)&&f(n.body,e.body,t);case "conditional":return e.t==="conditional"&&f(e.check,n.check,t)&&f(n.check,e.check,t)&&f(e.extends,n.extends,t)&&f(n.extends,e.extends,t)&&f(e.then,n.then,t)&&f(e.else,n.else,t);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((r,o)=>f(r,n.args[o],t));case "returnType":return e.t==="returnType"&&f(e.fn,n.fn,t)&&f(n.fn,e.fn,t);case "parameters":return e.t==="parameters"&&f(e.fn,n.fn,t)&&f(n.fn,e.fn,t)}}var Hn=e=>typeof e;function qt(e,n){switch(n.t){case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Hn(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 Kt(e,n,t){let r=t.explain;if(!r)return n.of.some(i=>f(e,i,t));t.explain=void 0;let o;try{o=n.of.some(i=>f(e,i,t));}finally{t.explain=r;}if(o)return true;let a=Qt(e,n,t);return a?f(e,a,t):I(t,e,n)}function Qt(e,n,t){if(e.t!=="object")return null;let r=n.of.map(o=>E(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 S=r[c];if(S.t!=="object")return !1;let h=N(S.props,o);return !!h&&f(a,h.type,t)});}finally{t.explain=i;}if(u.length===1)return u[0]}return null}function Ht(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?z(i.type).type:i.optional?b([i.type,s.undefined]):i.type;if(!Ie(u,a.type,t,o))return false}return !(n.index&&!Yt(e,n.index,t))}function Yt(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&&!Be(o))continue;let a=e.props[o],i=a.optional?D(a.type):a.type;if(!Ie(i,n.value,t,o))return false}}return !e.index||f(e.index.value,n.value,t)}var Yn=e=>{let n=e.params[e.params.length-1];return n?.variadic?n:void 0},Gt=e=>{let n=e.params.findIndex(t=>t.optional||t.variadic);return n<0?e.params.length:n};function pe(e,n){let t=Yn(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 zn=(e,n)=>{let t=pe(e,n);return t===void 0?t:e.params[n]?.optional?D(t):t},qn=e=>e.t==="fn"||e.t==="overload";function Jt(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?Kn(r[0],o[0],t,t.relation==="comparable"):o.every(a=>r.some(i=>Kn(i,a,t,true)))}function Kn(e,n,t,r){if(r)return Oe(ue(e),ue(n),t);let o=qe(n,M(e));return e.typeParams?.length?Oe(Ge(e,o,t.schemes),o,t):Oe(e,o,t)}function Oe(e,n,t){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!f(e.returns,n.returns,t)||!Yn(n)&&Gt(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=zn(e,o),i=zn(n,o);if(a&&i&&!f(i,a,t))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!f(e.guard.type,n.guard.type,t)))}var Zt=e=>e.t==="object"&&!e.index&&Object.values(e.props).every(n=>n.optional);function b(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let t=W().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&&!Zt(u)&&T(a,u)&&(l<o||!T(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 Xt(e,n){let t=new Set,r=new WeakSet,o=a=>{if(!r.has(a))switch(r.add(a),a.t){case "keyof":t.add("keyof"),o(a.of);break;case "index":t.add("indexed"),o(a.obj),o(a.key);break;case "mapped":t.add("mapped"),o(a.over),o(a.body);break;case "conditional":t.add("conditional"),a.infer?.length&&t.add("infer"),a.infer?.forEach(o),o(a.check),o(a.extends),o(a.then),o(a.else);break;case "returnType":t.add("returnType"),o(a.fn);break;case "parameters":t.add("parameters"),o(a.fn);break;case "tuple":t.add("tuple"),a.elements.forEach(o);break;case "intersection":t.add("intersection"),a.of.forEach(o);break;case "overload":t.add("overload");for(let i of a.signatures){i.typeParams?.forEach(o);for(let u of i.params)o(u.type);o(i.returns),i.guard&&o(i.guard.type);}break;case "object":for(let i in a.props)o(a.props[i].type);a.index&&o(a.index.value);break;case "array":o(a.items);break;case "union":a.of.forEach(o);break;case "fn":a.typeParams?.forEach(o);for(let i of a.params)o(i.type);o(a.returns),a.guard&&o(a.guard.type);break;case "var":a.bound&&o(a.bound),a.default&&o(a.default);break;case "apply":n&&a.name===n&&t.add("recursion"),a.args.forEach(o);break}};return o(e),t}var er=s.union([]);function Gn(e,n){return Pe(e,n,new WeakMap)}function nr(e){return e.reduce(Gn,er)}function Pe(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 tr(e,n,t);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:s.unknown};return Jn(t,e,n,o),o.items=Pe(e.items,n.items,t),o}return b([e,n])}function tr(e,n,t){let r={t:"object",props:{}};Jn(t,e,n,r);for(let o in e.props){let a=e.props[o],i=k(n.props,o);if(i){let u=Pe(a.type,i.type,t);g(r.props,o,a.optional||i.optional?{type:u,optional:true}:{type:u});}else g(r.props,o,{type:a.type,optional:true});}for(let o in n.props)ne(e.props,o)||g(r.props,o,{type:n.props[o].type,optional:true});return e.index&&n.index&&e.index.key===n.index.key&&(r.index={key:e.index.key,value:Pe(e.index.value,n.index.value,t)}),r}function Jn(e,n,t,r){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(t,r);}var rr=4;function or(e,n={}){return de(e,n,0)}function de(e,n,t){let r=E(q(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(de(r.elements[a],n,t));return o}case "object":{if(t>=rr)return {};let o={};for(let a of Object.keys(r.props)){let i=r.props[a];i.optional||g(o,a,de(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:de(o,n,t)}case "intersection":{let o=r.of.map(i=>de(i,n,t));if(!o.every(ar))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 ar=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);var ir=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e),ur={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"])},Zn=(e,n)=>ur[e].has(n);function Me(e,n=new WeakSet){return j(e,{seen:n,infer:new Map})}function lr(e){return Ee(e,{seen:new WeakSet,infer:new Map})}function tn(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?tn(e.of[0],n):"union";case "intersection":return e.of.length===1?tn(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 _(e,n,t){let r=j(n,t);return Zn(e,tn(n,t))?`(${r})`:r}function Ee(e,n){return e.map((t,r)=>{let o=j(t,n);return r===0&&cr(t)?`(${o})`:o}).join(", ")}var cr=e=>e.t==="fn"&&!!e.typeParams?.length||e.t==="overload"&&e.signatures.length===1&&!!e.signatures[0].typeParams?.length;function sr(e,n){return e?.length?`<${e.map(t=>pr(t,n)).join(", ")}>`:""}function pr(e,n){let t=e.bound?` extends ${j(e.bound,n)}`:"",r=e.default?` = ${j(e.default,n)}`:"";return `${e.name}${t}${r}`}function $e(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 nn(e,n,t){let r=$e(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}: ${j(u.type,r)}`}).join(", "),a=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${j(e.guard.type,r)}`:j(e.returns,r),i=sr(e.typeParams,r);return n==="=>"?`${i}(${o}) => ${a}`:`${i}(${o}): ${a}`}function j(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 ${j(r.bound,$e(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=`${_("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"?`...${_("postfix",a,n)}[]`:u==="optional"?`${_("postfix",a,n)}?`:j(a,n)}).join(", ")}]`;return e.readonly?`readonly ${o}`:o}case "union":{if(e.of.length===0)return "never";if(e.of.length===1)return j(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>_("union",o,n)).join(" | ");return t.delete(e),r}case "intersection":{if(e.of.length===1)return j(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>_("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])=>`${ir(o)?o:JSON.stringify(o)}${a.optional?"?":""}: ${j(a.type,n)}`);return e.index&&r.push(`[k: ${e.index.key}]: ${j(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=nn(e,"=>",n);return t.delete(e),r}case "overload":{if(e.signatures.length===1)return nn(e.signatures[0],"=>",n);if(t.has(e))return "\u2026";t.add(e);let r=e.signatures.map(o=>nn(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}<${Ee(e.args,n)}>`;return t.delete(e),r}case "keyof":return `keyof ${_("operand",e.of,n)}`;case "index":return `${_("postfix",e.obj,n)}[${j(e.key,n)}]`;case "mapped":{if(t.has(e))return "\u2026";t.add(e);let r=e.optional?"?":"",o=$e(n,[e.key]),a=`{ [${e.key} in ${j(e.over,n)}]${r}: ${j(e.body,o)} }`;return t.delete(e),a}case "conditional":{if(t.has(e))return "\u2026";t.add(e);let r=e.infer??[],o=r.length?{...n,infer:new Map([...n.infer,...r.map(u=>[u.name,u])])}:n,a=$e(n,r.map(u=>u.name)),i=`${_("check",e.check,n)} extends ${_("extends",e.extends,o)} ? ${j(e.then,a)} : ${j(e.else,a)}`;return t.delete(e),i}case "returnType":return `ReturnType<${Ee([e.fn],n)}>`;case "parameters":return `Parameters<${Ee([e.fn],n)}>`}}function Xn(e){if(e.length===0)return "value";let n=e[e.length-1];if(/^\d+$/.test(n)){let t=e.slice(0,-1);return t.length?`property '${t.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function 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?`${Xn(t.path)} is missing`:`${Xn(t.path)}: expected '${Me(t.expected)}', got '${Me(t.actual)}'`).join("; ")}function X(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),X(z(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(t=>X(z(t).type,n)));case "object":{if(n.has(e))return true;n.add(e);let t=Object.values(e.props).every(o=>X(z(o.type).type,n)),r=!e.index||X(z(e.index.value).type,n);return t&&r}case "union":return n.has(e)?true:(n.add(e),e.of.every(t=>X(t,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(t=>X(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 dr(e,n,t={}){let r=e;for(let o of n){let a=ee(r,o,t);if(a===null)return null;r=a;}return {type:r,completions:me(r,t)}}var mr=e=>e==="[]"||/^\d+$/.test(e);function ee(e,n,t,r=new Set){if(e.t==="var")return e.bound?ee(E(e,t),n,t,r):null;if(e.t==="mapped"){let a=E(e,t);return a===e?null:ee(a,n,t,r)}if(C(e,t)){let a=P(e);if(r.has(a))return null;r.add(a);let i=ee(L(e,t),n,t,r);return r.delete(a),i}let o=x(e);if(o!==e)return ee(o,n,t,r);switch(e.t){case "any":return e;case "object":{let a=N(e.props,n);return a?a.optional?b([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return mr(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?b(u):null}case "union":{let a=[];for(let i of e.of){let u=ee(i,n,t,r);if(u===null)return null;a.push(u);}return a.length?b(a):null}case "intersection":{let a=e.of.map(i=>ee(i,n,t,r)).filter(i=>i!==null);return a.length?$({of:a}):null}default:return null}}function me(e,n,t=new WeakSet,r=new Set){if(e.t==="var")return e.bound?me(E(e,n),n,t,r):[];if(C(e,n)){let a=P(e);if(r.has(a))return [];r.add(a);let i=me(L(e,n),n,t,r);return r.delete(a),i}let o=x(e);if(o!==e)return me(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 me(u,n,t,r))i.has(l.key)||(i.add(l.key),a.push(l));return t.delete(e),a}default:return []}}exports.DEFAULT_TYPE_LIMITS=he;exports.INSTANTIATION_COUNT_LIMIT=tt;exports.INSTANTIATION_DEPTH_LIMIT=nt;exports.InstantiationLimitError=Se;exports.TYPE_EVAL_DEPTH_LIMIT=et;exports.TypeEvalLimitError=H;exports.UnionTooComplexError=Y;exports.apparentType=E;exports.asLiteralOrigin=dt;exports.baseLiteralType=jn;exports.bindTypeParams=vn;exports.comparable=At;exports.configureTypeLimits=rt;exports.contravariantInference=Cn;exports.covariantInference=Mn;exports.discover=dr;exports.equals=_t;exports.erasedSignature=ue;exports.expand1=L;exports.flagAt=dn;exports.format=Me;exports.formatTypeArgs=lr;exports.formatTypeDiff=fr;exports.freeVars=M;exports.groundVars=je;exports.inferFromCandidates=Ln;exports.inferredTypes=Wn;exports.instantiate=$t;exports.instantiateInContextOf=Ge;exports.instantiateLoose=Mt;exports.isMissingType=xe;exports.isNumericLiteralName=Be;exports.isObjectOrArrayLiteral=ke;exports.isScheme=C;exports.isSerializable=X;exports.isVariadicTuple=mn;exports.join=Gn;exports.joinAll=nr;exports.missingType=G;exports.normalizeUnion=b;exports.ownProp=N;exports.renameTypeParams=qe;exports.resetInstantiationCount=at;exports.resetTypeLimits=ot;exports.resolveConditional=Q;exports.resolveOp=q;exports.resolveTypeOp=x;exports.restIndex=te;exports.s=s;exports.sampleValue=or;exports.silentNever=He;exports.substitute=m;exports.subtype=T;exports.typeAtPosition=pe;exports.typeDiff=Nt;exports.typeFeatures=Xt;exports.typeLimits=W;exports.typeNeedsParens=Zn;exports.typeParamArity=gn;exports.unify=w;exports.widen=Qe;exports.widenInferred=xt;exports.widenLiteral=Tn;exports.widenOrigin=Te;exports.widenType=gt;exports.withoutUndefined=z;
|
|
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 []}}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.widen=an;exports.widenInferred=At;exports.widenLiteral=Fn;exports.widenOrigin=Ce;exports.widenType=Nt;exports.withUndefined=W;exports.withoutUndefined=B;
|
package/dist/types/index.d.cts
CHANGED
|
@@ -3,6 +3,13 @@ interface Prop {
|
|
|
3
3
|
readonly type: Schema;
|
|
4
4
|
/** `true` quando a propriedade pode estar ausente (`{ x?: T }`). */
|
|
5
5
|
readonly optional?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* `true` quando a propriedade não aceita escrita (`{ readonly x: T }`). Só a ESCRITA o
|
|
8
|
+
* lê — o checker acusa o TS2540/TS2704 —; a relação o ignora, como a atribuibilidade do
|
|
9
|
+
* tsc (`{ readonly a: T } ≤ { a: T }` e o inverso). Atravessa a instanciação e o
|
|
10
|
+
* widening; some no spread e no rest, que criam props graváveis. TC62.
|
|
11
|
+
*/
|
|
12
|
+
readonly readonly?: boolean;
|
|
6
13
|
}
|
|
7
14
|
/**
|
|
8
15
|
* Assinatura de índice de um objeto — `{ [k: string]: V }` (a forma de `Record<K, V>`).
|
|
@@ -12,6 +19,9 @@ interface Prop {
|
|
|
12
19
|
interface IndexSig {
|
|
13
20
|
readonly key: "string" | "number";
|
|
14
21
|
readonly value: Schema;
|
|
22
|
+
/** `readonly [k: string]: V` — o índice não aceita escrita (o TS2542 no checker); a
|
|
23
|
+
* relação o ignora, como a da prop. TC62. */
|
|
24
|
+
readonly readonly?: boolean;
|
|
15
25
|
}
|
|
16
26
|
/**
|
|
17
27
|
* Flag de um elemento de tupla, na forma da 3.9 (DECISIONS D49 da raiz):
|
|
@@ -186,7 +196,31 @@ type Schema = {
|
|
|
186
196
|
readonly key: string;
|
|
187
197
|
readonly over: Schema;
|
|
188
198
|
readonly body: Schema;
|
|
199
|
+
/**
|
|
200
|
+
* Os modificadores — as flags do `MappedTypeModifiers` do tsc (`getMappedTypeModifiers`,
|
|
201
|
+
* `checker.ts:10063`). `optional` e `readonly` ACRESCENTAM (`?`/`+?`,
|
|
202
|
+
* `readonly`/`+readonly`); `excludeOptional` e `excludeReadonly` TIRAM (`-?`,
|
|
203
|
+
* `-readonly`). Sem nenhum, cada prop herda o modificador da prop de origem (o
|
|
204
|
+
* `modifiersType`). TC63.
|
|
205
|
+
*/
|
|
189
206
|
readonly optional?: boolean;
|
|
207
|
+
readonly readonly?: boolean;
|
|
208
|
+
readonly excludeOptional?: boolean;
|
|
209
|
+
readonly excludeReadonly?: boolean;
|
|
210
|
+
/**
|
|
211
|
+
* O `modifiersType` de um mapped NÃO homomórfico: o `T` de onde as props herdam `?` e
|
|
212
|
+
* `readonly`. Num `[P in K]` com `K extends keyof T` (o `Pick`), é o `T` — o
|
|
213
|
+
* `getModifiersTypeFromMappedType` (`checker.ts:10042`). O `substitute` o grava ao
|
|
214
|
+
* instanciar o `K`, enquanto a constraint dele ainda diz qual era o `T`. TC63.
|
|
215
|
+
*/
|
|
216
|
+
readonly modifiers?: Schema;
|
|
217
|
+
/**
|
|
218
|
+
* O `over` foi declarado `keyof T` com `T` um TYPE PARAM — o
|
|
219
|
+
* `getHomomorphicTypeVariable` do tsc. Instanciado o `T`, o mapped segue a regra do
|
|
220
|
+
* `instantiateMappedType` (`checker.ts:14175`): distribui sobre união, array vira
|
|
221
|
+
* array, tupla vira tupla, primitivo fica ele mesmo. TC63.
|
|
222
|
+
*/
|
|
223
|
+
readonly typeVariable?: boolean;
|
|
190
224
|
} | {
|
|
191
225
|
readonly t: "conditional";
|
|
192
226
|
readonly check: Schema;
|
|
@@ -194,6 +228,7 @@ type Schema = {
|
|
|
194
228
|
readonly then: Schema;
|
|
195
229
|
readonly else: Schema;
|
|
196
230
|
readonly infer?: readonly VarSchema[];
|
|
231
|
+
readonly distributive?: true;
|
|
197
232
|
} | {
|
|
198
233
|
readonly t: "intersection";
|
|
199
234
|
readonly of: readonly Schema[];
|
|
@@ -261,6 +296,8 @@ type IndexSchema = Extract<Schema, {
|
|
|
261
296
|
type MappedSchema = Extract<Schema, {
|
|
262
297
|
t: "mapped";
|
|
263
298
|
}>;
|
|
299
|
+
/** Os modificadores escritos de um mapped (ver o `MappedSchema`). */
|
|
300
|
+
type MappedModifiers = Pick<MappedSchema, "optional" | "readonly" | "excludeOptional" | "excludeReadonly">;
|
|
264
301
|
type ConditionalSchema = Extract<Schema, {
|
|
265
302
|
t: "conditional";
|
|
266
303
|
}>;
|
|
@@ -338,7 +375,9 @@ declare const s: {
|
|
|
338
375
|
/** `T[K]` — acesso indexado. Resolve quando `T` é objeto/array e `K` é literal/união. */
|
|
339
376
|
readonly index: (obj: Schema, key: Schema) => Schema;
|
|
340
377
|
/** `{ [key in over]?: body }` — mapped type. Resolve quando `over` dá chaves literais. */
|
|
341
|
-
|
|
378
|
+
/** `{ [key in over]: body }`, com os modificadores escritos (`{ optional: true }` é o
|
|
379
|
+
* `?`, `{ excludeOptional: true }` o `-?`…). Só a flag ligada entra no nó. */
|
|
380
|
+
readonly mapped: (key: string, over: Schema, body: Schema, modifiers?: MappedModifiers) => Schema;
|
|
342
381
|
/** `check extends ext ? then : els` — conditional. `infer` = as declarações dos
|
|
343
382
|
* `infer U` introduzidos no `ext` (as posições são `var(U)`); resolve via `unify`
|
|
344
383
|
* (ver `resolveConditional`). Sem `infer` → conditional simples (discriminante concreto).
|
|
@@ -410,6 +449,31 @@ declare const s: {
|
|
|
410
449
|
};
|
|
411
450
|
/** Resolve um `keyof`/`index` um nível quando possível; senão, devolve `t` como está. */
|
|
412
451
|
declare function resolveTypeOp(t: Schema): Schema;
|
|
452
|
+
/**
|
|
453
|
+
* O tipo **lido** de algo opcional: `T | undefined`, achatando um nível (sem
|
|
454
|
+
* `normalizeUnion`, que mora no subtype).
|
|
455
|
+
*
|
|
456
|
+
* É o `addOptionality` do tsc (`checker.ts:7514` na tag): sob `strictNullChecks`, o
|
|
457
|
+
* tipo declarado de uma propriedade, de um elemento de tupla ou de um parâmetro
|
|
458
|
+
* **opcional** já inclui `undefined`, e é esse tipo que a relação compara. Aqui o
|
|
459
|
+
* `Schema` guarda a opcionalidade como flag (`optional`, e o `ElementFlag` da tupla),
|
|
460
|
+
* então quem compara precisa pedir o tipo lido — num lugar só, por isto.
|
|
461
|
+
*/
|
|
462
|
+
declare function withUndefined(t: Schema): Schema;
|
|
463
|
+
/** Uma assinatura, na forma que a leitura por POSIÇÃO precisa (a de `fn` ou a de uma
|
|
464
|
+
* entrada de `overload`). */
|
|
465
|
+
type PositionalSignature = {
|
|
466
|
+
readonly params: readonly Param[];
|
|
467
|
+
};
|
|
468
|
+
/**
|
|
469
|
+
* Os argumentos de uma assinatura a partir da posição `pos`, como TUPLA — o
|
|
470
|
+
* `getRestTypeAtPosition` do tsc (`checker.ts:26961`). É o que `Parameters<F>` devolve
|
|
471
|
+
* (`pos` 0) e o que o rest de um padrão de `infer` recebe no `applyToParameterTypes`
|
|
472
|
+
* (`(...args: infer P) => any`). Um rest que começa exatamente em `pos` responde por si
|
|
473
|
+
* (`(...args: T) => any` dá o `T`); as posições até o `getMinArgumentCount` são
|
|
474
|
+
* obrigatórias, e as seguintes, opcionais.
|
|
475
|
+
*/
|
|
476
|
+
declare function restTypeAtPosition(sig: PositionalSignature, pos: number): Schema;
|
|
413
477
|
/**
|
|
414
478
|
* O acesso indexado cuja chave **não existe** no objeto — o que o tsc reporta como
|
|
415
479
|
* TS2339 e resolve para o `errorType` (`getIndexedAccessType`:
|
|
@@ -483,10 +547,17 @@ declare const isVariadicTuple: (t: TupleSchema) => boolean;
|
|
|
483
547
|
declare const restIndex: (t: TupleSchema) => number;
|
|
484
548
|
|
|
485
549
|
type IncompatibilityKind = "missing" | "type";
|
|
550
|
+
/**
|
|
551
|
+
* Um passo do caminho até um ponto: `number` é a POSIÇÃO numa tupla ou num array, `string`
|
|
552
|
+
* é uma CHAVE — de propriedade ou de index signature. Segmentos, e não texto, para que uma
|
|
553
|
+
* chave com `.` (`"hp.max"`), a chave `"2"` e a chave vazia não se confundam com dois
|
|
554
|
+
* níveis, com a posição 2 e com a raiz. É a forma do `path` do zod e do Standard Schema.
|
|
555
|
+
*/
|
|
556
|
+
type PathSegment = string | number;
|
|
486
557
|
/** Um ponto de incompatibilidade entre `actual` e `expected`. */
|
|
487
558
|
interface Incompatibility {
|
|
488
|
-
/** Caminho até o ponto: `[]` = raiz, `["count"]`, `["user","name"]`. */
|
|
489
|
-
readonly path: readonly
|
|
559
|
+
/** Caminho até o ponto: `[]` = raiz, `["count"]`, `["user", "name"]`, `["items", 3]`. */
|
|
560
|
+
readonly path: readonly PathSegment[];
|
|
490
561
|
/** O tipo esperado naquele ponto. */
|
|
491
562
|
readonly expected: Schema;
|
|
492
563
|
/** O tipo que veio — ausente quando `kind === "missing"` (a prop não existe). */
|
|
@@ -656,9 +727,10 @@ declare function freeVars(schema: Schema): ReadonlySet<string>;
|
|
|
656
727
|
/**
|
|
657
728
|
* O curinga "sem inferência" — o `silentNeverType` do tsc: um `never` que ocupa, no
|
|
658
729
|
* contextual que uma chamada passa a uma chamada genérica aninhada, o lugar de um type
|
|
659
|
-
* param dela que ainda não tem candidato (o `getInferredType` com `NoDefault`)
|
|
660
|
-
*
|
|
661
|
-
*
|
|
730
|
+
* param dela que ainda não tem candidato (o `getInferredType` com `NoDefault`); e o tipo de
|
|
731
|
+
* uma arrow sensível ao contexto na primeira rodada de uma chamada, o `anyFunctionType`
|
|
732
|
+
* de lá (checker D81). Nada se infere dele. É comparado por IDENTIDADE, como lá, e não é
|
|
733
|
+
* dado persistível: vive só durante a inferência de uma chamada.
|
|
662
734
|
*/
|
|
663
735
|
declare const silentNever: Schema;
|
|
664
736
|
/**
|
|
@@ -961,5 +1033,37 @@ interface Discovery {
|
|
|
961
1033
|
* devolve o próprio tipo e suas completions.
|
|
962
1034
|
*/
|
|
963
1035
|
declare function discover(schema: Schema, path: readonly string[], schemes?: Schemes): Discovery | null;
|
|
1036
|
+
/**
|
|
1037
|
+
* A chave de uma ESCRITA num membro. `name` é uma chave conhecida — `element: false` no
|
|
1038
|
+
* ponto (`o.a`), que só alcança o índice de string, e `true` no colchete (`o["a"]`,
|
|
1039
|
+
* `o[0]`), em que um nome numérico consulta o índice `number` antes. `base` é uma chave
|
|
1040
|
+
* não literal (`o[k]` com `k: string`).
|
|
1041
|
+
*/
|
|
1042
|
+
type WriteKey = {
|
|
1043
|
+
readonly name: string;
|
|
1044
|
+
readonly element: boolean;
|
|
1045
|
+
} | {
|
|
1046
|
+
readonly base: "string" | "number";
|
|
1047
|
+
};
|
|
1048
|
+
/**
|
|
1049
|
+
* Por onde uma escrita num membro passa, quando ela é RECUSADA pelo `readonly`:
|
|
1050
|
+
*
|
|
1051
|
+
* - `"property"` — o membro é uma propriedade readonly: o TS2540 do tsc (e o TS2704 no
|
|
1052
|
+
* `delete`), que acusa o nome/argumento e faz do acesso o tipo-erro;
|
|
1053
|
+
* - `"index"` — o membro é alcançado por uma index signature readonly (ou pelo índice de
|
|
1054
|
+
* um `readonly T[]`): o TS2542, que acusa o acesso inteiro e segue com o tipo do índice.
|
|
1055
|
+
*
|
|
1056
|
+
* `null` quando a escrita não é recusada por aqui: o membro é gravável, não existe (o
|
|
1057
|
+
* erro é da leitura), ou o tipo não tem membros navegáveis (`any`, genérico sem bound).
|
|
1058
|
+
*
|
|
1059
|
+
* A régua é a do tsc 3.9.10, lida no fonte da tag. A prop de uma UNIÃO ou INTERSEÇÃO é
|
|
1060
|
+
* readonly se ALGUM constituinte a torna readonly — inclusive, na união, um membro que a
|
|
1061
|
+
* responde por um índice readonly (`createUnionOrIntersectionProperty`,
|
|
1062
|
+
* `checker.ts:10560`, `:10572`). Sem prop, vale o índice: o de uma união é readonly se
|
|
1063
|
+
* algum for (`getUnionIndexInfo`, `:9685`), o de uma interseção só se todos os que o têm
|
|
1064
|
+
* forem (`intersectIndexInfos`, `:9715`). A posição fixa de uma tupla é PROP (`"0"`,
|
|
1065
|
+
* `createTupleTypeOfArity`, `:12162`); a que cai no rest, índice. TC62.
|
|
1066
|
+
*/
|
|
1067
|
+
declare function readonlyMember(schema: Schema, key: WriteKey, schemes?: Schemes): "property" | "index" | null;
|
|
964
1068
|
|
|
965
|
-
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 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, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates, inferredTypes, instantiate, instantiateInContextOf, instantiateLoose, isMissingType, isNumericLiteralName, isObjectOrArrayLiteral, isScheme, isSerializable, isVariadicTuple, join, joinAll, missingType, normalizeUnion, ownProp, renameTypeParams, resetInstantiationCount, resetTypeLimits, resolveConditional, resolveOp, resolveTypeOp, restIndex, s, sampleValue, silentNever, substitute, subtype, typeAtPosition, typeDiff, typeFeatures, typeLimits, typeNeedsParens, typeParamArity, unify, widen, widenInferred, widenLiteral, widenOrigin, widenType, withoutUndefined };
|
|
1069
|
+
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, inferredTypes, instantiate, 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, typeNeedsParens, typeParamArity, unify, widen, widenInferred, widenLiteral, widenOrigin, widenType, withUndefined, withoutUndefined };
|