ts-ref-kit 1.1.26 → 1.1.27

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