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