ts-ref-kit 1.1.11 → 1.1.12
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/cjs/index.cjs +4 -4
- package/dist/cjs/parser/index.cjs +1 -1
- package/dist/esm/index.js +4 -4
- package/dist/esm/parser/index.js +2 -2
- package/package.json +1 -1
- package/types/parser/util.d.ts +1 -0
- package/types/reflect-types/TypeDefinition.d.ts +1 -2
- package/types/reflect-types/index.d.ts +4 -4
- package/types/reflect-types/validates/instance-validate.d.ts +4 -3
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var _=Object.defineProperty,ln=Object.defineProperties,un=Object.getOwnPropertyDescriptor,pn=Object.getOwnPropertyDescriptors,mn=Object.getOwnPropertyNames,ze=Object.getOwnPropertySymbols;var Ke=Object.prototype.hasOwnProperty,yn=Object.prototype.propertyIsEnumerable;var qe=(n,e,t)=>e in n?_(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,
|
|
2
|
-
caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(Ie,"FailureResult");var
|
|
3
|
-
-> `)}o(gn,"getErrorTraceMessages");var Le=class Le extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Le,"ValidationError");var I=Le;var $e=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!b.validation)return u;switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:l(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case en(e):return u;case ye(e):return n instanceof Object?ke(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case fe(e):return bn(n,e,t);case me(e):return Mn(n,e,t);case ue(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case pe(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case Se(e):return hn(n,e,t);case ce(e):switch(typeof n){case"string":return n===xn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case le(e):return Rn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case Ae(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return wn(n,e,t)}}o(D,"validateValue");function bn(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`,{value:n,type:e});if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||g,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(bn,"validateArrayValue");function hn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(hn,"validateIndexedValue");function Mn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(n[i],r,t);if(!a.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return u}o(Mn,"validateTupleValue");function Rn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if(i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||g;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=U(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:a,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(Rn,"validateProperties");function wn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of $e)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ze(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,O(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(wn,"validateSimpleValue");function ke(n,e,t=3){if(e.classDefinition&&!Ze(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===g)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=v({},e);return delete i.classDefinition,D(n,i,t)}o(ke,"validateClassInstance");function Ze(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Ze,"valueInstanceOf");function xn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(xn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:ye(n)?n.classDefinition.name:fe(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":le(n)?"Object":me(n)?`(${n.tupleMembers.map(p).join(",")})`:ue(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":pe(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":ce(n)?n.literalValue:Se(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var ve=class ve{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(ve,"EnumDefinition");var z=ve,je=new Map;function V(n){var e,t;if(!je.has(n)){let i=(t=(e=R())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;je.set(n,new z(i))}return je.get(n)}o(V,"getEnumDefinition");function nn(n){var e;return((e=V(n))==null?void 0:e.names)||[]}o(nn,"getEnumNames");function tn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=V(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(tn,"getEnumValues");var Ee=new Map;function x(n){Ee.set(n.name,n)}o(x,"registerSpecialType");function rn(n){return Ee.has(n)}o(rn,"isSpecialType");function Ve(n,...e){let t=Ee.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(Ve,"getSpecialTypeAlias");x({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?q(e,t=>t.isOptional=!0):void 0}});x({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:q(e,t=>t.isOptional=!1)}});x({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return q(e,t=>t.isReadonly=!0)}});x({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:g,valueType:t!=null?t:g}}}});x({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return de(e,s=>{var a;return(a=s.name===t.literalValue||(i==null?void 0:i.includes(s.name)))!=null?a:!1})}});x({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return de(e,s=>!(s.name===t.literalValue||i!=null&&i.includes(s.name)))}});x({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return Pn(e,i)}}});x({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return Cn(e,i)}}});x({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return{typeDef:e,reflectReference:t}}});function q(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>on(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>q(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>q(t,e)).filter(t=>t!==void 0)}:void 0}o(q,"getMappedType");function de(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?on(t):void 0).filter(t=>!!t)}}o(de,"getFilterKeyType");function Pn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return de(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(Pn,"getPickType");function Cn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return de(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(Cn,"getOmitType");function on(n,e){let t;return n instanceof P?t=new P({name:n.name,isReadonly:n.isReadOnly,isOptional:n.isOptional,isStatic:n.isStatic,accessor:n.accessor,type:n.rawType}):t={name:n.name,isOptional:n.isOptional,type:n.type},e==null||e(t),t}o(on,"copyPropertyDefinition");function Te(n,e){var r,s,a;if(rn(n))return e?Ve(n,...e):Ve(n);if(!Ne.has(n)){let c=(s=(r=R())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;Ne.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=Ne.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let f=0;f<t.genericParams.length;f++){let m=t.genericParams[f];c[m]=e[f]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(Te,"getTypeAliasDefinition");var Ne=new Map;var g={name:"any"},On={name:"null"},In={name:"undefined"};function en(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(en,"isIgnoredType");function Ae(n){return!!(n.name&&he.includes(n.name))}o(Ae,"isPrimitiveType");function fe(n){return!!n.arrayElementType}o(fe,"isArrayType");function ce(n){return!!n.literalValue}o(ce,"isLiteralType");function le(n){return!!n.typeLiteralMembers}o(le,"isTypeLiteralType");function ue(n){return!!n.unionMembers}o(ue,"isUnionType");function pe(n){return!!n.intersectionMembers}o(pe,"isIntersectionType");function me(n){return!!n.tupleMembers}o(me,"isTupleType");function ye(n){return!!n.classDefinition}o(ye,"isClassDefinition");function Ln(n){return!!n.generics}o(Ln,"hasGenerics");function Se(n){return!!n.index}o(Se,"isIndexType");function O(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return g;if(n==="null")return On;if(n==="undefined")return In;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?E.create(t,e).type:t.type;if(he.includes(n))return{name:n};if($e.map(a=>a.name).includes(n))return{name:n,generics:e};let i=j(n);if(i)return i.fromLib?{name:n,generics:e}:e?re.create(i,e).type:i.type;let r=V(n);if(r)return r.type;let s=Te(n,e);return s?s.type:g}o(O,"getTypeDefinition");var Fe=new Map;function y(n,e,t){let i=_e(n);if(n===void 0)return g;let r=Fe.get(i);if(r)return r;let s={};if(Fe.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||O(n,t)||g;else if(typeof n.literalValue=="string")s.literalValue=n.literalValue;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(a=>y(a,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(a=>y(a,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(a=>y(a,e))});else if(n.typeLiteralMembers)s.typeLiteralMembers=n.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y(a.type,e,t)}));else if(n.generics){let a=n.generics[0],c=n.generics.slice(1).map(f=>y(f,e));Object.assign(s,y(a,e,c))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=g),Fe.delete(i),s}o(y,"fillType");function _e(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(_e).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+_e(n[t])).join(",")+"}"}o(_e,"stableStringify");var N={isPrimitiveType:Ae,isArrayType:fe,isLiteralType:ce,isTypeLiteralType:le,isUnionType:ue,isIntersectionType:pe,isTupleType:me,isClassDefinition:ye,hasGenerics:Ln};function M(n){if(typeof n=="string"){let e=An(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?O(n):M(e)}return"array"in n?{arrayElementType:M(n.array)}:"union"in n?{unionMembers:n.union.map(M)}:"intersection"in n?{intersectionMembers:n.intersection.map(M)}:"tuple"in n?{tupleMembers:n.tuple.map(M)}:"generic"in n?O(n.name,n.generic.map(M)):n}o(M,"getTypeDef");function $n(n,e,t=5){let i=D(n,M(e),t);return i.success||b.validationErrorHandler(new I(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o($n,"assertType");function kn(n){return sn(null,n)}o(kn,"isNullable");function sn(n,e,t=5){return D(n,M(e),t).success}o(sn,"isType");function An(n){let e=0,t="%%",i={};function r(f){let m=`${t}${e++}`;return i[m]=f,m}o(r,"addPlaceholder");function s(f){let m=f.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let T=m[1].trim(),h=i[T];return delete i[T],h}o(s,"getPlaceholder");function a(f,m,T,h){let w=0;for(;w<f.length;){let L=f.indexOf(m,w);if(L===-1)break;w=L+1;let S=f.indexOf(T,w);if(S===-1)throw new De("Illegal type string");let Q=f.substring(L+1,S),F=r(Q);h?f=`${f.substring(0,L+1)}${F}${f.substring(S)}`:f=`${f.substring(0,L)}${F}${f.substring(S+1)}`}return f}o(a,"replaceBracket");function c(f){let m=f.trim(),T=o($=>$.trim(),"trim"),h=o($=>$.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let w=s(m);if(w)return c(w);let L=m.split("|").map(T).filter(h);if(L.length>1)return{union:L.map(c)};let S=m.split("&").map(T).filter(h);if(S.length>1)return{intersection:S.map(c)};let Q=m.match(/^\[(.*)]$/);if(Q)return{tuple:Q[1].split(",").map(T).filter(h).map(c)};let F=m.match(/^(.+)\[]$/);if(F)return{array:c(F[1])};let ge=m.match(/^([^<]+)<(.+)>$/);if(ge){let $=ge[1].trim(),be=c(ge[2]);if(typeof be=="string"){let cn=be.split(",").map(T).filter(h).map(c);return{name:$,generic:cn}}else return{name:$,generic:[be]}}return m}return o(c,"parseTypeRecursive"),c(n)}o(An,"parseType");var Je=class Je extends Error{};o(Je,"TypeParseError");var De=Je;function Ge(n,e,t=3){return b.validation?(e=e||n.constructor.name,ke(n,M(e),t)):u}o(Ge,"validateInstance");function Sn(n,e,t=1){if(!b.validation)return u;for(let i=0;i<n.length;i++){let r=Ge(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(Sn,"validateArray");function jn(n,e,t=1){if(!b.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],c=Ge(a,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:c,value:n,type:e})}return u}o(jn,"validateDictionary");var an=Symbol("VALIDATE_WRAPPER"),vn=o((n,e,t)=>En(n,e,t),"ReflectValidate");function En(n,e,t){if(!b.validation)return;let i=t.value;if(typeof i!="function"||U(i,an))return;let r=o(()=>{var f,m;return(m=(f=d(n))==null?void 0:f.methods)==null?void 0:m.find(T=>T.name===e)},"getMethodDef"),s=o(f=>fn(n,r(),f),"validateArgs"),a=o(f=>Vn(n,r(),f),"validateReturn"),c=o(function(...f){s(f);let m=i.call(this,...f);return a(m)},"newFunc");c[an]=i,t.value=c}o(En,"wrapValidateMethod");function fn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let a=t==null?void 0:t[s];if(a===void 0)if(!r.isOptional)b.validationErrorHandler(new I(`Illegal arguments for ${Be(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=D(a,r.type||g,1);c.success||(console.error("validateResult",c),b.validationErrorHandler(new I(`Illegal arguments for ${Be(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`,c)))})}o(fn,"validateMethodParams");function Vn(n,e,t){var s;if(!e)return t;let i=o((a,c)=>{let f=D(a,c,5);return f.success||(console.error(f.errorStackFlow),b.validationErrorHandler(new I(`result for ${Be(n.constructor.name,e)} doesn't match type ${c.name}:
|
|
4
|
-
${f.errorStackFlow}`,f))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||g),t instanceof Promise?t.then(a=>i(a,r||g)):i(t,r||g)}o(
|
|
1
|
+
"use strict";var _=Object.defineProperty,ln=Object.defineProperties,un=Object.getOwnPropertyDescriptor,pn=Object.getOwnPropertyDescriptors,mn=Object.getOwnPropertyNames,ze=Object.getOwnPropertySymbols;var Ke=Object.prototype.hasOwnProperty,yn=Object.prototype.propertyIsEnumerable;var qe=(n,e,t)=>e in n?_(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,S=(n,e)=>{for(var t in e||(e={}))Ke.call(e,t)&&qe(n,t,e[t]);if(ze)for(var t of ze(e))yn.call(e,t)&&qe(n,t,e[t]);return n},Qe=(n,e)=>ln(n,pn(e)),o=(n,e)=>_(n,"name",{value:e,configurable:!0});var dn=(n,e)=>{for(var t in e)_(n,t,{get:e[t],enumerable:!0})},Tn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of mn(e))!Ke.call(n,r)&&r!==t&&_(n,r,{get:()=>e[r],enumerable:!(i=un(e,r))||i.enumerable});return n};var Dn=n=>Tn(_({},"__esModule",{value:!0}),n);var Jn={};dn(Jn,{JSONError:()=>q,JSONTransfer:()=>Ue,ReflectConfig:()=>b,ReflectValidate:()=>En,TypeDefinition:()=>N,TypeParseError:()=>Te,ValidationError:()=>O,assertType:()=>An,failedResult:()=>l,getClassByName:()=>Ye,getClassDefinition:()=>d,getDebugInfo:()=>_n,getEnumDefinition:()=>V,getEnumNames:()=>nn,getEnumValues:()=>tn,getErrorTraceMessages:()=>bn,getInterfaceDefinition:()=>k,getTypeAliasDefinition:()=>de,getTypeDef:()=>M,isNullable:()=>kn,isType:()=>sn,registerSpecialType:()=>x,safeCall:()=>Fn,successResult:()=>u,validateArray:()=>jn,validateDictionary:()=>vn,validateInstance:()=>Ge});module.exports=Dn(Jn);var be=["string","number","boolean","bigint","symbol"],Xe={string:String,number:Number,boolean:Boolean,object:Object};var J=Reflect,G;function w(){if(G)return G;let n=J.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{G=JSON.parse(gn(n))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}delete J.__meta;let e=G;return e.classDef=J.__classDef||{},delete J.__classDef,Reflect.defineProperty(J,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),G}o(w,"getRawMeta");function gn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(gn,"decode");var X=class X{constructor(e){this.name=e.name,this.isReadOnly=!!e.isReadonly,this.isOptional=!!e.isOptional,this.isPrivate=!!e.isPrivate,this.isStatic=!!e.isStatic,this.accessor=e.accessor,this.rawType=e.type}get type(){return y(this.rawType)}static from(e){return new X(e)}};o(X,"PropertyDefinition");var P=X,Y=class Y extends P{static create(e,t){let i=C(Y,e);return i.genericContext=t,i}get type(){return y(this.rawType,this.genericContext)}};o(Y,"GenericProperty");var Q=Y;function C(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(C,"createInstance");function Z(n,e){n.properties=e.properties.map(t=>Q.create(t,n.genericContext)),n.methods=e.methods.map(t=>B.create(t,n.genericContext)),n instanceof v&&e instanceof j&&e.constructorMethod!==void 0&&(n.constructorMethod=B.create(e.constructorMethod,n.genericContext))}o(Z,"buildPropertiesAndMethods");function he(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(he,"toDictionary");function ee(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(ee,"mapNotNull");function U(n,e){if(n!==void 0)return n[e]}o(U,"getValue");var Me=class Me{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type),isOptional:t.isOptional})))||[]}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get isAsync(){return!!this.rawDef.isAsync}get isConstructor(){return!!this.rawDef.isConstructor}};o(Me,"MethodDefinition");var ne=Me;function H(n){return new ne(n)}o(H,"fillMethod");var te=class te extends ne{static create(e,t){let i=C(te,e);return i.genericContext=t,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return y(this.rawDef.returnType,this.genericContext)}};o(te,"GenericMethod");var B=te;var W=class W{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(H))||[],this.properties=((i=e.properties)==null?void 0:i.map(P.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=ee(this._implementationNames,e=>{var t;return k(e)||((t=d(e))==null?void 0:t.type)||I(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof W?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof W?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{name:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...t]}:{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(W,"InterfaceDefinition");var E=W,re=class re extends E{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=C(re,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),Z(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(re,"GenericInterface");var ie=re,we=new Map;function k(n){var e,t;if(!we.has(n)){let i=(t=(e=w())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;we.set(n,new E(i))}return we.get(n)}o(k,"getInterfaceDefinition");var Re=class Re{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=d(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?H(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(H))||[],this.properties=((i=e.properties)==null?void 0:i.map(P.from))||[],this.jsClass=e.jsClass,this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let t=d(this.superClassName);t&&Object.assign(e,S({},t.allMethods))}return Object.assign(e,S({},he(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},he(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:ee(this._implementationNames,e=>k(e)||I(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof E?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(t=(e=this.superClass)==null?void 0:e.allImplementations)==null||t.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(t=>t.name===e)}get type(){var t,i;let e={};return(i=(t=this.superClass)==null?void 0:t.type.typeLiteralMembers)==null||i.forEach(r=>e[r.name]=r),this.properties.forEach(r=>e[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(e),fromLib:this.fromLib}}isSubClassOf(e){var t;return this.name===e||(t=this.superClass)!=null&&t.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let t=d(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(Re,"ClassDefinition");var j=Re,se=class se extends j{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=C(se,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),Z(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(se,"GenericClass");var v=se,oe=new Map;function Ye(n){var e;return((e=d(n))==null?void 0:e.jsClass)||Xe[n]}o(Ye,"getClassByName");function d(n){var e,t,i,r,s,a;switch(typeof n){case"object":return d(n.constructor);case"function":let c=d(n.name);if(c)return c;let f=Array.from(oe.values()).find(h=>h.jsClass===n);if(f)return f;let m=(t=Object.entries(((e=w())==null?void 0:e.classDef)||{}).find(([h,R])=>R===n))==null?void 0:t[0];return m?d(m):void 0;case"string":let T=n;if(!oe.has(T)){let h=(r=(i=w())==null?void 0:i.classes)==null?void 0:r[T];if(!h)return;let R=(a=(s=w())==null?void 0:s.classDef)==null?void 0:a[T];oe.set(T,new j(Qe(S({},h),{jsClass:R})))}return oe.get(T)}}o(d,"getClassDefinition");var Ce=class Ce{constructor(){this.success=!0}};o(Ce,"SuccessResult");var xe=Ce,Ie=class Ie{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.value=i.value,this.type=i.type}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
|
|
2
|
+
caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(Ie,"FailureResult");var Pe=Ie,u=new xe,l=o((n,e,t)=>new Pe(n,e,t),"failedResult");function bn(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
|
|
3
|
+
-> `)}o(bn,"getErrorTraceMessages");var Oe=class Oe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Oe,"ValidationError");var O=Oe;var Le=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!b.validation)return u;switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:l(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case en(e):return u;case me(e):return n instanceof Object?$e(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case ae(e):return hn(n,e,t);case pe(e):return wn(n,e,t);case le(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case ue(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case ke(e):return Mn(n,e,t);case fe(e):switch(typeof n){case"string":return n===Pn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case ce(e):return Rn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case Ae(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return xn(n,e,t)}}o(D,"validateValue");function hn(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`,{value:n,type:e});if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||g,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(hn,"validateArrayValue");function Mn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(Mn,"validateIndexedValue");function wn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(n[i],r,t);if(!a.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return u}o(wn,"validateTupleValue");function Rn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||g;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=U(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:a,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(Rn,"validateProperties");function xn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of Le)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ze(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,I(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(xn,"validateSimpleValue");function $e(n,e,t=3){if(e.classDefinition&&!Ze(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===g)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=S({},e);return delete i.classDefinition,D(n,i,t)}o($e,"validateClassInstance");function Ze(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Ze,"valueInstanceOf");function Pn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(Pn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:me(n)?n.classDefinition.name:ae(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":ce(n)?"Object":pe(n)?`(${n.tupleMembers.map(p).join(",")})`:le(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":ue(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":fe(n)?n.literalValue:ke(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var ve=class ve{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(ve,"EnumDefinition");var je=ve,Se=new Map;function V(n){var e,t;if(!Se.has(n)){let i=(t=(e=w())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;Se.set(n,new je(i))}return Se.get(n)}o(V,"getEnumDefinition");function nn(n){var e;return((e=V(n))==null?void 0:e.names)||[]}o(nn,"getEnumNames");function tn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=V(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(tn,"getEnumValues");var Ee=new Map;function x(n){Ee.set(n.name,n)}o(x,"registerSpecialType");function rn(n){return Ee.has(n)}o(rn,"isSpecialType");function Ve(n,...e){let t=Ee.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(Ve,"getSpecialTypeAlias");x({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?z(e,t=>t.isOptional=!0):void 0}});x({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:z(e,t=>t.isOptional=!1)}});x({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return z(e,t=>t.isReadonly=!0)}});x({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:g,valueType:t!=null?t:g}}}});x({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return ye(e,s=>{var a;return(a=s.name===t.literalValue||(i==null?void 0:i.includes(s.name)))!=null?a:!1})}});x({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return ye(e,s=>!(s.name===t.literalValue||i!=null&&i.includes(s.name)))}});x({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return Cn(e,i)}}});x({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return In(e,i)}}});x({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return{typeDef:e,reflectReference:t}}});function z(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>on(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>z(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>z(t,e)).filter(t=>t!==void 0)}:void 0}o(z,"getMappedType");function ye(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?on(t):void 0).filter(t=>!!t)}}o(ye,"getFilterKeyType");function Cn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return ye(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(Cn,"getPickType");function In(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return ye(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(In,"getOmitType");function on(n,e){let t;return n instanceof P?t=new P({name:n.name,isReadonly:n.isReadOnly,isOptional:n.isOptional,isStatic:n.isStatic,accessor:n.accessor,type:n.rawType}):t={name:n.name,isOptional:n.isOptional,type:n.type},e==null||e(t),t}o(on,"copyPropertyDefinition");function de(n,e){var r,s,a;if(rn(n))return e?Ve(n,...e):Ve(n);if(!Ne.has(n)){let c=(s=(r=w())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;Ne.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=Ne.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let f=0;f<t.genericParams.length;f++){let m=t.genericParams[f];c[m]=e[f]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(de,"getTypeAliasDefinition");var Ne=new Map;var g={name:"any"},On={name:"null"},Ln={name:"undefined"};function en(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(en,"isIgnoredType");function Ae(n){return!!(n.name&&be.includes(n.name))}o(Ae,"isPrimitiveType");function ae(n){return!!n.arrayElementType}o(ae,"isArrayType");function fe(n){return!!n.literalValue}o(fe,"isLiteralType");function ce(n){return!!n.typeLiteralMembers}o(ce,"isTypeLiteralType");function le(n){return!!n.unionMembers}o(le,"isUnionType");function ue(n){return!!n.intersectionMembers}o(ue,"isIntersectionType");function pe(n){return!!n.tupleMembers}o(pe,"isTupleType");function me(n){return!!n.classDefinition}o(me,"isClassDefinition");function $n(n){return!!n.generics}o($n,"hasGenerics");function ke(n){return!!n.index}o(ke,"isIndexType");function I(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return g;if(n==="null")return On;if(n==="undefined")return Ln;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?v.create(t,e).type:t.type;if(be.includes(n))return{name:n};if(Le.map(a=>a.name).includes(n))return{name:n,generics:e};let i=k(n);if(i)return i.fromLib?{name:n,generics:e}:e?ie.create(i,e).type:i.type;let r=V(n);if(r)return r.type;let s=de(n,e);return s?s.type:g}o(I,"getTypeDefinition");var Fe=new Map;function y(n,e,t){let i=_e(n);if(n===void 0)return g;let r=Fe.get(i);if(r)return r;let s={};if(Fe.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||I(n,t)||g;else if(typeof n.literalValue=="string")s.literalValue=n.literalValue;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(a=>y(a,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(a=>y(a,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(a=>y(a,e))});else if(n.typeLiteralMembers)s.typeLiteralMembers=n.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y(a.type,e,t)}));else if(n.generics){let a=n.generics[0],c=n.generics.slice(1).map(f=>y(f,e));Object.assign(s,y(a,e,c))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=g),Fe.delete(i),s}o(y,"fillType");function _e(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(_e).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+_e(n[t])).join(",")+"}"}o(_e,"stableStringify");var N={isPrimitiveType:Ae,isArrayType:ae,isLiteralType:fe,isTypeLiteralType:ce,isUnionType:le,isIntersectionType:ue,isTupleType:pe,isClassDefinition:me,hasGenerics:$n};function M(n){if(typeof n=="string"){let e=Sn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?I(n):M(e)}return"array"in n?{arrayElementType:M(n.array)}:"union"in n?{unionMembers:n.union.map(M)}:"intersection"in n?{intersectionMembers:n.intersection.map(M)}:"tuple"in n?{tupleMembers:n.tuple.map(M)}:"generic"in n?I(n.name,n.generic.map(M)):n}o(M,"getTypeDef");function An(n,e,t=5){let i=D(n,M(e),t);return i.success||b.validationErrorHandler(new O(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(An,"assertType");function kn(n){return sn(null,n)}o(kn,"isNullable");function sn(n,e,t=5){return D(n,M(e),t).success}o(sn,"isType");function Sn(n){let e=0,t="%%",i={};function r(f){let m=`${t}${e++}`;return i[m]=f,m}o(r,"addPlaceholder");function s(f){let m=f.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let T=m[1].trim(),h=i[T];return delete i[T],h}o(s,"getPlaceholder");function a(f,m,T,h){let R=0;for(;R<f.length;){let L=f.indexOf(m,R);if(L===-1)break;R=L+1;let A=f.indexOf(T,R);if(A===-1)throw new Te("Illegal type string");let K=f.substring(L+1,A),F=r(K);h?f=`${f.substring(0,L+1)}${F}${f.substring(A)}`:f=`${f.substring(0,L)}${F}${f.substring(A+1)}`}return f}o(a,"replaceBracket");function c(f){let m=f.trim(),T=o($=>$.trim(),"trim"),h=o($=>$.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let R=s(m);if(R)return c(R);let L=m.split("|").map(T).filter(h);if(L.length>1)return{union:L.map(c)};let A=m.split("&").map(T).filter(h);if(A.length>1)return{intersection:A.map(c)};let K=m.match(/^\[(.*)]$/);if(K)return{tuple:K[1].split(",").map(T).filter(h).map(c)};let F=m.match(/^(.+)\[]$/);if(F)return{array:c(F[1])};let De=m.match(/^([^<]+)<(.+)>$/);if(De){let $=De[1].trim(),ge=c(De[2]);if(typeof ge=="string"){let cn=ge.split(",").map(T).filter(h).map(c);return{name:$,generic:cn}}else return{name:$,generic:[ge]}}return m}return o(c,"parseTypeRecursive"),c(n)}o(Sn,"parseType");var Je=class Je extends Error{};o(Je,"TypeParseError");var Te=Je;function Ge(n,e,t=3){return b.validation?(e=e||n.constructor.name,$e(n,M(e),t)):u}o(Ge,"validateInstance");function jn(n,e,t=2){if(!b.validation)return u;for(let i=0;i<n.length;i++){let r=Ge(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(jn,"validateArray");function vn(n,e,t=2){if(!b.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],c=Ge(a,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:c,value:n,type:e})}return u}o(vn,"validateDictionary");var an=Symbol("VALIDATE_WRAPPER"),En=o((n,e,t)=>Vn(n,e,t),"ReflectValidate");function Vn(n,e,t){if(!b.validation)return;let i=t.value;if(typeof i!="function"||U(i,an))return;let r=o(()=>{var f,m;return(m=(f=d(n))==null?void 0:f.methods)==null?void 0:m.find(T=>T.name===e)},"getMethodDef"),s=o(f=>fn(n,r(),f),"validateArgs"),a=o(f=>Nn(n,r(),f),"validateReturn"),c=o(function(...f){s(f);let m=i.call(this,...f);return a(m)},"newFunc");c[an]=i,t.value=c}o(Vn,"wrapValidateMethod");function fn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let a=t==null?void 0:t[s];if(a===void 0)if(!r.isOptional)b.validationErrorHandler(new O(`Illegal arguments for ${Be(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=D(a,r.type||g,1);c.success||(console.error("validateResult",c),b.validationErrorHandler(new O(`Illegal arguments for ${Be(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`,c)))})}o(fn,"validateMethodParams");function Nn(n,e,t){var s;if(!e)return t;let i=o((a,c)=>{let f=D(a,c,5);return f.success||(console.error(f.errorStackFlow),b.validationErrorHandler(new O(`result for ${Be(n.constructor.name,e)} doesn't match type ${c.name}:
|
|
4
|
+
${f.errorStackFlow}`,f))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||g),t instanceof Promise?t.then(a=>i(a,r||g)):i(t,r||g)}o(Nn,"validateMethodReturnValue");function Be(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Be,"getMethodDescription");function Fn(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return fn(n,r,t),U(n,e).apply(n,t)}o(Fn,"safeCall");var He=class He{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=M(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return D(s,i).success||this.exceptionHandler(new q(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return N.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):N.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return N.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new q(`class ${t.name} not reflected`)),e;let i=C(t.jsClass);return Object.assign(i,e),i}};o(He,"JSONTransfer");var Ue=He,We=class We extends Error{};o(We,"JSONError");var q=We;var b={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};function _n(){if(!b.debug)return w()}o(_n,"getDebugInfo");0&&(module.exports={JSONError,JSONTransfer,ReflectConfig,ReflectValidate,TypeDefinition,TypeParseError,ValidationError,assertType,failedResult,getClassByName,getClassDefinition,getDebugInfo,getEnumDefinition,getEnumNames,getEnumValues,getErrorTraceMessages,getInterfaceDefinition,getTypeAliasDefinition,getTypeDef,isNullable,isType,registerSpecialType,safeCall,successResult,validateArray,validateDictionary,validateInstance});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Te=Object.create;var F=Object.defineProperty;var De=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,be=Object.prototype.hasOwnProperty;var xe=(e,n)=>{for(var i in n)F(e,i,{get:n[i],enumerable:!0})},te=(e,n,i,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of Re(n))!be.call(e,a)&&a!==i&&F(e,a,{get:()=>n[a],enumerable:!(t=De(n,a))||t.enumerable});return e};var L=(e,n,i)=>(i=e!=null?Te(he(e)):{},te(n||!e||!e.__esModule?F(i,"default",{value:e,enumerable:!0}):i,e)),Pe=e=>te(F({},"__esModule",{value:!0}),e);var W=(e,n,i)=>new Promise((t,a)=>{var r=l=>{try{p(i.next(l))}catch(b){a(b)}},w=l=>{try{p(i.throw(l))}catch(b){a(b)}},p=l=>l.done?t(l.value):Promise.resolve(l.value).then(r,w);p((i=i.apply(e,n)).next())});var je={};xe(je,{DEBUG_CONFIG:()=>z,parseSource:()=>G,reflectLoader:()=>ee,reflectParserPlugin:()=>_e,setupReflectTypes:()=>Ee,updateReflectModules:()=>Z});module.exports=Pe(je);var V=L(require("typescript"),1);function R(e){return e||{}}var J=["string","number","boolean","bigint","symbol"];var s=L(require("typescript"),1),M=L(require("fs"),1),_=L(require("process"),1),h=L(require("path"),1),fe=require("url");var z={OUTPUT_LOG:!1},v=new Map,O=new Map,j=new Map,C=new Map,Y=new Map,q=new Set,se={[s.default.SyntaxKind.BooleanKeyword]:"boolean",[s.default.SyntaxKind.StringKeyword]:"string",[s.default.SyntaxKind.BigIntKeyword]:"bigint",[s.default.SyntaxKind.NumberKeyword]:"number",[s.default.SyntaxKind.SymbolKeyword]:"symbol",[s.default.SyntaxKind.VoidKeyword]:"void",[s.default.SyntaxKind.UndefinedKeyword]:"undefined",[s.default.SyntaxKind.UnknownKeyword]:"unknown",[s.default.SyntaxKind.AnyKeyword]:"any",[s.default.SyntaxKind.ObjectKeyword]:"object"},I="any",ce=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],le=["Mappable","EnableReflect","ReflectReference"];[...J,...ce,...le].forEach(de);le.forEach(e=>C.set(e,{name:e,type:e}));var U,re=!1,$=Reflect;function Ee(e){return W(this,null,function*(){let{filePaths:n,exclude:i,sourceFolder:t,distFolder:a}=e;if(t=h.resolve(t||_.cwd()),a=h.resolve(a||_.cwd()),$.__meta!==void 0)return;let r={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=we(n);let w=n.map(p=>h.join(t,p));G(w,i);for(let[p,l]of v)r.classes[p]=l;for(let[p,l]of O)r.interfaces[p]=l;for(let[p,l]of C)r.typeAliases[p]=l;for(let[p,l]of j)r.enums[p]=l;for(let[p,l]of Y)r.constTypes[p]=l;$.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(p=>Z(p,a)))})}function Z(e,n){return W(this,null,function*(){let i=h.resolve(n,e);if(!M.existsSync(i))return;if(M.statSync(i).isDirectory()){let p=M.readdirSync(i);yield Promise.all(p.map(l=>Z(h.join(e,l),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),w=yield import((0,fe.pathToFileURL)(a).href);$.__classDef={},Object.values(w).forEach(p=>{typeof p=="function"&&$.__classDef&&($.__classDef[p.name]=p)})})}function G(e,n){if(e||(e=[_.cwd()]),e=we(e),!re){let i=pe(e,n),t=s.default.createProgram(i,{});U=t.getTypeChecker(),i=i.map(r=>ae(r)),t.getSourceFiles().filter(r=>i.includes(ae(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{S(`parse file: ${r.fileName}`),ue(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of q.keys())!v.has(r)&&!O.has(r)&&!j.has(r)&&!C.has(r)&&!J.includes(r)&&!ce.includes(r)&&(S(`remove unknown typeName: ${r}`),q.delete(r));Array.from(v.values()).forEach(Oe),Array.from(O.values()).forEach(Ce),[v,O,C].forEach(Ie),re=!0}return{classDefinitions:v,interfaceDefinitions:O,enumDefinitions:j,typeAliasDefinitions:C,constTypeDefinitions:Y}}function pe(e,n){let i=[];return e.forEach(t=>{if(t=h.resolve(t),Le(t,n)){S(`ignore excluded ${t}`);return}if(!M.existsSync(t)){console.error(`Path ${t} does not exist.`);return}if(M.statSync(t).isFile()){i.push(t);return}M.readdirSync(t).forEach(w=>i.push(...pe([h.join(t,w)],n)))}),i}function ue(e,n){s.default.isClassDeclaration(e)?Se(e,n):s.default.isInterfaceDeclaration(e)?Me(e,n):s.default.isEnumDeclaration(e)?Ke(e,n):s.default.isTypeAliasDeclaration(e)?Ne(e,n):s.default.isConstTypeReference(e)?ke(e):e.forEachChild(i=>ue(i,n))}function Se(e,n){var b,K,P,N,E,k,m,T,y,g,u,D,B,ne,ie;let i=c(e.name);if(!i)return;let t=c((P=(K=(b=e.heritageClauses)==null?void 0:b.find(o=>o.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:K.types)==null?void 0:P[0].expression),a=(E=(N=e.heritageClauses)==null?void 0:N.find(o=>o.token===s.default.SyntaxKind.ImplementsKeyword))==null?void 0:E.types.map(o=>c(o.expression)),r=[],w=[],p;for(let o of e.members)if(s.default.isPropertyDeclaration(o))r.push({name:c(o.name),isOptional:o.questionToken!==void 0,type:d(o),isPrivate:(k=o.modifiers)==null?void 0:k.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(m=o.modifiers)==null?void 0:m.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isReadonly:(T=o.modifiers)==null?void 0:T.some(f=>f.kind===s.default.SyntaxKind.ReadonlyKeyword)});else if(s.default.isConstructorDeclaration(o))p={name:"constructor",isPrivate:(y=o.modifiers)==null?void 0:y.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0})),isConstructor:!0};else if(s.default.isMethodDeclaration(o))w.push({name:c(o.name),returnType:d(o),isPrivate:(g=o.modifiers)==null?void 0:g.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(u=o.modifiers)==null?void 0:u.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isAsync:(D=o.modifiers)==null?void 0:D.some(f=>f.kind===s.default.SyntaxKind.AsyncKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0}))});else if(s.default.isGetAccessorDeclaration(o)){let f=r.find(A=>A.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((B=o.modifiers)==null?void 0:B.some(A=>A.kind===s.default.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(s.default.isSetAccessorDeclaration(o)){let f=r.find(A=>A.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((ne=o.modifiers)==null?void 0:ne.some(A=>A.kind===s.default.SyntaxKind.PrivateKeyword))||!1}}let l={name:i,constructorMethod:p,superClassName:t,implementations:a,properties:r,methods:w,genericsParams:(ie=e.typeParameters)==null?void 0:ie.map(o=>c(o.name)),fromLib:n};if(v.has(i))throw new Error(`Duplicate defined for class "${i}"`);S(`Define class: ${c(e.name)}`),v.set(i,l)}function Me(e,n){var b,K,P,N,E,k;let i=c(e.name);if(!i)return;let t=((K=(b=e.heritageClauses)==null?void 0:b.find(m=>m.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:K.types.map(m=>c(m.expression)))||[],a=[],r=[],w,p;for(let m of e.members)s.default.isPropertySignature(m)?a.push({name:c(m.name),isOptional:m.questionToken!==void 0,type:d(m),isPrivate:((P=m.modifiers)==null?void 0:P.some(T=>T.kind===s.default.SyntaxKind.PrivateKeyword))||!1,isReadonly:((N=m.modifiers)==null?void 0:N.some(T=>T.kind===s.default.SyntaxKind.ReadonlyKeyword))||!1}):s.default.isMethodSignature(m)?r.push({name:m.name.text,returnType:d(m),isPrivate:((E=m.modifiers)==null?void 0:E.some(T=>T.kind===s.default.SyntaxKind.PrivateKeyword))||!1,args:m.parameters.map(T=>({name:c(T.name),type:d(T),isOptional:T.questionToken!==void 0}))}):s.default.isIndexSignatureDeclaration(m)&&(m.parameters[0]&&(w=d(m.parameters[0])),p=d(m));let l=O.get(i);l?(l.implementations=Q(l.implementations||[],t),l.methods=Q(l.methods||[],r,(m,T)=>m.name===T.name),l.properties=Q(l.properties||[],a,(m,T)=>m.name===T.name),p&&(l.index={keyType:w,valueType:p}),S(`Merge interface ${c(e.name)}`)):(l={name:i,implementations:t,methods:r,properties:a,index:p?{keyType:w,valueType:p}:void 0,genericsParams:(k=e.typeParameters)==null?void 0:k.map(m=>c(m.name)),fromLib:n},O.set(i,l),S(`Define interface ${c(e.name)}`))}function Ke(e,n){let i=c(e.name);if(i){if(j.has(i))throw new Error(`Duplicate defined for enum: ${i}`);j.set(i,{name:i,members:e.members.map(t=>({name:c(t.name),initializer:c(t.initializer)})),fromLib:n}),S(`Define enum: ${c(e.name)}`)}}function Ne(e,n){var r;S(`Define typeAlias: ${c(e.name)}`);let i=d(e),t=(r=e.typeParameters)==null?void 0:r.map(w=>c(w.name)),a=c(e.name);if(C.has(a))throw new Error(`Duplicate defined for typeAlias: ${a}`);C.set(a,{name:a,type:i,genericParams:t,fromLib:n})}function ke(e){let n=e.parent.parent;s.default.isVariableDeclaration(n)&&n.initializer&&s.default.isAsExpression(n.initializer)&&Y.set(c(n.name),me(n.initializer.expression))}function me(e){return s.default.isArrayLiteralExpression(e)?Ae(e):s.default.isObjectLiteralExpression(e)?ve(e):s.default.isNumericLiteral(e)?"number":s.default.isStringLiteral(e)?"string":s.default.isBigIntLiteral(e)?"bigint":[s.default.SyntaxKind.TrueKeyword,s.default.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":I}function Ae(e){let n=[];return e.elements.forEach(i=>{if(s.default.isStringLiteral(i))return n.push(c(i))}),n.length===0?I:n.length===1?n[0]:{unionMembers:n}}function ve(e){let n=[];return e.properties.map(i=>{s.default.isPropertyAssignment(i)?n.push({name:c(i.name),type:me(i.initializer)}):S(`unsupported property: ${i.name}`)}),{typeLiteralMembers:n}}function de(e){q.add(e)}function d(e,n=!1){if(e.type&&!n)return x(e.type);if(!U)return console.error("TypeChecker not initialized!"),I;let i=U.getTypeAtLocation(e),t=U.typeToTypeNode(i,void 0,void 0);return t?x("type"in t?t.type:t):I}function x(e){let n={};if(e===void 0)return I;if(s.default.isTypeReferenceNode(e))if(de(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(i=>x(i))];else return c(e.typeName);else if(s.default.isFunctionTypeNode(e))n.isFunction=!0;else if(s.default.isConstructorTypeNode(e))n.isConstructor=!0;else{if(s.default.isTypeQueryNode(e))return d(e);if(s.default.isTypeLiteralNode(e)){let i=[];e.members.forEach(t=>{var a,r;s.default.isPropertySignature(t)?i.push({name:c(t.name),isOptional:t.questionToken!==void 0,type:d(t)}):s.default.isIndexSignatureDeclaration(t)?n.index={keyType:(a=t.parameters)!=null&&a[0].type?d((r=t.parameters)==null?void 0:r[0]):void 0,valueType:d(t)}:i.push({name:c(t.name)||"",isOptional:t.questionToken!==void 0,type:x()})}),n.typeLiteralMembers=i}else if(s.default.isArrayTypeNode(e))n.arrayElementType=x(e.elementType);else if(s.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(x);else if(s.default.isOptionalTypeNode(e))Object.assign(n,d(e)),n.isOptionalInTuple=!0;else{if(s.default.isRestTypeNode(e))return d(e);if(s.default.isUnionTypeNode(e))n.unionMembers=e.types.map(x);else if(s.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(x);else{if(s.default.isConditionalTypeNode(e))return d(e);if(s.default.isInferTypeNode(e))return d(e);if(s.default.isParenthesizedTypeNode(e))return d(e);if(s.default.isThisTypeNode(e))return d(e);if(s.default.isTypeOperatorNode(e)&&e.operator===s.default.SyntaxKind.KeyOfKeyword)return d(e,!0);if(s.default.isIndexedAccessTypeNode(e))return d(e,!0);if(s.default.isMappedTypeNode(e))n.index={keyType:x(e.typeParameter.constraint),valueType:x(e.type)};else if(s.default.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(se).includes(String(e.kind)))return se[e.kind]||I;if(s.default.isNamedTupleMember(e))Object.assign(n,d(e));else return d(e,!0)}}}}return n}var Q=(e,n,i)=>[...(e==null?void 0:e.filter(t=>!(n!=null&&n.some(a=>(i||(()=>a===t))(a,t)))))||[],...n||[]];function H(e,n){if(e!==void 0&&e!==I)return typeof e=="string"?q.has(e)||n!=null&&n.includes(e)?e:void 0:e}function Oe(e){var n,i;(n=e.methods)==null||n.forEach(t=>ge(t,e.genericsParams)),(i=e.properties)==null||i.forEach(t=>ye(t,e.genericsParams))}function Ce(e){var n,i;(n=e.methods)==null||n.forEach(t=>ge(t,e.genericsParams)),(i=e.properties)==null||i.forEach(t=>ye(t,e.genericsParams))}function ye(e,n){e.type=H(e.type,n)}function ge(e,n){var i;(i=e.args)==null||i.forEach(t=>t.type=H(t.type,n)),e.returnType=H(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return s.default.isQualifiedName(n)?c(n.right):n.getText()}catch(n){return e.text}}function X(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(i=>{let[t,a]=i;a===!1||a===void 0||a===null?delete n[t]:a instanceof Array?a.length===0?delete n[t]:a.forEach(X):X(a)})}function Ie(e){for(let n of e.values())X(n)}function Le(e,n){return n?(n=n instanceof Array?n:[n],n.some(i=>(i instanceof RegExp||(i=new RegExp(i.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(i)))):!1}function ae(e,n=_.cwd()){return oe(e).replace(oe(n)+"/","")}function oe(e){let n=h.sep;return e.split(n).join("/")}function we(e){return e instanceof Array?e:[e]}function S(e){z.OUTPUT_LOG&&console.log(e)}function ee(e){let{sourcePaths:n,exclude:i,forEnabledClassOnly:t,outputLog:a}=e;if(a&&(z.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${i}, forEnabledClassOnly: ${t}`);let{classDefinitions:r,interfaceDefinitions:w,enumDefinitions:p,typeAliasDefinitions:l,constTypeDefinitions:b}=G(n,i),K=[],P=[];function N(y){let g=[];return(()=>{let u=r.get(y);if(u){u.superClassName&&g.push(u.superClassName),g.push(...u.implementations||[]);return}let D=w.get(y);if(D){g.push(...D.implementations||[]);return}l.get(y)&&g.push(y)})(),g.flatMap(u=>[u,...N(u)])||[]}function E(y,g){return N(y.name).includes(g)}function k(y){if(V.default.isClassDeclaration(y)&&y.name!==void 0){let g=y.name.text,u=r.get(g);if(!g||!u||t&&!E(u,"EnableReflect"))return;P.push(`Reflect.registerClass?Reflect.registerClass({${g}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${g}}))`);return}y.forEachChild(k)}function m(){let y={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return r.forEach((u,D)=>{t&&!E(u,"EnableReflect")||(y.classes[D]=u)}),w.forEach((u,D)=>{t&&!E(u,"EnableReflect")||(y.interfaces[D]=u)}),p.forEach((u,D)=>{y.enums[D]=u}),l.forEach((u,D)=>{y.typeAliases[D]=u}),b.forEach((u,D)=>{y.constTypes[D]=u}),`;Reflect.__meta='${btoa(JSON.stringify(y))}'`}return{outputAllMetas:m,transform:(y,g)=>{if(g.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!g.startsWith(u))){a&&console.log(`transform id: ${g}`);try{let u=V.default.createSourceFile(g,y,V.default.ScriptTarget.Latest,!1);return K.length=0,P.length=0,k(u),`${K.join(";")};${y};${P.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${g}:`,u);return}}}}}var $e=process.cwd().replace(/\\/g,"/")+"/";function _e(e){let n=ee(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(i,t)=>(t=t.replace($e,""),t===e.entry?`${n.outputAllMetas()}
|
|
1
|
+
"use strict";var De=Object.create;var F=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var be=Object.getPrototypeOf,xe=Object.prototype.hasOwnProperty;var Pe=(e,n)=>{for(var i in n)F(e,i,{get:n[i],enumerable:!0})},re=(e,n,i,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of he(n))!xe.call(e,a)&&a!==i&&F(e,a,{get:()=>n[a],enumerable:!(t=Re(n,a))||t.enumerable});return e};var L=(e,n,i)=>(i=e!=null?De(be(e)):{},re(n||!e||!e.__esModule?F(i,"default",{value:e,enumerable:!0}):i,e)),Ee=e=>re(F({},"__esModule",{value:!0}),e);var J=(e,n,i)=>new Promise((t,a)=>{var s=l=>{try{p(i.next(l))}catch(b){a(b)}},w=l=>{try{p(i.throw(l))}catch(b){a(b)}},p=l=>l.done?t(l.value):Promise.resolve(l.value).then(s,w);p((i=i.apply(e,n)).next())});var Fe={};Pe(Fe,{DEBUG_CONFIG:()=>G,parseSource:()=>B,reflectLoader:()=>ne,reflectParserPlugin:()=>je,setupReflectTypes:()=>Se,updateReflectModules:()=>ee});module.exports=Ee(Fe);var V=L(require("typescript"),1);function R(e){return e||{}}var Q=["string","number","boolean","bigint","symbol"];var r=L(require("typescript"),1),M=L(require("fs"),1),_=L(require("process"),1),h=L(require("path"),1),ce=require("url");function U(e){return Buffer.from(e,"utf8").toString("base64")}var G={OUTPUT_LOG:!1},v=new Map,O=new Map,j=new Map,C=new Map,Z=new Map,z=new Set,se={[r.default.SyntaxKind.BooleanKeyword]:"boolean",[r.default.SyntaxKind.StringKeyword]:"string",[r.default.SyntaxKind.BigIntKeyword]:"bigint",[r.default.SyntaxKind.NumberKeyword]:"number",[r.default.SyntaxKind.SymbolKeyword]:"symbol",[r.default.SyntaxKind.VoidKeyword]:"void",[r.default.SyntaxKind.UndefinedKeyword]:"undefined",[r.default.SyntaxKind.UnknownKeyword]:"unknown",[r.default.SyntaxKind.AnyKeyword]:"any",[r.default.SyntaxKind.ObjectKeyword]:"object"},I="any",le=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],pe=["Mappable","EnableReflect","ReflectReference"];[...Q,...le,...pe].forEach(ye);pe.forEach(e=>C.set(e,{name:e,type:e}));var q,ae=!1,$=Reflect;function Se(e){return J(this,null,function*(){let{filePaths:n,exclude:i,sourceFolder:t,distFolder:a}=e;if(t=h.resolve(t||_.cwd()),a=h.resolve(a||_.cwd()),$.__meta!==void 0)return;let s={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=Te(n);let w=n.map(p=>h.join(t,p));B(w,i);for(let[p,l]of v)s.classes[p]=l;for(let[p,l]of O)s.interfaces[p]=l;for(let[p,l]of C)s.typeAliases[p]=l;for(let[p,l]of j)s.enums[p]=l;for(let[p,l]of Z)s.constTypes[p]=l;$.__meta=U(JSON.stringify(s)),yield Promise.all(n.map(p=>ee(p,a)))})}function ee(e,n){return J(this,null,function*(){let i=h.resolve(n,e);if(!M.existsSync(i))return;if(M.statSync(i).isDirectory()){let p=M.readdirSync(i);yield Promise.all(p.map(l=>ee(h.join(e,l),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),w=yield import((0,ce.pathToFileURL)(a).href);$.__classDef={},Object.values(w).forEach(p=>{typeof p=="function"&&$.__classDef&&($.__classDef[p.name]=p)})})}function B(e,n){if(e||(e=[_.cwd()]),e=Te(e),!ae){let i=ue(e,n),t=r.default.createProgram(i,{});q=t.getTypeChecker(),i=i.map(s=>oe(s)),t.getSourceFiles().filter(s=>i.includes(oe(s.fileName))||s.fileName.endsWith("/lib.es5.d.ts")).forEach(s=>{S(`parse file: ${s.fileName}`),me(s,s.fileName.endsWith("/lib.es5.d.ts"))});for(let s of z.keys())!v.has(s)&&!O.has(s)&&!j.has(s)&&!C.has(s)&&!Q.includes(s)&&!le.includes(s)&&(S(`remove unknown typeName: ${s}`),z.delete(s));Array.from(v.values()).forEach(Ce),Array.from(O.values()).forEach(Ie),[v,O,C].forEach(Le),ae=!0}return{classDefinitions:v,interfaceDefinitions:O,enumDefinitions:j,typeAliasDefinitions:C,constTypeDefinitions:Z}}function ue(e,n){let i=[];return e.forEach(t=>{if(t=h.resolve(t),$e(t,n)){S(`ignore excluded ${t}`);return}if(!M.existsSync(t)){console.error(`Path ${t} does not exist.`);return}if(M.statSync(t).isFile()){i.push(t);return}M.readdirSync(t).forEach(w=>i.push(...ue([h.join(t,w)],n)))}),i}function me(e,n){r.default.isClassDeclaration(e)?Me(e,n):r.default.isInterfaceDeclaration(e)?Ke(e,n):r.default.isEnumDeclaration(e)?Ne(e,n):r.default.isTypeAliasDeclaration(e)?ke(e,n):r.default.isConstTypeReference(e)?Ae(e):e.forEachChild(i=>me(i,n))}function Me(e,n){var b,K,P,N,E,k,m,T,y,g,u,D,W,ie,te;let i=c(e.name);if(!i)return;let t=c((P=(K=(b=e.heritageClauses)==null?void 0:b.find(o=>o.token===r.default.SyntaxKind.ExtendsKeyword))==null?void 0:K.types)==null?void 0:P[0].expression),a=(E=(N=e.heritageClauses)==null?void 0:N.find(o=>o.token===r.default.SyntaxKind.ImplementsKeyword))==null?void 0:E.types.map(o=>c(o.expression)),s=[],w=[],p;for(let o of e.members)if(r.default.isPropertyDeclaration(o))s.push({name:c(o.name),isOptional:o.questionToken!==void 0,type:d(o),isPrivate:(k=o.modifiers)==null?void 0:k.some(f=>f.kind===r.default.SyntaxKind.PrivateKeyword),isStatic:(m=o.modifiers)==null?void 0:m.some(f=>f.kind===r.default.SyntaxKind.StaticKeyword),isReadonly:(T=o.modifiers)==null?void 0:T.some(f=>f.kind===r.default.SyntaxKind.ReadonlyKeyword)});else if(r.default.isConstructorDeclaration(o))p={name:"constructor",isPrivate:(y=o.modifiers)==null?void 0:y.some(f=>f.kind===r.default.SyntaxKind.PrivateKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0})),isConstructor:!0};else if(r.default.isMethodDeclaration(o))w.push({name:c(o.name),returnType:d(o),isPrivate:(g=o.modifiers)==null?void 0:g.some(f=>f.kind===r.default.SyntaxKind.PrivateKeyword),isStatic:(u=o.modifiers)==null?void 0:u.some(f=>f.kind===r.default.SyntaxKind.StaticKeyword),isAsync:(D=o.modifiers)==null?void 0:D.some(f=>f.kind===r.default.SyntaxKind.AsyncKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0}))});else if(r.default.isGetAccessorDeclaration(o)){let f=s.find(A=>A.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},s.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((W=o.modifiers)==null?void 0:W.some(A=>A.kind===r.default.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(r.default.isSetAccessorDeclaration(o)){let f=s.find(A=>A.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},s.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((ie=o.modifiers)==null?void 0:ie.some(A=>A.kind===r.default.SyntaxKind.PrivateKeyword))||!1}}let l={name:i,constructorMethod:p,superClassName:t,implementations:a,properties:s,methods:w,genericsParams:(te=e.typeParameters)==null?void 0:te.map(o=>c(o.name)),fromLib:n};if(v.has(i))throw new Error(`Duplicate defined for class "${i}"`);S(`Define class: ${c(e.name)}`),v.set(i,l)}function Ke(e,n){var b,K,P,N,E,k;let i=c(e.name);if(!i)return;let t=((K=(b=e.heritageClauses)==null?void 0:b.find(m=>m.token===r.default.SyntaxKind.ExtendsKeyword))==null?void 0:K.types.map(m=>c(m.expression)))||[],a=[],s=[],w,p;for(let m of e.members)r.default.isPropertySignature(m)?a.push({name:c(m.name),isOptional:m.questionToken!==void 0,type:d(m),isPrivate:((P=m.modifiers)==null?void 0:P.some(T=>T.kind===r.default.SyntaxKind.PrivateKeyword))||!1,isReadonly:((N=m.modifiers)==null?void 0:N.some(T=>T.kind===r.default.SyntaxKind.ReadonlyKeyword))||!1}):r.default.isMethodSignature(m)?s.push({name:m.name.text,returnType:d(m),isPrivate:((E=m.modifiers)==null?void 0:E.some(T=>T.kind===r.default.SyntaxKind.PrivateKeyword))||!1,args:m.parameters.map(T=>({name:c(T.name),type:d(T),isOptional:T.questionToken!==void 0}))}):r.default.isIndexSignatureDeclaration(m)&&(m.parameters[0]&&(w=d(m.parameters[0])),p=d(m));let l=O.get(i);l?(l.implementations=H(l.implementations||[],t),l.methods=H(l.methods||[],s,(m,T)=>m.name===T.name),l.properties=H(l.properties||[],a,(m,T)=>m.name===T.name),p&&(l.index={keyType:w,valueType:p}),S(`Merge interface ${c(e.name)}`)):(l={name:i,implementations:t,methods:s,properties:a,index:p?{keyType:w,valueType:p}:void 0,genericsParams:(k=e.typeParameters)==null?void 0:k.map(m=>c(m.name)),fromLib:n},O.set(i,l),S(`Define interface ${c(e.name)}`))}function Ne(e,n){let i=c(e.name);if(i){if(j.has(i))throw new Error(`Duplicate defined for enum: ${i}`);j.set(i,{name:i,members:e.members.map(t=>({name:c(t.name),initializer:c(t.initializer)})),fromLib:n}),S(`Define enum: ${c(e.name)}`)}}function ke(e,n){var s;S(`Define typeAlias: ${c(e.name)}`);let i=d(e),t=(s=e.typeParameters)==null?void 0:s.map(w=>c(w.name)),a=c(e.name);if(C.has(a))throw new Error(`Duplicate defined for typeAlias: ${a}`);C.set(a,{name:a,type:i,genericParams:t,fromLib:n})}function Ae(e){let n=e.parent.parent;r.default.isVariableDeclaration(n)&&n.initializer&&r.default.isAsExpression(n.initializer)&&Z.set(c(n.name),de(n.initializer.expression))}function de(e){return r.default.isArrayLiteralExpression(e)?ve(e):r.default.isObjectLiteralExpression(e)?Oe(e):r.default.isNumericLiteral(e)?"number":r.default.isStringLiteral(e)?"string":r.default.isBigIntLiteral(e)?"bigint":[r.default.SyntaxKind.TrueKeyword,r.default.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":I}function ve(e){let n=[];return e.elements.forEach(i=>{if(r.default.isStringLiteral(i))return n.push(c(i))}),n.length===0?I:n.length===1?n[0]:{unionMembers:n}}function Oe(e){let n=[];return e.properties.map(i=>{r.default.isPropertyAssignment(i)?n.push({name:c(i.name),type:de(i.initializer)}):S(`unsupported property: ${i.name}`)}),{typeLiteralMembers:n}}function ye(e){z.add(e)}function d(e,n=!1){if(e.type&&!n)return x(e.type);if(!q)return console.error("TypeChecker not initialized!"),I;let i=q.getTypeAtLocation(e),t=q.typeToTypeNode(i,void 0,void 0);return t?x("type"in t?t.type:t):I}function x(e){let n={};if(e===void 0)return I;if(r.default.isTypeReferenceNode(e))if(ye(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(i=>x(i))];else return c(e.typeName);else if(r.default.isFunctionTypeNode(e))n.isFunction=!0;else if(r.default.isConstructorTypeNode(e))n.isConstructor=!0;else{if(r.default.isTypeQueryNode(e))return d(e);if(r.default.isTypeLiteralNode(e)){let i=[];e.members.forEach(t=>{var a,s;r.default.isPropertySignature(t)?i.push({name:c(t.name),isOptional:t.questionToken!==void 0,type:d(t)}):r.default.isIndexSignatureDeclaration(t)?n.index={keyType:(a=t.parameters)!=null&&a[0].type?d((s=t.parameters)==null?void 0:s[0]):void 0,valueType:d(t)}:i.push({name:c(t.name)||"",isOptional:t.questionToken!==void 0,type:x()})}),n.typeLiteralMembers=i}else if(r.default.isArrayTypeNode(e))n.arrayElementType=x(e.elementType);else if(r.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(x);else if(r.default.isOptionalTypeNode(e))Object.assign(n,d(e)),n.isOptionalInTuple=!0;else{if(r.default.isRestTypeNode(e))return d(e);if(r.default.isUnionTypeNode(e))n.unionMembers=e.types.map(x);else if(r.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(x);else{if(r.default.isConditionalTypeNode(e))return d(e);if(r.default.isInferTypeNode(e))return d(e);if(r.default.isParenthesizedTypeNode(e))return d(e);if(r.default.isThisTypeNode(e))return d(e);if(r.default.isTypeOperatorNode(e)&&e.operator===r.default.SyntaxKind.KeyOfKeyword)return d(e,!0);if(r.default.isIndexedAccessTypeNode(e))return d(e,!0);if(r.default.isMappedTypeNode(e))n.index={keyType:x(e.typeParameter.constraint),valueType:x(e.type)};else if(r.default.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(se).includes(String(e.kind)))return se[e.kind]||I;if(r.default.isNamedTupleMember(e))Object.assign(n,d(e));else return d(e,!0)}}}}return n}var H=(e,n,i)=>[...(e==null?void 0:e.filter(t=>!(n!=null&&n.some(a=>(i||(()=>a===t))(a,t)))))||[],...n||[]];function X(e,n){if(e!==void 0&&e!==I)return typeof e=="string"?z.has(e)||n!=null&&n.includes(e)?e:void 0:e}function Ce(e){var n,i;(n=e.methods)==null||n.forEach(t=>we(t,e.genericsParams)),(i=e.properties)==null||i.forEach(t=>ge(t,e.genericsParams))}function Ie(e){var n,i;(n=e.methods)==null||n.forEach(t=>we(t,e.genericsParams)),(i=e.properties)==null||i.forEach(t=>ge(t,e.genericsParams))}function ge(e,n){e.type=X(e.type,n)}function we(e,n){var i;(i=e.args)==null||i.forEach(t=>t.type=X(t.type,n)),e.returnType=X(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return r.default.isQualifiedName(n)?c(n.right):n.getText()}catch(n){return e.text}}function Y(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(i=>{let[t,a]=i;a===!1||a===void 0||a===null?delete n[t]:a instanceof Array?a.length===0?delete n[t]:a.forEach(Y):Y(a)})}function Le(e){for(let n of e.values())Y(n)}function $e(e,n){return n?(n=n instanceof Array?n:[n],n.some(i=>(i instanceof RegExp||(i=new RegExp(i.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(i)))):!1}function oe(e,n=_.cwd()){return fe(e).replace(fe(n)+"/","")}function fe(e){let n=h.sep;return e.split(n).join("/")}function Te(e){return e instanceof Array?e:[e]}function S(e){G.OUTPUT_LOG&&console.log(e)}function ne(e){let{sourcePaths:n,exclude:i,forEnabledClassOnly:t,outputLog:a}=e;if(a&&(G.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${i}, forEnabledClassOnly: ${t}`);let{classDefinitions:s,interfaceDefinitions:w,enumDefinitions:p,typeAliasDefinitions:l,constTypeDefinitions:b}=B(n,i),K=[],P=[];function N(y){let g=[];return(()=>{let u=s.get(y);if(u){u.superClassName&&g.push(u.superClassName),g.push(...u.implementations||[]);return}let D=w.get(y);if(D){g.push(...D.implementations||[]);return}l.get(y)&&g.push(y)})(),g.flatMap(u=>[u,...N(u)])||[]}function E(y,g){return N(y.name).includes(g)}function k(y){if(V.default.isClassDeclaration(y)&&y.name!==void 0){let g=y.name.text,u=s.get(g);if(!g||!u||t&&!E(u,"EnableReflect"))return;P.push(`Reflect.registerClass?Reflect.registerClass({${g}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${g}}))`);return}y.forEachChild(k)}function m(){let y={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return s.forEach((u,D)=>{t&&!E(u,"EnableReflect")||(y.classes[D]=u)}),w.forEach((u,D)=>{t&&!E(u,"EnableReflect")||(y.interfaces[D]=u)}),p.forEach((u,D)=>{y.enums[D]=u}),l.forEach((u,D)=>{y.typeAliases[D]=u}),b.forEach((u,D)=>{y.constTypes[D]=u}),`;Reflect.__meta='${U(JSON.stringify(y))}'`}return{outputAllMetas:m,transform:(y,g)=>{if(g.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!g.startsWith(u))){a&&console.log(`transform id: ${g}`);try{let u=V.default.createSourceFile(g,y,V.default.ScriptTarget.Latest,!1);return K.length=0,P.length=0,k(u),`${K.join(";")};${y};${P.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${g}:`,u);return}}}}}var _e=process.cwd().replace(/\\/g,"/")+"/";function je(e){let n=ne(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(i,t)=>(t=t.replace(_e,""),t===e.entry?`${n.outputAllMetas()}
|
|
2
2
|
${i}`:n.transform(i,t))}}0&&(module.exports={DEBUG_CONFIG,parseSource,reflectLoader,reflectParserPlugin,setupReflectTypes,updateReflectModules});
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var We=Object.defineProperty,on=Object.defineProperties;var sn=Object.getOwnPropertyDescriptors;var Ue=Object.getOwnPropertySymbols;var an=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var He=(n,e,t)=>e in n?We(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,
|
|
2
|
-
caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(
|
|
3
|
-
-> `)}o(lt,"getErrorTraceMessages");var Ce=class Ce extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Ce,"ValidationError");var I=Ce;var Oe=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!h.validation)return u;switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:l(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case Qe(e):return u;case ue(e):return n instanceof Object?Ie(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case oe(e):return ln(n,e,t);case le(e):return pn(n,e,t);case fe(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case ce(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case $e(e):return un(n,e,t);case se(e):switch(typeof n){case"string":return n===dn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case ae(e):return mn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case Le(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return yn(n,e,t)}}o(D,"validateValue");function ln(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`,{value:n,type:e});if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||g,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(ln,"validateArrayValue");function un(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(un,"validateIndexedValue");function pn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(n[i],r,t);if(!a.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return u}o(pn,"validateTupleValue");function mn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if(i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||g;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=J(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:a,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(mn,"validateProperties");function yn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of Oe)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ke(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,C(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(yn,"validateSimpleValue");function Ie(n,e,t=3){if(e.classDefinition&&!Ke(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===g)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=j({},e);return delete i.classDefinition,D(n,i,t)}o(Ie,"validateClassInstance");function Ke(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Ke,"valueInstanceOf");function dn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(dn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:ue(n)?n.classDefinition.name:oe(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":ae(n)?"Object":le(n)?`(${n.tupleMembers.map(p).join(",")})`:fe(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":ce(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":se(n)?n.literalValue:$e(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var Ae=class Ae{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(Ae,"EnumDefinition");var pe=Ae,ke=new Map;function U(n){var e,t;if(!ke.has(n)){let i=(t=(e=M())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;ke.set(n,new pe(i))}return ke.get(n)}o(U,"getEnumDefinition");function Tn(n){var e;return((e=U(n))==null?void 0:e.names)||[]}o(Tn,"getEnumNames");function Dn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=U(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(Dn,"getEnumValues");var Se=new Map;function O(n){Se.set(n.name,n)}o(O,"registerSpecialType");function Xe(n){return Se.has(n)}o(Xe,"isSpecialType");function je(n,...e){let t=Se.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(je,"getSpecialTypeAlias");O({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?H(e,t=>t.isOptional=!0):void 0}});O({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:H(e,t=>t.isOptional=!1)}});O({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return H(e,t=>t.isReadonly=!0)}});O({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:g,valueType:t!=null?t:g}}}});O({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return me(e,s=>{var a;return(a=s.name===t.literalValue||(i==null?void 0:i.includes(s.name)))!=null?a:!1})}});O({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return me(e,s=>!(s.name===t.literalValue||i!=null&&i.includes(s.name)))}});O({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return gn(e,i)}}});O({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return bn(e,i)}}});O({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return{typeDef:e,reflectReference:t}}});function H(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>Ye(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:void 0}o(H,"getMappedType");function me(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?Ye(t):void 0).filter(t=>!!t)}}o(me,"getFilterKeyType");function gn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return me(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(gn,"getPickType");function bn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return me(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(bn,"getOmitType");function Ye(n,e){let t;return n instanceof x?t=new x({name:n.name,isReadonly:n.isReadOnly,isOptional:n.isOptional,isStatic:n.isStatic,accessor:n.accessor,type:n.rawType}):t={name:n.name,isOptional:n.isOptional,type:n.type},e==null||e(t),t}o(Ye,"copyPropertyDefinition");function Ee(n,e){var r,s,a;if(Xe(n))return e?je(n,...e):je(n);if(!ve.has(n)){let c=(s=(r=M())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;ve.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=ve.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let f=0;f<t.genericParams.length;f++){let m=t.genericParams[f];c[m]=e[f]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(Ee,"getTypeAliasDefinition");var ve=new Map;var g={name:"any"},hn={name:"null"},Mn={name:"undefined"};function Qe(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(Qe,"isIgnoredType");function Le(n){return!!(n.name&&De.includes(n.name))}o(Le,"isPrimitiveType");function oe(n){return!!n.arrayElementType}o(oe,"isArrayType");function se(n){return!!n.literalValue}o(se,"isLiteralType");function ae(n){return!!n.typeLiteralMembers}o(ae,"isTypeLiteralType");function fe(n){return!!n.unionMembers}o(fe,"isUnionType");function ce(n){return!!n.intersectionMembers}o(ce,"isIntersectionType");function le(n){return!!n.tupleMembers}o(le,"isTupleType");function ue(n){return!!n.classDefinition}o(ue,"isClassDefinition");function Rn(n){return!!n.generics}o(Rn,"hasGenerics");function $e(n){return!!n.index}o($e,"isIndexType");function C(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return g;if(n==="null")return hn;if(n==="undefined")return Mn;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?v.create(t,e).type:t.type;if(De.includes(n))return{name:n};if(Oe.map(a=>a.name).includes(n))return{name:n,generics:e};let i=E(n);if(i)return i.fromLib?{name:n,generics:e}:e?ne.create(i,e).type:i.type;let r=U(n);if(r)return r.type;let s=Ee(n,e);return s?s.type:g}o(C,"getTypeDefinition");var Ve=new Map;function y(n,e,t){let i=Ne(n);if(n===void 0)return g;let r=Ve.get(i);if(r)return r;let s={};if(Ve.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||C(n,t)||g;else if(typeof n.literalValue=="string")s.literalValue=n.literalValue;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(a=>y(a,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(a=>y(a,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(a=>y(a,e))});else if(n.typeLiteralMembers)s.typeLiteralMembers=n.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y(a.type,e,t)}));else if(n.generics){let a=n.generics[0],c=n.generics.slice(1).map(f=>y(f,e));Object.assign(s,y(a,e,c))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=g),Ve.delete(i),s}o(y,"fillType");function Ne(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Ne).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Ne(n[t])).join(",")+"}"}o(Ne,"stableStringify");var W={isPrimitiveType:Le,isArrayType:oe,isLiteralType:se,isTypeLiteralType:ae,isUnionType:fe,isIntersectionType:ce,isTupleType:le,isClassDefinition:ue,hasGenerics:Rn};function R(n){if(typeof n=="string"){let e=xn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?C(n):R(e)}return"array"in n?{arrayElementType:R(n.array)}:"union"in n?{unionMembers:n.union.map(R)}:"intersection"in n?{intersectionMembers:n.intersection.map(R)}:"tuple"in n?{tupleMembers:n.tuple.map(R)}:"generic"in n?C(n.name,n.generic.map(R)):n}o(R,"getTypeDef");function Ht(n,e,t=5){let i=D(n,R(e),t);return i.success||h.validationErrorHandler(new I(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(Ht,"assertType");function Wt(n){return wn(null,n)}o(Wt,"isNullable");function wn(n,e,t=5){return D(n,R(e),t).success}o(wn,"isType");function xn(n){let e=0,t="%%",i={};function r(f){let m=`${t}${e++}`;return i[m]=f,m}o(r,"addPlaceholder");function s(f){let m=f.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let T=m[1].trim(),b=i[T];return delete i[T],b}o(s,"getPlaceholder");function a(f,m,T,b){let w=0;for(;w<f.length;){let L=f.indexOf(m,w);if(L===-1)break;w=L+1;let k=f.indexOf(T,w);if(k===-1)throw new Fe("Illegal type string");let z=f.substring(L+1,k),V=r(z);b?f=`${f.substring(0,L+1)}${V}${f.substring(k)}`:f=`${f.substring(0,L)}${V}${f.substring(k+1)}`}return f}o(a,"replaceBracket");function c(f){let m=f.trim(),T=o($=>$.trim(),"trim"),b=o($=>$.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let w=s(m);if(w)return c(w);let L=m.split("|").map(T).filter(b);if(L.length>1)return{union:L.map(c)};let k=m.split("&").map(T).filter(b);if(k.length>1)return{intersection:k.map(c)};let z=m.match(/^\[(.*)]$/);if(z)return{tuple:z[1].split(",").map(T).filter(b).map(c)};let V=m.match(/^(.+)\[]$/);if(V)return{array:c(V[1])};let de=m.match(/^([^<]+)<(.+)>$/);if(de){let $=de[1].trim(),Te=c(de[2]);if(typeof Te=="string"){let rn=Te.split(",").map(T).filter(b).map(c);return{name:$,generic:rn}}else return{name:$,generic:[Te]}}return m}return o(c,"parseTypeRecursive"),c(n)}o(xn,"parseType");var _e=class _e extends Error{};o(_e,"TypeParseError");var Fe=_e;function Ze(n,e,t=3){return h.validation?(e=e||n.constructor.name,Ie(n,R(e),t)):u}o(Ze,"validateInstance");function Zt(n,e,t=1){if(!h.validation)return u;for(let i=0;i<n.length;i++){let r=Ze(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(Zt,"validateArray");function ei(n,e,t=1){if(!h.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],c=Ze(a,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:c,value:n,type:e})}return u}o(ei,"validateDictionary");var en=Symbol("VALIDATE_WRAPPER"),ci=o((n,e,t)=>Pn(n,e,t),"ReflectValidate");function Pn(n,e,t){if(!h.validation)return;let i=t.value;if(typeof i!="function"||J(i,en))return;let r=o(()=>{var f,m;return(m=(f=d(n))==null?void 0:f.methods)==null?void 0:m.find(T=>T.name===e)},"getMethodDef"),s=o(f=>nn(n,r(),f),"validateArgs"),a=o(f=>Cn(n,r(),f),"validateReturn"),c=o(function(...f){s(f);let m=i.call(this,...f);return a(m)},"newFunc");c[en]=i,t.value=c}o(Pn,"wrapValidateMethod");function nn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let a=t==null?void 0:t[s];if(a===void 0)if(!r.isOptional)h.validationErrorHandler(new I(`Illegal arguments for ${Je(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=D(a,r.type||g,1);c.success||(console.error("validateResult",c),h.validationErrorHandler(new I(`Illegal arguments for ${Je(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`,c)))})}o(nn,"validateMethodParams");function Cn(n,e,t){var s;if(!e)return t;let i=o((a,c)=>{let f=D(a,c,5);return f.success||(console.error(f.errorStackFlow),h.validationErrorHandler(new I(`result for ${Je(n.constructor.name,e)} doesn't match type ${c.name}:
|
|
4
|
-
${f.errorStackFlow}`,f))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||g),t instanceof Promise?t.then(a=>i(a,r||g)):i(t,r||g)}o(
|
|
1
|
+
var We=Object.defineProperty,on=Object.defineProperties;var sn=Object.getOwnPropertyDescriptors;var Ue=Object.getOwnPropertySymbols;var an=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var He=(n,e,t)=>e in n?We(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,k=(n,e)=>{for(var t in e||(e={}))an.call(e,t)&&He(n,t,e[t]);if(Ue)for(var t of Ue(e))fn.call(e,t)&&He(n,t,e[t]);return n},ze=(n,e)=>on(n,sn(e)),o=(n,e)=>We(n,"name",{value:e,configurable:!0});var Te=["string","number","boolean","bigint","symbol"],qe={string:String,number:Number,boolean:Boolean,object:Object};var N=Reflect,F;function M(){if(F)return F;let n=N.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{F=JSON.parse(cn(n))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}delete N.__meta;let e=F;return e.classDef=N.__classDef||{},delete N.__classDef,Reflect.defineProperty(N,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),F}o(M,"getRawMeta");function cn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(cn,"decode");var K=class K{constructor(e){this.name=e.name,this.isReadOnly=!!e.isReadonly,this.isOptional=!!e.isOptional,this.isPrivate=!!e.isPrivate,this.isStatic=!!e.isStatic,this.accessor=e.accessor,this.rawType=e.type}get type(){return y(this.rawType)}static from(e){return new K(e)}};o(K,"PropertyDefinition");var x=K,Q=class Q extends x{static create(e,t){let i=P(Q,e);return i.genericContext=t,i}get type(){return y(this.rawType,this.genericContext)}};o(Q,"GenericProperty");var q=Q;function P(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(P,"createInstance");function X(n,e){n.properties=e.properties.map(t=>q.create(t,n.genericContext)),n.methods=e.methods.map(t=>_.create(t,n.genericContext)),n instanceof j&&e instanceof S&&e.constructorMethod!==void 0&&(n.constructorMethod=_.create(e.constructorMethod,n.genericContext))}o(X,"buildPropertiesAndMethods");function De(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(De,"toDictionary");function Y(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(Y,"mapNotNull");function J(n,e){if(n!==void 0)return n[e]}o(J,"getValue");var ge=class ge{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type),isOptional:t.isOptional})))||[]}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get isAsync(){return!!this.rawDef.isAsync}get isConstructor(){return!!this.rawDef.isConstructor}};o(ge,"MethodDefinition");var Z=ge;function G(n){return new Z(n)}o(G,"fillMethod");var ee=class ee extends Z{static create(e,t){let i=P(ee,e);return i.genericContext=t,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return y(this.rawDef.returnType,this.genericContext)}};o(ee,"GenericMethod");var _=ee;var B=class B{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(G))||[],this.properties=((i=e.properties)==null?void 0:i.map(x.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=Y(this._implementationNames,e=>{var t;return E(e)||((t=d(e))==null?void 0:t.type)||C(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof B?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof B?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{name:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...t]}:{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(B,"InterfaceDefinition");var v=B,te=class te extends v{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=P(te,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),X(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(te,"GenericInterface");var ne=te,be=new Map;function E(n){var e,t;if(!be.has(n)){let i=(t=(e=M())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;be.set(n,new v(i))}return be.get(n)}o(E,"getInterfaceDefinition");var he=class he{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=d(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?G(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(G))||[],this.properties=((i=e.properties)==null?void 0:i.map(x.from))||[],this.jsClass=e.jsClass,this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let t=d(this.superClassName);t&&Object.assign(e,k({},t.allMethods))}return Object.assign(e,k({},De(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},De(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:Y(this._implementationNames,e=>E(e)||C(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof v?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(t=(e=this.superClass)==null?void 0:e.allImplementations)==null||t.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(t=>t.name===e)}get type(){var t,i;let e={};return(i=(t=this.superClass)==null?void 0:t.type.typeLiteralMembers)==null||i.forEach(r=>e[r.name]=r),this.properties.forEach(r=>e[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(e),fromLib:this.fromLib}}isSubClassOf(e){var t;return this.name===e||(t=this.superClass)!=null&&t.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let t=d(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(he,"ClassDefinition");var S=he,re=class re extends S{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=P(re,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),X(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(re,"GenericClass");var j=re,ie=new Map;function ln(n){var e;return((e=d(n))==null?void 0:e.jsClass)||qe[n]}o(ln,"getClassByName");function d(n){var e,t,i,r,s,a;switch(typeof n){case"object":return d(n.constructor);case"function":let c=d(n.name);if(c)return c;let f=Array.from(ie.values()).find(b=>b.jsClass===n);if(f)return f;let m=(t=Object.entries(((e=M())==null?void 0:e.classDef)||{}).find(([b,R])=>R===n))==null?void 0:t[0];return m?d(m):void 0;case"string":let T=n;if(!ie.has(T)){let b=(r=(i=M())==null?void 0:i.classes)==null?void 0:r[T];if(!b)return;let R=(a=(s=M())==null?void 0:s.classDef)==null?void 0:a[T];ie.set(T,new S(ze(k({},b),{jsClass:R})))}return ie.get(T)}}o(d,"getClassDefinition");var Re=class Re{constructor(){this.success=!0}};o(Re,"SuccessResult");var Me=Re,xe=class xe{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.value=i.value,this.type=i.type}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
|
|
2
|
+
caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(xe,"FailureResult");var we=xe,u=new Me,l=o((n,e,t)=>new we(n,e,t),"failedResult");function ut(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
|
|
3
|
+
-> `)}o(ut,"getErrorTraceMessages");var Pe=class Pe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Pe,"ValidationError");var O=Pe;var Ce=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!h.validation)return u;switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:l(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case Qe(e):return u;case ue(e):return n instanceof Object?Ie(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case oe(e):return un(n,e,t);case le(e):return mn(n,e,t);case fe(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case ce(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case Le(e):return pn(n,e,t);case se(e):switch(typeof n){case"string":return n===Tn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case ae(e):return yn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case Oe(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return dn(n,e,t)}}o(D,"validateValue");function un(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`,{value:n,type:e});if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||g,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(un,"validateArrayValue");function pn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(pn,"validateIndexedValue");function mn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(n[i],r,t);if(!a.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return u}o(mn,"validateTupleValue");function yn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||g;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=J(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:a,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(yn,"validateProperties");function dn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of Ce)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ke(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,C(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(dn,"validateSimpleValue");function Ie(n,e,t=3){if(e.classDefinition&&!Ke(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===g)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=k({},e);return delete i.classDefinition,D(n,i,t)}o(Ie,"validateClassInstance");function Ke(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Ke,"valueInstanceOf");function Tn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(Tn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:ue(n)?n.classDefinition.name:oe(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":ae(n)?"Object":le(n)?`(${n.tupleMembers.map(p).join(",")})`:fe(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":ce(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":se(n)?n.literalValue:Le(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var ke=class ke{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(ke,"EnumDefinition");var Ae=ke,$e=new Map;function U(n){var e,t;if(!$e.has(n)){let i=(t=(e=M())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;$e.set(n,new Ae(i))}return $e.get(n)}o(U,"getEnumDefinition");function Dn(n){var e;return((e=U(n))==null?void 0:e.names)||[]}o(Dn,"getEnumNames");function gn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=U(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(gn,"getEnumValues");var Se=new Map;function I(n){Se.set(n.name,n)}o(I,"registerSpecialType");function Xe(n){return Se.has(n)}o(Xe,"isSpecialType");function je(n,...e){let t=Se.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(je,"getSpecialTypeAlias");I({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?H(e,t=>t.isOptional=!0):void 0}});I({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:H(e,t=>t.isOptional=!1)}});I({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return H(e,t=>t.isReadonly=!0)}});I({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:g,valueType:t!=null?t:g}}}});I({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return pe(e,s=>{var a;return(a=s.name===t.literalValue||(i==null?void 0:i.includes(s.name)))!=null?a:!1})}});I({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return pe(e,s=>!(s.name===t.literalValue||i!=null&&i.includes(s.name)))}});I({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return bn(e,i)}}});I({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return hn(e,i)}}});I({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return{typeDef:e,reflectReference:t}}});function H(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>Ye(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:void 0}o(H,"getMappedType");function pe(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?Ye(t):void 0).filter(t=>!!t)}}o(pe,"getFilterKeyType");function bn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return pe(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(bn,"getPickType");function hn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return pe(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(hn,"getOmitType");function Ye(n,e){let t;return n instanceof x?t=new x({name:n.name,isReadonly:n.isReadOnly,isOptional:n.isOptional,isStatic:n.isStatic,accessor:n.accessor,type:n.rawType}):t={name:n.name,isOptional:n.isOptional,type:n.type},e==null||e(t),t}o(Ye,"copyPropertyDefinition");function Ee(n,e){var r,s,a;if(Xe(n))return e?je(n,...e):je(n);if(!ve.has(n)){let c=(s=(r=M())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;ve.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=ve.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let f=0;f<t.genericParams.length;f++){let m=t.genericParams[f];c[m]=e[f]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(Ee,"getTypeAliasDefinition");var ve=new Map;var g={name:"any"},Mn={name:"null"},wn={name:"undefined"};function Qe(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(Qe,"isIgnoredType");function Oe(n){return!!(n.name&&Te.includes(n.name))}o(Oe,"isPrimitiveType");function oe(n){return!!n.arrayElementType}o(oe,"isArrayType");function se(n){return!!n.literalValue}o(se,"isLiteralType");function ae(n){return!!n.typeLiteralMembers}o(ae,"isTypeLiteralType");function fe(n){return!!n.unionMembers}o(fe,"isUnionType");function ce(n){return!!n.intersectionMembers}o(ce,"isIntersectionType");function le(n){return!!n.tupleMembers}o(le,"isTupleType");function ue(n){return!!n.classDefinition}o(ue,"isClassDefinition");function Rn(n){return!!n.generics}o(Rn,"hasGenerics");function Le(n){return!!n.index}o(Le,"isIndexType");function C(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return g;if(n==="null")return Mn;if(n==="undefined")return wn;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?j.create(t,e).type:t.type;if(Te.includes(n))return{name:n};if(Ce.map(a=>a.name).includes(n))return{name:n,generics:e};let i=E(n);if(i)return i.fromLib?{name:n,generics:e}:e?ne.create(i,e).type:i.type;let r=U(n);if(r)return r.type;let s=Ee(n,e);return s?s.type:g}o(C,"getTypeDefinition");var Ve=new Map;function y(n,e,t){let i=Ne(n);if(n===void 0)return g;let r=Ve.get(i);if(r)return r;let s={};if(Ve.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||C(n,t)||g;else if(typeof n.literalValue=="string")s.literalValue=n.literalValue;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(a=>y(a,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(a=>y(a,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(a=>y(a,e))});else if(n.typeLiteralMembers)s.typeLiteralMembers=n.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y(a.type,e,t)}));else if(n.generics){let a=n.generics[0],c=n.generics.slice(1).map(f=>y(f,e));Object.assign(s,y(a,e,c))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=g),Ve.delete(i),s}o(y,"fillType");function Ne(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Ne).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Ne(n[t])).join(",")+"}"}o(Ne,"stableStringify");var W={isPrimitiveType:Oe,isArrayType:oe,isLiteralType:se,isTypeLiteralType:ae,isUnionType:fe,isIntersectionType:ce,isTupleType:le,isClassDefinition:ue,hasGenerics:Rn};function w(n){if(typeof n=="string"){let e=Pn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?C(n):w(e)}return"array"in n?{arrayElementType:w(n.array)}:"union"in n?{unionMembers:n.union.map(w)}:"intersection"in n?{intersectionMembers:n.intersection.map(w)}:"tuple"in n?{tupleMembers:n.tuple.map(w)}:"generic"in n?C(n.name,n.generic.map(w)):n}o(w,"getTypeDef");function Wt(n,e,t=5){let i=D(n,w(e),t);return i.success||h.validationErrorHandler(new O(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(Wt,"assertType");function zt(n){return xn(null,n)}o(zt,"isNullable");function xn(n,e,t=5){return D(n,w(e),t).success}o(xn,"isType");function Pn(n){let e=0,t="%%",i={};function r(f){let m=`${t}${e++}`;return i[m]=f,m}o(r,"addPlaceholder");function s(f){let m=f.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let T=m[1].trim(),b=i[T];return delete i[T],b}o(s,"getPlaceholder");function a(f,m,T,b){let R=0;for(;R<f.length;){let L=f.indexOf(m,R);if(L===-1)break;R=L+1;let A=f.indexOf(T,R);if(A===-1)throw new Fe("Illegal type string");let z=f.substring(L+1,A),V=r(z);b?f=`${f.substring(0,L+1)}${V}${f.substring(A)}`:f=`${f.substring(0,L)}${V}${f.substring(A+1)}`}return f}o(a,"replaceBracket");function c(f){let m=f.trim(),T=o($=>$.trim(),"trim"),b=o($=>$.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let R=s(m);if(R)return c(R);let L=m.split("|").map(T).filter(b);if(L.length>1)return{union:L.map(c)};let A=m.split("&").map(T).filter(b);if(A.length>1)return{intersection:A.map(c)};let z=m.match(/^\[(.*)]$/);if(z)return{tuple:z[1].split(",").map(T).filter(b).map(c)};let V=m.match(/^(.+)\[]$/);if(V)return{array:c(V[1])};let ye=m.match(/^([^<]+)<(.+)>$/);if(ye){let $=ye[1].trim(),de=c(ye[2]);if(typeof de=="string"){let rn=de.split(",").map(T).filter(b).map(c);return{name:$,generic:rn}}else return{name:$,generic:[de]}}return m}return o(c,"parseTypeRecursive"),c(n)}o(Pn,"parseType");var _e=class _e extends Error{};o(_e,"TypeParseError");var Fe=_e;function Ze(n,e,t=3){return h.validation?(e=e||n.constructor.name,Ie(n,w(e),t)):u}o(Ze,"validateInstance");function ei(n,e,t=2){if(!h.validation)return u;for(let i=0;i<n.length;i++){let r=Ze(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(ei,"validateArray");function ni(n,e,t=2){if(!h.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],c=Ze(a,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:c,value:n,type:e})}return u}o(ni,"validateDictionary");var en=Symbol("VALIDATE_WRAPPER"),li=o((n,e,t)=>Cn(n,e,t),"ReflectValidate");function Cn(n,e,t){if(!h.validation)return;let i=t.value;if(typeof i!="function"||J(i,en))return;let r=o(()=>{var f,m;return(m=(f=d(n))==null?void 0:f.methods)==null?void 0:m.find(T=>T.name===e)},"getMethodDef"),s=o(f=>nn(n,r(),f),"validateArgs"),a=o(f=>In(n,r(),f),"validateReturn"),c=o(function(...f){s(f);let m=i.call(this,...f);return a(m)},"newFunc");c[en]=i,t.value=c}o(Cn,"wrapValidateMethod");function nn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let a=t==null?void 0:t[s];if(a===void 0)if(!r.isOptional)h.validationErrorHandler(new O(`Illegal arguments for ${Je(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=D(a,r.type||g,1);c.success||(console.error("validateResult",c),h.validationErrorHandler(new O(`Illegal arguments for ${Je(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`,c)))})}o(nn,"validateMethodParams");function In(n,e,t){var s;if(!e)return t;let i=o((a,c)=>{let f=D(a,c,5);return f.success||(console.error(f.errorStackFlow),h.validationErrorHandler(new O(`result for ${Je(n.constructor.name,e)} doesn't match type ${c.name}:
|
|
4
|
+
${f.errorStackFlow}`,f))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||g),t instanceof Promise?t.then(a=>i(a,r||g)):i(t,r||g)}o(In,"validateMethodReturnValue");function Je(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Je,"getMethodDescription");function ui(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return nn(n,r,t),J(n,e).apply(n,t)}o(ui,"safeCall");var Ge=class Ge{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=w(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return D(s,i).success||this.exceptionHandler(new me(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return W.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):W.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return W.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new me(`class ${t.name} not reflected`)),e;let i=P(t.jsClass);return Object.assign(i,e),i}};o(Ge,"JSONTransfer");var tn=Ge,Be=class Be extends Error{};o(Be,"JSONError");var me=Be;var h={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};function Oi(){if(!h.debug)return M()}o(Oi,"getDebugInfo");export{me as JSONError,tn as JSONTransfer,h as ReflectConfig,li as ReflectValidate,W as TypeDefinition,Fe as TypeParseError,O as ValidationError,Wt as assertType,l as failedResult,ln as getClassByName,d as getClassDefinition,Oi as getDebugInfo,U as getEnumDefinition,Dn as getEnumNames,gn as getEnumValues,ut as getErrorTraceMessages,E as getInterfaceDefinition,Ee as getTypeAliasDefinition,w as getTypeDef,zt as isNullable,xn as isType,I as registerSpecialType,ui as safeCall,u as successResult,ei as validateArray,ni as validateDictionary,Ze as validateInstance};
|
package/dist/esm/parser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var q=(e,n,i)=>new Promise((s,a)=>{var r=l=>{try{p(i.next(l))}catch(b){a(b)}},w=l=>{try{p(i.throw(l))}catch(b){a(b)}},p=l=>l.done?s(l.value):Promise.resolve(l.value).then(r,w);p((i=i.apply(e,n)).next())});import H from"typescript";function R(e){return e||{}}var z=["string","number","boolean","bigint","symbol"];import t from"typescript";import*as M from"fs";import*as $ from"process";import*as h from"path";import{pathToFileURL as de}from"url";var W={OUTPUT_LOG:!1},v=new Map,O=new Map,_=new Map,C=new Map,J=new Map,F=new Set,Z={[t.SyntaxKind.BooleanKeyword]:"boolean",[t.SyntaxKind.StringKeyword]:"string",[t.SyntaxKind.BigIntKeyword]:"bigint",[t.SyntaxKind.NumberKeyword]:"number",[t.SyntaxKind.SymbolKeyword]:"symbol",[t.SyntaxKind.VoidKeyword]:"void",[t.SyntaxKind.UndefinedKeyword]:"undefined",[t.SyntaxKind.UnknownKeyword]:"unknown",[t.SyntaxKind.AnyKeyword]:"any",[t.SyntaxKind.ObjectKeyword]:"object"},I="any",te=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],se=["Mappable","EnableReflect","ReflectReference"];[...z,...te,...se].forEach(ce);se.forEach(e=>C.set(e,{name:e,type:e}));var j,ee=!1,L=Reflect;function ve(e){return q(this,null,function*(){let{filePaths:n,exclude:i,sourceFolder:s,distFolder:a}=e;if(s=h.resolve(s||$.cwd()),a=h.resolve(a||$.cwd()),L.__meta!==void 0)return;let r={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=ue(n);let w=n.map(p=>h.join(s,p));Q(w,i);for(let[p,l]of v)r.classes[p]=l;for(let[p,l]of O)r.interfaces[p]=l;for(let[p,l]of C)r.typeAliases[p]=l;for(let[p,l]of _)r.enums[p]=l;for(let[p,l]of J)r.constTypes[p]=l;L.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(p=>re(p,a)))})}function re(e,n){return q(this,null,function*(){let i=h.resolve(n,e);if(!M.existsSync(i))return;if(M.statSync(i).isDirectory()){let p=M.readdirSync(i);yield Promise.all(p.map(l=>re(h.join(e,l),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),w=yield import(de(a).href);L.__classDef={},Object.values(w).forEach(p=>{typeof p=="function"&&L.__classDef&&(L.__classDef[p.name]=p)})})}function Q(e,n){if(e||(e=[$.cwd()]),e=ue(e),!ee){let i=ae(e,n),s=t.createProgram(i,{});j=s.getTypeChecker(),i=i.map(r=>ne(r)),s.getSourceFiles().filter(r=>i.includes(ne(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{S(`parse file: ${r.fileName}`),oe(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of F.keys())!v.has(r)&&!O.has(r)&&!_.has(r)&&!C.has(r)&&!z.includes(r)&&!te.includes(r)&&(S(`remove unknown typeName: ${r}`),F.delete(r));Array.from(v.values()).forEach(be),Array.from(O.values()).forEach(xe),[v,O,C].forEach(Pe),ee=!0}return{classDefinitions:v,interfaceDefinitions:O,enumDefinitions:_,typeAliasDefinitions:C,constTypeDefinitions:J}}function ae(e,n){let i=[];return e.forEach(s=>{if(s=h.resolve(s),Ee(s,n)){S(`ignore excluded ${s}`);return}if(!M.existsSync(s)){console.error(`Path ${s} does not exist.`);return}if(M.statSync(s).isFile()){i.push(s);return}M.readdirSync(s).forEach(w=>i.push(...ae([h.join(s,w)],n)))}),i}function oe(e,n){t.isClassDeclaration(e)?ye(e,n):t.isInterfaceDeclaration(e)?ge(e,n):t.isEnumDeclaration(e)?we(e,n):t.isTypeAliasDeclaration(e)?Te(e,n):t.isConstTypeReference(e)?De(e):e.forEachChild(i=>oe(i,n))}function ye(e,n){var b,K,P,N,E,k,m,T,y,g,u,D,U,X,Y;let i=c(e.name);if(!i)return;let s=c((P=(K=(b=e.heritageClauses)==null?void 0:b.find(o=>o.token===t.SyntaxKind.ExtendsKeyword))==null?void 0:K.types)==null?void 0:P[0].expression),a=(E=(N=e.heritageClauses)==null?void 0:N.find(o=>o.token===t.SyntaxKind.ImplementsKeyword))==null?void 0:E.types.map(o=>c(o.expression)),r=[],w=[],p;for(let o of e.members)if(t.isPropertyDeclaration(o))r.push({name:c(o.name),isOptional:o.questionToken!==void 0,type:d(o),isPrivate:(k=o.modifiers)==null?void 0:k.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),isStatic:(m=o.modifiers)==null?void 0:m.some(f=>f.kind===t.SyntaxKind.StaticKeyword),isReadonly:(T=o.modifiers)==null?void 0:T.some(f=>f.kind===t.SyntaxKind.ReadonlyKeyword)});else if(t.isConstructorDeclaration(o))p={name:"constructor",isPrivate:(y=o.modifiers)==null?void 0:y.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0})),isConstructor:!0};else if(t.isMethodDeclaration(o))w.push({name:c(o.name),returnType:d(o),isPrivate:(g=o.modifiers)==null?void 0:g.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),isStatic:(u=o.modifiers)==null?void 0:u.some(f=>f.kind===t.SyntaxKind.StaticKeyword),isAsync:(D=o.modifiers)==null?void 0:D.some(f=>f.kind===t.SyntaxKind.AsyncKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0}))});else if(t.isGetAccessorDeclaration(o)){let f=r.find(A=>A.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((U=o.modifiers)==null?void 0:U.some(A=>A.kind===t.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(t.isSetAccessorDeclaration(o)){let f=r.find(A=>A.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((X=o.modifiers)==null?void 0:X.some(A=>A.kind===t.SyntaxKind.PrivateKeyword))||!1}}let l={name:i,constructorMethod:p,superClassName:s,implementations:a,properties:r,methods:w,genericsParams:(Y=e.typeParameters)==null?void 0:Y.map(o=>c(o.name)),fromLib:n};if(v.has(i))throw new Error(`Duplicate defined for class "${i}"`);S(`Define class: ${c(e.name)}`),v.set(i,l)}function ge(e,n){var b,K,P,N,E,k;let i=c(e.name);if(!i)return;let s=((K=(b=e.heritageClauses)==null?void 0:b.find(m=>m.token===t.SyntaxKind.ExtendsKeyword))==null?void 0:K.types.map(m=>c(m.expression)))||[],a=[],r=[],w,p;for(let m of e.members)t.isPropertySignature(m)?a.push({name:c(m.name),isOptional:m.questionToken!==void 0,type:d(m),isPrivate:((P=m.modifiers)==null?void 0:P.some(T=>T.kind===t.SyntaxKind.PrivateKeyword))||!1,isReadonly:((N=m.modifiers)==null?void 0:N.some(T=>T.kind===t.SyntaxKind.ReadonlyKeyword))||!1}):t.isMethodSignature(m)?r.push({name:m.name.text,returnType:d(m),isPrivate:((E=m.modifiers)==null?void 0:E.some(T=>T.kind===t.SyntaxKind.PrivateKeyword))||!1,args:m.parameters.map(T=>({name:c(T.name),type:d(T),isOptional:T.questionToken!==void 0}))}):t.isIndexSignatureDeclaration(m)&&(m.parameters[0]&&(w=d(m.parameters[0])),p=d(m));let l=O.get(i);l?(l.implementations=G(l.implementations||[],s),l.methods=G(l.methods||[],r,(m,T)=>m.name===T.name),l.properties=G(l.properties||[],a,(m,T)=>m.name===T.name),p&&(l.index={keyType:w,valueType:p}),S(`Merge interface ${c(e.name)}`)):(l={name:i,implementations:s,methods:r,properties:a,index:p?{keyType:w,valueType:p}:void 0,genericsParams:(k=e.typeParameters)==null?void 0:k.map(m=>c(m.name)),fromLib:n},O.set(i,l),S(`Define interface ${c(e.name)}`))}function we(e,n){let i=c(e.name);if(i){if(_.has(i))throw new Error(`Duplicate defined for enum: ${i}`);_.set(i,{name:i,members:e.members.map(s=>({name:c(s.name),initializer:c(s.initializer)})),fromLib:n}),S(`Define enum: ${c(e.name)}`)}}function Te(e,n){var r;S(`Define typeAlias: ${c(e.name)}`);let i=d(e),s=(r=e.typeParameters)==null?void 0:r.map(w=>c(w.name)),a=c(e.name);if(C.has(a))throw new Error(`Duplicate defined for typeAlias: ${a}`);C.set(a,{name:a,type:i,genericParams:s,fromLib:n})}function De(e){let n=e.parent.parent;t.isVariableDeclaration(n)&&n.initializer&&t.isAsExpression(n.initializer)&&J.set(c(n.name),fe(n.initializer.expression))}function fe(e){return t.isArrayLiteralExpression(e)?Re(e):t.isObjectLiteralExpression(e)?he(e):t.isNumericLiteral(e)?"number":t.isStringLiteral(e)?"string":t.isBigIntLiteral(e)?"bigint":[t.SyntaxKind.TrueKeyword,t.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":I}function Re(e){let n=[];return e.elements.forEach(i=>{if(t.isStringLiteral(i))return n.push(c(i))}),n.length===0?I:n.length===1?n[0]:{unionMembers:n}}function he(e){let n=[];return e.properties.map(i=>{t.isPropertyAssignment(i)?n.push({name:c(i.name),type:fe(i.initializer)}):S(`unsupported property: ${i.name}`)}),{typeLiteralMembers:n}}function ce(e){F.add(e)}function d(e,n=!1){if(e.type&&!n)return x(e.type);if(!j)return console.error("TypeChecker not initialized!"),I;let i=j.getTypeAtLocation(e),s=j.typeToTypeNode(i,void 0,void 0);return s?x("type"in s?s.type:s):I}function x(e){let n={};if(e===void 0)return I;if(t.isTypeReferenceNode(e))if(ce(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(i=>x(i))];else return c(e.typeName);else if(t.isFunctionTypeNode(e))n.isFunction=!0;else if(t.isConstructorTypeNode(e))n.isConstructor=!0;else{if(t.isTypeQueryNode(e))return d(e);if(t.isTypeLiteralNode(e)){let i=[];e.members.forEach(s=>{var a,r;t.isPropertySignature(s)?i.push({name:c(s.name),isOptional:s.questionToken!==void 0,type:d(s)}):t.isIndexSignatureDeclaration(s)?n.index={keyType:(a=s.parameters)!=null&&a[0].type?d((r=s.parameters)==null?void 0:r[0]):void 0,valueType:d(s)}:i.push({name:c(s.name)||"",isOptional:s.questionToken!==void 0,type:x()})}),n.typeLiteralMembers=i}else if(t.isArrayTypeNode(e))n.arrayElementType=x(e.elementType);else if(t.isTupleTypeNode(e))n.tupleMembers=e.elements.map(x);else if(t.isOptionalTypeNode(e))Object.assign(n,d(e)),n.isOptionalInTuple=!0;else{if(t.isRestTypeNode(e))return d(e);if(t.isUnionTypeNode(e))n.unionMembers=e.types.map(x);else if(t.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(x);else{if(t.isConditionalTypeNode(e))return d(e);if(t.isInferTypeNode(e))return d(e);if(t.isParenthesizedTypeNode(e))return d(e);if(t.isThisTypeNode(e))return d(e);if(t.isTypeOperatorNode(e)&&e.operator===t.SyntaxKind.KeyOfKeyword)return d(e,!0);if(t.isIndexedAccessTypeNode(e))return d(e,!0);if(t.isMappedTypeNode(e))n.index={keyType:x(e.typeParameter.constraint),valueType:x(e.type)};else if(t.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(Z).includes(String(e.kind)))return Z[e.kind]||I;if(t.isNamedTupleMember(e))Object.assign(n,d(e));else return d(e,!0)}}}}return n}var G=(e,n,i)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(a=>(i||(()=>a===s))(a,s)))))||[],...n||[]];function V(e,n){if(e!==void 0&&e!==I)return typeof e=="string"?F.has(e)||n!=null&&n.includes(e)?e:void 0:e}function be(e){var n,i;(n=e.methods)==null||n.forEach(s=>pe(s,e.genericsParams)),(i=e.properties)==null||i.forEach(s=>le(s,e.genericsParams))}function xe(e){var n,i;(n=e.methods)==null||n.forEach(s=>pe(s,e.genericsParams)),(i=e.properties)==null||i.forEach(s=>le(s,e.genericsParams))}function le(e,n){e.type=V(e.type,n)}function pe(e,n){var i;(i=e.args)==null||i.forEach(s=>s.type=V(s.type,n)),e.returnType=V(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return t.isQualifiedName(n)?c(n.right):n.getText()}catch(n){return e.text}}function B(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(i=>{let[s,a]=i;a===!1||a===void 0||a===null?delete n[s]:a instanceof Array?a.length===0?delete n[s]:a.forEach(B):B(a)})}function Pe(e){for(let n of e.values())B(n)}function Ee(e,n){return n?(n=n instanceof Array?n:[n],n.some(i=>(i instanceof RegExp||(i=new RegExp(i.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(i)))):!1}function ne(e,n=$.cwd()){return ie(e).replace(ie(n)+"/","")}function ie(e){let n=h.sep;return e.split(n).join("/")}function ue(e){return e instanceof Array?e:[e]}function S(e){W.OUTPUT_LOG&&console.log(e)}function me(e){let{sourcePaths:n,exclude:i,forEnabledClassOnly:s,outputLog:a}=e;if(a&&(W.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${i}, forEnabledClassOnly: ${s}`);let{classDefinitions:r,interfaceDefinitions:w,enumDefinitions:p,typeAliasDefinitions:l,constTypeDefinitions:b}=Q(n,i),K=[],P=[];function N(y){let g=[];return(()=>{let u=r.get(y);if(u){u.superClassName&&g.push(u.superClassName),g.push(...u.implementations||[]);return}let D=w.get(y);if(D){g.push(...D.implementations||[]);return}l.get(y)&&g.push(y)})(),g.flatMap(u=>[u,...N(u)])||[]}function E(y,g){return N(y.name).includes(g)}function k(y){if(H.isClassDeclaration(y)&&y.name!==void 0){let g=y.name.text,u=r.get(g);if(!g||!u||s&&!E(u,"EnableReflect"))return;P.push(`Reflect.registerClass?Reflect.registerClass({${g}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${g}}))`);return}y.forEachChild(k)}function m(){let y={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return r.forEach((u,D)=>{s&&!E(u,"EnableReflect")||(y.classes[D]=u)}),w.forEach((u,D)=>{s&&!E(u,"EnableReflect")||(y.interfaces[D]=u)}),p.forEach((u,D)=>{y.enums[D]=u}),l.forEach((u,D)=>{y.typeAliases[D]=u}),b.forEach((u,D)=>{y.constTypes[D]=u}),`;Reflect.__meta='${btoa(JSON.stringify(y))}'`}return{outputAllMetas:m,transform:(y,g)=>{if(g.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!g.startsWith(u))){a&&console.log(`transform id: ${g}`);try{let u=H.createSourceFile(g,y,H.ScriptTarget.Latest,!1);return K.length=0,P.length=0,k(u),`${K.join(";")};${y};${P.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${g}:`,u);return}}}}}var Se=process.cwd().replace(/\\/g,"/")+"/";function Fe(e){let n=me(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(i,s)=>(s=s.replace(Se,""),s===e.entry?`${n.outputAllMetas()}
|
|
2
|
-
${i}`:n.transform(i,
|
|
1
|
+
var z=(e,n,i)=>new Promise((r,a)=>{var s=l=>{try{p(i.next(l))}catch(b){a(b)}},w=l=>{try{p(i.throw(l))}catch(b){a(b)}},p=l=>l.done?r(l.value):Promise.resolve(l.value).then(s,w);p((i=i.apply(e,n)).next())});import X from"typescript";function R(e){return e||{}}var G=["string","number","boolean","bigint","symbol"];import t from"typescript";import*as M from"fs";import*as $ from"process";import*as h from"path";import{pathToFileURL as ye}from"url";function j(e){return Buffer.from(e,"utf8").toString("base64")}var J={OUTPUT_LOG:!1},v=new Map,O=new Map,_=new Map,C=new Map,Q=new Map,U=new Set,ee={[t.SyntaxKind.BooleanKeyword]:"boolean",[t.SyntaxKind.StringKeyword]:"string",[t.SyntaxKind.BigIntKeyword]:"bigint",[t.SyntaxKind.NumberKeyword]:"number",[t.SyntaxKind.SymbolKeyword]:"symbol",[t.SyntaxKind.VoidKeyword]:"void",[t.SyntaxKind.UndefinedKeyword]:"undefined",[t.SyntaxKind.UnknownKeyword]:"unknown",[t.SyntaxKind.AnyKeyword]:"any",[t.SyntaxKind.ObjectKeyword]:"object"},I="any",re=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],se=["Mappable","EnableReflect","ReflectReference"];[...G,...re,...se].forEach(le);se.forEach(e=>C.set(e,{name:e,type:e}));var F,ne=!1,L=Reflect;function Ie(e){return z(this,null,function*(){let{filePaths:n,exclude:i,sourceFolder:r,distFolder:a}=e;if(r=h.resolve(r||$.cwd()),a=h.resolve(a||$.cwd()),L.__meta!==void 0)return;let s={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=me(n);let w=n.map(p=>h.join(r,p));H(w,i);for(let[p,l]of v)s.classes[p]=l;for(let[p,l]of O)s.interfaces[p]=l;for(let[p,l]of C)s.typeAliases[p]=l;for(let[p,l]of _)s.enums[p]=l;for(let[p,l]of Q)s.constTypes[p]=l;L.__meta=j(JSON.stringify(s)),yield Promise.all(n.map(p=>ae(p,a)))})}function ae(e,n){return z(this,null,function*(){let i=h.resolve(n,e);if(!M.existsSync(i))return;if(M.statSync(i).isDirectory()){let p=M.readdirSync(i);yield Promise.all(p.map(l=>ae(h.join(e,l),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),w=yield import(ye(a).href);L.__classDef={},Object.values(w).forEach(p=>{typeof p=="function"&&L.__classDef&&(L.__classDef[p.name]=p)})})}function H(e,n){if(e||(e=[$.cwd()]),e=me(e),!ne){let i=oe(e,n),r=t.createProgram(i,{});F=r.getTypeChecker(),i=i.map(s=>ie(s)),r.getSourceFiles().filter(s=>i.includes(ie(s.fileName))||s.fileName.endsWith("/lib.es5.d.ts")).forEach(s=>{S(`parse file: ${s.fileName}`),fe(s,s.fileName.endsWith("/lib.es5.d.ts"))});for(let s of U.keys())!v.has(s)&&!O.has(s)&&!_.has(s)&&!C.has(s)&&!G.includes(s)&&!re.includes(s)&&(S(`remove unknown typeName: ${s}`),U.delete(s));Array.from(v.values()).forEach(xe),Array.from(O.values()).forEach(Pe),[v,O,C].forEach(Ee),ne=!0}return{classDefinitions:v,interfaceDefinitions:O,enumDefinitions:_,typeAliasDefinitions:C,constTypeDefinitions:Q}}function oe(e,n){let i=[];return e.forEach(r=>{if(r=h.resolve(r),Se(r,n)){S(`ignore excluded ${r}`);return}if(!M.existsSync(r)){console.error(`Path ${r} does not exist.`);return}if(M.statSync(r).isFile()){i.push(r);return}M.readdirSync(r).forEach(w=>i.push(...oe([h.join(r,w)],n)))}),i}function fe(e,n){t.isClassDeclaration(e)?ge(e,n):t.isInterfaceDeclaration(e)?we(e,n):t.isEnumDeclaration(e)?Te(e,n):t.isTypeAliasDeclaration(e)?De(e,n):t.isConstTypeReference(e)?Re(e):e.forEachChild(i=>fe(i,n))}function ge(e,n){var b,K,P,N,E,k,m,T,y,g,u,D,q,Y,Z;let i=c(e.name);if(!i)return;let r=c((P=(K=(b=e.heritageClauses)==null?void 0:b.find(o=>o.token===t.SyntaxKind.ExtendsKeyword))==null?void 0:K.types)==null?void 0:P[0].expression),a=(E=(N=e.heritageClauses)==null?void 0:N.find(o=>o.token===t.SyntaxKind.ImplementsKeyword))==null?void 0:E.types.map(o=>c(o.expression)),s=[],w=[],p;for(let o of e.members)if(t.isPropertyDeclaration(o))s.push({name:c(o.name),isOptional:o.questionToken!==void 0,type:d(o),isPrivate:(k=o.modifiers)==null?void 0:k.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),isStatic:(m=o.modifiers)==null?void 0:m.some(f=>f.kind===t.SyntaxKind.StaticKeyword),isReadonly:(T=o.modifiers)==null?void 0:T.some(f=>f.kind===t.SyntaxKind.ReadonlyKeyword)});else if(t.isConstructorDeclaration(o))p={name:"constructor",isPrivate:(y=o.modifiers)==null?void 0:y.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0})),isConstructor:!0};else if(t.isMethodDeclaration(o))w.push({name:c(o.name),returnType:d(o),isPrivate:(g=o.modifiers)==null?void 0:g.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),isStatic:(u=o.modifiers)==null?void 0:u.some(f=>f.kind===t.SyntaxKind.StaticKeyword),isAsync:(D=o.modifiers)==null?void 0:D.some(f=>f.kind===t.SyntaxKind.AsyncKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0}))});else if(t.isGetAccessorDeclaration(o)){let f=s.find(A=>A.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},s.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((q=o.modifiers)==null?void 0:q.some(A=>A.kind===t.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(t.isSetAccessorDeclaration(o)){let f=s.find(A=>A.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},s.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((Y=o.modifiers)==null?void 0:Y.some(A=>A.kind===t.SyntaxKind.PrivateKeyword))||!1}}let l={name:i,constructorMethod:p,superClassName:r,implementations:a,properties:s,methods:w,genericsParams:(Z=e.typeParameters)==null?void 0:Z.map(o=>c(o.name)),fromLib:n};if(v.has(i))throw new Error(`Duplicate defined for class "${i}"`);S(`Define class: ${c(e.name)}`),v.set(i,l)}function we(e,n){var b,K,P,N,E,k;let i=c(e.name);if(!i)return;let r=((K=(b=e.heritageClauses)==null?void 0:b.find(m=>m.token===t.SyntaxKind.ExtendsKeyword))==null?void 0:K.types.map(m=>c(m.expression)))||[],a=[],s=[],w,p;for(let m of e.members)t.isPropertySignature(m)?a.push({name:c(m.name),isOptional:m.questionToken!==void 0,type:d(m),isPrivate:((P=m.modifiers)==null?void 0:P.some(T=>T.kind===t.SyntaxKind.PrivateKeyword))||!1,isReadonly:((N=m.modifiers)==null?void 0:N.some(T=>T.kind===t.SyntaxKind.ReadonlyKeyword))||!1}):t.isMethodSignature(m)?s.push({name:m.name.text,returnType:d(m),isPrivate:((E=m.modifiers)==null?void 0:E.some(T=>T.kind===t.SyntaxKind.PrivateKeyword))||!1,args:m.parameters.map(T=>({name:c(T.name),type:d(T),isOptional:T.questionToken!==void 0}))}):t.isIndexSignatureDeclaration(m)&&(m.parameters[0]&&(w=d(m.parameters[0])),p=d(m));let l=O.get(i);l?(l.implementations=B(l.implementations||[],r),l.methods=B(l.methods||[],s,(m,T)=>m.name===T.name),l.properties=B(l.properties||[],a,(m,T)=>m.name===T.name),p&&(l.index={keyType:w,valueType:p}),S(`Merge interface ${c(e.name)}`)):(l={name:i,implementations:r,methods:s,properties:a,index:p?{keyType:w,valueType:p}:void 0,genericsParams:(k=e.typeParameters)==null?void 0:k.map(m=>c(m.name)),fromLib:n},O.set(i,l),S(`Define interface ${c(e.name)}`))}function Te(e,n){let i=c(e.name);if(i){if(_.has(i))throw new Error(`Duplicate defined for enum: ${i}`);_.set(i,{name:i,members:e.members.map(r=>({name:c(r.name),initializer:c(r.initializer)})),fromLib:n}),S(`Define enum: ${c(e.name)}`)}}function De(e,n){var s;S(`Define typeAlias: ${c(e.name)}`);let i=d(e),r=(s=e.typeParameters)==null?void 0:s.map(w=>c(w.name)),a=c(e.name);if(C.has(a))throw new Error(`Duplicate defined for typeAlias: ${a}`);C.set(a,{name:a,type:i,genericParams:r,fromLib:n})}function Re(e){let n=e.parent.parent;t.isVariableDeclaration(n)&&n.initializer&&t.isAsExpression(n.initializer)&&Q.set(c(n.name),ce(n.initializer.expression))}function ce(e){return t.isArrayLiteralExpression(e)?he(e):t.isObjectLiteralExpression(e)?be(e):t.isNumericLiteral(e)?"number":t.isStringLiteral(e)?"string":t.isBigIntLiteral(e)?"bigint":[t.SyntaxKind.TrueKeyword,t.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":I}function he(e){let n=[];return e.elements.forEach(i=>{if(t.isStringLiteral(i))return n.push(c(i))}),n.length===0?I:n.length===1?n[0]:{unionMembers:n}}function be(e){let n=[];return e.properties.map(i=>{t.isPropertyAssignment(i)?n.push({name:c(i.name),type:ce(i.initializer)}):S(`unsupported property: ${i.name}`)}),{typeLiteralMembers:n}}function le(e){U.add(e)}function d(e,n=!1){if(e.type&&!n)return x(e.type);if(!F)return console.error("TypeChecker not initialized!"),I;let i=F.getTypeAtLocation(e),r=F.typeToTypeNode(i,void 0,void 0);return r?x("type"in r?r.type:r):I}function x(e){let n={};if(e===void 0)return I;if(t.isTypeReferenceNode(e))if(le(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(i=>x(i))];else return c(e.typeName);else if(t.isFunctionTypeNode(e))n.isFunction=!0;else if(t.isConstructorTypeNode(e))n.isConstructor=!0;else{if(t.isTypeQueryNode(e))return d(e);if(t.isTypeLiteralNode(e)){let i=[];e.members.forEach(r=>{var a,s;t.isPropertySignature(r)?i.push({name:c(r.name),isOptional:r.questionToken!==void 0,type:d(r)}):t.isIndexSignatureDeclaration(r)?n.index={keyType:(a=r.parameters)!=null&&a[0].type?d((s=r.parameters)==null?void 0:s[0]):void 0,valueType:d(r)}:i.push({name:c(r.name)||"",isOptional:r.questionToken!==void 0,type:x()})}),n.typeLiteralMembers=i}else if(t.isArrayTypeNode(e))n.arrayElementType=x(e.elementType);else if(t.isTupleTypeNode(e))n.tupleMembers=e.elements.map(x);else if(t.isOptionalTypeNode(e))Object.assign(n,d(e)),n.isOptionalInTuple=!0;else{if(t.isRestTypeNode(e))return d(e);if(t.isUnionTypeNode(e))n.unionMembers=e.types.map(x);else if(t.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(x);else{if(t.isConditionalTypeNode(e))return d(e);if(t.isInferTypeNode(e))return d(e);if(t.isParenthesizedTypeNode(e))return d(e);if(t.isThisTypeNode(e))return d(e);if(t.isTypeOperatorNode(e)&&e.operator===t.SyntaxKind.KeyOfKeyword)return d(e,!0);if(t.isIndexedAccessTypeNode(e))return d(e,!0);if(t.isMappedTypeNode(e))n.index={keyType:x(e.typeParameter.constraint),valueType:x(e.type)};else if(t.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(ee).includes(String(e.kind)))return ee[e.kind]||I;if(t.isNamedTupleMember(e))Object.assign(n,d(e));else return d(e,!0)}}}}return n}var B=(e,n,i)=>[...(e==null?void 0:e.filter(r=>!(n!=null&&n.some(a=>(i||(()=>a===r))(a,r)))))||[],...n||[]];function V(e,n){if(e!==void 0&&e!==I)return typeof e=="string"?U.has(e)||n!=null&&n.includes(e)?e:void 0:e}function xe(e){var n,i;(n=e.methods)==null||n.forEach(r=>ue(r,e.genericsParams)),(i=e.properties)==null||i.forEach(r=>pe(r,e.genericsParams))}function Pe(e){var n,i;(n=e.methods)==null||n.forEach(r=>ue(r,e.genericsParams)),(i=e.properties)==null||i.forEach(r=>pe(r,e.genericsParams))}function pe(e,n){e.type=V(e.type,n)}function ue(e,n){var i;(i=e.args)==null||i.forEach(r=>r.type=V(r.type,n)),e.returnType=V(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return t.isQualifiedName(n)?c(n.right):n.getText()}catch(n){return e.text}}function W(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(i=>{let[r,a]=i;a===!1||a===void 0||a===null?delete n[r]:a instanceof Array?a.length===0?delete n[r]:a.forEach(W):W(a)})}function Ee(e){for(let n of e.values())W(n)}function Se(e,n){return n?(n=n instanceof Array?n:[n],n.some(i=>(i instanceof RegExp||(i=new RegExp(i.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(i)))):!1}function ie(e,n=$.cwd()){return te(e).replace(te(n)+"/","")}function te(e){let n=h.sep;return e.split(n).join("/")}function me(e){return e instanceof Array?e:[e]}function S(e){J.OUTPUT_LOG&&console.log(e)}function de(e){let{sourcePaths:n,exclude:i,forEnabledClassOnly:r,outputLog:a}=e;if(a&&(J.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${i}, forEnabledClassOnly: ${r}`);let{classDefinitions:s,interfaceDefinitions:w,enumDefinitions:p,typeAliasDefinitions:l,constTypeDefinitions:b}=H(n,i),K=[],P=[];function N(y){let g=[];return(()=>{let u=s.get(y);if(u){u.superClassName&&g.push(u.superClassName),g.push(...u.implementations||[]);return}let D=w.get(y);if(D){g.push(...D.implementations||[]);return}l.get(y)&&g.push(y)})(),g.flatMap(u=>[u,...N(u)])||[]}function E(y,g){return N(y.name).includes(g)}function k(y){if(X.isClassDeclaration(y)&&y.name!==void 0){let g=y.name.text,u=s.get(g);if(!g||!u||r&&!E(u,"EnableReflect"))return;P.push(`Reflect.registerClass?Reflect.registerClass({${g}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${g}}))`);return}y.forEachChild(k)}function m(){let y={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return s.forEach((u,D)=>{r&&!E(u,"EnableReflect")||(y.classes[D]=u)}),w.forEach((u,D)=>{r&&!E(u,"EnableReflect")||(y.interfaces[D]=u)}),p.forEach((u,D)=>{y.enums[D]=u}),l.forEach((u,D)=>{y.typeAliases[D]=u}),b.forEach((u,D)=>{y.constTypes[D]=u}),`;Reflect.__meta='${j(JSON.stringify(y))}'`}return{outputAllMetas:m,transform:(y,g)=>{if(g.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!g.startsWith(u))){a&&console.log(`transform id: ${g}`);try{let u=X.createSourceFile(g,y,X.ScriptTarget.Latest,!1);return K.length=0,P.length=0,k(u),`${K.join(";")};${y};${P.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${g}:`,u);return}}}}}var Me=process.cwd().replace(/\\/g,"/")+"/";function Ge(e){let n=de(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(i,r)=>(r=r.replace(Me,""),r===e.entry?`${n.outputAllMetas()}
|
|
2
|
+
${i}`:n.transform(i,r))}}export{J as DEBUG_CONFIG,H as parseSource,de as reflectLoader,Ge as reflectParserPlugin,Ie as setupReflectTypes,ae as updateReflectModules};
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function encode(str: string): string;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Dictionary, RawTypeDefinition } from '../raw';
|
|
2
2
|
import { type ClassDefinition } from './ClassDefinition';
|
|
3
|
-
import type { PropertyDefinition } from './PropertyDefinition';
|
|
4
3
|
import { type IPropertyDefinition } from './PropertyDefinition';
|
|
5
4
|
export declare const anyType: {
|
|
6
5
|
name: string;
|
|
@@ -42,7 +41,7 @@ export declare function isLiteralType(type: TypeDefinition): type is {
|
|
|
42
41
|
literalValue: string;
|
|
43
42
|
};
|
|
44
43
|
export declare function isTypeLiteralType(type: TypeDefinition): type is {
|
|
45
|
-
typeLiteralMembers:
|
|
44
|
+
typeLiteralMembers: IPropertyDefinition[];
|
|
46
45
|
};
|
|
47
46
|
export declare function isUnionType(type: TypeDefinition): type is {
|
|
48
47
|
unionMembers: TypeDefinition[];
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ValidationError } from './validates';
|
|
2
2
|
import type { RawReflectMeta } from '../raw';
|
|
3
3
|
export { TypeDefinition } from './TypeDefinition';
|
|
4
|
-
export { getClassDefinition, getClassByName, ClassDefinition } from './ClassDefinition';
|
|
5
|
-
export { getInterfaceDefinition, InterfaceDefinition } from './InterfaceDefinition';
|
|
6
|
-
export { getTypeAliasDefinition, TypeAliasDefinition } from './TypeAliasDefinition';
|
|
7
|
-
export { getEnumDefinition, getEnumNames, getEnumValues, EnumDefinition } from './EnumDefinition';
|
|
4
|
+
export { getClassDefinition, getClassByName, type ClassDefinition } from './ClassDefinition';
|
|
5
|
+
export { getInterfaceDefinition, type InterfaceDefinition } from './InterfaceDefinition';
|
|
6
|
+
export { getTypeAliasDefinition, type TypeAliasDefinition } from './TypeAliasDefinition';
|
|
7
|
+
export { getEnumDefinition, getEnumNames, getEnumValues, type EnumDefinition } from './EnumDefinition';
|
|
8
8
|
export * from './json';
|
|
9
9
|
export * from './validates';
|
|
10
10
|
export { registerSpecialType } from './special-types';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Dictionary } from '../../raw';
|
|
2
2
|
import type { ValidateResult } from './ValidateResult';
|
|
3
3
|
import { type Type } from './Type';
|
|
4
|
-
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
4
|
+
import type { TypeDefinition } from '..';
|
|
5
|
+
export declare function validateInstance<T extends object>(instance: T, type?: Type | TypeDefinition, depth?: number): ValidateResult;
|
|
6
|
+
export declare function validateArray<T extends object>(array: T[], type?: Type | TypeDefinition, depth?: number): ValidateResult;
|
|
7
|
+
export declare function validateDictionary<T extends object>(dict: Dictionary<T>, type?: Type | TypeDefinition, depth?: number): ValidateResult;
|