ts-ref-kit 1.1.27 → 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 U=Object.defineProperty,Dn=Object.defineProperties,bn=Object.getOwnPropertyDescriptor,hn=Object.getOwnPropertyDescriptors,Mn=Object.getOwnPropertyNames,ze=Object.getOwnPropertySymbols;var Xe=Object.prototype.hasOwnProperty,wn=Object.prototype.propertyIsEnumerable;var qe=(n,e,t)=>e in n?U(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,E=(n,e)=>{for(var t in e||(e={}))Xe.call(e,t)&&qe(n,t,e[t]);if(ze)for(var t of ze(e))wn.call(e,t)&&qe(n,t,e[t]);return n},ee=(n,e)=>Dn(n,hn(e)),o=(n,e)=>U(n,"name",{value:e,configurable:!0});var Rn=(n,e)=>{for(var t in e)U(n,t,{get:e[t],enumerable:!0})},xn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Mn(e))!Xe.call(n,r)&&r!==t&&U(n,r,{get:()=>e[r],enumerable:!(i=bn(e,r))||i.enumerable});return n};var Cn=n=>xn(U({},"__esModule",{value:!0}),n);var Qn={};Rn(Qn,{FailureResult:()=>ue,JSONError:()=>Y,JSONTransfer:()=>Ke,ReflectConfig:()=>y,ReflectValidate:()=>Gn,TypeDefinition:()=>B,TypeParseError:()=>he,ValidationError:()=>M,assertType:()=>jn,failedResult:()=>l,getClassByName:()=>tn,getClassDefinition:()=>T,getDebugInfo:()=>Kn,getEnumDefinition:()=>G,getEnumNames:()=>an,getEnumValues:()=>fn,getErrorTraceMessages:()=>On,getInterfaceDefinition:()=>_,getTypeAliasDefinition:()=>be,getTypeDef:()=>C,isNullable:()=>_n,isType:()=>yn,reflectReady:()=>en,registerSpecialType:()=>O,safeCall:()=>Un,safeSetValue:()=>on,setReflectModule:()=>nn,successResult:()=>u,validateArray:()=>Fn,validateDictionary:()=>Jn,validateInstance:()=>He,validateValue:()=>g});module.exports=Cn(Qn);var k="default";function Re(n){return n||{}}o(Re,"Dictionary");var xe=["string","number","boolean","bigint","symbol"],Ye={string:String,number:Number,boolean:Boolean,object:Object};var x=Reflect,R=k,K=Re(),Ze,en=new Promise(n=>{Ze=n});function nn(n){R=n||k}o(nn,"setReflectModule");function Pn(){return x.__reflectTypes=x.__reflectTypes||Re(),x.__reflectTypes[R]=x.__reflectTypes[R]||{},x.__reflectTypes[R]}o(Pn,"getReflectModule");function P(){var r;if(K[R])return K[R];let n=Pn(),e=(r=n.__meta)!=null?r:R===k?x.__meta:void 0;if(e===void 0){y.validationErrorHandler(new M("No reflect meta found, reflect is disabled."));return}try{K[R]=JSON.parse(In(e))}catch(s){console.error(s),y.validationErrorHandler(new M("Illegal reflect meta found, reflect is disabled"));return}delete n.__meta,R===k&&delete x.__meta;let t=K[R],i=n.__classDef||{};return R===k&&x.__classDef&&x.__classDef!==i&&Object.assign(i,x.__classDef),t.classDef=i,delete n.__classDef,R===k&&delete x.__classDef,Reflect.defineProperty(n,"registerClass",{value:o(s=>Object.assign(t.classDef,s),"value")}),R===k&&!x.registerClass&&Reflect.defineProperty(x,"registerClass",{value:n.registerClass}),Ze(),K[R]}o(P,"getRawMeta");function In(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(In,"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 te=class te{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 te(e)}};o(te,"PropertyDefinition");var A=te,ie=class ie extends A{static create(e,t){let i=$(ie,e);return i.genericContext=t,i}get type(){return d({rawType:this.rawType,genericContext:this.genericContext})}};o(ie,"GenericProperty");var ne=ie;function $(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o($,"createInstance");function re(n,e){n.properties=e.properties.map(t=>ne.create(t,n.genericContext)),n.methods=e.methods.map(t=>Q.create(t,n.genericContext)),n instanceof F&&e instanceof N&&e.constructorMethod!==void 0&&(n.constructorMethod=Q.create(e.constructorMethod,n.genericContext))}o(re,"buildPropertiesAndMethods");function Ce(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(Ce,"toDictionary");function oe(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(oe,"mapNotNull");function Pe(n,e,t){n!==void 0&&(n[e]=t)}o(Pe,"setValue");function W(n,e){if(n!==void 0)return n[e]}o(W,"getValue");function j(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(j,"trimQuotes");var Ie=class Ie{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(Ie,"MethodDefinition");var se=Ie;function z(n){return new se(n)}o(z,"fillMethod");var ae=class ae extends se{static create(e,t){let i=$(ae,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(ae,"GenericMethod");var Q=ae;var q=class q{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(z))||[],this.properties=((i=e.properties)==null?void 0:i.map(A.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=oe(this._implementationNames,e=>{var t;return _(e)||((t=T(e))==null?void 0:t.type)||v(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof q?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{interfaceName:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof q?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{interfaceName:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...t]}:{interfaceName:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(q,"InterfaceDefinition");var J=q,ce=class ce extends J{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=$(ce,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),re(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(ce,"GenericInterface");var fe=ce;function _(n){var e,t;if(!D.interfaceMap.has(n)){let i=(t=(e=P())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;D.interfaceMap.set(n,new J(i))}return D.interfaceMap.get(n)}o(_,"getInterfaceDefinition");var Oe=class Oe{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?z(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(z))||[],this.properties=((i=e.properties)==null?void 0:i.map(A.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,E({},t.allMethods))}return Object.assign(e,E({},Ce(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},Ce(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:oe(this._implementationNames,e=>_(e)||v(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof J?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(t=(e=this.superClass)==null?void 0:e.allImplementations)==null||t.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(t=>t.name===e)}get type(){var t,i;let e={};return(i=(t=this.superClass)==null?void 0:t.type.typeLiteralMembers)==null||i.forEach(r=>e[r.name]=r),this.properties.forEach(r=>e[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(e),fromLib:this.fromLib}}isSubClassOf(e){var t;return this.name===e||(t=this.superClass)!=null&&t.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let t=T(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(Oe,"ClassDefinition");var N=Oe,le=class le extends N{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=$(le,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),re(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(le,"GenericClass");var F=le;function tn(n){var e;return((e=T(n))==null?void 0:e.jsClass)||Ye[n]}o(tn,"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(w=>w.jsClass===n);if(c)return c;let m=(t=Object.entries(((e=P())==null?void 0:e.classDef)||{}).find(([w,I])=>I===n))==null?void 0:t[0];return m?T(m):void 0;case"string":let b=n;if(!D.classMap.has(b)){let w=(r=(i=P())==null?void 0:i.classes)==null?void 0:r[b];if(!w)return;let I=(a=(s=P())==null?void 0:s.classDef)==null?void 0:a[b];D.classMap.set(b,new N(ee(E({},w),{jsClass:I})))}return D.classMap.get(b)}}o(T,"getClassDefinition");var $e=class $e{constructor(){this.success=!0}};o($e,"SuccessResult");var Ae=$e,ve=class ve{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(ve,"FailureResult");var ue=ve,u=new Ae,l=o((n,e,t)=>new ue(n,e,t),"failedResult");function On(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
- -> `)}o(On,"getErrorTraceMessages");var Le=class Le extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Le,"ValidationError");var M=Le;var Se=[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 sn(e):return u;case De(e):return n instanceof Object?Ee(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case pe(e):return An(n,e,t);case ge(e):return vn(n,e,t);case de(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 Te(e):for(let s of e.intersectionMembers||[]){let a=g(n,s,t);if(!a.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:a,value:n,type:e})}return u;case Ve(e):return $n(n,e,t);case me(e):switch(typeof n){case"string":return n===j(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 ye(e):return Ln(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case ke(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return Sn(n,e,t)}}o(g,"validateValue");function An(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(An,"validateArrayValue");function $n(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($n,"validateIndexedValue");function vn(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(vn,"validateTupleValue");function Ln(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=W(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(Ln,"validateProperties");function Sn(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 Se)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&&!rn(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,v(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(Sn,"validateSimpleValue");function Ee(n,e,t=3){if(e.classDefinition&&!rn(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=E({},e);return delete i.classDefinition,g(n,i,t)}o(Ee,"validateClassInstance");function rn(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(rn,"valueInstanceOf");function p(n){var e,t,i;return typeof n=="string"?n:De(n)?n.classDefinition.name:n.interfaceName?n.interfaceName:n.typeAliasName?n.typeAliasName:pe(n)?p(n.arrayElementType)+"[]":n.isConstructor?"Class":n.isFunction?"Function":ye(n)?"Object":ge(n)?`(${n.tupleMembers.map(p).join(",")})`:de(n)?((e=n.unionMembers)==null?void 0:e.map(p).join(" | "))||"unknown":Te(n)?((t=n.intersectionMembers)==null?void 0:t.map(p).join(" & "))||"unknown":me(n)?n.literalValue:Ve(n)?`{ [${(i=n.index.keyType)!=null?i:"string"}]: ${p(n.index.valueType)} }`:n.name||"unknown"}o(p,"getTypeDisplayName");function on(n,e,t){let i=T(n),r=y.validationErrorHandler;if(!i){Pe(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=g(t,a);f.success||r(new M(f.errorMessage)),Pe(n,e,t)}o(on,"safeSetValue");var _e=class _e{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(_e,"EnumDefinition");var je=_e;function G(n){var e,t;if(!D.enumMap.has(n)){let i=(t=(e=P())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;D.enumMap.set(n,new je(i))}return D.enumMap.get(n)}o(G,"getEnumDefinition");function an(n){var e;return((e=G(n))==null?void 0:e.names)||[]}o(an,"getEnumNames");function fn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=G(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(fn,"getEnumValues");var Ne=new Map;function O(n){Ne.set(n.name,n)}o(O,"registerSpecialType");function cn(n){return Ne.has(n)}o(cn,"isSpecialType");function Fe(n,...e){let t=Ne.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(Fe,"getSpecialTypeAlias");O({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?X(e,t=>t.isOptional=!0):void 0}});O({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:X(e,t=>t.isOptional=!1)}});O({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return X(e,t=>t.isReadonly=!0)}});O({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:h,valueType:t!=null?t:h}}}});O({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return ln(e,t)}});function ln(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>j(s.literalValue)))!=null?r:[j(e.literalValue)];if(n.typeLiteralMembers)return pn(n,s=>t.includes(s.name))}o(ln,"getPickType");O({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return un(e,t)}});function un(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>j(s.literalValue)))!=null?r:[j(e.literalValue)];if(n.typeLiteralMembers)return pn(n,s=>!t.includes(s.name))}o(un,"getOmitType");O({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return ln(e,i)}}});O({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return un(e,i)}}});O({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return ee(E({},e),{reflectReference:t})}});function X(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>mn(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>X(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>X(t,e)).filter(t=>t!==void 0)}:void 0}o(X,"getMappedType");function pn(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?mn(t):void 0).filter(t=>!!t)}}o(pn,"getFilterKeyType");function mn(n,e){let t;return n instanceof A?t=new A({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(mn,"copyPropertyDefinition");function be(n,e){var r,s,a;if(cn(n))return e?Fe(n,...e):Fe(n);if(!D.typeAliasMap.has(n)){let f=(s=(r=P())==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(be,"getTypeAliasDefinition");var h={name:"any"},En={name:"null"},kn={name:"undefined"};function sn(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(sn,"isIgnoredType");function ke(n){return!!(n.name&&xe.includes(n.name))}o(ke,"isPrimitiveType");function pe(n){return!!n.arrayElementType}o(pe,"isArrayType");function me(n){return!!n.literalValue}o(me,"isLiteralType");function ye(n){return!!n.typeLiteralMembers}o(ye,"isTypeLiteralType");function de(n){return!!n.unionMembers}o(de,"isUnionType");function Te(n){return!!n.intersectionMembers}o(Te,"isIntersectionType");function ge(n){return!!n.tupleMembers}o(ge,"isTupleType");function De(n){return!!n.classDefinition}o(De,"isClassDefinition");function Vn(n){return!!n.generics}o(Vn,"hasGenerics");function Ve(n){return!!n.index}o(Ve,"isIndexType");function v(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return h;if(n==="null")return En;if(n==="undefined")return kn;if(n==="Function")return{isFunction:!0};let t=T(n);if(t)return e?F.create(t,e).type:t.type;if(xe.includes(n))return{name:n};if(Se.map(a=>a.name).includes(n))return{name:n,generics:e};let i=_(n);if(i)return i.fromLib?{name:n,generics:e}:e?fe.create(i,e).type:i.type;let r=G(n);if(r)return r.type;let s=be(n,e);return s?s.type:(y.debug&&console.warn(`${n} not registered...`),h)}o(v,"getTypeDefinition");var Je=new Map;function d(n){let{rawType:e,genericContext:t,genericArgs:i}=n,r=Ge(e);if(e===void 0)return h;let s=Je.get(r);if(s)return s;let a={};if(Je.set(r,a),typeof e=="string")a=(t==null?void 0:t[e])||v(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),Je.delete(r),a}o(d,"fillType");function Ge(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Ge).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Ge(n[t])).join(",")+"}"}o(Ge,"stableStringify");var B={isPrimitiveType:ke,isArrayType:pe,isLiteralType:me,isTypeLiteralType:ye,isUnionType:de,isIntersectionType:Te,isTupleType:ge,isClassDefinition:De,hasGenerics:Vn};function C(n){if(typeof n=="string"){let e=Nn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?v(n):C(e)}return"array"in n?{arrayElementType:C(n.array)}:"union"in n?{unionMembers:n.union.map(C)}:"intersection"in n?{intersectionMembers:n.intersection.map(C)}:"tuple"in n?{tupleMembers:n.tuple.map(C)}:"generic"in n?v(n.name,n.generic.map(C)):n}o(C,"getTypeDef");function jn(n,e,t=5){let i=g(n,C(e),t);return i.success||y.validationErrorHandler(new M(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(jn,"assertType");function _n(n){return yn(null,n)}o(_n,"isNullable");function yn(n,e,t=5){return g(n,C(e),t).success}o(yn,"isType");function Nn(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 I=0;for(;I<c.length;){let L=c.indexOf(m,I);if(L===-1)break;I=L+1;let V=c.indexOf(b,I);if(V===-1)throw new he("Illegal type string");let Z=c.substring(L+1,V),H=r(Z);w?c=`${c.substring(0,L+1)}${H}${c.substring(V)}`:c=`${c.substring(0,L)}${H}${c.substring(V+1)}`}return c}o(a,"replaceBracket");function f(c){let m=c.trim(),b=o(S=>S.trim(),"trim"),w=o(S=>S.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let I=s(m);if(I)return f(I);let L=m.split("|").map(b).filter(w);if(L.length>1)return{union:L.map(f)};let V=m.split("&").map(b).filter(w);if(V.length>1)return{intersection:V.map(f)};let Z=m.match(/^\[(.*)]$/);if(Z)return{tuple:Z[1].split(",").map(b).filter(w).map(f)};let H=m.match(/^(.+)\[]$/);if(H)return{array:f(H[1])};let Me=m.match(/^([^<]+)<(.+)>$/);if(Me){let S=Me[1].trim(),we=f(Me[2]);if(typeof we=="string"){let gn=we.split(",").map(b).filter(w).map(f);return{name:S,generic:gn}}else return{name:S,generic:[we]}}return m}return o(f,"parseTypeRecursive"),f(n)}o(Nn,"parseType");var Be=class Be extends Error{};o(Be,"TypeParseError");var he=Be;function He(n,e,t=3){return y.validation?(e=e||n.constructor.name,Ee(n,C(e),t)):u}o(He,"validateInstance");function Fn(n,e,t=2){if(!y.validation)return u;for(let i=0;i<n.length;i++){let r=He(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(Fn,"validateArray");function Jn(n,e,t=2){if(!y.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],f=He(a,e,t);if(!f.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:f,value:n,type:e})}return u}o(Jn,"validateDictionary");var dn=Symbol("VALIDATE_WRAPPER"),Gn=o((n,e,t)=>Bn(n,e,t),"ReflectValidate");function Bn(n,e,t){if(!y.validation)return;let i=t.value;if(typeof i!="function"||W(i,dn))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=>Tn(n,r(),c),"validateArgs"),a=o(c=>Hn(n,r(),c),"validateReturn"),f=o(function(...c){s(c);let m=i.call(this,...c);return a(m)},"newFunc");f[dn]=i,t.value=f}o(Bn,"wrapValidateMethod");function Tn(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 ${Ue(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 M(`Illegal arguments for ${Ue(n.constructor.name,e)}: ${r.name}: ${r.name} ${f.errorMessage}`,f)))})}o(Tn,"validateMethodParams");function Hn(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 M(`result for ${Ue(n.constructor.name,e)} doesn't match type ${f.name}:
4
- ${c.errorStackFlow}`,c))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||h),t instanceof Promise?t.then(a=>i(a,r||h)):i(t,r||h)}o(Hn,"validateMethodReturnValue");function Ue(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Ue,"getMethodDescription");function Un(n,e,...t){let i=T(n);if(!i)return;let r=i.allMethods[e];if(r)return Tn(n,r,t),W(n,e).apply(n,t)}o(Un,"safeCall");var Qe=class Qe{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=C(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return g(s,i).success||this.exceptionHandler(new Y(`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 B.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):B.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return B.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new Y(`class ${t.name} not reflected`)),e;let i=$(t.jsClass);return Object.assign(i,e),i}};o(Qe,"JSONTransfer");var Ke=Qe,We=class We extends Error{};o(We,"JSONError");var Y=We;var y={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};function Kn(){if(y.debug)return;let n=P();if(n!==void 0)return{raw:n,instances:D,config:y}}o(Kn,"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,setReflectModule,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 G=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var ve=(e,n)=>{for(var t in n)G(e,t,{get:n[t],enumerable:!0})},le=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Ce(n))!_e.call(e,r)&&r!==t&&G(e,r,{get:()=>n[r],enumerable:!(i=Ae(n,r))||i.enumerable});return e};var $=(e,n,t)=>(t=e!=null?ke(Oe(e)):{},le(n||!e||!e.__esModule?G(t,"default",{value:e,enumerable:!0}):t,e)),$e=e=>le(G({},"__esModule",{value:!0}),e);var L=(e,n,t)=>new Promise((i,r)=>{var a=o=>{try{c(t.next(o))}catch(m){r(m)}},d=o=>{try{c(t.throw(o))}catch(m){r(m)}},c=o=>o.done?i(o.value):Promise.resolve(o.value).then(a,d);c((t=t.apply(e,n)).next())});var Be={};ve(Be,{DEBUG_CONFIG:()=>H,parseSource:()=>J,reflectLoader:()=>ae,reflectParserPlugin:()=>Ge,reparseFile:()=>re,setupReflectTypes:()=>Le,updateReflectModules:()=>se});module.exports=$e(Be);var Q=$(require("typescript"),1);var ce="default";function x(e){return e||{}}var Z=["string","number","boolean","bigint","symbol"];var s=$(require("typescript"),1),K=$(require("fs"),1),F=$(require("process"),1),M=$(require("path"),1),ye=require("url");function B(e){return Buffer.from(e,"utf8").toString("base64")}var H={OUTPUT_LOG:!1},C=new Map,O=new Map,j=new Map,_=new Map,ie=new Map,W=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"},v="any",ge=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],Te=["Mappable","EnableReflect","ReflectReference"];[...Z,...ge,...Te].forEach(Ee);Te.forEach(e=>_.set(e,{name:e,type:e}));var V,ue=!1,I=Reflect;function Le(e){return L(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:i,distFolder:r}=e;if(i=M.resolve(i||F.cwd()),r=M.resolve(r||F.cwd()),I.__meta!==void 0)return;let a={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};n=Ke(n);let d=n.map(c=>M.join(i,c));J(d,t);for(let[c,o]of C)a.classes[c]=o;for(let[c,o]of O)a.interfaces[c]=o;for(let[c,o]of _)a.typeAliases[c]=o;for(let[c,o]of j)a.enums[c]=o;for(let[c,o]of ie)a.constTypes[c]=o;I.__meta=B(JSON.stringify(a)),yield Promise.all(n.map(c=>se(c,r)))})}function se(e,n){return L(this,null,function*(){let t=M.resolve(n,e);if(!K.existsSync(t))return;if(K.statSync(t).isDirectory()){let c=K.readdirSync(t);yield Promise.all(c.map(o=>se(M.join(e,o),n)));return}if(!e.endsWith(".js"))return;let r=M.join(n,e),d=yield import((0,ye.pathToFileURL)(r).href);I.__classDef={},Object.values(d).forEach(c=>{typeof c=="function"&&I.__classDef&&(I.__classDef[c.name]=c)})})}function J(e,n){if(e||(e=[F.cwd()]),e=Ke(e),!ue){let t=De(e,n),i=s.default.createProgram(t,{});V=i.getTypeChecker(),t=t.map(a=>me(a)),i.getSourceFiles().filter(a=>t.includes(me(a.fileName))||a.fileName.endsWith("/lib.es5.d.ts")).forEach(a=>{S(`parse file: ${a.fileName}`),we(a,a.fileName.endsWith("/lib.es5.d.ts"))});for(let a of W.keys())!C.has(a)&&!O.has(a)&&!j.has(a)&&!_.has(a)&&!Z.includes(a)&&!ge.includes(a)&&(S(`remove unknown typeName: ${a}`),W.delete(a));Array.from(C.values()).forEach(je),Array.from(O.values()).forEach(Ue),[C,O,_].forEach(qe),ue=!0}return{classDefinitions:C,interfaceDefinitions:O,enumDefinitions:j,typeAliasDefinitions:_,constTypeDefinitions:ie}}function De(e,n){let t=[];return e.forEach(i=>{if(i=M.resolve(i),ze(i,n)){S(`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(...De([M.join(i,d)],n)))}),t}function we(e,n,t=!1){s.default.isClassDeclaration(e)?Re(e,n,t):s.default.isInterfaceDeclaration(e)?he(e,n):s.default.isEnumDeclaration(e)?be(e,n,t):s.default.isTypeAliasDeclaration(e)?xe(e,n,t):s.default.isConstTypeReference(e)?Me(e):e.forEachChild(i=>we(i,n,t))}function Re(e,n,t=!1){var b,R,k,N,A,y,w,U,q,z,T,D,u,h,X;let i=l(e.name);if(!i)return;let r=l((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),a=(A=(N=e.heritageClauses)==null?void 0:N.find(p=>p.token===s.default.SyntaxKind.ImplementsKeyword))==null?void 0:A.types.map(p=>l(p.expression)),d=[],c=[],o;for(let p of e.members)if(s.default.isPropertyDeclaration(p))d.push({name:l(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:(q=p.modifiers)==null?void 0:q.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),args:p.parameters.map(f=>{var P,fe;return(P=f.modifiers)!=null&&P.some(Y=>Y.kind===s.default.SyntaxKind.PublicKeyword)&&d.push({name:l(f.name),isOptional:f.questionToken!==void 0,type:g(f),isReadonly:(fe=f.modifiers)==null?void 0:fe.some(Y=>Y.kind===s.default.SyntaxKind.ReadonlyKeyword)}),{name:l(f.name),type:g(f),isOptional:f.questionToken!==void 0}}),isConstructor:!0};else if(s.default.isMethodDeclaration(p))c.push({name:l(p.name),returnType:g(p),isPrivate:(z=p.modifiers)==null?void 0:z.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(T=p.modifiers)==null?void 0:T.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isAsync:(D=p.modifiers)==null?void 0:D.some(f=>f.kind===s.default.SyntaxKind.AsyncKeyword),args:p.parameters.map(f=>({name:l(f.name),type:g(f),isOptional:f.questionToken!==void 0}))});else if(s.default.isGetAccessorDeclaration(p)){let f=d.find(P=>P.name===l(p.name));f||(f={name:l(p.name),isOptional:p.questionToken===void 0,type:g(p)},d.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((u=p.modifiers)==null?void 0:u.some(P=>P.kind===s.default.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(s.default.isSetAccessorDeclaration(p)){let f=d.find(P=>P.name===l(p.name));f||(f={name:l(p.name),isOptional:p.questionToken===void 0,type:g(p)},d.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((h=p.modifiers)==null?void 0:h.some(P=>P.kind===s.default.SyntaxKind.PrivateKeyword))||!1}}let m={name:i,constructorMethod:o,superClassName:r,implementations:a,properties:d,methods:c,genericsParams:(X=e.typeParameters)==null?void 0:X.map(p=>l(p.name)),fromLib:n};if(!t&&C.has(i))throw new Error(`Duplicate defined for class "${i}"`);S(`${t?"Redefine":"Define"} class: ${l(e.name)}`),C.set(i,m)}function he(e,n){var m,b,R,k,N,A;let t=l(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=>l(y.expression)))||[],r=[],a=[],d,c;for(let y of e.members)s.default.isPropertySignature(y)?r.push({name:l(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)?a.push({name:y.name.text,returnType:g(y),isPrivate:((N=y.modifiers)==null?void 0:N.some(w=>w.kind===s.default.SyntaxKind.PrivateKeyword))||!1,args:y.parameters.map(w=>({name:l(w.name),type:g(w),isOptional:w.questionToken!==void 0}))}):s.default.isIndexSignatureDeclaration(y)&&(y.parameters[0]&&(d=g(y.parameters[0])),c=g(y));let o=O.get(t);o?(o.implementations=ee(o.implementations||[],i),o.methods=ee(o.methods||[],a,(y,w)=>y.name===w.name),o.properties=ee(o.properties||[],r,(y,w)=>y.name===w.name),c&&(o.index={keyType:d,valueType:c}),S(`Merge interface ${l(e.name)}`)):(o={name:t,implementations:i,methods:a,properties:r,index:c?{keyType:d,valueType:c}:void 0,genericsParams:(A=e.typeParameters)==null?void 0:A.map(y=>l(y.name)),fromLib:n},O.set(t,o),S(`Define interface ${l(e.name)}`))}function be(e,n,t=!1){let i=l(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(r=>({name:l(r.name),initializer:l(r.initializer)})),fromLib:n}),S(`Define enum: ${l(e.name)}`)}}function xe(e,n,t=!1){var d;let i=l(e.name);S(`${t?"Redefine":"Define"} typeAlias: ${i}`);let r=g(e),a=(d=e.typeParameters)==null?void 0:d.map(c=>l(c.name));if(!t&&_.has(i))throw new Error(`Duplicate defined for typeAlias: ${i}`);_.set(i,{name:i,type:r,genericParams:a,fromLib:n})}function Me(e){let n=e.parent.parent;s.default.isVariableDeclaration(n)&&n.initializer&&s.default.isAsExpression(n.initializer)&&ie.set(l(n.name),Pe(n.initializer.expression))}function Pe(e){return s.default.isArrayLiteralExpression(e)?Ie(e):s.default.isObjectLiteralExpression(e)?Fe(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":v}function Ie(e){let n=[];return e.elements.forEach(t=>{if(s.default.isStringLiteral(t))return n.push(l(t))}),n.length===0?v:n.length===1?n[0]:{unionMembers:n}}function Fe(e){let n=[];return e.properties.map(t=>{s.default.isPropertyAssignment(t)?n.push({name:l(t.name),type:Pe(t.initializer)}):S(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function Ee(e){W.add(e)}function g(e,n=!1){if(e.type&&!n)return E(e.type);if(!V)return console.error("TypeChecker not initialized!"),v;let t=V.getTypeAtLocation(e),i=V.typeToTypeNode(t,void 0,void 0);return i?E("type"in i?i.type:i):v}function E(e){let n={};if(e===void 0)return v;if(s.default.isTypeReferenceNode(e))if(Ee(l(e.typeName)),e.typeArguments)n.generics=[l(e.typeName),...e.typeArguments.map(t=>E(t))];else return l(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 r,a;s.default.isPropertySignature(i)?t.push({name:l(i.name),isOptional:i.questionToken!==void 0,type:g(i)}):s.default.isIndexSignatureDeclaration(i)?n.index={keyType:(r=i.parameters)!=null&&r[0].type?g((a=i.parameters)==null?void 0:a[0]):void 0,valueType:g(i)}:t.push({name:l(i.name)||"",isOptional:i.questionToken!==void 0,type:E()})}),n.typeLiteralMembers=t}else if(s.default.isArrayTypeNode(e))n.arrayElementType=E(e.elementType);else if(s.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(E);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(E);else if(s.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(E);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:E(e.typeParameter.constraint),valueType:E(e.type)};else if(s.default.isLiteralTypeNode(e))n.literalValue=l(e.literal);else{if(Object.keys(pe).includes(String(e.kind)))return pe[e.kind]||v;if(s.default.isNamedTupleMember(e))Object.assign(n,g(e));else return g(e,!0)}}}}return n}var ee=(e,n,t)=>[...(e==null?void 0:e.filter(i=>!(n!=null&&n.some(r=>(t||(()=>r===i))(r,i)))))||[],...n||[]];function ne(e,n){if(e!==void 0&&e!==v)return typeof e=="string"?W.has(e)||n!=null&&n.includes(e)?e:void 0:e}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 Ue(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=ne(e.type,n)}function Se(e,n){var t;(t=e.args)==null||t.forEach(i=>i.type=ne(i.type,n)),e.returnType=ne(e.returnType,n)}function l(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return s.default.isQualifiedName(n)?l(n.right):n.getText()}catch(n){return e.text}}function te(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(t=>{let[i,r]=t;r===!1||r===void 0||r===null?delete n[i]:r instanceof Array?r.length===0?delete n[i]:r.forEach(te):te(r)})}function qe(e){for(let n of e.values())te(n)}function ze(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 me(e,n=F.cwd()){return de(e).replace(de(n)+"/","")}function de(e){let n=M.sep;return e.split(n).join("/")}function Ke(e){return e instanceof Array?e:[e]}function S(e){H.OUTPUT_LOG&&console.log(e)}function re(e,n){let t=[],i=[],r=[],a=[],d=[],c=s.default.createSourceFile(n,e,s.default.ScriptTarget.Latest,!0);function o(m){var b;if(s.default.isClassDeclaration(m)&&m.name)Re(m,!1,!0),t.push(l(m.name));else if(s.default.isInterfaceDeclaration(m)&&m.name)he(m,!1),i.push(l(m.name));else if(s.default.isEnumDeclaration(m)&&m.name)be(m,!1,!0),r.push(l(m.name));else if(s.default.isTypeAliasDeclaration(m)&&m.name)xe(m,!1,!0),a.push(l(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(l(R.name)),Me(m)}else m.forEachChild(o)}return o(c),{classNames:t,interfaceNames:i,enumNames:r,typeAliasNames:a,constTypeNames:d}}function ae(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:i,outputLog:r}=e,a=e.reflectModule||ce,d=JSON.stringify(a);if(r&&(H.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");r&&console.log(`sourcePaths: ${n}, exclude: ${t}, forEnabledClassOnly: ${i}, reflectModule: ${a}`);let{classDefinitions:c,interfaceDefinitions:o,enumDefinitions:m,typeAliasDefinitions:b,constTypeDefinitions:R}=J(n,t),k=[],N=[];function A(T){let D=[];return(()=>{let u=c.get(T);if(u){u.superClassName&&D.push(u.superClassName),D.push(...u.implementations||[]);return}let h=o.get(T);if(h){D.push(...h.implementations||[]);return}b.get(T)&&D.push(T)})(),D.flatMap(u=>[u,...A(u)])||[]}function y(T,D){return A(T.name).includes(D)}function w(T){if(Q.default.isClassDeclaration(T)&&T.name!==void 0){let D=T.name.text,u=c.get(D);if(!D||!u||i&&!y(u,"EnableReflect"))return;N.push(`(()=>{const __reflectModule=(Reflect.__reflectTypes=Reflect.__reflectTypes||{})[${d}]=(Reflect.__reflectTypes[${d}]||{});__reflectModule.registerClass?__reflectModule.registerClass({${D}}):(__reflectModule.__classDef=Object.assign(__reflectModule.__classDef||{},{${D}}))})()`);return}T.forEachChild(w)}function U(){let T={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};c.forEach((u,h)=>{i&&!y(u,"EnableReflect")||(T.classes[h]=u)}),o.forEach((u,h)=>{i&&!y(u,"EnableReflect")||(T.interfaces[h]=u)}),m.forEach((u,h)=>{T.enums[h]=u}),b.forEach((u,h)=>{T.typeAliases[h]=u}),R.forEach((u,h)=>{T.constTypes[h]=u});let D=B(JSON.stringify(T));return`;(()=>{const __reflectModule=(Reflect.__reflectTypes=Reflect.__reflectTypes||{})[${d}]=(Reflect.__reflectTypes[${d}]||{});__reflectModule.__meta='${D}'})()`}let q=(T,D)=>{if(D.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!D.startsWith(u))){r&&console.log(`transform id: ${D}`);try{let u=Q.default.createSourceFile(D,T,Q.default.ScriptTarget.Latest,!1);return k.length=0,N.length=0,w(u),`${k.join(";")};${T};${N.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${D}:`,u);return}}};function z(T,D){try{re(T,D)}catch(u){console.error(`[reflect-parser-plugin] Error reparsing ${D}:`,u)}}return{outputAllMetas:U,transform:q,reparseForHMR:z}}var oe=process.cwd().replace(/\\/g,"/")+"/";function Ge(e){let n=ae(e),t=typeof e.sourcePaths=="string"?[e.sourcePaths]:e.sourcePaths;return{name:"reflect-parser-plugin",enforce:"pre",transform:(r,a)=>(a=a.replace(oe,""),a===e.entry?`${n.outputAllMetas()}
2
- ${r}`:n.transform(r,a)),handleHotUpdate(c){return L(this,arguments,function*({file:r,server:a,read:d}){let o=r.replace(/\\/g,"/").replace(oe,"");if(!o.endsWith(".ts")||t.every(R=>!o.startsWith(R)))return;let m=yield d();n.reparseForHMR(m,o);let b=a.moduleGraph.getModulesByFile(oe+e.entry);if(b)for(let R of b)a.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 We=Object.defineProperty,ln=Object.defineProperties;var un=Object.getOwnPropertyDescriptors;var Ke=Object.getOwnPropertySymbols;var pn=Object.prototype.hasOwnProperty,mn=Object.prototype.propertyIsEnumerable;var Qe=(n,e,t)=>e in n?We(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,E=(n,e)=>{for(var t in e||(e={}))pn.call(e,t)&&Qe(n,t,e[t]);if(Ke)for(var t of Ke(e))mn.call(e,t)&&Qe(n,t,e[t]);return n},Y=(n,e)=>ln(n,un(e)),o=(n,e)=>We(n,"name",{value:e,configurable:!0});var k="default";function be(n){return n||{}}o(be,"Dictionary");var he=["string","number","boolean","bigint","symbol"],ze={string:String,number:Number,boolean:Boolean,object:Object};var x=Reflect,w=k,B=be(),qe,yn=new Promise(n=>{qe=n});function dn(n){w=n||k}o(dn,"setReflectModule");function Tn(){return x.__reflectTypes=x.__reflectTypes||be(),x.__reflectTypes[w]=x.__reflectTypes[w]||{},x.__reflectTypes[w]}o(Tn,"getReflectModule");function C(){var r;if(B[w])return B[w];let n=Tn(),e=(r=n.__meta)!=null?r:w===k?x.__meta:void 0;if(e===void 0){y.validationErrorHandler(new R("No reflect meta found, reflect is disabled."));return}try{B[w]=JSON.parse(gn(e))}catch(s){console.error(s),y.validationErrorHandler(new R("Illegal reflect meta found, reflect is disabled"));return}delete n.__meta,w===k&&delete x.__meta;let t=B[w],i=n.__classDef||{};return w===k&&x.__classDef&&x.__classDef!==i&&Object.assign(i,x.__classDef),t.classDef=i,delete n.__classDef,w===k&&delete x.__classDef,Reflect.defineProperty(n,"registerClass",{value:o(s=>Object.assign(t.classDef,s),"value")}),w===k&&!x.registerClass&&Reflect.defineProperty(x,"registerClass",{value:n.registerClass}),qe(),B[w]}o(C,"getRawMeta");function gn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(gn,"decode");var 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 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 O=ee,ne=class ne extends O{static create(e,t){let i=A(ne,e);return i.genericContext=t,i}get type(){return d({rawType:this.rawType,genericContext:this.genericContext})}};o(ne,"GenericProperty");var Z=ne;function A(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(A,"createInstance");function te(n,e){n.properties=e.properties.map(t=>Z.create(t,n.genericContext)),n.methods=e.methods.map(t=>H.create(t,n.genericContext)),n instanceof N&&e instanceof _&&e.constructorMethod!==void 0&&(n.constructorMethod=H.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 we(n,e,t){n!==void 0&&(n[e]=t)}o(we,"setValue");function U(n,e){if(n!==void 0)return n[e]}o(U,"getValue");function j(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(j,"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 K(n){return new re(n)}o(K,"fillMethod");var oe=class oe extends re{static create(e,t){let i=A(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 H=oe;var Q=class Q{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(K))||[],this.properties=((i=e.properties)==null?void 0:i.map(O.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 J(e)||((t=g(e))==null?void 0:t.type)||$(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof Q?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{interfaceName:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof Q?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{interfaceName:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...t]}:{interfaceName:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(Q,"InterfaceDefinition");var F=Q,ae=class ae extends F{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=A(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 J(n){var e,t;if(!T.interfaceMap.has(n)){let i=(t=(e=C())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;T.interfaceMap.set(n,new F(i))}return T.interfaceMap.get(n)}o(J,"getInterfaceDefinition");var xe=class xe{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?K(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(K))||[],this.properties=((i=e.properties)==null?void 0:i.map(O.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,E({},t.allMethods))}return Object.assign(e,E({},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=>J(e)||$(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof F?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(xe,"ClassDefinition");var _=xe,fe=class fe extends _{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=A(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 N=fe;function Dn(n){var e;return((e=g(n))==null?void 0:e.jsClass)||ze[n]}o(Dn,"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(M=>M.jsClass===n);if(c)return c;let m=(t=Object.entries(((e=C())==null?void 0:e.classDef)||{}).find(([M,I])=>I===n))==null?void 0:t[0];return m?g(m):void 0;case"string":let b=n;if(!T.classMap.has(b)){let M=(r=(i=C())==null?void 0:i.classes)==null?void 0:r[b];if(!M)return;let I=(a=(s=C())==null?void 0:s.classDef)==null?void 0:a[b];T.classMap.set(b,new _(Y(E({},M),{jsClass:I})))}return T.classMap.get(b)}}o(g,"getClassDefinition");var Ie=class Ie{constructor(){this.success=!0}};o(Ie,"SuccessResult");var Ce=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 Pe=Oe,p=new Ce,l=o((n,e,t)=>new Pe(n,e,t),"failedResult");function ht(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
- -> `)}o(ht,"getErrorTraceMessages");var Ae=class Ae extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Ae,"ValidationError");var R=Ae;var $e=[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 Ye(e):return p;case de(e):return n instanceof Object?ve(n,e,t):l(200,`declared as ${u(e)} but actually not an object`,{value:n,type:e});case ce(e):return bn(n,e,t);case ye(e):return Mn(n,e,t);case pe(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 me(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 Se(e):return hn(n,e,t);case le(e):switch(typeof n){case"string":return n===j(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 ue(e):return wn(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 Le(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 Rn(n,e,t)}}o(D,"validateValue");function bn(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(bn,"validateArrayValue");function hn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${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(hn,"validateIndexedValue");function Mn(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(Mn,"validateTupleValue");function wn(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=U(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(wn,"validateProperties");function Rn(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 $e)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&&!Xe(n,i))return l(133,`declared as ${u(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return p;let r=D(n,$(i),t);return r.success?p:l(134,`declared as ${u(e)} but actually not match`,{cause:r,value:n,type:e})}o(Rn,"validateSimpleValue");function ve(n,e,t=3){if(e.classDefinition&&!Xe(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=E({},e);return delete i.classDefinition,D(n,i,t)}o(ve,"validateClassInstance");function Xe(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(Xe,"valueInstanceOf");function u(n){var e,t,i;return typeof n=="string"?n:de(n)?n.classDefinition.name:n.interfaceName?n.interfaceName:n.typeAliasName?n.typeAliasName:ce(n)?u(n.arrayElementType)+"[]":n.isConstructor?"Class":n.isFunction?"Function":ue(n)?"Object":ye(n)?`(${n.tupleMembers.map(u).join(",")})`:pe(n)?((e=n.unionMembers)==null?void 0:e.map(u).join(" | "))||"unknown":me(n)?((t=n.intersectionMembers)==null?void 0:t.map(u).join(" & "))||"unknown":le(n)?n.literalValue:Se(n)?`{ [${(i=n.index.keyType)!=null?i:"string"}]: ${u(n.index.valueType)} }`:n.name||"unknown"}o(u,"getTypeDisplayName");function xn(n,e,t){let i=g(n),r=y.validationErrorHandler;if(!i){we(n,e,t);return}let s=i.allProperties[e];s||r(new R(`Property ${e} is not defined in ${i.name}`));let a=s==null?void 0:s.type,f=D(t,a);f.success||r(new R(f.errorMessage)),we(n,e,t)}o(xn,"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 W(n){var e,t;if(!T.enumMap.has(n)){let i=(t=(e=C())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;T.enumMap.set(n,new Ee(i))}return T.enumMap.get(n)}o(W,"getEnumDefinition");function Cn(n){var e;return((e=W(n))==null?void 0:e.names)||[]}o(Cn,"getEnumNames");function Pn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=W(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(Pn,"getEnumValues");var Ve=new Map;function v(n){Ve.set(n.name,n)}o(v,"registerSpecialType");function Ze(n){return Ve.has(n)}o(Ze,"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");v({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?z(e,t=>t.isOptional=!0):void 0}});v({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:z(e,t=>t.isOptional=!1)}});v({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return z(e,t=>t.isReadonly=!0)}});v({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}}}});v({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return en(e,t)}});function en(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>j(s.literalValue)))!=null?r:[j(e.literalValue)];if(n.typeLiteralMembers)return tn(n,s=>t.includes(s.name))}o(en,"getPickType");v({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return nn(e,t)}});function nn(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>j(s.literalValue)))!=null?r:[j(e.literalValue)];if(n.typeLiteralMembers)return tn(n,s=>!t.includes(s.name))}o(nn,"getOmitType");v({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 en(e,i)}}});v({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 nn(e,i)}}});v({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return Y(E({},e),{reflectReference:t})}});function z(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>rn(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 tn(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?rn(t):void 0).filter(t=>!!t)}}o(tn,"getFilterKeyType");function rn(n,e){let t;return n instanceof O?t=new O({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(rn,"copyPropertyDefinition");function _e(n,e){var r,s,a;if(Ze(n))return e?je(n,...e):je(n);if(!T.typeAliasMap.has(n)){let f=(s=(r=C())==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(_e,"getTypeAliasDefinition");var h={name:"any"},In={name:"null"},On={name:"undefined"};function Ye(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(Ye,"isIgnoredType");function Le(n){return!!(n.name&&he.includes(n.name))}o(Le,"isPrimitiveType");function ce(n){return!!n.arrayElementType}o(ce,"isArrayType");function le(n){return!!n.literalValue}o(le,"isLiteralType");function ue(n){return!!n.typeLiteralMembers}o(ue,"isTypeLiteralType");function pe(n){return!!n.unionMembers}o(pe,"isUnionType");function me(n){return!!n.intersectionMembers}o(me,"isIntersectionType");function ye(n){return!!n.tupleMembers}o(ye,"isTupleType");function de(n){return!!n.classDefinition}o(de,"isClassDefinition");function An(n){return!!n.generics}o(An,"hasGenerics");function Se(n){return!!n.index}o(Se,"isIndexType");function $(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return h;if(n==="null")return In;if(n==="undefined")return On;if(n==="Function")return{isFunction:!0};let t=g(n);if(t)return e?N.create(t,e).type:t.type;if(he.includes(n))return{name:n};if($e.map(a=>a.name).includes(n))return{name:n,generics:e};let i=J(n);if(i)return i.fromLib?{name:n,generics:e}:e?se.create(i,e).type:i.type;let r=W(n);if(r)return r.type;let s=_e(n,e);return s?s.type:(y.debug&&console.warn(`${n} not registered...`),h)}o($,"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])||$(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 q={isPrimitiveType:Le,isArrayType:ce,isLiteralType:le,isTypeLiteralType:ue,isUnionType:pe,isIntersectionType:me,isTupleType:ye,isClassDefinition:de,hasGenerics:An};function P(n){if(typeof n=="string"){let e=vn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?$(n):P(e)}return"array"in n?{arrayElementType:P(n.array)}:"union"in n?{unionMembers:n.union.map(P)}:"intersection"in n?{intersectionMembers:n.intersection.map(P)}:"tuple"in n?{tupleMembers:n.tuple.map(P)}:"generic"in n?$(n.name,n.generic.map(P)):n}o(P,"getTypeDef");function ri(n,e,t=5){let i=D(n,P(e),t);return i.success||y.validationErrorHandler(new R(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(ri,"assertType");function oi(n){return $n(null,n)}o(oi,"isNullable");function $n(n,e,t=5){return D(n,P(e),t).success}o($n,"isType");function vn(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 I=0;for(;I<c.length;){let L=c.indexOf(m,I);if(L===-1)break;I=L+1;let V=c.indexOf(b,I);if(V===-1)throw new Je("Illegal type string");let X=c.substring(L+1,V),G=r(X);M?c=`${c.substring(0,L+1)}${G}${c.substring(V)}`:c=`${c.substring(0,L)}${G}${c.substring(V+1)}`}return c}o(a,"replaceBracket");function f(c){let m=c.trim(),b=o(S=>S.trim(),"trim"),M=o(S=>S.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let I=s(m);if(I)return f(I);let L=m.split("|").map(b).filter(M);if(L.length>1)return{union:L.map(f)};let V=m.split("&").map(b).filter(M);if(V.length>1)return{intersection:V.map(f)};let X=m.match(/^\[(.*)]$/);if(X)return{tuple:X[1].split(",").map(b).filter(M).map(f)};let G=m.match(/^(.+)\[]$/);if(G)return{array:f(G[1])};let ge=m.match(/^([^<]+)<(.+)>$/);if(ge){let S=ge[1].trim(),De=f(ge[2]);if(typeof De=="string"){let cn=De.split(",").map(b).filter(M).map(f);return{name:S,generic:cn}}else return{name:S,generic:[De]}}return m}return o(f,"parseTypeRecursive"),f(n)}o(vn,"parseType");var Ge=class Ge extends Error{};o(Ge,"TypeParseError");var Je=Ge;function on(n,e,t=3){return y.validation?(e=e||n.constructor.name,ve(n,P(e),t)):p}o(on,"validateInstance");function pi(n,e,t=2){if(!y.validation)return p;for(let i=0;i<n.length;i++){let r=on(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(pi,"validateArray");function mi(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=on(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(mi,"validateDictionary");var sn=Symbol("VALIDATE_WRAPPER"),wi=o((n,e,t)=>Ln(n,e,t),"ReflectValidate");function Ln(n,e,t){if(!y.validation)return;let i=t.value;if(typeof i!="function"||U(i,sn))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=>an(n,r(),c),"validateArgs"),a=o(c=>Sn(n,r(),c),"validateReturn"),f=o(function(...c){s(c);let m=i.call(this,...c);return a(m)},"newFunc");f[sn]=i,t.value=f}o(Ln,"wrapValidateMethod");function an(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 R(`Illegal arguments for ${Be(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 R(`Illegal arguments for ${Be(n.constructor.name,e)}: ${r.name}: ${r.name} ${f.errorMessage}`,f)))})}o(an,"validateMethodParams");function Sn(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 R(`result for ${Be(n.constructor.name,e)} doesn't match type ${f.name}:
4
- ${c.errorStackFlow}`,c))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||h),t instanceof Promise?t.then(a=>i(a,r||h)):i(t,r||h)}o(Sn,"validateMethodReturnValue");function Be(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Be,"getMethodDescription");function Ri(n,e,...t){let i=g(n);if(!i)return;let r=i.allMethods[e];if(r)return an(n,r,t),U(n,e).apply(n,t)}o(Ri,"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=P(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return D(s,i).success||this.exceptionHandler(new Te(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return q.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):q.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return q.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new Te(`class ${t.name} not reflected`)),e;let i=A(t.jsClass);return Object.assign(i,e),i}};o(He,"JSONTransfer");var fn=He,Ue=class Ue extends Error{};o(Ue,"JSONError");var Te=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 Gi(){if(y.debug)return;let n=C();if(n!==void 0)return{raw:n,instances:T,config:y}}o(Gi,"getDebugInfo");export{Pe as FailureResult,Te as JSONError,fn as JSONTransfer,y as ReflectConfig,wi as ReflectValidate,q as TypeDefinition,Je as TypeParseError,R as ValidationError,ri as assertType,l as failedResult,Dn as getClassByName,g as getClassDefinition,Gi as getDebugInfo,W as getEnumDefinition,Cn as getEnumNames,Pn as getEnumValues,ht as getErrorTraceMessages,J as getInterfaceDefinition,_e as getTypeAliasDefinition,P as getTypeDef,oi as isNullable,$n as isType,yn as reflectReady,v as registerSpecialType,Ri as safeCall,xn as safeSetValue,dn as setReflectModule,p as successResult,pi as validateArray,mi as validateDictionary,on 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 $=(e,n,s)=>new Promise((t,a)=>{var r=o=>{try{c(s.next(o))}catch(m){a(m)}},d=o=>{try{c(s.throw(o))}catch(m){a(m)}},c=o=>o.done?t(o.value):Promise.resolve(o.value).then(r,d);c((s=s.apply(e,n)).next())});import ne from"typescript";var se="default";function x(e){return e||{}}var H=["string","number","boolean","bigint","symbol"];import i from"typescript";import*as K from"fs";import*as I from"process";import*as M from"path";import{pathToFileURL as Ee}from"url";function z(e){return Buffer.from(e,"utf8").toString("base64")}var Y={OUTPUT_LOG:!1},C=new Map,O=new Map,F=new Map,_=new Map,Z=new Map,B=new Set,re={[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"},v="any",le=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],ce=["Mappable","EnableReflect","ReflectReference"];[...H,...le,...ce].forEach(Re);ce.forEach(e=>_.set(e,{name:e,type:e}));var G,ae=!1,L=Reflect;function je(e){return $(this,null,function*(){let{filePaths:n,exclude:s,sourceFolder:t,distFolder:a}=e;if(t=M.resolve(t||I.cwd()),a=M.resolve(a||I.cwd()),L.__meta!==void 0)return;let r={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};n=xe(n);let d=n.map(c=>M.join(t,c));ee(d,s);for(let[c,o]of C)r.classes[c]=o;for(let[c,o]of O)r.interfaces[c]=o;for(let[c,o]of _)r.typeAliases[c]=o;for(let[c,o]of F)r.enums[c]=o;for(let[c,o]of Z)r.constTypes[c]=o;L.__meta=z(JSON.stringify(r)),yield Promise.all(n.map(c=>pe(c,a)))})}function pe(e,n){return $(this,null,function*(){let s=M.resolve(n,e);if(!K.existsSync(s))return;if(K.statSync(s).isDirectory()){let c=K.readdirSync(s);yield Promise.all(c.map(o=>pe(M.join(e,o),n)));return}if(!e.endsWith(".js"))return;let a=M.join(n,e),d=yield import(Ee(a).href);L.__classDef={},Object.values(d).forEach(c=>{typeof c=="function"&&L.__classDef&&(L.__classDef[c.name]=c)})})}function ee(e,n){if(e||(e=[I.cwd()]),e=xe(e),!ae){let s=ue(e,n),t=i.createProgram(s,{});G=t.getTypeChecker(),s=s.map(r=>oe(r)),t.getSourceFiles().filter(r=>s.includes(oe(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{S(`parse file: ${r.fileName}`),me(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of B.keys())!C.has(r)&&!O.has(r)&&!F.has(r)&&!_.has(r)&&!H.includes(r)&&!le.includes(r)&&(S(`remove unknown typeName: ${r}`),B.delete(r));Array.from(C.values()).forEach(Ke),Array.from(O.values()).forEach(ke),[C,O,_].forEach(Ae),ae=!0}return{classDefinitions:C,interfaceDefinitions:O,enumDefinitions:F,typeAliasDefinitions:_,constTypeDefinitions:Z}}function ue(e,n){let s=[];return e.forEach(t=>{if(t=M.resolve(t),Ce(t,n)){S(`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(...ue([M.join(t,d)],n)))}),s}function me(e,n,s=!1){i.isClassDeclaration(e)?de(e,n,s):i.isInterfaceDeclaration(e)?ye(e,n):i.isEnumDeclaration(e)?ge(e,n,s):i.isTypeAliasDeclaration(e)?Te(e,n,s):i.isConstTypeReference(e)?De(e):e.forEachChild(t=>me(t,n,s))}function de(e,n,s=!1){var b,R,k,N,A,y,w,j,U,q,T,D,u,h,V;let t=l(e.name);if(!t)return;let a=l((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=(N=e.heritageClauses)==null?void 0:N.find(p=>p.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:A.types.map(p=>l(p.expression)),d=[],c=[],o;for(let p of e.members)if(i.isPropertyDeclaration(p))d.push({name:l(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:(U=p.modifiers)==null?void 0:U.some(f=>f.kind===i.SyntaxKind.PrivateKeyword),args:p.parameters.map(f=>{var P,ie;return(P=f.modifiers)!=null&&P.some(W=>W.kind===i.SyntaxKind.PublicKeyword)&&d.push({name:l(f.name),isOptional:f.questionToken!==void 0,type:g(f),isReadonly:(ie=f.modifiers)==null?void 0:ie.some(W=>W.kind===i.SyntaxKind.ReadonlyKeyword)}),{name:l(f.name),type:g(f),isOptional:f.questionToken!==void 0}}),isConstructor:!0};else if(i.isMethodDeclaration(p))c.push({name:l(p.name),returnType:g(p),isPrivate:(q=p.modifiers)==null?void 0:q.some(f=>f.kind===i.SyntaxKind.PrivateKeyword),isStatic:(T=p.modifiers)==null?void 0:T.some(f=>f.kind===i.SyntaxKind.StaticKeyword),isAsync:(D=p.modifiers)==null?void 0:D.some(f=>f.kind===i.SyntaxKind.AsyncKeyword),args:p.parameters.map(f=>({name:l(f.name),type:g(f),isOptional:f.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(p)){let f=d.find(P=>P.name===l(p.name));f||(f={name:l(p.name),isOptional:p.questionToken===void 0,type:g(p)},d.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((u=p.modifiers)==null?void 0:u.some(P=>P.kind===i.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(p)){let f=d.find(P=>P.name===l(p.name));f||(f={name:l(p.name),isOptional:p.questionToken===void 0,type:g(p)},d.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((h=p.modifiers)==null?void 0:h.some(P=>P.kind===i.SyntaxKind.PrivateKeyword))||!1}}let m={name:t,constructorMethod:o,superClassName:a,implementations:r,properties:d,methods:c,genericsParams:(V=e.typeParameters)==null?void 0:V.map(p=>l(p.name)),fromLib:n};if(!s&&C.has(t))throw new Error(`Duplicate defined for class "${t}"`);S(`${s?"Redefine":"Define"} class: ${l(e.name)}`),C.set(t,m)}function ye(e,n){var m,b,R,k,N,A;let s=l(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=>l(y.expression)))||[],a=[],r=[],d,c;for(let y of e.members)i.isPropertySignature(y)?a.push({name:l(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:((N=y.modifiers)==null?void 0:N.some(w=>w.kind===i.SyntaxKind.PrivateKeyword))||!1,args:y.parameters.map(w=>({name:l(w.name),type:g(w),isOptional:w.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(y)&&(y.parameters[0]&&(d=g(y.parameters[0])),c=g(y));let o=O.get(s);o?(o.implementations=J(o.implementations||[],t),o.methods=J(o.methods||[],r,(y,w)=>y.name===w.name),o.properties=J(o.properties||[],a,(y,w)=>y.name===w.name),c&&(o.index={keyType:d,valueType:c}),S(`Merge interface ${l(e.name)}`)):(o={name:s,implementations:t,methods:r,properties:a,index:c?{keyType:d,valueType:c}:void 0,genericsParams:(A=e.typeParameters)==null?void 0:A.map(y=>l(y.name)),fromLib:n},O.set(s,o),S(`Define interface ${l(e.name)}`))}function ge(e,n,s=!1){let t=l(e.name);if(t){if(!s&&F.has(t))throw new Error(`Duplicate defined for enum: ${t}`);F.set(t,{name:t,members:e.members.map(a=>({name:l(a.name),initializer:l(a.initializer)})),fromLib:n}),S(`Define enum: ${l(e.name)}`)}}function Te(e,n,s=!1){var d;let t=l(e.name);S(`${s?"Redefine":"Define"} typeAlias: ${t}`);let a=g(e),r=(d=e.typeParameters)==null?void 0:d.map(c=>l(c.name));if(!s&&_.has(t))throw new Error(`Duplicate defined for typeAlias: ${t}`);_.set(t,{name:t,type:a,genericParams:r,fromLib:n})}function De(e){let n=e.parent.parent;i.isVariableDeclaration(n)&&n.initializer&&i.isAsExpression(n.initializer)&&Z.set(l(n.name),we(n.initializer.expression))}function we(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":v}function Ne(e){let n=[];return e.elements.forEach(s=>{if(i.isStringLiteral(s))return n.push(l(s))}),n.length===0?v:n.length===1?n[0]:{unionMembers:n}}function Se(e){let n=[];return e.properties.map(s=>{i.isPropertyAssignment(s)?n.push({name:l(s.name),type:we(s.initializer)}):S(`unsupported property: ${s.name}`)}),{typeLiteralMembers:n}}function Re(e){B.add(e)}function g(e,n=!1){if(e.type&&!n)return E(e.type);if(!G)return console.error("TypeChecker not initialized!"),v;let s=G.getTypeAtLocation(e),t=G.typeToTypeNode(s,void 0,void 0);return t?E("type"in t?t.type:t):v}function E(e){let n={};if(e===void 0)return v;if(i.isTypeReferenceNode(e))if(Re(l(e.typeName)),e.typeArguments)n.generics=[l(e.typeName),...e.typeArguments.map(s=>E(s))];else return l(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:l(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:l(t.name)||"",isOptional:t.questionToken!==void 0,type:E()})}),n.typeLiteralMembers=s}else if(i.isArrayTypeNode(e))n.arrayElementType=E(e.elementType);else if(i.isTupleTypeNode(e))n.tupleMembers=e.elements.map(E);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(E);else if(i.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(E);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:E(e.typeParameter.constraint),valueType:E(e.type)};else if(i.isLiteralTypeNode(e))n.literalValue=l(e.literal);else{if(Object.keys(re).includes(String(e.kind)))return re[e.kind]||v;if(i.isNamedTupleMember(e))Object.assign(n,g(e));else return g(e,!0)}}}}return n}var J=(e,n,s)=>[...(e==null?void 0:e.filter(t=>!(n!=null&&n.some(a=>(s||(()=>a===t))(a,t)))))||[],...n||[]];function Q(e,n){if(e!==void 0&&e!==v)return typeof e=="string"?B.has(e)||n!=null&&n.includes(e)?e:void 0:e}function Ke(e){var n,s;(n=e.methods)==null||n.forEach(t=>be(t,e.genericsParams)),(s=e.properties)==null||s.forEach(t=>he(t,e.genericsParams))}function ke(e){var n,s;(n=e.methods)==null||n.forEach(t=>be(t,e.genericsParams)),(s=e.properties)==null||s.forEach(t=>he(t,e.genericsParams))}function he(e,n){e.type=Q(e.type,n)}function be(e,n){var s;(s=e.args)==null||s.forEach(t=>t.type=Q(t.type,n)),e.returnType=Q(e.returnType,n)}function l(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return i.isQualifiedName(n)?l(n.right):n.getText()}catch(n){return e.text}}function X(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(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(X):X(a)})}function Ae(e){for(let n of e.values())X(n)}function Ce(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 oe(e,n=I.cwd()){return fe(e).replace(fe(n)+"/","")}function fe(e){let n=M.sep;return e.split(n).join("/")}function xe(e){return e instanceof Array?e:[e]}function S(e){Y.OUTPUT_LOG&&console.log(e)}function Me(e,n){let s=[],t=[],a=[],r=[],d=[],c=i.createSourceFile(n,e,i.ScriptTarget.Latest,!0);function o(m){var b;if(i.isClassDeclaration(m)&&m.name)de(m,!1,!0),s.push(l(m.name));else if(i.isInterfaceDeclaration(m)&&m.name)ye(m,!1),t.push(l(m.name));else if(i.isEnumDeclaration(m)&&m.name)ge(m,!1,!0),a.push(l(m.name));else if(i.isTypeAliasDeclaration(m)&&m.name)Te(m,!1,!0),r.push(l(m.name));else if(i.isConstTypeReference(m)){let R=(b=m.parent)==null?void 0:b.parent;i.isVariableDeclaration(R)&&R.name&&d.push(l(R.name)),De(m)}else m.forEachChild(o)}return o(c),{classNames:s,interfaceNames:t,enumNames:a,typeAliasNames:r,constTypeNames:d}}function Pe(e){let{sourcePaths:n,exclude:s,forEnabledClassOnly:t,outputLog:a}=e,r=e.reflectModule||se,d=JSON.stringify(r);if(a&&(Y.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${s}, forEnabledClassOnly: ${t}, reflectModule: ${r}`);let{classDefinitions:c,interfaceDefinitions:o,enumDefinitions:m,typeAliasDefinitions:b,constTypeDefinitions:R}=ee(n,s),k=[],N=[];function A(T){let D=[];return(()=>{let u=c.get(T);if(u){u.superClassName&&D.push(u.superClassName),D.push(...u.implementations||[]);return}let h=o.get(T);if(h){D.push(...h.implementations||[]);return}b.get(T)&&D.push(T)})(),D.flatMap(u=>[u,...A(u)])||[]}function y(T,D){return A(T.name).includes(D)}function w(T){if(ne.isClassDeclaration(T)&&T.name!==void 0){let D=T.name.text,u=c.get(D);if(!D||!u||t&&!y(u,"EnableReflect"))return;N.push(`(()=>{const __reflectModule=(Reflect.__reflectTypes=Reflect.__reflectTypes||{})[${d}]=(Reflect.__reflectTypes[${d}]||{});__reflectModule.registerClass?__reflectModule.registerClass({${D}}):(__reflectModule.__classDef=Object.assign(__reflectModule.__classDef||{},{${D}}))})()`);return}T.forEachChild(w)}function j(){let T={classes:x(),interfaces:x(),typeAliases:x(),constTypes:x(),enums:x()};c.forEach((u,h)=>{t&&!y(u,"EnableReflect")||(T.classes[h]=u)}),o.forEach((u,h)=>{t&&!y(u,"EnableReflect")||(T.interfaces[h]=u)}),m.forEach((u,h)=>{T.enums[h]=u}),b.forEach((u,h)=>{T.typeAliases[h]=u}),R.forEach((u,h)=>{T.constTypes[h]=u});let D=z(JSON.stringify(T));return`;(()=>{const __reflectModule=(Reflect.__reflectTypes=Reflect.__reflectTypes||{})[${d}]=(Reflect.__reflectTypes[${d}]||{});__reflectModule.__meta='${D}'})()`}let U=(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=ne.createSourceFile(D,T,ne.ScriptTarget.Latest,!1);return k.length=0,N.length=0,w(u),`${k.join(";")};${T};${N.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${D}:`,u);return}}};function q(T,D){try{Me(T,D)}catch(u){console.error(`[reflect-parser-plugin] Error reparsing ${D}:`,u)}}return{outputAllMetas:j,transform:U,reparseForHMR:q}}var te=process.cwd().replace(/\\/g,"/")+"/";function Je(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(te,""),r===e.entry?`${n.outputAllMetas()}
2
- ${a}`:n.transform(a,r)),handleHotUpdate(c){return $(this,arguments,function*({file:a,server:r,read:d}){let o=a.replace(/\\/g,"/").replace(te,"");if(!o.endsWith(".ts")||s.every(R=>!o.startsWith(R)))return;let m=yield d();n.reparseForHMR(m,o);let b=r.moduleGraph.getModulesByFile(te+e.entry);if(b)for(let R of b)r.moduleGraph.invalidateModule(R)})}}}export{Y as DEBUG_CONFIG,ee as parseSource,Pe as reflectLoader,Je as reflectParserPlugin,Me as reparseFile,je as setupReflectTypes,pe 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.27",
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",
@@ -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>;
package/types/raw.d.ts CHANGED
@@ -85,13 +85,13 @@ export type Dictionary<T> = {
85
85
  [key: string]: T;
86
86
  };
87
87
  export declare const defaultReflectModule = "default";
88
- export interface ReflectModule {
88
+ export interface ReflectModuleState {
89
89
  __classDef?: Dictionary<Constructor>;
90
90
  __meta?: string;
91
91
  registerClass?: (classDef: Dictionary<Constructor>) => void;
92
92
  }
93
- export interface ReflectObject extends ReflectModule {
94
- __reflectTypes?: Dictionary<ReflectModule>;
93
+ export interface ReflectObject extends ReflectModuleState {
94
+ __reflectTypes?: Dictionary<ReflectModuleState>;
95
95
  }
96
96
  export interface RawReflectMeta {
97
97
  classes: Dictionary<RawClassDefinition>;