ts-ref-kit 1.1.21 → 1.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var J=Object.defineProperty,mn=Object.defineProperties,yn=Object.getOwnPropertyDescriptor,dn=Object.getOwnPropertyDescriptors,Tn=Object.getOwnPropertyNames,We=Object.getOwnPropertySymbols;var qe=Object.prototype.hasOwnProperty,gn=Object.prototype.propertyIsEnumerable;var ze=(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={}))qe.call(e,t)&&ze(n,t,e[t]);if(We)for(var t of We(e))gn.call(e,t)&&ze(n,t,e[t]);return n},X=(n,e)=>mn(n,dn(e)),o=(n,e)=>J(n,"name",{value:e,configurable:!0});var Dn=(n,e)=>{for(var t in e)J(n,t,{get:e[t],enumerable:!0})},bn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Tn(e))!qe.call(n,r)&&r!==t&&J(n,r,{get:()=>e[r],enumerable:!(i=yn(e,r))||i.enumerable});return n};var hn=n=>bn(J({},"__esModule",{value:!0}),n);var Jn={};Dn(Jn,{FailureResult:()=>ce,JSONError:()=>z,JSONTransfer:()=>Ue,ReflectConfig:()=>y,ReflectValidate:()=>jn,TypeDefinition:()=>F,TypeParseError:()=>De,ValidationError:()=>w,assertType:()=>Ln,failedResult:()=>l,getClassByName:()=>Ye,getClassDefinition:()=>T,getDebugInfo:()=>_n,getEnumDefinition:()=>N,getEnumNames:()=>nn,getEnumValues:()=>tn,getErrorTraceMessages:()=>Mn,getInterfaceDefinition:()=>E,getTypeAliasDefinition:()=>ge,getTypeDef:()=>M,isNullable:()=>kn,isType:()=>cn,registerSpecialType:()=>C,safeCall:()=>Fn,successResult:()=>u,validateArray:()=>En,validateDictionary:()=>vn,validateInstance:()=>Be});module.exports=hn(Jn);var we=["string","number","boolean","bigint","symbol"],Xe={string:String,number:Number,boolean:Boolean,object:Object};var G=Reflect,B;function x(){if(B)return B;let n=G.__meta;if(n===void 0){y.validationErrorHandler(new w("No reflect meta found, reflect is disabled."));return}try{B=JSON.parse(wn(n))}catch(t){console.error(t),y.validationErrorHandler(new w("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")}),B}o(x,"getRawMeta");function wn(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(wn,"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 j&&e instanceof v&&e.constructorMethod!==void 0&&(n.constructorMethod=H.create(e.constructorMethod,n.genericContext))}o(ne,"buildPropertiesAndMethods");function Me(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(Me,"toDictionary");function te(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(te,"mapNotNull");function U(n,e){if(n!==void 0)return n[e]}o(U,"getValue");function S(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(S,"trimQuotes");var xe=class xe{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(xe,"MethodDefinition");var ie=xe;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 E(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 V=Q,se=class se extends V{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,Re=new Map;function E(n){var e,t;if(!Re.has(n)){let i=(t=(e=x())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;Re.set(n,new V(i))}return Re.get(n)}o(E,"getInterfaceDefinition");var Ce=class Ce{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=T(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?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({},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:te(this._implementationNames,e=>E(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 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(Ce,"ClassDefinition");var v=Ce,fe=class fe extends v{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=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 j=fe,ae=new Map;function Ye(n){var e;return((e=T(n))==null?void 0:e.jsClass)||Xe[n]}o(Ye,"getClassByName");function T(n){var e,t,i,r,s,f;switch(typeof n){case"object":return T(n.constructor);case"function":let a=T(n.name);if(a)return a;let c=Array.from(ae.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 g=n;if(!ae.has(g)){let h=(r=(i=x())==null?void 0:i.classes)==null?void 0:r[g];if(!h)return;let R=(f=(s=x())==null?void 0:s.classDef)==null?void 0:f[g];ae.set(g,new v(X(L({},h),{jsClass:R})))}return ae.get(g)}}o(T,"getClassDefinition");var Ie=class Ie{constructor(){this.success=!0}};o(Ie,"SuccessResult");var Pe=Ie,Oe=class Oe{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.detailCause=i.detailCause,this.value=i.value,this.type=i.type}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
2
- caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(Oe,"FailureResult");var ce=Oe,u=new Pe,l=o((n,e,t)=>new ce(n,e,t),"failedResult");function Mn(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
- -> `)}o(Mn,"getErrorTraceMessages");var Ae=class Ae extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Ae,"ValidationError");var w=Ae;var $e=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!y.validation)return u;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 en(e):return u;case Te(e):return n instanceof Object?Le(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case le(e):return xn(n,e,t);case de(e):return Cn(n,e,t);case me(e):let i=[];for(let r of e.unionMembers||[]){let s=D(n,r,t);if(s.success)return u;i.push(s)}return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e,detailCause:i});case ye(e):for(let r of e.intersectionMembers||[]){let s=D(n,r,t);if(!s.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:s,value:n,type:e})}return u;case Se(e):return Rn(n,e,t);case ue(e):switch(typeof n){case"string":return n===S(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 Pn(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 In(n,e,t)}}o(D,"validateValue");function xn(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=D(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})}return u}o(xn,"validateArrayValue");function Rn(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 ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(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})}return u}o(Rn,"validateIndexedValue");function Cn(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 f=D(s,r,t);if(!f.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:f,value:n,type:e})}return u}o(Cn,"validateTupleValue");function Pn(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),f=D(s,r,t-1);if(!f.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:f,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(Pn,"validateProperties");function In(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of $e)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ze(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(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(In,"validateSimpleValue");function Le(n,e,t=3){if(e.classDefinition&&!Ze(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===b)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=L({},e);return delete i.classDefinition,D(n,i,t)}o(Le,"validateClassInstance");function Ze(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=T(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=T(n);return i?i.isSubClassOf(t.name):!1}o(Ze,"valueInstanceOf");function p(n){var e,t,i;return typeof n=="string"?n:Te(n)?n.classDefinition.name:n.interfaceName?n.interfaceName:n.typeAliasName?n.typeAliasName:le(n)?p(n.arrayElementType)+"[]":n.isConstructor?"Class":n.isFunction?"Function":pe(n)?"Object":de(n)?`(${n.tupleMembers.map(p).join(",")})`:me(n)?((e=n.unionMembers)==null?void 0:e.map(p).join(" | "))||"unknown":ye(n)?((t=n.intersectionMembers)==null?void 0:t.map(p).join(" & "))||"unknown":ue(n)?n.literalValue:Se(n)?`{ [${(i=n.index.keyType)!=null?i:"string"}]: ${p(n.index.valueType)} }`:n.name||"unknown"}o(p,"getTypeDisplayName");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=x())==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 nn(n){var e;return((e=N(n))==null?void 0:e.names)||[]}o(nn,"getEnumNames");function tn(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(tn,"getEnumValues");var Ve=new Map;function C(n){Ve.set(n.name,n)}o(C,"registerSpecialType");function rn(n){return Ve.has(n)}o(rn,"isSpecialType");function Ne(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(Ne,"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 on(e,t)}});function on(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>S(s.literalValue)))!=null?r:[S(e.literalValue)];if(n.typeLiteralMembers)return an(n,s=>t.includes(s.name))}o(on,"getPickType");C({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return sn(e,t)}});function sn(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>S(s.literalValue)))!=null?r:[S(e.literalValue)];if(n.typeLiteralMembers)return an(n,s=>!t.includes(s.name))}o(sn,"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 on(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 sn(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=>fn(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 an(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?fn(t):void 0).filter(t=>!!t)}}o(an,"getFilterKeyType");function fn(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(fn,"copyPropertyDefinition");function ge(n,e){var r,s,f;if(rn(n))return e?Ne(n,...e):Ne(n);if(!Fe.has(n)){let a=(s=(r=x())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!a||!a.type)return;Fe.set(n,{name:n,type:a.type,genericParams:a.genericParams,fromLib:a.fromLib})}let t=Fe.get(n);if(!t)return;let i;if(t.genericParams&&e){let a={};for(let c=0;c<t.genericParams.length;c++){let m=t.genericParams[c];a[m]=e[c]}i=d({rawType:t.type,genericContext:a,genericArgs:e})}else i=d({rawType:t.type});return i.typeAliasName=n,{name:t.name,type:i,genericParams:t.genericParams,fromLib:(f=t.fromLib)!=null?f:!1}}o(ge,"getTypeAliasDefinition");var Fe=new Map;var b={name:"any"},On={name:"null"},An={name:"undefined"};function en(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(en,"isIgnoredType");function ke(n){return!!(n.name&&we.includes(n.name))}o(ke,"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 $n(n){return!!n.generics}o($n,"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 On;if(n==="undefined")return An;if(n==="Function")return{isFunction:!0};let t=T(n);if(t)return e?j.create(t,e).type:t.type;if(we.includes(n))return{name:n};if($e.map(f=>f.name).includes(n))return{name:n,generics:e};let i=E(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 _e=new Map;function d(n){let{rawType:e,genericContext:t,genericArgs:i}=n,r=Je(e);if(e===void 0)return b;let s=_e.get(r);if(s)return s;let f={};if(_e.set(r,f),typeof e=="string")f=(t==null?void 0:t[e])||O(e,i)||b;else if(typeof e.literalValue=="string")f.literalValue=e.literalValue;else if(e.arrayElementType)Object.assign(f,{arrayElementType:d({rawType:e.arrayElementType,genericContext:t})});else if(e.unionMembers)Object.assign(f,{unionMembers:e.unionMembers.map(a=>d({rawType:a,genericContext:t}))});else if(e.intersectionMembers)Object.assign(f,{intersectionMembers:e.intersectionMembers.map(a=>d({rawType:a,genericContext:t}))});else if(e.tupleMembers)Object.assign(f,{tupleMembers:e.tupleMembers.map(a=>d({rawType:a,genericContext:t}))});else if(e.typeLiteralMembers)f.typeLiteralMembers=e.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:d({rawType:a.type,genericContext:t,genericArgs:i})}));else if(e.generics){let a=e.generics[0],c=e.generics.slice(1).map(m=>d({rawType:m,genericContext:t}));Object.assign(f,d({rawType:a,genericContext:t,genericArgs:c}))}else e.index&&Object.assign(f,{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(f).length===0&&(f=b),_e.delete(r),f}o(d,"fillType");function Je(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Je).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Je(n[t])).join(",")+"}"}o(Je,"stableStringify");var F={isPrimitiveType:ke,isArrayType:le,isLiteralType:ue,isTypeLiteralType:pe,isUnionType:me,isIntersectionType:ye,isTupleType:de,isClassDefinition:Te,hasGenerics:$n};function M(n){if(typeof n=="string"){let e=Sn(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):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?O(n.name,n.generic.map(M)):n}o(M,"getTypeDef");function Ln(n,e,t=5){let i=D(n,M(e),t);return i.success||y.validationErrorHandler(new w(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(Ln,"assertType");function kn(n){return cn(null,n)}o(kn,"isNullable");function cn(n,e,t=5){return D(n,M(e),t).success}o(cn,"isType");function Sn(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 g=m[1].trim(),h=i[g];return delete i[g],h}o(s,"getPlaceholder");function f(c,m,g,h){let R=0;for(;R<c.length;){let A=c.indexOf(m,R);if(A===-1)break;R=A+1;let k=c.indexOf(g,R);if(k===-1)throw new De("Illegal type string");let q=c.substring(A+1,k),_=r(q);h?c=`${c.substring(0,A+1)}${_}${c.substring(k)}`:c=`${c.substring(0,A)}${_}${c.substring(k+1)}`}return c}o(f,"replaceBracket");function a(c){let m=c.trim(),g=o($=>$.trim(),"trim"),h=o($=>$.length!=0,"notEmpty");m=f(m,"(",")",!1),m=f(m,"<",">",!0);let R=s(m);if(R)return a(R);let A=m.split("|").map(g).filter(h);if(A.length>1)return{union:A.map(a)};let k=m.split("&").map(g).filter(h);if(k.length>1)return{intersection:k.map(a)};let q=m.match(/^\[(.*)]$/);if(q)return{tuple:q[1].split(",").map(g).filter(h).map(a)};let _=m.match(/^(.+)\[]$/);if(_)return{array:a(_[1])};let be=m.match(/^([^<]+)<(.+)>$/);if(be){let $=be[1].trim(),he=a(be[2]);if(typeof he=="string"){let pn=he.split(",").map(g).filter(h).map(a);return{name:$,generic:pn}}else return{name:$,generic:[he]}}return m}return o(a,"parseTypeRecursive"),a(n)}o(Sn,"parseType");var Ge=class Ge extends Error{};o(Ge,"TypeParseError");var De=Ge;function Be(n,e,t=3){return y.validation?(e=e||n.constructor.name,Le(n,M(e),t)):u}o(Be,"validateInstance");function En(n,e,t=2){if(!y.validation)return u;for(let i=0;i<n.length;i++){let r=Be(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(En,"validateArray");function vn(n,e,t=2){if(!y.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,f]=i[r],a=Be(f,e,t);if(!a.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:a,value:n,type:e})}return u}o(vn,"validateDictionary");var ln=Symbol("VALIDATE_WRAPPER"),jn=o((n,e,t)=>Vn(n,e,t),"ReflectValidate");function Vn(n,e,t){if(!y.validation)return;let i=t.value;if(typeof i!="function"||U(i,ln))return;let r=o(()=>{var c,m;return(m=(c=T(n))==null?void 0:c.methods)==null?void 0:m.find(g=>g.name===e)},"getMethodDef"),s=o(c=>un(n,r(),c),"validateArgs"),f=o(c=>Nn(n,r(),c),"validateReturn"),a=o(function(...c){s(c);let m=i.call(this,...c);return f(m)},"newFunc");a[ln]=i,t.value=a}o(Vn,"wrapValidateMethod");function un(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let f=t==null?void 0:t[s];if(f===void 0)if(!r.isOptional)y.validationErrorHandler(new w(`Illegal arguments for ${He(n.constructor.name,e)}: ${r.name} is not optional`));else return;let a=D(f,r.type||b,1);a.success||(console.error("validateResult",a),y.validationErrorHandler(new w(`Illegal arguments for ${He(n.constructor.name,e)}: ${r.name}: ${r.name} ${a.errorMessage}`,a)))})}o(un,"validateMethodParams");function Nn(n,e,t){var s;if(!e)return t;let i=o((f,a)=>{let c=D(f,a,5);return c.success||(console.error(c.errorStackFlow),y.validationErrorHandler(new w(`result for ${He(n.constructor.name,e)} doesn't match type ${a.name}:
4
- ${c.errorStackFlow}`,c))),f},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||b),t instanceof Promise?t.then(f=>i(f,r||b)):i(t,r||b)}o(Nn,"validateMethodReturnValue");function He(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(He,"getMethodDescription");function Fn(n,e,...t){let i=T(n);if(!i)return;let r=i.allMethods[e];if(r)return un(n,r,t),U(n,e).apply(n,t)}o(Fn,"safeCall");var Ke=class Ke{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 D(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(Ke,"JSONTransfer");var Ue=Ke,Qe=class Qe extends Error{};o(Qe,"JSONError");var z=Qe;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 _n(){if(!y.debug)return x()}o(_n,"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,registerSpecialType,safeCall,successResult,validateArray,validateDictionary,validateInstance});
1
+ "use strict";var J=Object.defineProperty,mn=Object.defineProperties,yn=Object.getOwnPropertyDescriptor,dn=Object.getOwnPropertyDescriptors,Tn=Object.getOwnPropertyNames,We=Object.getOwnPropertySymbols;var qe=Object.prototype.hasOwnProperty,gn=Object.prototype.propertyIsEnumerable;var ze=(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={}))qe.call(e,t)&&ze(n,t,e[t]);if(We)for(var t of We(e))gn.call(e,t)&&ze(n,t,e[t]);return n},X=(n,e)=>mn(n,dn(e)),o=(n,e)=>J(n,"name",{value:e,configurable:!0});var Dn=(n,e)=>{for(var t in e)J(n,t,{get:e[t],enumerable:!0})},bn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Tn(e))!qe.call(n,r)&&r!==t&&J(n,r,{get:()=>e[r],enumerable:!(i=yn(e,r))||i.enumerable});return n};var hn=n=>bn(J({},"__esModule",{value:!0}),n);var Jn={};Dn(Jn,{FailureResult:()=>ce,JSONError:()=>z,JSONTransfer:()=>Ue,ReflectConfig:()=>y,ReflectValidate:()=>jn,TypeDefinition:()=>F,TypeParseError:()=>De,ValidationError:()=>w,assertType:()=>Ln,failedResult:()=>l,getClassByName:()=>Ye,getClassDefinition:()=>T,getDebugInfo:()=>_n,getEnumDefinition:()=>N,getEnumNames:()=>nn,getEnumValues:()=>tn,getErrorTraceMessages:()=>Mn,getInterfaceDefinition:()=>E,getTypeAliasDefinition:()=>ge,getTypeDef:()=>M,isNullable:()=>kn,isType:()=>cn,registerSpecialType:()=>C,safeCall:()=>Fn,successResult:()=>u,validateArray:()=>En,validateDictionary:()=>vn,validateInstance:()=>Be});module.exports=hn(Jn);var we=["string","number","boolean","bigint","symbol"],Xe={string:String,number:Number,boolean:Boolean,object:Object};var G=Reflect,B;function x(){if(B)return B;let n=G.__meta;if(n===void 0){y.validationErrorHandler(new w("No reflect meta found, reflect is disabled."));return}try{B=JSON.parse(wn(n))}catch(t){console.error(t),y.validationErrorHandler(new w("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")}),B}o(x,"getRawMeta");function wn(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(wn,"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 j&&e instanceof v&&e.constructorMethod!==void 0&&(n.constructorMethod=H.create(e.constructorMethod,n.genericContext))}o(ne,"buildPropertiesAndMethods");function Me(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(Me,"toDictionary");function te(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(te,"mapNotNull");function U(n,e){if(n!==void 0)return n[e]}o(U,"getValue");function S(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(S,"trimQuotes");var xe=class xe{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(xe,"MethodDefinition");var ie=xe;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 E(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 V=Q,se=class se extends V{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,Re=new Map;function E(n){var e,t;if(!Re.has(n)){let i=(t=(e=x())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;Re.set(n,new V(i))}return Re.get(n)}o(E,"getInterfaceDefinition");var Ce=class Ce{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=T(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?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({},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:te(this._implementationNames,e=>E(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 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(Ce,"ClassDefinition");var v=Ce,fe=class fe extends v{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=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 j=fe,ae=new Map;function Ye(n){var e;return((e=T(n))==null?void 0:e.jsClass)||Xe[n]}o(Ye,"getClassByName");function T(n){var e,t,i,r,s,a;switch(typeof n){case"object":return T(n.constructor);case"function":let f=T(n.name);if(f)return f;let c=Array.from(ae.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 g=n;if(!ae.has(g)){let h=(r=(i=x())==null?void 0:i.classes)==null?void 0:r[g];if(!h)return;let R=(a=(s=x())==null?void 0:s.classDef)==null?void 0:a[g];ae.set(g,new v(X(L({},h),{jsClass:R})))}return ae.get(g)}}o(T,"getClassDefinition");var Ie=class Ie{constructor(){this.success=!0}};o(Ie,"SuccessResult");var Pe=Ie,Oe=class Oe{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.detailCause=i.detailCause,this.value=i.value,this.type=i.type,this.path=i.path}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
2
+ caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}, path: ${this.errorPath}`}get errorPath(){var t,i;let e="";return this.path!==void 0&&(typeof this.path=="string"?e=`.${this.path}`:e=`[${this.path}]`),e+((i=(t=this.cause)==null?void 0:t.errorPath)!=null?i:"")}};o(Oe,"FailureResult");var ce=Oe,u=new Pe,l=o((n,e,t)=>new ce(n,e,t),"failedResult");function Mn(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
+ -> `)}o(Mn,"getErrorTraceMessages");var $e=class $e extends Error{constructor(e,t){super(e),this.failureResult=t}};o($e,"ValidationError");var w=$e;var Ae=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){var i;if(!y.validation)return u;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 en(e):return u;case Te(e):return n instanceof Object?Le(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case le(e):return xn(n,e,t);case de(e):return Cn(n,e,t);case me(e):let r=[];for(let s of e.unionMembers||[]){let a=D(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=D(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 Rn(n,e,t);case ue(e):switch(typeof n){case"string":return n===S(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 Pn(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 In(n,e,t)}}o(D,"validateValue");function xn(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=D(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(xn,"validateArrayValue");function Rn(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 ${p(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 ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e,path:i})}return u}o(Rn,"validateIndexedValue");function Cn(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=D(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(Cn,"validateTupleValue");function Pn(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=D(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(Pn,"validateProperties");function In(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 Ae)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ze(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(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(In,"validateSimpleValue");function Le(n,e,t=3){if(e.classDefinition&&!Ze(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===b)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=L({},e);return delete i.classDefinition,D(n,i,t)}o(Le,"validateClassInstance");function Ze(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=T(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=T(n);return i?i.isSubClassOf(t.name):!1}o(Ze,"valueInstanceOf");function p(n){var e,t,i;return typeof n=="string"?n:Te(n)?n.classDefinition.name:n.interfaceName?n.interfaceName:n.typeAliasName?n.typeAliasName:le(n)?p(n.arrayElementType)+"[]":n.isConstructor?"Class":n.isFunction?"Function":pe(n)?"Object":de(n)?`(${n.tupleMembers.map(p).join(",")})`:me(n)?((e=n.unionMembers)==null?void 0:e.map(p).join(" | "))||"unknown":ye(n)?((t=n.intersectionMembers)==null?void 0:t.map(p).join(" & "))||"unknown":ue(n)?n.literalValue:Se(n)?`{ [${(i=n.index.keyType)!=null?i:"string"}]: ${p(n.index.valueType)} }`:n.name||"unknown"}o(p,"getTypeDisplayName");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=x())==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 nn(n){var e;return((e=N(n))==null?void 0:e.names)||[]}o(nn,"getEnumNames");function tn(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(tn,"getEnumValues");var Ve=new Map;function C(n){Ve.set(n.name,n)}o(C,"registerSpecialType");function rn(n){return Ve.has(n)}o(rn,"isSpecialType");function Ne(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(Ne,"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 on(e,t)}});function on(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>S(s.literalValue)))!=null?r:[S(e.literalValue)];if(n.typeLiteralMembers)return an(n,s=>t.includes(s.name))}o(on,"getPickType");C({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return sn(e,t)}});function sn(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>S(s.literalValue)))!=null?r:[S(e.literalValue)];if(n.typeLiteralMembers)return an(n,s=>!t.includes(s.name))}o(sn,"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 on(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 sn(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=>fn(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 an(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?fn(t):void 0).filter(t=>!!t)}}o(an,"getFilterKeyType");function fn(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(fn,"copyPropertyDefinition");function ge(n,e){var r,s,a;if(rn(n))return e?Ne(n,...e):Ne(n);if(!Fe.has(n)){let f=(s=(r=x())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!f||!f.type)return;Fe.set(n,{name:n,type:f.type,genericParams:f.genericParams,fromLib:f.fromLib})}let t=Fe.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 Fe=new Map;var b={name:"any"},On={name:"null"},$n={name:"undefined"};function en(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(en,"isIgnoredType");function ke(n){return!!(n.name&&we.includes(n.name))}o(ke,"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 An(n){return!!n.generics}o(An,"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 On;if(n==="undefined")return $n;if(n==="Function")return{isFunction:!0};let t=T(n);if(t)return e?j.create(t,e).type:t.type;if(we.includes(n))return{name:n};if(Ae.map(a=>a.name).includes(n))return{name:n,generics:e};let i=E(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 _e=new Map;function d(n){let{rawType:e,genericContext:t,genericArgs:i}=n,r=Je(e);if(e===void 0)return b;let s=_e.get(r);if(s)return s;let a={};if(_e.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),_e.delete(r),a}o(d,"fillType");function Je(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Je).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Je(n[t])).join(",")+"}"}o(Je,"stableStringify");var F={isPrimitiveType:ke,isArrayType:le,isLiteralType:ue,isTypeLiteralType:pe,isUnionType:me,isIntersectionType:ye,isTupleType:de,isClassDefinition:Te,hasGenerics:An};function M(n){if(typeof n=="string"){let e=Sn(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):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?O(n.name,n.generic.map(M)):n}o(M,"getTypeDef");function Ln(n,e,t=5){let i=D(n,M(e),t);return i.success||y.validationErrorHandler(new w(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(Ln,"assertType");function kn(n){return cn(null,n)}o(kn,"isNullable");function cn(n,e,t=5){return D(n,M(e),t).success}o(cn,"isType");function Sn(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 g=m[1].trim(),h=i[g];return delete i[g],h}o(s,"getPlaceholder");function a(c,m,g,h){let R=0;for(;R<c.length;){let $=c.indexOf(m,R);if($===-1)break;R=$+1;let k=c.indexOf(g,R);if(k===-1)throw new De("Illegal type string");let q=c.substring($+1,k),_=r(q);h?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(),g=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(g).filter(h);if($.length>1)return{union:$.map(f)};let k=m.split("&").map(g).filter(h);if(k.length>1)return{intersection:k.map(f)};let q=m.match(/^\[(.*)]$/);if(q)return{tuple:q[1].split(",").map(g).filter(h).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 pn=he.split(",").map(g).filter(h).map(f);return{name:A,generic:pn}}else return{name:A,generic:[he]}}return m}return o(f,"parseTypeRecursive"),f(n)}o(Sn,"parseType");var Ge=class Ge extends Error{};o(Ge,"TypeParseError");var De=Ge;function Be(n,e,t=3){return y.validation?(e=e||n.constructor.name,Le(n,M(e),t)):u}o(Be,"validateInstance");function En(n,e,t=2){if(!y.validation)return u;for(let i=0;i<n.length;i++){let r=Be(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(En,"validateArray");function vn(n,e,t=2){if(!y.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],f=Be(a,e,t);if(!f.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:f,value:n,type:e})}return u}o(vn,"validateDictionary");var ln=Symbol("VALIDATE_WRAPPER"),jn=o((n,e,t)=>Vn(n,e,t),"ReflectValidate");function Vn(n,e,t){if(!y.validation)return;let i=t.value;if(typeof i!="function"||U(i,ln))return;let r=o(()=>{var c,m;return(m=(c=T(n))==null?void 0:c.methods)==null?void 0:m.find(g=>g.name===e)},"getMethodDef"),s=o(c=>un(n,r(),c),"validateArgs"),a=o(c=>Nn(n,r(),c),"validateReturn"),f=o(function(...c){s(c);let m=i.call(this,...c);return a(m)},"newFunc");f[ln]=i,t.value=f}o(Vn,"wrapValidateMethod");function un(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 ${He(n.constructor.name,e)}: ${r.name} is not optional`));else return;let f=D(a,r.type||b,1);f.success||(console.error("validateResult",f),y.validationErrorHandler(new w(`Illegal arguments for ${He(n.constructor.name,e)}: ${r.name}: ${r.name} ${f.errorMessage}`,f)))})}o(un,"validateMethodParams");function Nn(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 w(`result for ${He(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(Nn,"validateMethodReturnValue");function He(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(He,"getMethodDescription");function Fn(n,e,...t){let i=T(n);if(!i)return;let r=i.allMethods[e];if(r)return un(n,r,t),U(n,e).apply(n,t)}o(Fn,"safeCall");var Ke=class Ke{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 D(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(Ke,"JSONTransfer");var Ue=Ke,Qe=class Qe extends Error{};o(Qe,"JSONError");var z=Qe;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 _n(){if(!y.debug)return x()}o(_n,"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,registerSpecialType,safeCall,successResult,validateArray,validateDictionary,validateInstance});
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var Qe=Object.defineProperty,fn=Object.defineProperties;var cn=Object.getOwnPropertyDescriptors;var Ue=Object.getOwnPropertySymbols;var ln=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable;var Ke=(n,e,t)=>e in n?Qe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,L=(n,e)=>{for(var t in e||(e={}))ln.call(e,t)&&Ke(n,t,e[t]);if(Ue)for(var t of Ue(e))un.call(e,t)&&Ke(n,t,e[t]);return n},z=(n,e)=>fn(n,cn(e)),o=(n,e)=>Qe(n,"name",{value:e,configurable:!0});var ge=["string","number","boolean","bigint","symbol"],We={string:String,number:Number,boolean:Boolean,object:Object};var F=Reflect,_;function M(){if(_)return _;let n=F.__meta;if(n===void 0){d.validationErrorHandler(new w("No reflect meta found, reflect is disabled."));return}try{_=JSON.parse(pn(n))}catch(t){console.error(t),d.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")}),_}o(M,"getRawMeta");function pn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(pn,"decode");var 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 y({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 y({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 v&&e instanceof E&&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 G(n,e){if(n!==void 0)return n[e]}o(G,"getValue");function S(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(S,"trimQuotes");var be=class be{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y({rawType:this.rawDef.returnType})}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y({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(be,"MethodDefinition");var ne=be;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:y({rawType:t.type,genericContext:this.genericContext}),isOptional:t.isOptional})))||[]}get returnType(){return y({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 V(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 j=H,re=class re extends j{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,he=new Map;function V(n){var e,t;if(!he.has(n)){let i=(t=(e=M())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;he.set(n,new j(i))}return he.get(n)}o(V,"getInterfaceDefinition");var we=class we{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=>V(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 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(we,"ClassDefinition");var E=we,se=class se extends E{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 v=se,oe=new Map;function mn(n){var e;return((e=T(n))==null?void 0:e.jsClass)||We[n]}o(mn,"getClassByName");function T(n){var e,t,i,r,s,f;switch(typeof n){case"object":return T(n.constructor);case"function":let a=T(n.name);if(a)return a;let c=Array.from(oe.values()).find(h=>h.jsClass===n);if(c)return c;let m=(t=Object.entries(((e=M())==null?void 0:e.classDef)||{}).find(([h,R])=>R===n))==null?void 0:t[0];return m?T(m):void 0;case"string":let g=n;if(!oe.has(g)){let h=(r=(i=M())==null?void 0:i.classes)==null?void 0:r[g];if(!h)return;let R=(f=(s=M())==null?void 0:s.classDef)==null?void 0:f[g];oe.set(g,new E(z(L({},h),{jsClass:R})))}return oe.get(g)}}o(T,"getClassDefinition");var Re=class Re{constructor(){this.success=!0}};o(Re,"SuccessResult");var Me=Re,Ce=class Ce{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.detailCause=i.detailCause,this.value=i.value,this.type=i.type}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
2
- caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(Ce,"FailureResult");var xe=Ce,u=new Me,l=o((n,e,t)=>new xe(n,e,t),"failedResult");function pt(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
- -> `)}o(pt,"getErrorTraceMessages");var Pe=class Pe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Pe,"ValidationError");var w=Pe;var Ie=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!d.validation)return u;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 qe(e):return u;case me(e):return n instanceof Object?Oe(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case ae(e):return yn(n,e,t);case pe(e):return Tn(n,e,t);case le(e):let i=[];for(let r of e.unionMembers||[]){let s=D(n,r,t);if(s.success)return u;i.push(s)}return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e,detailCause:i});case ue(e):for(let r of e.intersectionMembers||[]){let s=D(n,r,t);if(!s.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:s,value:n,type:e})}return u;case $e(e):return dn(n,e,t);case fe(e):switch(typeof n){case"string":return n===S(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 ce(e):return gn(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 Ae(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 Dn(n,e,t)}}o(D,"validateValue");function yn(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=D(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})}return u}o(yn,"validateArrayValue");function dn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(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})}return u}o(dn,"validateIndexedValue");function Tn(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 f=D(s,r,t);if(!f.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:f,value:n,type:e})}return u}o(Tn,"validateTupleValue");function gn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return 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=G(n,i.name),f=D(s,r,t-1);if(!f.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:f,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(gn,"validateProperties");function Dn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return 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 Ie)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!ze(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,I(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(Dn,"validateSimpleValue");function Oe(n,e,t=3){if(e.classDefinition&&!ze(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===b)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=L({},e);return delete i.classDefinition,D(n,i,t)}o(Oe,"validateClassInstance");function ze(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=T(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=T(n);return i?i.isSubClassOf(t.name):!1}o(ze,"valueInstanceOf");function p(n){var e,t,i;return typeof n=="string"?n:me(n)?n.classDefinition.name:n.interfaceName?n.interfaceName:n.typeAliasName?n.typeAliasName:ae(n)?p(n.arrayElementType)+"[]":n.isConstructor?"Class":n.isFunction?"Function":ce(n)?"Object":pe(n)?`(${n.tupleMembers.map(p).join(",")})`:le(n)?((e=n.unionMembers)==null?void 0:e.map(p).join(" | "))||"unknown":ue(n)?((t=n.intersectionMembers)==null?void 0:t.map(p).join(" & "))||"unknown":fe(n)?n.literalValue:$e(n)?`{ [${(i=n.index.keyType)!=null?i:"string"}]: ${p(n.index.valueType)} }`:n.name||"unknown"}o(p,"getTypeDisplayName");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 ke=Se,Le=new Map;function U(n){var e,t;if(!Le.has(n)){let i=(t=(e=M())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;Le.set(n,new ke(i))}return Le.get(n)}o(U,"getEnumDefinition");function bn(n){var e;return((e=U(n))==null?void 0:e.names)||[]}o(bn,"getEnumNames");function hn(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(hn,"getEnumValues");var Ee=new Map;function O(n){Ee.set(n.name,n)}o(O,"registerSpecialType");function Xe(n){return Ee.has(n)}o(Xe,"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 Ye(e,t)}});function Ye(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>S(s.literalValue)))!=null?r:[S(e.literalValue)];if(n.typeLiteralMembers)return en(n,s=>t.includes(s.name))}o(Ye,"getPickType");O({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return Ze(e,t)}});function Ze(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>S(s.literalValue)))!=null?r:[S(e.literalValue)];if(n.typeLiteralMembers)return en(n,s=>!t.includes(s.name))}o(Ze,"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 Ye(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 Ze(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=>nn(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 en(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?nn(t):void 0).filter(t=>!!t)}}o(en,"getFilterKeyType");function nn(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(nn,"copyPropertyDefinition");function Ve(n,e){var r,s,f;if(Xe(n))return e?ve(n,...e):ve(n);if(!je.has(n)){let a=(s=(r=M())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!a||!a.type)return;je.set(n,{name:n,type:a.type,genericParams:a.genericParams,fromLib:a.fromLib})}let t=je.get(n);if(!t)return;let i;if(t.genericParams&&e){let a={};for(let c=0;c<t.genericParams.length;c++){let m=t.genericParams[c];a[m]=e[c]}i=y({rawType:t.type,genericContext:a,genericArgs:e})}else i=y({rawType:t.type});return i.typeAliasName=n,{name:t.name,type:i,genericParams:t.genericParams,fromLib:(f=t.fromLib)!=null?f:!1}}o(Ve,"getTypeAliasDefinition");var je=new Map;var b={name:"any"},wn={name:"null"},Mn={name:"undefined"};function qe(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(qe,"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 xn(n){return!!n.generics}o(xn,"hasGenerics");function $e(n){return!!n.index}o($e,"isIndexType");function I(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return b;if(n==="null")return wn;if(n==="undefined")return Mn;if(n==="Function")return{isFunction:!0};let t=T(n);if(t)return e?v.create(t,e).type:t.type;if(ge.includes(n))return{name:n};if(Ie.map(f=>f.name).includes(n))return{name:n,generics:e};let i=V(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=Ve(n,e);return s?s.type:(d.debug&&console.warn(`${n} not registered...`),b)}o(I,"getTypeDefinition");var Ne=new Map;function y(n){let{rawType:e,genericContext:t,genericArgs:i}=n,r=Fe(e);if(e===void 0)return b;let s=Ne.get(r);if(s)return s;let f={};if(Ne.set(r,f),typeof e=="string")f=(t==null?void 0:t[e])||I(e,i)||b;else if(typeof e.literalValue=="string")f.literalValue=e.literalValue;else if(e.arrayElementType)Object.assign(f,{arrayElementType:y({rawType:e.arrayElementType,genericContext:t})});else if(e.unionMembers)Object.assign(f,{unionMembers:e.unionMembers.map(a=>y({rawType:a,genericContext:t}))});else if(e.intersectionMembers)Object.assign(f,{intersectionMembers:e.intersectionMembers.map(a=>y({rawType:a,genericContext:t}))});else if(e.tupleMembers)Object.assign(f,{tupleMembers:e.tupleMembers.map(a=>y({rawType:a,genericContext:t}))});else if(e.typeLiteralMembers)f.typeLiteralMembers=e.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y({rawType:a.type,genericContext:t,genericArgs:i})}));else if(e.generics){let a=e.generics[0],c=e.generics.slice(1).map(m=>y({rawType:m,genericContext:t}));Object.assign(f,y({rawType:a,genericContext:t,genericArgs:c}))}else e.index&&Object.assign(f,{index:{keyType:e.index.keyType?y({rawType:e.index.keyType,genericContext:t}):void 0,valueType:y({rawType:e.index.valueType,genericContext:t})}});return Object.keys(f).length===0&&(f=b),Ne.delete(r),f}o(y,"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:Ae,isArrayType:ae,isLiteralType:fe,isTypeLiteralType:ce,isUnionType:le,isIntersectionType:ue,isTupleType:pe,isClassDefinition:me,hasGenerics:xn};function x(n){if(typeof n=="string"){let e=Cn(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):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?I(n.name,n.generic.map(x)):n}o(x,"getTypeDef");function zt(n,e,t=5){let i=D(n,x(e),t);return i.success||d.validationErrorHandler(new w(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(zt,"assertType");function qt(n){return Rn(null,n)}o(qt,"isNullable");function Rn(n,e,t=5){return D(n,x(e),t).success}o(Rn,"isType");function Cn(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 g=m[1].trim(),h=i[g];return delete i[g],h}o(s,"getPlaceholder");function f(c,m,g,h){let R=0;for(;R<c.length;){let A=c.indexOf(m,R);if(A===-1)break;R=A+1;let k=c.indexOf(g,R);if(k===-1)throw new _e("Illegal type string");let W=c.substring(A+1,k),N=r(W);h?c=`${c.substring(0,A+1)}${N}${c.substring(k)}`:c=`${c.substring(0,A)}${N}${c.substring(k+1)}`}return c}o(f,"replaceBracket");function a(c){let m=c.trim(),g=o($=>$.trim(),"trim"),h=o($=>$.length!=0,"notEmpty");m=f(m,"(",")",!1),m=f(m,"<",">",!0);let R=s(m);if(R)return a(R);let A=m.split("|").map(g).filter(h);if(A.length>1)return{union:A.map(a)};let k=m.split("&").map(g).filter(h);if(k.length>1)return{intersection:k.map(a)};let W=m.match(/^\[(.*)]$/);if(W)return{tuple:W[1].split(",").map(g).filter(h).map(a)};let N=m.match(/^(.+)\[]$/);if(N)return{array:a(N[1])};let de=m.match(/^([^<]+)<(.+)>$/);if(de){let $=de[1].trim(),Te=a(de[2]);if(typeof Te=="string"){let an=Te.split(",").map(g).filter(h).map(a);return{name:$,generic:an}}else return{name:$,generic:[Te]}}return m}return o(a,"parseTypeRecursive"),a(n)}o(Cn,"parseType");var Je=class Je extends Error{};o(Je,"TypeParseError");var _e=Je;function tn(n,e,t=3){return d.validation?(e=e||n.constructor.name,Oe(n,x(e),t)):u}o(tn,"validateInstance");function ii(n,e,t=2){if(!d.validation)return u;for(let i=0;i<n.length;i++){let r=tn(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(ii,"validateArray");function ri(n,e,t=2){if(!d.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,f]=i[r],a=tn(f,e,t);if(!a.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:a,value:n,type:e})}return u}o(ri,"validateDictionary");var rn=Symbol("VALIDATE_WRAPPER"),mi=o((n,e,t)=>Pn(n,e,t),"ReflectValidate");function Pn(n,e,t){if(!d.validation)return;let i=t.value;if(typeof i!="function"||G(i,rn))return;let r=o(()=>{var c,m;return(m=(c=T(n))==null?void 0:c.methods)==null?void 0:m.find(g=>g.name===e)},"getMethodDef"),s=o(c=>on(n,r(),c),"validateArgs"),f=o(c=>In(n,r(),c),"validateReturn"),a=o(function(...c){s(c);let m=i.call(this,...c);return f(m)},"newFunc");a[rn]=i,t.value=a}o(Pn,"wrapValidateMethod");function on(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let f=t==null?void 0:t[s];if(f===void 0)if(!r.isOptional)d.validationErrorHandler(new w(`Illegal arguments for ${Ge(n.constructor.name,e)}: ${r.name} is not optional`));else return;let a=D(f,r.type||b,1);a.success||(console.error("validateResult",a),d.validationErrorHandler(new w(`Illegal arguments for ${Ge(n.constructor.name,e)}: ${r.name}: ${r.name} ${a.errorMessage}`,a)))})}o(on,"validateMethodParams");function In(n,e,t){var s;if(!e)return t;let i=o((f,a)=>{let c=D(f,a,5);return c.success||(console.error(c.errorStackFlow),d.validationErrorHandler(new w(`result for ${Ge(n.constructor.name,e)} doesn't match type ${a.name}:
4
- ${c.errorStackFlow}`,c))),f},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||b),t instanceof Promise?t.then(f=>i(f,r||b)):i(t,r||b)}o(In,"validateMethodReturnValue");function Ge(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Ge,"getMethodDescription");function yi(n,e,...t){let i=T(n);if(!i)return;let r=i.allMethods[e];if(r)return on(n,r,t),G(n,e).apply(n,t)}o(yi,"safeCall");var Be=class Be{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 D(s,i).success||this.exceptionHandler(new ye(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return 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(Be,"JSONTransfer");var sn=Be,He=class He extends Error{};o(He,"JSONError");var ye=He;var d={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 Li(){if(!d.debug)return M()}o(Li,"getDebugInfo");export{xe as FailureResult,ye as JSONError,sn as JSONTransfer,d as ReflectConfig,mi as ReflectValidate,Q as TypeDefinition,_e as TypeParseError,w as ValidationError,zt as assertType,l as failedResult,mn as getClassByName,T as getClassDefinition,Li as getDebugInfo,U as getEnumDefinition,bn as getEnumNames,hn as getEnumValues,pt as getErrorTraceMessages,V as getInterfaceDefinition,Ve as getTypeAliasDefinition,x as getTypeDef,qt as isNullable,Rn as isType,O as registerSpecialType,yi as safeCall,u as successResult,ii as validateArray,ri as validateDictionary,tn as validateInstance};
1
+ var Qe=Object.defineProperty,fn=Object.defineProperties;var cn=Object.getOwnPropertyDescriptors;var Ue=Object.getOwnPropertySymbols;var ln=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable;var Ke=(n,e,t)=>e in n?Qe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,L=(n,e)=>{for(var t in e||(e={}))ln.call(e,t)&&Ke(n,t,e[t]);if(Ue)for(var t of Ue(e))un.call(e,t)&&Ke(n,t,e[t]);return n},z=(n,e)=>fn(n,cn(e)),o=(n,e)=>Qe(n,"name",{value:e,configurable:!0});var ge=["string","number","boolean","bigint","symbol"],We={string:String,number:Number,boolean:Boolean,object:Object};var F=Reflect,_;function M(){if(_)return _;let n=F.__meta;if(n===void 0){d.validationErrorHandler(new w("No reflect meta found, reflect is disabled."));return}try{_=JSON.parse(pn(n))}catch(t){console.error(t),d.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")}),_}o(M,"getRawMeta");function pn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(pn,"decode");var 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 y({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 y({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 v&&e instanceof E&&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 G(n,e){if(n!==void 0)return n[e]}o(G,"getValue");function S(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(S,"trimQuotes");var be=class be{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y({rawType:this.rawDef.returnType})}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y({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(be,"MethodDefinition");var ne=be;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:y({rawType:t.type,genericContext:this.genericContext}),isOptional:t.isOptional})))||[]}get returnType(){return y({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 V(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 j=H,re=class re extends j{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,he=new Map;function V(n){var e,t;if(!he.has(n)){let i=(t=(e=M())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;he.set(n,new j(i))}return he.get(n)}o(V,"getInterfaceDefinition");var we=class we{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=>V(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 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(we,"ClassDefinition");var E=we,se=class se extends E{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 v=se,oe=new Map;function mn(n){var e;return((e=T(n))==null?void 0:e.jsClass)||We[n]}o(mn,"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=M())==null?void 0:e.classDef)||{}).find(([h,R])=>R===n))==null?void 0:t[0];return m?T(m):void 0;case"string":let g=n;if(!oe.has(g)){let h=(r=(i=M())==null?void 0:i.classes)==null?void 0:r[g];if(!h)return;let R=(a=(s=M())==null?void 0:s.classDef)==null?void 0:a[g];oe.set(g,new E(z(L({},h),{jsClass:R})))}return oe.get(g)}}o(T,"getClassDefinition");var Re=class Re{constructor(){this.success=!0}};o(Re,"SuccessResult");var Me=Re,Ce=class Ce{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.detailCause=i.detailCause,this.value=i.value,this.type=i.type,this.path=i.path}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
2
+ caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}, path: ${this.errorPath}`}get errorPath(){var t,i;let e="";return this.path!==void 0&&(typeof this.path=="string"?e=`.${this.path}`:e=`[${this.path}]`),e+((i=(t=this.cause)==null?void 0:t.errorPath)!=null?i:"")}};o(Ce,"FailureResult");var xe=Ce,p=new Me,l=o((n,e,t)=>new xe(n,e,t),"failedResult");function pt(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
+ -> `)}o(pt,"getErrorTraceMessages");var Pe=class Pe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Pe,"ValidationError");var w=Pe;var Ie=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){var i;if(!d.validation)return p;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 qe(e):return p;case me(e):return n instanceof Object?Oe(n,e,t):l(200,`declared as ${u(e)} but actually not an object`,{value:n,type:e});case ae(e):return yn(n,e,t);case pe(e):return Tn(n,e,t);case le(e):let r=[];for(let s of e.unionMembers||[]){let a=D(n,s,t);if(a.success)return p;r.push(a)}return e.unionMembers.length>1&&e.unionMembers.find(s=>s.name==="undefined")?((i=e.unionMembers.filter(s=>s.name!=="undefined"))==null?void 0:i.length)===1?l(321,`declared as ${u(e)} but not match`,{value:n,type:e,cause:r.find(s=>{var a;return((a=s.type)==null?void 0:a.name)!=="undefined"})}):l(321,`declared as ${u(e)} but all value not match`,{value:n,type:e,detailCause:r.filter(s=>{var a;return((a=s.type)==null?void 0:a.name)!=="undefined"})}):l(320,`declared as ${u(e)} but all value not match`,{value:n,type:e,detailCause:r});case ue(e):for(let s of e.intersectionMembers||[]){let a=D(n,s,t);if(!a.success)return l(330,`declared as ${u(e)} but all value not match`,{cause:a,value:n,type:e})}return p;case Ae(e):return dn(n,e,t);case fe(e):switch(typeof n){case"string":return n===S(e.literalValue)?p:l(110,`declared as string ${u(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?p:l(111,`declared as number ${u(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?p:l(112,`declared as bigint ${u(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?p:l(113,`declared as boolean ${u(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?p:n===e.literalValue?p:l(114,`declared as ${u(e)} but value not match`,{value:n,type:e})}case ce(e):return gn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?p:l(150,`declared as ${u(e)} but actually not`,{value:n,type:e});case $e(e):return n==null?l(120,`declared as ${u(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?p:l(121,`declared as ${u(e)} but actually ${typeof n}`,{value:n,type:e});default:return Dn(n,e,t)}}o(D,"validateValue");function yn(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${u(e)} but actually not`,{value:n,type:e});if(t===0)return p;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||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(yn,"validateArrayValue");function dn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${u(e)} but [${i}] not match`,{cause:s,value:n,type:e,path:i});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${u(e)} but [${i}] not match`,{cause:s,value:n,type:e,path:i})}return p}o(dn,"validateIndexedValue");function Tn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${u(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return p;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(s,r,t);if(!a.success)return l(311,`declared as ${u(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return p}o(Tn,"validateTupleValue");function gn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return p;if(i.name.startsWith("[")&&i.name.endsWith("]"))return p;if(t===0)return p;let r=i.type||b;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=G(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${u(r)}, but not match`,{cause:a,value:n,type:e,path:i.name})}return p}else return l(210,`declared as ${u(e)} but not an object`,{value:n,type:e})}o(gn,"validateProperties");function Dn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return p;if(n===void 0)return l(130,`declared as ${u(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${u(e)} but actually null`,{value:n,type:e});for(let s of Ie)if(i===s.name)return n instanceof s?p:l(132,`declared as ${u(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!ze(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(i),t);return r.success?p:l(134,`declared as ${u(e)} but actually not match`,{cause:r,value:n,type:e})}o(Dn,"validateSimpleValue");function Oe(n,e,t=3){if(e.classDefinition&&!ze(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,D(n,i,t)}o(Oe,"validateClassInstance");function ze(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=T(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=T(n);return i?i.isSubClassOf(t.name):!1}o(ze,"valueInstanceOf");function 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:Ae(n)?`{ [${(i=n.index.keyType)!=null?i:"string"}]: ${u(n.index.valueType)} }`:n.name||"unknown"}o(u,"getTypeDisplayName");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 ke=Se,Le=new Map;function U(n){var e,t;if(!Le.has(n)){let i=(t=(e=M())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;Le.set(n,new ke(i))}return Le.get(n)}o(U,"getEnumDefinition");function bn(n){var e;return((e=U(n))==null?void 0:e.names)||[]}o(bn,"getEnumNames");function hn(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(hn,"getEnumValues");var Ee=new Map;function O(n){Ee.set(n.name,n)}o(O,"registerSpecialType");function Xe(n){return Ee.has(n)}o(Xe,"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 Ye(e,t)}});function Ye(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>S(s.literalValue)))!=null?r:[S(e.literalValue)];if(n.typeLiteralMembers)return en(n,s=>t.includes(s.name))}o(Ye,"getPickType");O({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){let[e,t]=n;if(e)return Ze(e,t)}});function Ze(n,e){var i,r;if(!e)return;let t=(r=(i=e.unionMembers)==null?void 0:i.map(s=>S(s.literalValue)))!=null?r:[S(e.literalValue)];if(n.typeLiteralMembers)return en(n,s=>!t.includes(s.name))}o(Ze,"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 Ye(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 Ze(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=>nn(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 en(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?nn(t):void 0).filter(t=>!!t)}}o(en,"getFilterKeyType");function nn(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(nn,"copyPropertyDefinition");function Ve(n,e){var r,s,a;if(Xe(n))return e?ve(n,...e):ve(n);if(!je.has(n)){let f=(s=(r=M())==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=y({rawType:t.type,genericContext:f,genericArgs:e})}else i=y({rawType:t.type});return i.typeAliasName=n,{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(Ve,"getTypeAliasDefinition");var je=new Map;var b={name:"any"},wn={name:"null"},Mn={name:"undefined"};function qe(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(qe,"isIgnoredType");function $e(n){return!!(n.name&&ge.includes(n.name))}o($e,"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 xn(n){return!!n.generics}o(xn,"hasGenerics");function Ae(n){return!!n.index}o(Ae,"isIndexType");function I(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return b;if(n==="null")return wn;if(n==="undefined")return Mn;if(n==="Function")return{isFunction:!0};let t=T(n);if(t)return e?v.create(t,e).type:t.type;if(ge.includes(n))return{name:n};if(Ie.map(a=>a.name).includes(n))return{name:n,generics:e};let i=V(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=Ve(n,e);return s?s.type:(d.debug&&console.warn(`${n} not registered...`),b)}o(I,"getTypeDefinition");var Ne=new Map;function y(n){let{rawType:e,genericContext:t,genericArgs:i}=n,r=Fe(e);if(e===void 0)return b;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])||I(e,i)||b;else if(typeof e.literalValue=="string")a.literalValue=e.literalValue;else if(e.arrayElementType)Object.assign(a,{arrayElementType:y({rawType:e.arrayElementType,genericContext:t})});else if(e.unionMembers)Object.assign(a,{unionMembers:e.unionMembers.map(f=>y({rawType:f,genericContext:t}))});else if(e.intersectionMembers)Object.assign(a,{intersectionMembers:e.intersectionMembers.map(f=>y({rawType:f,genericContext:t}))});else if(e.tupleMembers)Object.assign(a,{tupleMembers:e.tupleMembers.map(f=>y({rawType:f,genericContext:t}))});else if(e.typeLiteralMembers)a.typeLiteralMembers=e.typeLiteralMembers.map(f=>({name:f.name,isOptional:!!f.isOptional,type:y({rawType:f.type,genericContext:t,genericArgs:i})}));else if(e.generics){let f=e.generics[0],c=e.generics.slice(1).map(m=>y({rawType:m,genericContext:t}));Object.assign(a,y({rawType:f,genericContext:t,genericArgs:c}))}else e.index&&Object.assign(a,{index:{keyType:e.index.keyType?y({rawType:e.index.keyType,genericContext:t}):void 0,valueType:y({rawType:e.index.valueType,genericContext:t})}});return Object.keys(a).length===0&&(a=b),Ne.delete(r),a}o(y,"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:$e,isArrayType:ae,isLiteralType:fe,isTypeLiteralType:ce,isUnionType:le,isIntersectionType:ue,isTupleType:pe,isClassDefinition:me,hasGenerics:xn};function x(n){if(typeof n=="string"){let e=Cn(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):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?I(n.name,n.generic.map(x)):n}o(x,"getTypeDef");function zt(n,e,t=5){let i=D(n,x(e),t);return i.success||d.validationErrorHandler(new w(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(zt,"assertType");function qt(n){return Rn(null,n)}o(qt,"isNullable");function Rn(n,e,t=5){return D(n,x(e),t).success}o(Rn,"isType");function Cn(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 g=m[1].trim(),h=i[g];return delete i[g],h}o(s,"getPlaceholder");function a(c,m,g,h){let R=0;for(;R<c.length;){let $=c.indexOf(m,R);if($===-1)break;R=$+1;let k=c.indexOf(g,R);if(k===-1)throw new _e("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(),g=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(g).filter(h);if($.length>1)return{union:$.map(f)};let k=m.split("&").map(g).filter(h);if(k.length>1)return{intersection:k.map(f)};let W=m.match(/^\[(.*)]$/);if(W)return{tuple:W[1].split(",").map(g).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 an=Te.split(",").map(g).filter(h).map(f);return{name:A,generic:an}}else return{name:A,generic:[Te]}}return m}return o(f,"parseTypeRecursive"),f(n)}o(Cn,"parseType");var Je=class Je extends Error{};o(Je,"TypeParseError");var _e=Je;function tn(n,e,t=3){return d.validation?(e=e||n.constructor.name,Oe(n,x(e),t)):p}o(tn,"validateInstance");function ii(n,e,t=2){if(!d.validation)return p;for(let i=0;i<n.length;i++){let r=tn(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(ii,"validateArray");function ri(n,e,t=2){if(!d.validation)return p;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],f=tn(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(ri,"validateDictionary");var rn=Symbol("VALIDATE_WRAPPER"),mi=o((n,e,t)=>Pn(n,e,t),"ReflectValidate");function Pn(n,e,t){if(!d.validation)return;let i=t.value;if(typeof i!="function"||G(i,rn))return;let r=o(()=>{var c,m;return(m=(c=T(n))==null?void 0:c.methods)==null?void 0:m.find(g=>g.name===e)},"getMethodDef"),s=o(c=>on(n,r(),c),"validateArgs"),a=o(c=>In(n,r(),c),"validateReturn"),f=o(function(...c){s(c);let m=i.call(this,...c);return a(m)},"newFunc");f[rn]=i,t.value=f}o(Pn,"wrapValidateMethod");function on(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)d.validationErrorHandler(new w(`Illegal arguments for ${Ge(n.constructor.name,e)}: ${r.name} is not optional`));else return;let f=D(a,r.type||b,1);f.success||(console.error("validateResult",f),d.validationErrorHandler(new w(`Illegal arguments for ${Ge(n.constructor.name,e)}: ${r.name}: ${r.name} ${f.errorMessage}`,f)))})}o(on,"validateMethodParams");function In(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),d.validationErrorHandler(new w(`result for ${Ge(n.constructor.name,e)} doesn't match type ${f.name}:
4
+ ${c.errorStackFlow}`,c))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||b),t instanceof Promise?t.then(a=>i(a,r||b)):i(t,r||b)}o(In,"validateMethodReturnValue");function Ge(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Ge,"getMethodDescription");function yi(n,e,...t){let i=T(n);if(!i)return;let r=i.allMethods[e];if(r)return on(n,r,t),G(n,e).apply(n,t)}o(yi,"safeCall");var Be=class Be{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 D(s,i).success||this.exceptionHandler(new ye(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return 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(Be,"JSONTransfer");var sn=Be,He=class He extends Error{};o(He,"JSONError");var ye=He;var d={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 Li(){if(!d.debug)return M()}o(Li,"getDebugInfo");export{xe as FailureResult,ye as JSONError,sn as JSONTransfer,d as ReflectConfig,mi as ReflectValidate,Q as TypeDefinition,_e as TypeParseError,w as ValidationError,zt as assertType,l as failedResult,mn as getClassByName,T as getClassDefinition,Li as getDebugInfo,U as getEnumDefinition,bn as getEnumNames,hn as getEnumValues,pt as getErrorTraceMessages,V as getInterfaceDefinition,Ve as getTypeAliasDefinition,x as getTypeDef,qt as isNullable,Rn as isType,O as registerSpecialType,yi as safeCall,p as successResult,ii as validateArray,ri as validateDictionary,tn as validateInstance};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-ref-kit",
3
- "version": "1.1.21",
3
+ "version": "1.1.22",
4
4
  "description": "Type reflection and validation library for TypeScript",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -12,14 +12,17 @@ export declare class FailureResult {
12
12
  readonly detailCause?: FailureResult[];
13
13
  readonly value?: unknown;
14
14
  readonly type?: TypeDefinition | Type;
15
+ readonly path?: string | number;
15
16
  constructor(errorCode: number, errorDesc: string, detail: {
16
17
  cause?: FailureResult;
17
18
  detailCause?: FailureResult[];
18
19
  value?: unknown;
19
20
  type?: TypeDefinition | Type;
21
+ path?: string | number;
20
22
  });
21
23
  get errorStackFlow(): string;
22
24
  get errorMessage(): string;
25
+ get errorPath(): string;
23
26
  }
24
27
  export declare const successResult: SuccessResult;
25
28
  export declare const failedResult: (errorCode: number, errorDesc: string, detail: {
@@ -27,6 +30,7 @@ export declare const failedResult: (errorCode: number, errorDesc: string, detail
27
30
  detailCause?: FailureResult[];
28
31
  value?: unknown;
29
32
  type?: TypeDefinition | Type;
33
+ path?: string | number;
30
34
  }) => FailureResult;
31
35
  export declare function getErrorTraceMessages(failureResult: FailureResult): string;
32
36
  export declare class ValidationError extends Error {