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