ts-ref-kit 1.1.26 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var G=Object.defineProperty,yn=Object.defineProperties,dn=Object.getOwnPropertyDescriptor,Tn=Object.getOwnPropertyDescriptors,gn=Object.getOwnPropertyNames,Ke=Object.getOwnPropertySymbols;var We=Object.prototype.hasOwnProperty,Dn=Object.prototype.propertyIsEnumerable;var Qe=(n,e,t)=>e in n?G(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,L=(n,e)=>{for(var t in e||(e={}))We.call(e,t)&&Qe(n,t,e[t]);if(Ke)for(var t of Ke(e))Dn.call(e,t)&&Qe(n,t,e[t]);return n},Y=(n,e)=>yn(n,Tn(e)),o=(n,e)=>G(n,"name",{value:e,configurable:!0});var bn=(n,e)=>{for(var t in e)G(n,t,{get:e[t],enumerable:!0})},hn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of gn(e))!We.call(n,r)&&r!==t&&G(n,r,{get:()=>e[r],enumerable:!(i=dn(e,r))||i.enumerable});return n};var wn=n=>hn(G({},"__esModule",{value:!0}),n);var Gn={};bn(Gn,{FailureResult:()=>ce,JSONError:()=>q,JSONTransfer:()=>Be,ReflectConfig:()=>y,ReflectValidate:()=>jn,TypeDefinition:()=>_,TypeParseError:()=>De,ValidationError:()=>w,assertType:()=>Ln,failedResult:()=>l,getClassByName:()=>Ye,getClassDefinition:()=>T,getDebugInfo:()=>Jn,getEnumDefinition:()=>F,getEnumNames:()=>tn,getEnumValues:()=>rn,getErrorTraceMessages:()=>xn,getInterfaceDefinition:()=>k,getTypeAliasDefinition:()=>ge,getTypeDef:()=>x,isNullable:()=>Sn,isType:()=>ln,reflectReady:()=>Xe,registerSpecialType:()=>P,safeCall:()=>_n,safeSetValue:()=>en,successResult:()=>u,validateArray:()=>kn,validateDictionary:()=>Vn,validateInstance:()=>Je,validateValue:()=>g});module.exports=wn(Gn);var we=["string","number","boolean","bigint","symbol"],ze={string:String,number:Number,boolean:Boolean,object:Object};var B=Reflect,H,qe,Xe=new Promise(n=>{qe=n});function R(){if(H)return H;let n=B.__meta;if(n===void 0){y.validationErrorHandler(new w("No reflect meta found, reflect is disabled."));return}try{H=JSON.parse(Mn(n))}catch(t){console.error(t),y.validationErrorHandler(new w("Illegal reflect meta found, reflect is disabled"));return}delete B.__meta;let e=H;return e.classDef=B.__classDef||{},delete B.__classDef,Reflect.defineProperty(B,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),qe(),H}o(R,"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 D={classMap:new Map,interfaceMap:new Map,enumMap:new Map,typeAliasMap:new Map,invalidateClasses(n){n.forEach(e=>this.classMap.delete(e))},invalidateInterfaces(n){n.forEach(e=>this.interfaceMap.delete(e))},invalidateEnums(n){n.forEach(e=>this.enumMap.delete(e))},invalidateTypeAliases(n){n.forEach(e=>this.typeAliasMap.delete(e))},clear(){this.classMap.clear(),this.interfaceMap.clear(),this.enumMap.clear(),this.typeAliasMap.clear()}};var ee=class ee{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 ee(e)}};o(ee,"PropertyDefinition");var I=ee,ne=class ne extends I{static create(e,t){let i=O(ne,e);return i.genericContext=t,i}get type(){return d({rawType:this.rawType,genericContext:this.genericContext})}};o(ne,"GenericProperty");var Z=ne;function O(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(O,"createInstance");function te(n,e){n.properties=e.properties.map(t=>Z.create(t,n.genericContext)),n.methods=e.methods.map(t=>U.create(t,n.genericContext)),n instanceof j&&e instanceof V&&e.constructorMethod!==void 0&&(n.constructorMethod=U.create(e.constructorMethod,n.genericContext))}o(te,"buildPropertiesAndMethods");function Me(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(Me,"toDictionary");function ie(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(ie,"mapNotNull");function xe(n,e,t){n!==void 0&&(n[e]=t)}o(xe,"setValue");function K(n,e){if(n!==void 0)return n[e]}o(K,"getValue");function E(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(E,"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 re=Re;function Q(n){return new re(n)}o(Q,"fillMethod");var oe=class oe extends re{static create(e,t){let i=O(oe,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(oe,"GenericMethod");var U=oe;var W=class W{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(Q))||[],this.properties=((i=e.properties)==null?void 0:i.map(I.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=ie(this._implementationNames,e=>{var t;return k(e)||((t=T(e))==null?void 0:t.type)||A(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof W?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{interfaceName:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof W?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{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(W,"InterfaceDefinition");var N=W,ae=class ae extends N{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=O(ae,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),te(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(ae,"GenericInterface");var se=ae;function k(n){var e,t;if(!D.interfaceMap.has(n)){let i=(t=(e=R())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;D.interfaceMap.set(n,new N(i))}return D.interfaceMap.get(n)}o(k,"getInterfaceDefinition");var Ce=class Ce{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?Q(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(Q))||[],this.properties=((i=e.properties)==null?void 0:i.map(I.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:ie(this._implementationNames,e=>k(e)||A(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof N?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(Ce,"ClassDefinition");var V=Ce,fe=class fe extends V{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=O(fe,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),te(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 j=fe;function Ye(n){var e;return((e=T(n))==null?void 0:e.jsClass)||ze[n]}o(Ye,"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(D.classMap.values()).find(M=>M.jsClass===n);if(c)return c;let m=(t=Object.entries(((e=R())==null?void 0:e.classDef)||{}).find(([M,C])=>C===n))==null?void 0:t[0];return m?T(m):void 0;case"string":let b=n;if(!D.classMap.has(b)){let M=(r=(i=R())==null?void 0:i.classes)==null?void 0:r[b];if(!M)return;let C=(a=(s=R())==null?void 0:s.classDef)==null?void 0:a[b];D.classMap.set(b,new V(Y(L({},M),{jsClass:C})))}return D.classMap.get(b)}}o(T,"getClassDefinition");var Ie=class Ie{constructor(){this.success=!0}};o(Ie,"SuccessResult");var Pe=Ie,Oe=class Oe{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(Oe,"FailureResult");var ce=Oe,u=new Pe,l=o((n,e,t)=>new ce(n,e,t),"failedResult");function xn(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
- -> `)}o(xn,"getErrorTraceMessages");var Ae=class Ae extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Ae,"ValidationError");var w=Ae;var $e=[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 nn(e):return u;case Te(e):return n instanceof Object?ve(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case le(e):return Rn(n,e,t);case de(e):return Pn(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 Se(e):return Cn(n,e,t);case ue(e):switch(typeof n){case"string":return n===E(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 In(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case Le(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return On(n,e,t)}}o(g,"validateValue");function Rn(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||h,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(Rn,"validateArrayValue");function Cn(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(Cn,"validateIndexedValue");function Pn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=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(Pn,"validateTupleValue");function In(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||h;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=K(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(In,"validateProperties");function On(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of $e)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ze(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=g(n,A(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(On,"validateSimpleValue");function ve(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===h)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=L({},e);return delete i.classDefinition,g(n,i,t)}o(ve,"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");function en(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 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)),xe(n,e,t)}o(en,"safeSetValue");var ke=class ke{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(ke,"EnumDefinition");var Ee=ke;function F(n){var e,t;if(!D.enumMap.has(n)){let i=(t=(e=R())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;D.enumMap.set(n,new Ee(i))}return D.enumMap.get(n)}o(F,"getEnumDefinition");function tn(n){var e;return((e=F(n))==null?void 0:e.names)||[]}o(tn,"getEnumNames");function rn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=F(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(rn,"getEnumValues");var Ve=new Map;function P(n){Ve.set(n.name,n)}o(P,"registerSpecialType");function on(n){return Ve.has(n)}o(on,"isSpecialType");function je(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(je,"getSpecialTypeAlias");P({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?z(e,t=>t.isOptional=!0):void 0}});P({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:z(e,t=>t.isOptional=!1)}});P({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return z(e,t=>t.isReadonly=!0)}});P({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:h,valueType:t!=null?t:h}}}});P({name:"Pick",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=>E(s.literalValue)))!=null?r:[E(e.literalValue)];if(n.typeLiteralMembers)return fn(n,s=>t.includes(s.name))}o(sn,"getPickType");P({name:"Omit",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=>E(s.literalValue)))!=null?r:[E(e.literalValue)];if(n.typeLiteralMembers)return fn(n,s=>!t.includes(s.name))}o(an,"getOmitType");P({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 sn(e,i)}}});P({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 an(e,i)}}});P({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return Y(L({},e),{reflectReference:t})}});function z(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>cn(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>z(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>z(t,e)).filter(t=>t!==void 0)}:void 0}o(z,"getMappedType");function fn(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?cn(t):void 0).filter(t=>!!t)}}o(fn,"getFilterKeyType");function cn(n,e){let t;return n instanceof I?t=new I({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(cn,"copyPropertyDefinition");function ge(n,e){var r,s,a;if(on(n))return e?je(n,...e):je(n);if(!D.typeAliasMap.has(n)){let f=(s=(r=R())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!f||!f.type)return;D.typeAliasMap.set(n,{name:n,type:f.type,genericParams:f.genericParams,fromLib:f.fromLib})}let t=D.typeAliasMap.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 h={name:"any"},An={name:"null"},$n={name:"undefined"};function nn(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(nn,"isIgnoredType");function Le(n){return!!(n.name&&we.includes(n.name))}o(Le,"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 vn(n){return!!n.generics}o(vn,"hasGenerics");function Se(n){return!!n.index}o(Se,"isIndexType");function A(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return h;if(n==="null")return An;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($e.map(a=>a.name).includes(n))return{name:n,generics:e};let i=k(n);if(i)return i.fromLib?{name:n,generics:e}:e?se.create(i,e).type:i.type;let r=F(n);if(r)return r.type;let s=ge(n,e);return s?s.type:(y.debug&&console.warn(`${n} not registered...`),h)}o(A,"getTypeDefinition");var Ne=new Map;function d(n){let{rawType:e,genericContext:t,genericArgs:i}=n,r=Fe(e);if(e===void 0)return h;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])||A(e,i)||h;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=h),Ne.delete(r),a}o(d,"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 _={isPrimitiveType:Le,isArrayType:le,isLiteralType:ue,isTypeLiteralType:pe,isUnionType:me,isIntersectionType:ye,isTupleType:de,isClassDefinition:Te,hasGenerics:vn};function x(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"?A(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?A(n.name,n.generic.map(x)):n}o(x,"getTypeDef");function Ln(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(Ln,"assertType");function Sn(n){return ln(null,n)}o(Sn,"isNullable");function ln(n,e,t=5){return g(n,x(e),t).success}o(ln,"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 b=m[1].trim(),M=i[b];return delete i[b],M}o(s,"getPlaceholder");function a(c,m,b,M){let C=0;for(;C<c.length;){let $=c.indexOf(m,C);if($===-1)break;C=$+1;let S=c.indexOf(b,C);if(S===-1)throw new De("Illegal type string");let X=c.substring($+1,S),J=r(X);M?c=`${c.substring(0,$+1)}${J}${c.substring(S)}`:c=`${c.substring(0,$)}${J}${c.substring(S+1)}`}return c}o(a,"replaceBracket");function f(c){let m=c.trim(),b=o(v=>v.trim(),"trim"),M=o(v=>v.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let C=s(m);if(C)return f(C);let $=m.split("|").map(b).filter(M);if($.length>1)return{union:$.map(f)};let S=m.split("&").map(b).filter(M);if(S.length>1)return{intersection:S.map(f)};let X=m.match(/^\[(.*)]$/);if(X)return{tuple:X[1].split(",").map(b).filter(M).map(f)};let J=m.match(/^(.+)\[]$/);if(J)return{array:f(J[1])};let be=m.match(/^([^<]+)<(.+)>$/);if(be){let v=be[1].trim(),he=f(be[2]);if(typeof he=="string"){let mn=he.split(",").map(b).filter(M).map(f);return{name:v,generic:mn}}else return{name:v,generic:[he]}}return m}return o(f,"parseTypeRecursive"),f(n)}o(En,"parseType");var _e=class _e extends Error{};o(_e,"TypeParseError");var De=_e;function Je(n,e,t=3){return y.validation?(e=e||n.constructor.name,ve(n,x(e),t)):u}o(Je,"validateInstance");function kn(n,e,t=2){if(!y.validation)return u;for(let i=0;i<n.length;i++){let r=Je(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(kn,"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=Je(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 un=Symbol("VALIDATE_WRAPPER"),jn=o((n,e,t)=>Nn(n,e,t),"ReflectValidate");function Nn(n,e,t){if(!y.validation)return;let i=t.value;if(typeof i!="function"||K(i,un))return;let r=o(()=>{var c,m;return(m=(c=T(n))==null?void 0:c.methods)==null?void 0:m.find(b=>b.name===e)},"getMethodDef"),s=o(c=>pn(n,r(),c),"validateArgs"),a=o(c=>Fn(n,r(),c),"validateReturn"),f=o(function(...c){s(c);let m=i.call(this,...c);return a(m)},"newFunc");f[un]=i,t.value=f}o(Nn,"wrapValidateMethod");function pn(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 ${Ge(n.constructor.name,e)}: ${r.name} is not optional`));else return;let f=g(a,r.type||h,1);f.success||(console.error("validateResult",f),y.validationErrorHandler(new w(`Illegal arguments for ${Ge(n.constructor.name,e)}: ${r.name}: ${r.name} ${f.errorMessage}`,f)))})}o(pn,"validateMethodParams");function Fn(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 ${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])||h),t instanceof Promise?t.then(a=>i(a,r||h)):i(t,r||h)}o(Fn,"validateMethodReturnValue");function Ge(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Ge,"getMethodDescription");function _n(n,e,...t){let i=T(n);if(!i)return;let r=i.allMethods[e];if(r)return pn(n,r,t),K(n,e).apply(n,t)}o(_n,"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 q(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return _.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):_.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return _.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new q(`class ${t.name} not reflected`)),e;let i=O(t.jsClass);return Object.assign(i,e),i}};o(He,"JSONTransfer");var Be=He,Ue=class Ue extends Error{};o(Ue,"JSONError");var q=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 Jn(){if(y.debug)return;let n=R();if(n!==void 0)return{raw:n,instances:D,config:y}}o(Jn,"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,reflectReady,registerSpecialType,safeCall,safeSetValue,successResult,validateArray,validateDictionary,validateInstance,validateValue});
1
+ "use strict";var F=Object.defineProperty,_t=Object.defineProperties,Ft=Object.getOwnPropertyDescriptor,Jt=Object.getOwnPropertyDescriptors,Gt=Object.getOwnPropertyNames,Ue=Object.getOwnPropertySymbols;var Qe=Object.prototype.hasOwnProperty,Bt=Object.prototype.propertyIsEnumerable;var Ke=(t,e,n)=>e in t?F(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,A=(t,e)=>{for(var n in e||(e={}))Qe.call(e,n)&&Ke(t,n,e[n]);if(Ue)for(var n of Ue(e))Bt.call(e,n)&&Ke(t,n,e[n]);return t},Y=(t,e)=>_t(t,Jt(e)),o=(t,e)=>F(t,"name",{value:e,configurable:!0});var Ht=(t,e)=>{for(var n in e)F(t,n,{get:e[n],enumerable:!0})},Ut=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Gt(e))!Qe.call(t,r)&&r!==n&&F(t,r,{get:()=>e[r],enumerable:!(i=Ft(e,r))||i.enumerable});return t};var Kt=t=>Ut(F({},"__esModule",{value:!0}),t);var nn={};Ht(nn,{FailureResult:()=>fe,JSONError:()=>z,JSONTransfer:()=>W,ReflectClass:()=>lt,ReflectConfig:()=>T,ReflectContext:()=>u,ReflectModule:()=>q,ReflectValidate:()=>en,TypeDefinition:()=>L,TypeParseError:()=>De,ValidationError:()=>C,assertType:()=>Vt,createReflectValidate:()=>ct,extension:()=>d,failedResult:()=>p,fillType:()=>vt,getClassByName:()=>Dt,getClassDefinition:()=>ht,getDebugInfo:()=>gt,getEnumDefinition:()=>Rt,getEnumNames:()=>Ct,getEnumValues:()=>wt,getErrorTraceMessages:()=>Qt,getInterfaceDefinition:()=>bt,getRawMeta:()=>Tt,getReflectContext:()=>D,getReflectModule:()=>yt,getTypeAliasDefinition:()=>xt,getTypeDef:()=>It,getTypeDefinition:()=>Mt,isNullable:()=>Pt,isType:()=>Ot,preservedTypes:()=>ce,reflectReady:()=>st,registerSpecialType:()=>I,safeCall:()=>Nt,safeSetValue:()=>$t,setReflectModule:()=>dt,successResult:()=>m,validateArray:()=>At,validateClassInstance:()=>kt,validateDictionary:()=>Et,validateInstance:()=>St,validateValue:()=>jt});module.exports=Kt(nn);var O="default";function J(t){return t||{}}o(J,"Dictionary");var xe=["string","number","boolean","bigint","symbol"],We={string:String,number:Number,boolean:Boolean,object:Object};var qe=O;function Xe(t){qe=t||O}o(Xe,"setDefaultReflectModuleName");function R(){return qe}o(R,"getDefaultReflectModuleName");var Re=class Re{constructor(e=R()){this._instanceStore={classMap:new Map,interfaceMap:new Map,enumMap:new Map,typeAliasMap:new Map};this.moduleName=e||R()}get instanceStore(){return this._instanceStore}};o(Re,"ReflectContext");var u=Re,ze=new Map;function D(t=R()){let e=t||R(),n=ze.get(e);return n||(n=new u(e),ze.set(e,n)),n}o(D,"getReflectContext");var ee=class ee{constructor(e,n=D()){this.context=n,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 this.context.fillType({rawType:this.rawType})}static from(e,n){return new ee(e,n)}};o(ee,"PropertyDefinition");var V=ee,te=class te extends V{static create(e,n){let i=P(te,e);return i.genericContext=n,i}get type(){return this.context.fillType({rawType:this.rawType,genericContext:this.genericContext})}};o(te,"GenericProperty");var Z=te;function P(t,e){let n=Object.create(t.prototype);return e!==void 0&&Object.assign(n,e),n}o(P,"createInstance");function ne(t,e){t.properties=e.properties.map(n=>Z.create(n,t.genericContext)),t.methods=e.methods.map(n=>G.create(n,t.genericContext)),t instanceof $&&e instanceof k&&e.constructorMethod!==void 0&&(t.constructorMethod=G.create(e.constructorMethod,t.genericContext))}o(ne,"buildPropertiesAndMethods");function Ce(t,e){let n={};return t.forEach(i=>{let[r,s]=e(i);n[r]=s}),n}o(Ce,"toDictionary");function ie(t,e){return(t==null?void 0:t.map(e).filter(n=>n!==void 0))||[]}o(ie,"mapNotNull");function we(t,e,n){t!==void 0&&(t[e]=n)}o(we,"setValue");function B(t,e){if(t!==void 0)return t[e]}o(B,"getValue");function j(t){return t===void 0?t:t.length>=2&&(t[0]==='"'&&t[t.length-1]==='"'||t[0]==="'"&&t[t.length-1]==="'")?t.substring(1,t.length-1):t}o(j,"trimQuotes");var Me=class Me{constructor(e,n=D()){this.context=n,this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return this.context.fillType({rawType:this.rawDef.returnType})}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(n=>({name:n.name,type:this.context.fillType({rawType:n.type}),isOptional:n.isOptional})))||[]}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get isAsync(){return!!this.rawDef.isAsync}get isConstructor(){return!!this.rawDef.isConstructor}};o(Me,"MethodDefinition");var re=Me;function H(t,e){return new re(t,e)}o(H,"fillMethod");var oe=class oe extends re{static create(e,n){let i=P(oe,e);return i.genericContext=n,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(n=>({name:n.name,type:this.context.fillType({rawType:n.type,genericContext:this.genericContext}),isOptional:n.isOptional})))||[]}get returnType(){return this.context.fillType({rawType:this.rawDef.returnType,genericContext:this.genericContext})}};o(oe,"GenericMethod");var G=oe;var Ye=Symbol("reflect-types.extensions");function d(t,e){var i;let n=(i=Reflect.get(t,Ye))!=null?i:[];n.includes(e)||(Object.entries(Object.getOwnPropertyDescriptors(e.prototype)).forEach(([r,s])=>{r!=="constructor"&&Reflect.defineProperty(t.prototype,r,s)}),Object.entries(Object.getOwnPropertyDescriptors(e)).forEach(([r,s])=>{r==="prototype"||r==="name"||r==="length"||Reflect.defineProperty(t,r,s)}),n.push(e),Reflect.set(t,Ye,n))}o(d,"extension");var U=class U{constructor(e,n=D()){var i,r,s,a;this.context=n,this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((i=e.methods)==null?void 0:i.map(l=>H(l,n)))||[],this.properties=((r=e.properties)==null?void 0:r.map(l=>V.from(l,n)))||[],this.generics=(s=e.genericsParams)!=null?s:[],this.fromLib=(a=e.fromLib)!=null?a:!1}get implementations(){return this._implementations||(this._implementations=ie(this._implementationNames,e=>{var n;return this.context.getInterfaceDefinition(e)||((n=this.context.getClassDefinition(e))==null?void 0:n.type)||this.context.getTypeDefinition(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(n=>{n instanceof U?n.allImplementations.forEach(i=>e.add(i)):e.add(n)}),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={},n=[];return this.implementations.forEach(i=>{let r=i instanceof U?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):n.push(r)}),this.properties.forEach(i=>e[i.name]=i),n.length>0?{interfaceName:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...n]}:{interfaceName:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(U,"InterfaceDefinition");var N=U,ae=class ae extends N{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(n,i){let r=P(ae,n);r.genericArgs=i;let s=r;return s.buildGenericContext(),ne(s,n),s}buildGenericContext(){var n;this.genericContext={},(n=this.generics)==null||n.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(ae,"GenericInterface");var se=ae;d(u,class extends u{getInterfaceDefinition(t){var n,i;let e=this.instanceStore;if(!e.interfaceMap.has(t)){let r=(i=(n=this.getRawMeta())==null?void 0:n.interfaces)==null?void 0:i[t];if(!r)return;e.interfaceMap.set(t,new N(r,this))}return e.interfaceMap.get(t)}});var ve=class ve{constructor(e,n=D()){var i,r,s,a;this.context=n,this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=n.getClassDefinition(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?H(e.constructorMethod,n):void 0,this.methods=((i=e.methods)==null?void 0:i.map(l=>H(l,n)))||[],this.properties=((r=e.properties)==null?void 0:r.map(l=>V.from(l,n)))||[],this.jsClass=e.jsClass,this.generics=(s=e.genericsParams)!=null?s:[],this.fromLib=(a=e.fromLib)!=null?a:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let n=this.context.getClassDefinition(this.superClassName);n&&Object.assign(e,A({},n.allMethods))}return Object.assign(e,A({},Ce(this.methods,n=>[n.name,n]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},Ce(this.properties,n=>[n.name,n]))}get implementations(){return this._implementations?this._implementations:ie(this._implementationNames,e=>this.context.getInterfaceDefinition(e)||this.context.getTypeDefinition(e))}get allImplementations(){var e,n;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof N?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(n=(e=this.superClass)==null?void 0:e.allImplementations)==null||n.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(n=>n.name===e)}get type(){var n,i;let e={};return(i=(n=this.superClass)==null?void 0:n.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 n;return this.name===e||(n=this.superClass)!=null&&n.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let n=this.context.getClassDefinition(e);return n?n.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(ve,"ClassDefinition");var k=ve,le=class le extends k{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(n,i){let r=P(le,n);r.genericArgs=i;let s=r;return s.buildGenericContext(),ne(s,n),s}buildGenericContext(){var n;this.genericContext={},(n=this.generics)==null||n.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(le,"GenericClass");var $=le;d(u,class extends u{getClassByName(t){var e;return((e=this.getClassDefinition(t))==null?void 0:e.jsClass)||We[t]}getClassDefinition(t){var n,i,r,s,a,l;let e=this.instanceStore;switch(typeof t){case"object":return this.getClassDefinition(t.constructor);case"function":let c=this.getClassDefinition(t.name);if(c)return c;let f=Array.from(e.classMap.values()).find(w=>w.jsClass===t);if(f)return f;let h=(i=Object.entries(((n=this.getRawMeta())==null?void 0:n.classDef)||{}).find(([w,v])=>v===t))==null?void 0:i[0];return h?this.getClassDefinition(h):void 0;case"string":let x=t;if(!e.classMap.has(x)){let w=(s=(r=this.getRawMeta())==null?void 0:r.classes)==null?void 0:s[x];if(!w)return;let v=(l=(a=this.getRawMeta())==null?void 0:a.classDef)==null?void 0:l[x];e.classMap.set(x,new k(Y(A({},w),{jsClass:v}),this))}return e.classMap.get(x)}}});var Ve=class Ve{constructor(e){var n;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=(n=e.fromLib)!=null?n:!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 Ie=Ve;d(u,class extends u{getEnumDefinition(t){var n,i;let e=this.instanceStore;if(!e.enumMap.has(t)){let r=(i=(n=this.getRawMeta())==null?void 0:n.enums)==null?void 0:i[t];if(!r)return;e.enumMap.set(t,new Ie(r))}return e.enumMap.get(t)}getEnumNames(t){var e;return((e=this.getEnumDefinition(t))==null?void 0:e.names)||[]}getEnumValues(t){let e=Object.entries(t)[0];if(!e)return[];let[n,i]=e,r=this.getEnumDefinition(n);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}});var Oe=class Oe{constructor(){this.success=!0}};o(Oe,"SuccessResult");var Pe=Oe,Se=class Se{constructor(e,n,i){this.errorCode=e;this.errorDesc=n;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 n,i;let e="";return this.path!==void 0&&(typeof this.path=="string"?e=`.${this.path}`:e=`[${this.path}]`),e+((i=(n=this.cause)==null?void 0:n.errorPath)!=null?i:"")}};o(Se,"FailureResult");var fe=Se,m=new Pe,p=o((t,e,n)=>new fe(t,e,n),"failedResult");function Qt(t){let e=o(n=>n.errorMessage?[n.errorMessage,...n.cause?e(n.cause):[]]:[],"getAllTraceMessages");return e(t).join(`
3
+ -> `)}o(Qt,"getErrorTraceMessages");var Ae=class Ae extends Error{constructor(e,n){super(e),this.failureResult=n}};o(Ae,"ValidationError");var C=Ae;var ce=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];d(u,class extends u{validateValue(t,e,n=1){var i;if(!T.validation)return m;if(e.validator)return e.validator(t,n);switch(!0){case e.name==="undefined":return t===void 0?m:p(100,`declared as ${y(e)} but actually not`,{value:t,type:e});case e.name==="null":return t===null?m:p(101,`declared as ${y(e)} but actually not`,{value:t,type:e});case Ze(e):return m;case ge(e):return t instanceof Object?this.validateClassInstance(t,e,n):p(200,`declared as ${y(e)} but actually not an object`,{value:t,type:e});case ue(e):return this.validateArrayValue(t,e,n);case Te(e):return this.validateTupleValue(t,e,n);case ye(e):let r=[];for(let s of e.unionMembers||[]){let a=this.validateValue(t,s,n);if(a.success)return m;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?p(321,`declared as ${y(e)} but not match`,{value:t,type:e,cause:r.find(s=>{var a;return((a=s.type)==null?void 0:a.name)!=="undefined"})}):p(321,`declared as ${y(e)} but all value not match`,{value:t,type:e,detailCause:r.filter(s=>{var a;return((a=s.type)==null?void 0:a.name)!=="undefined"})}):p(320,`declared as ${y(e)} but all value not match`,{value:t,type:e,detailCause:r});case de(e):for(let s of e.intersectionMembers||[]){let a=this.validateValue(t,s,n);if(!a.success)return p(330,`declared as ${y(e)} but all value not match`,{cause:a,value:t,type:e})}return m;case je(e):return this.validateIndexedValue(t,e,n);case pe(e):switch(typeof t){case"string":return t===j(e.literalValue)?m:p(110,`declared as string ${y(e)} but value not match`,{value:t,type:e});case"number":return t===Number(e.literalValue)?m:p(111,`declared as number ${y(e)} but value not match`,{value:t,type:e});case"bigint":return t===BigInt(e.literalValue)?m:p(112,`declared as bigint ${y(e)} but value not match`,{value:t,type:e});case"boolean":return t===!!e.literalValue?m:p(113,`declared as boolean ${y(e)} but value not match`,{value:t,type:e});default:return e.literalValue==="null"&&t===null?m:t===e.literalValue?m:p(114,`declared as ${y(e)} but value not match`,{value:t,type:e})}case me(e):return this.validateProperties(t,e,n);case e.isFunction:case e.isConstructor:return typeof t=="function"?m:p(150,`declared as ${y(e)} but actually not`,{value:t,type:e});case Ee(e):return t==null?p(120,`declared as ${y(e)} but actually ${t}`,{value:t,type:e}):typeof t===e.name?m:p(121,`declared as ${y(e)} but actually ${typeof t}`,{value:t,type:e});default:return this.validateSimpleValue(t,e,n)}}validateArrayValue(t,e,n=1){if(!Array.isArray(t))return p(300,`declared as ${y(e)} but actually not`,{value:t,type:e});if(n===0)return m;for(let i=0;i<t.length;i++){let r=t[i],s=this.validateValue(r,e.arrayElementType||b,n-1);if(!s.success)return p(301,`declared as ${y(e)} but [${i}] not match`,{cause:s,value:t,type:e,path:i})}return m}validateIndexedValue(t,e,n=1){if(t===null)return p(400,"declared as indexedType but actually is null",{value:t,type:e});if(t===void 0)return p(401,"declared as indexedType but actually is undefined",{value:t,type:e});if(typeof t!="object")return p(410,`declared as indexedType but actually is ${typeof t}`,{value:t,type:e});for(let[i,r]of Object.entries(t)){let s=this.validateValue(r,e.index.valueType,n-1);if(!s.success)return p(420,`declared as ${y(e)} but [${i}] not match`,{cause:s,value:t,type:e,path:i});if(e.index.keyType&&(s=this.validateValue(i,e.index.keyType,n-1),!s.success))return p(421,`declared as ${y(e)} but [${i}] not match`,{cause:s,value:t,type:e,path:i})}return m}validateTupleValue(t,e,n=1){if(!Array.isArray(t))return p(310,`declared as ${y(e)} but actually not a tuple`,{value:t,type:e});if(n===0)return m;let i=0;for(let r of e.tupleMembers){let s=t[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=this.validateValue(s,r,n);if(!a.success)return p(311,`declared as ${y(e)} but not all values in tuple match`,{cause:a,value:t,type:e})}return m}validateProperties(t,e,n=1){if(!(t instanceof Object))return p(210,`declared as ${y(e)} but not an object`,{value:t,type:e});for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return m;if(i.name.startsWith("[")&&i.name.endsWith("]"))return m;if(n===0)return m;let r=i.type||b;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=B(t,i.name),a=this.validateValue(s,r,n-1);if(!a.success)return p(211,`declared ${i.name} as ${y(r)}, but not match`,{cause:a,value:t,type:e,path:i.name})}return m}validateSimpleValue(t,e,n=1){let i=typeof e=="string"?e:e.name;if(!i)return m;if(t===void 0)return p(130,`declared as ${y(e)} but actually undefined`,{value:t,type:e});if(t===null)return p(131,`declared as ${y(e)} but actually null`,{value:t,type:e});for(let s of ce)if(i===s.name)return t instanceof s?m:p(132,`declared as ${y(e)} but actually ${t.constructor.name}`,{value:t,type:e});if(t instanceof Object&&!this.valueInstanceOf(t,i))return p(133,`declared as ${y(e)} but actually not instance of it`,{value:t,type:e});if(n==0)return m;let r=this.validateValue(t,this.getTypeDefinition(i),n);return r.success?m:p(134,`declared as ${y(e)} but actually not match`,{cause:r,value:t,type:e})}validateClassInstance(t,e,n=3){if(e.classDefinition&&!this.valueInstanceOf(t,e.classDefinition.name))return p(201,`declared as instance of ${y(e)} but actually not`,{value:t,type:e});if(e.name!=="any"&&e===b)return p(202,`${y(e)} not defined`,{value:t,type:e});let i=A({},e);return delete i.classDefinition,this.validateValue(t,i,n)}valueInstanceOf(t,e){if(t===void 0||t.constructor.name===e)return!0;let n=this.getClassDefinition(e);if(!n)return!0;if(n.jsClass)return t instanceof n.jsClass;let i=this.getClassDefinition(t);return i?i.isSubClassOf(n.name):!1}});function y(t){var e,n,i;return typeof t=="string"?t:ge(t)?t.classDefinition.name:t.interfaceName?t.interfaceName:t.typeAliasName?t.typeAliasName:ue(t)?y(t.arrayElementType)+"[]":t.isConstructor?"Class":t.isFunction?"Function":me(t)?"Object":Te(t)?`(${t.tupleMembers.map(y).join(",")})`:ye(t)?((e=t.unionMembers)==null?void 0:e.map(y).join(" | "))||"unknown":de(t)?((n=t.intersectionMembers)==null?void 0:n.map(y).join(" & "))||"unknown":pe(t)?t.literalValue:je(t)?`{ [${(i=t.index.keyType)!=null?i:"string"}]: ${y(t.index.valueType)} }`:t.name||"unknown"}o(y,"getTypeDisplayName");d(u,class extends u{safeSetValue(t,e,n){let i=this.getClassDefinition(t),r=T.validationErrorHandler;if(!i){we(t,e,n);return}let s=i.allProperties[e];s||r(new C(`Property ${e} is not defined in ${i.name}`));let a=s==null?void 0:s.type,l=this.validateValue(n,a);l.success||r(new C(l.errorMessage)),we(t,e,n)}});var b={name:"any"},Wt={name:"null"},zt={name:"undefined"};function Ze(t){return!!(t.name&&["any","void","unknown"].includes(t.name))}o(Ze,"isIgnoredType");function Ee(t){return!!(t.name&&xe.includes(t.name))}o(Ee,"isPrimitiveType");function ue(t){return!!t.arrayElementType}o(ue,"isArrayType");function pe(t){return!!t.literalValue}o(pe,"isLiteralType");function me(t){return!!t.typeLiteralMembers}o(me,"isTypeLiteralType");function ye(t){return!!t.unionMembers}o(ye,"isUnionType");function de(t){return!!t.intersectionMembers}o(de,"isIntersectionType");function Te(t){return!!t.tupleMembers}o(Te,"isTupleType");function ge(t){return!!t.classDefinition}o(ge,"isClassDefinition");function qt(t){return!!t.generics}o(qt,"hasGenerics");function je(t){return!!t.index}o(je,"isIndexType");d(u,class extends u{getTypeDefinition(t,e){if(t==="any"||t==="Any"||t==="unknown"||t==="")return b;if(t==="null")return Wt;if(t==="undefined")return zt;if(t==="Function")return{isFunction:!0};let n=this.getClassDefinition(t);if(n)return e?$.create(n,e).type:n.type;if(xe.includes(t))return{name:t};if(ce.map(a=>a.name).includes(t))return{name:t,generics:e};let i=this.getInterfaceDefinition(t);if(i)return i.fromLib?{name:t,generics:e}:e?se.create(i,e).type:i.type;let r=this.getEnumDefinition(t);if(r)return r.type;let s=this.getTypeAliasDefinition(t,e);return s?s.type:(T.debug&&console.warn(`${t} not registered...`),b)}fillType(t){let{rawType:e,genericContext:n,genericArgs:i}=t,r=$e(e);if(e===void 0)return b;let s=ke.get(r);if(s)return s;let a={};if(ke.set(r,a),typeof e=="string")a=(n==null?void 0:n[e])||this.getTypeDefinition(e,i)||b;else if(typeof e.literalValue=="string")a.literalValue=e.literalValue;else if(e.arrayElementType)Object.assign(a,{arrayElementType:this.fillType({rawType:e.arrayElementType,genericContext:n})});else if(e.unionMembers)Object.assign(a,{unionMembers:e.unionMembers.map(l=>this.fillType({rawType:l,genericContext:n}))});else if(e.intersectionMembers)Object.assign(a,{intersectionMembers:e.intersectionMembers.map(l=>this.fillType({rawType:l,genericContext:n}))});else if(e.tupleMembers)Object.assign(a,{tupleMembers:e.tupleMembers.map(l=>this.fillType({rawType:l,genericContext:n}))});else if(e.typeLiteralMembers)a.typeLiteralMembers=e.typeLiteralMembers.map(l=>({name:l.name,isOptional:!!l.isOptional,type:this.fillType({rawType:l.type,genericContext:n,genericArgs:i})}));else if(e.generics){let l=e.generics[0],c=e.generics.slice(1).map(f=>this.fillType({rawType:f,genericContext:n}));Object.assign(a,this.fillType({rawType:l,genericContext:n,genericArgs:c}))}else e.index&&Object.assign(a,{index:{keyType:e.index.keyType?this.fillType({rawType:e.index.keyType,genericContext:n}):void 0,valueType:this.fillType({rawType:e.index.valueType,genericContext:n})}});return Object.keys(a).length===0&&(a=b),ke.delete(r),a}});var ke=new Map;function $e(t){return t===null?"null":t===void 0?"undefined":typeof t!="object"?JSON.stringify(t):Array.isArray(t)?"["+t.map($e).join(",")+"]":"{"+Object.keys(t).sort().map(n=>JSON.stringify(n)+":"+$e(t[n])).join(",")+"}"}o($e,"stableStringify");var L={isPrimitiveType:Ee,isArrayType:ue,isLiteralType:pe,isTypeLiteralType:me,isUnionType:ye,isIntersectionType:de,isTupleType:Te,isClassDefinition:ge,hasGenerics:qt};var Ne=new Map;function I(t){Ne.set(t.name,t)}o(I,"registerSpecialType");function et(t){return Ne.has(t)}o(et,"isSpecialType");function Le(t,...e){let n=Ne.get(t);if(!n)return;let i=n.getType(...e);return i?{name:t,type:i,genericParams:n.genericParams,fromLib:!!n.fromLib}:void 0}o(Le,"getSpecialTypeAlias");I({name:"Partial",genericParams:["T"],fromLib:!0,getType(...t){let e=t[0];return e?K(e,n=>n.isOptional=!0):void 0}});I({name:"Required",genericParams:["T"],fromLib:!0,getType(...t){let e=t[0];return e!=null?e:K(e,n=>n.isOptional=!1)}});I({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...t){let e=t[0];return K(e,n=>n.isReadonly=!0)}});I({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...t){let[e,n]=t;return{index:{keyType:e!=null?e:b,valueType:n!=null?n:b}}}});I({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...t){let[e,n]=t;if(e)return tt(e,n)}});function tt(t,e){var i,r;if(!e)return;let n=(r=(i=e.unionMembers)==null?void 0:i.map(s=>j(s.literalValue)))!=null?r:[j(e.literalValue)];if(t.typeLiteralMembers)return it(t,s=>n.includes(s.name))}o(tt,"getPickType");I({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...t){let[e,n]=t;if(e)return nt(e,n)}});function nt(t,e){var i,r;if(!e)return;let n=(r=(i=e.unionMembers)==null?void 0:i.map(s=>j(s.literalValue)))!=null?r:[j(e.literalValue)];if(t.typeLiteralMembers)return it(t,s=>!n.includes(s.name))}o(nt,"getOmitType");I({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...t){let[e,n]=t;if(!(!e||!n)&&e.typeLiteralMembers&&n.typeLiteralMembers){let i={unionMembers:n.typeLiteralMembers.map(r=>({literalValue:r.name}))};return tt(e,i)}}});I({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...t){let[e,n]=t;if(!(!e||!n)&&e.typeLiteralMembers&&n.typeLiteralMembers){let i={unionMembers:n.typeLiteralMembers.map(r=>({literalValue:r.name}))};return nt(e,i)}}});I({name:"ReflectReference",genericParams:["T","R"],getType(...t){let[e,n]=t;if(e)return Y(A({},e),{reflectReference:n})}});function K(t,e){return t.typeLiteralMembers?{typeLiteralMembers:t.typeLiteralMembers.map(n=>rt(n,e))}:t.unionMembers?{unionMembers:t.unionMembers.map(n=>K(n,e)).filter(n=>n!==void 0)}:t.intersectionMembers?{intersectionMembers:t.intersectionMembers.map(n=>K(n,e)).filter(n=>n!==void 0)}:void 0}o(K,"getMappedType");function it(t,e){if(t.typeLiteralMembers)return{typeLiteralMembers:t.typeLiteralMembers.map(n=>e(n)?rt(n):void 0).filter(n=>!!n)}}o(it,"getFilterKeyType");function rt(t,e){let n;return t instanceof V?n=new V({name:t.name,isReadonly:t.isReadOnly,isOptional:t.isOptional,isStatic:t.isStatic,accessor:t.accessor,type:t.rawType}):n={name:t.name,isOptional:t.isOptional,type:t.type},e==null||e(n),n}o(rt,"copyPropertyDefinition");d(u,class extends u{getTypeAliasDefinition(t,e){var s,a,l;if(et(t))return e?Le(t,...e):Le(t);let n=this.instanceStore;if(!n.typeAliasMap.has(t)){let c=(a=(s=this.getRawMeta())==null?void 0:s.typeAliases)==null?void 0:a[t];if(!c||!c.type)return;n.typeAliasMap.set(t,{name:t,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let i=n.typeAliasMap.get(t);if(!i)return;let r;if(i.genericParams&&e){let c={};for(let f=0;f<i.genericParams.length;f++){let h=i.genericParams[f];c[h]=e[f]}r=this.fillType({rawType:i.type,genericContext:c,genericArgs:e})}else r=this.fillType({rawType:i.type});return r.typeAliasName=t,{name:i.name,type:r,genericParams:i.genericParams,fromLib:(l=i.fromLib)!=null?l:!1}}});var M=Reflect,Q=J(),ot,st=new Promise(t=>{ot=t});function _e(t=R()){return M.__reflectTypes=M.__reflectTypes||J(),M.__reflectTypes[t]=M.__reflectTypes[t]||{},M.__reflectTypes[t]}o(_e,"getReflectModuleState");function Xt(t=R()){var s;if(Q[t])return Q[t];let e=_e(t),n=(s=e.__meta)!=null?s:t===O?M.__meta:void 0;if(n===void 0){T.validationErrorHandler(new C("No reflect meta found, reflect is disabled."));return}try{Q[t]=JSON.parse(Yt(n))}catch(a){console.error(a),T.validationErrorHandler(new C("Illegal reflect meta found, reflect is disabled"));return}delete e.__meta,t===O&&delete M.__meta;let i=Q[t],r=e.__classDef||{};return t===O&&M.__classDef&&M.__classDef!==r&&Object.assign(r,M.__classDef),i.classDef=r,delete e.__classDef,t===O&&delete M.__classDef,Reflect.defineProperty(e,"registerClass",{value:o(a=>Object.assign(i.classDef,a),"value")}),t===O&&!M.registerClass&&Reflect.defineProperty(M,"registerClass",{value:e.registerClass}),ot(),Q[t]}o(Xt,"getRawMeta");function at(t=R()){return(e=>{let n=J();n[e.name]=e;let i=_e(t);i.registerClass?i.registerClass(n):i.__classDef=Object.assign(i.__classDef||{},n)})}o(at,"createReflectClassDecorator");var lt=o((t=>at()(t)),"ReflectClass");d(u,class extends u{get ReflectClass(){return at(this.moduleName)}registerClass(t){let e=J();e[t.name]=t;let n=_e(this.moduleName);n.registerClass?n.registerClass(e):n.__classDef=Object.assign(n.__classDef||{},e)}getRawMeta(){return Xt(this.moduleName)}getDebugInfo(){if(!T.debug)return;let t=this.getRawMeta();if(t!==void 0)return{raw:t,instances:this.instanceStore,config:T}}});function Yt(t){let e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return new TextDecoder().decode(n)}o(Yt,"decode");var Fe=class Fe{constructor(e,n=D()){this.exceptionHandler=e!=null?e:console.error,this.context=n}parse(e,n){if(!n)return JSON.parse(e);let i=this.context.getTypeDef(n),r=JSON.parse(e),s=this.convertJSONValue(r,i);return this.context.validateValue(s,i).success||this.exceptionHandler(new z(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,n){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return L.isArrayType(n)?e.map(i=>this.convertJSONValue(i,n)):L.isTupleType(n)?n.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return L.isClassDefinition(n)?this.convertJSONObjectAsClassInstance(e,n.classDefinition):e}}convertJSONObjectAsClassInstance(e,n){if(!n.jsClass)return this.exceptionHandler(new z(`class ${n.name} not reflected`)),e;let i=P(n.jsClass);return Object.assign(i,e),i}};o(Fe,"JSONTransfer");var W=Fe,Je=class Je extends Error{};o(Je,"JSONError");var z=Je;d(u,class extends u{get json(){return new W(void 0,this)}createJSONTransfer(t){return new W(t,this)}});d(u,class extends u{getTypeDef(t){let e=o(n=>this.getTypeDef(n),"getTypeDefInContext");if(typeof t=="string"){let n=Zt(t);if(typeof n=="string"){let i=n.match(/"(.+)"$/)||n.match(/'(.+)'$/);if(i!=null&&i[1])return{literalValue:i[1]}}return typeof n=="string"?this.getTypeDefinition(t):e(n)}return"array"in t?{arrayElementType:e(t.array)}:"union"in t?{unionMembers:t.union.map(e)}:"intersection"in t?{intersectionMembers:t.intersection.map(e)}:"tuple"in t?{tupleMembers:t.tuple.map(e)}:"generic"in t?this.getTypeDefinition(t.name,t.generic.map(e)):t}assertType(t,e,n=5){let i=this.validateValue(t,this.getTypeDef(e),n);return i.success||T.validationErrorHandler(new C(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),t}isNullable(t){return this.isType(null,t)}isType(t,e,n=5){return this.validateValue(t,this.getTypeDef(e),n).success}});function Zt(t){let e=0,n="%%",i={};function r(c){let f=`${n}${e++}`;return i[f]=c,f}o(r,"addPlaceholder");function s(c){let f=c.match(new RegExp(`^(${n}\\d)$`));if(!f)return;let h=f[1].trim(),x=i[h];return delete i[h],x}o(s,"getPlaceholder");function a(c,f,h,x){let w=0;for(;w<c.length;){let v=c.indexOf(f,w);if(v===-1)break;w=v+1;let E=c.indexOf(h,w);if(E===-1)throw new De("Illegal type string");let X=c.substring(v+1,E),_=r(X);x?c=`${c.substring(0,v+1)}${_}${c.substring(E)}`:c=`${c.substring(0,v)}${_}${c.substring(E+1)}`}return c}o(a,"replaceBracket");function l(c){let f=c.trim(),h=o(S=>S.trim(),"trim"),x=o(S=>S.length!=0,"notEmpty");f=a(f,"(",")",!1),f=a(f,"<",">",!0);let w=s(f);if(w)return l(w);let v=f.split("|").map(h).filter(x);if(v.length>1)return{union:v.map(l)};let E=f.split("&").map(h).filter(x);if(E.length>1)return{intersection:E.map(l)};let X=f.match(/^\[(.*)]$/);if(X)return{tuple:X[1].split(",").map(h).filter(x).map(l)};let _=f.match(/^(.+)\[]$/);if(_)return{array:l(_[1])};let he=f.match(/^([^<]+)<(.+)>$/);if(he){let S=he[1].trim(),be=l(he[2]);if(typeof be=="string"){let Lt=be.split(",").map(h).filter(x).map(l);return{name:S,generic:Lt}}else return{name:S,generic:[be]}}return f}return o(l,"parseTypeRecursive"),l(t)}o(Zt,"parseType");var Ge=class Ge extends Error{};o(Ge,"TypeParseError");var De=Ge;d(u,class extends u{validateInstance(t,e,n=3){return T.validation?(e=e||t.constructor.name,this.validateClassInstance(t,this.getTypeDef(e),n)):m}validateArray(t,e,n=2){if(!T.validation)return m;for(let i=0;i<t.length;i++){let r=this.validateInstance(t[i],e,n);if(!r.success)return p(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:t,type:e})}return m}validateDictionary(t,e,n=2){if(!T.validation)return m;let i=Object.entries(t);for(let r=0;r<i.length;r++){let[s,a]=i[r],l=this.validateInstance(a,e,n);if(!l.success)return p(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:l,value:t,type:e})}return m}});var ft=Symbol("VALIDATE_WRAPPER"),en=o((t,e,n)=>ut(t,e,n),"ReflectValidate");function ct(t=R()){return(e,n,i)=>ut(e,n,i,t)}o(ct,"createReflectValidate");function ut(t,e,n,i=R()){if(!T.validation)return;let r=n.value;if(typeof r!="function"||B(r,ft))return;let s=o(()=>{var f,h;return(h=(f=D(i).getClassDefinition(t))==null?void 0:f.methods)==null?void 0:h.find(x=>x.name===e)},"getMethodDef"),a=o(f=>pt(t,s(),f,i),"validateArgs"),l=o(f=>tn(t,s(),f,i),"validateReturn"),c=o(function(...f){a(f);let h=r.call(this,...f);return l(h)},"newFunc");c[ft]=r,n.value=c}o(ut,"wrapValidateMethod");function pt(t,e,n,i=R()){var r;(r=e==null?void 0:e.args)==null||r.forEach((s,a)=>{let l=n==null?void 0:n[a];if(l===void 0)if(!s.isOptional)T.validationErrorHandler(new C(`Illegal arguments for ${Be(t.constructor.name,e)}: ${s.name} is not optional`));else return;let c=D(i).validateValue(l,s.type||b,1);c.success||(console.error("validateResult",c),T.validationErrorHandler(new C(`Illegal arguments for ${Be(t.constructor.name,e)}: ${s.name}: ${s.name} ${c.errorMessage}`,c)))})}o(pt,"validateMethodParams");function tn(t,e,n,i=R()){var a;if(!e)return n;let r=o((l,c)=>{let f=D(i).validateValue(l,c,5);return f.success||(console.error(f.errorStackFlow),T.validationErrorHandler(new C(`result for ${Be(t.constructor.name,e)} doesn't match type ${c.name}:
4
+ ${f.errorStackFlow}`,f))),l},"checkValue"),s=e.returnType;return s.name==="Promise"&&(s=((a=s.generics)==null?void 0:a[0])||b),n instanceof Promise?n.then(l=>r(l,s||b)):r(n,s||b)}o(tn,"validateMethodReturnValue");function Be(t,e){var n;return`${t}.${e.name}(${(n=e.args)==null?void 0:n.map(i=>i.name).join(", ")})`}o(Be,"getMethodDescription");d(u,class extends u{get ReflectValidate(){return ct(this.moduleName)}safeCall(t,e,...n){let i=this.getClassDefinition(t);if(!i)return;let r=i.allMethods[e];if(r)return pt(t,r,n,this.moduleName),B(t,e).apply(t,n)}});var He=class He{constructor(e){this.context=e}get name(){return this.context.moduleName}get ReflectClass(){return this.context.ReflectClass}get ReflectValidate(){return this.context.ReflectValidate}get json(){return this.context.json}createJSONTransfer(e){return this.context.createJSONTransfer(e)}registerClass(e){this.context.registerClass(e)}getClassDefinition(e){return this.context.getClassDefinition(e)}getClassByName(e){return this.context.getClassByName(e)}getInterfaceDefinition(e){return this.context.getInterfaceDefinition(e)}getTypeAliasDefinition(e,n){return this.context.getTypeAliasDefinition(e,n)}getEnumDefinition(e){return this.context.getEnumDefinition(e)}getEnumNames(e){return this.context.getEnumNames(e)}getEnumValues(e){return this.context.getEnumValues(e)}getTypeDefinition(e,n){return this.context.getTypeDefinition(e,n)}getTypeDef(e){return this.context.getTypeDef(e)}assertType(e,n,i=5){return this.context.assertType(e,n,i)}isNullable(e){return this.context.isNullable(e)}isType(e,n,i=5){return this.context.isType(e,n,i)}validateValue(e,n,i=1){return this.context.validateValue(e,n,i)}validateInstance(e,n,i=3){return this.context.validateInstance(e,n,i)}validateArray(e,n,i=2){return this.context.validateArray(e,n,i)}validateDictionary(e,n,i=2){return this.context.validateDictionary(e,n,i)}safeSetValue(e,n,i){this.context.safeSetValue(e,n,i)}safeCall(e,n,...i){return this.context.safeCall(e,n,...i)}getDebugInfo(){return this.context.getDebugInfo()}};o(He,"ReflectModule");var q=He,mt=new Map;function yt(t=R()){let e=t||R(),n=mt.get(e);return n||(n=new q(D(e)),mt.set(e,n)),n}o(yt,"getReflectModule");function g(){return D()}o(g,"currentContext");function dt(t){Xe(t)}o(dt,"setReflectModule");function Tt(){return g().getRawMeta()}o(Tt,"getRawMeta");function gt(){if(T.debug)return;let t=g().getRawMeta();if(t!==void 0)return{raw:t,instances:g().instanceStore,config:T}}o(gt,"getDebugInfo");function Dt(t){return g().getClassByName(t)}o(Dt,"getClassByName");function ht(t){return g().getClassDefinition(t)}o(ht,"getClassDefinition");function bt(t){return g().getInterfaceDefinition(t)}o(bt,"getInterfaceDefinition");function xt(t,e){return g().getTypeAliasDefinition(t,e)}o(xt,"getTypeAliasDefinition");function Rt(t){return g().getEnumDefinition(t)}o(Rt,"getEnumDefinition");function Ct(t){return g().getEnumNames(t)}o(Ct,"getEnumNames");function wt(t){return g().getEnumValues(t)}o(wt,"getEnumValues");function Mt(t,e){return g().getTypeDefinition(t,e)}o(Mt,"getTypeDefinition");function vt(t){return g().fillType(t)}o(vt,"fillType");function It(t){return g().getTypeDef(t)}o(It,"getTypeDef");function Vt(t,e,n=5){return g().assertType(t,e,n)}o(Vt,"assertType");function Pt(t){return g().isNullable(t)}o(Pt,"isNullable");function Ot(t,e,n=5){return g().isType(t,e,n)}o(Ot,"isType");function St(t,e,n=3){return g().validateInstance(t,e,n)}o(St,"validateInstance");function At(t,e,n=2){return g().validateArray(t,e,n)}o(At,"validateArray");function Et(t,e,n=2){return g().validateDictionary(t,e,n)}o(Et,"validateDictionary");function jt(t,e,n=1){return g().validateValue(t,e,n)}o(jt,"validateValue");function kt(t,e,n=3){return g().validateClassInstance(t,e,n)}o(kt,"validateClassInstance");function $t(t,e,n){g().safeSetValue(t,e,n)}o($t,"safeSetValue");function Nt(t,e,...n){return g().safeCall(t,e,...n)}o(Nt,"safeCall");var T={validationErrorHandler:o(function(t){var e;console.error(t.message),console.error((e=t.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};0&&(module.exports={FailureResult,JSONError,JSONTransfer,ReflectClass,ReflectConfig,ReflectContext,ReflectModule,ReflectValidate,TypeDefinition,TypeParseError,ValidationError,assertType,createReflectValidate,extension,failedResult,fillType,getClassByName,getClassDefinition,getDebugInfo,getEnumDefinition,getEnumNames,getEnumValues,getErrorTraceMessages,getInterfaceDefinition,getRawMeta,getReflectContext,getReflectModule,getTypeAliasDefinition,getTypeDef,getTypeDefinition,isNullable,isType,preservedTypes,reflectReady,registerSpecialType,safeCall,safeSetValue,setReflectModule,successResult,validateArray,validateClassInstance,validateDictionary,validateInstance,validateValue});
@@ -1,2 +1,2 @@
1
- "use strict";var Ke=Object.create;var q=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Ce=Object.getPrototypeOf,Oe=Object.prototype.hasOwnProperty;var ve=(e,n)=>{for(var t in n)q(e,t,{get:n[t],enumerable:!0})},ce=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of Ae(n))!Oe.call(e,a)&&a!==t&&q(e,a,{get:()=>n[a],enumerable:!(i=ke(n,a))||i.enumerable});return e};var I=(e,n,t)=>(t=e!=null?Ke(Ce(e)):{},ce(n||!e||!e.__esModule?q(t,"default",{value:e,enumerable:!0}):t,e)),Le=e=>ce(q({},"__esModule",{value:!0}),e);var F=(e,n,t)=>new Promise((i,a)=>{var r=o=>{try{l(t.next(o))}catch(m){a(m)}},d=o=>{try{l(t.throw(o))}catch(m){a(m)}},l=o=>o.done?i(o.value):Promise.resolve(o.value).then(r,d);l((t=t.apply(e,n)).next())});var Ge={};ve(Ge,{DEBUG_CONFIG:()=>V,parseSource:()=>W,reflectLoader:()=>se,reflectParserPlugin:()=>ze,reparseFile:()=>ie,setupReflectTypes:()=>Ie,updateReflectModules:()=>te});module.exports=Le(Ge);var H=I(require("typescript"),1);function x(e){return e||{}}var X=["string","number","boolean","bigint","symbol"];var s=I(require("typescript"),1),K=I(require("fs"),1),_=I(require("process"),1),P=I(require("path"),1),de=require("url");function z(e){return Buffer.from(e,"utf8").toString("base64")}var V={OUTPUT_LOG:!1},C=new Map,O=new Map,j=new Map,v=new Map,ne=new Map,B=new Set,le={[s.default.SyntaxKind.BooleanKeyword]:"boolean",[s.default.SyntaxKind.StringKeyword]:"string",[s.default.SyntaxKind.BigIntKeyword]:"bigint",[s.default.SyntaxKind.NumberKeyword]:"number",[s.default.SyntaxKind.SymbolKeyword]:"symbol",[s.default.SyntaxKind.VoidKeyword]:"void",[s.default.SyntaxKind.UndefinedKeyword]:"undefined",[s.default.SyntaxKind.UnknownKeyword]:"unknown",[s.default.SyntaxKind.AnyKeyword]:"any",[s.default.SyntaxKind.ObjectKeyword]:"object"},L="any",ye=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],ge=["Mappable","EnableReflect","ReflectReference"];[...X,...ye,...ge].forEach(Ee);ge.forEach(e=>v.set(e,{name:e,type:e}));var G,pe=!1,$=Reflect;function Ie(e){return F(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:i,distFolder:a}=e;if(i=P.resolve(i||_.cwd()),a=P.resolve(a||_.cwd()),$.__meta!==void 0)return;let r={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};n=Me(n);let d=n.map(l=>P.join(i,l));W(d,t);for(let[l,o]of C)r.classes[l]=o;for(let[l,o]of O)r.interfaces[l]=o;for(let[l,o]of v)r.typeAliases[l]=o;for(let[l,o]of j)r.enums[l]=o;for(let[l,o]of ne)r.constTypes[l]=o;$.__meta=z(JSON.stringify(r)),yield Promise.all(n.map(l=>te(l,a)))})}function te(e,n){return F(this,null,function*(){let t=P.resolve(n,e);if(!K.existsSync(t))return;if(K.statSync(t).isDirectory()){let l=K.readdirSync(t);yield Promise.all(l.map(o=>te(P.join(e,o),n)));return}if(!e.endsWith(".js"))return;let a=P.join(n,e),d=yield import((0,de.pathToFileURL)(a).href);$.__classDef={},Object.values(d).forEach(l=>{typeof l=="function"&&$.__classDef&&($.__classDef[l.name]=l)})})}function W(e,n){if(e||(e=[_.cwd()]),e=Me(e),!pe){let t=Te(e,n),i=s.default.createProgram(t,{});G=i.getTypeChecker(),t=t.map(r=>ue(r)),i.getSourceFiles().filter(r=>t.includes(ue(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{M(`parse file: ${r.fileName}`),De(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of B.keys())!C.has(r)&&!O.has(r)&&!j.has(r)&&!v.has(r)&&!X.includes(r)&&!ye.includes(r)&&(M(`remove unknown typeName: ${r}`),B.delete(r));Array.from(C.values()).forEach(_e),Array.from(O.values()).forEach(je),[C,O,v].forEach(Ue),pe=!0}return{classDefinitions:C,interfaceDefinitions:O,enumDefinitions:j,typeAliasDefinitions:v,constTypeDefinitions:ne}}function Te(e,n){let t=[];return e.forEach(i=>{if(i=P.resolve(i),qe(i,n)){M(`ignore excluded ${i}`);return}if(!K.existsSync(i)){console.error(`Path ${i} does not exist.`);return}if(K.statSync(i).isFile()){t.push(i);return}K.readdirSync(i).forEach(d=>t.push(...Te([P.join(i,d)],n)))}),t}function De(e,n,t=!1){s.default.isClassDeclaration(e)?we(e,n,t):s.default.isInterfaceDeclaration(e)?Re(e,n):s.default.isEnumDeclaration(e)?he(e,n,t):s.default.isTypeAliasDeclaration(e)?be(e,n,t):s.default.isConstTypeReference(e)?xe(e):e.forEachChild(i=>De(i,n,t))}function we(e,n,t=!1){var b,R,k,S,A,y,w,U,T,D,u,h,J,ae,oe;let i=c(e.name);if(!i)return;let a=c((k=(R=(b=e.heritageClauses)==null?void 0:b.find(p=>p.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:R.types)==null?void 0:k[0].expression),r=(A=(S=e.heritageClauses)==null?void 0:S.find(p=>p.token===s.default.SyntaxKind.ImplementsKeyword))==null?void 0:A.types.map(p=>c(p.expression)),d=[],l=[],o;for(let p of e.members)if(s.default.isPropertyDeclaration(p))d.push({name:c(p.name),isOptional:p.questionToken!==void 0,type:g(p),isPrivate:(y=p.modifiers)==null?void 0:y.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(w=p.modifiers)==null?void 0:w.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isReadonly:(U=p.modifiers)==null?void 0:U.some(f=>f.kind===s.default.SyntaxKind.ReadonlyKeyword)});else if(s.default.isConstructorDeclaration(p))o={name:"constructor",isPrivate:(T=p.modifiers)==null?void 0:T.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),args:p.parameters.map(f=>{var E,fe;return(E=f.modifiers)!=null&&E.some(Q=>Q.kind===s.default.SyntaxKind.PublicKeyword)&&d.push({name:c(f.name),isOptional:f.questionToken!==void 0,type:g(f),isReadonly:(fe=f.modifiers)==null?void 0:fe.some(Q=>Q.kind===s.default.SyntaxKind.ReadonlyKeyword)}),{name:c(f.name),type:g(f),isOptional:f.questionToken!==void 0}}),isConstructor:!0};else if(s.default.isMethodDeclaration(p))l.push({name:c(p.name),returnType:g(p),isPrivate:(D=p.modifiers)==null?void 0:D.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(u=p.modifiers)==null?void 0:u.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isAsync:(h=p.modifiers)==null?void 0:h.some(f=>f.kind===s.default.SyntaxKind.AsyncKeyword),args:p.parameters.map(f=>({name:c(f.name),type:g(f),isOptional:f.questionToken!==void 0}))});else if(s.default.isGetAccessorDeclaration(p)){let f=d.find(E=>E.name===c(p.name));f||(f={name:c(p.name),isOptional:p.questionToken===void 0,type:g(p)},d.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((J=p.modifiers)==null?void 0:J.some(E=>E.kind===s.default.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(s.default.isSetAccessorDeclaration(p)){let f=d.find(E=>E.name===c(p.name));f||(f={name:c(p.name),isOptional:p.questionToken===void 0,type:g(p)},d.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((ae=p.modifiers)==null?void 0:ae.some(E=>E.kind===s.default.SyntaxKind.PrivateKeyword))||!1}}let m={name:i,constructorMethod:o,superClassName:a,implementations:r,properties:d,methods:l,genericsParams:(oe=e.typeParameters)==null?void 0:oe.map(p=>c(p.name)),fromLib:n};if(!t&&C.has(i))throw new Error(`Duplicate defined for class "${i}"`);M(`${t?"Redefine":"Define"} class: ${c(e.name)}`),C.set(i,m)}function Re(e,n){var m,b,R,k,S,A;let t=c(e.name);if(!t)return;let i=((b=(m=e.heritageClauses)==null?void 0:m.find(y=>y.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:b.types.map(y=>c(y.expression)))||[],a=[],r=[],d,l;for(let y of e.members)s.default.isPropertySignature(y)?a.push({name:c(y.name),isOptional:y.questionToken!==void 0,type:g(y),isPrivate:((R=y.modifiers)==null?void 0:R.some(w=>w.kind===s.default.SyntaxKind.PrivateKeyword))||!1,isReadonly:((k=y.modifiers)==null?void 0:k.some(w=>w.kind===s.default.SyntaxKind.ReadonlyKeyword))||!1}):s.default.isMethodSignature(y)?r.push({name:y.name.text,returnType:g(y),isPrivate:((S=y.modifiers)==null?void 0:S.some(w=>w.kind===s.default.SyntaxKind.PrivateKeyword))||!1,args:y.parameters.map(w=>({name:c(w.name),type:g(w),isOptional:w.questionToken!==void 0}))}):s.default.isIndexSignatureDeclaration(y)&&(y.parameters[0]&&(d=g(y.parameters[0])),l=g(y));let o=O.get(t);o?(o.implementations=Y(o.implementations||[],i),o.methods=Y(o.methods||[],r,(y,w)=>y.name===w.name),o.properties=Y(o.properties||[],a,(y,w)=>y.name===w.name),l&&(o.index={keyType:d,valueType:l}),M(`Merge interface ${c(e.name)}`)):(o={name:t,implementations:i,methods:r,properties:a,index:l?{keyType:d,valueType:l}:void 0,genericsParams:(A=e.typeParameters)==null?void 0:A.map(y=>c(y.name)),fromLib:n},O.set(t,o),M(`Define interface ${c(e.name)}`))}function he(e,n,t=!1){let i=c(e.name);if(i){if(!t&&j.has(i))throw new Error(`Duplicate defined for enum: ${i}`);j.set(i,{name:i,members:e.members.map(a=>({name:c(a.name),initializer:c(a.initializer)})),fromLib:n}),M(`Define enum: ${c(e.name)}`)}}function be(e,n,t=!1){var d;let i=c(e.name);M(`${t?"Redefine":"Define"} typeAlias: ${i}`);let a=g(e),r=(d=e.typeParameters)==null?void 0:d.map(l=>c(l.name));if(!t&&v.has(i))throw new Error(`Duplicate defined for typeAlias: ${i}`);v.set(i,{name:i,type:a,genericParams:r,fromLib:n})}function xe(e){let n=e.parent.parent;s.default.isVariableDeclaration(n)&&n.initializer&&s.default.isAsExpression(n.initializer)&&ne.set(c(n.name),Pe(n.initializer.expression))}function Pe(e){return s.default.isArrayLiteralExpression(e)?Fe(e):s.default.isObjectLiteralExpression(e)?$e(e):s.default.isNumericLiteral(e)?"number":s.default.isStringLiteral(e)?"string":s.default.isBigIntLiteral(e)?"bigint":[s.default.SyntaxKind.TrueKeyword,s.default.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":L}function Fe(e){let n=[];return e.elements.forEach(t=>{if(s.default.isStringLiteral(t))return n.push(c(t))}),n.length===0?L:n.length===1?n[0]:{unionMembers:n}}function $e(e){let n=[];return e.properties.map(t=>{s.default.isPropertyAssignment(t)?n.push({name:c(t.name),type:Pe(t.initializer)}):M(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function Ee(e){B.add(e)}function g(e,n=!1){if(e.type&&!n)return N(e.type);if(!G)return console.error("TypeChecker not initialized!"),L;let t=G.getTypeAtLocation(e),i=G.typeToTypeNode(t,void 0,void 0);return i?N("type"in i?i.type:i):L}function N(e){let n={};if(e===void 0)return L;if(s.default.isTypeReferenceNode(e))if(Ee(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(t=>N(t))];else return c(e.typeName);else if(s.default.isFunctionTypeNode(e))n.isFunction=!0;else if(s.default.isConstructorTypeNode(e))n.isConstructor=!0;else{if(s.default.isTypeQueryNode(e))return g(e);if(s.default.isTypeLiteralNode(e)){let t=[];e.members.forEach(i=>{var a,r;s.default.isPropertySignature(i)?t.push({name:c(i.name),isOptional:i.questionToken!==void 0,type:g(i)}):s.default.isIndexSignatureDeclaration(i)?n.index={keyType:(a=i.parameters)!=null&&a[0].type?g((r=i.parameters)==null?void 0:r[0]):void 0,valueType:g(i)}:t.push({name:c(i.name)||"",isOptional:i.questionToken!==void 0,type:N()})}),n.typeLiteralMembers=t}else if(s.default.isArrayTypeNode(e))n.arrayElementType=N(e.elementType);else if(s.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(N);else if(s.default.isOptionalTypeNode(e))Object.assign(n,g(e)),n.isOptionalInTuple=!0;else{if(s.default.isRestTypeNode(e))return g(e);if(s.default.isUnionTypeNode(e))n.unionMembers=e.types.map(N);else if(s.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(N);else{if(s.default.isConditionalTypeNode(e))return g(e);if(s.default.isInferTypeNode(e))return g(e);if(s.default.isParenthesizedTypeNode(e))return g(e);if(s.default.isThisTypeNode(e))return g(e);if(s.default.isTypeOperatorNode(e)&&e.operator===s.default.SyntaxKind.KeyOfKeyword)return g(e,!0);if(s.default.isIndexedAccessTypeNode(e))return g(e,!0);if(s.default.isMappedTypeNode(e))n.index={keyType:N(e.typeParameter.constraint),valueType:N(e.type)};else if(s.default.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(le).includes(String(e.kind)))return le[e.kind]||L;if(s.default.isNamedTupleMember(e))Object.assign(n,g(e));else return g(e,!0)}}}}return n}var Y=(e,n,t)=>[...(e==null?void 0:e.filter(i=>!(n!=null&&n.some(a=>(t||(()=>a===i))(a,i)))))||[],...n||[]];function Z(e,n){if(e!==void 0&&e!==L)return typeof e=="string"?B.has(e)||n!=null&&n.includes(e)?e:void 0:e}function _e(e){var n,t;(n=e.methods)==null||n.forEach(i=>Se(i,e.genericsParams)),(t=e.properties)==null||t.forEach(i=>Ne(i,e.genericsParams))}function je(e){var n,t;(n=e.methods)==null||n.forEach(i=>Se(i,e.genericsParams)),(t=e.properties)==null||t.forEach(i=>Ne(i,e.genericsParams))}function Ne(e,n){e.type=Z(e.type,n)}function Se(e,n){var t;(t=e.args)==null||t.forEach(i=>i.type=Z(i.type,n)),e.returnType=Z(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return s.default.isQualifiedName(n)?c(n.right):n.getText()}catch(n){return e.text}}function ee(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(t=>{let[i,a]=t;a===!1||a===void 0||a===null?delete n[i]:a instanceof Array?a.length===0?delete n[i]:a.forEach(ee):ee(a)})}function Ue(e){for(let n of e.values())ee(n)}function qe(e,n){return n?(n=n instanceof Array?n:[n],n.some(t=>(t instanceof RegExp||(t=new RegExp(t.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(t)))):!1}function ue(e,n=_.cwd()){return me(e).replace(me(n)+"/","")}function me(e){let n=P.sep;return e.split(n).join("/")}function Me(e){return e instanceof Array?e:[e]}function M(e){V.OUTPUT_LOG&&console.log(e)}function ie(e,n){let t=[],i=[],a=[],r=[],d=[],l=s.default.createSourceFile(n,e,s.default.ScriptTarget.Latest,!0);function o(m){var b;if(s.default.isClassDeclaration(m)&&m.name)we(m,!1,!0),t.push(c(m.name));else if(s.default.isInterfaceDeclaration(m)&&m.name)Re(m,!1),i.push(c(m.name));else if(s.default.isEnumDeclaration(m)&&m.name)he(m,!1,!0),a.push(c(m.name));else if(s.default.isTypeAliasDeclaration(m)&&m.name)be(m,!1,!0),r.push(c(m.name));else if(s.default.isConstTypeReference(m)){let R=(b=m.parent)==null?void 0:b.parent;s.default.isVariableDeclaration(R)&&R.name&&d.push(c(R.name)),xe(m)}else m.forEachChild(o)}return o(l),{classNames:t,interfaceNames:i,enumNames:a,typeAliasNames:r,constTypeNames:d}}function se(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:i,outputLog:a}=e;if(a&&(V.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${t}, forEnabledClassOnly: ${i}`);let{classDefinitions:r,interfaceDefinitions:d,enumDefinitions:l,typeAliasDefinitions:o,constTypeDefinitions:m}=W(n,t),b=[],R=[];function k(T){let D=[];return(()=>{let u=r.get(T);if(u){u.superClassName&&D.push(u.superClassName),D.push(...u.implementations||[]);return}let h=d.get(T);if(h){D.push(...h.implementations||[]);return}o.get(T)&&D.push(T)})(),D.flatMap(u=>[u,...k(u)])||[]}function S(T,D){return k(T.name).includes(D)}function A(T){if(H.default.isClassDeclaration(T)&&T.name!==void 0){let D=T.name.text,u=r.get(D);if(!D||!u||i&&!S(u,"EnableReflect"))return;R.push(`Reflect.registerClass?Reflect.registerClass({${D}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${D}}))`);return}T.forEachChild(A)}function y(){let T={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};return r.forEach((u,h)=>{i&&!S(u,"EnableReflect")||(T.classes[h]=u)}),d.forEach((u,h)=>{i&&!S(u,"EnableReflect")||(T.interfaces[h]=u)}),l.forEach((u,h)=>{T.enums[h]=u}),o.forEach((u,h)=>{T.typeAliases[h]=u}),m.forEach((u,h)=>{T.constTypes[h]=u}),`;Reflect.__meta='${z(JSON.stringify(T))}'`}let w=(T,D)=>{if(D.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!D.startsWith(u))){a&&console.log(`transform id: ${D}`);try{let u=H.default.createSourceFile(D,T,H.default.ScriptTarget.Latest,!1);return b.length=0,R.length=0,A(u),`${b.join(";")};${T};${R.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${D}:`,u);return}}};function U(T,D){try{ie(T,D)}catch(u){console.error(`[reflect-parser-plugin] Error reparsing ${D}:`,u)}}return{outputAllMetas:y,transform:w,reparseForHMR:U}}var re=process.cwd().replace(/\\/g,"/")+"/";function ze(e){let n=se(e),t=typeof e.sourcePaths=="string"?[e.sourcePaths]:e.sourcePaths;return{name:"reflect-parser-plugin",enforce:"pre",transform:(a,r)=>(r=r.replace(re,""),r===e.entry?`${n.outputAllMetas()}
2
- ${a}`:n.transform(a,r)),handleHotUpdate(l){return F(this,arguments,function*({file:a,server:r,read:d}){let o=a.replace(/\\/g,"/").replace(re,"");if(!o.endsWith(".ts")||t.every(R=>!o.startsWith(R)))return;let m=yield d();n.reparseForHMR(m,o);let b=r.moduleGraph.getModulesByFile(re+e.entry);if(b)for(let R of b)r.moduleGraph.invalidateModule(R)})}}}0&&(module.exports={DEBUG_CONFIG,parseSource,reflectLoader,reflectParserPlugin,reparseFile,setupReflectTypes,updateReflectModules});
1
+ "use strict";var ke=Object.create;var B=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var $e=(e,t)=>{for(var n in t)B(e,n,{get:t[n],enumerable:!0})},ce=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ce(t))!ve.call(e,a)&&a!==n&&B(e,a,{get:()=>t[a],enumerable:!(i=Ae(t,a))||i.enumerable});return e};var I=(e,t,n)=>(n=e!=null?ke(Oe(e)):{},ce(t||!e||!e.__esModule?B(n,"default",{value:e,enumerable:!0}):n,e)),Le=e=>ce(B({},"__esModule",{value:!0}),e);var F=(e,t,n)=>new Promise((i,a)=>{var r=p=>{try{y(n.next(p))}catch(o){a(o)}},d=p=>{try{y(n.throw(p))}catch(o){a(o)}},y=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,d);y((n=n.apply(e,t)).next())});var Ve={};$e(Ve,{DEBUG_CONFIG:()=>J,parseSource:()=>Q,reflectLoader:()=>oe,reflectParserPlugin:()=>Be,reparseFile:()=>ae,setupReflectTypes:()=>Ie,updateReflectModules:()=>re});module.exports=Le(Ve);var X=I(require("typescript"),1);var A="default";function x(e){return e||{}}var ee=["string","number","boolean","bigint","symbol"];var s=I(require("typescript"),1),K=I(require("fs"),1),j=I(require("process"),1),M=I(require("path"),1),ye=require("url");function V(e){return Buffer.from(e,"utf8").toString("base64")}var J={OUTPUT_LOG:!1},O=new Map,v=new Map,U=new Map,$=new Map,se=new Map,H=new Set,pe={[s.default.SyntaxKind.BooleanKeyword]:"boolean",[s.default.SyntaxKind.StringKeyword]:"string",[s.default.SyntaxKind.BigIntKeyword]:"bigint",[s.default.SyntaxKind.NumberKeyword]:"number",[s.default.SyntaxKind.SymbolKeyword]:"symbol",[s.default.SyntaxKind.VoidKeyword]:"void",[s.default.SyntaxKind.UndefinedKeyword]:"undefined",[s.default.SyntaxKind.UnknownKeyword]:"unknown",[s.default.SyntaxKind.AnyKeyword]:"any",[s.default.SyntaxKind.ObjectKeyword]:"object"},L="any",ge=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],Te=["Mappable","EnableReflect","ReflectReference"];[...ee,...ge,...Te].forEach(Ee);Te.forEach(e=>$.set(e,{name:e,type:e}));var W,ue=!1,C=Reflect;function De(e){return C.__reflectTypes=C.__reflectTypes||x(),C.__reflectTypes[e]=C.__reflectTypes[e]||{},C.__reflectTypes[e]}function Ie(e){return F(this,null,function*(){let{filePaths:t,exclude:n,sourceFolder:i,distFolder:a}=e,r=e.reflectModule||A,d=De(r);if(i=M.resolve(i||j.cwd()),a=M.resolve(a||j.cwd()),d.__meta!==void 0)return;let y={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};t=Ke(t);let p=t.map(o=>M.join(i,o));Q(p,n);for(let[o,g]of O)y.classes[o]=g;for(let[o,g]of v)y.interfaces[o]=g;for(let[o,g]of $)y.typeAliases[o]=g;for(let[o,g]of U)y.enums[o]=g;for(let[o,g]of se)y.constTypes[o]=g;d.__meta=V(JSON.stringify(y)),r===A&&(C.__meta=d.__meta),yield Promise.all(t.map(o=>re(o,a,r)))})}function re(i,a){return F(this,arguments,function*(e,t,n=A){let r=M.resolve(t,e);if(!K.existsSync(r))return;if(K.statSync(r).isDirectory()){let w=K.readdirSync(r);yield Promise.all(w.map(P=>re(M.join(e,P),t,n)));return}if(!e.endsWith(".js"))return;let y=M.join(t,e),o=yield import((0,ye.pathToFileURL)(y).href),g=De(n);g.__classDef=g.__classDef||{},Object.values(o).forEach(w=>{typeof w=="function"&&(g.__classDef[w.name]=w)}),n===A&&(C.__classDef=g.__classDef)})}function Q(e,t){if(e||(e=[j.cwd()]),e=Ke(e),!ue){let n=Re(e,t),i=s.default.createProgram(n,{});W=i.getTypeChecker(),n=n.map(r=>de(r)),i.getSourceFiles().filter(r=>n.includes(de(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{_(`parse file: ${r.fileName}`),we(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of H.keys())!O.has(r)&&!v.has(r)&&!U.has(r)&&!$.has(r)&&!ee.includes(r)&&!ge.includes(r)&&(_(`remove unknown typeName: ${r}`),H.delete(r));Array.from(O.values()).forEach(Ue),Array.from(v.values()).forEach(qe),[O,v,$].forEach(ze),ue=!0}return{classDefinitions:O,interfaceDefinitions:v,enumDefinitions:U,typeAliasDefinitions:$,constTypeDefinitions:se}}function Re(e,t){let n=[];return e.forEach(i=>{if(i=M.resolve(i),Ge(i,t)){_(`ignore excluded ${i}`);return}if(!K.existsSync(i)){console.error(`Path ${i} does not exist.`);return}if(K.statSync(i).isFile()){n.push(i);return}K.readdirSync(i).forEach(d=>n.push(...Re([M.join(i,d)],t)))}),n}function we(e,t,n=!1){s.default.isClassDeclaration(e)?he(e,t,n):s.default.isInterfaceDeclaration(e)?be(e,t):s.default.isEnumDeclaration(e)?xe(e,t,n):s.default.isTypeAliasDeclaration(e)?Me(e,t,n):s.default.isConstTypeReference(e)?Pe(e):e.forEachChild(i=>we(i,t,n))}function he(e,t,n=!1){var g,w,P,N,k,m,h,q,z,G,D,R,u,b,Y;let i=l(e.name);if(!i)return;let a=l((P=(w=(g=e.heritageClauses)==null?void 0:g.find(c=>c.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:w.types)==null?void 0:P[0].expression),r=(k=(N=e.heritageClauses)==null?void 0:N.find(c=>c.token===s.default.SyntaxKind.ImplementsKeyword))==null?void 0:k.types.map(c=>l(c.expression)),d=[],y=[],p;for(let c of e.members)if(s.default.isPropertyDeclaration(c))d.push({name:l(c.name),isOptional:c.questionToken!==void 0,type:T(c),isPrivate:(m=c.modifiers)==null?void 0:m.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(h=c.modifiers)==null?void 0:h.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isReadonly:(q=c.modifiers)==null?void 0:q.some(f=>f.kind===s.default.SyntaxKind.ReadonlyKeyword)});else if(s.default.isConstructorDeclaration(c))p={name:"constructor",isPrivate:(z=c.modifiers)==null?void 0:z.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),args:c.parameters.map(f=>{var S,le;return(S=f.modifiers)!=null&&S.some(Z=>Z.kind===s.default.SyntaxKind.PublicKeyword)&&d.push({name:l(f.name),isOptional:f.questionToken!==void 0,type:T(f),isReadonly:(le=f.modifiers)==null?void 0:le.some(Z=>Z.kind===s.default.SyntaxKind.ReadonlyKeyword)}),{name:l(f.name),type:T(f),isOptional:f.questionToken!==void 0}}),isConstructor:!0};else if(s.default.isMethodDeclaration(c))y.push({name:l(c.name),returnType:T(c),isPrivate:(G=c.modifiers)==null?void 0:G.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(D=c.modifiers)==null?void 0:D.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isAsync:(R=c.modifiers)==null?void 0:R.some(f=>f.kind===s.default.SyntaxKind.AsyncKeyword),args:c.parameters.map(f=>({name:l(f.name),type:T(f),isOptional:f.questionToken!==void 0}))});else if(s.default.isGetAccessorDeclaration(c)){let f=d.find(S=>S.name===l(c.name));f||(f={name:l(c.name),isOptional:c.questionToken===void 0,type:T(c)},d.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((u=c.modifiers)==null?void 0:u.some(S=>S.kind===s.default.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(s.default.isSetAccessorDeclaration(c)){let f=d.find(S=>S.name===l(c.name));f||(f={name:l(c.name),isOptional:c.questionToken===void 0,type:T(c)},d.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((b=c.modifiers)==null?void 0:b.some(S=>S.kind===s.default.SyntaxKind.PrivateKeyword))||!1}}let o={name:i,constructorMethod:p,superClassName:a,implementations:r,properties:d,methods:y,genericsParams:(Y=e.typeParameters)==null?void 0:Y.map(c=>l(c.name)),fromLib:t};if(!n&&O.has(i))throw new Error(`Duplicate defined for class "${i}"`);_(`${n?"Redefine":"Define"} class: ${l(e.name)}`),O.set(i,o)}function be(e,t){var o,g,w,P,N,k;let n=l(e.name);if(!n)return;let i=((g=(o=e.heritageClauses)==null?void 0:o.find(m=>m.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:g.types.map(m=>l(m.expression)))||[],a=[],r=[],d,y;for(let m of e.members)s.default.isPropertySignature(m)?a.push({name:l(m.name),isOptional:m.questionToken!==void 0,type:T(m),isPrivate:((w=m.modifiers)==null?void 0:w.some(h=>h.kind===s.default.SyntaxKind.PrivateKeyword))||!1,isReadonly:((P=m.modifiers)==null?void 0:P.some(h=>h.kind===s.default.SyntaxKind.ReadonlyKeyword))||!1}):s.default.isMethodSignature(m)?r.push({name:m.name.text,returnType:T(m),isPrivate:((N=m.modifiers)==null?void 0:N.some(h=>h.kind===s.default.SyntaxKind.PrivateKeyword))||!1,args:m.parameters.map(h=>({name:l(h.name),type:T(h),isOptional:h.questionToken!==void 0}))}):s.default.isIndexSignatureDeclaration(m)&&(m.parameters[0]&&(d=T(m.parameters[0])),y=T(m));let p=v.get(n);p?(p.implementations=te(p.implementations||[],i),p.methods=te(p.methods||[],r,(m,h)=>m.name===h.name),p.properties=te(p.properties||[],a,(m,h)=>m.name===h.name),y&&(p.index={keyType:d,valueType:y}),_(`Merge interface ${l(e.name)}`)):(p={name:n,implementations:i,methods:r,properties:a,index:y?{keyType:d,valueType:y}:void 0,genericsParams:(k=e.typeParameters)==null?void 0:k.map(m=>l(m.name)),fromLib:t},v.set(n,p),_(`Define interface ${l(e.name)}`))}function xe(e,t,n=!1){let i=l(e.name);if(i){if(!n&&U.has(i))throw new Error(`Duplicate defined for enum: ${i}`);U.set(i,{name:i,members:e.members.map(a=>({name:l(a.name),initializer:l(a.initializer)})),fromLib:t}),_(`Define enum: ${l(e.name)}`)}}function Me(e,t,n=!1){var d;let i=l(e.name);_(`${n?"Redefine":"Define"} typeAlias: ${i}`);let a=T(e),r=(d=e.typeParameters)==null?void 0:d.map(y=>l(y.name));if(!n&&$.has(i))throw new Error(`Duplicate defined for typeAlias: ${i}`);$.set(i,{name:i,type:a,genericParams:r,fromLib:t})}function Pe(e){let t=e.parent.parent;s.default.isVariableDeclaration(t)&&t.initializer&&s.default.isAsExpression(t.initializer)&&se.set(l(t.name),Se(t.initializer.expression))}function Se(e){return s.default.isArrayLiteralExpression(e)?Fe(e):s.default.isObjectLiteralExpression(e)?je(e):s.default.isNumericLiteral(e)?"number":s.default.isStringLiteral(e)?"string":s.default.isBigIntLiteral(e)?"bigint":[s.default.SyntaxKind.TrueKeyword,s.default.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":L}function Fe(e){let t=[];return e.elements.forEach(n=>{if(s.default.isStringLiteral(n))return t.push(l(n))}),t.length===0?L:t.length===1?t[0]:{unionMembers:t}}function je(e){let t=[];return e.properties.map(n=>{s.default.isPropertyAssignment(n)?t.push({name:l(n.name),type:Se(n.initializer)}):_(`unsupported property: ${n.name}`)}),{typeLiteralMembers:t}}function Ee(e){H.add(e)}function T(e,t=!1){if(e.type&&!t)return E(e.type);if(!W)return console.error("TypeChecker not initialized!"),L;let n=W.getTypeAtLocation(e),i=W.typeToTypeNode(n,void 0,void 0);return i?E("type"in i?i.type:i):L}function E(e){let t={};if(e===void 0)return L;if(s.default.isTypeReferenceNode(e))if(Ee(l(e.typeName)),e.typeArguments)t.generics=[l(e.typeName),...e.typeArguments.map(n=>E(n))];else return l(e.typeName);else if(s.default.isFunctionTypeNode(e))t.isFunction=!0;else if(s.default.isConstructorTypeNode(e))t.isConstructor=!0;else{if(s.default.isTypeQueryNode(e))return T(e);if(s.default.isTypeLiteralNode(e)){let n=[];e.members.forEach(i=>{var a,r;s.default.isPropertySignature(i)?n.push({name:l(i.name),isOptional:i.questionToken!==void 0,type:T(i)}):s.default.isIndexSignatureDeclaration(i)?t.index={keyType:(a=i.parameters)!=null&&a[0].type?T((r=i.parameters)==null?void 0:r[0]):void 0,valueType:T(i)}:n.push({name:l(i.name)||"",isOptional:i.questionToken!==void 0,type:E()})}),t.typeLiteralMembers=n}else if(s.default.isArrayTypeNode(e))t.arrayElementType=E(e.elementType);else if(s.default.isTupleTypeNode(e))t.tupleMembers=e.elements.map(E);else if(s.default.isOptionalTypeNode(e))Object.assign(t,T(e)),t.isOptionalInTuple=!0;else{if(s.default.isRestTypeNode(e))return T(e);if(s.default.isUnionTypeNode(e))t.unionMembers=e.types.map(E);else if(s.default.isIntersectionTypeNode(e))t.intersectionMembers=e.types.map(E);else{if(s.default.isConditionalTypeNode(e))return T(e);if(s.default.isInferTypeNode(e))return T(e);if(s.default.isParenthesizedTypeNode(e))return T(e);if(s.default.isThisTypeNode(e))return T(e);if(s.default.isTypeOperatorNode(e)&&e.operator===s.default.SyntaxKind.KeyOfKeyword)return T(e,!0);if(s.default.isIndexedAccessTypeNode(e))return T(e,!0);if(s.default.isMappedTypeNode(e))t.index={keyType:E(e.typeParameter.constraint),valueType:E(e.type)};else if(s.default.isLiteralTypeNode(e))t.literalValue=l(e.literal);else{if(Object.keys(pe).includes(String(e.kind)))return pe[e.kind]||L;if(s.default.isNamedTupleMember(e))Object.assign(t,T(e));else return T(e,!0)}}}}return t}var te=(e,t,n)=>[...(e==null?void 0:e.filter(i=>!(t!=null&&t.some(a=>(n||(()=>a===i))(a,i)))))||[],...t||[]];function ne(e,t){if(e!==void 0&&e!==L)return typeof e=="string"?H.has(e)||t!=null&&t.includes(e)?e:void 0:e}function Ue(e){var t,n;(t=e.methods)==null||t.forEach(i=>_e(i,e.genericsParams)),(n=e.properties)==null||n.forEach(i=>Ne(i,e.genericsParams))}function qe(e){var t,n;(t=e.methods)==null||t.forEach(i=>_e(i,e.genericsParams)),(n=e.properties)==null||n.forEach(i=>Ne(i,e.genericsParams))}function Ne(e,t){e.type=ne(e.type,t)}function _e(e,t){var n;(n=e.args)==null||n.forEach(i=>i.type=ne(i.type,t)),e.returnType=ne(e.returnType,t)}function l(e){if(!e)return e;if(e.end<0)return e.text;try{let t=e;return s.default.isQualifiedName(t)?l(t.right):t.getText()}catch(t){return e.text}}function ie(e){if(e==null||!(e instanceof Object))return;let t=e;Object.entries(t).forEach(n=>{let[i,a]=n;a===!1||a===void 0||a===null?delete t[i]:a instanceof Array?a.length===0?delete t[i]:a.forEach(ie):ie(a)})}function ze(e){for(let t of e.values())ie(t)}function Ge(e,t){return t?(t=t instanceof Array?t:[t],t.some(n=>(n instanceof RegExp||(n=new RegExp(n.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(n)))):!1}function de(e,t=j.cwd()){return me(e).replace(me(t)+"/","")}function me(e){let t=M.sep;return e.split(t).join("/")}function Ke(e){return e instanceof Array?e:[e]}function _(e){J.OUTPUT_LOG&&console.log(e)}function ae(e,t){let n=[],i=[],a=[],r=[],d=[],y=s.default.createSourceFile(t,e,s.default.ScriptTarget.Latest,!0);function p(o){var g;if(s.default.isClassDeclaration(o)&&o.name)he(o,!1,!0),n.push(l(o.name));else if(s.default.isInterfaceDeclaration(o)&&o.name)be(o,!1),i.push(l(o.name));else if(s.default.isEnumDeclaration(o)&&o.name)xe(o,!1,!0),a.push(l(o.name));else if(s.default.isTypeAliasDeclaration(o)&&o.name)Me(o,!1,!0),r.push(l(o.name));else if(s.default.isConstTypeReference(o)){let w=(g=o.parent)==null?void 0:g.parent;s.default.isVariableDeclaration(w)&&w.name&&d.push(l(w.name)),Pe(o)}else o.forEachChild(p)}return p(y),{classNames:n,interfaceNames:i,enumNames:a,typeAliasNames:r,constTypeNames:d}}function oe(e){let{sourcePaths:t,exclude:n,forEnabledClassOnly:i,outputLog:a}=e,r=e.reflectModule||A,d=JSON.stringify(r);if(a&&(J.OUTPUT_LOG=!0),!t)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${t}, exclude: ${n}, forEnabledClassOnly: ${i}, reflectModule: ${r}`);let{classDefinitions:y,interfaceDefinitions:p,enumDefinitions:o,typeAliasDefinitions:g,constTypeDefinitions:w}=Q(t,n),P=[],N=[];function k(D){let R=[];return(()=>{let u=y.get(D);if(u){u.superClassName&&R.push(u.superClassName),R.push(...u.implementations||[]);return}let b=p.get(D);if(b){R.push(...b.implementations||[]);return}g.get(D)&&R.push(D)})(),R.flatMap(u=>[u,...k(u)])||[]}function m(D,R){return k(D.name).includes(R)}function h(D){if(X.default.isClassDeclaration(D)&&D.name!==void 0){let R=D.name.text,u=y.get(R);if(!R||!u||i&&!m(u,"EnableReflect"))return;N.push(`(()=>{const __reflectModule=(Reflect.__reflectTypes=Reflect.__reflectTypes||{})[${d}]=(Reflect.__reflectTypes[${d}]||{});__reflectModule.registerClass?__reflectModule.registerClass({${R}}):(__reflectModule.__classDef=Object.assign(__reflectModule.__classDef||{},{${R}}))})()`);return}D.forEachChild(h)}function q(){let D={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};y.forEach((u,b)=>{i&&!m(u,"EnableReflect")||(D.classes[b]=u)}),p.forEach((u,b)=>{i&&!m(u,"EnableReflect")||(D.interfaces[b]=u)}),o.forEach((u,b)=>{D.enums[b]=u}),g.forEach((u,b)=>{D.typeAliases[b]=u}),w.forEach((u,b)=>{D.constTypes[b]=u});let R=V(JSON.stringify(D));return`;(()=>{const __reflectModule=(Reflect.__reflectTypes=Reflect.__reflectTypes||{})[${d}]=(Reflect.__reflectTypes[${d}]||{});__reflectModule.__meta='${R}'})()`}let z=(D,R)=>{if(R.endsWith(".ts")&&!(typeof t=="string"?[t]:t).every(u=>!R.startsWith(u))){a&&console.log(`transform id: ${R}`);try{let u=X.default.createSourceFile(R,D,X.default.ScriptTarget.Latest,!1);return P.length=0,N.length=0,h(u),`${P.join(";")};${D};${N.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${R}:`,u);return}}};function G(D,R){try{ae(D,R)}catch(u){console.error(`[reflect-parser-plugin] Error reparsing ${R}:`,u)}}return{outputAllMetas:q,transform:z,reparseForHMR:G}}var fe=process.cwd().replace(/\\/g,"/")+"/";function Be(e){let t=oe(e),n=typeof e.sourcePaths=="string"?[e.sourcePaths]:e.sourcePaths;return{name:"reflect-parser-plugin",enforce:"pre",transform:(a,r)=>(r=r.replace(fe,""),r===e.entry?`${t.outputAllMetas()}
2
+ ${a}`:t.transform(a,r)),handleHotUpdate(y){return F(this,arguments,function*({file:a,server:r,read:d}){let p=a.replace(/\\/g,"/").replace(fe,"");if(!p.endsWith(".ts")||n.every(w=>!p.startsWith(w)))return;let o=yield d();t.reparseForHMR(o,p);let g=r.moduleGraph.getModulesByFile(fe+e.entry);if(g)for(let w of g)r.moduleGraph.invalidateModule(w)})}}}0&&(module.exports={DEBUG_CONFIG,parseSource,reflectLoader,reflectParserPlugin,reparseFile,setupReflectTypes,updateReflectModules});
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var Ue=Object.defineProperty,an=Object.defineProperties;var fn=Object.getOwnPropertyDescriptors;var Be=Object.getOwnPropertySymbols;var cn=Object.prototype.hasOwnProperty,ln=Object.prototype.propertyIsEnumerable;var He=(n,e,t)=>e in n?Ue(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,L=(n,e)=>{for(var t in e||(e={}))cn.call(e,t)&&He(n,t,e[t]);if(Be)for(var t of Be(e))ln.call(e,t)&&He(n,t,e[t]);return n},q=(n,e)=>an(n,fn(e)),o=(n,e)=>Ue(n,"name",{value:e,configurable:!0});var ge=["string","number","boolean","bigint","symbol"],Ke={string:String,number:Number,boolean:Boolean,object:Object};var _=Reflect,J,Qe,un=new Promise(n=>{Qe=n});function x(){if(J)return J;let n=_.__meta;if(n===void 0){y.validationErrorHandler(new M("No reflect meta found, reflect is disabled."));return}try{J=JSON.parse(pn(n))}catch(t){console.error(t),y.validationErrorHandler(new M("Illegal reflect meta found, reflect is disabled"));return}delete _.__meta;let e=J;return e.classDef=_.__classDef||{},delete _.__classDef,Reflect.defineProperty(_,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),Qe(),J}o(x,"getRawMeta");function pn(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(pn,"decode");var T={classMap:new Map,interfaceMap:new Map,enumMap:new Map,typeAliasMap:new Map,invalidateClasses(n){n.forEach(e=>this.classMap.delete(e))},invalidateInterfaces(n){n.forEach(e=>this.interfaceMap.delete(e))},invalidateEnums(n){n.forEach(e=>this.enumMap.delete(e))},invalidateTypeAliases(n){n.forEach(e=>this.typeAliasMap.delete(e))},clear(){this.classMap.clear(),this.interfaceMap.clear(),this.enumMap.clear(),this.typeAliasMap.clear()}};var Y=class Y{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 Y(e)}};o(Y,"PropertyDefinition");var P=Y,Z=class Z extends P{static create(e,t){let i=I(Z,e);return i.genericContext=t,i}get type(){return d({rawType:this.rawType,genericContext:this.genericContext})}};o(Z,"GenericProperty");var X=Z;function I(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(I,"createInstance");function ee(n,e){n.properties=e.properties.map(t=>X.create(t,n.genericContext)),n.methods=e.methods.map(t=>G.create(t,n.genericContext)),n instanceof V&&e instanceof k&&e.constructorMethod!==void 0&&(n.constructorMethod=G.create(e.constructorMethod,n.genericContext))}o(ee,"buildPropertiesAndMethods");function De(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(De,"toDictionary");function ne(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(ne,"mapNotNull");function be(n,e,t){n!==void 0&&(n[e]=t)}o(be,"setValue");function B(n,e){if(n!==void 0)return n[e]}o(B,"getValue");function E(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(E,"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 te=he;function H(n){return new te(n)}o(H,"fillMethod");var ie=class ie extends te{static create(e,t){let i=I(ie,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(ie,"GenericMethod");var G=ie;var U=class U{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(H))||[],this.properties=((i=e.properties)==null?void 0:i.map(P.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=ne(this._implementationNames,e=>{var t;return N(e)||((t=g(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 U?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 U?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(U,"InterfaceDefinition");var j=U,oe=class oe extends j{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=I(oe,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),ee(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(oe,"GenericInterface");var re=oe;function N(n){var e,t;if(!T.interfaceMap.has(n)){let i=(t=(e=x())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;T.interfaceMap.set(n,new j(i))}return T.interfaceMap.get(n)}o(N,"getInterfaceDefinition");var we=class we{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=g(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?H(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(H))||[],this.properties=((i=e.properties)==null?void 0:i.map(P.from))||[],this.jsClass=e.jsClass,this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let t=g(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:ne(this._implementationNames,e=>N(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=g(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(we,"ClassDefinition");var k=we,se=class se extends k{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(),ee(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(se,"GenericClass");var V=se;function mn(n){var e;return((e=g(n))==null?void 0:e.jsClass)||Ke[n]}o(mn,"getClassByName");function g(n){var e,t,i,r,s,a;switch(typeof n){case"object":return g(n.constructor);case"function":let f=g(n.name);if(f)return f;let c=Array.from(T.classMap.values()).find(w=>w.jsClass===n);if(c)return c;let m=(t=Object.entries(((e=x())==null?void 0:e.classDef)||{}).find(([w,C])=>C===n))==null?void 0:t[0];return m?g(m):void 0;case"string":let b=n;if(!T.classMap.has(b)){let w=(r=(i=x())==null?void 0:i.classes)==null?void 0:r[b];if(!w)return;let C=(a=(s=x())==null?void 0:s.classDef)==null?void 0:a[b];T.classMap.set(b,new k(q(L({},w),{jsClass:C})))}return T.classMap.get(b)}}o(g,"getClassDefinition");var Re=class Re{constructor(){this.success=!0}};o(Re,"SuccessResult");var Me=Re,Ce=class Ce{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(Ce,"FailureResult");var xe=Ce,p=new Me,l=o((n,e,t)=>new xe(n,e,t),"failedResult");function Tt(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
- -> `)}o(Tt,"getErrorTraceMessages");var Pe=class Pe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Pe,"ValidationError");var M=Pe;var Ie=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(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 ze(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 $e(e):return dn(n,e,t);case fe(e):switch(typeof n){case"string":return n===E(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 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 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||h,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||h;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=B(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&&!We(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,O(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&&!We(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===h)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 We(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=g(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=g(n);return i?i.isSubClassOf(t.name):!1}o(We,"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:$e(n)?`{ [${(i=n.index.keyType)!=null?i:"string"}]: ${u(n.index.valueType)} }`:n.name||"unknown"}o(u,"getTypeDisplayName");function bn(n,e,t){let i=g(n),r=y.validationErrorHandler;if(!i){be(n,e,t);return}let s=i.allProperties[e];s||r(new M(`Property ${e} is not defined in ${i.name}`));let a=s==null?void 0:s.type,f=D(t,a);f.success||r(new M(f.errorMessage)),be(n,e,t)}o(bn,"safeSetValue");var Le=class Le{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(Le,"EnumDefinition");var ve=Le;function K(n){var e,t;if(!T.enumMap.has(n)){let i=(t=(e=x())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;T.enumMap.set(n,new ve(i))}return T.enumMap.get(n)}o(K,"getEnumDefinition");function hn(n){var e;return((e=K(n))==null?void 0:e.names)||[]}o(hn,"getEnumNames");function wn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=K(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(wn,"getEnumValues");var Se=new Map;function A(n){Se.set(n.name,n)}o(A,"registerSpecialType");function qe(n){return Se.has(n)}o(qe,"isSpecialType");function Ee(n,...e){let t=Se.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(Ee,"getSpecialTypeAlias");A({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?Q(e,t=>t.isOptional=!0):void 0}});A({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:Q(e,t=>t.isOptional=!1)}});A({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return Q(e,t=>t.isReadonly=!0)}});A({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:h,valueType:t!=null?t:h}}}});A({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return Xe(e,t)}});function Xe(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>E(s.literalValue)))!=null?r:[E(e.literalValue)];if(n.typeLiteralMembers)return Ze(n,s=>t.includes(s.name))}o(Xe,"getPickType");A({name:"Omit",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=>E(s.literalValue)))!=null?r:[E(e.literalValue)];if(n.typeLiteralMembers)return Ze(n,s=>!t.includes(s.name))}o(Ye,"getOmitType");A({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 Xe(e,i)}}});A({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 Ye(e,i)}}});A({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return q(L({},e),{reflectReference:t})}});function Q(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>en(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>Q(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>Q(t,e)).filter(t=>t!==void 0)}:void 0}o(Q,"getMappedType");function Ze(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?en(t):void 0).filter(t=>!!t)}}o(Ze,"getFilterKeyType");function en(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(en,"copyPropertyDefinition");function ke(n,e){var r,s,a;if(qe(n))return e?Ee(n,...e):Ee(n);if(!T.typeAliasMap.has(n)){let f=(s=(r=x())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!f||!f.type)return;T.typeAliasMap.set(n,{name:n,type:f.type,genericParams:f.genericParams,fromLib:f.fromLib})}let t=T.typeAliasMap.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(ke,"getTypeAliasDefinition");var h={name:"any"},Mn={name:"null"},xn={name:"undefined"};function ze(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(ze,"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 Rn(n){return!!n.generics}o(Rn,"hasGenerics");function $e(n){return!!n.index}o($e,"isIndexType");function O(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return h;if(n==="null")return Mn;if(n==="undefined")return xn;if(n==="Function")return{isFunction:!0};let t=g(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=N(n);if(i)return i.fromLib?{name:n,generics:e}:e?re.create(i,e).type:i.type;let r=K(n);if(r)return r.type;let s=ke(n,e);return s?s.type:(y.debug&&console.warn(`${n} not registered...`),h)}o(O,"getTypeDefinition");var Ve=new Map;function d(n){let{rawType:e,genericContext:t,genericArgs:i}=n,r=je(e);if(e===void 0)return h;let s=Ve.get(r);if(s)return s;let a={};if(Ve.set(r,a),typeof e=="string")a=(t==null?void 0:t[e])||O(e,i)||h;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=h),Ve.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 W={isPrimitiveType:Ae,isArrayType:ae,isLiteralType:fe,isTypeLiteralType:ce,isUnionType:le,isIntersectionType:ue,isTupleType:pe,isClassDefinition:me,hasGenerics:Rn};function R(n){if(typeof n=="string"){let e=Pn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?O(n):R(e)}return"array"in n?{arrayElementType:R(n.array)}:"union"in n?{unionMembers:n.union.map(R)}:"intersection"in n?{intersectionMembers:n.intersection.map(R)}:"tuple"in n?{tupleMembers:n.tuple.map(R)}:"generic"in n?O(n.name,n.generic.map(R)):n}o(R,"getTypeDef");function ei(n,e,t=5){let i=D(n,R(e),t);return i.success||y.validationErrorHandler(new M(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(ei,"assertType");function ni(n){return Cn(null,n)}o(ni,"isNullable");function Cn(n,e,t=5){return D(n,R(e),t).success}o(Cn,"isType");function Pn(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 b=m[1].trim(),w=i[b];return delete i[b],w}o(s,"getPlaceholder");function a(c,m,b,w){let C=0;for(;C<c.length;){let $=c.indexOf(m,C);if($===-1)break;C=$+1;let S=c.indexOf(b,C);if(S===-1)throw new Ne("Illegal type string");let z=c.substring($+1,S),F=r(z);w?c=`${c.substring(0,$+1)}${F}${c.substring(S)}`:c=`${c.substring(0,$)}${F}${c.substring(S+1)}`}return c}o(a,"replaceBracket");function f(c){let m=c.trim(),b=o(v=>v.trim(),"trim"),w=o(v=>v.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let C=s(m);if(C)return f(C);let $=m.split("|").map(b).filter(w);if($.length>1)return{union:$.map(f)};let S=m.split("&").map(b).filter(w);if(S.length>1)return{intersection:S.map(f)};let z=m.match(/^\[(.*)]$/);if(z)return{tuple:z[1].split(",").map(b).filter(w).map(f)};let F=m.match(/^(.+)\[]$/);if(F)return{array:f(F[1])};let de=m.match(/^([^<]+)<(.+)>$/);if(de){let v=de[1].trim(),Te=f(de[2]);if(typeof Te=="string"){let sn=Te.split(",").map(b).filter(w).map(f);return{name:v,generic:sn}}else return{name:v,generic:[Te]}}return m}return o(f,"parseTypeRecursive"),f(n)}o(Pn,"parseType");var Fe=class Fe extends Error{};o(Fe,"TypeParseError");var Ne=Fe;function nn(n,e,t=3){return y.validation?(e=e||n.constructor.name,Oe(n,R(e),t)):p}o(nn,"validateInstance");function fi(n,e,t=2){if(!y.validation)return p;for(let i=0;i<n.length;i++){let r=nn(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(fi,"validateArray");function ci(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=nn(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(ci,"validateDictionary");var tn=Symbol("VALIDATE_WRAPPER"),Di=o((n,e,t)=>In(n,e,t),"ReflectValidate");function In(n,e,t){if(!y.validation)return;let i=t.value;if(typeof i!="function"||B(i,tn))return;let r=o(()=>{var c,m;return(m=(c=g(n))==null?void 0:c.methods)==null?void 0:m.find(b=>b.name===e)},"getMethodDef"),s=o(c=>rn(n,r(),c),"validateArgs"),a=o(c=>On(n,r(),c),"validateReturn"),f=o(function(...c){s(c);let m=i.call(this,...c);return a(m)},"newFunc");f[tn]=i,t.value=f}o(In,"wrapValidateMethod");function rn(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 M(`Illegal arguments for ${_e(n.constructor.name,e)}: ${r.name} is not optional`));else return;let f=D(a,r.type||h,1);f.success||(console.error("validateResult",f),y.validationErrorHandler(new M(`Illegal arguments for ${_e(n.constructor.name,e)}: ${r.name}: ${r.name} ${f.errorMessage}`,f)))})}o(rn,"validateMethodParams");function On(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 M(`result for ${_e(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])||h),t instanceof Promise?t.then(a=>i(a,r||h)):i(t,r||h)}o(On,"validateMethodReturnValue");function _e(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(_e,"getMethodDescription");function bi(n,e,...t){let i=g(n);if(!i)return;let r=i.allMethods[e];if(r)return rn(n,r,t),B(n,e).apply(n,t)}o(bi,"safeCall");var Je=class Je{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=R(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return D(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 W.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):W.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return W.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new ye(`class ${t.name} not reflected`)),e;let i=I(t.jsClass);return Object.assign(i,e),i}};o(Je,"JSONTransfer");var on=Je,Ge=class Ge extends Error{};o(Ge,"JSONError");var ye=Ge;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 Ni(){if(y.debug)return;let n=x();if(n!==void 0)return{raw:n,instances:T,config:y}}o(Ni,"getDebugInfo");export{xe as FailureResult,ye as JSONError,on as JSONTransfer,y as ReflectConfig,Di as ReflectValidate,W as TypeDefinition,Ne as TypeParseError,M as ValidationError,ei as assertType,l as failedResult,mn as getClassByName,g as getClassDefinition,Ni as getDebugInfo,K as getEnumDefinition,hn as getEnumNames,wn as getEnumValues,Tt as getErrorTraceMessages,N as getInterfaceDefinition,ke as getTypeAliasDefinition,R as getTypeDef,ni as isNullable,Cn as isType,un as reflectReady,A as registerSpecialType,bi as safeCall,bn as safeSetValue,p as successResult,fi as validateArray,ci as validateDictionary,nn as validateInstance,D as validateValue};
1
+ var Ke=Object.defineProperty,ut=Object.defineProperties;var pt=Object.getOwnPropertyDescriptors;var He=Object.getOwnPropertySymbols;var mt=Object.prototype.hasOwnProperty,yt=Object.prototype.propertyIsEnumerable;var Ue=(t,e,n)=>e in t?Ke(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,A=(t,e)=>{for(var n in e||(e={}))mt.call(e,n)&&Ue(t,n,e[n]);if(He)for(var n of He(e))yt.call(e,n)&&Ue(t,n,e[n]);return t},W=(t,e)=>ut(t,pt(e)),o=(t,e)=>Ke(t,"name",{value:e,configurable:!0});var O="default";function _(t){return t||{}}o(_,"Dictionary");var ge=["string","number","boolean","bigint","symbol"],Qe={string:String,number:Number,boolean:Boolean,object:Object};var ze=O;function qe(t){ze=t||O}o(qe,"setDefaultReflectModuleName");function R(){return ze}o(R,"getDefaultReflectModuleName");var De=class De{constructor(e=R()){this._instanceStore={classMap:new Map,interfaceMap:new Map,enumMap:new Map,typeAliasMap:new Map};this.moduleName=e||R()}get instanceStore(){return this._instanceStore}};o(De,"ReflectContext");var u=De,We=new Map;function h(t=R()){let e=t||R(),n=We.get(e);return n||(n=new u(e),We.set(e,n)),n}o(h,"getReflectContext");var q=class q{constructor(e,n=h()){this.context=n,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 this.context.fillType({rawType:this.rawType})}static from(e,n){return new q(e,n)}};o(q,"PropertyDefinition");var I=q,X=class X extends I{static create(e,n){let i=V(X,e);return i.genericContext=n,i}get type(){return this.context.fillType({rawType:this.rawType,genericContext:this.genericContext})}};o(X,"GenericProperty");var z=X;function V(t,e){let n=Object.create(t.prototype);return e!==void 0&&Object.assign(n,e),n}o(V,"createInstance");function Y(t,e){t.properties=e.properties.map(n=>z.create(n,t.genericContext)),t.methods=e.methods.map(n=>F.create(n,t.genericContext)),t instanceof $&&e instanceof k&&e.constructorMethod!==void 0&&(t.constructorMethod=F.create(e.constructorMethod,t.genericContext))}o(Y,"buildPropertiesAndMethods");function he(t,e){let n={};return t.forEach(i=>{let[r,s]=e(i);n[r]=s}),n}o(he,"toDictionary");function Z(t,e){return(t==null?void 0:t.map(e).filter(n=>n!==void 0))||[]}o(Z,"mapNotNull");function be(t,e,n){t!==void 0&&(t[e]=n)}o(be,"setValue");function J(t,e){if(t!==void 0)return t[e]}o(J,"getValue");function j(t){return t===void 0?t:t.length>=2&&(t[0]==='"'&&t[t.length-1]==='"'||t[0]==="'"&&t[t.length-1]==="'")?t.substring(1,t.length-1):t}o(j,"trimQuotes");var xe=class xe{constructor(e,n=h()){this.context=n,this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return this.context.fillType({rawType:this.rawDef.returnType})}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(n=>({name:n.name,type:this.context.fillType({rawType:n.type}),isOptional:n.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(xe,"MethodDefinition");var ee=xe;function G(t,e){return new ee(t,e)}o(G,"fillMethod");var te=class te extends ee{static create(e,n){let i=V(te,e);return i.genericContext=n,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(n=>({name:n.name,type:this.context.fillType({rawType:n.type,genericContext:this.genericContext}),isOptional:n.isOptional})))||[]}get returnType(){return this.context.fillType({rawType:this.rawDef.returnType,genericContext:this.genericContext})}};o(te,"GenericMethod");var F=te;var Xe=Symbol("reflect-types.extensions");function d(t,e){var i;let n=(i=Reflect.get(t,Xe))!=null?i:[];n.includes(e)||(Object.entries(Object.getOwnPropertyDescriptors(e.prototype)).forEach(([r,s])=>{r!=="constructor"&&Reflect.defineProperty(t.prototype,r,s)}),Object.entries(Object.getOwnPropertyDescriptors(e)).forEach(([r,s])=>{r==="prototype"||r==="name"||r==="length"||Reflect.defineProperty(t,r,s)}),n.push(e),Reflect.set(t,Xe,n))}o(d,"extension");var B=class B{constructor(e,n=h()){var i,r,s,a;this.context=n,this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((i=e.methods)==null?void 0:i.map(l=>G(l,n)))||[],this.properties=((r=e.properties)==null?void 0:r.map(l=>I.from(l,n)))||[],this.generics=(s=e.genericsParams)!=null?s:[],this.fromLib=(a=e.fromLib)!=null?a:!1}get implementations(){return this._implementations||(this._implementations=Z(this._implementationNames,e=>{var n;return this.context.getInterfaceDefinition(e)||((n=this.context.getClassDefinition(e))==null?void 0:n.type)||this.context.getTypeDefinition(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(n=>{n instanceof B?n.allImplementations.forEach(i=>e.add(i)):e.add(n)}),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={},n=[];return this.implementations.forEach(i=>{let r=i instanceof B?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):n.push(r)}),this.properties.forEach(i=>e[i.name]=i),n.length>0?{interfaceName:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...n]}:{interfaceName:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(B,"InterfaceDefinition");var N=B,ie=class ie extends N{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(n,i){let r=V(ie,n);r.genericArgs=i;let s=r;return s.buildGenericContext(),Y(s,n),s}buildGenericContext(){var n;this.genericContext={},(n=this.generics)==null||n.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(ie,"GenericInterface");var ne=ie;d(u,class extends u{getInterfaceDefinition(t){var n,i;let e=this.instanceStore;if(!e.interfaceMap.has(t)){let r=(i=(n=this.getRawMeta())==null?void 0:n.interfaces)==null?void 0:i[t];if(!r)return;e.interfaceMap.set(t,new N(r,this))}return e.interfaceMap.get(t)}});var Re=class Re{constructor(e,n=h()){var i,r,s,a;this.context=n,this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=n.getClassDefinition(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?G(e.constructorMethod,n):void 0,this.methods=((i=e.methods)==null?void 0:i.map(l=>G(l,n)))||[],this.properties=((r=e.properties)==null?void 0:r.map(l=>I.from(l,n)))||[],this.jsClass=e.jsClass,this.generics=(s=e.genericsParams)!=null?s:[],this.fromLib=(a=e.fromLib)!=null?a:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let n=this.context.getClassDefinition(this.superClassName);n&&Object.assign(e,A({},n.allMethods))}return Object.assign(e,A({},he(this.methods,n=>[n.name,n]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},he(this.properties,n=>[n.name,n]))}get implementations(){return this._implementations?this._implementations:Z(this._implementationNames,e=>this.context.getInterfaceDefinition(e)||this.context.getTypeDefinition(e))}get allImplementations(){var e,n;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof N?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(n=(e=this.superClass)==null?void 0:e.allImplementations)==null||n.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(n=>n.name===e)}get type(){var n,i;let e={};return(i=(n=this.superClass)==null?void 0:n.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 n;return this.name===e||(n=this.superClass)!=null&&n.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let n=this.context.getClassDefinition(e);return n?n.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(Re,"ClassDefinition");var k=Re,re=class re extends k{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(n,i){let r=V(re,n);r.genericArgs=i;let s=r;return s.buildGenericContext(),Y(s,n),s}buildGenericContext(){var n;this.genericContext={},(n=this.generics)==null||n.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(re,"GenericClass");var $=re;d(u,class extends u{getClassByName(t){var e;return((e=this.getClassDefinition(t))==null?void 0:e.jsClass)||Qe[t]}getClassDefinition(t){var n,i,r,s,a,l;let e=this.instanceStore;switch(typeof t){case"object":return this.getClassDefinition(t.constructor);case"function":let c=this.getClassDefinition(t.name);if(c)return c;let f=Array.from(e.classMap.values()).find(w=>w.jsClass===t);if(f)return f;let D=(i=Object.entries(((n=this.getRawMeta())==null?void 0:n.classDef)||{}).find(([w,v])=>v===t))==null?void 0:i[0];return D?this.getClassDefinition(D):void 0;case"string":let x=t;if(!e.classMap.has(x)){let w=(s=(r=this.getRawMeta())==null?void 0:r.classes)==null?void 0:s[x];if(!w)return;let v=(l=(a=this.getRawMeta())==null?void 0:a.classDef)==null?void 0:l[x];e.classMap.set(x,new k(W(A({},w),{jsClass:v}),this))}return e.classMap.get(x)}}});var we=class we{constructor(e){var n;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=(n=e.fromLib)!=null?n:!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(we,"EnumDefinition");var Ce=we;d(u,class extends u{getEnumDefinition(t){var n,i;let e=this.instanceStore;if(!e.enumMap.has(t)){let r=(i=(n=this.getRawMeta())==null?void 0:n.enums)==null?void 0:i[t];if(!r)return;e.enumMap.set(t,new Ce(r))}return e.enumMap.get(t)}getEnumNames(t){var e;return((e=this.getEnumDefinition(t))==null?void 0:e.names)||[]}getEnumValues(t){let e=Object.entries(t)[0];if(!e)return[];let[n,i]=e,r=this.getEnumDefinition(n);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}});var Ie=class Ie{constructor(){this.success=!0}};o(Ie,"SuccessResult");var Me=Ie,Ve=class Ve{constructor(e,n,i){this.errorCode=e;this.errorDesc=n;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 n,i;let e="";return this.path!==void 0&&(typeof this.path=="string"?e=`.${this.path}`:e=`[${this.path}]`),e+((i=(n=this.cause)==null?void 0:n.errorPath)!=null?i:"")}};o(Ve,"FailureResult");var ve=Ve,y=new Me,p=o((t,e,n)=>new ve(t,e,n),"failedResult");function Fn(t){let e=o(n=>n.errorMessage?[n.errorMessage,...n.cause?e(n.cause):[]]:[],"getAllTraceMessages");return e(t).join(`
3
+ -> `)}o(Fn,"getErrorTraceMessages");var Pe=class Pe extends Error{constructor(e,n){super(e),this.failureResult=n}};o(Pe,"ValidationError");var C=Pe;var Oe=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];d(u,class extends u{validateValue(t,e,n=1){var i;if(!T.validation)return y;if(e.validator)return e.validator(t,n);switch(!0){case e.name==="undefined":return t===void 0?y:p(100,`declared as ${m(e)} but actually not`,{value:t,type:e});case e.name==="null":return t===null?y:p(101,`declared as ${m(e)} but actually not`,{value:t,type:e});case Ye(e):return y;case ue(e):return t instanceof Object?this.validateClassInstance(t,e,n):p(200,`declared as ${m(e)} but actually not an object`,{value:t,type:e});case oe(e):return this.validateArrayValue(t,e,n);case ce(e):return this.validateTupleValue(t,e,n);case le(e):let r=[];for(let s of e.unionMembers||[]){let a=this.validateValue(t,s,n);if(a.success)return y;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?p(321,`declared as ${m(e)} but not match`,{value:t,type:e,cause:r.find(s=>{var a;return((a=s.type)==null?void 0:a.name)!=="undefined"})}):p(321,`declared as ${m(e)} but all value not match`,{value:t,type:e,detailCause:r.filter(s=>{var a;return((a=s.type)==null?void 0:a.name)!=="undefined"})}):p(320,`declared as ${m(e)} but all value not match`,{value:t,type:e,detailCause:r});case fe(e):for(let s of e.intersectionMembers||[]){let a=this.validateValue(t,s,n);if(!a.success)return p(330,`declared as ${m(e)} but all value not match`,{cause:a,value:t,type:e})}return y;case Ae(e):return this.validateIndexedValue(t,e,n);case se(e):switch(typeof t){case"string":return t===j(e.literalValue)?y:p(110,`declared as string ${m(e)} but value not match`,{value:t,type:e});case"number":return t===Number(e.literalValue)?y:p(111,`declared as number ${m(e)} but value not match`,{value:t,type:e});case"bigint":return t===BigInt(e.literalValue)?y:p(112,`declared as bigint ${m(e)} but value not match`,{value:t,type:e});case"boolean":return t===!!e.literalValue?y:p(113,`declared as boolean ${m(e)} but value not match`,{value:t,type:e});default:return e.literalValue==="null"&&t===null?y:t===e.literalValue?y:p(114,`declared as ${m(e)} but value not match`,{value:t,type:e})}case ae(e):return this.validateProperties(t,e,n);case e.isFunction:case e.isConstructor:return typeof t=="function"?y:p(150,`declared as ${m(e)} but actually not`,{value:t,type:e});case Se(e):return t==null?p(120,`declared as ${m(e)} but actually ${t}`,{value:t,type:e}):typeof t===e.name?y:p(121,`declared as ${m(e)} but actually ${typeof t}`,{value:t,type:e});default:return this.validateSimpleValue(t,e,n)}}validateArrayValue(t,e,n=1){if(!Array.isArray(t))return p(300,`declared as ${m(e)} but actually not`,{value:t,type:e});if(n===0)return y;for(let i=0;i<t.length;i++){let r=t[i],s=this.validateValue(r,e.arrayElementType||b,n-1);if(!s.success)return p(301,`declared as ${m(e)} but [${i}] not match`,{cause:s,value:t,type:e,path:i})}return y}validateIndexedValue(t,e,n=1){if(t===null)return p(400,"declared as indexedType but actually is null",{value:t,type:e});if(t===void 0)return p(401,"declared as indexedType but actually is undefined",{value:t,type:e});if(typeof t!="object")return p(410,`declared as indexedType but actually is ${typeof t}`,{value:t,type:e});for(let[i,r]of Object.entries(t)){let s=this.validateValue(r,e.index.valueType,n-1);if(!s.success)return p(420,`declared as ${m(e)} but [${i}] not match`,{cause:s,value:t,type:e,path:i});if(e.index.keyType&&(s=this.validateValue(i,e.index.keyType,n-1),!s.success))return p(421,`declared as ${m(e)} but [${i}] not match`,{cause:s,value:t,type:e,path:i})}return y}validateTupleValue(t,e,n=1){if(!Array.isArray(t))return p(310,`declared as ${m(e)} but actually not a tuple`,{value:t,type:e});if(n===0)return y;let i=0;for(let r of e.tupleMembers){let s=t[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=this.validateValue(s,r,n);if(!a.success)return p(311,`declared as ${m(e)} but not all values in tuple match`,{cause:a,value:t,type:e})}return y}validateProperties(t,e,n=1){if(!(t instanceof Object))return p(210,`declared as ${m(e)} but not an object`,{value:t,type:e});for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return y;if(i.name.startsWith("[")&&i.name.endsWith("]"))return y;if(n===0)return y;let r=i.type||b;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=J(t,i.name),a=this.validateValue(s,r,n-1);if(!a.success)return p(211,`declared ${i.name} as ${m(r)}, but not match`,{cause:a,value:t,type:e,path:i.name})}return y}validateSimpleValue(t,e,n=1){let i=typeof e=="string"?e:e.name;if(!i)return y;if(t===void 0)return p(130,`declared as ${m(e)} but actually undefined`,{value:t,type:e});if(t===null)return p(131,`declared as ${m(e)} but actually null`,{value:t,type:e});for(let s of Oe)if(i===s.name)return t instanceof s?y:p(132,`declared as ${m(e)} but actually ${t.constructor.name}`,{value:t,type:e});if(t instanceof Object&&!this.valueInstanceOf(t,i))return p(133,`declared as ${m(e)} but actually not instance of it`,{value:t,type:e});if(n==0)return y;let r=this.validateValue(t,this.getTypeDefinition(i),n);return r.success?y:p(134,`declared as ${m(e)} but actually not match`,{cause:r,value:t,type:e})}validateClassInstance(t,e,n=3){if(e.classDefinition&&!this.valueInstanceOf(t,e.classDefinition.name))return p(201,`declared as instance of ${m(e)} but actually not`,{value:t,type:e});if(e.name!=="any"&&e===b)return p(202,`${m(e)} not defined`,{value:t,type:e});let i=A({},e);return delete i.classDefinition,this.validateValue(t,i,n)}valueInstanceOf(t,e){if(t===void 0||t.constructor.name===e)return!0;let n=this.getClassDefinition(e);if(!n)return!0;if(n.jsClass)return t instanceof n.jsClass;let i=this.getClassDefinition(t);return i?i.isSubClassOf(n.name):!1}});function m(t){var e,n,i;return typeof t=="string"?t:ue(t)?t.classDefinition.name:t.interfaceName?t.interfaceName:t.typeAliasName?t.typeAliasName:oe(t)?m(t.arrayElementType)+"[]":t.isConstructor?"Class":t.isFunction?"Function":ae(t)?"Object":ce(t)?`(${t.tupleMembers.map(m).join(",")})`:le(t)?((e=t.unionMembers)==null?void 0:e.map(m).join(" | "))||"unknown":fe(t)?((n=t.intersectionMembers)==null?void 0:n.map(m).join(" & "))||"unknown":se(t)?t.literalValue:Ae(t)?`{ [${(i=t.index.keyType)!=null?i:"string"}]: ${m(t.index.valueType)} }`:t.name||"unknown"}o(m,"getTypeDisplayName");d(u,class extends u{safeSetValue(t,e,n){let i=this.getClassDefinition(t),r=T.validationErrorHandler;if(!i){be(t,e,n);return}let s=i.allProperties[e];s||r(new C(`Property ${e} is not defined in ${i.name}`));let a=s==null?void 0:s.type,l=this.validateValue(n,a);l.success||r(new C(l.errorMessage)),be(t,e,n)}});var b={name:"any"},dt={name:"null"},Tt={name:"undefined"};function Ye(t){return!!(t.name&&["any","void","unknown"].includes(t.name))}o(Ye,"isIgnoredType");function Se(t){return!!(t.name&&ge.includes(t.name))}o(Se,"isPrimitiveType");function oe(t){return!!t.arrayElementType}o(oe,"isArrayType");function se(t){return!!t.literalValue}o(se,"isLiteralType");function ae(t){return!!t.typeLiteralMembers}o(ae,"isTypeLiteralType");function le(t){return!!t.unionMembers}o(le,"isUnionType");function fe(t){return!!t.intersectionMembers}o(fe,"isIntersectionType");function ce(t){return!!t.tupleMembers}o(ce,"isTupleType");function ue(t){return!!t.classDefinition}o(ue,"isClassDefinition");function gt(t){return!!t.generics}o(gt,"hasGenerics");function Ae(t){return!!t.index}o(Ae,"isIndexType");d(u,class extends u{getTypeDefinition(t,e){if(t==="any"||t==="Any"||t==="unknown"||t==="")return b;if(t==="null")return dt;if(t==="undefined")return Tt;if(t==="Function")return{isFunction:!0};let n=this.getClassDefinition(t);if(n)return e?$.create(n,e).type:n.type;if(ge.includes(t))return{name:t};if(Oe.map(a=>a.name).includes(t))return{name:t,generics:e};let i=this.getInterfaceDefinition(t);if(i)return i.fromLib?{name:t,generics:e}:e?ne.create(i,e).type:i.type;let r=this.getEnumDefinition(t);if(r)return r.type;let s=this.getTypeAliasDefinition(t,e);return s?s.type:(T.debug&&console.warn(`${t} not registered...`),b)}fillType(t){let{rawType:e,genericContext:n,genericArgs:i}=t,r=je(e);if(e===void 0)return b;let s=Ee.get(r);if(s)return s;let a={};if(Ee.set(r,a),typeof e=="string")a=(n==null?void 0:n[e])||this.getTypeDefinition(e,i)||b;else if(typeof e.literalValue=="string")a.literalValue=e.literalValue;else if(e.arrayElementType)Object.assign(a,{arrayElementType:this.fillType({rawType:e.arrayElementType,genericContext:n})});else if(e.unionMembers)Object.assign(a,{unionMembers:e.unionMembers.map(l=>this.fillType({rawType:l,genericContext:n}))});else if(e.intersectionMembers)Object.assign(a,{intersectionMembers:e.intersectionMembers.map(l=>this.fillType({rawType:l,genericContext:n}))});else if(e.tupleMembers)Object.assign(a,{tupleMembers:e.tupleMembers.map(l=>this.fillType({rawType:l,genericContext:n}))});else if(e.typeLiteralMembers)a.typeLiteralMembers=e.typeLiteralMembers.map(l=>({name:l.name,isOptional:!!l.isOptional,type:this.fillType({rawType:l.type,genericContext:n,genericArgs:i})}));else if(e.generics){let l=e.generics[0],c=e.generics.slice(1).map(f=>this.fillType({rawType:f,genericContext:n}));Object.assign(a,this.fillType({rawType:l,genericContext:n,genericArgs:c}))}else e.index&&Object.assign(a,{index:{keyType:e.index.keyType?this.fillType({rawType:e.index.keyType,genericContext:n}):void 0,valueType:this.fillType({rawType:e.index.valueType,genericContext:n})}});return Object.keys(a).length===0&&(a=b),Ee.delete(r),a}});var Ee=new Map;function je(t){return t===null?"null":t===void 0?"undefined":typeof t!="object"?JSON.stringify(t):Array.isArray(t)?"["+t.map(je).join(",")+"]":"{"+Object.keys(t).sort().map(n=>JSON.stringify(n)+":"+je(t[n])).join(",")+"}"}o(je,"stableStringify");var H={isPrimitiveType:Se,isArrayType:oe,isLiteralType:se,isTypeLiteralType:ae,isUnionType:le,isIntersectionType:fe,isTupleType:ce,isClassDefinition:ue,hasGenerics:gt};var ke=new Map;function P(t){ke.set(t.name,t)}o(P,"registerSpecialType");function Ze(t){return ke.has(t)}o(Ze,"isSpecialType");function $e(t,...e){let n=ke.get(t);if(!n)return;let i=n.getType(...e);return i?{name:t,type:i,genericParams:n.genericParams,fromLib:!!n.fromLib}:void 0}o($e,"getSpecialTypeAlias");P({name:"Partial",genericParams:["T"],fromLib:!0,getType(...t){let e=t[0];return e?U(e,n=>n.isOptional=!0):void 0}});P({name:"Required",genericParams:["T"],fromLib:!0,getType(...t){let e=t[0];return e!=null?e:U(e,n=>n.isOptional=!1)}});P({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...t){let e=t[0];return U(e,n=>n.isReadonly=!0)}});P({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...t){let[e,n]=t;return{index:{keyType:e!=null?e:b,valueType:n!=null?n:b}}}});P({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...t){let[e,n]=t;if(e)return et(e,n)}});function et(t,e){var i,r;if(!e)return;let n=(r=(i=e.unionMembers)==null?void 0:i.map(s=>j(s.literalValue)))!=null?r:[j(e.literalValue)];if(t.typeLiteralMembers)return nt(t,s=>n.includes(s.name))}o(et,"getPickType");P({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...t){let[e,n]=t;if(e)return tt(e,n)}});function tt(t,e){var i,r;if(!e)return;let n=(r=(i=e.unionMembers)==null?void 0:i.map(s=>j(s.literalValue)))!=null?r:[j(e.literalValue)];if(t.typeLiteralMembers)return nt(t,s=>!n.includes(s.name))}o(tt,"getOmitType");P({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...t){let[e,n]=t;if(!(!e||!n)&&e.typeLiteralMembers&&n.typeLiteralMembers){let i={unionMembers:n.typeLiteralMembers.map(r=>({literalValue:r.name}))};return et(e,i)}}});P({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...t){let[e,n]=t;if(!(!e||!n)&&e.typeLiteralMembers&&n.typeLiteralMembers){let i={unionMembers:n.typeLiteralMembers.map(r=>({literalValue:r.name}))};return tt(e,i)}}});P({name:"ReflectReference",genericParams:["T","R"],getType(...t){let[e,n]=t;if(e)return W(A({},e),{reflectReference:n})}});function U(t,e){return t.typeLiteralMembers?{typeLiteralMembers:t.typeLiteralMembers.map(n=>it(n,e))}:t.unionMembers?{unionMembers:t.unionMembers.map(n=>U(n,e)).filter(n=>n!==void 0)}:t.intersectionMembers?{intersectionMembers:t.intersectionMembers.map(n=>U(n,e)).filter(n=>n!==void 0)}:void 0}o(U,"getMappedType");function nt(t,e){if(t.typeLiteralMembers)return{typeLiteralMembers:t.typeLiteralMembers.map(n=>e(n)?it(n):void 0).filter(n=>!!n)}}o(nt,"getFilterKeyType");function it(t,e){let n;return t instanceof I?n=new I({name:t.name,isReadonly:t.isReadOnly,isOptional:t.isOptional,isStatic:t.isStatic,accessor:t.accessor,type:t.rawType}):n={name:t.name,isOptional:t.isOptional,type:t.type},e==null||e(n),n}o(it,"copyPropertyDefinition");d(u,class extends u{getTypeAliasDefinition(t,e){var s,a,l;if(Ze(t))return e?$e(t,...e):$e(t);let n=this.instanceStore;if(!n.typeAliasMap.has(t)){let c=(a=(s=this.getRawMeta())==null?void 0:s.typeAliases)==null?void 0:a[t];if(!c||!c.type)return;n.typeAliasMap.set(t,{name:t,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let i=n.typeAliasMap.get(t);if(!i)return;let r;if(i.genericParams&&e){let c={};for(let f=0;f<i.genericParams.length;f++){let D=i.genericParams[f];c[D]=e[f]}r=this.fillType({rawType:i.type,genericContext:c,genericArgs:e})}else r=this.fillType({rawType:i.type});return r.typeAliasName=t,{name:i.name,type:r,genericParams:i.genericParams,fromLib:(l=i.fromLib)!=null?l:!1}}});var M=Reflect,K=_(),rt,Dt=new Promise(t=>{rt=t});function Ne(t=R()){return M.__reflectTypes=M.__reflectTypes||_(),M.__reflectTypes[t]=M.__reflectTypes[t]||{},M.__reflectTypes[t]}o(Ne,"getReflectModuleState");function ht(t=R()){var s;if(K[t])return K[t];let e=Ne(t),n=(s=e.__meta)!=null?s:t===O?M.__meta:void 0;if(n===void 0){T.validationErrorHandler(new C("No reflect meta found, reflect is disabled."));return}try{K[t]=JSON.parse(xt(n))}catch(a){console.error(a),T.validationErrorHandler(new C("Illegal reflect meta found, reflect is disabled"));return}delete e.__meta,t===O&&delete M.__meta;let i=K[t],r=e.__classDef||{};return t===O&&M.__classDef&&M.__classDef!==r&&Object.assign(r,M.__classDef),i.classDef=r,delete e.__classDef,t===O&&delete M.__classDef,Reflect.defineProperty(e,"registerClass",{value:o(a=>Object.assign(i.classDef,a),"value")}),t===O&&!M.registerClass&&Reflect.defineProperty(M,"registerClass",{value:e.registerClass}),rt(),K[t]}o(ht,"getRawMeta");function ot(t=R()){return(e=>{let n=_();n[e.name]=e;let i=Ne(t);i.registerClass?i.registerClass(n):i.__classDef=Object.assign(i.__classDef||{},n)})}o(ot,"createReflectClassDecorator");var bt=o((t=>ot()(t)),"ReflectClass");d(u,class extends u{get ReflectClass(){return ot(this.moduleName)}registerClass(t){let e=_();e[t.name]=t;let n=Ne(this.moduleName);n.registerClass?n.registerClass(e):n.__classDef=Object.assign(n.__classDef||{},e)}getRawMeta(){return ht(this.moduleName)}getDebugInfo(){if(!T.debug)return;let t=this.getRawMeta();if(t!==void 0)return{raw:t,instances:this.instanceStore,config:T}}});function xt(t){let e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return new TextDecoder().decode(n)}o(xt,"decode");var Le=class Le{constructor(e,n=h()){this.exceptionHandler=e!=null?e:console.error,this.context=n}parse(e,n){if(!n)return JSON.parse(e);let i=this.context.getTypeDef(n),r=JSON.parse(e),s=this.convertJSONValue(r,i);return this.context.validateValue(s,i).success||this.exceptionHandler(new me(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,n){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return H.isArrayType(n)?e.map(i=>this.convertJSONValue(i,n)):H.isTupleType(n)?n.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return H.isClassDefinition(n)?this.convertJSONObjectAsClassInstance(e,n.classDefinition):e}}convertJSONObjectAsClassInstance(e,n){if(!n.jsClass)return this.exceptionHandler(new me(`class ${n.name} not reflected`)),e;let i=V(n.jsClass);return Object.assign(i,e),i}};o(Le,"JSONTransfer");var pe=Le,_e=class _e extends Error{};o(_e,"JSONError");var me=_e;d(u,class extends u{get json(){return new pe(void 0,this)}createJSONTransfer(t){return new pe(t,this)}});d(u,class extends u{getTypeDef(t){let e=o(n=>this.getTypeDef(n),"getTypeDefInContext");if(typeof t=="string"){let n=Rt(t);if(typeof n=="string"){let i=n.match(/"(.+)"$/)||n.match(/'(.+)'$/);if(i!=null&&i[1])return{literalValue:i[1]}}return typeof n=="string"?this.getTypeDefinition(t):e(n)}return"array"in t?{arrayElementType:e(t.array)}:"union"in t?{unionMembers:t.union.map(e)}:"intersection"in t?{intersectionMembers:t.intersection.map(e)}:"tuple"in t?{tupleMembers:t.tuple.map(e)}:"generic"in t?this.getTypeDefinition(t.name,t.generic.map(e)):t}assertType(t,e,n=5){let i=this.validateValue(t,this.getTypeDef(e),n);return i.success||T.validationErrorHandler(new C(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),t}isNullable(t){return this.isType(null,t)}isType(t,e,n=5){return this.validateValue(t,this.getTypeDef(e),n).success}});function Rt(t){let e=0,n="%%",i={};function r(c){let f=`${n}${e++}`;return i[f]=c,f}o(r,"addPlaceholder");function s(c){let f=c.match(new RegExp(`^(${n}\\d)$`));if(!f)return;let D=f[1].trim(),x=i[D];return delete i[D],x}o(s,"getPlaceholder");function a(c,f,D,x){let w=0;for(;w<c.length;){let v=c.indexOf(f,w);if(v===-1)break;w=v+1;let E=c.indexOf(D,w);if(E===-1)throw new Fe("Illegal type string");let Q=c.substring(v+1,E),L=r(Q);x?c=`${c.substring(0,v+1)}${L}${c.substring(E)}`:c=`${c.substring(0,v)}${L}${c.substring(E+1)}`}return c}o(a,"replaceBracket");function l(c){let f=c.trim(),D=o(S=>S.trim(),"trim"),x=o(S=>S.length!=0,"notEmpty");f=a(f,"(",")",!1),f=a(f,"<",">",!0);let w=s(f);if(w)return l(w);let v=f.split("|").map(D).filter(x);if(v.length>1)return{union:v.map(l)};let E=f.split("&").map(D).filter(x);if(E.length>1)return{intersection:E.map(l)};let Q=f.match(/^\[(.*)]$/);if(Q)return{tuple:Q[1].split(",").map(D).filter(x).map(l)};let L=f.match(/^(.+)\[]$/);if(L)return{array:l(L[1])};let de=f.match(/^([^<]+)<(.+)>$/);if(de){let S=de[1].trim(),Te=l(de[2]);if(typeof Te=="string"){let ct=Te.split(",").map(D).filter(x).map(l);return{name:S,generic:ct}}else return{name:S,generic:[Te]}}return f}return o(l,"parseTypeRecursive"),l(t)}o(Rt,"parseType");var Je=class Je extends Error{};o(Je,"TypeParseError");var Fe=Je;d(u,class extends u{validateInstance(t,e,n=3){return T.validation?(e=e||t.constructor.name,this.validateClassInstance(t,this.getTypeDef(e),n)):y}validateArray(t,e,n=2){if(!T.validation)return y;for(let i=0;i<t.length;i++){let r=this.validateInstance(t[i],e,n);if(!r.success)return p(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:t,type:e})}return y}validateDictionary(t,e,n=2){if(!T.validation)return y;let i=Object.entries(t);for(let r=0;r<i.length;r++){let[s,a]=i[r],l=this.validateInstance(a,e,n);if(!l.success)return p(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:l,value:t,type:e})}return y}});var st=Symbol("VALIDATE_WRAPPER"),Yi=o((t,e,n)=>at(t,e,n),"ReflectValidate");function Ct(t=R()){return(e,n,i)=>at(e,n,i,t)}o(Ct,"createReflectValidate");function at(t,e,n,i=R()){if(!T.validation)return;let r=n.value;if(typeof r!="function"||J(r,st))return;let s=o(()=>{var f,D;return(D=(f=h(i).getClassDefinition(t))==null?void 0:f.methods)==null?void 0:D.find(x=>x.name===e)},"getMethodDef"),a=o(f=>lt(t,s(),f,i),"validateArgs"),l=o(f=>wt(t,s(),f,i),"validateReturn"),c=o(function(...f){a(f);let D=r.call(this,...f);return l(D)},"newFunc");c[st]=r,n.value=c}o(at,"wrapValidateMethod");function lt(t,e,n,i=R()){var r;(r=e==null?void 0:e.args)==null||r.forEach((s,a)=>{let l=n==null?void 0:n[a];if(l===void 0)if(!s.isOptional)T.validationErrorHandler(new C(`Illegal arguments for ${Ge(t.constructor.name,e)}: ${s.name} is not optional`));else return;let c=h(i).validateValue(l,s.type||b,1);c.success||(console.error("validateResult",c),T.validationErrorHandler(new C(`Illegal arguments for ${Ge(t.constructor.name,e)}: ${s.name}: ${s.name} ${c.errorMessage}`,c)))})}o(lt,"validateMethodParams");function wt(t,e,n,i=R()){var a;if(!e)return n;let r=o((l,c)=>{let f=h(i).validateValue(l,c,5);return f.success||(console.error(f.errorStackFlow),T.validationErrorHandler(new C(`result for ${Ge(t.constructor.name,e)} doesn't match type ${c.name}:
4
+ ${f.errorStackFlow}`,f))),l},"checkValue"),s=e.returnType;return s.name==="Promise"&&(s=((a=s.generics)==null?void 0:a[0])||b),n instanceof Promise?n.then(l=>r(l,s||b)):r(n,s||b)}o(wt,"validateMethodReturnValue");function Ge(t,e){var n;return`${t}.${e.name}(${(n=e.args)==null?void 0:n.map(i=>i.name).join(", ")})`}o(Ge,"getMethodDescription");d(u,class extends u{get ReflectValidate(){return Ct(this.moduleName)}safeCall(t,e,...n){let i=this.getClassDefinition(t);if(!i)return;let r=i.allMethods[e];if(r)return lt(t,r,n,this.moduleName),J(t,e).apply(t,n)}});var Be=class Be{constructor(e){this.context=e}get name(){return this.context.moduleName}get ReflectClass(){return this.context.ReflectClass}get ReflectValidate(){return this.context.ReflectValidate}get json(){return this.context.json}createJSONTransfer(e){return this.context.createJSONTransfer(e)}registerClass(e){this.context.registerClass(e)}getClassDefinition(e){return this.context.getClassDefinition(e)}getClassByName(e){return this.context.getClassByName(e)}getInterfaceDefinition(e){return this.context.getInterfaceDefinition(e)}getTypeAliasDefinition(e,n){return this.context.getTypeAliasDefinition(e,n)}getEnumDefinition(e){return this.context.getEnumDefinition(e)}getEnumNames(e){return this.context.getEnumNames(e)}getEnumValues(e){return this.context.getEnumValues(e)}getTypeDefinition(e,n){return this.context.getTypeDefinition(e,n)}getTypeDef(e){return this.context.getTypeDef(e)}assertType(e,n,i=5){return this.context.assertType(e,n,i)}isNullable(e){return this.context.isNullable(e)}isType(e,n,i=5){return this.context.isType(e,n,i)}validateValue(e,n,i=1){return this.context.validateValue(e,n,i)}validateInstance(e,n,i=3){return this.context.validateInstance(e,n,i)}validateArray(e,n,i=2){return this.context.validateArray(e,n,i)}validateDictionary(e,n,i=2){return this.context.validateDictionary(e,n,i)}safeSetValue(e,n,i){this.context.safeSetValue(e,n,i)}safeCall(e,n,...i){return this.context.safeCall(e,n,...i)}getDebugInfo(){return this.context.getDebugInfo()}};o(Be,"ReflectModule");var ye=Be,ft=new Map;function Mt(t=R()){let e=t||R(),n=ft.get(e);return n||(n=new ye(h(e)),ft.set(e,n)),n}o(Mt,"getReflectModule");function g(){return h()}o(g,"currentContext");function vt(t){qe(t)}o(vt,"setReflectModule");function It(){return g().getRawMeta()}o(It,"getRawMeta");function Vt(){if(T.debug)return;let t=g().getRawMeta();if(t!==void 0)return{raw:t,instances:g().instanceStore,config:T}}o(Vt,"getDebugInfo");function Pt(t){return g().getClassByName(t)}o(Pt,"getClassByName");function Ot(t){return g().getClassDefinition(t)}o(Ot,"getClassDefinition");function St(t){return g().getInterfaceDefinition(t)}o(St,"getInterfaceDefinition");function At(t,e){return g().getTypeAliasDefinition(t,e)}o(At,"getTypeAliasDefinition");function Et(t){return g().getEnumDefinition(t)}o(Et,"getEnumDefinition");function jt(t){return g().getEnumNames(t)}o(jt,"getEnumNames");function kt(t){return g().getEnumValues(t)}o(kt,"getEnumValues");function $t(t,e){return g().getTypeDefinition(t,e)}o($t,"getTypeDefinition");function Nt(t){return g().fillType(t)}o(Nt,"fillType");function Lt(t){return g().getTypeDef(t)}o(Lt,"getTypeDef");function _t(t,e,n=5){return g().assertType(t,e,n)}o(_t,"assertType");function Ft(t){return g().isNullable(t)}o(Ft,"isNullable");function Jt(t,e,n=5){return g().isType(t,e,n)}o(Jt,"isType");function Gt(t,e,n=3){return g().validateInstance(t,e,n)}o(Gt,"validateInstance");function Bt(t,e,n=2){return g().validateArray(t,e,n)}o(Bt,"validateArray");function Ht(t,e,n=2){return g().validateDictionary(t,e,n)}o(Ht,"validateDictionary");function Ut(t,e,n=1){return g().validateValue(t,e,n)}o(Ut,"validateValue");function Kt(t,e,n=3){return g().validateClassInstance(t,e,n)}o(Kt,"validateClassInstance");function Qt(t,e,n){g().safeSetValue(t,e,n)}o(Qt,"safeSetValue");function Wt(t,e,...n){return g().safeCall(t,e,...n)}o(Wt,"safeCall");var T={validationErrorHandler:o(function(t){var e;console.error(t.message),console.error((e=t.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};export{ve as FailureResult,me as JSONError,pe as JSONTransfer,bt as ReflectClass,T as ReflectConfig,u as ReflectContext,ye as ReflectModule,Yi as ReflectValidate,H as TypeDefinition,Fe as TypeParseError,C as ValidationError,_t as assertType,Ct as createReflectValidate,d as extension,p as failedResult,Nt as fillType,Pt as getClassByName,Ot as getClassDefinition,Vt as getDebugInfo,Et as getEnumDefinition,jt as getEnumNames,kt as getEnumValues,Fn as getErrorTraceMessages,St as getInterfaceDefinition,It as getRawMeta,h as getReflectContext,Mt as getReflectModule,At as getTypeAliasDefinition,Lt as getTypeDef,$t as getTypeDefinition,Ft as isNullable,Jt as isType,Oe as preservedTypes,Dt as reflectReady,P as registerSpecialType,Wt as safeCall,Qt as safeSetValue,vt as setReflectModule,y as successResult,Bt as validateArray,Kt as validateClassInstance,Ht as validateDictionary,Gt as validateInstance,Ut as validateValue};
@@ -1,2 +1,2 @@
1
- var I=(e,n,s)=>new Promise((t,a)=>{var r=o=>{try{l(s.next(o))}catch(m){a(m)}},d=o=>{try{l(s.throw(o))}catch(m){a(m)}},l=o=>o.done?t(o.value):Promise.resolve(o.value).then(r,d);l((s=s.apply(e,n)).next())});import Z from"typescript";function x(e){return e||{}}var V=["string","number","boolean","bigint","symbol"];import i from"typescript";import*as K from"fs";import*as $ from"process";import*as P from"path";import{pathToFileURL as Ee}from"url";function U(e){return Buffer.from(e,"utf8").toString("base64")}var Q={OUTPUT_LOG:!1},C=new Map,O=new Map,_=new Map,v=new Map,X=new Map,z=new Set,se={[i.SyntaxKind.BooleanKeyword]:"boolean",[i.SyntaxKind.StringKeyword]:"string",[i.SyntaxKind.BigIntKeyword]:"bigint",[i.SyntaxKind.NumberKeyword]:"number",[i.SyntaxKind.SymbolKeyword]:"symbol",[i.SyntaxKind.VoidKeyword]:"void",[i.SyntaxKind.UndefinedKeyword]:"undefined",[i.SyntaxKind.UnknownKeyword]:"unknown",[i.SyntaxKind.AnyKeyword]:"any",[i.SyntaxKind.ObjectKeyword]:"object"},L="any",fe=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],ce=["Mappable","EnableReflect","ReflectReference"];[...V,...fe,...ce].forEach(we);ce.forEach(e=>v.set(e,{name:e,type:e}));var q,re=!1,F=Reflect;function _e(e){return I(this,null,function*(){let{filePaths:n,exclude:s,sourceFolder:t,distFolder:a}=e;if(t=P.resolve(t||$.cwd()),a=P.resolve(a||$.cwd()),F.__meta!==void 0)return;let r={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};n=be(n);let d=n.map(l=>P.join(t,l));Y(d,s);for(let[l,o]of C)r.classes[l]=o;for(let[l,o]of O)r.interfaces[l]=o;for(let[l,o]of v)r.typeAliases[l]=o;for(let[l,o]of _)r.enums[l]=o;for(let[l,o]of X)r.constTypes[l]=o;F.__meta=U(JSON.stringify(r)),yield Promise.all(n.map(l=>le(l,a)))})}function le(e,n){return I(this,null,function*(){let s=P.resolve(n,e);if(!K.existsSync(s))return;if(K.statSync(s).isDirectory()){let l=K.readdirSync(s);yield Promise.all(l.map(o=>le(P.join(e,o),n)));return}if(!e.endsWith(".js"))return;let a=P.join(n,e),d=yield import(Ee(a).href);F.__classDef={},Object.values(d).forEach(l=>{typeof l=="function"&&F.__classDef&&(F.__classDef[l.name]=l)})})}function Y(e,n){if(e||(e=[$.cwd()]),e=be(e),!re){let s=pe(e,n),t=i.createProgram(s,{});q=t.getTypeChecker(),s=s.map(r=>ae(r)),t.getSourceFiles().filter(r=>s.includes(ae(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{M(`parse file: ${r.fileName}`),ue(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of z.keys())!C.has(r)&&!O.has(r)&&!_.has(r)&&!v.has(r)&&!V.includes(r)&&!fe.includes(r)&&(M(`remove unknown typeName: ${r}`),z.delete(r));Array.from(C.values()).forEach(Me),Array.from(O.values()).forEach(Ke),[C,O,v].forEach(ke),re=!0}return{classDefinitions:C,interfaceDefinitions:O,enumDefinitions:_,typeAliasDefinitions:v,constTypeDefinitions:X}}function pe(e,n){let s=[];return e.forEach(t=>{if(t=P.resolve(t),Ae(t,n)){M(`ignore excluded ${t}`);return}if(!K.existsSync(t)){console.error(`Path ${t} does not exist.`);return}if(K.statSync(t).isFile()){s.push(t);return}K.readdirSync(t).forEach(d=>s.push(...pe([P.join(t,d)],n)))}),s}function ue(e,n,s=!1){i.isClassDeclaration(e)?me(e,n,s):i.isInterfaceDeclaration(e)?de(e,n):i.isEnumDeclaration(e)?ye(e,n,s):i.isTypeAliasDeclaration(e)?ge(e,n,s):i.isConstTypeReference(e)?Te(e):e.forEachChild(t=>ue(t,n,s))}function me(e,n,s=!1){var b,R,k,S,A,y,w,j,T,D,u,h,G,ne,te;let t=c(e.name);if(!t)return;let a=c((k=(R=(b=e.heritageClauses)==null?void 0:b.find(p=>p.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:R.types)==null?void 0:k[0].expression),r=(A=(S=e.heritageClauses)==null?void 0:S.find(p=>p.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:A.types.map(p=>c(p.expression)),d=[],l=[],o;for(let p of e.members)if(i.isPropertyDeclaration(p))d.push({name:c(p.name),isOptional:p.questionToken!==void 0,type:g(p),isPrivate:(y=p.modifiers)==null?void 0:y.some(f=>f.kind===i.SyntaxKind.PrivateKeyword),isStatic:(w=p.modifiers)==null?void 0:w.some(f=>f.kind===i.SyntaxKind.StaticKeyword),isReadonly:(j=p.modifiers)==null?void 0:j.some(f=>f.kind===i.SyntaxKind.ReadonlyKeyword)});else if(i.isConstructorDeclaration(p))o={name:"constructor",isPrivate:(T=p.modifiers)==null?void 0:T.some(f=>f.kind===i.SyntaxKind.PrivateKeyword),args:p.parameters.map(f=>{var E,ie;return(E=f.modifiers)!=null&&E.some(B=>B.kind===i.SyntaxKind.PublicKeyword)&&d.push({name:c(f.name),isOptional:f.questionToken!==void 0,type:g(f),isReadonly:(ie=f.modifiers)==null?void 0:ie.some(B=>B.kind===i.SyntaxKind.ReadonlyKeyword)}),{name:c(f.name),type:g(f),isOptional:f.questionToken!==void 0}}),isConstructor:!0};else if(i.isMethodDeclaration(p))l.push({name:c(p.name),returnType:g(p),isPrivate:(D=p.modifiers)==null?void 0:D.some(f=>f.kind===i.SyntaxKind.PrivateKeyword),isStatic:(u=p.modifiers)==null?void 0:u.some(f=>f.kind===i.SyntaxKind.StaticKeyword),isAsync:(h=p.modifiers)==null?void 0:h.some(f=>f.kind===i.SyntaxKind.AsyncKeyword),args:p.parameters.map(f=>({name:c(f.name),type:g(f),isOptional:f.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(p)){let f=d.find(E=>E.name===c(p.name));f||(f={name:c(p.name),isOptional:p.questionToken===void 0,type:g(p)},d.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((G=p.modifiers)==null?void 0:G.some(E=>E.kind===i.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(p)){let f=d.find(E=>E.name===c(p.name));f||(f={name:c(p.name),isOptional:p.questionToken===void 0,type:g(p)},d.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((ne=p.modifiers)==null?void 0:ne.some(E=>E.kind===i.SyntaxKind.PrivateKeyword))||!1}}let m={name:t,constructorMethod:o,superClassName:a,implementations:r,properties:d,methods:l,genericsParams:(te=e.typeParameters)==null?void 0:te.map(p=>c(p.name)),fromLib:n};if(!s&&C.has(t))throw new Error(`Duplicate defined for class "${t}"`);M(`${s?"Redefine":"Define"} class: ${c(e.name)}`),C.set(t,m)}function de(e,n){var m,b,R,k,S,A;let s=c(e.name);if(!s)return;let t=((b=(m=e.heritageClauses)==null?void 0:m.find(y=>y.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:b.types.map(y=>c(y.expression)))||[],a=[],r=[],d,l;for(let y of e.members)i.isPropertySignature(y)?a.push({name:c(y.name),isOptional:y.questionToken!==void 0,type:g(y),isPrivate:((R=y.modifiers)==null?void 0:R.some(w=>w.kind===i.SyntaxKind.PrivateKeyword))||!1,isReadonly:((k=y.modifiers)==null?void 0:k.some(w=>w.kind===i.SyntaxKind.ReadonlyKeyword))||!1}):i.isMethodSignature(y)?r.push({name:y.name.text,returnType:g(y),isPrivate:((S=y.modifiers)==null?void 0:S.some(w=>w.kind===i.SyntaxKind.PrivateKeyword))||!1,args:y.parameters.map(w=>({name:c(w.name),type:g(w),isOptional:w.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(y)&&(y.parameters[0]&&(d=g(y.parameters[0])),l=g(y));let o=O.get(s);o?(o.implementations=W(o.implementations||[],t),o.methods=W(o.methods||[],r,(y,w)=>y.name===w.name),o.properties=W(o.properties||[],a,(y,w)=>y.name===w.name),l&&(o.index={keyType:d,valueType:l}),M(`Merge interface ${c(e.name)}`)):(o={name:s,implementations:t,methods:r,properties:a,index:l?{keyType:d,valueType:l}:void 0,genericsParams:(A=e.typeParameters)==null?void 0:A.map(y=>c(y.name)),fromLib:n},O.set(s,o),M(`Define interface ${c(e.name)}`))}function ye(e,n,s=!1){let t=c(e.name);if(t){if(!s&&_.has(t))throw new Error(`Duplicate defined for enum: ${t}`);_.set(t,{name:t,members:e.members.map(a=>({name:c(a.name),initializer:c(a.initializer)})),fromLib:n}),M(`Define enum: ${c(e.name)}`)}}function ge(e,n,s=!1){var d;let t=c(e.name);M(`${s?"Redefine":"Define"} typeAlias: ${t}`);let a=g(e),r=(d=e.typeParameters)==null?void 0:d.map(l=>c(l.name));if(!s&&v.has(t))throw new Error(`Duplicate defined for typeAlias: ${t}`);v.set(t,{name:t,type:a,genericParams:r,fromLib:n})}function Te(e){let n=e.parent.parent;i.isVariableDeclaration(n)&&n.initializer&&i.isAsExpression(n.initializer)&&X.set(c(n.name),De(n.initializer.expression))}function De(e){return i.isArrayLiteralExpression(e)?Ne(e):i.isObjectLiteralExpression(e)?Se(e):i.isNumericLiteral(e)?"number":i.isStringLiteral(e)?"string":i.isBigIntLiteral(e)?"bigint":[i.SyntaxKind.TrueKeyword,i.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":L}function Ne(e){let n=[];return e.elements.forEach(s=>{if(i.isStringLiteral(s))return n.push(c(s))}),n.length===0?L:n.length===1?n[0]:{unionMembers:n}}function Se(e){let n=[];return e.properties.map(s=>{i.isPropertyAssignment(s)?n.push({name:c(s.name),type:De(s.initializer)}):M(`unsupported property: ${s.name}`)}),{typeLiteralMembers:n}}function we(e){z.add(e)}function g(e,n=!1){if(e.type&&!n)return N(e.type);if(!q)return console.error("TypeChecker not initialized!"),L;let s=q.getTypeAtLocation(e),t=q.typeToTypeNode(s,void 0,void 0);return t?N("type"in t?t.type:t):L}function N(e){let n={};if(e===void 0)return L;if(i.isTypeReferenceNode(e))if(we(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(s=>N(s))];else return c(e.typeName);else if(i.isFunctionTypeNode(e))n.isFunction=!0;else if(i.isConstructorTypeNode(e))n.isConstructor=!0;else{if(i.isTypeQueryNode(e))return g(e);if(i.isTypeLiteralNode(e)){let s=[];e.members.forEach(t=>{var a,r;i.isPropertySignature(t)?s.push({name:c(t.name),isOptional:t.questionToken!==void 0,type:g(t)}):i.isIndexSignatureDeclaration(t)?n.index={keyType:(a=t.parameters)!=null&&a[0].type?g((r=t.parameters)==null?void 0:r[0]):void 0,valueType:g(t)}:s.push({name:c(t.name)||"",isOptional:t.questionToken!==void 0,type:N()})}),n.typeLiteralMembers=s}else if(i.isArrayTypeNode(e))n.arrayElementType=N(e.elementType);else if(i.isTupleTypeNode(e))n.tupleMembers=e.elements.map(N);else if(i.isOptionalTypeNode(e))Object.assign(n,g(e)),n.isOptionalInTuple=!0;else{if(i.isRestTypeNode(e))return g(e);if(i.isUnionTypeNode(e))n.unionMembers=e.types.map(N);else if(i.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(N);else{if(i.isConditionalTypeNode(e))return g(e);if(i.isInferTypeNode(e))return g(e);if(i.isParenthesizedTypeNode(e))return g(e);if(i.isThisTypeNode(e))return g(e);if(i.isTypeOperatorNode(e)&&e.operator===i.SyntaxKind.KeyOfKeyword)return g(e,!0);if(i.isIndexedAccessTypeNode(e))return g(e,!0);if(i.isMappedTypeNode(e))n.index={keyType:N(e.typeParameter.constraint),valueType:N(e.type)};else if(i.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(se).includes(String(e.kind)))return se[e.kind]||L;if(i.isNamedTupleMember(e))Object.assign(n,g(e));else return g(e,!0)}}}}return n}var W=(e,n,s)=>[...(e==null?void 0:e.filter(t=>!(n!=null&&n.some(a=>(s||(()=>a===t))(a,t)))))||[],...n||[]];function H(e,n){if(e!==void 0&&e!==L)return typeof e=="string"?z.has(e)||n!=null&&n.includes(e)?e:void 0:e}function Me(e){var n,s;(n=e.methods)==null||n.forEach(t=>he(t,e.genericsParams)),(s=e.properties)==null||s.forEach(t=>Re(t,e.genericsParams))}function Ke(e){var n,s;(n=e.methods)==null||n.forEach(t=>he(t,e.genericsParams)),(s=e.properties)==null||s.forEach(t=>Re(t,e.genericsParams))}function Re(e,n){e.type=H(e.type,n)}function he(e,n){var s;(s=e.args)==null||s.forEach(t=>t.type=H(t.type,n)),e.returnType=H(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return i.isQualifiedName(n)?c(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(s=>{let[t,a]=s;a===!1||a===void 0||a===null?delete n[t]:a instanceof Array?a.length===0?delete n[t]:a.forEach(J):J(a)})}function ke(e){for(let n of e.values())J(n)}function Ae(e,n){return n?(n=n instanceof Array?n:[n],n.some(s=>(s instanceof RegExp||(s=new RegExp(s.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(s)))):!1}function ae(e,n=$.cwd()){return oe(e).replace(oe(n)+"/","")}function oe(e){let n=P.sep;return e.split(n).join("/")}function be(e){return e instanceof Array?e:[e]}function M(e){Q.OUTPUT_LOG&&console.log(e)}function xe(e,n){let s=[],t=[],a=[],r=[],d=[],l=i.createSourceFile(n,e,i.ScriptTarget.Latest,!0);function o(m){var b;if(i.isClassDeclaration(m)&&m.name)me(m,!1,!0),s.push(c(m.name));else if(i.isInterfaceDeclaration(m)&&m.name)de(m,!1),t.push(c(m.name));else if(i.isEnumDeclaration(m)&&m.name)ye(m,!1,!0),a.push(c(m.name));else if(i.isTypeAliasDeclaration(m)&&m.name)ge(m,!1,!0),r.push(c(m.name));else if(i.isConstTypeReference(m)){let R=(b=m.parent)==null?void 0:b.parent;i.isVariableDeclaration(R)&&R.name&&d.push(c(R.name)),Te(m)}else m.forEachChild(o)}return o(l),{classNames:s,interfaceNames:t,enumNames:a,typeAliasNames:r,constTypeNames:d}}function Pe(e){let{sourcePaths:n,exclude:s,forEnabledClassOnly:t,outputLog:a}=e;if(a&&(Q.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${s}, forEnabledClassOnly: ${t}`);let{classDefinitions:r,interfaceDefinitions:d,enumDefinitions:l,typeAliasDefinitions:o,constTypeDefinitions:m}=Y(n,s),b=[],R=[];function k(T){let D=[];return(()=>{let u=r.get(T);if(u){u.superClassName&&D.push(u.superClassName),D.push(...u.implementations||[]);return}let h=d.get(T);if(h){D.push(...h.implementations||[]);return}o.get(T)&&D.push(T)})(),D.flatMap(u=>[u,...k(u)])||[]}function S(T,D){return k(T.name).includes(D)}function A(T){if(Z.isClassDeclaration(T)&&T.name!==void 0){let D=T.name.text,u=r.get(D);if(!D||!u||t&&!S(u,"EnableReflect"))return;R.push(`Reflect.registerClass?Reflect.registerClass({${D}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${D}}))`);return}T.forEachChild(A)}function y(){let T={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};return r.forEach((u,h)=>{t&&!S(u,"EnableReflect")||(T.classes[h]=u)}),d.forEach((u,h)=>{t&&!S(u,"EnableReflect")||(T.interfaces[h]=u)}),l.forEach((u,h)=>{T.enums[h]=u}),o.forEach((u,h)=>{T.typeAliases[h]=u}),m.forEach((u,h)=>{T.constTypes[h]=u}),`;Reflect.__meta='${U(JSON.stringify(T))}'`}let w=(T,D)=>{if(D.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!D.startsWith(u))){a&&console.log(`transform id: ${D}`);try{let u=Z.createSourceFile(D,T,Z.ScriptTarget.Latest,!1);return b.length=0,R.length=0,A(u),`${b.join(";")};${T};${R.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${D}:`,u);return}}};function j(T,D){try{xe(T,D)}catch(u){console.error(`[reflect-parser-plugin] Error reparsing ${D}:`,u)}}return{outputAllMetas:y,transform:w,reparseForHMR:j}}var ee=process.cwd().replace(/\\/g,"/")+"/";function He(e){let n=Pe(e),s=typeof e.sourcePaths=="string"?[e.sourcePaths]:e.sourcePaths;return{name:"reflect-parser-plugin",enforce:"pre",transform:(a,r)=>(r=r.replace(ee,""),r===e.entry?`${n.outputAllMetas()}
2
- ${a}`:n.transform(a,r)),handleHotUpdate(l){return I(this,arguments,function*({file:a,server:r,read:d}){let o=a.replace(/\\/g,"/").replace(ee,"");if(!o.endsWith(".ts")||s.every(R=>!o.startsWith(R)))return;let m=yield d();n.reparseForHMR(m,o);let b=r.moduleGraph.getModulesByFile(ee+e.entry);if(b)for(let R of b)r.moduleGraph.invalidateModule(R)})}}}export{Q as DEBUG_CONFIG,Y as parseSource,Pe as reflectLoader,He as reflectParserPlugin,xe as reparseFile,_e as setupReflectTypes,le as updateReflectModules};
1
+ var I=(e,t,s)=>new Promise((i,o)=>{var r=p=>{try{y(s.next(p))}catch(a){o(a)}},d=p=>{try{y(s.throw(p))}catch(a){o(a)}},y=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,d);y((s=s.apply(e,t)).next())});import ne from"typescript";var A="default";function x(e){return e||{}}var J=["string","number","boolean","bigint","symbol"];import n from"typescript";import*as K from"fs";import*as F from"process";import*as M from"path";import{pathToFileURL as Ee}from"url";function G(e){return Buffer.from(e,"utf8").toString("base64")}var Z={OUTPUT_LOG:!1},O=new Map,v=new Map,j=new Map,$=new Map,ee=new Map,V=new Set,re={[n.SyntaxKind.BooleanKeyword]:"boolean",[n.SyntaxKind.StringKeyword]:"string",[n.SyntaxKind.BigIntKeyword]:"bigint",[n.SyntaxKind.NumberKeyword]:"number",[n.SyntaxKind.SymbolKeyword]:"symbol",[n.SyntaxKind.VoidKeyword]:"void",[n.SyntaxKind.UndefinedKeyword]:"undefined",[n.SyntaxKind.UnknownKeyword]:"unknown",[n.SyntaxKind.AnyKeyword]:"any",[n.SyntaxKind.ObjectKeyword]:"object"},L="any",le=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],ce=["Mappable","EnableReflect","ReflectReference"];[...J,...le,...ce].forEach(he);ce.forEach(e=>$.set(e,{name:e,type:e}));var B,ae=!1,C=Reflect;function pe(e){return C.__reflectTypes=C.__reflectTypes||x(),C.__reflectTypes[e]=C.__reflectTypes[e]||{},C.__reflectTypes[e]}function Ue(e){return I(this,null,function*(){let{filePaths:t,exclude:s,sourceFolder:i,distFolder:o}=e,r=e.reflectModule||A,d=pe(r);if(i=M.resolve(i||F.cwd()),o=M.resolve(o||F.cwd()),d.__meta!==void 0)return;let y={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};t=Me(t);let p=t.map(a=>M.join(i,a));te(p,s);for(let[a,g]of O)y.classes[a]=g;for(let[a,g]of v)y.interfaces[a]=g;for(let[a,g]of $)y.typeAliases[a]=g;for(let[a,g]of j)y.enums[a]=g;for(let[a,g]of ee)y.constTypes[a]=g;d.__meta=G(JSON.stringify(y)),r===A&&(C.__meta=d.__meta),yield Promise.all(t.map(a=>ue(a,o,r)))})}function ue(i,o){return I(this,arguments,function*(e,t,s=A){let r=M.resolve(t,e);if(!K.existsSync(r))return;if(K.statSync(r).isDirectory()){let w=K.readdirSync(r);yield Promise.all(w.map(P=>ue(M.join(e,P),t,s)));return}if(!e.endsWith(".js"))return;let y=M.join(t,e),a=yield import(Ee(y).href),g=pe(s);g.__classDef=g.__classDef||{},Object.values(a).forEach(w=>{typeof w=="function"&&(g.__classDef[w.name]=w)}),s===A&&(C.__classDef=g.__classDef)})}function te(e,t){if(e||(e=[F.cwd()]),e=Me(e),!ae){let s=de(e,t),i=n.createProgram(s,{});B=i.getTypeChecker(),s=s.map(r=>oe(r)),i.getSourceFiles().filter(r=>s.includes(oe(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{_(`parse file: ${r.fileName}`),me(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of V.keys())!O.has(r)&&!v.has(r)&&!j.has(r)&&!$.has(r)&&!J.includes(r)&&!le.includes(r)&&(_(`remove unknown typeName: ${r}`),V.delete(r));Array.from(O.values()).forEach(Ke),Array.from(v.values()).forEach(ke),[O,v,$].forEach(Ae),ae=!0}return{classDefinitions:O,interfaceDefinitions:v,enumDefinitions:j,typeAliasDefinitions:$,constTypeDefinitions:ee}}function de(e,t){let s=[];return e.forEach(i=>{if(i=M.resolve(i),Ce(i,t)){_(`ignore excluded ${i}`);return}if(!K.existsSync(i)){console.error(`Path ${i} does not exist.`);return}if(K.statSync(i).isFile()){s.push(i);return}K.readdirSync(i).forEach(d=>s.push(...de([M.join(i,d)],t)))}),s}function me(e,t,s=!1){n.isClassDeclaration(e)?ye(e,t,s):n.isInterfaceDeclaration(e)?ge(e,t):n.isEnumDeclaration(e)?Te(e,t,s):n.isTypeAliasDeclaration(e)?De(e,t,s):n.isConstTypeReference(e)?Re(e):e.forEachChild(i=>me(i,t,s))}function ye(e,t,s=!1){var g,w,P,N,k,m,h,U,q,z,D,R,u,b,W;let i=l(e.name);if(!i)return;let o=l((P=(w=(g=e.heritageClauses)==null?void 0:g.find(c=>c.token===n.SyntaxKind.ExtendsKeyword))==null?void 0:w.types)==null?void 0:P[0].expression),r=(k=(N=e.heritageClauses)==null?void 0:N.find(c=>c.token===n.SyntaxKind.ImplementsKeyword))==null?void 0:k.types.map(c=>l(c.expression)),d=[],y=[],p;for(let c of e.members)if(n.isPropertyDeclaration(c))d.push({name:l(c.name),isOptional:c.questionToken!==void 0,type:T(c),isPrivate:(m=c.modifiers)==null?void 0:m.some(f=>f.kind===n.SyntaxKind.PrivateKeyword),isStatic:(h=c.modifiers)==null?void 0:h.some(f=>f.kind===n.SyntaxKind.StaticKeyword),isReadonly:(U=c.modifiers)==null?void 0:U.some(f=>f.kind===n.SyntaxKind.ReadonlyKeyword)});else if(n.isConstructorDeclaration(c))p={name:"constructor",isPrivate:(q=c.modifiers)==null?void 0:q.some(f=>f.kind===n.SyntaxKind.PrivateKeyword),args:c.parameters.map(f=>{var S,se;return(S=f.modifiers)!=null&&S.some(H=>H.kind===n.SyntaxKind.PublicKeyword)&&d.push({name:l(f.name),isOptional:f.questionToken!==void 0,type:T(f),isReadonly:(se=f.modifiers)==null?void 0:se.some(H=>H.kind===n.SyntaxKind.ReadonlyKeyword)}),{name:l(f.name),type:T(f),isOptional:f.questionToken!==void 0}}),isConstructor:!0};else if(n.isMethodDeclaration(c))y.push({name:l(c.name),returnType:T(c),isPrivate:(z=c.modifiers)==null?void 0:z.some(f=>f.kind===n.SyntaxKind.PrivateKeyword),isStatic:(D=c.modifiers)==null?void 0:D.some(f=>f.kind===n.SyntaxKind.StaticKeyword),isAsync:(R=c.modifiers)==null?void 0:R.some(f=>f.kind===n.SyntaxKind.AsyncKeyword),args:c.parameters.map(f=>({name:l(f.name),type:T(f),isOptional:f.questionToken!==void 0}))});else if(n.isGetAccessorDeclaration(c)){let f=d.find(S=>S.name===l(c.name));f||(f={name:l(c.name),isOptional:c.questionToken===void 0,type:T(c)},d.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((u=c.modifiers)==null?void 0:u.some(S=>S.kind===n.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(n.isSetAccessorDeclaration(c)){let f=d.find(S=>S.name===l(c.name));f||(f={name:l(c.name),isOptional:c.questionToken===void 0,type:T(c)},d.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((b=c.modifiers)==null?void 0:b.some(S=>S.kind===n.SyntaxKind.PrivateKeyword))||!1}}let a={name:i,constructorMethod:p,superClassName:o,implementations:r,properties:d,methods:y,genericsParams:(W=e.typeParameters)==null?void 0:W.map(c=>l(c.name)),fromLib:t};if(!s&&O.has(i))throw new Error(`Duplicate defined for class "${i}"`);_(`${s?"Redefine":"Define"} class: ${l(e.name)}`),O.set(i,a)}function ge(e,t){var a,g,w,P,N,k;let s=l(e.name);if(!s)return;let i=((g=(a=e.heritageClauses)==null?void 0:a.find(m=>m.token===n.SyntaxKind.ExtendsKeyword))==null?void 0:g.types.map(m=>l(m.expression)))||[],o=[],r=[],d,y;for(let m of e.members)n.isPropertySignature(m)?o.push({name:l(m.name),isOptional:m.questionToken!==void 0,type:T(m),isPrivate:((w=m.modifiers)==null?void 0:w.some(h=>h.kind===n.SyntaxKind.PrivateKeyword))||!1,isReadonly:((P=m.modifiers)==null?void 0:P.some(h=>h.kind===n.SyntaxKind.ReadonlyKeyword))||!1}):n.isMethodSignature(m)?r.push({name:m.name.text,returnType:T(m),isPrivate:((N=m.modifiers)==null?void 0:N.some(h=>h.kind===n.SyntaxKind.PrivateKeyword))||!1,args:m.parameters.map(h=>({name:l(h.name),type:T(h),isOptional:h.questionToken!==void 0}))}):n.isIndexSignatureDeclaration(m)&&(m.parameters[0]&&(d=T(m.parameters[0])),y=T(m));let p=v.get(s);p?(p.implementations=Q(p.implementations||[],i),p.methods=Q(p.methods||[],r,(m,h)=>m.name===h.name),p.properties=Q(p.properties||[],o,(m,h)=>m.name===h.name),y&&(p.index={keyType:d,valueType:y}),_(`Merge interface ${l(e.name)}`)):(p={name:s,implementations:i,methods:r,properties:o,index:y?{keyType:d,valueType:y}:void 0,genericsParams:(k=e.typeParameters)==null?void 0:k.map(m=>l(m.name)),fromLib:t},v.set(s,p),_(`Define interface ${l(e.name)}`))}function Te(e,t,s=!1){let i=l(e.name);if(i){if(!s&&j.has(i))throw new Error(`Duplicate defined for enum: ${i}`);j.set(i,{name:i,members:e.members.map(o=>({name:l(o.name),initializer:l(o.initializer)})),fromLib:t}),_(`Define enum: ${l(e.name)}`)}}function De(e,t,s=!1){var d;let i=l(e.name);_(`${s?"Redefine":"Define"} typeAlias: ${i}`);let o=T(e),r=(d=e.typeParameters)==null?void 0:d.map(y=>l(y.name));if(!s&&$.has(i))throw new Error(`Duplicate defined for typeAlias: ${i}`);$.set(i,{name:i,type:o,genericParams:r,fromLib:t})}function Re(e){let t=e.parent.parent;n.isVariableDeclaration(t)&&t.initializer&&n.isAsExpression(t.initializer)&&ee.set(l(t.name),we(t.initializer.expression))}function we(e){return n.isArrayLiteralExpression(e)?Ne(e):n.isObjectLiteralExpression(e)?_e(e):n.isNumericLiteral(e)?"number":n.isStringLiteral(e)?"string":n.isBigIntLiteral(e)?"bigint":[n.SyntaxKind.TrueKeyword,n.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":L}function Ne(e){let t=[];return e.elements.forEach(s=>{if(n.isStringLiteral(s))return t.push(l(s))}),t.length===0?L:t.length===1?t[0]:{unionMembers:t}}function _e(e){let t=[];return e.properties.map(s=>{n.isPropertyAssignment(s)?t.push({name:l(s.name),type:we(s.initializer)}):_(`unsupported property: ${s.name}`)}),{typeLiteralMembers:t}}function he(e){V.add(e)}function T(e,t=!1){if(e.type&&!t)return E(e.type);if(!B)return console.error("TypeChecker not initialized!"),L;let s=B.getTypeAtLocation(e),i=B.typeToTypeNode(s,void 0,void 0);return i?E("type"in i?i.type:i):L}function E(e){let t={};if(e===void 0)return L;if(n.isTypeReferenceNode(e))if(he(l(e.typeName)),e.typeArguments)t.generics=[l(e.typeName),...e.typeArguments.map(s=>E(s))];else return l(e.typeName);else if(n.isFunctionTypeNode(e))t.isFunction=!0;else if(n.isConstructorTypeNode(e))t.isConstructor=!0;else{if(n.isTypeQueryNode(e))return T(e);if(n.isTypeLiteralNode(e)){let s=[];e.members.forEach(i=>{var o,r;n.isPropertySignature(i)?s.push({name:l(i.name),isOptional:i.questionToken!==void 0,type:T(i)}):n.isIndexSignatureDeclaration(i)?t.index={keyType:(o=i.parameters)!=null&&o[0].type?T((r=i.parameters)==null?void 0:r[0]):void 0,valueType:T(i)}:s.push({name:l(i.name)||"",isOptional:i.questionToken!==void 0,type:E()})}),t.typeLiteralMembers=s}else if(n.isArrayTypeNode(e))t.arrayElementType=E(e.elementType);else if(n.isTupleTypeNode(e))t.tupleMembers=e.elements.map(E);else if(n.isOptionalTypeNode(e))Object.assign(t,T(e)),t.isOptionalInTuple=!0;else{if(n.isRestTypeNode(e))return T(e);if(n.isUnionTypeNode(e))t.unionMembers=e.types.map(E);else if(n.isIntersectionTypeNode(e))t.intersectionMembers=e.types.map(E);else{if(n.isConditionalTypeNode(e))return T(e);if(n.isInferTypeNode(e))return T(e);if(n.isParenthesizedTypeNode(e))return T(e);if(n.isThisTypeNode(e))return T(e);if(n.isTypeOperatorNode(e)&&e.operator===n.SyntaxKind.KeyOfKeyword)return T(e,!0);if(n.isIndexedAccessTypeNode(e))return T(e,!0);if(n.isMappedTypeNode(e))t.index={keyType:E(e.typeParameter.constraint),valueType:E(e.type)};else if(n.isLiteralTypeNode(e))t.literalValue=l(e.literal);else{if(Object.keys(re).includes(String(e.kind)))return re[e.kind]||L;if(n.isNamedTupleMember(e))Object.assign(t,T(e));else return T(e,!0)}}}}return t}var Q=(e,t,s)=>[...(e==null?void 0:e.filter(i=>!(t!=null&&t.some(o=>(s||(()=>o===i))(o,i)))))||[],...t||[]];function X(e,t){if(e!==void 0&&e!==L)return typeof e=="string"?V.has(e)||t!=null&&t.includes(e)?e:void 0:e}function Ke(e){var t,s;(t=e.methods)==null||t.forEach(i=>xe(i,e.genericsParams)),(s=e.properties)==null||s.forEach(i=>be(i,e.genericsParams))}function ke(e){var t,s;(t=e.methods)==null||t.forEach(i=>xe(i,e.genericsParams)),(s=e.properties)==null||s.forEach(i=>be(i,e.genericsParams))}function be(e,t){e.type=X(e.type,t)}function xe(e,t){var s;(s=e.args)==null||s.forEach(i=>i.type=X(i.type,t)),e.returnType=X(e.returnType,t)}function l(e){if(!e)return e;if(e.end<0)return e.text;try{let t=e;return n.isQualifiedName(t)?l(t.right):t.getText()}catch(t){return e.text}}function Y(e){if(e==null||!(e instanceof Object))return;let t=e;Object.entries(t).forEach(s=>{let[i,o]=s;o===!1||o===void 0||o===null?delete t[i]:o instanceof Array?o.length===0?delete t[i]:o.forEach(Y):Y(o)})}function Ae(e){for(let t of e.values())Y(t)}function Ce(e,t){return t?(t=t instanceof Array?t:[t],t.some(s=>(s instanceof RegExp||(s=new RegExp(s.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(s)))):!1}function oe(e,t=F.cwd()){return fe(e).replace(fe(t)+"/","")}function fe(e){let t=M.sep;return e.split(t).join("/")}function Me(e){return e instanceof Array?e:[e]}function _(e){Z.OUTPUT_LOG&&console.log(e)}function Pe(e,t){let s=[],i=[],o=[],r=[],d=[],y=n.createSourceFile(t,e,n.ScriptTarget.Latest,!0);function p(a){var g;if(n.isClassDeclaration(a)&&a.name)ye(a,!1,!0),s.push(l(a.name));else if(n.isInterfaceDeclaration(a)&&a.name)ge(a,!1),i.push(l(a.name));else if(n.isEnumDeclaration(a)&&a.name)Te(a,!1,!0),o.push(l(a.name));else if(n.isTypeAliasDeclaration(a)&&a.name)De(a,!1,!0),r.push(l(a.name));else if(n.isConstTypeReference(a)){let w=(g=a.parent)==null?void 0:g.parent;n.isVariableDeclaration(w)&&w.name&&d.push(l(w.name)),Re(a)}else a.forEachChild(p)}return p(y),{classNames:s,interfaceNames:i,enumNames:o,typeAliasNames:r,constTypeNames:d}}function Se(e){let{sourcePaths:t,exclude:s,forEnabledClassOnly:i,outputLog:o}=e,r=e.reflectModule||A,d=JSON.stringify(r);if(o&&(Z.OUTPUT_LOG=!0),!t)throw new Error("need provide source paths for reflect loader");o&&console.log(`sourcePaths: ${t}, exclude: ${s}, forEnabledClassOnly: ${i}, reflectModule: ${r}`);let{classDefinitions:y,interfaceDefinitions:p,enumDefinitions:a,typeAliasDefinitions:g,constTypeDefinitions:w}=te(t,s),P=[],N=[];function k(D){let R=[];return(()=>{let u=y.get(D);if(u){u.superClassName&&R.push(u.superClassName),R.push(...u.implementations||[]);return}let b=p.get(D);if(b){R.push(...b.implementations||[]);return}g.get(D)&&R.push(D)})(),R.flatMap(u=>[u,...k(u)])||[]}function m(D,R){return k(D.name).includes(R)}function h(D){if(ne.isClassDeclaration(D)&&D.name!==void 0){let R=D.name.text,u=y.get(R);if(!R||!u||i&&!m(u,"EnableReflect"))return;N.push(`(()=>{const __reflectModule=(Reflect.__reflectTypes=Reflect.__reflectTypes||{})[${d}]=(Reflect.__reflectTypes[${d}]||{});__reflectModule.registerClass?__reflectModule.registerClass({${R}}):(__reflectModule.__classDef=Object.assign(__reflectModule.__classDef||{},{${R}}))})()`);return}D.forEachChild(h)}function U(){let D={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};y.forEach((u,b)=>{i&&!m(u,"EnableReflect")||(D.classes[b]=u)}),p.forEach((u,b)=>{i&&!m(u,"EnableReflect")||(D.interfaces[b]=u)}),a.forEach((u,b)=>{D.enums[b]=u}),g.forEach((u,b)=>{D.typeAliases[b]=u}),w.forEach((u,b)=>{D.constTypes[b]=u});let R=G(JSON.stringify(D));return`;(()=>{const __reflectModule=(Reflect.__reflectTypes=Reflect.__reflectTypes||{})[${d}]=(Reflect.__reflectTypes[${d}]||{});__reflectModule.__meta='${R}'})()`}let q=(D,R)=>{if(R.endsWith(".ts")&&!(typeof t=="string"?[t]:t).every(u=>!R.startsWith(u))){o&&console.log(`transform id: ${R}`);try{let u=ne.createSourceFile(R,D,ne.ScriptTarget.Latest,!1);return P.length=0,N.length=0,h(u),`${P.join(";")};${D};${N.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${R}:`,u);return}}};function z(D,R){try{Pe(D,R)}catch(u){console.error(`[reflect-parser-plugin] Error reparsing ${R}:`,u)}}return{outputAllMetas:U,transform:q,reparseForHMR:z}}var ie=process.cwd().replace(/\\/g,"/")+"/";function Qe(e){let t=Se(e),s=typeof e.sourcePaths=="string"?[e.sourcePaths]:e.sourcePaths;return{name:"reflect-parser-plugin",enforce:"pre",transform:(o,r)=>(r=r.replace(ie,""),r===e.entry?`${t.outputAllMetas()}
2
+ ${o}`:t.transform(o,r)),handleHotUpdate(y){return I(this,arguments,function*({file:o,server:r,read:d}){let p=o.replace(/\\/g,"/").replace(ie,"");if(!p.endsWith(".ts")||s.every(w=>!p.startsWith(w)))return;let a=yield d();t.reparseForHMR(a,p);let g=r.moduleGraph.getModulesByFile(ie+e.entry);if(g)for(let w of g)r.moduleGraph.invalidateModule(w)})}}}export{Z as DEBUG_CONFIG,te as parseSource,Se as reflectLoader,Qe as reflectParserPlugin,Pe as reparseFile,Ue as setupReflectTypes,ue as updateReflectModules};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-ref-kit",
3
- "version": "1.1.26",
3
+ "version": "1.2.0",
4
4
  "description": "Type reflection and validation library for TypeScript",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -3,6 +3,7 @@ export interface ReflectLoaderOptions {
3
3
  exclude?: string | RegExp | (string | RegExp)[];
4
4
  forEnabledClassOnly?: boolean;
5
5
  outputLog?: boolean;
6
+ reflectModule?: string;
6
7
  }
7
8
  export interface ReflectLoader {
8
9
  outputAllMetas: () => string;
@@ -8,8 +8,9 @@ export declare function setupReflectTypes(cfg: {
8
8
  exclude?: FilePathRule;
9
9
  sourceFolder?: string;
10
10
  distFolder?: string;
11
+ reflectModule?: string;
11
12
  }): Promise<void>;
12
- export declare function updateReflectModules(filePath: string, distFolder: string): Promise<void>;
13
+ export declare function updateReflectModules(filePath: string, distFolder: string, reflectModuleName?: string): Promise<void>;
13
14
  export declare function parseSource(filePaths?: string | string[], exclude?: FilePathRule): {
14
15
  classDefinitions: Map<string, RawClassDefinition>;
15
16
  interfaceDefinitions: Map<string, RawInterfaceDefinition>;