@tslite/type-core 0.3.1 → 0.3.2
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/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var M=e=>Object.freeze(e),c={any:M({t:"any"}),unknown:M({t:"unknown"}),string:M({t:"string"}),number:M({t:"number"}),boolean:M({t:"boolean"}),null:M({t:"null"}),undefined:M({t:"undefined"}),void:M({t:"void"}),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,r)=>({t:"tuple",elements:e,...n&&n.some(t=>t!=="req")?{flags:n}:{},...r?{readonly:true}:{}}),fn:(e,n,r)=>({t:"fn",params:e,returns:n,...r?.length?{typeParams:r}:{}}),guard:(e,n,r=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:r,type:n}}),overload:e=>({t:"overload",signatures:e}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,r,t=false)=>({t:"mapped",key:e,over:n,body:r,optional:t}),conditional:(e,n,r,t,o)=>({t:"conditional",check:e,extends:n,then:r,else:t,...o&&o.length?{infer:o}:{}}),intersection:e=>({t:"intersection",of:e}),and:(e,n)=>({t:"intersection",of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n,r)=>({t:"var",name:e,bound:n,isConst:r}),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=[];for(let r of e)r.t==="union"?n.push(...r.of):n.push(r);return {t:"union",of:n}}};function h(e){return e.t==="keyof"?fe(e.of)??e:e.t==="index"?X(e.obj,e.key)??e:e.t==="returnType"?je(e.fn)??e:e.t==="parameters"?Ee(e.fn)??e:e}var le={t:"union",of:[]},Te=e=>e.t==="union"&&e.of.length===0;function je(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function we(e){if(e.t==="undefined")return e;let n=e.t==="union"?e.of:[e];return n.some(r=>r.t==="undefined")?e:{t:"union",of:[...n,{t:"undefined"}]}}function Ee(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 r=[],t=[];for(let o of n.params)o.variadic?(r.push(o.type.t==="array"?o.type.items:o.type),t.push("rest")):o.optional?(r.push(we(o.type)),t.push("optional")):(r.push(o.type),t.push("req"));return c.tuple(r,t)}var ue=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function pe(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 k(e){let n=[],r=o=>{let a=h(o);a.t==="intersection"?a.of.forEach(r):n.push(a);};e.of.forEach(r);let t=[];for(let o of n){if(o.t==="any")return c.any;if(Te(o))return le;if(o.t!=="unknown"){if(ue(o)){let a=false;for(let i=t.length-1;i>=0;i--){let l=t[i];if(ue(l)){if(pe(l,o)){a=true;break}if(pe(o,l))t.splice(i,1);else return le}}if(a)continue}else if(t.some(a=>a===o))continue;t.push(o);}}return t.length===0?c.unknown:t.length===1?t[0]:{t:"intersection",of:t}}function fe(e){if(e.t==="union"){let r=e.of.map(fe);return r.some(t=>t===null)?null:$e(r)}if(e.t!=="object")return null;let n=Object.keys(e.props).map(r=>c.literal(r));return e.index&&n.push(e.index.key==="number"?c.number:c.string),n.length===0?{t:"union",of:[]}:n.length===1?n[0]:{t:"union",of:n}}function $e(e){let n=a=>a.t==="literal"&&typeof a.value=="string"?[a.value]:a.t==="union"?a.of.flatMap(n):[],r=e.filter(a=>a.t!=="string"&&a.t!=="number").map(n);if(r.length===0)return e[0];let t=r[0].filter(a=>r.every(i=>i.includes(a))),o=[...new Set(t)].map(a=>c.literal(a));return o.length===0?{t:"union",of:[]}:o.length===1?o[0]:{t:"union",of:o}}function X(e,n){if(e=h(e),n=h(n),n.t==="union"){let r=n.of.map(t=>X(e,t));return r.some(t=>t===null)?null:{t:"union",of:r}}if(e.t==="intersection"){let r=[];for(let t of e.of){let o=X(h(t),n);if(o===null)return null;o.t!=="undefined"&&r.push(o);}return r.length===0?c.undefined:r.length===1?r[0]:k({of:r})}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let r=P(e.props,String(n.value));return r?r.optional?{t:"union",of:[r.type,{t:"undefined"}]}:r.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:c.undefined}if(e.index?.key==="string"&&n.t==="string"||e.index?.key==="number"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number"))return e.index.value}if(e.t==="tuple"){let r=e.flags?.findIndex(t=>t!=="req")??-1;if(r>=0){if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]??c.undefined:e.elements.length?{t:"union",of:e.elements.slice(r)}:c.undefined;if(n.t==="number")return e.elements.length?{t:"union",of:e.elements}:c.undefined}else {if(n.t==="literal"&&typeof n.value=="number")return e.elements[n.value]??c.undefined;if(n.t==="number")return e.elements.length?{t:"union",of:e.elements}:c.undefined}}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:null}var Ie=Object.prototype.hasOwnProperty,P=(e,n)=>Ie.call(e,n)?e[n]:void 0;function F(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(r=>r.t!=="undefined");return {type:n.length===1?n[0]:{t:"union",of:n},hadUndefined:true}}return {type:e,hadUndefined:false}}var G=(e,n)=>e.flags?.[n]??"req",se=e=>e==="rest"||e==="variadic",Oe=e=>!!e.flags?.some(se),q=e=>e.flags?.findIndex(se)??-1,Me=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(r=>r!=="req");return n<0?e.elements.length:n};function K(e,n){let r=[],t=[],o=(a,i)=>{r.push(a),t.push(i);};for(let a=0;a<e.length;a++){let i=e[a],l=n[a]??"req";if(l!=="variadic"){o(i,l);continue}if(i.t==="tuple"){let u=i;for(let d=0;d<u.elements.length;d++)o(u.elements[d],G(u,d));}else i.t==="array"?o(i.items,"rest"):i.t==="any"?o(i,"rest"):o(i,"variadic");}return c.tuple(r,t)}function ce(e){let n=q(e);return n<0?{prefix:e.elements,rest:null,suffix:[]}:{prefix:e.elements.slice(0,n),rest:e.elements[n],suffix:e.elements.slice(n+1)}}function de(e,n,r){let t=ce(e),o=ce(n);if(o.rest===null){if(t.rest!==null)return false;let a=Me(n);return e.elements.length<a||e.elements.length>n.elements.length?false:e.elements.every((i,l)=>r(i,n.elements[l]))}if(t.rest===null){let a=t.prefix;if(a.length<o.prefix.length+o.suffix.length)return false;for(let i=0;i<o.prefix.length;i++)if(!r(a[i],o.prefix[i]))return false;for(let i=0;i<o.suffix.length;i++)if(!r(a[a.length-o.suffix.length+i],o.suffix[i]))return false;for(let i=o.prefix.length;i<a.length-o.suffix.length;i++)if(!r(a[i],o.rest))return false;return true}if(t.prefix.length>=o.prefix.length&&t.suffix.length>=o.suffix.length){for(let a=0;a<o.prefix.length;a++)if(!r(t.prefix[a],o.prefix[a]))return false;for(let a=o.prefix.length;a<t.prefix.length;a++)if(!r(t.prefix[a],o.rest))return false;if(!r(t.rest,o.rest))return false;for(let a=0;a<o.suffix.length;a++)if(!r(t.suffix[t.suffix.length-o.suffix.length+a],o.suffix[a]))return false;for(let a=0;a<t.suffix.length-o.suffix.length;a++)if(!r(t.suffix[a],o.rest))return false;return true}return false}function H(e,n,r){if(e.t==="array")return e;if(e.t==="tuple"){let t=e,o=t.elements.length,a=t.elements.slice(n,o-r),i=(t.flags??t.elements.map(()=>"req")).slice(n,o-r);return c.tuple(a,i)}return c.tuple([])}function s(e,n,r=new WeakSet){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!Le(z(e),n))return e;switch(e.t){case "var":{let t=n[e.name];return t||(e.bound?{t:"var",name:e.name,bound:s(e.bound,n,r)}:e)}case "array":return {t:"array",items:s(e.items,n,r)};case "tuple":{let t=e.elements.map(o=>s(o,n,r));return e.flags?K(t,e.flags):{t:"tuple",elements:t}}case "union":return {t:"union",of:e.of.map(t=>s(t,n,r))};case "object":{if(r.has(e))return e;r.add(e);let t={};for(let a in e.props){let i=e.props[a];t[a]={type:s(i.type,n,r),optional:i.optional};}let o=e.index?{key:e.index.key,value:s(e.index.value,n,r)}:void 0;return r.delete(e),o?{t:"object",props:t,index:o}:{t:"object",props:t}}case "fn":{if(r.has(e))return e;r.add(e);let o={t:"fn",params:e.params.map(a=>({...a,type:s(a.type,n,r)})),returns:s(e.returns,n,r),...e.guard&&{guard:{param:e.guard.param,type:s(e.guard.type,n,r)}}};return r.delete(e),o}case "apply":return {t:"apply",name:e.name,args:e.args.map(t=>s(t,n,r))};case "keyof":return h({t:"keyof",of:s(e.of,n,r)});case "index":return h({t:"index",obj:s(e.obj,n,r),key:s(e.key,n,r)});case "mapped":{let t={};for(let a in n)a!==e.key&&(t[a]=n[a]);let o={t:"mapped",key:e.key,over:s(e.over,n,r),body:s(e.body,t,r),optional:e.optional};return R(o)??o}case "conditional":{if(e.check.t==="var"){let o=e.check.name,a=n[o],i=a?h(a):void 0,l=i?.t==="union"?i.of:i?.t==="boolean"?[c.literal(true),c.literal(false)]:null;if(l)return {t:"union",of:l.map(u=>s(e,{...n,[o]:u},r))}}let t=e.infer?.length?Object.fromEntries(Object.entries(n).filter(([o])=>!e.infer.includes(o))):n;return {t:"conditional",check:s(e.check,n,r),extends:s(e.extends,t,r),then:s(e.then,t,r),else:s(e.else,t,r),...e.infer?{infer:e.infer}:{}}}case "intersection":return k({of:e.of.map(t=>s(t,n,r))});case "returnType":return h({t:"returnType",fn:s(e.fn,n,r)});case "parameters":return h({t:"parameters",fn:s(e.fn,n,r)});default:return e}}var Pe=new Set,me=new WeakMap;function z(e){let n=me.get(e);if(n)return n;let r=new Set;y(e,r,new WeakSet);let t=r.size===0?Pe:r;return me.set(e,t),t}function y(e,n,r){switch(e.t){case "var":n.add(e.name),e.bound&&y(e.bound,n,r);return;case "array":y(e.items,n,r);return;case "tuple":for(let t of e.elements)y(t,n,r);return;case "union":for(let t of e.of)y(t,n,r);return;case "object":if(r.has(e))return;r.add(e);for(let t in e.props)y(e.props[t].type,n,r);e.index&&y(e.index.value,n,r);return;case "fn":if(r.has(e))return;r.add(e);for(let t of e.params)y(t.type,n,r);y(e.returns,n,r),e.guard&&y(e.guard.type,n,r);return;case "overload":for(let t of e.signatures){for(let o of t.params)y(o.type,n,r);y(t.returns,n,r);}return;case "apply":for(let t of e.args)y(t,n,r);return;case "keyof":y(e.of,n,r);return;case "index":y(e.obj,n,r),y(e.key,n,r);return;case "mapped":y(e.over,n,r),y(e.body,n,r);return;case "conditional":{if(y(e.check,n,r),!e.infer?.length){y(e.extends,n,r),y(e.then,n,r),y(e.else,n,r);return}let t=new Set;y(e.extends,t,r),y(e.then,t,r),y(e.else,t,r);for(let o of t)e.infer.includes(o)||n.add(o);return}case "intersection":for(let t of e.of)y(t,n,r);return;case "returnType":case "parameters":y(e.fn,n,r);return;default:return}}function Le(e,n){if(e.size===0)return false;for(let r of e)if(r in n)return true;return false}function R(e){let n=h(e.over);if(n.t==="string"||n.t==="number")return {t:"object",props:{},index:{key:n.t,value:s(e.body,{[e.key]:n})}};let r=We(n);if(r===null)return null;let t={};for(let o of r)t[o]={type:s(e.body,{[e.key]:c.literal(o)}),optional:e.optional};return {t:"object",props:t}}function We(e){if(e.t==="literal"&&typeof e.value=="string")return [e.value];if(e.t==="union"){let n=[];for(let r of e.of)if(r.t==="literal"&&typeof r.value=="string")n.push(r.value);else return null;return n}return null}function w(e,n){if(e.t!=="apply")return false;let r=n[e.name];return r!==void 0&&r.params.length===e.args.length}function E(e,n){if(e.t!=="apply")return e;let r=n[e.name];if(!r||r.params.length!==e.args.length)return e;let t={};return r.params.forEach((o,a)=>t[o]=e.args[a]),s(r.body,t)}function g(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(t=>`${t}${e.props[t].optional?"?":""}:${g(e.props[t].type)}`).join(","),r=e.index?`,[${e.index.key}]:${g(e.index.value)}`:"";return `{${n}${r}}`}case "array":return `[${g(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(g).join(",")})`;case "union":return `(${e.of.map(g).sort().join("|")})`;case "fn":return `(${e.params.map(n=>g(n.type)).join(",")})=>${e.guard?`is${e.guard.param}:${g(e.guard.type)}`:g(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(g).join(",")}>`;case "intersection":return `&(${e.of.map(g).sort().join("&")})`;case "returnType":return `RT<${g(e.fn)}>`;default:return e.t}}var ye=50;function O(e,n={},r=0){if(r>ye)return e;if(e.t==="var")return e.bound?O(e.bound,n,r+1):e;if(w(e,n))return O(E(e,n),n,r+1);if(e.t==="mapped"){let t=R(e);if(t)return O(t,n,r+1)}if(e.t==="intersection")return k(e);if(e.t==="union"){let t=e.of.map(o=>O(o,n,r+1));return t.some((o,a)=>o!==e.of[a])?{t:"union",of:t}:e}return e}function U(e,n,r=0){if(r>ye)return e;let t=A(e,n);if(t!==e)return U(t,n,r+1);let o=O(e,n,r);return o===e?e:U(o,n,r+1)}function A(e,n={}){let r=h(e);if(r!==e)return r;switch(e.t){case "keyof":{let t=U(e.of,n);return t===e.of?e:h({...e,of:t})}case "index":{let t=U(e.obj,n),o=U(e.key,n);return t===e.obj&&o===e.key?e:h({...e,obj:t,key:o})}case "returnType":{let t=U(e.fn,n);return t===e.fn?e:h({...e,fn:t})}default:return e}}var Be=1e3,J={maxTypeDepth:1e3,maxUnionMembers:1e3,maxOverloadSignatures:200},Q=J;function Fe(e){Q={...J,...e};}function ze(){Q=J;}function C(){return Q}var L=class extends Error{constructor(n=Q.maxTypeDepth){super(`type evaluation exceeded the depth limit (${n}) \u2014 the type is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},N=class extends Error{constructor(n,r=Q.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${r})`),this.name="UnionTooComplexError";}};var ne=(e,n)=>({seen:new WeakMap,exp:new Set,schemes:e,depth:0,explain:n});function b(e,n,r){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:r,kind:"type"}),false}function Re(e,n,r={}){let t=[];return !p(e,n,ne(r,{path:[],out:t}))&&t.length===0&&t.push({path:[],actual:e,expected:n,kind:"type"}),t}var ee=new WeakMap;function T(e,n,r={}){if(e===n)return true;if(Object.keys(r).length>0)return p(e,n,ne(r));let t=ee.get(e)?.get(n);if(t!==void 0)return t;let o=p(e,n,ne(r)),a=ee.get(e);return a||ee.set(e,a=new WeakMap),a.set(n,o),o}function Ue(e,n,r={}){return T(e,n,r)&&T(n,e,r)}function V(e,n){return e.infer?.length||z(e.check).size>0||z(e.extends).size>0?null:T(e.check,e.extends,n)?e.then:e.else}function D(e,n,r=0){if(r>50)return e;let t=A(e,n.schemes);if(t!==e)return D(t,n,r+1);if(e.t==="conditional"){let o=V(e,n.schemes);if(o)return D(o,n,r+1)}return w(e,n.schemes)?D(E(e,n.schemes),n,r+1):e.t==="union"?x(e.of.map(o=>D(o,n,r+1))):e}function p(e,n,r){if(r.depth>=C().maxTypeDepth)throw new L;r.depth++;try{return Ae(e,n,r)}finally{r.depth--;}}function re(e,n,r,t){if(!r.explain)return p(e,n,r);r.explain.path.push(t);try{return p(e,n,r)}finally{r.explain.path.pop();}}function Ae(e,n,r){if(e.t==="any"||n.t==="any"||n.t==="unknown")return true;if(e.t==="unknown")return b(r,e,n);let t=A(e,r.schemes);if(t!==e)return p(t,n,r);let o=A(n,r.schemes);if(o!==n)return p(e,o,r);if(e.t==="mapped"){let l=R({...e,over:D(e.over,r)});if(l)return p(l,n,r)}if(n.t==="mapped"){let l=R({...n,over:D(n.over,r)});if(l)return p(e,l,r)}if(e.t==="conditional"){let l=V(e,r.schemes);if(l)return p(l,n,r)}if(n.t==="conditional"){let l=V(n,r.schemes);if(l)return p(e,l,r)}if(n.t==="intersection"){let l=k(n);return l.t!=="intersection"?p(e,l,r):l.of.every(u=>p(e,u,r))}if(e.t==="intersection"){let l=k(e);if(l.t!=="intersection")return p(l,n,r);if(l.of.some(u=>p(u,n,r)))return true;if(n.t==="object"){let u=De(l.of);if(u)return p(u,n,r)}return false}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(w(e,r.schemes)||w(n,r.schemes))){let l=`${g(e)}\u2264${g(n)}`;if(r.exp.has(l))return true;r.exp.add(l);let u=p(E(e,r.schemes),E(n,r.schemes),r);return r.exp.delete(l),u}let i=r.seen.get(e);if(i?.has(n))return true;if(i||(i=new WeakSet,r.seen.set(e,i)),i.add(n),e.t==="union")return e.of.every(l=>p(l,n,r));if(e.t==="boolean"&&n.t==="union")return p(c.literal(true),n,r)&&p(c.literal(false),n,r);if(n.t==="union")return n.of.some(l=>p(e,l,r));if(n.t==="overload")return n.signatures.every(l=>p(e,l,r));if(e.t==="overload")return e.signatures.some(l=>p(l,n,r));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:b(r,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Ce(e.value)===n.t?true:b(r,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:b(r,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?b(r,e,n):p(e.items,n.items,r):e.t==="tuple"?e.readonly&&!n.readonly?b(r,e,n):e.elements.every(l=>p(l,n.items,r)):b(r,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return b(r,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return b(r,e,n);for(let l=0;l<e.elements.length;l++)if(!re(e.elements[l],n.elements[l],r,String(l)))return false;return true}return de(e,n,(l,u)=>p(l,u,r))}case "object":return e.t==="object"?_e(e,n,r):Object.keys(n.props).length===0&&!n.index?e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:b(r,e,n):e.t==="array"&&n.index&&Object.values(n.props).every(l=>l.optional)&&p(e.items,n.index.value,r)?true:b(r,e,n);case "fn":return e.t==="fn"?qe(e,n,r):b(r,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((l,u)=>l===n.path[u]);case "keyof":return e.t==="keyof"&&p(e.of,n.of,r)&&p(n.of,e.of,r);case "index":return e.t==="index"&&p(e.obj,n.obj,r)&&p(n.obj,e.obj,r)&&p(e.key,n.key,r)&&p(n.key,e.key,r);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&p(e.over,n.over,r)&&p(n.over,e.over,r)&&p(e.body,n.body,r)&&p(n.body,e.body,r);case "conditional":return e.t==="conditional"&&p(e.check,n.check,r)&&p(n.check,e.check,r)&&p(e.extends,n.extends,r)&&p(n.extends,e.extends,r)&&p(e.then,n.then,r)&&p(e.else,n.else,r);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((l,u)=>p(l,n.args[u],r));case "returnType":return e.t==="returnType"&&p(e.fn,n.fn,r)&&p(n.fn,e.fn,r);case "parameters":return e.t==="parameters"&&p(e.fn,n.fn,r)&&p(n.fn,e.fn,r)}}var Ce=e=>typeof e;function De(e){let n=[];for(let a of e){let i=h(a);if(i.t!=="object")return null;n.push(i);}let r=new Set;for(let a of n)for(let i in a.props)r.add(i);let t={};for(let a of r){let i=[],l=true;for(let u of n){let d=u.props[a];d?(i.push(d.type),d.optional||(l=false)):u.index?.key==="string"&&(i.push(u.index.value),l=false);}t[a]={type:k({of:i}),optional:l};}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:k({of:[o.value,a.index.value]})}:a.index);return o?{t:"object",props:t,index:o}:{t:"object",props:t}}function _e(e,n,r){let t=false;for(let o in n.props)if(!(n.props[o].optional||P(e.props,o))){if(!r.explain)return false;r.explain.out.push({path:[...r.explain.path,o],expected:n.props[o].type,kind:"missing"}),t=true;}if(t)return false;for(let o in n.props){let a=n.props[o],i=P(e.props,o);if(i&&(i.optional&&!a.optional||!re(i.type,a.type,r,o)))return false}if(n.index){for(let o in e.props)if(!re(e.props[o].type,n.index.value,r,o))return false;if(e.index&&!p(e.index.value,n.index.value,r))return false}return true}function qe(e,n,r){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!p(e.returns,n.returns,r))return false;for(let t=0;t<e.params.length;t++){let o=e.params[t];if(o.variadic)break;let a=n.params[t];if(!a){if(o.optional)continue;return false}if(!p(a.type,o.type,r))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!p(e.guard.type,n.guard.type,r)))}function x(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let r=C().maxUnionMembers;if(n.length>r)throw new N(n.length,r);if(n.some(o=>o.t==="any"))return c.any;let t=[];for(let o of n)if(!t.some(a=>T(o,a))){for(let a=t.length-1;a>=0;a--)T(t[a],o)&&t.splice(a,1);t.push(o);}if(t.some(o=>o.t==="literal"&&o.value===true)&&t.some(o=>o.t==="literal"&&o.value===false)){let o=t.filter(a=>!(a.t==="boolean"||a.t==="literal"&&typeof a.value=="boolean"));o.push(c.boolean),t.length=0,t.push(...o);}return t.length===1?t[0]:{t:"union",of:t}}function Ke(e,n){let r=new Set,t=new WeakSet,o=a=>{if(!t.has(a))switch(t.add(a),a.t){case "keyof":r.add("keyof"),o(a.of);break;case "index":r.add("indexed"),o(a.obj),o(a.key);break;case "mapped":r.add("mapped"),o(a.over),o(a.body);break;case "conditional":r.add("conditional"),a.infer?.length&&r.add("infer"),o(a.check),o(a.extends),o(a.then),o(a.else);break;case "returnType":r.add("returnType"),o(a.fn);break;case "parameters":r.add("parameters"),o(a.fn);break;case "tuple":r.add("tuple"),a.flags?.some(i=>i!=="req")&&r.add("variadic"),a.elements.forEach(o);break;case "intersection":r.add("intersection"),a.of.forEach(o);break;case "overload":r.add("overload");for(let i of a.signatures){for(let l of i.params)o(l.type);o(i.returns);}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":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);break;case "apply":n&&a.name===n&&r.add("recursion"),a.args.forEach(o);break}};return o(e),r}var te=e=>typeof e=="string"?c.string:typeof e=="number"?c.number:c.boolean;function oe(e){return e.t==="literal"&&e.fresh?te(e.value):e}function Se(e){if(e.t==="literal")return e.fresh?te(e.value):e;if(e.t==="union"){let n=e.of.map(Se);return n.some((r,t)=>r!==e.of[t])?x(n):e}return e}function Ne(e){return j(e,new WeakSet)}function Qe(e){switch(e.t){case "array":return {t:"array",items:j(e.items,new WeakSet),...e.readonly?{readonly:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>j(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}};case "object":return he(e,new WeakSet);case "fn":case "overload":return j(e,new WeakSet);default:return e}}function j(e,n){if(e.t==="literal")return e.fresh?te(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:j(e.items,n),...e.readonly?{readonly:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(r=>j(r,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}};case "object":return n.add(e),he(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(r=>j(r,n))};case "fn":return n.add(e),{t:"fn",params:e.params.map(r=>({...r,type:j(r.type,n)})),returns:j(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:j(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(r=>j(r,n))};default:return e}}function he(e,n){let r={};for(let o in e.props)r[o]={type:j(e.props[o].type,n),optional:e.props[o].optional};let t=e.index?{key:e.index.key,value:j(e.index.value,n)}:void 0;return t?{t:"object",props:r,index:t}:{t:"object",props:r}}var ge=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Ve(e,n){if(T(n,e))return e;if(T(e,n))return n;let r=ge(e),t=ge(n);return !r||!t||r===t?x([e,n]):null}function v(e,n,r={}){if(e.t==="var"){let t=r[e.name];if(!t)return {...r,[e.name]:n};if(n.t==="any"||n.t==="unknown")return r;let o=Ve(t,n);return o?{...r,[e.name]:o}:r}if(n.t==="any"||n.t==="unknown")return r;switch(e.t){case "array":return n.t==="array"?v(e.items,n.items,r):null;case "tuple":{let t=e,o=q(t);if(o<0){if(n.t!=="tuple"||n.elements.length!==t.elements.length)return null;let f=r;for(let B=0;B<t.elements.length;B++)if(f=v(t.elements[B],n.elements[B],f),f===null)return null;return f}let a=o,i=t.elements.length-o-1,l=G(t,o),u=f=>l==="variadic"?f:f.t==="tuple"?f.elements.length?x(f.elements):c.unknown:f.t==="array"?f.items:f,d=r,m=(f,B)=>{d!==null&&(d=v(f,B,d));};if(n.t==="tuple"){if(n.elements.length<a+i)return null;for(let f=0;f<a;f++)m(t.elements[f],n.elements[f]);for(let f=0;f<i;f++)m(t.elements[o+1+f],n.elements[n.elements.length-i+f]);return d!==null&&(d=v(t.elements[o],u(H(n,a,i)),d)),d}if(n.t==="array"){for(let f=0;f<a;f++)m(t.elements[f],n.items);for(let f=0;f<i;f++)m(t.elements[o+1+f],n.items);return d!==null&&(d=v(t.elements[o],u(n),d)),d}return null}case "object":{if(n.t!=="object")return null;let t=r;for(let o in e.props){let a=e.props[o],i=n.props[o];if(!i){if(a.optional)continue;return null}if(t=v(a.type,i.type,t),t===null)return null}return t}case "fn":{if(n.t!=="fn")return null;let t=v(e.returns,n.returns,r);if(t===null)return null;let o=Math.min(e.params.length,n.params.length);for(let a=0;a<o;a++)if(t=v(e.params[a].type,n.params[a].type,t),t===null)return null;return e.guard&&n.guard&&(t=v(e.guard.type,n.guard.type,t)),t}case "apply":{if(n.t!=="apply"||n.name!==e.name||n.args.length!==e.args.length)return null;let t=r;for(let o=0;o<e.args.length;o++)if(t=v(e.args[o],n.args[o],t),t===null)return null;return t}default:return T(n,e)?r:null}}var xe="@rev",ae=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function I(e,n,r){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===r)return c.var(xe);switch(e.t){case "array":return {t:"array",items:I(e.items,n,r)};case "tuple":return {t:"tuple",elements:e.elements.map(t=>I(t,n,r)),...e.flags?{flags:e.flags}:{}};case "union":return {t:"union",of:e.of.map(t=>I(t,n,r))};case "fn":return {t:"fn",params:e.params.map(t=>({...t,type:I(t.type,n,r)})),returns:I(e.returns,n,r)};case "apply":return {t:"apply",name:e.name,args:e.args.map(t=>I(t,n,r))};case "returnType":return {t:"returnType",fn:I(e.fn,n,r)};case "object":{let t={};for(let o in e.props)t[o]={type:I(e.props[o].type,n,r),optional:e.props[o].optional};return e.index?{t:"object",props:t,index:{key:e.index.key,value:I(e.index.value,n,r)}}:{t:"object",props:t}}default:return e}}function Ye(e,n,r){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let t=e.over.of.name;if(r[t])return null;let o={};for(let a in n.props){let i=I(e.body,t,e.key),l=v(i,n.props[a].type,{})?.[xe];o[a]={type:l?oe(l):c.unknown,optional:n.props[a].optional};}return {...r,[t]:{t:"object",props:o}}}function ve(e,n,r){let t=r;for(let o=0;o<e.length&&o<n.length;o++){let a=e[o].type,i=n[o];if(ae(a)&&i.t==="object"){let l=Ye(a,i,t);l&&(t=l);}}return t}function Ge(e,n){let r={};for(let o=0;o<e.params.length;o++){let a=e.params[o];if(a.variadic){for(let i=o;i<n.length;i++)if(r=v(a.type,n[i],r),r===null)return null;break}if(o>=n.length){if(a.optional)continue;return null}if(!ae(a.type)&&(r=v(a.type,n[o],r),r===null))return null}let t=ve(e.params,n,r);return {returns:s(e.returns,t),bindings:t}}function He(e,n){let r={};for(let t=0;t<e.params.length&&t<n.length;t++){let o=e.params[t];if(ae(o.type))continue;let a=v(o.type,n[t],r);a!==null&&(r=a);}return r=ve(e.params,n,r),{returns:s(e.returns,r),bindings:r}}function $(e,n,r,t,o){if(e.t==="var"&&r.has(e.name)){let a=o.get(e.name);a||o.set(e.name,a={co:[],contra:[]}),(t?a.contra:a.co).push(n);return}if(!(n.t==="any"||n.t==="unknown"))switch(e.t){case "array":n.t==="array"&&$(e.items,n.items,r,t,o);return;case "tuple":{let a=e,i=q(a);if(i<0){n.t==="tuple"&&n.elements.length===a.elements.length&&a.elements.forEach((m,f)=>$(m,n.elements[f],r,t,o));return}let l=i,u=a.elements.length-i-1,d=m=>$(a.elements[i],m,r,t,o);if(n.t==="tuple"){let m=n;if(m.elements.length<l+u)return;for(let f=0;f<l;f++)$(a.elements[f],m.elements[f],r,t,o);for(let f=0;f<u;f++)$(a.elements[i+1+f],m.elements[m.elements.length-u+f],r,t,o);d(H(m,l,u));}else if(n.t==="array"){for(let m=0;m<l;m++)$(a.elements[m],n.items,r,t,o);for(let m=0;m<u;m++)$(a.elements[i+1+m],n.items,r,t,o);d(n);}return}case "fn":n.t==="fn"&&(e.params.forEach((a,i)=>{let l=n.params[i];l&&$(a.type,l.type,r,!t,o);}),$(e.returns,n.returns,r,t,o));return;case "object":if(n.t==="object")for(let a in e.props)n.props[a]&&$(e.props[a].type,n.props[a].type,r,t,o);return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((a,i)=>$(a,n.args[i],r,t,o));return;default:return}}function Je(e,n){if(e.length===1)return e[0];let t=e.flatMap(o=>o.t==="union"?[...o.of]:[o]).filter(o=>e.every(a=>T(o,a,n)));return x(t)}var Ze=e=>e.t==="union"&&e.of.length===0;function Xe(e,n){let r={};for(let[t,{co:o,contra:a}]of e){let i=o.length?x(o):void 0,l=a.length?Je(a,n):void 0,u=i??l;i&&l&&(u=!Ze(i)&&i.t!=="any"&&T(i,l,n)?i:l),u&&(r[t]=u);}return r}function en(e,n={},r=0){if(!e.infer?.length||z(e.check).size>0)return null;let t=new Map;$(e.extends,e.check,new Set(e.infer),false,t);let o=Xe(t,n),a=new WeakSet,i=Z(s(e.extends,o),n,a,r);return T(e.check,i,n)?Z(s(e.then,o),n,a,r):Z(s(e.else,o),n,a,r)}function Z(e,n={},r=new WeakSet,t=0){let o=t,a=C().maxTypeDepth,i=l=>{switch(l.t){case "var":return c.unknown;case "array":return {t:"array",items:i(l.items)};case "tuple":{let u=l.elements.map(i);return l.flags?K(u,l.flags):{t:"tuple",elements:u}}case "union":return {t:"union",of:l.of.map(i)};case "object":{if(r.has(l))return l;r.add(l);let u={};for(let m in l.props){let f=l.props[m];u[m]={type:i(f.type),optional:f.optional};}let d=l.index?{key:l.index.key,value:i(l.index.value)}:void 0;return r.delete(l),d?{t:"object",props:u,index:d}:{t:"object",props:u}}case "fn":{if(r.has(l))return l;r.add(l);let d={t:"fn",params:l.params.map(m=>({...m,type:i(m.type)})),returns:i(l.returns),...l.guard&&{guard:{param:l.guard.param,type:i(l.guard.type)}}};return r.delete(l),d}case "apply":{if(w(l,n)){let u=E(l,n);if(u.t==="conditional"){if(o>=a)throw new L;o++;try{let d=i(u);if(d.t!=="conditional")return d}finally{o--;}}}return {t:"apply",name:l.name,args:l.args.map(i)}}case "conditional":{let u=l.infer?.length?en(l,n,o):V(l,n);return u?i(u):{t:"conditional",check:i(l.check),extends:i(l.extends),then:i(l.then),else:i(l.else),...l.infer?{infer:l.infer}:{}}}case "intersection":return k({of:l.of.map(i)});case "returnType":return h({t:"returnType",fn:i(l.fn)});default:return l}};return i(e)}var nn=c.union([]);function ke(e,n){return ie(e,n,new WeakMap)}function rn(e){return e.reduce(ke,nn)}function ie(e,n,r){if(e.t==="any"||n.t==="any")return c.any;if(e===n)return e;let t=r.get(e)?.get(n);if(t)return t;if(e.t==="object"&&n.t==="object")return tn(e,n,r);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:c.unknown};return be(r,e,n,o),o.items=ie(e.items,n.items,r),o}return x([e,n])}function tn(e,n,r){let t={t:"object",props:{}};be(r,e,n,t);for(let o in e.props){let a=e.props[o],i=n.props[o];if(i){let l=ie(a.type,i.type,r);t.props[o]=a.optional||i.optional?{type:l,optional:true}:{type:l};}else t.props[o]={type:a.type,optional:true};}for(let o in n.props)o in e.props||(t.props[o]={type:n.props[o].type,optional:true});return t}function be(e,n,r,t){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(r,t);}var on=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e);function S(e,n=new WeakSet){switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "var":return 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=S(e.items,n),t=an(e.items)?`(${r})[]`:`${r}[]`;return e.readonly?`readonly ${t}`:t}case "tuple":{let t=`[${e.elements.map((o,a)=>{let i=e.flags?.[a]??"req",l=S(o,n),u=o.t==="union"?`(${l})`:l;return i==="rest"?`...${u}[]`:i==="variadic"?`...${l}`:i==="optional"?`${u}?`:l}).join(", ")}]`;return e.readonly?`readonly ${t}`:t}case "union":{if(n.has(e))return "\u2026";n.add(e);let r=e.of.length===0?"never":e.of.map(t=>S(t,n)).join(" | ");return n.delete(e),r}case "object":{if(n.has(e))return "\u2026";n.add(e);let r=Object.entries(e.props).map(([t,o])=>`${on(t)?t:JSON.stringify(t)}${o.optional?"?":""}: ${S(o.type,n)}`);return e.index&&r.push(`[k: ${e.index.key}]: ${S(e.index.value,n)}`),n.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(n.has(e))return "\u2026";n.add(e);let r=e.params.map(o=>{let a=o.variadic?"...":"",i=o.optional&&!o.variadic?"?":"";return `${a}${o.name}${i}: ${S(o.type,n)}`}).join(", "),t=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${S(e.guard.type,n)}`:S(e.returns,n);return n.delete(e),`(${r}) => ${t}`}case "apply":{if(n.has(e))return "\u2026";n.add(e);let r=e.args.length===0?e.name:`${e.name}<${e.args.map(t=>S(t,n)).join(", ")}>`;return n.delete(e),r}case "overload":{if(n.has(e))return "\u2026";n.add(e);let r=e.signatures.map(t=>S(t,n)).join(" & ");return n.delete(e),r}case "keyof":return `keyof ${S(e.of,n)}`;case "index":return `${S(e.obj,n)}[${S(e.key,n)}]`;case "mapped":{if(n.has(e))return "\u2026";n.add(e);let r=e.optional?"?":"",t=`{ [${e.key} in ${S(e.over,n)}]${r}: ${S(e.body,n)} }`;return n.delete(e),t}case "conditional":{if(n.has(e))return "\u2026";n.add(e);let r=`${S(e.check,n)} extends ${S(e.extends,n)} ? ${S(e.then,n)} : ${S(e.else,n)}`;return n.delete(e),r}case "intersection":return e.of.map(r=>r.t==="union"&&r.of.length>0?`(${S(r,n)})`:S(r,n)).join(" & ");case "returnType":return `ReturnType<${S(e.fn,n)}>`;case "parameters":return `Parameters<${S(e.fn,n)}>`}}function an(e){return e.t==="union"&&e.of.length>0||e.t==="fn"}function ln(e){if(e.length===0)return "value";let n=e[e.length-1];if(/^\d+$/.test(n)){let r=e.slice(0,-1);return r.length?`property '${r.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function un(e){let n=e.filter(r=>r.kind==="missing");if(n.length&&n.length===e.length){let r=n.map(t=>`'${t.path.join(".")}'`).join(", ");return n.length===1?`property ${r} is missing`:`properties ${r} are missing`}return e.map(r=>`${ln(r.path)}: expected '${S(r.expected)}', got '${S(r.actual)}'`).join("; ")}function W(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),W(F(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(r=>W(F(r).type,n)));case "object":{if(n.has(e))return true;n.add(e);let r=Object.values(e.props).every(o=>W(F(o.type).type,n)),t=!e.index||W(F(e.index.value).type,n);return r&&t}case "union":return n.has(e)?true:(n.add(e),e.of.every(r=>W(r,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(r=>W(r,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":return false}}function pn(e,n,r={}){let t=e;for(let o of n){let a=_(t,o,r);if(a===null)return null;t=a;}return {type:t,completions:Y(t,r)}}var fn=e=>e==="[]"||/^\d+$/.test(e);function _(e,n,r,t=new Set){if(e.t==="var")return e.bound?_(O(e,r),n,r,t):null;if(w(e,r)){let a=g(e);if(t.has(a))return null;t.add(a);let i=_(E(e,r),n,r,t);return t.delete(a),i}let o=h(e);if(o!==e)return _(o,n,r,t);switch(e.t){case "any":return e;case "object":{let a=P(e.props,n);return a?a.optional?x([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return fn(n)?e.items:null;case "tuple":{let a=e.flags?.findIndex(u=>u!=="req")??-1,i=Number(n);if(!(Number.isInteger(i)&&i>=0))return null;if(a<0)return i<e.elements.length?e.elements[i]:null;if(i<a)return e.elements[i];let l=e.elements.slice(a);return l.length?x(l):null}case "union":{let a=e.of.map(i=>_(i,n,r,t)).filter(i=>i!==null);return a.length?x(a):null}case "intersection":{let a=e.of.map(i=>_(i,n,r,t)).filter(i=>i!==null);return a.length?k({of:a}):null}default:return null}}function Y(e,n,r=new WeakSet,t=new Set){if(e.t==="var")return e.bound?Y(O(e,n),n,r,t):[];if(w(e,n)){let a=g(e);if(t.has(a))return [];t.add(a);let i=Y(E(e,n),n,r,t);return t.delete(a),i}let o=h(e);if(o!==e)return Y(o,n,r,t);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(r.has(e))return [];r.add(e);let a=[],i=new Set;for(let l of e.of)for(let u of Y(l,n,r,t))i.has(u.key)||(i.add(u.key),a.push(u));return r.delete(e),a}default:return []}}exports.DEFAULT_TYPE_LIMITS=J;exports.TYPE_EVAL_DEPTH_LIMIT=Be;exports.TypeEvalLimitError=L;exports.UnionTooComplexError=N;exports.apparentType=O;exports.configureTypeLimits=Fe;exports.discover=pn;exports.equals=Ue;exports.expand1=E;exports.flagAt=G;exports.format=S;exports.formatTypeDiff=un;exports.groundVars=Z;exports.instantiate=Ge;exports.instantiateLoose=He;exports.isScheme=w;exports.isSerializable=W;exports.isVariadicTuple=Oe;exports.join=ke;exports.joinAll=rn;exports.normalizeTuple=K;exports.normalizeUnion=x;exports.ownProp=P;exports.resetTypeLimits=ze;exports.resolveOp=A;exports.resolveTypeOp=h;exports.restIndex=q;exports.s=c;exports.sliceTuple=H;exports.substitute=s;exports.subtype=T;exports.typeDiff=Re;exports.typeFeatures=Ke;exports.typeLimits=C;exports.unify=v;exports.widen=oe;exports.widenInferred=Qe;exports.widenLiteral=Se;exports.widenType=Ne;exports.withoutUndefined=F;
|
|
1
|
+
'use strict';var M=e=>Object.freeze(e),s={any:M({t:"any"}),unknown:M({t:"unknown"}),string:M({t:"string"}),number:M({t:"number"}),boolean:M({t:"boolean"}),null:M({t:"null"}),undefined:M({t:"undefined"}),void:M({t:"void"}),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,r)=>({t:"tuple",elements:e,...n&&n.some(t=>t!=="req")?{flags:n}:{},...r?{readonly:true}:{}}),fn:(e,n,r)=>({t:"fn",params:e,returns:n,...r?.length?{typeParams:r}:{}}),guard:(e,n,r=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:r,type:n}}),overload:e=>({t:"overload",signatures:e}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,r,t=false)=>({t:"mapped",key:e,over:n,body:r,optional:t}),conditional:(e,n,r,t,o)=>({t:"conditional",check:e,extends:n,then:r,else:t,...o&&o.length?{infer:o}:{}}),intersection:e=>({t:"intersection",of:e}),and:(e,n)=>({t:"intersection",of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n,r)=>({t:"var",name:e,bound:n,isConst:r}),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=[];for(let r of e)r.t==="union"?n.push(...r.of):n.push(r);return {t:"union",of:n}}};function h(e){return e.t==="keyof"?fe(e.of)??e:e.t==="index"?ee(e.obj,e.key)??e:e.t==="returnType"?je(e.fn)??e:e.t==="parameters"?Ee(e.fn)??e:e}var le={t:"union",of:[]},Te=e=>e.t==="union"&&e.of.length===0;function je(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function we(e){if(e.t==="undefined")return e;let n=e.t==="union"?e.of:[e];return n.some(r=>r.t==="undefined")?e:{t:"union",of:[...n,{t:"undefined"}]}}function Ee(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 r=[],t=[];for(let o of n.params)o.variadic?(r.push(o.type.t==="array"?o.type.items:o.type),t.push("rest")):o.optional?(r.push(we(o.type)),t.push("optional")):(r.push(o.type),t.push("req"));return s.tuple(r,t)}var ue=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function pe(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 b(e){let n=[],r=o=>{let i=h(o);i.t==="intersection"?i.of.forEach(r):n.push(i);};e.of.forEach(r);let t=[];for(let o of n){if(o.t==="any")return s.any;if(Te(o))return le;if(o.t!=="unknown"){if(ue(o)){let i=false;for(let a=t.length-1;a>=0;a--){let l=t[a];if(ue(l)){if(pe(l,o)){i=true;break}if(pe(o,l))t.splice(a,1);else return le}}if(i)continue}else if(t.some(i=>i===o))continue;t.push(o);}}return t.length===0?s.unknown:t.length===1?t[0]:{t:"intersection",of:t}}function fe(e){if(e.t==="union"){let r=e.of.map(fe);return r.some(t=>t===null)?null:$e(r)}if(e.t!=="object")return null;let n=Object.keys(e.props).map(r=>s.literal(r));return e.index&&n.push(e.index.key==="number"?s.number:s.string),n.length===0?{t:"union",of:[]}:n.length===1?n[0]:{t:"union",of:n}}function $e(e){let n=i=>i.t==="literal"&&typeof i.value=="string"?[i.value]:i.t==="union"?i.of.flatMap(n):[],r=e.filter(i=>i.t!=="string"&&i.t!=="number").map(n);if(r.length===0)return e[0];let t=r[0].filter(i=>r.every(a=>a.includes(i))),o=[...new Set(t)].map(i=>s.literal(i));return o.length===0?{t:"union",of:[]}:o.length===1?o[0]:{t:"union",of:o}}function ee(e,n){if(e=h(e),n=h(n),n.t==="union"){let r=n.of.map(t=>ee(e,t));return r.some(t=>t===null)?null:{t:"union",of:r}}if(e.t==="intersection"){let r=[];for(let t of e.of){let o=ee(h(t),n);if(o===null)return null;o.t!=="undefined"&&r.push(o);}return r.length===0?s.undefined:r.length===1?r[0]:b({of:r})}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let r=P(e.props,String(n.value));return r?r.optional?{t:"union",of:[r.type,{t:"undefined"}]}:r.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:s.undefined}if(e.index?.key==="string"&&n.t==="string"||e.index?.key==="number"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number"))return e.index.value}if(e.t==="tuple"){let r=e.flags?.findIndex(t=>t!=="req")??-1;if(r>=0){if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]??s.undefined:e.elements.length?{t:"union",of:e.elements.slice(r)}:s.undefined;if(n.t==="number")return e.elements.length?{t:"union",of:e.elements}:s.undefined}else {if(n.t==="literal"&&typeof n.value=="number")return e.elements[n.value]??s.undefined;if(n.t==="number")return e.elements.length?{t:"union",of:e.elements}:s.undefined}}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:null}var Ie=Object.prototype.hasOwnProperty,P=(e,n)=>Ie.call(e,n)?e[n]:void 0;function L(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(r=>r.t!=="undefined");return {type:n.length===1?n[0]:{t:"union",of:n},hadUndefined:true}}return {type:e,hadUndefined:false}}var G=(e,n)=>e.flags?.[n]??"req",se=e=>e==="rest"||e==="variadic",Oe=e=>!!e.flags?.some(se),q=e=>e.flags?.findIndex(se)??-1,Me=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(r=>r!=="req");return n<0?e.elements.length:n};function K(e,n){let r=[],t=[],o=(i,a)=>{r.push(i),t.push(a);};for(let i=0;i<e.length;i++){let a=e[i],l=n[i]??"req";if(l!=="variadic"){o(a,l);continue}if(a.t==="tuple"){let c=a;for(let u=0;u<c.elements.length;u++)o(c.elements[u],G(c,u));}else a.t==="array"?o(a.items,"rest"):a.t==="any"?o(a,"rest"):o(a,"variadic");}return s.tuple(r,t)}function ce(e){let n=q(e);return n<0?{prefix:e.elements,rest:null,suffix:[]}:{prefix:e.elements.slice(0,n),rest:e.elements[n],suffix:e.elements.slice(n+1)}}function de(e,n,r){let t=ce(e),o=ce(n);if(o.rest===null){if(t.rest!==null)return false;let i=Me(n);return e.elements.length<i||e.elements.length>n.elements.length?false:e.elements.every((a,l)=>r(a,n.elements[l]))}if(t.rest===null){let i=t.prefix;if(i.length<o.prefix.length+o.suffix.length)return false;for(let a=0;a<o.prefix.length;a++)if(!r(i[a],o.prefix[a]))return false;for(let a=0;a<o.suffix.length;a++)if(!r(i[i.length-o.suffix.length+a],o.suffix[a]))return false;for(let a=o.prefix.length;a<i.length-o.suffix.length;a++)if(!r(i[a],o.rest))return false;return true}if(t.prefix.length>=o.prefix.length&&t.suffix.length>=o.suffix.length){for(let i=0;i<o.prefix.length;i++)if(!r(t.prefix[i],o.prefix[i]))return false;for(let i=o.prefix.length;i<t.prefix.length;i++)if(!r(t.prefix[i],o.rest))return false;if(!r(t.rest,o.rest))return false;for(let i=0;i<o.suffix.length;i++)if(!r(t.suffix[t.suffix.length-o.suffix.length+i],o.suffix[i]))return false;for(let i=0;i<t.suffix.length-o.suffix.length;i++)if(!r(t.suffix[i],o.rest))return false;return true}return false}function H(e,n,r){if(e.t==="array")return e;if(e.t==="tuple"){let t=e,o=t.elements.length,i=t.elements.slice(n,o-r),a=(t.flags??t.elements.map(()=>"req")).slice(n,o-r);return s.tuple(i,a)}return s.tuple([])}function m(e,n,r=new WeakSet){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!Le(F(e),n))return e;switch(e.t){case "var":{let t=n[e.name];return t||(e.bound?{t:"var",name:e.name,bound:m(e.bound,n,r)}:e)}case "array":return {t:"array",items:m(e.items,n,r)};case "tuple":{let t=e.elements.map(o=>m(o,n,r));return e.flags?K(t,e.flags):{t:"tuple",elements:t}}case "union":return {t:"union",of:e.of.map(t=>m(t,n,r))};case "object":{if(r.has(e))return e;r.add(e);let t={};for(let i in e.props){let a=e.props[i];t[i]={type:m(a.type,n,r),optional:a.optional};}let o=e.index?{key:e.index.key,value:m(e.index.value,n,r)}:void 0;return r.delete(e),o?{t:"object",props:t,index:o}:{t:"object",props:t}}case "fn":{if(r.has(e))return e;r.add(e);let o={t:"fn",params:e.params.map(i=>({...i,type:m(i.type,n,r)})),returns:m(e.returns,n,r),...e.guard&&{guard:{param:e.guard.param,type:m(e.guard.type,n,r)}}};return r.delete(e),o}case "apply":return {t:"apply",name:e.name,args:e.args.map(t=>m(t,n,r))};case "keyof":return h({t:"keyof",of:m(e.of,n,r)});case "index":return h({t:"index",obj:m(e.obj,n,r),key:m(e.key,n,r)});case "mapped":{let t={};for(let i in n)i!==e.key&&(t[i]=n[i]);let o={t:"mapped",key:e.key,over:m(e.over,n,r),body:m(e.body,t,r),optional:e.optional};return z(o)??o}case "conditional":{if(e.check.t==="var"){let o=e.check.name,i=n[o],a=i?h(i):void 0,l=a?.t==="union"?a.of:a?.t==="boolean"?[s.literal(true),s.literal(false)]:null;if(l)return {t:"union",of:l.map(c=>m(e,{...n,[o]:c},r))}}let t=e.infer?.length?Object.fromEntries(Object.entries(n).filter(([o])=>!e.infer.includes(o))):n;return {t:"conditional",check:m(e.check,n,r),extends:m(e.extends,t,r),then:m(e.then,t,r),else:m(e.else,t,r),...e.infer?{infer:e.infer}:{}}}case "intersection":return b({of:e.of.map(t=>m(t,n,r))});case "returnType":return h({t:"returnType",fn:m(e.fn,n,r)});case "parameters":return h({t:"parameters",fn:m(e.fn,n,r)});default:return e}}var Pe=new Set,me=new WeakMap;function F(e){let n=me.get(e);if(n)return n;let r=new Set;y(e,r,new WeakSet);let t=r.size===0?Pe:r;return me.set(e,t),t}function y(e,n,r){switch(e.t){case "var":n.add(e.name),e.bound&&y(e.bound,n,r);return;case "array":y(e.items,n,r);return;case "tuple":for(let t of e.elements)y(t,n,r);return;case "union":for(let t of e.of)y(t,n,r);return;case "object":if(r.has(e))return;r.add(e);for(let t in e.props)y(e.props[t].type,n,r);e.index&&y(e.index.value,n,r);return;case "fn":if(r.has(e))return;r.add(e);for(let t of e.params)y(t.type,n,r);y(e.returns,n,r),e.guard&&y(e.guard.type,n,r);return;case "overload":for(let t of e.signatures){for(let o of t.params)y(o.type,n,r);y(t.returns,n,r);}return;case "apply":for(let t of e.args)y(t,n,r);return;case "keyof":y(e.of,n,r);return;case "index":y(e.obj,n,r),y(e.key,n,r);return;case "mapped":y(e.over,n,r),y(e.body,n,r);return;case "conditional":{if(y(e.check,n,r),!e.infer?.length){y(e.extends,n,r),y(e.then,n,r),y(e.else,n,r);return}let t=new Set;y(e.extends,t,r),y(e.then,t,r),y(e.else,t,r);for(let o of t)e.infer.includes(o)||n.add(o);return}case "intersection":for(let t of e.of)y(t,n,r);return;case "returnType":case "parameters":y(e.fn,n,r);return;default:return}}function Le(e,n){if(e.size===0)return false;for(let r of e)if(r in n)return true;return false}function z(e){let n=h(e.over);if(n.t==="string"||n.t==="number")return {t:"object",props:{},index:{key:n.t,value:m(e.body,{[e.key]:n})}};let r=We(n);if(r===null)return null;let t={};for(let o of r)t[o]={type:m(e.body,{[e.key]:s.literal(o)}),optional:e.optional};return {t:"object",props:t}}function We(e){if(e.t==="literal"&&typeof e.value=="string")return [e.value];if(e.t==="union"){let n=[];for(let r of e.of)if(r.t==="literal"&&typeof r.value=="string")n.push(r.value);else return null;return n}return null}function w(e,n){if(e.t!=="apply")return false;let r=n[e.name];return r!==void 0&&r.params.length===e.args.length}function E(e,n){if(e.t!=="apply")return e;let r=n[e.name];if(!r||r.params.length!==e.args.length)return e;let t={};return r.params.forEach((o,i)=>t[o]=e.args[i]),m(r.body,t)}function g(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(t=>`${t}${e.props[t].optional?"?":""}:${g(e.props[t].type)}`).join(","),r=e.index?`,[${e.index.key}]:${g(e.index.value)}`:"";return `{${n}${r}}`}case "array":return `[${g(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(g).join(",")})`;case "union":return `(${e.of.map(g).sort().join("|")})`;case "fn":return `(${e.params.map(n=>g(n.type)).join(",")})=>${e.guard?`is${e.guard.param}:${g(e.guard.type)}`:g(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(g).join(",")}>`;case "intersection":return `&(${e.of.map(g).sort().join("&")})`;case "returnType":return `RT<${g(e.fn)}>`;default:return e.t}}var ye=50;function I(e,n={},r=0){if(r>ye)return e;if(e.t==="var")return e.bound?I(e.bound,n,r+1):e;if(w(e,n))return I(E(e,n),n,r+1);if(e.t==="mapped"){let t=z(e);if(t)return I(t,n,r+1)}if(e.t==="intersection")return b(e);if(e.t==="union"){let t=e.of.map(o=>I(o,n,r+1));return t.some((o,i)=>o!==e.of[i])?{t:"union",of:t}:e}return e}function R(e,n,r=0){if(r>ye)return e;let t=A(e,n);if(t!==e)return R(t,n,r+1);let o=I(e,n,r);return o===e?e:R(o,n,r+1)}function A(e,n={}){let r=h(e);if(r!==e)return r;switch(e.t){case "keyof":{let t=R(e.of,n);return t===e.of?e:h({...e,of:t})}case "index":{let t=R(e.obj,n),o=R(e.key,n);return t===e.obj&&o===e.key?e:h({...e,obj:t,key:o})}case "returnType":{let t=R(e.fn,n);return t===e.fn?e:h({...e,fn:t})}default:return e}}var Ue=1e3,J={maxTypeDepth:1e3,maxUnionMembers:1e3,maxOverloadSignatures:200},Q=J;function Be(e){Q={...J,...e};}function Fe(){Q=J;}function C(){return Q}var W=class extends Error{constructor(n=Q.maxTypeDepth){super(`type evaluation exceeded the depth limit (${n}) \u2014 the type is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},N=class extends Error{constructor(n,r=Q.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${r})`),this.name="UnionTooComplexError";}};var re=(e,n)=>({seen:new WeakMap,exp:new Set,schemes:e,depth:0,assumed:0,explain:n});function x(e,n,r){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:r,kind:"type"}),false}function ze(e,n,r={}){let t=[];return !p(e,n,re(r,{path:[],out:t}))&&t.length===0&&t.push({path:[],actual:e,expected:n,kind:"type"}),t}var ne=new WeakMap;function T(e,n,r={}){if(e===n)return true;if(Object.keys(r).length>0)return p(e,n,re(r));let t=ne.get(e)?.get(n);if(t!==void 0)return t;let o=p(e,n,re(r)),i=ne.get(e);return i||ne.set(e,i=new WeakMap),i.set(n,o),o}function Re(e,n,r={}){return T(e,n,r)&&T(n,e,r)}function V(e,n){return e.infer?.length||F(e.check).size>0||F(e.extends).size>0?null:T(e.check,e.extends,n)?e.then:e.else}function D(e,n,r=0){if(r>50)return e;let t=A(e,n.schemes);if(t!==e)return D(t,n,r+1);if(e.t==="conditional"){let o=V(e,n.schemes);if(o)return D(o,n,r+1)}return w(e,n.schemes)?D(E(e,n.schemes),n,r+1):e.t==="union"?v(e.of.map(o=>D(o,n,r+1))):e}function Z(e,n,r,t){if(!r.explain)return p(e,n,r);r.explain.path.push(t);try{return p(e,n,r)}finally{r.explain.path.pop();}}function p(e,n,r){if(r.depth>=C().maxTypeDepth)throw new W;r.depth++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return x(r,e,n);let t=A(e,r.schemes);if(t!==e)return p(t,n,r);let o=A(n,r.schemes);if(o!==n)return p(e,o,r);if(e.t==="mapped"){let u=z({...e,over:D(e.over,r)});if(u)return p(u,n,r)}if(n.t==="mapped"){let u=z({...n,over:D(n.over,r)});if(u)return p(e,u,r)}if(e.t==="conditional"){let u=V(e,r.schemes);if(u)return p(u,n,r)}if(n.t==="conditional"){let u=V(n,r.schemes);if(u)return p(e,u,r)}if(n.t==="intersection"){let u=b(n);return u.t!=="intersection"?p(e,u,r):u.of.every(d=>p(e,d,r))}if(e.t==="intersection"){let u=b(e);if(u.t!=="intersection")return p(u,n,r);if(u.of.some(d=>p(d,n,r)))return !0;if(n.t==="object"){let d=De(u.of);if(d)return p(d,n,r)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(w(e,r.schemes)||w(n,r.schemes))){let u=`${g(e)}\u2264${g(n)}`;if(r.exp.has(u))return !0;r.exp.add(u);let d=p(E(e,r.schemes),E(n,r.schemes),r);return r.exp.delete(u),d}let a=r.seen.get(e);if(a?.has(n))return r.assumed++,!0;a||(a=new WeakSet,r.seen.set(e,a)),a.add(n);let l=r.assumed,c=Ae(e,n,r);return (!c||r.assumed!==l)&&a.delete(n),c}finally{r.depth--;}}function Ae(e,n,r){if(e.t==="union")return e.of.every(t=>p(t,n,r));if(e.t==="boolean"&&n.t==="union")return p(s.literal(true),n,r)&&p(s.literal(false),n,r);if(n.t==="union")return _e(e,n,r);if(n.t==="overload")return n.signatures.every(t=>p(e,t,r));if(e.t==="overload")return e.signatures.some(t=>p(t,n,r));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:x(r,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Ce(e.value)===n.t?true:x(r,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:x(r,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?x(r,e,n):p(e.items,n.items,r):e.t==="tuple"?e.readonly&&!n.readonly?x(r,e,n):e.elements.every((t,o)=>Z(t,n.items,r,String(o))):x(r,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return x(r,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return x(r,e,n);for(let t=0;t<e.elements.length;t++)if(!Z(e.elements[t],n.elements[t],r,String(t)))return false;return true}return de(e,n,(t,o)=>p(t,o,r))}case "object":return e.t==="object"?Ke(e,n,r):Object.keys(n.props).length===0&&!n.index?e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:x(r,e,n):e.t==="array"&&n.index&&Object.values(n.props).every(t=>t.optional)&&p(e.items,n.index.value,r)?true:x(r,e,n);case "fn":return e.t==="fn"?Ne(e,n,r):x(r,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((t,o)=>t===n.path[o]);case "keyof":return e.t==="keyof"&&p(e.of,n.of,r)&&p(n.of,e.of,r);case "index":return e.t==="index"&&p(e.obj,n.obj,r)&&p(n.obj,e.obj,r)&&p(e.key,n.key,r)&&p(n.key,e.key,r);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&p(e.over,n.over,r)&&p(n.over,e.over,r)&&p(e.body,n.body,r)&&p(n.body,e.body,r);case "conditional":return e.t==="conditional"&&p(e.check,n.check,r)&&p(n.check,e.check,r)&&p(e.extends,n.extends,r)&&p(n.extends,e.extends,r)&&p(e.then,n.then,r)&&p(e.else,n.else,r);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((t,o)=>p(t,n.args[o],r));case "returnType":return e.t==="returnType"&&p(e.fn,n.fn,r)&&p(n.fn,e.fn,r);case "parameters":return e.t==="parameters"&&p(e.fn,n.fn,r)&&p(n.fn,e.fn,r)}}var Ce=e=>typeof e;function De(e){let n=[];for(let i of e){let a=h(i);if(a.t!=="object")return null;n.push(a);}let r=new Set;for(let i of n)for(let a in i.props)r.add(a);let t={};for(let i of r){let a=[],l=true;for(let c of n){let u=c.props[i];u?(a.push(u.type),u.optional||(l=false)):c.index?.key==="string"&&(a.push(c.index.value),l=false);}t[i]={type:b({of:a}),optional:l};}let o;for(let i of n)i.index&&(o=o?{key:o.key,value:b({of:[o.value,i.index.value]})}:i.index);return o?{t:"object",props:t,index:o}:{t:"object",props:t}}function _e(e,n,r){let t=r.explain;if(!t)return n.of.some(a=>p(e,a,r));r.explain=void 0;let o;try{o=n.of.some(a=>p(e,a,r));}finally{r.explain=t;}if(o)return true;let i=qe(e,n,r);return i?p(e,i,r):x(r,e,n)}function qe(e,n,r){if(e.t!=="object")return null;let t=n.of.map(o=>I(o,r.schemes));for(let o in e.props){let i=e.props[o].type;if(i.t!=="literal")continue;let a=r.explain;r.explain=void 0;let l;try{l=n.of.filter((c,u)=>{let d=t[u];if(d.t!=="object")return !1;let f=P(d.props,o);return !!f&&p(i,f.type,r)});}finally{r.explain=a;}if(l.length===1)return l[0]}return null}function Ke(e,n,r){let t=false;for(let o in n.props)if(!(n.props[o].optional||P(e.props,o))){if(!r.explain)return false;r.explain.out.push({path:[...r.explain.path,o],expected:n.props[o].type,kind:"missing"}),t=true;}if(t)return false;for(let o in n.props){let i=n.props[o],a=P(e.props,o);if(!a)continue;if(a.optional&&!i.optional)return false;let l=i.optional?L(a.type).type:a.type;if(!Z(l,i.type,r,o))return false}if(n.index){for(let o in e.props)if(!Z(e.props[o].type,n.index.value,r,o))return false;if(e.index&&!p(e.index.value,n.index.value,r))return false}return true}function Ne(e,n,r){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!p(e.returns,n.returns,r))return false;for(let t=0;t<e.params.length;t++){let o=e.params[t];if(o.variadic)break;let i=n.params[t];if(!i){if(o.optional)continue;return false}if(!p(i.type,o.type,r))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!p(e.guard.type,n.guard.type,r)))}function v(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let r=C().maxUnionMembers;if(n.length>r)throw new N(n.length,r);if(n.some(o=>o.t==="any"))return s.any;let t=[];for(let o of n)if(!t.some(i=>T(o,i))){for(let i=t.length-1;i>=0;i--)T(t[i],o)&&t.splice(i,1);t.push(o);}if(t.some(o=>o.t==="literal"&&o.value===true)&&t.some(o=>o.t==="literal"&&o.value===false)){let o=t.filter(i=>!(i.t==="boolean"||i.t==="literal"&&typeof i.value=="boolean"));o.push(s.boolean),t.length=0,t.push(...o);}return t.length===1?t[0]:{t:"union",of:t}}function Qe(e,n){let r=new Set,t=new WeakSet,o=i=>{if(!t.has(i))switch(t.add(i),i.t){case "keyof":r.add("keyof"),o(i.of);break;case "index":r.add("indexed"),o(i.obj),o(i.key);break;case "mapped":r.add("mapped"),o(i.over),o(i.body);break;case "conditional":r.add("conditional"),i.infer?.length&&r.add("infer"),o(i.check),o(i.extends),o(i.then),o(i.else);break;case "returnType":r.add("returnType"),o(i.fn);break;case "parameters":r.add("parameters"),o(i.fn);break;case "tuple":r.add("tuple"),i.flags?.some(a=>a!=="req")&&r.add("variadic"),i.elements.forEach(o);break;case "intersection":r.add("intersection"),i.of.forEach(o);break;case "overload":r.add("overload");for(let a of i.signatures){for(let l of a.params)o(l.type);o(a.returns);}break;case "object":for(let a in i.props)o(i.props[a].type);i.index&&o(i.index.value);break;case "array":o(i.items);break;case "union":i.of.forEach(o);break;case "fn":for(let a of i.params)o(a.type);o(i.returns),i.guard&&o(i.guard.type);break;case "var":i.bound&&o(i.bound);break;case "apply":n&&i.name===n&&r.add("recursion"),i.args.forEach(o);break}};return o(e),r}var te=e=>typeof e=="string"?s.string:typeof e=="number"?s.number:s.boolean;function oe(e){return e.t==="literal"&&e.fresh?te(e.value):e}function Se(e){if(e.t==="literal")return e.fresh?te(e.value):e;if(e.t==="union"){let n=e.of.map(Se);return n.some((r,t)=>r!==e.of[t])?v(n):e}return e}function Ve(e){return j(e,new WeakSet)}function Ye(e){switch(e.t){case "array":return {t:"array",items:j(e.items,new WeakSet),...e.readonly?{readonly:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>j(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}};case "object":return he(e,new WeakSet);case "fn":case "overload":return j(e,new WeakSet);default:return e}}function j(e,n){if(e.t==="literal")return e.fresh?te(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:j(e.items,n),...e.readonly?{readonly:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(r=>j(r,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}};case "object":return n.add(e),he(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(r=>j(r,n))};case "fn":return n.add(e),{t:"fn",params:e.params.map(r=>({...r,type:j(r.type,n)})),returns:j(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:j(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(r=>j(r,n))};default:return e}}function he(e,n){let r={};for(let o in e.props)r[o]={type:j(e.props[o].type,n),optional:e.props[o].optional};let t=e.index?{key:e.index.key,value:j(e.index.value,n)}:void 0;return t?{t:"object",props:r,index:t}:{t:"object",props:r}}var ge=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Ge(e,n){if(T(n,e))return e;if(T(e,n))return n;let r=ge(e),t=ge(n);return !r||!t||r===t?v([e,n]):null}function k(e,n,r={}){if(e.t==="var"){let t=r[e.name];if(!t)return {...r,[e.name]:n};if(n.t==="any"||n.t==="unknown")return r;let o=Ge(t,n);return o?{...r,[e.name]:o}:r}if(n.t==="any"||n.t==="unknown")return r;switch(e.t){case "array":return n.t==="array"?k(e.items,n.items,r):null;case "tuple":{let t=e,o=q(t);if(o<0){if(n.t!=="tuple"||n.elements.length!==t.elements.length)return null;let f=r;for(let B=0;B<t.elements.length;B++)if(f=k(t.elements[B],n.elements[B],f),f===null)return null;return f}let i=o,a=t.elements.length-o-1,l=G(t,o),c=f=>l==="variadic"?f:f.t==="tuple"?f.elements.length?v(f.elements):s.unknown:f.t==="array"?f.items:f,u=r,d=(f,B)=>{u!==null&&(u=k(f,B,u));};if(n.t==="tuple"){if(n.elements.length<i+a)return null;for(let f=0;f<i;f++)d(t.elements[f],n.elements[f]);for(let f=0;f<a;f++)d(t.elements[o+1+f],n.elements[n.elements.length-a+f]);return u!==null&&(u=k(t.elements[o],c(H(n,i,a)),u)),u}if(n.t==="array"){for(let f=0;f<i;f++)d(t.elements[f],n.items);for(let f=0;f<a;f++)d(t.elements[o+1+f],n.items);return u!==null&&(u=k(t.elements[o],c(n),u)),u}return null}case "object":{if(n.t!=="object")return null;let t=r;for(let o in e.props){let i=e.props[o],a=n.props[o];if(!a){if(i.optional)continue;return null}if(t=k(i.type,a.type,t),t===null)return null}return t}case "fn":{if(n.t!=="fn")return null;let t=k(e.returns,n.returns,r);if(t===null)return null;let o=Math.min(e.params.length,n.params.length);for(let i=0;i<o;i++)if(t=k(e.params[i].type,n.params[i].type,t),t===null)return null;return e.guard&&n.guard&&(t=k(e.guard.type,n.guard.type,t)),t}case "apply":{if(n.t!=="apply"||n.name!==e.name||n.args.length!==e.args.length)return null;let t=r;for(let o=0;o<e.args.length;o++)if(t=k(e.args[o],n.args[o],t),t===null)return null;return t}default:return T(n,e)?r:null}}var xe="@rev",ie=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function O(e,n,r){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===r)return s.var(xe);switch(e.t){case "array":return {t:"array",items:O(e.items,n,r)};case "tuple":return {t:"tuple",elements:e.elements.map(t=>O(t,n,r)),...e.flags?{flags:e.flags}:{}};case "union":return {t:"union",of:e.of.map(t=>O(t,n,r))};case "fn":return {t:"fn",params:e.params.map(t=>({...t,type:O(t.type,n,r)})),returns:O(e.returns,n,r)};case "apply":return {t:"apply",name:e.name,args:e.args.map(t=>O(t,n,r))};case "returnType":return {t:"returnType",fn:O(e.fn,n,r)};case "object":{let t={};for(let o in e.props)t[o]={type:O(e.props[o].type,n,r),optional:e.props[o].optional};return e.index?{t:"object",props:t,index:{key:e.index.key,value:O(e.index.value,n,r)}}:{t:"object",props:t}}default:return e}}function He(e,n,r){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let t=e.over.of.name;if(r[t])return null;let o={};for(let i in n.props){let a=O(e.body,t,e.key),l=k(a,n.props[i].type,{})?.[xe];o[i]={type:l?oe(l):s.unknown,optional:n.props[i].optional};}return {...r,[t]:{t:"object",props:o}}}function ve(e,n,r){let t=r;for(let o=0;o<e.length&&o<n.length;o++){let i=e[o].type,a=n[o];if(ie(i)&&a.t==="object"){let l=He(i,a,t);l&&(t=l);}}return t}function Je(e,n){let r={};for(let o=0;o<e.params.length;o++){let i=e.params[o];if(i.variadic){for(let a=o;a<n.length;a++)if(r=k(i.type,n[a],r),r===null)return null;break}if(o>=n.length){if(i.optional)continue;return null}if(!ie(i.type)&&(r=k(i.type,n[o],r),r===null))return null}let t=ve(e.params,n,r);return {returns:m(e.returns,t),bindings:t}}function Ze(e,n){let r={};for(let t=0;t<e.params.length&&t<n.length;t++){let o=e.params[t];if(ie(o.type))continue;let i=k(o.type,n[t],r);i!==null&&(r=i);}return r=ve(e.params,n,r),{returns:m(e.returns,r),bindings:r}}function $(e,n,r,t,o){if(e.t==="var"&&r.has(e.name)){let i=o.get(e.name);i||o.set(e.name,i={co:[],contra:[]}),(t?i.contra:i.co).push(n);return}if(!(n.t==="any"||n.t==="unknown"))switch(e.t){case "array":n.t==="array"&&$(e.items,n.items,r,t,o);return;case "tuple":{let i=e,a=q(i);if(a<0){n.t==="tuple"&&n.elements.length===i.elements.length&&i.elements.forEach((d,f)=>$(d,n.elements[f],r,t,o));return}let l=a,c=i.elements.length-a-1,u=d=>$(i.elements[a],d,r,t,o);if(n.t==="tuple"){let d=n;if(d.elements.length<l+c)return;for(let f=0;f<l;f++)$(i.elements[f],d.elements[f],r,t,o);for(let f=0;f<c;f++)$(i.elements[a+1+f],d.elements[d.elements.length-c+f],r,t,o);u(H(d,l,c));}else if(n.t==="array"){for(let d=0;d<l;d++)$(i.elements[d],n.items,r,t,o);for(let d=0;d<c;d++)$(i.elements[a+1+d],n.items,r,t,o);u(n);}return}case "fn":n.t==="fn"&&(e.params.forEach((i,a)=>{let l=n.params[a];l&&$(i.type,l.type,r,!t,o);}),$(e.returns,n.returns,r,t,o));return;case "object":if(n.t==="object")for(let i in e.props)n.props[i]&&$(e.props[i].type,n.props[i].type,r,t,o);return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((i,a)=>$(i,n.args[a],r,t,o));return;default:return}}function Xe(e,n){if(e.length===1)return e[0];let t=e.flatMap(o=>o.t==="union"?[...o.of]:[o]).filter(o=>e.every(i=>T(o,i,n)));return v(t)}var en=e=>e.t==="union"&&e.of.length===0;function nn(e,n){let r={};for(let[t,{co:o,contra:i}]of e){let a=o.length?v(o):void 0,l=i.length?Xe(i,n):void 0,c=a??l;a&&l&&(c=!en(a)&&a.t!=="any"&&T(a,l,n)?a:l),c&&(r[t]=c);}return r}function rn(e,n={},r=0){if(!e.infer?.length||F(e.check).size>0)return null;let t=new Map;$(e.extends,e.check,new Set(e.infer),false,t);let o=nn(t,n),i=new WeakSet,a=X(m(e.extends,o),n,i,r);return T(e.check,a,n)?X(m(e.then,o),n,i,r):X(m(e.else,o),n,i,r)}function X(e,n={},r=new WeakSet,t=0){let o=t,i=C().maxTypeDepth,a=l=>{switch(l.t){case "var":return s.unknown;case "array":return {t:"array",items:a(l.items)};case "tuple":{let c=l.elements.map(a);return l.flags?K(c,l.flags):{t:"tuple",elements:c}}case "union":return {t:"union",of:l.of.map(a)};case "object":{if(r.has(l))return l;r.add(l);let c={};for(let d in l.props){let f=l.props[d];c[d]={type:a(f.type),optional:f.optional};}let u=l.index?{key:l.index.key,value:a(l.index.value)}:void 0;return r.delete(l),u?{t:"object",props:c,index:u}:{t:"object",props:c}}case "fn":{if(r.has(l))return l;r.add(l);let u={t:"fn",params:l.params.map(d=>({...d,type:a(d.type)})),returns:a(l.returns),...l.guard&&{guard:{param:l.guard.param,type:a(l.guard.type)}}};return r.delete(l),u}case "apply":{if(w(l,n)){let c=E(l,n);if(c.t==="conditional"){if(o>=i)throw new W;o++;try{let u=a(c);if(u.t!=="conditional")return u}finally{o--;}}}return {t:"apply",name:l.name,args:l.args.map(a)}}case "conditional":{let c=l.infer?.length?rn(l,n,o):V(l,n);return c?a(c):{t:"conditional",check:a(l.check),extends:a(l.extends),then:a(l.then),else:a(l.else),...l.infer?{infer:l.infer}:{}}}case "intersection":return b({of:l.of.map(a)});case "returnType":return h({t:"returnType",fn:a(l.fn)});default:return l}};return a(e)}var tn=s.union([]);function ke(e,n){return ae(e,n,new WeakMap)}function on(e){return e.reduce(ke,tn)}function ae(e,n,r){if(e.t==="any"||n.t==="any")return s.any;if(e===n)return e;let t=r.get(e)?.get(n);if(t)return t;if(e.t==="object"&&n.t==="object")return an(e,n,r);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:s.unknown};return be(r,e,n,o),o.items=ae(e.items,n.items,r),o}return v([e,n])}function an(e,n,r){let t={t:"object",props:{}};be(r,e,n,t);for(let o in e.props){let i=e.props[o],a=n.props[o];if(a){let l=ae(i.type,a.type,r);t.props[o]=i.optional||a.optional?{type:l,optional:true}:{type:l};}else t.props[o]={type:i.type,optional:true};}for(let o in n.props)o in e.props||(t.props[o]={type:n.props[o].type,optional:true});return t}function be(e,n,r,t){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(r,t);}var ln=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e);function S(e,n=new WeakSet){switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "var":return 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=S(e.items,n),t=un(e.items)?`(${r})[]`:`${r}[]`;return e.readonly?`readonly ${t}`:t}case "tuple":{let t=`[${e.elements.map((o,i)=>{let a=e.flags?.[i]??"req",l=S(o,n),c=o.t==="union"?`(${l})`:l;return a==="rest"?`...${c}[]`:a==="variadic"?`...${l}`:a==="optional"?`${c}?`:l}).join(", ")}]`;return e.readonly?`readonly ${t}`:t}case "union":{if(n.has(e))return "\u2026";n.add(e);let r=e.of.length===0?"never":e.of.map(t=>S(t,n)).join(" | ");return n.delete(e),r}case "object":{if(n.has(e))return "\u2026";n.add(e);let r=Object.entries(e.props).map(([t,o])=>`${ln(t)?t:JSON.stringify(t)}${o.optional?"?":""}: ${S(o.type,n)}`);return e.index&&r.push(`[k: ${e.index.key}]: ${S(e.index.value,n)}`),n.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(n.has(e))return "\u2026";n.add(e);let r=e.params.map(o=>{let i=o.variadic?"...":"",a=o.optional&&!o.variadic?"?":"";return `${i}${o.name}${a}: ${S(o.type,n)}`}).join(", "),t=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${S(e.guard.type,n)}`:S(e.returns,n);return n.delete(e),`(${r}) => ${t}`}case "apply":{if(n.has(e))return "\u2026";n.add(e);let r=e.args.length===0?e.name:`${e.name}<${e.args.map(t=>S(t,n)).join(", ")}>`;return n.delete(e),r}case "overload":{if(n.has(e))return "\u2026";n.add(e);let r=e.signatures.map(t=>S(t,n)).join(" & ");return n.delete(e),r}case "keyof":return `keyof ${S(e.of,n)}`;case "index":return `${S(e.obj,n)}[${S(e.key,n)}]`;case "mapped":{if(n.has(e))return "\u2026";n.add(e);let r=e.optional?"?":"",t=`{ [${e.key} in ${S(e.over,n)}]${r}: ${S(e.body,n)} }`;return n.delete(e),t}case "conditional":{if(n.has(e))return "\u2026";n.add(e);let r=`${S(e.check,n)} extends ${S(e.extends,n)} ? ${S(e.then,n)} : ${S(e.else,n)}`;return n.delete(e),r}case "intersection":return e.of.map(r=>r.t==="union"&&r.of.length>0?`(${S(r,n)})`:S(r,n)).join(" & ");case "returnType":return `ReturnType<${S(e.fn,n)}>`;case "parameters":return `Parameters<${S(e.fn,n)}>`}}function un(e){return e.t==="union"&&e.of.length>0||e.t==="fn"}function pn(e){if(e.length===0)return "value";let n=e[e.length-1];if(/^\d+$/.test(n)){let r=e.slice(0,-1);return r.length?`property '${r.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function fn(e){let n=e.filter(r=>r.kind==="missing");if(n.length&&n.length===e.length){let r=n.map(t=>`'${t.path.join(".")}'`).join(", ");return n.length===1?`property ${r} is missing`:`properties ${r} are missing`}return e.map(r=>`${pn(r.path)}: expected '${S(r.expected)}', got '${S(r.actual)}'`).join("; ")}function U(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),U(L(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(r=>U(L(r).type,n)));case "object":{if(n.has(e))return true;n.add(e);let r=Object.values(e.props).every(o=>U(L(o.type).type,n)),t=!e.index||U(L(e.index.value).type,n);return r&&t}case "union":return n.has(e)?true:(n.add(e),e.of.every(r=>U(r,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(r=>U(r,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":return false}}function cn(e,n,r={}){let t=e;for(let o of n){let i=_(t,o,r);if(i===null)return null;t=i;}return {type:t,completions:Y(t,r)}}var sn=e=>e==="[]"||/^\d+$/.test(e);function _(e,n,r,t=new Set){if(e.t==="var")return e.bound?_(I(e,r),n,r,t):null;if(w(e,r)){let i=g(e);if(t.has(i))return null;t.add(i);let a=_(E(e,r),n,r,t);return t.delete(i),a}let o=h(e);if(o!==e)return _(o,n,r,t);switch(e.t){case "any":return e;case "object":{let i=P(e.props,n);return i?i.optional?v([i.type,{t:"undefined"}]):i.type:e.index?.key==="string"?e.index.value:null}case "array":return sn(n)?e.items:null;case "tuple":{let i=e.flags?.findIndex(c=>c!=="req")??-1,a=Number(n);if(!(Number.isInteger(a)&&a>=0))return null;if(i<0)return a<e.elements.length?e.elements[a]:null;if(a<i)return e.elements[a];let l=e.elements.slice(i);return l.length?v(l):null}case "union":{let i=e.of.map(a=>_(a,n,r,t)).filter(a=>a!==null);return i.length?v(i):null}case "intersection":{let i=e.of.map(a=>_(a,n,r,t)).filter(a=>a!==null);return i.length?b({of:i}):null}default:return null}}function Y(e,n,r=new WeakSet,t=new Set){if(e.t==="var")return e.bound?Y(I(e,n),n,r,t):[];if(w(e,n)){let i=g(e);if(t.has(i))return [];t.add(i);let a=Y(E(e,n),n,r,t);return t.delete(i),a}let o=h(e);if(o!==e)return Y(o,n,r,t);switch(e.t){case "object":return Object.entries(e.props).map(([i,a])=>({key:i,type:a.type,optional:!!a.optional}));case "array":return [{key:"[]",type:e.items,optional:false}];case "tuple":return e.elements.map((i,a)=>({key:String(a),type:i,optional:false}));case "union":case "intersection":{if(r.has(e))return [];r.add(e);let i=[],a=new Set;for(let l of e.of)for(let c of Y(l,n,r,t))a.has(c.key)||(a.add(c.key),i.push(c));return r.delete(e),i}default:return []}}exports.DEFAULT_TYPE_LIMITS=J;exports.TYPE_EVAL_DEPTH_LIMIT=Ue;exports.TypeEvalLimitError=W;exports.UnionTooComplexError=N;exports.apparentType=I;exports.configureTypeLimits=Be;exports.discover=cn;exports.equals=Re;exports.expand1=E;exports.flagAt=G;exports.format=S;exports.formatTypeDiff=fn;exports.groundVars=X;exports.instantiate=Je;exports.instantiateLoose=Ze;exports.isScheme=w;exports.isSerializable=U;exports.isVariadicTuple=Oe;exports.join=ke;exports.joinAll=on;exports.normalizeTuple=K;exports.normalizeUnion=v;exports.ownProp=P;exports.resetTypeLimits=Fe;exports.resolveOp=A;exports.resolveTypeOp=h;exports.restIndex=q;exports.s=s;exports.sliceTuple=H;exports.substitute=m;exports.subtype=T;exports.typeDiff=ze;exports.typeFeatures=Qe;exports.typeLimits=C;exports.unify=k;exports.widen=oe;exports.widenInferred=Ye;exports.widenLiteral=Se;exports.widenType=Ve;exports.withoutUndefined=L;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var M=e=>Object.freeze(e),c={any:M({t:"any"}),unknown:M({t:"unknown"}),string:M({t:"string"}),number:M({t:"number"}),boolean:M({t:"boolean"}),null:M({t:"null"}),undefined:M({t:"undefined"}),void:M({t:"void"}),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,r)=>({t:"tuple",elements:e,...n&&n.some(t=>t!=="req")?{flags:n}:{},...r?{readonly:true}:{}}),fn:(e,n,r)=>({t:"fn",params:e,returns:n,...r?.length?{typeParams:r}:{}}),guard:(e,n,r=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:r,type:n}}),overload:e=>({t:"overload",signatures:e}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,r,t=false)=>({t:"mapped",key:e,over:n,body:r,optional:t}),conditional:(e,n,r,t,o)=>({t:"conditional",check:e,extends:n,then:r,else:t,...o&&o.length?{infer:o}:{}}),intersection:e=>({t:"intersection",of:e}),and:(e,n)=>({t:"intersection",of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n,r)=>({t:"var",name:e,bound:n,isConst:r}),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=[];for(let r of e)r.t==="union"?n.push(...r.of):n.push(r);return {t:"union",of:n}}};function h(e){return e.t==="keyof"?fe(e.of)??e:e.t==="index"?X(e.obj,e.key)??e:e.t==="returnType"?je(e.fn)??e:e.t==="parameters"?Ee(e.fn)??e:e}var le={t:"union",of:[]},Te=e=>e.t==="union"&&e.of.length===0;function je(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function we(e){if(e.t==="undefined")return e;let n=e.t==="union"?e.of:[e];return n.some(r=>r.t==="undefined")?e:{t:"union",of:[...n,{t:"undefined"}]}}function Ee(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 r=[],t=[];for(let o of n.params)o.variadic?(r.push(o.type.t==="array"?o.type.items:o.type),t.push("rest")):o.optional?(r.push(we(o.type)),t.push("optional")):(r.push(o.type),t.push("req"));return c.tuple(r,t)}var ue=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function pe(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 k(e){let n=[],r=o=>{let a=h(o);a.t==="intersection"?a.of.forEach(r):n.push(a);};e.of.forEach(r);let t=[];for(let o of n){if(o.t==="any")return c.any;if(Te(o))return le;if(o.t!=="unknown"){if(ue(o)){let a=false;for(let i=t.length-1;i>=0;i--){let l=t[i];if(ue(l)){if(pe(l,o)){a=true;break}if(pe(o,l))t.splice(i,1);else return le}}if(a)continue}else if(t.some(a=>a===o))continue;t.push(o);}}return t.length===0?c.unknown:t.length===1?t[0]:{t:"intersection",of:t}}function fe(e){if(e.t==="union"){let r=e.of.map(fe);return r.some(t=>t===null)?null:$e(r)}if(e.t!=="object")return null;let n=Object.keys(e.props).map(r=>c.literal(r));return e.index&&n.push(e.index.key==="number"?c.number:c.string),n.length===0?{t:"union",of:[]}:n.length===1?n[0]:{t:"union",of:n}}function $e(e){let n=a=>a.t==="literal"&&typeof a.value=="string"?[a.value]:a.t==="union"?a.of.flatMap(n):[],r=e.filter(a=>a.t!=="string"&&a.t!=="number").map(n);if(r.length===0)return e[0];let t=r[0].filter(a=>r.every(i=>i.includes(a))),o=[...new Set(t)].map(a=>c.literal(a));return o.length===0?{t:"union",of:[]}:o.length===1?o[0]:{t:"union",of:o}}function X(e,n){if(e=h(e),n=h(n),n.t==="union"){let r=n.of.map(t=>X(e,t));return r.some(t=>t===null)?null:{t:"union",of:r}}if(e.t==="intersection"){let r=[];for(let t of e.of){let o=X(h(t),n);if(o===null)return null;o.t!=="undefined"&&r.push(o);}return r.length===0?c.undefined:r.length===1?r[0]:k({of:r})}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let r=P(e.props,String(n.value));return r?r.optional?{t:"union",of:[r.type,{t:"undefined"}]}:r.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:c.undefined}if(e.index?.key==="string"&&n.t==="string"||e.index?.key==="number"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number"))return e.index.value}if(e.t==="tuple"){let r=e.flags?.findIndex(t=>t!=="req")??-1;if(r>=0){if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]??c.undefined:e.elements.length?{t:"union",of:e.elements.slice(r)}:c.undefined;if(n.t==="number")return e.elements.length?{t:"union",of:e.elements}:c.undefined}else {if(n.t==="literal"&&typeof n.value=="number")return e.elements[n.value]??c.undefined;if(n.t==="number")return e.elements.length?{t:"union",of:e.elements}:c.undefined}}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:null}var Ie=Object.prototype.hasOwnProperty,P=(e,n)=>Ie.call(e,n)?e[n]:void 0;function F(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(r=>r.t!=="undefined");return {type:n.length===1?n[0]:{t:"union",of:n},hadUndefined:true}}return {type:e,hadUndefined:false}}var G=(e,n)=>e.flags?.[n]??"req",se=e=>e==="rest"||e==="variadic",Oe=e=>!!e.flags?.some(se),q=e=>e.flags?.findIndex(se)??-1,Me=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(r=>r!=="req");return n<0?e.elements.length:n};function K(e,n){let r=[],t=[],o=(a,i)=>{r.push(a),t.push(i);};for(let a=0;a<e.length;a++){let i=e[a],l=n[a]??"req";if(l!=="variadic"){o(i,l);continue}if(i.t==="tuple"){let u=i;for(let d=0;d<u.elements.length;d++)o(u.elements[d],G(u,d));}else i.t==="array"?o(i.items,"rest"):i.t==="any"?o(i,"rest"):o(i,"variadic");}return c.tuple(r,t)}function ce(e){let n=q(e);return n<0?{prefix:e.elements,rest:null,suffix:[]}:{prefix:e.elements.slice(0,n),rest:e.elements[n],suffix:e.elements.slice(n+1)}}function de(e,n,r){let t=ce(e),o=ce(n);if(o.rest===null){if(t.rest!==null)return false;let a=Me(n);return e.elements.length<a||e.elements.length>n.elements.length?false:e.elements.every((i,l)=>r(i,n.elements[l]))}if(t.rest===null){let a=t.prefix;if(a.length<o.prefix.length+o.suffix.length)return false;for(let i=0;i<o.prefix.length;i++)if(!r(a[i],o.prefix[i]))return false;for(let i=0;i<o.suffix.length;i++)if(!r(a[a.length-o.suffix.length+i],o.suffix[i]))return false;for(let i=o.prefix.length;i<a.length-o.suffix.length;i++)if(!r(a[i],o.rest))return false;return true}if(t.prefix.length>=o.prefix.length&&t.suffix.length>=o.suffix.length){for(let a=0;a<o.prefix.length;a++)if(!r(t.prefix[a],o.prefix[a]))return false;for(let a=o.prefix.length;a<t.prefix.length;a++)if(!r(t.prefix[a],o.rest))return false;if(!r(t.rest,o.rest))return false;for(let a=0;a<o.suffix.length;a++)if(!r(t.suffix[t.suffix.length-o.suffix.length+a],o.suffix[a]))return false;for(let a=0;a<t.suffix.length-o.suffix.length;a++)if(!r(t.suffix[a],o.rest))return false;return true}return false}function H(e,n,r){if(e.t==="array")return e;if(e.t==="tuple"){let t=e,o=t.elements.length,a=t.elements.slice(n,o-r),i=(t.flags??t.elements.map(()=>"req")).slice(n,o-r);return c.tuple(a,i)}return c.tuple([])}function s(e,n,r=new WeakSet){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!Le(z(e),n))return e;switch(e.t){case "var":{let t=n[e.name];return t||(e.bound?{t:"var",name:e.name,bound:s(e.bound,n,r)}:e)}case "array":return {t:"array",items:s(e.items,n,r)};case "tuple":{let t=e.elements.map(o=>s(o,n,r));return e.flags?K(t,e.flags):{t:"tuple",elements:t}}case "union":return {t:"union",of:e.of.map(t=>s(t,n,r))};case "object":{if(r.has(e))return e;r.add(e);let t={};for(let a in e.props){let i=e.props[a];t[a]={type:s(i.type,n,r),optional:i.optional};}let o=e.index?{key:e.index.key,value:s(e.index.value,n,r)}:void 0;return r.delete(e),o?{t:"object",props:t,index:o}:{t:"object",props:t}}case "fn":{if(r.has(e))return e;r.add(e);let o={t:"fn",params:e.params.map(a=>({...a,type:s(a.type,n,r)})),returns:s(e.returns,n,r),...e.guard&&{guard:{param:e.guard.param,type:s(e.guard.type,n,r)}}};return r.delete(e),o}case "apply":return {t:"apply",name:e.name,args:e.args.map(t=>s(t,n,r))};case "keyof":return h({t:"keyof",of:s(e.of,n,r)});case "index":return h({t:"index",obj:s(e.obj,n,r),key:s(e.key,n,r)});case "mapped":{let t={};for(let a in n)a!==e.key&&(t[a]=n[a]);let o={t:"mapped",key:e.key,over:s(e.over,n,r),body:s(e.body,t,r),optional:e.optional};return R(o)??o}case "conditional":{if(e.check.t==="var"){let o=e.check.name,a=n[o],i=a?h(a):void 0,l=i?.t==="union"?i.of:i?.t==="boolean"?[c.literal(true),c.literal(false)]:null;if(l)return {t:"union",of:l.map(u=>s(e,{...n,[o]:u},r))}}let t=e.infer?.length?Object.fromEntries(Object.entries(n).filter(([o])=>!e.infer.includes(o))):n;return {t:"conditional",check:s(e.check,n,r),extends:s(e.extends,t,r),then:s(e.then,t,r),else:s(e.else,t,r),...e.infer?{infer:e.infer}:{}}}case "intersection":return k({of:e.of.map(t=>s(t,n,r))});case "returnType":return h({t:"returnType",fn:s(e.fn,n,r)});case "parameters":return h({t:"parameters",fn:s(e.fn,n,r)});default:return e}}var Pe=new Set,me=new WeakMap;function z(e){let n=me.get(e);if(n)return n;let r=new Set;y(e,r,new WeakSet);let t=r.size===0?Pe:r;return me.set(e,t),t}function y(e,n,r){switch(e.t){case "var":n.add(e.name),e.bound&&y(e.bound,n,r);return;case "array":y(e.items,n,r);return;case "tuple":for(let t of e.elements)y(t,n,r);return;case "union":for(let t of e.of)y(t,n,r);return;case "object":if(r.has(e))return;r.add(e);for(let t in e.props)y(e.props[t].type,n,r);e.index&&y(e.index.value,n,r);return;case "fn":if(r.has(e))return;r.add(e);for(let t of e.params)y(t.type,n,r);y(e.returns,n,r),e.guard&&y(e.guard.type,n,r);return;case "overload":for(let t of e.signatures){for(let o of t.params)y(o.type,n,r);y(t.returns,n,r);}return;case "apply":for(let t of e.args)y(t,n,r);return;case "keyof":y(e.of,n,r);return;case "index":y(e.obj,n,r),y(e.key,n,r);return;case "mapped":y(e.over,n,r),y(e.body,n,r);return;case "conditional":{if(y(e.check,n,r),!e.infer?.length){y(e.extends,n,r),y(e.then,n,r),y(e.else,n,r);return}let t=new Set;y(e.extends,t,r),y(e.then,t,r),y(e.else,t,r);for(let o of t)e.infer.includes(o)||n.add(o);return}case "intersection":for(let t of e.of)y(t,n,r);return;case "returnType":case "parameters":y(e.fn,n,r);return;default:return}}function Le(e,n){if(e.size===0)return false;for(let r of e)if(r in n)return true;return false}function R(e){let n=h(e.over);if(n.t==="string"||n.t==="number")return {t:"object",props:{},index:{key:n.t,value:s(e.body,{[e.key]:n})}};let r=We(n);if(r===null)return null;let t={};for(let o of r)t[o]={type:s(e.body,{[e.key]:c.literal(o)}),optional:e.optional};return {t:"object",props:t}}function We(e){if(e.t==="literal"&&typeof e.value=="string")return [e.value];if(e.t==="union"){let n=[];for(let r of e.of)if(r.t==="literal"&&typeof r.value=="string")n.push(r.value);else return null;return n}return null}function w(e,n){if(e.t!=="apply")return false;let r=n[e.name];return r!==void 0&&r.params.length===e.args.length}function E(e,n){if(e.t!=="apply")return e;let r=n[e.name];if(!r||r.params.length!==e.args.length)return e;let t={};return r.params.forEach((o,a)=>t[o]=e.args[a]),s(r.body,t)}function g(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(t=>`${t}${e.props[t].optional?"?":""}:${g(e.props[t].type)}`).join(","),r=e.index?`,[${e.index.key}]:${g(e.index.value)}`:"";return `{${n}${r}}`}case "array":return `[${g(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(g).join(",")})`;case "union":return `(${e.of.map(g).sort().join("|")})`;case "fn":return `(${e.params.map(n=>g(n.type)).join(",")})=>${e.guard?`is${e.guard.param}:${g(e.guard.type)}`:g(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(g).join(",")}>`;case "intersection":return `&(${e.of.map(g).sort().join("&")})`;case "returnType":return `RT<${g(e.fn)}>`;default:return e.t}}var ye=50;function O(e,n={},r=0){if(r>ye)return e;if(e.t==="var")return e.bound?O(e.bound,n,r+1):e;if(w(e,n))return O(E(e,n),n,r+1);if(e.t==="mapped"){let t=R(e);if(t)return O(t,n,r+1)}if(e.t==="intersection")return k(e);if(e.t==="union"){let t=e.of.map(o=>O(o,n,r+1));return t.some((o,a)=>o!==e.of[a])?{t:"union",of:t}:e}return e}function U(e,n,r=0){if(r>ye)return e;let t=A(e,n);if(t!==e)return U(t,n,r+1);let o=O(e,n,r);return o===e?e:U(o,n,r+1)}function A(e,n={}){let r=h(e);if(r!==e)return r;switch(e.t){case "keyof":{let t=U(e.of,n);return t===e.of?e:h({...e,of:t})}case "index":{let t=U(e.obj,n),o=U(e.key,n);return t===e.obj&&o===e.key?e:h({...e,obj:t,key:o})}case "returnType":{let t=U(e.fn,n);return t===e.fn?e:h({...e,fn:t})}default:return e}}var Be=1e3,J={maxTypeDepth:1e3,maxUnionMembers:1e3,maxOverloadSignatures:200},Q=J;function Fe(e){Q={...J,...e};}function ze(){Q=J;}function C(){return Q}var L=class extends Error{constructor(n=Q.maxTypeDepth){super(`type evaluation exceeded the depth limit (${n}) \u2014 the type is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},N=class extends Error{constructor(n,r=Q.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${r})`),this.name="UnionTooComplexError";}};var ne=(e,n)=>({seen:new WeakMap,exp:new Set,schemes:e,depth:0,explain:n});function b(e,n,r){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:r,kind:"type"}),false}function Re(e,n,r={}){let t=[];return !p(e,n,ne(r,{path:[],out:t}))&&t.length===0&&t.push({path:[],actual:e,expected:n,kind:"type"}),t}var ee=new WeakMap;function T(e,n,r={}){if(e===n)return true;if(Object.keys(r).length>0)return p(e,n,ne(r));let t=ee.get(e)?.get(n);if(t!==void 0)return t;let o=p(e,n,ne(r)),a=ee.get(e);return a||ee.set(e,a=new WeakMap),a.set(n,o),o}function Ue(e,n,r={}){return T(e,n,r)&&T(n,e,r)}function V(e,n){return e.infer?.length||z(e.check).size>0||z(e.extends).size>0?null:T(e.check,e.extends,n)?e.then:e.else}function D(e,n,r=0){if(r>50)return e;let t=A(e,n.schemes);if(t!==e)return D(t,n,r+1);if(e.t==="conditional"){let o=V(e,n.schemes);if(o)return D(o,n,r+1)}return w(e,n.schemes)?D(E(e,n.schemes),n,r+1):e.t==="union"?x(e.of.map(o=>D(o,n,r+1))):e}function p(e,n,r){if(r.depth>=C().maxTypeDepth)throw new L;r.depth++;try{return Ae(e,n,r)}finally{r.depth--;}}function re(e,n,r,t){if(!r.explain)return p(e,n,r);r.explain.path.push(t);try{return p(e,n,r)}finally{r.explain.path.pop();}}function Ae(e,n,r){if(e.t==="any"||n.t==="any"||n.t==="unknown")return true;if(e.t==="unknown")return b(r,e,n);let t=A(e,r.schemes);if(t!==e)return p(t,n,r);let o=A(n,r.schemes);if(o!==n)return p(e,o,r);if(e.t==="mapped"){let l=R({...e,over:D(e.over,r)});if(l)return p(l,n,r)}if(n.t==="mapped"){let l=R({...n,over:D(n.over,r)});if(l)return p(e,l,r)}if(e.t==="conditional"){let l=V(e,r.schemes);if(l)return p(l,n,r)}if(n.t==="conditional"){let l=V(n,r.schemes);if(l)return p(e,l,r)}if(n.t==="intersection"){let l=k(n);return l.t!=="intersection"?p(e,l,r):l.of.every(u=>p(e,u,r))}if(e.t==="intersection"){let l=k(e);if(l.t!=="intersection")return p(l,n,r);if(l.of.some(u=>p(u,n,r)))return true;if(n.t==="object"){let u=De(l.of);if(u)return p(u,n,r)}return false}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(w(e,r.schemes)||w(n,r.schemes))){let l=`${g(e)}\u2264${g(n)}`;if(r.exp.has(l))return true;r.exp.add(l);let u=p(E(e,r.schemes),E(n,r.schemes),r);return r.exp.delete(l),u}let i=r.seen.get(e);if(i?.has(n))return true;if(i||(i=new WeakSet,r.seen.set(e,i)),i.add(n),e.t==="union")return e.of.every(l=>p(l,n,r));if(e.t==="boolean"&&n.t==="union")return p(c.literal(true),n,r)&&p(c.literal(false),n,r);if(n.t==="union")return n.of.some(l=>p(e,l,r));if(n.t==="overload")return n.signatures.every(l=>p(e,l,r));if(e.t==="overload")return e.signatures.some(l=>p(l,n,r));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:b(r,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Ce(e.value)===n.t?true:b(r,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:b(r,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?b(r,e,n):p(e.items,n.items,r):e.t==="tuple"?e.readonly&&!n.readonly?b(r,e,n):e.elements.every(l=>p(l,n.items,r)):b(r,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return b(r,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return b(r,e,n);for(let l=0;l<e.elements.length;l++)if(!re(e.elements[l],n.elements[l],r,String(l)))return false;return true}return de(e,n,(l,u)=>p(l,u,r))}case "object":return e.t==="object"?_e(e,n,r):Object.keys(n.props).length===0&&!n.index?e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:b(r,e,n):e.t==="array"&&n.index&&Object.values(n.props).every(l=>l.optional)&&p(e.items,n.index.value,r)?true:b(r,e,n);case "fn":return e.t==="fn"?qe(e,n,r):b(r,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((l,u)=>l===n.path[u]);case "keyof":return e.t==="keyof"&&p(e.of,n.of,r)&&p(n.of,e.of,r);case "index":return e.t==="index"&&p(e.obj,n.obj,r)&&p(n.obj,e.obj,r)&&p(e.key,n.key,r)&&p(n.key,e.key,r);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&p(e.over,n.over,r)&&p(n.over,e.over,r)&&p(e.body,n.body,r)&&p(n.body,e.body,r);case "conditional":return e.t==="conditional"&&p(e.check,n.check,r)&&p(n.check,e.check,r)&&p(e.extends,n.extends,r)&&p(n.extends,e.extends,r)&&p(e.then,n.then,r)&&p(e.else,n.else,r);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((l,u)=>p(l,n.args[u],r));case "returnType":return e.t==="returnType"&&p(e.fn,n.fn,r)&&p(n.fn,e.fn,r);case "parameters":return e.t==="parameters"&&p(e.fn,n.fn,r)&&p(n.fn,e.fn,r)}}var Ce=e=>typeof e;function De(e){let n=[];for(let a of e){let i=h(a);if(i.t!=="object")return null;n.push(i);}let r=new Set;for(let a of n)for(let i in a.props)r.add(i);let t={};for(let a of r){let i=[],l=true;for(let u of n){let d=u.props[a];d?(i.push(d.type),d.optional||(l=false)):u.index?.key==="string"&&(i.push(u.index.value),l=false);}t[a]={type:k({of:i}),optional:l};}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:k({of:[o.value,a.index.value]})}:a.index);return o?{t:"object",props:t,index:o}:{t:"object",props:t}}function _e(e,n,r){let t=false;for(let o in n.props)if(!(n.props[o].optional||P(e.props,o))){if(!r.explain)return false;r.explain.out.push({path:[...r.explain.path,o],expected:n.props[o].type,kind:"missing"}),t=true;}if(t)return false;for(let o in n.props){let a=n.props[o],i=P(e.props,o);if(i&&(i.optional&&!a.optional||!re(i.type,a.type,r,o)))return false}if(n.index){for(let o in e.props)if(!re(e.props[o].type,n.index.value,r,o))return false;if(e.index&&!p(e.index.value,n.index.value,r))return false}return true}function qe(e,n,r){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!p(e.returns,n.returns,r))return false;for(let t=0;t<e.params.length;t++){let o=e.params[t];if(o.variadic)break;let a=n.params[t];if(!a){if(o.optional)continue;return false}if(!p(a.type,o.type,r))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!p(e.guard.type,n.guard.type,r)))}function x(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let r=C().maxUnionMembers;if(n.length>r)throw new N(n.length,r);if(n.some(o=>o.t==="any"))return c.any;let t=[];for(let o of n)if(!t.some(a=>T(o,a))){for(let a=t.length-1;a>=0;a--)T(t[a],o)&&t.splice(a,1);t.push(o);}if(t.some(o=>o.t==="literal"&&o.value===true)&&t.some(o=>o.t==="literal"&&o.value===false)){let o=t.filter(a=>!(a.t==="boolean"||a.t==="literal"&&typeof a.value=="boolean"));o.push(c.boolean),t.length=0,t.push(...o);}return t.length===1?t[0]:{t:"union",of:t}}function Ke(e,n){let r=new Set,t=new WeakSet,o=a=>{if(!t.has(a))switch(t.add(a),a.t){case "keyof":r.add("keyof"),o(a.of);break;case "index":r.add("indexed"),o(a.obj),o(a.key);break;case "mapped":r.add("mapped"),o(a.over),o(a.body);break;case "conditional":r.add("conditional"),a.infer?.length&&r.add("infer"),o(a.check),o(a.extends),o(a.then),o(a.else);break;case "returnType":r.add("returnType"),o(a.fn);break;case "parameters":r.add("parameters"),o(a.fn);break;case "tuple":r.add("tuple"),a.flags?.some(i=>i!=="req")&&r.add("variadic"),a.elements.forEach(o);break;case "intersection":r.add("intersection"),a.of.forEach(o);break;case "overload":r.add("overload");for(let i of a.signatures){for(let l of i.params)o(l.type);o(i.returns);}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":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);break;case "apply":n&&a.name===n&&r.add("recursion"),a.args.forEach(o);break}};return o(e),r}var te=e=>typeof e=="string"?c.string:typeof e=="number"?c.number:c.boolean;function oe(e){return e.t==="literal"&&e.fresh?te(e.value):e}function Se(e){if(e.t==="literal")return e.fresh?te(e.value):e;if(e.t==="union"){let n=e.of.map(Se);return n.some((r,t)=>r!==e.of[t])?x(n):e}return e}function Ne(e){return j(e,new WeakSet)}function Qe(e){switch(e.t){case "array":return {t:"array",items:j(e.items,new WeakSet),...e.readonly?{readonly:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>j(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}};case "object":return he(e,new WeakSet);case "fn":case "overload":return j(e,new WeakSet);default:return e}}function j(e,n){if(e.t==="literal")return e.fresh?te(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:j(e.items,n),...e.readonly?{readonly:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(r=>j(r,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}};case "object":return n.add(e),he(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(r=>j(r,n))};case "fn":return n.add(e),{t:"fn",params:e.params.map(r=>({...r,type:j(r.type,n)})),returns:j(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:j(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(r=>j(r,n))};default:return e}}function he(e,n){let r={};for(let o in e.props)r[o]={type:j(e.props[o].type,n),optional:e.props[o].optional};let t=e.index?{key:e.index.key,value:j(e.index.value,n)}:void 0;return t?{t:"object",props:r,index:t}:{t:"object",props:r}}var ge=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Ve(e,n){if(T(n,e))return e;if(T(e,n))return n;let r=ge(e),t=ge(n);return !r||!t||r===t?x([e,n]):null}function v(e,n,r={}){if(e.t==="var"){let t=r[e.name];if(!t)return {...r,[e.name]:n};if(n.t==="any"||n.t==="unknown")return r;let o=Ve(t,n);return o?{...r,[e.name]:o}:r}if(n.t==="any"||n.t==="unknown")return r;switch(e.t){case "array":return n.t==="array"?v(e.items,n.items,r):null;case "tuple":{let t=e,o=q(t);if(o<0){if(n.t!=="tuple"||n.elements.length!==t.elements.length)return null;let f=r;for(let B=0;B<t.elements.length;B++)if(f=v(t.elements[B],n.elements[B],f),f===null)return null;return f}let a=o,i=t.elements.length-o-1,l=G(t,o),u=f=>l==="variadic"?f:f.t==="tuple"?f.elements.length?x(f.elements):c.unknown:f.t==="array"?f.items:f,d=r,m=(f,B)=>{d!==null&&(d=v(f,B,d));};if(n.t==="tuple"){if(n.elements.length<a+i)return null;for(let f=0;f<a;f++)m(t.elements[f],n.elements[f]);for(let f=0;f<i;f++)m(t.elements[o+1+f],n.elements[n.elements.length-i+f]);return d!==null&&(d=v(t.elements[o],u(H(n,a,i)),d)),d}if(n.t==="array"){for(let f=0;f<a;f++)m(t.elements[f],n.items);for(let f=0;f<i;f++)m(t.elements[o+1+f],n.items);return d!==null&&(d=v(t.elements[o],u(n),d)),d}return null}case "object":{if(n.t!=="object")return null;let t=r;for(let o in e.props){let a=e.props[o],i=n.props[o];if(!i){if(a.optional)continue;return null}if(t=v(a.type,i.type,t),t===null)return null}return t}case "fn":{if(n.t!=="fn")return null;let t=v(e.returns,n.returns,r);if(t===null)return null;let o=Math.min(e.params.length,n.params.length);for(let a=0;a<o;a++)if(t=v(e.params[a].type,n.params[a].type,t),t===null)return null;return e.guard&&n.guard&&(t=v(e.guard.type,n.guard.type,t)),t}case "apply":{if(n.t!=="apply"||n.name!==e.name||n.args.length!==e.args.length)return null;let t=r;for(let o=0;o<e.args.length;o++)if(t=v(e.args[o],n.args[o],t),t===null)return null;return t}default:return T(n,e)?r:null}}var xe="@rev",ae=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function I(e,n,r){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===r)return c.var(xe);switch(e.t){case "array":return {t:"array",items:I(e.items,n,r)};case "tuple":return {t:"tuple",elements:e.elements.map(t=>I(t,n,r)),...e.flags?{flags:e.flags}:{}};case "union":return {t:"union",of:e.of.map(t=>I(t,n,r))};case "fn":return {t:"fn",params:e.params.map(t=>({...t,type:I(t.type,n,r)})),returns:I(e.returns,n,r)};case "apply":return {t:"apply",name:e.name,args:e.args.map(t=>I(t,n,r))};case "returnType":return {t:"returnType",fn:I(e.fn,n,r)};case "object":{let t={};for(let o in e.props)t[o]={type:I(e.props[o].type,n,r),optional:e.props[o].optional};return e.index?{t:"object",props:t,index:{key:e.index.key,value:I(e.index.value,n,r)}}:{t:"object",props:t}}default:return e}}function Ye(e,n,r){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let t=e.over.of.name;if(r[t])return null;let o={};for(let a in n.props){let i=I(e.body,t,e.key),l=v(i,n.props[a].type,{})?.[xe];o[a]={type:l?oe(l):c.unknown,optional:n.props[a].optional};}return {...r,[t]:{t:"object",props:o}}}function ve(e,n,r){let t=r;for(let o=0;o<e.length&&o<n.length;o++){let a=e[o].type,i=n[o];if(ae(a)&&i.t==="object"){let l=Ye(a,i,t);l&&(t=l);}}return t}function Ge(e,n){let r={};for(let o=0;o<e.params.length;o++){let a=e.params[o];if(a.variadic){for(let i=o;i<n.length;i++)if(r=v(a.type,n[i],r),r===null)return null;break}if(o>=n.length){if(a.optional)continue;return null}if(!ae(a.type)&&(r=v(a.type,n[o],r),r===null))return null}let t=ve(e.params,n,r);return {returns:s(e.returns,t),bindings:t}}function He(e,n){let r={};for(let t=0;t<e.params.length&&t<n.length;t++){let o=e.params[t];if(ae(o.type))continue;let a=v(o.type,n[t],r);a!==null&&(r=a);}return r=ve(e.params,n,r),{returns:s(e.returns,r),bindings:r}}function $(e,n,r,t,o){if(e.t==="var"&&r.has(e.name)){let a=o.get(e.name);a||o.set(e.name,a={co:[],contra:[]}),(t?a.contra:a.co).push(n);return}if(!(n.t==="any"||n.t==="unknown"))switch(e.t){case "array":n.t==="array"&&$(e.items,n.items,r,t,o);return;case "tuple":{let a=e,i=q(a);if(i<0){n.t==="tuple"&&n.elements.length===a.elements.length&&a.elements.forEach((m,f)=>$(m,n.elements[f],r,t,o));return}let l=i,u=a.elements.length-i-1,d=m=>$(a.elements[i],m,r,t,o);if(n.t==="tuple"){let m=n;if(m.elements.length<l+u)return;for(let f=0;f<l;f++)$(a.elements[f],m.elements[f],r,t,o);for(let f=0;f<u;f++)$(a.elements[i+1+f],m.elements[m.elements.length-u+f],r,t,o);d(H(m,l,u));}else if(n.t==="array"){for(let m=0;m<l;m++)$(a.elements[m],n.items,r,t,o);for(let m=0;m<u;m++)$(a.elements[i+1+m],n.items,r,t,o);d(n);}return}case "fn":n.t==="fn"&&(e.params.forEach((a,i)=>{let l=n.params[i];l&&$(a.type,l.type,r,!t,o);}),$(e.returns,n.returns,r,t,o));return;case "object":if(n.t==="object")for(let a in e.props)n.props[a]&&$(e.props[a].type,n.props[a].type,r,t,o);return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((a,i)=>$(a,n.args[i],r,t,o));return;default:return}}function Je(e,n){if(e.length===1)return e[0];let t=e.flatMap(o=>o.t==="union"?[...o.of]:[o]).filter(o=>e.every(a=>T(o,a,n)));return x(t)}var Ze=e=>e.t==="union"&&e.of.length===0;function Xe(e,n){let r={};for(let[t,{co:o,contra:a}]of e){let i=o.length?x(o):void 0,l=a.length?Je(a,n):void 0,u=i??l;i&&l&&(u=!Ze(i)&&i.t!=="any"&&T(i,l,n)?i:l),u&&(r[t]=u);}return r}function en(e,n={},r=0){if(!e.infer?.length||z(e.check).size>0)return null;let t=new Map;$(e.extends,e.check,new Set(e.infer),false,t);let o=Xe(t,n),a=new WeakSet,i=Z(s(e.extends,o),n,a,r);return T(e.check,i,n)?Z(s(e.then,o),n,a,r):Z(s(e.else,o),n,a,r)}function Z(e,n={},r=new WeakSet,t=0){let o=t,a=C().maxTypeDepth,i=l=>{switch(l.t){case "var":return c.unknown;case "array":return {t:"array",items:i(l.items)};case "tuple":{let u=l.elements.map(i);return l.flags?K(u,l.flags):{t:"tuple",elements:u}}case "union":return {t:"union",of:l.of.map(i)};case "object":{if(r.has(l))return l;r.add(l);let u={};for(let m in l.props){let f=l.props[m];u[m]={type:i(f.type),optional:f.optional};}let d=l.index?{key:l.index.key,value:i(l.index.value)}:void 0;return r.delete(l),d?{t:"object",props:u,index:d}:{t:"object",props:u}}case "fn":{if(r.has(l))return l;r.add(l);let d={t:"fn",params:l.params.map(m=>({...m,type:i(m.type)})),returns:i(l.returns),...l.guard&&{guard:{param:l.guard.param,type:i(l.guard.type)}}};return r.delete(l),d}case "apply":{if(w(l,n)){let u=E(l,n);if(u.t==="conditional"){if(o>=a)throw new L;o++;try{let d=i(u);if(d.t!=="conditional")return d}finally{o--;}}}return {t:"apply",name:l.name,args:l.args.map(i)}}case "conditional":{let u=l.infer?.length?en(l,n,o):V(l,n);return u?i(u):{t:"conditional",check:i(l.check),extends:i(l.extends),then:i(l.then),else:i(l.else),...l.infer?{infer:l.infer}:{}}}case "intersection":return k({of:l.of.map(i)});case "returnType":return h({t:"returnType",fn:i(l.fn)});default:return l}};return i(e)}var nn=c.union([]);function ke(e,n){return ie(e,n,new WeakMap)}function rn(e){return e.reduce(ke,nn)}function ie(e,n,r){if(e.t==="any"||n.t==="any")return c.any;if(e===n)return e;let t=r.get(e)?.get(n);if(t)return t;if(e.t==="object"&&n.t==="object")return tn(e,n,r);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:c.unknown};return be(r,e,n,o),o.items=ie(e.items,n.items,r),o}return x([e,n])}function tn(e,n,r){let t={t:"object",props:{}};be(r,e,n,t);for(let o in e.props){let a=e.props[o],i=n.props[o];if(i){let l=ie(a.type,i.type,r);t.props[o]=a.optional||i.optional?{type:l,optional:true}:{type:l};}else t.props[o]={type:a.type,optional:true};}for(let o in n.props)o in e.props||(t.props[o]={type:n.props[o].type,optional:true});return t}function be(e,n,r,t){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(r,t);}var on=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e);function S(e,n=new WeakSet){switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "var":return 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=S(e.items,n),t=an(e.items)?`(${r})[]`:`${r}[]`;return e.readonly?`readonly ${t}`:t}case "tuple":{let t=`[${e.elements.map((o,a)=>{let i=e.flags?.[a]??"req",l=S(o,n),u=o.t==="union"?`(${l})`:l;return i==="rest"?`...${u}[]`:i==="variadic"?`...${l}`:i==="optional"?`${u}?`:l}).join(", ")}]`;return e.readonly?`readonly ${t}`:t}case "union":{if(n.has(e))return "\u2026";n.add(e);let r=e.of.length===0?"never":e.of.map(t=>S(t,n)).join(" | ");return n.delete(e),r}case "object":{if(n.has(e))return "\u2026";n.add(e);let r=Object.entries(e.props).map(([t,o])=>`${on(t)?t:JSON.stringify(t)}${o.optional?"?":""}: ${S(o.type,n)}`);return e.index&&r.push(`[k: ${e.index.key}]: ${S(e.index.value,n)}`),n.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(n.has(e))return "\u2026";n.add(e);let r=e.params.map(o=>{let a=o.variadic?"...":"",i=o.optional&&!o.variadic?"?":"";return `${a}${o.name}${i}: ${S(o.type,n)}`}).join(", "),t=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${S(e.guard.type,n)}`:S(e.returns,n);return n.delete(e),`(${r}) => ${t}`}case "apply":{if(n.has(e))return "\u2026";n.add(e);let r=e.args.length===0?e.name:`${e.name}<${e.args.map(t=>S(t,n)).join(", ")}>`;return n.delete(e),r}case "overload":{if(n.has(e))return "\u2026";n.add(e);let r=e.signatures.map(t=>S(t,n)).join(" & ");return n.delete(e),r}case "keyof":return `keyof ${S(e.of,n)}`;case "index":return `${S(e.obj,n)}[${S(e.key,n)}]`;case "mapped":{if(n.has(e))return "\u2026";n.add(e);let r=e.optional?"?":"",t=`{ [${e.key} in ${S(e.over,n)}]${r}: ${S(e.body,n)} }`;return n.delete(e),t}case "conditional":{if(n.has(e))return "\u2026";n.add(e);let r=`${S(e.check,n)} extends ${S(e.extends,n)} ? ${S(e.then,n)} : ${S(e.else,n)}`;return n.delete(e),r}case "intersection":return e.of.map(r=>r.t==="union"&&r.of.length>0?`(${S(r,n)})`:S(r,n)).join(" & ");case "returnType":return `ReturnType<${S(e.fn,n)}>`;case "parameters":return `Parameters<${S(e.fn,n)}>`}}function an(e){return e.t==="union"&&e.of.length>0||e.t==="fn"}function ln(e){if(e.length===0)return "value";let n=e[e.length-1];if(/^\d+$/.test(n)){let r=e.slice(0,-1);return r.length?`property '${r.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function un(e){let n=e.filter(r=>r.kind==="missing");if(n.length&&n.length===e.length){let r=n.map(t=>`'${t.path.join(".")}'`).join(", ");return n.length===1?`property ${r} is missing`:`properties ${r} are missing`}return e.map(r=>`${ln(r.path)}: expected '${S(r.expected)}', got '${S(r.actual)}'`).join("; ")}function W(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),W(F(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(r=>W(F(r).type,n)));case "object":{if(n.has(e))return true;n.add(e);let r=Object.values(e.props).every(o=>W(F(o.type).type,n)),t=!e.index||W(F(e.index.value).type,n);return r&&t}case "union":return n.has(e)?true:(n.add(e),e.of.every(r=>W(r,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(r=>W(r,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":return false}}function pn(e,n,r={}){let t=e;for(let o of n){let a=_(t,o,r);if(a===null)return null;t=a;}return {type:t,completions:Y(t,r)}}var fn=e=>e==="[]"||/^\d+$/.test(e);function _(e,n,r,t=new Set){if(e.t==="var")return e.bound?_(O(e,r),n,r,t):null;if(w(e,r)){let a=g(e);if(t.has(a))return null;t.add(a);let i=_(E(e,r),n,r,t);return t.delete(a),i}let o=h(e);if(o!==e)return _(o,n,r,t);switch(e.t){case "any":return e;case "object":{let a=P(e.props,n);return a?a.optional?x([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return fn(n)?e.items:null;case "tuple":{let a=e.flags?.findIndex(u=>u!=="req")??-1,i=Number(n);if(!(Number.isInteger(i)&&i>=0))return null;if(a<0)return i<e.elements.length?e.elements[i]:null;if(i<a)return e.elements[i];let l=e.elements.slice(a);return l.length?x(l):null}case "union":{let a=e.of.map(i=>_(i,n,r,t)).filter(i=>i!==null);return a.length?x(a):null}case "intersection":{let a=e.of.map(i=>_(i,n,r,t)).filter(i=>i!==null);return a.length?k({of:a}):null}default:return null}}function Y(e,n,r=new WeakSet,t=new Set){if(e.t==="var")return e.bound?Y(O(e,n),n,r,t):[];if(w(e,n)){let a=g(e);if(t.has(a))return [];t.add(a);let i=Y(E(e,n),n,r,t);return t.delete(a),i}let o=h(e);if(o!==e)return Y(o,n,r,t);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(r.has(e))return [];r.add(e);let a=[],i=new Set;for(let l of e.of)for(let u of Y(l,n,r,t))i.has(u.key)||(i.add(u.key),a.push(u));return r.delete(e),a}default:return []}}export{J as DEFAULT_TYPE_LIMITS,Be as TYPE_EVAL_DEPTH_LIMIT,L as TypeEvalLimitError,N as UnionTooComplexError,O as apparentType,Fe as configureTypeLimits,pn as discover,Ue as equals,E as expand1,G as flagAt,S as format,un as formatTypeDiff,Z as groundVars,Ge as instantiate,He as instantiateLoose,w as isScheme,W as isSerializable,Oe as isVariadicTuple,ke as join,rn as joinAll,K as normalizeTuple,x as normalizeUnion,P as ownProp,ze as resetTypeLimits,A as resolveOp,h as resolveTypeOp,q as restIndex,c as s,H as sliceTuple,s as substitute,T as subtype,Re as typeDiff,Ke as typeFeatures,C as typeLimits,v as unify,oe as widen,Qe as widenInferred,Se as widenLiteral,Ne as widenType,F as withoutUndefined};
|
|
1
|
+
var M=e=>Object.freeze(e),s={any:M({t:"any"}),unknown:M({t:"unknown"}),string:M({t:"string"}),number:M({t:"number"}),boolean:M({t:"boolean"}),null:M({t:"null"}),undefined:M({t:"undefined"}),void:M({t:"void"}),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,r)=>({t:"tuple",elements:e,...n&&n.some(t=>t!=="req")?{flags:n}:{},...r?{readonly:true}:{}}),fn:(e,n,r)=>({t:"fn",params:e,returns:n,...r?.length?{typeParams:r}:{}}),guard:(e,n,r=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:r,type:n}}),overload:e=>({t:"overload",signatures:e}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,r,t=false)=>({t:"mapped",key:e,over:n,body:r,optional:t}),conditional:(e,n,r,t,o)=>({t:"conditional",check:e,extends:n,then:r,else:t,...o&&o.length?{infer:o}:{}}),intersection:e=>({t:"intersection",of:e}),and:(e,n)=>({t:"intersection",of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n,r)=>({t:"var",name:e,bound:n,isConst:r}),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=[];for(let r of e)r.t==="union"?n.push(...r.of):n.push(r);return {t:"union",of:n}}};function h(e){return e.t==="keyof"?fe(e.of)??e:e.t==="index"?ee(e.obj,e.key)??e:e.t==="returnType"?je(e.fn)??e:e.t==="parameters"?Ee(e.fn)??e:e}var le={t:"union",of:[]},Te=e=>e.t==="union"&&e.of.length===0;function je(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function we(e){if(e.t==="undefined")return e;let n=e.t==="union"?e.of:[e];return n.some(r=>r.t==="undefined")?e:{t:"union",of:[...n,{t:"undefined"}]}}function Ee(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 r=[],t=[];for(let o of n.params)o.variadic?(r.push(o.type.t==="array"?o.type.items:o.type),t.push("rest")):o.optional?(r.push(we(o.type)),t.push("optional")):(r.push(o.type),t.push("req"));return s.tuple(r,t)}var ue=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function pe(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 b(e){let n=[],r=o=>{let i=h(o);i.t==="intersection"?i.of.forEach(r):n.push(i);};e.of.forEach(r);let t=[];for(let o of n){if(o.t==="any")return s.any;if(Te(o))return le;if(o.t!=="unknown"){if(ue(o)){let i=false;for(let a=t.length-1;a>=0;a--){let l=t[a];if(ue(l)){if(pe(l,o)){i=true;break}if(pe(o,l))t.splice(a,1);else return le}}if(i)continue}else if(t.some(i=>i===o))continue;t.push(o);}}return t.length===0?s.unknown:t.length===1?t[0]:{t:"intersection",of:t}}function fe(e){if(e.t==="union"){let r=e.of.map(fe);return r.some(t=>t===null)?null:$e(r)}if(e.t!=="object")return null;let n=Object.keys(e.props).map(r=>s.literal(r));return e.index&&n.push(e.index.key==="number"?s.number:s.string),n.length===0?{t:"union",of:[]}:n.length===1?n[0]:{t:"union",of:n}}function $e(e){let n=i=>i.t==="literal"&&typeof i.value=="string"?[i.value]:i.t==="union"?i.of.flatMap(n):[],r=e.filter(i=>i.t!=="string"&&i.t!=="number").map(n);if(r.length===0)return e[0];let t=r[0].filter(i=>r.every(a=>a.includes(i))),o=[...new Set(t)].map(i=>s.literal(i));return o.length===0?{t:"union",of:[]}:o.length===1?o[0]:{t:"union",of:o}}function ee(e,n){if(e=h(e),n=h(n),n.t==="union"){let r=n.of.map(t=>ee(e,t));return r.some(t=>t===null)?null:{t:"union",of:r}}if(e.t==="intersection"){let r=[];for(let t of e.of){let o=ee(h(t),n);if(o===null)return null;o.t!=="undefined"&&r.push(o);}return r.length===0?s.undefined:r.length===1?r[0]:b({of:r})}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let r=P(e.props,String(n.value));return r?r.optional?{t:"union",of:[r.type,{t:"undefined"}]}:r.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:s.undefined}if(e.index?.key==="string"&&n.t==="string"||e.index?.key==="number"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number"))return e.index.value}if(e.t==="tuple"){let r=e.flags?.findIndex(t=>t!=="req")??-1;if(r>=0){if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]??s.undefined:e.elements.length?{t:"union",of:e.elements.slice(r)}:s.undefined;if(n.t==="number")return e.elements.length?{t:"union",of:e.elements}:s.undefined}else {if(n.t==="literal"&&typeof n.value=="number")return e.elements[n.value]??s.undefined;if(n.t==="number")return e.elements.length?{t:"union",of:e.elements}:s.undefined}}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:null}var Ie=Object.prototype.hasOwnProperty,P=(e,n)=>Ie.call(e,n)?e[n]:void 0;function L(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(r=>r.t!=="undefined");return {type:n.length===1?n[0]:{t:"union",of:n},hadUndefined:true}}return {type:e,hadUndefined:false}}var G=(e,n)=>e.flags?.[n]??"req",se=e=>e==="rest"||e==="variadic",Oe=e=>!!e.flags?.some(se),q=e=>e.flags?.findIndex(se)??-1,Me=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(r=>r!=="req");return n<0?e.elements.length:n};function K(e,n){let r=[],t=[],o=(i,a)=>{r.push(i),t.push(a);};for(let i=0;i<e.length;i++){let a=e[i],l=n[i]??"req";if(l!=="variadic"){o(a,l);continue}if(a.t==="tuple"){let c=a;for(let u=0;u<c.elements.length;u++)o(c.elements[u],G(c,u));}else a.t==="array"?o(a.items,"rest"):a.t==="any"?o(a,"rest"):o(a,"variadic");}return s.tuple(r,t)}function ce(e){let n=q(e);return n<0?{prefix:e.elements,rest:null,suffix:[]}:{prefix:e.elements.slice(0,n),rest:e.elements[n],suffix:e.elements.slice(n+1)}}function de(e,n,r){let t=ce(e),o=ce(n);if(o.rest===null){if(t.rest!==null)return false;let i=Me(n);return e.elements.length<i||e.elements.length>n.elements.length?false:e.elements.every((a,l)=>r(a,n.elements[l]))}if(t.rest===null){let i=t.prefix;if(i.length<o.prefix.length+o.suffix.length)return false;for(let a=0;a<o.prefix.length;a++)if(!r(i[a],o.prefix[a]))return false;for(let a=0;a<o.suffix.length;a++)if(!r(i[i.length-o.suffix.length+a],o.suffix[a]))return false;for(let a=o.prefix.length;a<i.length-o.suffix.length;a++)if(!r(i[a],o.rest))return false;return true}if(t.prefix.length>=o.prefix.length&&t.suffix.length>=o.suffix.length){for(let i=0;i<o.prefix.length;i++)if(!r(t.prefix[i],o.prefix[i]))return false;for(let i=o.prefix.length;i<t.prefix.length;i++)if(!r(t.prefix[i],o.rest))return false;if(!r(t.rest,o.rest))return false;for(let i=0;i<o.suffix.length;i++)if(!r(t.suffix[t.suffix.length-o.suffix.length+i],o.suffix[i]))return false;for(let i=0;i<t.suffix.length-o.suffix.length;i++)if(!r(t.suffix[i],o.rest))return false;return true}return false}function H(e,n,r){if(e.t==="array")return e;if(e.t==="tuple"){let t=e,o=t.elements.length,i=t.elements.slice(n,o-r),a=(t.flags??t.elements.map(()=>"req")).slice(n,o-r);return s.tuple(i,a)}return s.tuple([])}function m(e,n,r=new WeakSet){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!Le(F(e),n))return e;switch(e.t){case "var":{let t=n[e.name];return t||(e.bound?{t:"var",name:e.name,bound:m(e.bound,n,r)}:e)}case "array":return {t:"array",items:m(e.items,n,r)};case "tuple":{let t=e.elements.map(o=>m(o,n,r));return e.flags?K(t,e.flags):{t:"tuple",elements:t}}case "union":return {t:"union",of:e.of.map(t=>m(t,n,r))};case "object":{if(r.has(e))return e;r.add(e);let t={};for(let i in e.props){let a=e.props[i];t[i]={type:m(a.type,n,r),optional:a.optional};}let o=e.index?{key:e.index.key,value:m(e.index.value,n,r)}:void 0;return r.delete(e),o?{t:"object",props:t,index:o}:{t:"object",props:t}}case "fn":{if(r.has(e))return e;r.add(e);let o={t:"fn",params:e.params.map(i=>({...i,type:m(i.type,n,r)})),returns:m(e.returns,n,r),...e.guard&&{guard:{param:e.guard.param,type:m(e.guard.type,n,r)}}};return r.delete(e),o}case "apply":return {t:"apply",name:e.name,args:e.args.map(t=>m(t,n,r))};case "keyof":return h({t:"keyof",of:m(e.of,n,r)});case "index":return h({t:"index",obj:m(e.obj,n,r),key:m(e.key,n,r)});case "mapped":{let t={};for(let i in n)i!==e.key&&(t[i]=n[i]);let o={t:"mapped",key:e.key,over:m(e.over,n,r),body:m(e.body,t,r),optional:e.optional};return z(o)??o}case "conditional":{if(e.check.t==="var"){let o=e.check.name,i=n[o],a=i?h(i):void 0,l=a?.t==="union"?a.of:a?.t==="boolean"?[s.literal(true),s.literal(false)]:null;if(l)return {t:"union",of:l.map(c=>m(e,{...n,[o]:c},r))}}let t=e.infer?.length?Object.fromEntries(Object.entries(n).filter(([o])=>!e.infer.includes(o))):n;return {t:"conditional",check:m(e.check,n,r),extends:m(e.extends,t,r),then:m(e.then,t,r),else:m(e.else,t,r),...e.infer?{infer:e.infer}:{}}}case "intersection":return b({of:e.of.map(t=>m(t,n,r))});case "returnType":return h({t:"returnType",fn:m(e.fn,n,r)});case "parameters":return h({t:"parameters",fn:m(e.fn,n,r)});default:return e}}var Pe=new Set,me=new WeakMap;function F(e){let n=me.get(e);if(n)return n;let r=new Set;y(e,r,new WeakSet);let t=r.size===0?Pe:r;return me.set(e,t),t}function y(e,n,r){switch(e.t){case "var":n.add(e.name),e.bound&&y(e.bound,n,r);return;case "array":y(e.items,n,r);return;case "tuple":for(let t of e.elements)y(t,n,r);return;case "union":for(let t of e.of)y(t,n,r);return;case "object":if(r.has(e))return;r.add(e);for(let t in e.props)y(e.props[t].type,n,r);e.index&&y(e.index.value,n,r);return;case "fn":if(r.has(e))return;r.add(e);for(let t of e.params)y(t.type,n,r);y(e.returns,n,r),e.guard&&y(e.guard.type,n,r);return;case "overload":for(let t of e.signatures){for(let o of t.params)y(o.type,n,r);y(t.returns,n,r);}return;case "apply":for(let t of e.args)y(t,n,r);return;case "keyof":y(e.of,n,r);return;case "index":y(e.obj,n,r),y(e.key,n,r);return;case "mapped":y(e.over,n,r),y(e.body,n,r);return;case "conditional":{if(y(e.check,n,r),!e.infer?.length){y(e.extends,n,r),y(e.then,n,r),y(e.else,n,r);return}let t=new Set;y(e.extends,t,r),y(e.then,t,r),y(e.else,t,r);for(let o of t)e.infer.includes(o)||n.add(o);return}case "intersection":for(let t of e.of)y(t,n,r);return;case "returnType":case "parameters":y(e.fn,n,r);return;default:return}}function Le(e,n){if(e.size===0)return false;for(let r of e)if(r in n)return true;return false}function z(e){let n=h(e.over);if(n.t==="string"||n.t==="number")return {t:"object",props:{},index:{key:n.t,value:m(e.body,{[e.key]:n})}};let r=We(n);if(r===null)return null;let t={};for(let o of r)t[o]={type:m(e.body,{[e.key]:s.literal(o)}),optional:e.optional};return {t:"object",props:t}}function We(e){if(e.t==="literal"&&typeof e.value=="string")return [e.value];if(e.t==="union"){let n=[];for(let r of e.of)if(r.t==="literal"&&typeof r.value=="string")n.push(r.value);else return null;return n}return null}function w(e,n){if(e.t!=="apply")return false;let r=n[e.name];return r!==void 0&&r.params.length===e.args.length}function E(e,n){if(e.t!=="apply")return e;let r=n[e.name];if(!r||r.params.length!==e.args.length)return e;let t={};return r.params.forEach((o,i)=>t[o]=e.args[i]),m(r.body,t)}function g(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(t=>`${t}${e.props[t].optional?"?":""}:${g(e.props[t].type)}`).join(","),r=e.index?`,[${e.index.key}]:${g(e.index.value)}`:"";return `{${n}${r}}`}case "array":return `[${g(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(g).join(",")})`;case "union":return `(${e.of.map(g).sort().join("|")})`;case "fn":return `(${e.params.map(n=>g(n.type)).join(",")})=>${e.guard?`is${e.guard.param}:${g(e.guard.type)}`:g(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(g).join(",")}>`;case "intersection":return `&(${e.of.map(g).sort().join("&")})`;case "returnType":return `RT<${g(e.fn)}>`;default:return e.t}}var ye=50;function I(e,n={},r=0){if(r>ye)return e;if(e.t==="var")return e.bound?I(e.bound,n,r+1):e;if(w(e,n))return I(E(e,n),n,r+1);if(e.t==="mapped"){let t=z(e);if(t)return I(t,n,r+1)}if(e.t==="intersection")return b(e);if(e.t==="union"){let t=e.of.map(o=>I(o,n,r+1));return t.some((o,i)=>o!==e.of[i])?{t:"union",of:t}:e}return e}function R(e,n,r=0){if(r>ye)return e;let t=A(e,n);if(t!==e)return R(t,n,r+1);let o=I(e,n,r);return o===e?e:R(o,n,r+1)}function A(e,n={}){let r=h(e);if(r!==e)return r;switch(e.t){case "keyof":{let t=R(e.of,n);return t===e.of?e:h({...e,of:t})}case "index":{let t=R(e.obj,n),o=R(e.key,n);return t===e.obj&&o===e.key?e:h({...e,obj:t,key:o})}case "returnType":{let t=R(e.fn,n);return t===e.fn?e:h({...e,fn:t})}default:return e}}var Ue=1e3,J={maxTypeDepth:1e3,maxUnionMembers:1e3,maxOverloadSignatures:200},Q=J;function Be(e){Q={...J,...e};}function Fe(){Q=J;}function C(){return Q}var W=class extends Error{constructor(n=Q.maxTypeDepth){super(`type evaluation exceeded the depth limit (${n}) \u2014 the type is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},N=class extends Error{constructor(n,r=Q.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${r})`),this.name="UnionTooComplexError";}};var re=(e,n)=>({seen:new WeakMap,exp:new Set,schemes:e,depth:0,assumed:0,explain:n});function x(e,n,r){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:r,kind:"type"}),false}function ze(e,n,r={}){let t=[];return !p(e,n,re(r,{path:[],out:t}))&&t.length===0&&t.push({path:[],actual:e,expected:n,kind:"type"}),t}var ne=new WeakMap;function T(e,n,r={}){if(e===n)return true;if(Object.keys(r).length>0)return p(e,n,re(r));let t=ne.get(e)?.get(n);if(t!==void 0)return t;let o=p(e,n,re(r)),i=ne.get(e);return i||ne.set(e,i=new WeakMap),i.set(n,o),o}function Re(e,n,r={}){return T(e,n,r)&&T(n,e,r)}function V(e,n){return e.infer?.length||F(e.check).size>0||F(e.extends).size>0?null:T(e.check,e.extends,n)?e.then:e.else}function D(e,n,r=0){if(r>50)return e;let t=A(e,n.schemes);if(t!==e)return D(t,n,r+1);if(e.t==="conditional"){let o=V(e,n.schemes);if(o)return D(o,n,r+1)}return w(e,n.schemes)?D(E(e,n.schemes),n,r+1):e.t==="union"?v(e.of.map(o=>D(o,n,r+1))):e}function Z(e,n,r,t){if(!r.explain)return p(e,n,r);r.explain.path.push(t);try{return p(e,n,r)}finally{r.explain.path.pop();}}function p(e,n,r){if(r.depth>=C().maxTypeDepth)throw new W;r.depth++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return x(r,e,n);let t=A(e,r.schemes);if(t!==e)return p(t,n,r);let o=A(n,r.schemes);if(o!==n)return p(e,o,r);if(e.t==="mapped"){let u=z({...e,over:D(e.over,r)});if(u)return p(u,n,r)}if(n.t==="mapped"){let u=z({...n,over:D(n.over,r)});if(u)return p(e,u,r)}if(e.t==="conditional"){let u=V(e,r.schemes);if(u)return p(u,n,r)}if(n.t==="conditional"){let u=V(n,r.schemes);if(u)return p(e,u,r)}if(n.t==="intersection"){let u=b(n);return u.t!=="intersection"?p(e,u,r):u.of.every(d=>p(e,d,r))}if(e.t==="intersection"){let u=b(e);if(u.t!=="intersection")return p(u,n,r);if(u.of.some(d=>p(d,n,r)))return !0;if(n.t==="object"){let d=De(u.of);if(d)return p(d,n,r)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(w(e,r.schemes)||w(n,r.schemes))){let u=`${g(e)}\u2264${g(n)}`;if(r.exp.has(u))return !0;r.exp.add(u);let d=p(E(e,r.schemes),E(n,r.schemes),r);return r.exp.delete(u),d}let a=r.seen.get(e);if(a?.has(n))return r.assumed++,!0;a||(a=new WeakSet,r.seen.set(e,a)),a.add(n);let l=r.assumed,c=Ae(e,n,r);return (!c||r.assumed!==l)&&a.delete(n),c}finally{r.depth--;}}function Ae(e,n,r){if(e.t==="union")return e.of.every(t=>p(t,n,r));if(e.t==="boolean"&&n.t==="union")return p(s.literal(true),n,r)&&p(s.literal(false),n,r);if(n.t==="union")return _e(e,n,r);if(n.t==="overload")return n.signatures.every(t=>p(e,t,r));if(e.t==="overload")return e.signatures.some(t=>p(t,n,r));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:x(r,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Ce(e.value)===n.t?true:x(r,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:x(r,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?x(r,e,n):p(e.items,n.items,r):e.t==="tuple"?e.readonly&&!n.readonly?x(r,e,n):e.elements.every((t,o)=>Z(t,n.items,r,String(o))):x(r,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return x(r,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return x(r,e,n);for(let t=0;t<e.elements.length;t++)if(!Z(e.elements[t],n.elements[t],r,String(t)))return false;return true}return de(e,n,(t,o)=>p(t,o,r))}case "object":return e.t==="object"?Ke(e,n,r):Object.keys(n.props).length===0&&!n.index?e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:x(r,e,n):e.t==="array"&&n.index&&Object.values(n.props).every(t=>t.optional)&&p(e.items,n.index.value,r)?true:x(r,e,n);case "fn":return e.t==="fn"?Ne(e,n,r):x(r,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((t,o)=>t===n.path[o]);case "keyof":return e.t==="keyof"&&p(e.of,n.of,r)&&p(n.of,e.of,r);case "index":return e.t==="index"&&p(e.obj,n.obj,r)&&p(n.obj,e.obj,r)&&p(e.key,n.key,r)&&p(n.key,e.key,r);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&p(e.over,n.over,r)&&p(n.over,e.over,r)&&p(e.body,n.body,r)&&p(n.body,e.body,r);case "conditional":return e.t==="conditional"&&p(e.check,n.check,r)&&p(n.check,e.check,r)&&p(e.extends,n.extends,r)&&p(n.extends,e.extends,r)&&p(e.then,n.then,r)&&p(e.else,n.else,r);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((t,o)=>p(t,n.args[o],r));case "returnType":return e.t==="returnType"&&p(e.fn,n.fn,r)&&p(n.fn,e.fn,r);case "parameters":return e.t==="parameters"&&p(e.fn,n.fn,r)&&p(n.fn,e.fn,r)}}var Ce=e=>typeof e;function De(e){let n=[];for(let i of e){let a=h(i);if(a.t!=="object")return null;n.push(a);}let r=new Set;for(let i of n)for(let a in i.props)r.add(a);let t={};for(let i of r){let a=[],l=true;for(let c of n){let u=c.props[i];u?(a.push(u.type),u.optional||(l=false)):c.index?.key==="string"&&(a.push(c.index.value),l=false);}t[i]={type:b({of:a}),optional:l};}let o;for(let i of n)i.index&&(o=o?{key:o.key,value:b({of:[o.value,i.index.value]})}:i.index);return o?{t:"object",props:t,index:o}:{t:"object",props:t}}function _e(e,n,r){let t=r.explain;if(!t)return n.of.some(a=>p(e,a,r));r.explain=void 0;let o;try{o=n.of.some(a=>p(e,a,r));}finally{r.explain=t;}if(o)return true;let i=qe(e,n,r);return i?p(e,i,r):x(r,e,n)}function qe(e,n,r){if(e.t!=="object")return null;let t=n.of.map(o=>I(o,r.schemes));for(let o in e.props){let i=e.props[o].type;if(i.t!=="literal")continue;let a=r.explain;r.explain=void 0;let l;try{l=n.of.filter((c,u)=>{let d=t[u];if(d.t!=="object")return !1;let f=P(d.props,o);return !!f&&p(i,f.type,r)});}finally{r.explain=a;}if(l.length===1)return l[0]}return null}function Ke(e,n,r){let t=false;for(let o in n.props)if(!(n.props[o].optional||P(e.props,o))){if(!r.explain)return false;r.explain.out.push({path:[...r.explain.path,o],expected:n.props[o].type,kind:"missing"}),t=true;}if(t)return false;for(let o in n.props){let i=n.props[o],a=P(e.props,o);if(!a)continue;if(a.optional&&!i.optional)return false;let l=i.optional?L(a.type).type:a.type;if(!Z(l,i.type,r,o))return false}if(n.index){for(let o in e.props)if(!Z(e.props[o].type,n.index.value,r,o))return false;if(e.index&&!p(e.index.value,n.index.value,r))return false}return true}function Ne(e,n,r){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!p(e.returns,n.returns,r))return false;for(let t=0;t<e.params.length;t++){let o=e.params[t];if(o.variadic)break;let i=n.params[t];if(!i){if(o.optional)continue;return false}if(!p(i.type,o.type,r))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!p(e.guard.type,n.guard.type,r)))}function v(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let r=C().maxUnionMembers;if(n.length>r)throw new N(n.length,r);if(n.some(o=>o.t==="any"))return s.any;let t=[];for(let o of n)if(!t.some(i=>T(o,i))){for(let i=t.length-1;i>=0;i--)T(t[i],o)&&t.splice(i,1);t.push(o);}if(t.some(o=>o.t==="literal"&&o.value===true)&&t.some(o=>o.t==="literal"&&o.value===false)){let o=t.filter(i=>!(i.t==="boolean"||i.t==="literal"&&typeof i.value=="boolean"));o.push(s.boolean),t.length=0,t.push(...o);}return t.length===1?t[0]:{t:"union",of:t}}function Qe(e,n){let r=new Set,t=new WeakSet,o=i=>{if(!t.has(i))switch(t.add(i),i.t){case "keyof":r.add("keyof"),o(i.of);break;case "index":r.add("indexed"),o(i.obj),o(i.key);break;case "mapped":r.add("mapped"),o(i.over),o(i.body);break;case "conditional":r.add("conditional"),i.infer?.length&&r.add("infer"),o(i.check),o(i.extends),o(i.then),o(i.else);break;case "returnType":r.add("returnType"),o(i.fn);break;case "parameters":r.add("parameters"),o(i.fn);break;case "tuple":r.add("tuple"),i.flags?.some(a=>a!=="req")&&r.add("variadic"),i.elements.forEach(o);break;case "intersection":r.add("intersection"),i.of.forEach(o);break;case "overload":r.add("overload");for(let a of i.signatures){for(let l of a.params)o(l.type);o(a.returns);}break;case "object":for(let a in i.props)o(i.props[a].type);i.index&&o(i.index.value);break;case "array":o(i.items);break;case "union":i.of.forEach(o);break;case "fn":for(let a of i.params)o(a.type);o(i.returns),i.guard&&o(i.guard.type);break;case "var":i.bound&&o(i.bound);break;case "apply":n&&i.name===n&&r.add("recursion"),i.args.forEach(o);break}};return o(e),r}var te=e=>typeof e=="string"?s.string:typeof e=="number"?s.number:s.boolean;function oe(e){return e.t==="literal"&&e.fresh?te(e.value):e}function Se(e){if(e.t==="literal")return e.fresh?te(e.value):e;if(e.t==="union"){let n=e.of.map(Se);return n.some((r,t)=>r!==e.of[t])?v(n):e}return e}function Ve(e){return j(e,new WeakSet)}function Ye(e){switch(e.t){case "array":return {t:"array",items:j(e.items,new WeakSet),...e.readonly?{readonly:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>j(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}};case "object":return he(e,new WeakSet);case "fn":case "overload":return j(e,new WeakSet);default:return e}}function j(e,n){if(e.t==="literal")return e.fresh?te(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:j(e.items,n),...e.readonly?{readonly:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(r=>j(r,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}};case "object":return n.add(e),he(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(r=>j(r,n))};case "fn":return n.add(e),{t:"fn",params:e.params.map(r=>({...r,type:j(r.type,n)})),returns:j(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:j(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(r=>j(r,n))};default:return e}}function he(e,n){let r={};for(let o in e.props)r[o]={type:j(e.props[o].type,n),optional:e.props[o].optional};let t=e.index?{key:e.index.key,value:j(e.index.value,n)}:void 0;return t?{t:"object",props:r,index:t}:{t:"object",props:r}}var ge=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Ge(e,n){if(T(n,e))return e;if(T(e,n))return n;let r=ge(e),t=ge(n);return !r||!t||r===t?v([e,n]):null}function k(e,n,r={}){if(e.t==="var"){let t=r[e.name];if(!t)return {...r,[e.name]:n};if(n.t==="any"||n.t==="unknown")return r;let o=Ge(t,n);return o?{...r,[e.name]:o}:r}if(n.t==="any"||n.t==="unknown")return r;switch(e.t){case "array":return n.t==="array"?k(e.items,n.items,r):null;case "tuple":{let t=e,o=q(t);if(o<0){if(n.t!=="tuple"||n.elements.length!==t.elements.length)return null;let f=r;for(let B=0;B<t.elements.length;B++)if(f=k(t.elements[B],n.elements[B],f),f===null)return null;return f}let i=o,a=t.elements.length-o-1,l=G(t,o),c=f=>l==="variadic"?f:f.t==="tuple"?f.elements.length?v(f.elements):s.unknown:f.t==="array"?f.items:f,u=r,d=(f,B)=>{u!==null&&(u=k(f,B,u));};if(n.t==="tuple"){if(n.elements.length<i+a)return null;for(let f=0;f<i;f++)d(t.elements[f],n.elements[f]);for(let f=0;f<a;f++)d(t.elements[o+1+f],n.elements[n.elements.length-a+f]);return u!==null&&(u=k(t.elements[o],c(H(n,i,a)),u)),u}if(n.t==="array"){for(let f=0;f<i;f++)d(t.elements[f],n.items);for(let f=0;f<a;f++)d(t.elements[o+1+f],n.items);return u!==null&&(u=k(t.elements[o],c(n),u)),u}return null}case "object":{if(n.t!=="object")return null;let t=r;for(let o in e.props){let i=e.props[o],a=n.props[o];if(!a){if(i.optional)continue;return null}if(t=k(i.type,a.type,t),t===null)return null}return t}case "fn":{if(n.t!=="fn")return null;let t=k(e.returns,n.returns,r);if(t===null)return null;let o=Math.min(e.params.length,n.params.length);for(let i=0;i<o;i++)if(t=k(e.params[i].type,n.params[i].type,t),t===null)return null;return e.guard&&n.guard&&(t=k(e.guard.type,n.guard.type,t)),t}case "apply":{if(n.t!=="apply"||n.name!==e.name||n.args.length!==e.args.length)return null;let t=r;for(let o=0;o<e.args.length;o++)if(t=k(e.args[o],n.args[o],t),t===null)return null;return t}default:return T(n,e)?r:null}}var xe="@rev",ie=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function O(e,n,r){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===r)return s.var(xe);switch(e.t){case "array":return {t:"array",items:O(e.items,n,r)};case "tuple":return {t:"tuple",elements:e.elements.map(t=>O(t,n,r)),...e.flags?{flags:e.flags}:{}};case "union":return {t:"union",of:e.of.map(t=>O(t,n,r))};case "fn":return {t:"fn",params:e.params.map(t=>({...t,type:O(t.type,n,r)})),returns:O(e.returns,n,r)};case "apply":return {t:"apply",name:e.name,args:e.args.map(t=>O(t,n,r))};case "returnType":return {t:"returnType",fn:O(e.fn,n,r)};case "object":{let t={};for(let o in e.props)t[o]={type:O(e.props[o].type,n,r),optional:e.props[o].optional};return e.index?{t:"object",props:t,index:{key:e.index.key,value:O(e.index.value,n,r)}}:{t:"object",props:t}}default:return e}}function He(e,n,r){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let t=e.over.of.name;if(r[t])return null;let o={};for(let i in n.props){let a=O(e.body,t,e.key),l=k(a,n.props[i].type,{})?.[xe];o[i]={type:l?oe(l):s.unknown,optional:n.props[i].optional};}return {...r,[t]:{t:"object",props:o}}}function ve(e,n,r){let t=r;for(let o=0;o<e.length&&o<n.length;o++){let i=e[o].type,a=n[o];if(ie(i)&&a.t==="object"){let l=He(i,a,t);l&&(t=l);}}return t}function Je(e,n){let r={};for(let o=0;o<e.params.length;o++){let i=e.params[o];if(i.variadic){for(let a=o;a<n.length;a++)if(r=k(i.type,n[a],r),r===null)return null;break}if(o>=n.length){if(i.optional)continue;return null}if(!ie(i.type)&&(r=k(i.type,n[o],r),r===null))return null}let t=ve(e.params,n,r);return {returns:m(e.returns,t),bindings:t}}function Ze(e,n){let r={};for(let t=0;t<e.params.length&&t<n.length;t++){let o=e.params[t];if(ie(o.type))continue;let i=k(o.type,n[t],r);i!==null&&(r=i);}return r=ve(e.params,n,r),{returns:m(e.returns,r),bindings:r}}function $(e,n,r,t,o){if(e.t==="var"&&r.has(e.name)){let i=o.get(e.name);i||o.set(e.name,i={co:[],contra:[]}),(t?i.contra:i.co).push(n);return}if(!(n.t==="any"||n.t==="unknown"))switch(e.t){case "array":n.t==="array"&&$(e.items,n.items,r,t,o);return;case "tuple":{let i=e,a=q(i);if(a<0){n.t==="tuple"&&n.elements.length===i.elements.length&&i.elements.forEach((d,f)=>$(d,n.elements[f],r,t,o));return}let l=a,c=i.elements.length-a-1,u=d=>$(i.elements[a],d,r,t,o);if(n.t==="tuple"){let d=n;if(d.elements.length<l+c)return;for(let f=0;f<l;f++)$(i.elements[f],d.elements[f],r,t,o);for(let f=0;f<c;f++)$(i.elements[a+1+f],d.elements[d.elements.length-c+f],r,t,o);u(H(d,l,c));}else if(n.t==="array"){for(let d=0;d<l;d++)$(i.elements[d],n.items,r,t,o);for(let d=0;d<c;d++)$(i.elements[a+1+d],n.items,r,t,o);u(n);}return}case "fn":n.t==="fn"&&(e.params.forEach((i,a)=>{let l=n.params[a];l&&$(i.type,l.type,r,!t,o);}),$(e.returns,n.returns,r,t,o));return;case "object":if(n.t==="object")for(let i in e.props)n.props[i]&&$(e.props[i].type,n.props[i].type,r,t,o);return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((i,a)=>$(i,n.args[a],r,t,o));return;default:return}}function Xe(e,n){if(e.length===1)return e[0];let t=e.flatMap(o=>o.t==="union"?[...o.of]:[o]).filter(o=>e.every(i=>T(o,i,n)));return v(t)}var en=e=>e.t==="union"&&e.of.length===0;function nn(e,n){let r={};for(let[t,{co:o,contra:i}]of e){let a=o.length?v(o):void 0,l=i.length?Xe(i,n):void 0,c=a??l;a&&l&&(c=!en(a)&&a.t!=="any"&&T(a,l,n)?a:l),c&&(r[t]=c);}return r}function rn(e,n={},r=0){if(!e.infer?.length||F(e.check).size>0)return null;let t=new Map;$(e.extends,e.check,new Set(e.infer),false,t);let o=nn(t,n),i=new WeakSet,a=X(m(e.extends,o),n,i,r);return T(e.check,a,n)?X(m(e.then,o),n,i,r):X(m(e.else,o),n,i,r)}function X(e,n={},r=new WeakSet,t=0){let o=t,i=C().maxTypeDepth,a=l=>{switch(l.t){case "var":return s.unknown;case "array":return {t:"array",items:a(l.items)};case "tuple":{let c=l.elements.map(a);return l.flags?K(c,l.flags):{t:"tuple",elements:c}}case "union":return {t:"union",of:l.of.map(a)};case "object":{if(r.has(l))return l;r.add(l);let c={};for(let d in l.props){let f=l.props[d];c[d]={type:a(f.type),optional:f.optional};}let u=l.index?{key:l.index.key,value:a(l.index.value)}:void 0;return r.delete(l),u?{t:"object",props:c,index:u}:{t:"object",props:c}}case "fn":{if(r.has(l))return l;r.add(l);let u={t:"fn",params:l.params.map(d=>({...d,type:a(d.type)})),returns:a(l.returns),...l.guard&&{guard:{param:l.guard.param,type:a(l.guard.type)}}};return r.delete(l),u}case "apply":{if(w(l,n)){let c=E(l,n);if(c.t==="conditional"){if(o>=i)throw new W;o++;try{let u=a(c);if(u.t!=="conditional")return u}finally{o--;}}}return {t:"apply",name:l.name,args:l.args.map(a)}}case "conditional":{let c=l.infer?.length?rn(l,n,o):V(l,n);return c?a(c):{t:"conditional",check:a(l.check),extends:a(l.extends),then:a(l.then),else:a(l.else),...l.infer?{infer:l.infer}:{}}}case "intersection":return b({of:l.of.map(a)});case "returnType":return h({t:"returnType",fn:a(l.fn)});default:return l}};return a(e)}var tn=s.union([]);function ke(e,n){return ae(e,n,new WeakMap)}function on(e){return e.reduce(ke,tn)}function ae(e,n,r){if(e.t==="any"||n.t==="any")return s.any;if(e===n)return e;let t=r.get(e)?.get(n);if(t)return t;if(e.t==="object"&&n.t==="object")return an(e,n,r);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:s.unknown};return be(r,e,n,o),o.items=ae(e.items,n.items,r),o}return v([e,n])}function an(e,n,r){let t={t:"object",props:{}};be(r,e,n,t);for(let o in e.props){let i=e.props[o],a=n.props[o];if(a){let l=ae(i.type,a.type,r);t.props[o]=i.optional||a.optional?{type:l,optional:true}:{type:l};}else t.props[o]={type:i.type,optional:true};}for(let o in n.props)o in e.props||(t.props[o]={type:n.props[o].type,optional:true});return t}function be(e,n,r,t){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(r,t);}var ln=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e);function S(e,n=new WeakSet){switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "var":return 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=S(e.items,n),t=un(e.items)?`(${r})[]`:`${r}[]`;return e.readonly?`readonly ${t}`:t}case "tuple":{let t=`[${e.elements.map((o,i)=>{let a=e.flags?.[i]??"req",l=S(o,n),c=o.t==="union"?`(${l})`:l;return a==="rest"?`...${c}[]`:a==="variadic"?`...${l}`:a==="optional"?`${c}?`:l}).join(", ")}]`;return e.readonly?`readonly ${t}`:t}case "union":{if(n.has(e))return "\u2026";n.add(e);let r=e.of.length===0?"never":e.of.map(t=>S(t,n)).join(" | ");return n.delete(e),r}case "object":{if(n.has(e))return "\u2026";n.add(e);let r=Object.entries(e.props).map(([t,o])=>`${ln(t)?t:JSON.stringify(t)}${o.optional?"?":""}: ${S(o.type,n)}`);return e.index&&r.push(`[k: ${e.index.key}]: ${S(e.index.value,n)}`),n.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(n.has(e))return "\u2026";n.add(e);let r=e.params.map(o=>{let i=o.variadic?"...":"",a=o.optional&&!o.variadic?"?":"";return `${i}${o.name}${a}: ${S(o.type,n)}`}).join(", "),t=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${S(e.guard.type,n)}`:S(e.returns,n);return n.delete(e),`(${r}) => ${t}`}case "apply":{if(n.has(e))return "\u2026";n.add(e);let r=e.args.length===0?e.name:`${e.name}<${e.args.map(t=>S(t,n)).join(", ")}>`;return n.delete(e),r}case "overload":{if(n.has(e))return "\u2026";n.add(e);let r=e.signatures.map(t=>S(t,n)).join(" & ");return n.delete(e),r}case "keyof":return `keyof ${S(e.of,n)}`;case "index":return `${S(e.obj,n)}[${S(e.key,n)}]`;case "mapped":{if(n.has(e))return "\u2026";n.add(e);let r=e.optional?"?":"",t=`{ [${e.key} in ${S(e.over,n)}]${r}: ${S(e.body,n)} }`;return n.delete(e),t}case "conditional":{if(n.has(e))return "\u2026";n.add(e);let r=`${S(e.check,n)} extends ${S(e.extends,n)} ? ${S(e.then,n)} : ${S(e.else,n)}`;return n.delete(e),r}case "intersection":return e.of.map(r=>r.t==="union"&&r.of.length>0?`(${S(r,n)})`:S(r,n)).join(" & ");case "returnType":return `ReturnType<${S(e.fn,n)}>`;case "parameters":return `Parameters<${S(e.fn,n)}>`}}function un(e){return e.t==="union"&&e.of.length>0||e.t==="fn"}function pn(e){if(e.length===0)return "value";let n=e[e.length-1];if(/^\d+$/.test(n)){let r=e.slice(0,-1);return r.length?`property '${r.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function fn(e){let n=e.filter(r=>r.kind==="missing");if(n.length&&n.length===e.length){let r=n.map(t=>`'${t.path.join(".")}'`).join(", ");return n.length===1?`property ${r} is missing`:`properties ${r} are missing`}return e.map(r=>`${pn(r.path)}: expected '${S(r.expected)}', got '${S(r.actual)}'`).join("; ")}function U(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),U(L(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(r=>U(L(r).type,n)));case "object":{if(n.has(e))return true;n.add(e);let r=Object.values(e.props).every(o=>U(L(o.type).type,n)),t=!e.index||U(L(e.index.value).type,n);return r&&t}case "union":return n.has(e)?true:(n.add(e),e.of.every(r=>U(r,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(r=>U(r,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":return false}}function cn(e,n,r={}){let t=e;for(let o of n){let i=_(t,o,r);if(i===null)return null;t=i;}return {type:t,completions:Y(t,r)}}var sn=e=>e==="[]"||/^\d+$/.test(e);function _(e,n,r,t=new Set){if(e.t==="var")return e.bound?_(I(e,r),n,r,t):null;if(w(e,r)){let i=g(e);if(t.has(i))return null;t.add(i);let a=_(E(e,r),n,r,t);return t.delete(i),a}let o=h(e);if(o!==e)return _(o,n,r,t);switch(e.t){case "any":return e;case "object":{let i=P(e.props,n);return i?i.optional?v([i.type,{t:"undefined"}]):i.type:e.index?.key==="string"?e.index.value:null}case "array":return sn(n)?e.items:null;case "tuple":{let i=e.flags?.findIndex(c=>c!=="req")??-1,a=Number(n);if(!(Number.isInteger(a)&&a>=0))return null;if(i<0)return a<e.elements.length?e.elements[a]:null;if(a<i)return e.elements[a];let l=e.elements.slice(i);return l.length?v(l):null}case "union":{let i=e.of.map(a=>_(a,n,r,t)).filter(a=>a!==null);return i.length?v(i):null}case "intersection":{let i=e.of.map(a=>_(a,n,r,t)).filter(a=>a!==null);return i.length?b({of:i}):null}default:return null}}function Y(e,n,r=new WeakSet,t=new Set){if(e.t==="var")return e.bound?Y(I(e,n),n,r,t):[];if(w(e,n)){let i=g(e);if(t.has(i))return [];t.add(i);let a=Y(E(e,n),n,r,t);return t.delete(i),a}let o=h(e);if(o!==e)return Y(o,n,r,t);switch(e.t){case "object":return Object.entries(e.props).map(([i,a])=>({key:i,type:a.type,optional:!!a.optional}));case "array":return [{key:"[]",type:e.items,optional:false}];case "tuple":return e.elements.map((i,a)=>({key:String(a),type:i,optional:false}));case "union":case "intersection":{if(r.has(e))return [];r.add(e);let i=[],a=new Set;for(let l of e.of)for(let c of Y(l,n,r,t))a.has(c.key)||(a.add(c.key),i.push(c));return r.delete(e),i}default:return []}}export{J as DEFAULT_TYPE_LIMITS,Ue as TYPE_EVAL_DEPTH_LIMIT,W as TypeEvalLimitError,N as UnionTooComplexError,I as apparentType,Be as configureTypeLimits,cn as discover,Re as equals,E as expand1,G as flagAt,S as format,fn as formatTypeDiff,X as groundVars,Je as instantiate,Ze as instantiateLoose,w as isScheme,U as isSerializable,Oe as isVariadicTuple,ke as join,on as joinAll,K as normalizeTuple,v as normalizeUnion,P as ownProp,Fe as resetTypeLimits,A as resolveOp,h as resolveTypeOp,q as restIndex,s,H as sliceTuple,m as substitute,T as subtype,ze as typeDiff,Qe as typeFeatures,C as typeLimits,k as unify,oe as widen,Ye as widenInferred,Se as widenLiteral,Ve as widenType,L as withoutUndefined};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tslite/type-core",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "TSLite type-core — o vocabulário Schema + a álgebra de tipos (subtype, unify, format, discover, …), puro e sem dependências. Compartilhado por checker, jsonschema, infer, validate.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|