ts-ref-kit 1.1.25 → 1.1.26

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