ts-ref-kit 1.1.7 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +4 -5
- package/dist/cjs/parser/index.cjs +2 -2
- package/dist/esm/index.js +4 -5
- package/dist/esm/parser/index.js +2 -2
- package/package.json +1 -1
- package/types/parser/reflect-loader.d.ts +1 -1
- package/types/raw.d.ts +20 -8
- package/types/reflect-types/ClassDefinition.d.ts +8 -5
- package/types/reflect-types/EnumDefinition.d.ts +1 -0
- package/types/reflect-types/InterfaceDefinition.d.ts +1 -0
- package/types/reflect-types/MethodDefinition.d.ts +2 -6
- package/types/reflect-types/PropertyDefinition.d.ts +1 -1
- package/types/reflect-types/TypeAliasDefinition.d.ts +1 -0
- package/types/reflect-types/TypeDefinition.d.ts +12 -2
- package/types/reflect-types/index.d.ts +1 -0
- package/types/reflect-types/json/JSONTransfer.d.ts +11 -0
- package/types/reflect-types/json/index.d.ts +1 -0
- package/types/reflect-types/json/types.d.ts +8 -0
- package/types/reflect-types/package.d.ts +12 -5
- package/types/reflect-types/raw-meta.d.ts +1 -1
- package/types/reflect-types/special-types.d.ts +1 -1
- package/types/reflect-types/validates/Type.d.ts +2 -0
- package/types/reflect-types/validates/ValidateResult.d.ts +30 -12
- package/types/reflect-types/validates/method-validate.d.ts +1 -1
- package/types/reflect-types/validates/value-validate.d.ts +1 -2
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
var
|
|
2
|
-
caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(
|
|
3
|
-
-> `)}o(cn,"getErrorTraceMessages");var we=[Promise,Date,Map,Set,Error,Function];function D(n,e,t=1){switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`);case _e(e):return u;case pe(e):return n instanceof Object?Me(n,e,t):l(200,`declared as ${p(e)} but actually not an object`);case se(e):return ln(n,e,t);case ue(e):return un(n,e,t);case le(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`);case fe(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,r)}return u;case Re(e):return fn(n,e,t);case ae(e):switch(typeof n){case"string":return n===yn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`);case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`);case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`);case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`);default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`)}case ce(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`);case xe(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`);default:return mn(n,e,t)}}o(D,"validateValue");function ln(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`);if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||T,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,s)}return u}o(ln,"validateArrayValue");function fn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null");if(typeof n=="object")return l(410,`declared as indexedType but actually is ${typeof n}`);for(let i of Object.values(n)){let r=D(i,e.indexElementType,t-1);if(!r.success)return l(420,`declared as ${p(e)} but actually not match`,r)}return u}o(fn,"validateIndexedValue");function un(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`);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 c=D(n[i],r,t);if(!c.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,c)}return u}o(un,"validateTupleValue");function pn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if(i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||T;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=F(n,i.name),c=D(s,r,t-1);if(!c.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,c)}return u}else return l(210,`declared as ${p(e)} but not an object`)}o(pn,"validateProperties");function mn(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`);if(n===null)return i==="null"?u:l(131,`declared as ${p(e)} but actually null`);for(let s of we)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`);if(n instanceof Object&&!Ne(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`);if(t==0)return u;let r=D(n,w(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,r)}o(mn,"validateSimpleValue");function Me(n,e,t=3){if(e.classDefinition&&!Ne(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`);if(e.name!=="any"&&e===T)return l(202,`${p(e)} not defined`);let i=k({},e);return delete i.classDefinition,D(n,i,t)}o(Me,"validateClassInstance");function Ne(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=y(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=y(n);return i?i.isSubClassOf(t.name):!1}o(Ne,"valueInstanceOf");function yn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(yn,"trimQuotes");function p(n){var e,t,i,r;return typeof n=="string"?n:pe(n)?n.classDefinition.name:se(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":ce(n)?"Object":ue(n)?`(${n.tupleMembers.map(p).join(",")})`:le(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":fe(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":ae(n)?n.literalValue:Re(n)?`{ [key]: ${((r=n.indexElementType)==null?void 0:r.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var Ce=class Ce{constructor(e){this.name=e.name,this.members=new Map,e.members.forEach(t=>{let i=t.initializer===void 0?{name:"number"}:{literalValue:t.initializer};this.members.set(t.name,i)})}get type(){return{name:this.name,unionMembers:Array.from(this.members.values())}}get names(){return Array.from(this.members.keys())}};o(Ce,"EnumDefinition");var _=Ce,Pe=new Map;function S(n){var e;if(!Pe.has(n)){let t=(e=h().enums)==null?void 0:e[n];if(!t)return;Pe.set(n,new _(t))}return Pe.get(n)}o(S,"getEnumDefinition");function Ge(n){var e;return((e=S(n))==null?void 0:e.names)||[]}o(Ge,"getEnumNames");function Be(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=S(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(Be,"getEnumValues");var dn=["Partial","Required","Readonly","Pick","Omit","Extract","Exclude"];function Ue(n){return typeof n=="string"&&dn.includes(n)}o(Ue,"isSpecialType");function Dn(n,e,t){let i;switch(n){case"Partial":i=Tn(e);break;case"Required":i=gn(e);break;case"Readonly":i=bn(e);break;case"Pick":i=qe(e,t);break;case"Omit":i=ze(e,t);break;case"Extract":i=hn(e,t);break;case"Exclude":i=wn(e,t);break}return i}o(Dn,"getSpecialType");function Je(n,e){let[t,i]=e,r,s=["Pick","Omit","Extract","Exclude"].includes(n)?["T"]:["T","K"];return r=Dn(n,t,i),r?{name:n,type:r,genericParams:s}:void 0}o(Je,"getSpecialTypeAlias");function G(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>t.copy(e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>G(t,e))}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>G(t,e))}:void 0}o(G,"getMappedType");function We(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?t.copy():void 0).filter(t=>!!t)}}o(We,"getFilterKeyType");function Tn(n){return G(n,e=>e.isOptional=!0)}o(Tn,"getPartialType");function gn(n){return G(n,e=>e.isOptional=!1)}o(gn,"getRequiredType");function bn(n){return G(n,e=>e.isReadonly=!0)}o(bn,"getReadonlyType");function qe(n,e){var i;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return We(n,r=>r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))}o(qe,"getPickType");function ze(n,e){var i;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return We(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(ze,"getOmitType");function hn(n,e){if(n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return qe(n,t)}}o(hn,"getExtractType");function wn(n,e){if(n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return ze(n,t)}}o(wn,"getExcludeType");function me(n,e){var r;if(Ue(n))return!e||!e[0]?void 0:Je(n,[e[0],e[1]]);if(!Ee.has(n)){let s=(r=h().typeAliases)==null?void 0:r[n];if(!s||!s.type)return;Ee.set(n,{name:n,type:s.type,genericParams:s.genericParams})}let t=Ee.get(n),i;if(t.genericParams&&e){let s={};for(let c=0;c<t.genericParams.length;c++){let f=t.genericParams[c];s[f]=e[c]}i=d(t.type,s,e)}else i=d(t.type);return{name:t.name,type:i,genericParams:t.genericParams}}o(me,"getTypeAliasDefinition");var Ee=new Map;var T={name:"any"},Mn={name:"null"};function _e(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(_e,"isIgnoredType");function xe(n){return!!(n.name&&De.includes(n.name))}o(xe,"isPrimitiveType");function se(n){return!!n.arrayElementType}o(se,"isArrayType");function ae(n){return!!n.literalValue}o(ae,"isLiteralType");function ce(n){return!!n.typeLiteralMembers}o(ce,"isTypeLiteralType");function le(n){return!!n.unionMembers}o(le,"isUnionType");function fe(n){return!!n.intersectionMembers}o(fe,"isIntersectionType");function ue(n){return!!n.tupleMembers}o(ue,"isTupleType");function pe(n){return!!n.classDefinition}o(pe,"isClassDefinition");function xn(n){return!!n.generics}o(xn,"hasGenerics");function Re(n){return!!n.indexElementType}o(Re,"isIndexType");function w(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return T;if(n==="null")return Mn;let t=y(n);if(t)return e?re.create(t,e).type:t.type;if(De.includes(n))return{name:n};if(we.map(c=>c.name).includes(n))return{name:n,generics:e};let i=I(n);if(i)return e?ee.create(i,e).type:i.type;let r=S(n);if(r)return r.type;let s=me(n,e);return s?s.type:T}o(w,"getTypeDefinition");var $e=new Map;function d(n,e,t){let i=Ie(n);if(n===void 0)return T;let r=$e.get(i);if(r)return r;let s={};if($e.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||w(n,t)||T;else if(n.arrayElementType)Object.assign(s,{arrayElementType:d(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(c=>d(c,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(c=>d(c,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(c=>d(c,e))});else if(n.generics){let c=n.generics[0],f=n.generics.slice(1).map(a=>d(a,e));Object.assign(s,d(c,e,f))}else n.indexElementType&&Object.assign(s,{indexElementType:d(n.indexElementType,e)});return Object.keys(s).length===0&&(s=T),$e.delete(i),s}o(d,"fillType");function Ie(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Ie).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Ie(n[t])).join(",")+"}"}o(Ie,"stableStringify");var Ke={isPrimitiveType:xe,isArrayType:se,isLiteralType:ae,isTypeLiteralType:ce,isUnionType:le,isIntersectionType:fe,isTupleType:ue,isClassDefinition:pe,hasGenerics:xn};function b(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"?w(n):b(e)}return"array"in n?{arrayElementType:b(n.array)}:"union"in n?{unionMembers:n.union.map(b)}:"intersection"in n?{intersectionMembers:n.intersection.map(b)}:"tuple"in n?{tupleMembers:n.tuple.map(b)}:"generic"in n?w(n.name,n.generic.map(b)):n}o(b,"getTypeDef");function Rn(n,e,t=5){let i=D(n,b(e),t);if(!i.success){console.error(`assert failed with type: ${e}
|
|
4
|
-
${
|
|
5
|
-
${a.errorStackFlow}`);return c},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||T),t instanceof Promise?t.then(c=>i(c,r||T)):i(t,r||T)}o(On,"validateMethodReturnValue");function Oe(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Oe,"getMethodDescription");function jn(n,e,...t){let i=y(n);if(!i)return;let r=i.allMethods[e];if(r)return Xe(n,r,t),F(n,e).apply(n,t)}o(jn,"safeCall");0&&(module.exports={ClassDefinition,EnumDefinition,InterfaceDefinition,ReflectValidate,TypeDefinition,ValidateResult,assertType,failedResult,getClassByName,getClassDefinition,getEnumDefinition,getEnumNames,getEnumValues,getErrorTraceMessages,getInterfaceDefinition,getTypeAliasDefinition,getTypeDef,isNullable,isType,safeCall,successResult,validateArray,validateDictionary,validateInstance});
|
|
1
|
+
"use strict";var N=Object.defineProperty,un=Object.defineProperties,pn=Object.getOwnPropertyDescriptor,mn=Object.getOwnPropertyDescriptors,yn=Object.getOwnPropertyNames,He=Object.getOwnPropertySymbols;var We=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable;var Ue=(n,e,t)=>e in n?N(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,S=(n,e)=>{for(var t in e||(e={}))We.call(e,t)&&Ue(n,t,e[t]);if(He)for(var t of He(e))dn.call(e,t)&&Ue(n,t,e[t]);return n},qe=(n,e)=>un(n,mn(e)),o=(n,e)=>N(n,"name",{value:e,configurable:!0});var Dn=(n,e)=>{for(var t in e)N(n,t,{get:e[t],enumerable:!0})},Tn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of yn(e))!We.call(n,r)&&r!==t&&N(n,r,{get:()=>e[r],enumerable:!(i=pn(e,r))||i.enumerable});return n};var bn=n=>Tn(N({},"__esModule",{value:!0}),n);var Wn={};Dn(Wn,{ClassDefinition:()=>O,EnumDefinition:()=>H,InterfaceDefinition:()=>I,JSONError:()=>W,JSONTransfer:()=>Je,ReflectConfig:()=>$,ReflectValidate:()=>Gn,TypeDefinition:()=>V,TypeParseError:()=>De,ValidationError:()=>C,assertType:()=>vn,failedResult:()=>f,getClassByName:()=>Qe,getClassDefinition:()=>d,getEnumDefinition:()=>L,getEnumNames:()=>Ze,getEnumValues:()=>en,getErrorTraceMessages:()=>gn,getInterfaceDefinition:()=>E,getTypeAliasDefinition:()=>de,getTypeDef:()=>h,isNullable:()=>Nn,isType:()=>an,safeCall:()=>Un,successResult:()=>u,validateArray:()=>_n,validateDictionary:()=>Jn,validateInstance:()=>Fe});module.exports=bn(Wn);var ge=["string","number","boolean","bigint","symbol"],ze={string:String,number:Number,boolean:Boolean,object:Object};var Q=class Q{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get isReadonly(){return!!this.rawDef.isReadonly}get isOptional(){return!!this.rawDef.isOptional}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get accessor(){return this.rawDef.accessor}get type(){return y(this.rawDef.type)}copy(e){let t=Ke(this.rawDef);return e&&e(t),new Q(t)}};o(Q,"PropertyDefinition");var z=Q;function Y(n){return new z(n)}o(Y,"fillProperty");var X=class X extends z{static create(e,t){let i=M(X,e);return i.genericContext=t,i}get type(){return y(this.rawDef.type,this.genericContext)}};o(X,"GenericProperty");var K=X;function M(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(M,"createInstance");function Z(n,e){n.properties=e.properties.map(t=>K.create(t,n.genericContext)),n.methods=e.methods.map(t=>F.create(t,n.genericContext)),n instanceof j&&e instanceof O&&e.constructorMethod!==void 0&&(n.constructorMethod=F.create(e.constructorMethod,n.genericContext))}o(Z,"buildPropertiesAndMethods");function he(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(he,"toDictionary");function ee(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(ee,"mapNotNull");function _(n,e){if(n!==void 0)return n[e]}o(_,"getValue");function Ke(n){return JSON.parse(JSON.stringify(n))}o(Ke,"copy");var we=class we{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(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(we,"MethodDefinition");var ne=we;function J(n){return new ne(n)}o(J,"fillMethod");var te=class te extends ne{static create(e,t){let i=M(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(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return y(this.rawDef.returnType,this.genericContext)}};o(te,"GenericMethod");var F=te;var G=Reflect,B;function x(){if(B)return B;let n=G.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{B=JSON.parse(atob(n))}catch(t){console.error(t),console.warn("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");var re=class re{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(J))||[],this.properties=((i=e.properties)==null?void 0:i.map(Y))||[],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 E(e)||((t=d(e))==null?void 0:t.type)||R(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof re?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){let e={};this.properties.forEach(i=>e[i.name]=i);let t={name:this.name,typeLiteralMembers:Object.values(e),fromLib:this.fromLib};return this.allImplementations.length>0?{intersectionMembers:[t,...this.allImplementations.map(i=>"type"in i?i.type:i)]}:t}toString(){return`interface ${this.name}`}};o(re,"InterfaceDefinition");var I=re,oe=class oe extends I{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=M(oe,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(oe,"GenericInterface");var ie=oe,Me=new Map;function E(n){var e,t;if(!Me.has(n)){let i=(t=(e=x())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;Me.set(n,new I(i))}return Me.get(n)}o(E,"getInterfaceDefinition");var xe=class xe{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=d(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?J(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(J))||[],this.properties=((i=e.properties)==null?void 0:i.map(Y))||[],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=d(this.superClassName);t&&Object.assign(e,S({},t.allMethods))}return Object.assign(e,S({},he(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},he(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:ee(this._implementationNames,e=>E(e)||R(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof I?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=d(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(xe,"ClassDefinition");var O=xe,ae=class ae extends O{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=M(ae,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(ae,"GenericClass");var j=ae,se=new Map;function Qe(n){var e;return((e=d(n))==null?void 0:e.jsClass)||ze[n]}o(Qe,"getClassByName");function d(n){var e,t,i,r,s,c;switch(typeof n){case"object":return d(n.constructor);case"function":let l=d(n.name);if(l)return l;let a=Array.from(se.values()).find(g=>g.jsClass===n);if(a)return a;let m=(t=Object.entries(((e=x())==null?void 0:e.classDef)||{}).find(([g,w])=>w===n))==null?void 0:t[0];return m?d(m):void 0;case"string":let D=n;if(!se.has(D)){let g=(r=(i=x())==null?void 0:i.classes)==null?void 0:r[D];if(!g)return;let w=(c=(s=x())==null?void 0:s.classDef)==null?void 0:c[D];se.set(D,new O(qe(S({},g),{jsClass:w})))}return se.get(D)}}o(d,"getClassDefinition");var Pe=class Pe{constructor(){this.success=!0}};o(Pe,"SuccessResult");var Re=Pe,ke=class ke{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,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(ke,"FailureResult");var Ce=ke,u=new Re,f=o((n,e,t)=>new Ce(n,e,t),"failedResult");function gn(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
|
|
3
|
+
-> `)}o(gn,"getErrorTraceMessages");var Oe=class Oe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Oe,"ValidationError");var C=Oe,$={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler")};var Ie=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function T(n,e,t=1){switch(!0){case e.name==="undefined":return n===void 0?u:f(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:f(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case Ye(e):return u;case ye(e):return n instanceof Object?$e(n,e,t):f(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case ce(e):return hn(n,e,t);case me(e):return Mn(n,e,t);case ue(e):for(let i of e.unionMembers||[])if(T(n,i,t).success)return u;return f(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case pe(e):for(let i of e.intersectionMembers||[]){let r=T(n,i,t);if(!r.success)return f(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case Ee(e):return wn(n,e,t);case fe(e):switch(typeof n){case"string":return n===Cn(e.literalValue)?u:f(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:f(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:f(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:f(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:f(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case le(e):return xn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:f(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case Ae(e):return n==null?f(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:f(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return Rn(n,e,t)}}o(T,"validateValue");function hn(n,e,t=1){if(!Array.isArray(n))return f(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=T(r,e.arrayElementType||b,t-1);if(!s.success)return f(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(hn,"validateArrayValue");function wn(n,e,t=1){if(n===null)return f(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return f(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return f(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=T(r,e.index.valueType,t-1);if(!s.success)return f(420,`declared as ${p(e)} but actually not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=T(i,e.index.keyType,t-1),!s.success))return f(421,`declared as ${p(e)} but actually not match`,{cause:s,value:n,type:e})}return u}o(wn,"validateIndexedValue");function Mn(n,e,t=1){if(!Array.isArray(n))return f(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 c=T(n[i],r,t);if(!c.success)return f(311,`declared as ${p(e)} but not all values in tuple match`,{cause:c,value:n,type:e})}return u}o(Mn,"validateTupleValue");function xn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if(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=_(n,i.name),c=T(s,r,t-1);if(!c.success)return f(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:c,value:n,type:e})}return u}else return f(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(xn,"validateProperties");function Rn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return f(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return f(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:f(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Xe(n,i))return f(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=T(n,R(i),t);return r.success?u:f(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(Rn,"validateSimpleValue");function $e(n,e,t=3){if(e.classDefinition&&!Xe(n,e.classDefinition.name))return f(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===b)return f(202,`${p(e)} not defined`,{value:n,type:e});let i=S({},e);return delete i.classDefinition,T(n,i,t)}o($e,"validateClassInstance");function Xe(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Xe,"valueInstanceOf");function Cn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(Cn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:ye(n)?n.classDefinition.name:ce(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":le(n)?"Object":me(n)?`(${n.tupleMembers.map(p).join(",")})`:ue(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":pe(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":fe(n)?n.literalValue:Ee(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`: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 H=je,Se=new Map;function L(n){var e,t;if(!Se.has(n)){let i=(t=(e=x())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;Se.set(n,new H(i))}return Se.get(n)}o(L,"getEnumDefinition");function Ze(n){var e;return((e=L(n))==null?void 0:e.names)||[]}o(Ze,"getEnumNames");function en(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=L(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(en,"getEnumValues");var Pn=["Partial","Required","Readonly","Record","Pick","Omit","Extract","Exclude"];function nn(n){return typeof n=="string"&&Pn.includes(n)}o(nn,"isSpecialType");function kn(n,e,t){let i;switch(n){case"Partial":i=On(e);break;case"Required":i=In(e);break;case"Readonly":i=$n(e);break;case"Record":i=An(e,t);break;case"Pick":i=on(e,t);break;case"Omit":i=sn(e,t);break;case"Extract":i=En(e,t);break;case"Exclude":i=Sn(e,t);break}return i}o(kn,"getSpecialType");function tn(n,e){let[t,i]=e,r,s=["Pick","Omit","Extract","Exclude"].includes(n)?["T"]:["T","K"];return r=kn(n,t,i),r?{name:n,type:r,genericParams:s,fromLib:!0}:void 0}o(tn,"getSpecialTypeAlias");function U(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>t.copy(e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>U(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>U(t,e)).filter(t=>t!==void 0)}:void 0}o(U,"getMappedType");function rn(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?t.copy():void 0).filter(t=>!!t)}}o(rn,"getFilterKeyType");function On(n){return U(n,e=>e.isOptional=!0)}o(On,"getPartialType");function In(n){return U(n,e=>e.isOptional=!1)}o(In,"getRequiredType");function $n(n){return U(n,e=>e.isReadonly=!0)}o($n,"getReadonlyType");function An(n,e){return{index:{keyType:n,valueType:e!=null?e:b}}}o(An,"getRecordType");function on(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return rn(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(on,"getPickType");function sn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return rn(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(sn,"getOmitType");function En(n,e){if(e&&n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return on(n,t)}}o(En,"getExtractType");function Sn(n,e){if(e&&n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return sn(n,t)}}o(Sn,"getExcludeType");function de(n,e){var r,s,c;if(nn(n))return!e||!e[0]?void 0:tn(n,[e[0],e[1]]);if(!Le.has(n)){let l=(s=(r=x())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!l||!l.type)return;Le.set(n,{name:n,type:l.type,genericParams:l.genericParams,fromLib:l.fromLib})}let t=Le.get(n);if(!t)return;let i;if(t.genericParams&&e){let l={};for(let a=0;a<t.genericParams.length;a++){let m=t.genericParams[a];l[m]=e[a]}i=y(t.type,l,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(c=t.fromLib)!=null?c:!1}}o(de,"getTypeAliasDefinition");var Le=new Map;var b={name:"any"},jn={name:"null"},Ln={name:"undefined"};function Ye(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(Ye,"isIgnoredType");function Ae(n){return!!(n.name&&ge.includes(n.name))}o(Ae,"isPrimitiveType");function ce(n){return!!n.arrayElementType}o(ce,"isArrayType");function fe(n){return!!n.literalValue}o(fe,"isLiteralType");function le(n){return!!n.typeLiteralMembers}o(le,"isTypeLiteralType");function ue(n){return!!n.unionMembers}o(ue,"isUnionType");function pe(n){return!!n.intersectionMembers}o(pe,"isIntersectionType");function me(n){return!!n.tupleMembers}o(me,"isTupleType");function ye(n){return!!n.classDefinition}o(ye,"isClassDefinition");function Vn(n){return!!n.generics}o(Vn,"hasGenerics");function Ee(n){return!!n.index}o(Ee,"isIndexType");function R(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return b;if(n==="null")return jn;if(n==="undefined")return Ln;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?j.create(t,e).type:t.type;if(ge.includes(n))return{name:n};if(Ie.map(c=>c.name).includes(n))return{name:n,generics:e};let i=E(n);if(i)return i.fromLib?{name:n,generics:e}:e?ie.create(i,e).type:i.type;let r=L(n);if(r)return r.type;let s=de(n,e);return s?s.type:b}o(R,"getTypeDefinition");var Ve=new Map;function y(n,e,t){let i=ve(n);if(n===void 0)return b;let r=Ve.get(i);if(r)return r;let s={};if(Ve.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||R(n,t)||b;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(c=>y(c,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(c=>y(c,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(c=>y(c,e))});else if(n.generics){let c=n.generics[0],l=n.generics.slice(1).map(a=>y(a,e));Object.assign(s,y(c,e,l))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=b),Ve.delete(i),s}o(y,"fillType");function ve(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(ve).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+ve(n[t])).join(",")+"}"}o(ve,"stableStringify");var V={isPrimitiveType:Ae,isArrayType:ce,isLiteralType:fe,isTypeLiteralType:le,isUnionType:ue,isIntersectionType:pe,isTupleType:me,isClassDefinition:ye,hasGenerics:Vn};function h(n){if(typeof n=="string"){let e=Fn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?R(n):h(e)}return"array"in n?{arrayElementType:h(n.array)}:"union"in n?{unionMembers:n.union.map(h)}:"intersection"in n?{intersectionMembers:n.intersection.map(h)}:"tuple"in n?{tupleMembers:n.tuple.map(h)}:"generic"in n?R(n.name,n.generic.map(h)):n}o(h,"getTypeDef");function vn(n,e,t=5){let i=T(n,h(e),t);return i.success||$.validationErrorHandler(new C(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(vn,"assertType");function Nn(n){return an(null,n)}o(Nn,"isNullable");function an(n,e,t=5){return T(n,h(e),t).success}o(an,"isType");function Fn(n){let e=0,t="%%",i={};function r(a){let m=`${t}${e++}`;return i[m]=a,m}o(r,"addPlaceholder");function s(a){let m=a.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let D=m[1].trim(),g=i[D];return delete i[D],g}o(s,"getPlaceholder");function c(a,m,D,g){let w=0;for(;w<a.length;){let P=a.indexOf(m,w);if(P===-1)break;w=P+1;let A=a.indexOf(D,w);if(A===-1)throw new De("Illegal type string");let q=a.substring(P+1,A),v=r(q);g?a=`${a.substring(0,P+1)}${v}${a.substring(A)}`:a=`${a.substring(0,P)}${v}${a.substring(A+1)}`}return a}o(c,"replaceBracket");function l(a){let m=a.trim(),D=o(k=>k.trim(),"trim"),g=o(k=>k.length!=0,"notEmpty");m=c(m,"(",")",!1),m=c(m,"<",">",!0);let w=s(m);if(w)return l(w);let P=m.split("|").map(D).filter(g);if(P.length>1)return{union:P.map(l)};let A=m.split("&").map(D).filter(g);if(A.length>1)return{intersection:A.map(l)};let q=m.match(/^\[(.*)]$/);if(q)return{tuple:q[1].split(",").map(D).filter(g).map(l)};let v=m.match(/^(.+)\[]$/);if(v)return{array:l(v[1])};let Te=m.match(/^([^<]+)<(.+)>$/);if(Te){let k=Te[1].trim(),be=l(Te[2]);if(typeof be=="string"){let ln=be.split(",").map(D).filter(g).map(l);return{name:k,generic:ln}}else return{name:k,generic:[be]}}return m}return o(l,"parseTypeRecursive"),l(n)}o(Fn,"parseType");var Ne=class Ne extends Error{};o(Ne,"TypeParseError");var De=Ne;function Fe(n,e,t=3){return e=e||n.constructor.name,$e(n,h(e),t)}o(Fe,"validateInstance");function _n(n,e,t=1){for(let i=0;i<n.length;i++){let r=Fe(n[i],e,t);if(!r.success)return f(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(_n,"validateArray");function Jn(n,e,t=1){let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,c]=i[r],l=Fe(c,e,t);if(!l.success)return f(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:l,value:n,type:e})}return u}o(Jn,"validateDictionary");var cn=Symbol("VALIDATE_WRAPPER"),Gn=o((n,e,t)=>Bn(n,e,t),"ReflectValidate");function Bn(n,e,t){let i=t.value;if(typeof i!="function"||_(i,cn))return;let r=o(()=>{var a,m;return(m=(a=d(n))==null?void 0:a.methods)==null?void 0:m.find(D=>D.name===e)},"getMethodDef"),s=o(a=>fn(n,r(),a),"validateArgs"),c=o(a=>Hn(n,r(),a),"validateReturn"),l=o(function(...a){s(a);let m=i.call(this,...a);return c(m)},"newFunc");l[cn]=i,t.value=l}o(Bn,"wrapValidateMethod");function fn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let c=t==null?void 0:t[s];if(c===void 0)if(!r.isOptional)$.validationErrorHandler(new C(`Illegal arguments for ${_e(n.constructor.name,e)}: ${r.name} is not optional`));else return;let l=T(c,r.type||b,1);l.success||(console.error("validateResult",l),$.validationErrorHandler(new C(`Illegal arguments for ${_e(n.constructor.name,e)}: ${r.name}: ${r.name} ${l.errorMessage}`)))})}o(fn,"validateMethodParams");function Hn(n,e,t){var s;if(!e)return t;let i=o((c,l)=>{let a=T(c,l,5);return a.success||(console.error(a.errorStackFlow),$.validationErrorHandler(new C(`result for ${_e(n.constructor.name,e)} doesn't match type ${l.name}:
|
|
4
|
+
${a.errorStackFlow}`))),c},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||b),t instanceof Promise?t.then(c=>i(c,r||b)):i(t,r||b)}o(Hn,"validateMethodReturnValue");function _e(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(_e,"getMethodDescription");function Un(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return fn(n,r,t),_(n,e).apply(n,t)}o(Un,"safeCall");var Ge=class Ge{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=h(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return T(s,i).success||this.exceptionHandler(new W(`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 V.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):V.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return V.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new W(`class ${t.name} not reflected`)),e;let i=M(t.jsClass);return Object.assign(i,e),i}};o(Ge,"JSONTransfer");var Je=Ge,Be=class Be extends Error{};o(Be,"JSONError");var W=Be;0&&(module.exports={ClassDefinition,EnumDefinition,InterfaceDefinition,JSONError,JSONTransfer,ReflectConfig,ReflectValidate,TypeDefinition,TypeParseError,ValidationError,assertType,failedResult,getClassByName,getClassDefinition,getEnumDefinition,getEnumNames,getEnumValues,getErrorTraceMessages,getInterfaceDefinition,getTypeAliasDefinition,getTypeDef,isNullable,isType,safeCall,successResult,validateArray,validateDictionary,validateInstance});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var de=Object.create;var F=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var we=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var Re=(e,n)=>{for(var t in n)F(e,t,{get:n[t],enumerable:!0})},ee=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of De(n))!Te.call(e,a)&&a!==t&&F(e,a,{get:()=>n[a],enumerable:!(i=ge(n,a))||i.enumerable});return e};var k=(e,n,t)=>(t=e!=null?de(we(e)):{},ee(n||!e||!e.__esModule?F(t,"default",{value:e,enumerable:!0}):t,e)),he=e=>ee(F({},"__esModule",{value:!0}),e);var V=(e,n,t)=>new Promise((i,a)=>{var r=m=>{try{l(t.next(m))}catch(b){a(b)}},d=m=>{try{l(t.throw(m))}catch(b){a(b)}},l=m=>m.done?i(m.value):Promise.resolve(m.value).then(r,d);l((t=t.apply(e,n)).next())});var Le={};Re(Le,{DEBUG_CONFIG:()=>z,parseSource:()=>q,reflectLoader:()=>Z,reflectParserPlugin:()=>Ie,setupReflectTypes:()=>be,updateReflectModules:()=>Y});module.exports=he(Le);var G=k(require("typescript"),1);function R(e){return e||{}}var W=["string","number","boolean","bigint","symbol"];var s=k(require("typescript"),1),S=k(require("fs"),1),I=k(require("process"),1),h=k(require("path"),1),re=require("url");var z={OUTPUT_LOG:!1},C=new Map,M=new Map,$=new Map,v=new Map,X=new Map,j=new Set,ne={[s.default.SyntaxKind.BooleanKeyword]:"boolean",[s.default.SyntaxKind.StringKeyword]:"string",[s.default.SyntaxKind.BigIntKeyword]:"bigint",[s.default.SyntaxKind.NumberKeyword]:"number",[s.default.SyntaxKind.SymbolKeyword]:"symbol",[s.default.SyntaxKind.VoidKeyword]:"void",[s.default.SyntaxKind.UndefinedKeyword]:"undefined",[s.default.SyntaxKind.UnknownKeyword]:"unknown",[s.default.SyntaxKind.AnyKeyword]:"any",[s.default.SyntaxKind.ObjectKeyword]:"object"},O="any",ae=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],oe=["Mappable","EnableReflect"];[...W,...ae,...oe].forEach(pe);oe.forEach(e=>M.set(e,{name:e}));var _,te=!1,U=Reflect;function be(e){return V(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:i,distFolder:a}=e;if(i=h.resolve(i||I.cwd()),a=h.resolve(a||I.cwd()),U.__meta!==void 0)return;let r={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=ye(n);let d=n.map(l=>h.join(i,l));q(d,t);for(let[l,m]of C)r.classes[l]=m;for(let[l,m]of M)r.interfaces[l]=m;for(let[l,m]of v)r.typeAliases[l]=m;for(let[l,m]of $)r.enums[l]=m;for(let[l,m]of X)r.constTypes[l]=m;U.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(l=>Y(l,a)))})}function Y(e,n){return V(this,null,function*(){let t=h.resolve(n,e);if(!S.existsSync(t))return;if(S.statSync(t).isDirectory()){let l=S.readdirSync(t);yield Promise.all(l.map(m=>Y(h.join(e,m),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),d=yield import((0,re.pathToFileURL)(a).href);U.__classDef={},Object.values(d).forEach(l=>{typeof l=="function"&&(U.__classDef[l.name]=l)})})}function q(e,n){if(e||(e=[I.cwd()]),e=ye(e),!te){let t=fe(e,n),i=s.default.createProgram(t,{});_=i.getTypeChecker(),t=t.map(r=>ie(r)),i.getSourceFiles().filter(r=>t.includes(ie(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{P(`parse file: ${r.fileName}`),ce(r)});for(let r of j.keys())!C.has(r)&&!M.has(r)&&!$.has(r)&&!v.has(r)&&!W.includes(r)&&!ae.includes(r)&&(P(`remove unknown typeName: ${r}`),j.delete(r));Array.from(C.values()).forEach(Ae),Array.from(M.values()).forEach(Oe),[C,M,v].forEach(Ce),te=!0}return{classDefinitions:C,interfaceDefinitions:M,enumDefinitions:$,typeAliasDefinitions:v,constTypeDefinitions:X}}function fe(e,n){let t=[];return e.forEach(i=>{if(i=h.resolve(i),ke(i,n)){P(`ignore excluded ${i}`);return}if(!S.existsSync(i)){console.error(`Path ${i} does not exist.`);return}if(S.statSync(i).isFile()){t.push(i);return}S.readdirSync(i).forEach(d=>t.push(...fe([h.join(i,d)],n)))}),t}function ce(e){s.default.isClassDeclaration(e)?xe(e):s.default.isInterfaceDeclaration(e)?Ee(e):s.default.isEnumDeclaration(e)?Pe(e):s.default.isTypeAliasDeclaration(e)?Se(e):s.default.isConstTypeReference(e)?Ne(e):e.forEachChild(ce)}function xe(e){var l,m,b,N,x,K,u,w,L,B,y,D,c,T;let n=o(e.name);if(!n)return;let t=o((b=(m=(l=e.heritageClauses)==null?void 0:l.find(f=>f.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:b[0].expression),i=(x=(N=e.heritageClauses)==null?void 0:N.find(f=>f.token===s.default.SyntaxKind.ImplementsKeyword))==null?void 0:x.types.map(f=>o(f.expression)),a=[],r=[];for(let f of e.members)if(s.default.isPropertyDeclaration(f))a.push({name:o(f.name),isOptional:f.questionToken!==void 0,type:g(f),isPrivate:(K=f.modifiers)==null?void 0:K.some(p=>p.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(u=f.modifiers)==null?void 0:u.some(p=>p.kind===s.default.SyntaxKind.StaticKeyword),isReadonly:(w=f.modifiers)==null?void 0:w.some(p=>p.kind===s.default.SyntaxKind.ReadonlyKeyword)});else if(s.default.isMethodDeclaration(f))r.push({name:o(f.name),returnType:g(f),isPrivate:(L=f.modifiers)==null?void 0:L.some(p=>p.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(B=f.modifiers)==null?void 0:B.some(p=>p.kind===s.default.SyntaxKind.StaticKeyword),isAsync:(y=f.modifiers)==null?void 0:y.some(p=>p.kind===s.default.SyntaxKind.AsyncKeyword),args:f.parameters.map(p=>({name:o(p.name),type:g(p),isOptional:p.questionToken!==void 0}))});else if(s.default.isGetAccessorDeclaration(f)){let p=a.find(A=>A.name===o(f.name));p||(p={name:o(f.name),isOptional:f.questionToken===void 0,type:g(f)},a.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((D=f.modifiers)==null?void 0:D.some(A=>A.kind===s.default.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(s.default.isSetAccessorDeclaration(f)){let p=a.find(A=>A.name===o(f.name));p||(p={name:o(f.name),isOptional:f.questionToken===void 0,type:g(f)},a.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((c=f.modifiers)==null?void 0:c.some(A=>A.kind===s.default.SyntaxKind.PrivateKeyword))||!1}}let d={name:n,superClassName:t,implementations:i,properties:a,methods:r,genericsParams:(T=e.typeParameters)==null?void 0:T.map(f=>o(f.name))};P(`Define class: ${o(e.name)}`),C.set(n,d)}function Ee(e){var l,m,b,N,x,K;let n=o(e.name);if(!n)return;let t=((m=(l=e.heritageClauses)==null?void 0:l.find(u=>u.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:m.types.map(u=>o(u.expression)))||[],i=[],a=[],r;for(let u of e.members)s.default.isPropertySignature(u)?i.push({name:o(u.name),isOptional:u.questionToken!==void 0,type:g(u),isPrivate:((b=u.modifiers)==null?void 0:b.some(w=>w.kind===s.default.SyntaxKind.PrivateKeyword))||!1,isReadonly:((N=u.modifiers)==null?void 0:N.some(w=>w.kind===s.default.SyntaxKind.ReadonlyKeyword))||!1}):s.default.isMethodSignature(u)?a.push({name:u.name.text,returnType:g(u),isPrivate:((x=u.modifiers)==null?void 0:x.some(w=>w.kind===s.default.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(w=>({name:o(w.name),type:g(w),isOptional:w.questionToken!==void 0}))}):s.default.isIndexSignatureDeclaration(u)&&(r=g(u));let d=M.get(n);d?(d.implementations=J(d.implementations||[],t),d.methods=J(d.methods||[],a,(u,w)=>u.name===w.name),d.properties=J(d.properties||[],i,(u,w)=>u.name===w.name),d.indexElementType=r,P(`Merge interface ${o(e.name)}`)):(d={name:n,implementations:t,methods:a,properties:i,indexElementType:r,genericsParams:(K=e.typeParameters)==null?void 0:K.map(u=>o(u.name))},M.set(n,d),P(`Define interface ${o(e.name)}`))}function Pe(e){let n=o(e.name);n&&($.set(n,{name:n,members:e.members.map(t=>({name:o(t.name),initializer:o(t.initializer)}))}),P(`Define enum: ${o(e.name)}`))}function Se(e){var a;P(`Define typeAlias: ${o(e.name)}`);let n=g(e),t=(a=e.typeParameters)==null?void 0:a.map(r=>o(r.name)),i=o(e.name);v.set(i,{name:i,type:n,genericParams:t})}function Ne(e){let n=e.parent.parent;s.default.isVariableDeclaration(n)&&n.initializer&&s.default.isAsExpression(n.initializer)&&X.set(o(n.name),le(n.initializer.expression))}function le(e){return s.default.isArrayLiteralExpression(e)?Ke(e):s.default.isObjectLiteralExpression(e)?Me(e):s.default.isNumericLiteral(e)?"number":s.default.isStringLiteral(e)?"string":s.default.isBigIntLiteral(e)?"bigint":[s.default.SyntaxKind.TrueKeyword,s.default.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":O}function Ke(e){let n=[];return e.elements.forEach(t=>{if(s.default.isStringLiteral(t))return n.push(o(t))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function Me(e){let n=[];return e.properties.map(t=>{s.default.isPropertyAssignment(t)?n.push({name:o(t.name),type:le(t.initializer)}):P(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function pe(e){j.add(e)}function g(e,n=!1){if(e.type&&!n)return E(e.type);if(!_)return console.error("TypeChecker not initialized!"),O;let t=_.getTypeAtLocation(e),i=_.typeToTypeNode(t,void 0,void 0);return i?E("type"in i?i.type:i):O}function E(e){let n={};if(e===void 0)return O;if(s.default.isTypeReferenceNode(e))if(pe(o(e.typeName)),e.typeArguments)n.generics=[o(e.typeName),...e.typeArguments.map(t=>E(t))];else return o(e.typeName);else if(s.default.isFunctionTypeNode(e))n.isFunction=!0;else if(s.default.isConstructorTypeNode(e))n.isConstructor=!0;else{if(s.default.isTypeQueryNode(e))return g(e);if(s.default.isTypeLiteralNode(e)){let t=[];e.members.forEach(i=>{s.default.isPropertySignature(i)?t.push({name:o(i.name),isOptional:i.questionToken!==void 0,type:g(i)}):s.default.isIndexSignatureDeclaration(i)?n.indexElementType=g(i):t.push({name:o(i.name)||"",isOptional:i.questionToken!==void 0,type:E()})}),n.typeLiteralMembers=t}else if(s.default.isArrayTypeNode(e))n.arrayElementType=E(e.elementType);else if(s.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(E);else if(s.default.isOptionalTypeNode(e))Object.assign(n,g(e)),n.isOptionalInTuple=!0;else{if(s.default.isRestTypeNode(e))return g(e);if(s.default.isUnionTypeNode(e))n.unionMembers=e.types.map(E);else if(s.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(E);else{if(s.default.isConditionalTypeNode(e))return g(e);if(s.default.isInferTypeNode(e))return g(e);if(s.default.isParenthesizedTypeNode(e))return g(e);if(s.default.isThisTypeNode(e))return g(e);if(s.default.isTypeOperatorNode(e)&&e.operator===s.default.SyntaxKind.KeyOfKeyword)return g(e,!0);if(s.default.isIndexedAccessTypeNode(e))return g(e,!0);if(s.default.isMappedTypeNode(e))n.indexElementType=E(e.type);else if(s.default.isLiteralTypeNode(e))n.literalValue=o(e.literal);else{if(Object.keys(ne).includes(String(e.kind)))return ne[e.kind]||O;if(s.default.isNamedTupleMember(e))Object.assign(n,g(e));else return g(e,!0)}}}}return n}var J=(e,n,t)=>[...(e==null?void 0:e.filter(i=>!(n!=null&&n.some(a=>(t||(()=>a===i))(a,i)))))||[],...n||[]];function Q(e,n){if(e!==void 0&&e!==O)return typeof e=="string"?j.has(e)||n!=null&&n.includes(e)?e:void 0:e}function Ae(e){var n,t;(n=e.methods)==null||n.forEach(i=>me(i,e.genericsParams)),(t=e.properties)==null||t.forEach(i=>ue(i,e.genericsParams))}function Oe(e){var n,t;(n=e.methods)==null||n.forEach(i=>me(i,e.genericsParams)),(t=e.properties)==null||t.forEach(i=>ue(i,e.genericsParams))}function ue(e,n){e.type=Q(e.type,n)}function me(e,n){var t;(t=e.args)==null||t.forEach(i=>i.type=Q(i.type,n)),e.returnType=Q(e.returnType,n)}function o(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return s.default.isQualifiedName(n)?o(n.right):n.getText()}catch(n){return e.text}}function H(e){e&&Object.entries(e).forEach(n=>{let[t,i]=n;i instanceof Array&&i.length===0||i===!1||i===void 0?delete e[t]:i.constructor===Array?i.forEach(H):i.constructor===Object&&H(i)})}function Ce(e){for(let n of e.values())H(n)}function ke(e,n){return n?(n=n instanceof Array?n:[n],n.some(t=>(t instanceof RegExp||(t=new RegExp(t.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(t)))):!1}function ie(e,n=I.cwd()){return se(e).replace(se(n)+"/","")}function se(e){let n=h.sep;return e.split(n).join("/")}function ye(e){return e instanceof Array?e:[e]}function P(e){z.OUTPUT_LOG&&console.log(e)}function Z(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:i,outputLog:a}=e;if(a&&(z.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${t}, forEnabledClassOnly: ${i}`);let{classDefinitions:r,interfaceDefinitions:d,enumDefinitions:l,typeAliasDefinitions:m,constTypeDefinitions:b}=q(n,t),N=[],x=[];function K(y){let D=[];return(()=>{let c=r.get(y);if(c){c.superClassName&&D.push(c.superClassName),D.push(...c.implementations||[]);return}let T=d.get(y);if(T){D.push(...T.implementations||[]);return}m.get(y)&&D.push(y)})(),D.flatMap(c=>[c,...K(c)])||[]}function u(y,D){return K(y.name).includes(D)}function w(y){if(G.default.isClassDeclaration(y)&&y.name!==void 0){let D=y.name.text,c=r.get(D);if(!D||!c||i&&!u(c,"EnableReflect"))return;x.push(`Reflect.registerClass?Reflect.registerClass({${D}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${D}}))`);return}y.forEachChild(w)}function L(){let y={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return r.forEach((c,T)=>{i&&!u(c,"EnableReflect")||(y.classes[T]=c)}),d.forEach((c,T)=>{i&&!u(c,"EnableReflect")||(y.interfaces[T]=c)}),l.forEach((c,T)=>{y.enums[T]=c}),m.forEach((c,T)=>{y.typeAliases[T]=c}),b.forEach((c,T)=>{y.constTypes[T]=c}),`;Reflect.__meta='${btoa(JSON.stringify(y))}'`}return{outputAllMetas:L,transform:(y,D)=>{if(D.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(c=>!D.startsWith(c))){a&&console.log(`transform id: ${D}`);try{let c=G.default.createSourceFile(D,y,G.default.ScriptTarget.Latest,!1);return N.length=0,x.length=0,w(c),`${N.join(";")};${y};${x.join(";")}`}catch(c){return console.error(`[reflect-parser-plugin] Error processing ${D}:`,c),null}}}}}var ve=process.cwd().replace(/\\/g,"/")+"/";function Ie(e){let n=Z(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,i)=>(i=i.replace(ve,""),i===e.entry?`${n.outputAllMetas()}
|
|
2
|
-
${
|
|
1
|
+
"use strict";var De=Object.create;var j=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,be=Object.prototype.hasOwnProperty;var xe=(e,n)=>{for(var i in n)j(e,i,{get:n[i],enumerable:!0})},te=(e,n,i,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of Re(n))!be.call(e,a)&&a!==i&&j(e,a,{get:()=>n[a],enumerable:!(t=we(n,a))||t.enumerable});return e};var I=(e,n,i)=>(i=e!=null?De(he(e)):{},te(n||!e||!e.__esModule?j(i,"default",{value:e,enumerable:!0}):i,e)),Pe=e=>te(j({},"__esModule",{value:!0}),e);var W=(e,n,i)=>new Promise((t,a)=>{var r=l=>{try{p(i.next(l))}catch(b){a(b)}},T=l=>{try{p(i.throw(l))}catch(b){a(b)}},p=l=>l.done?t(l.value):Promise.resolve(l.value).then(r,T);p((i=i.apply(e,n)).next())});var je={};xe(je,{DEBUG_CONFIG:()=>z,parseSource:()=>G,reflectLoader:()=>ee,reflectParserPlugin:()=>$e,setupReflectTypes:()=>Ee,updateReflectModules:()=>Z});module.exports=Pe(je);var V=I(require("typescript"),1);function R(e){return e||{}}var J=["string","number","boolean","bigint","symbol"];var s=I(require("typescript"),1),M=I(require("fs"),1),$=I(require("process"),1),h=I(require("path"),1),fe=require("url");var z={OUTPUT_LOG:!1},C=new Map,A=new Map,U=new Map,L=new Map,Y=new Map,q=new Set,se={[s.default.SyntaxKind.BooleanKeyword]:"boolean",[s.default.SyntaxKind.StringKeyword]:"string",[s.default.SyntaxKind.BigIntKeyword]:"bigint",[s.default.SyntaxKind.NumberKeyword]:"number",[s.default.SyntaxKind.SymbolKeyword]:"symbol",[s.default.SyntaxKind.VoidKeyword]:"void",[s.default.SyntaxKind.UndefinedKeyword]:"undefined",[s.default.SyntaxKind.UnknownKeyword]:"unknown",[s.default.SyntaxKind.AnyKeyword]:"any",[s.default.SyntaxKind.ObjectKeyword]:"object"},O="any",ce=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],le=["Mappable","EnableReflect"];[...J,...ce,...le].forEach(de);le.forEach(e=>A.set(e,{name:e}));var F,re=!1,_=Reflect;function Ee(e){return W(this,null,function*(){let{filePaths:n,exclude:i,sourceFolder:t,distFolder:a}=e;if(t=h.resolve(t||$.cwd()),a=h.resolve(a||$.cwd()),_.__meta!==void 0)return;let r={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=Te(n);let T=n.map(p=>h.join(t,p));G(T,i);for(let[p,l]of C)r.classes[p]=l;for(let[p,l]of A)r.interfaces[p]=l;for(let[p,l]of L)r.typeAliases[p]=l;for(let[p,l]of U)r.enums[p]=l;for(let[p,l]of Y)r.constTypes[p]=l;_.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(p=>Z(p,a)))})}function Z(e,n){return W(this,null,function*(){let i=h.resolve(n,e);if(!M.existsSync(i))return;if(M.statSync(i).isDirectory()){let p=M.readdirSync(i);yield Promise.all(p.map(l=>Z(h.join(e,l),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),T=yield import((0,fe.pathToFileURL)(a).href);_.__classDef={},Object.values(T).forEach(p=>{typeof p=="function"&&_.__classDef&&(_.__classDef[p.name]=p)})})}function G(e,n){if(e||(e=[$.cwd()]),e=Te(e),!re){let i=pe(e,n),t=s.default.createProgram(i,{});F=t.getTypeChecker(),i=i.map(r=>ae(r)),t.getSourceFiles().filter(r=>i.includes(ae(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{S(`parse file: ${r.fileName}`),ue(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of q.keys())!C.has(r)&&!A.has(r)&&!U.has(r)&&!L.has(r)&&!J.includes(r)&&!ce.includes(r)&&(S(`remove unknown typeName: ${r}`),q.delete(r));Array.from(C.values()).forEach(Oe),Array.from(A.values()).forEach(Ce),[C,A,L].forEach(Ie),re=!0}return{classDefinitions:C,interfaceDefinitions:A,enumDefinitions:U,typeAliasDefinitions:L,constTypeDefinitions:Y}}function pe(e,n){let i=[];return e.forEach(t=>{if(t=h.resolve(t),Le(t,n)){S(`ignore excluded ${t}`);return}if(!M.existsSync(t)){console.error(`Path ${t} does not exist.`);return}if(M.statSync(t).isFile()){i.push(t);return}M.readdirSync(t).forEach(T=>i.push(...pe([h.join(t,T)],n)))}),i}function ue(e,n){s.default.isClassDeclaration(e)?Se(e,n):s.default.isInterfaceDeclaration(e)?Me(e,n):s.default.isEnumDeclaration(e)?Ke(e,n):s.default.isTypeAliasDeclaration(e)?Ne(e,n):s.default.isConstTypeReference(e)?ke(e):e.forEachChild(i=>ue(i,n))}function Se(e,n){var b,K,P,N,E,k,m,D,y,g,u,w,B,ne,ie;let i=c(e.name);if(!i)return;let t=c((P=(K=(b=e.heritageClauses)==null?void 0:b.find(o=>o.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:K.types)==null?void 0:P[0].expression),a=(E=(N=e.heritageClauses)==null?void 0:N.find(o=>o.token===s.default.SyntaxKind.ImplementsKeyword))==null?void 0:E.types.map(o=>c(o.expression)),r=[],T=[],p;for(let o of e.members)if(s.default.isPropertyDeclaration(o))r.push({name:c(o.name),isOptional:o.questionToken!==void 0,type:d(o),isPrivate:(k=o.modifiers)==null?void 0:k.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(m=o.modifiers)==null?void 0:m.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isReadonly:(D=o.modifiers)==null?void 0:D.some(f=>f.kind===s.default.SyntaxKind.ReadonlyKeyword)});else if(s.default.isConstructorDeclaration(o))p={name:"constructor",isPrivate:(y=o.modifiers)==null?void 0:y.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0})),isConstructor:!0};else if(s.default.isMethodDeclaration(o))T.push({name:c(o.name),returnType:d(o),isPrivate:(g=o.modifiers)==null?void 0:g.some(f=>f.kind===s.default.SyntaxKind.PrivateKeyword),isStatic:(u=o.modifiers)==null?void 0:u.some(f=>f.kind===s.default.SyntaxKind.StaticKeyword),isAsync:(w=o.modifiers)==null?void 0:w.some(f=>f.kind===s.default.SyntaxKind.AsyncKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0}))});else if(s.default.isGetAccessorDeclaration(o)){let f=r.find(v=>v.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((B=o.modifiers)==null?void 0:B.some(v=>v.kind===s.default.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(s.default.isSetAccessorDeclaration(o)){let f=r.find(v=>v.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((ne=o.modifiers)==null?void 0:ne.some(v=>v.kind===s.default.SyntaxKind.PrivateKeyword))||!1}}let l={name:i,constructorMethod:p,superClassName:t,implementations:a,properties:r,methods:T,genericsParams:(ie=e.typeParameters)==null?void 0:ie.map(o=>c(o.name)),fromLib:n};S(`Define class: ${c(e.name)}`),C.set(i,l)}function Me(e,n){var b,K,P,N,E,k;let i=c(e.name);if(!i)return;let t=((K=(b=e.heritageClauses)==null?void 0:b.find(m=>m.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:K.types.map(m=>c(m.expression)))||[],a=[],r=[],T,p;for(let m of e.members)s.default.isPropertySignature(m)?a.push({name:c(m.name),isOptional:m.questionToken!==void 0,type:d(m),isPrivate:((P=m.modifiers)==null?void 0:P.some(D=>D.kind===s.default.SyntaxKind.PrivateKeyword))||!1,isReadonly:((N=m.modifiers)==null?void 0:N.some(D=>D.kind===s.default.SyntaxKind.ReadonlyKeyword))||!1}):s.default.isMethodSignature(m)?r.push({name:m.name.text,returnType:d(m),isPrivate:((E=m.modifiers)==null?void 0:E.some(D=>D.kind===s.default.SyntaxKind.PrivateKeyword))||!1,args:m.parameters.map(D=>({name:c(D.name),type:d(D),isOptional:D.questionToken!==void 0}))}):s.default.isIndexSignatureDeclaration(m)&&(m.parameters[0]&&(T=d(m.parameters[0])),p=d(m));let l=A.get(i);l?(l.implementations=Q(l.implementations||[],t),l.methods=Q(l.methods||[],r,(m,D)=>m.name===D.name),l.properties=Q(l.properties||[],a,(m,D)=>m.name===D.name),p&&(l.index={keyType:T,valueType:p}),S(`Merge interface ${c(e.name)}`)):(l={name:i,implementations:t,methods:r,properties:a,index:p?{keyType:T,valueType:p}:void 0,genericsParams:(k=e.typeParameters)==null?void 0:k.map(m=>c(m.name)),fromLib:n},A.set(i,l),S(`Define interface ${c(e.name)}`))}function Ke(e,n){let i=c(e.name);i&&(U.set(i,{name:i,members:e.members.map(t=>({name:c(t.name),initializer:c(t.initializer)})),fromLib:n}),S(`Define enum: ${c(e.name)}`))}function Ne(e,n){var r;S(`Define typeAlias: ${c(e.name)}`);let i=d(e),t=(r=e.typeParameters)==null?void 0:r.map(T=>c(T.name)),a=c(e.name);L.set(a,{name:a,type:i,genericParams:t,fromLib:n})}function ke(e){let n=e.parent.parent;s.default.isVariableDeclaration(n)&&n.initializer&&s.default.isAsExpression(n.initializer)&&Y.set(c(n.name),me(n.initializer.expression))}function me(e){return s.default.isArrayLiteralExpression(e)?Ae(e):s.default.isObjectLiteralExpression(e)?ve(e):s.default.isNumericLiteral(e)?"number":s.default.isStringLiteral(e)?"string":s.default.isBigIntLiteral(e)?"bigint":[s.default.SyntaxKind.TrueKeyword,s.default.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":O}function Ae(e){let n=[];return e.elements.forEach(i=>{if(s.default.isStringLiteral(i))return n.push(c(i))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function ve(e){let n=[];return e.properties.map(i=>{s.default.isPropertyAssignment(i)?n.push({name:c(i.name),type:me(i.initializer)}):S(`unsupported property: ${i.name}`)}),{typeLiteralMembers:n}}function de(e){q.add(e)}function d(e,n=!1){if(e.type&&!n)return x(e.type);if(!F)return console.error("TypeChecker not initialized!"),O;let i=F.getTypeAtLocation(e),t=F.typeToTypeNode(i,void 0,void 0);return t?x("type"in t?t.type:t):O}function x(e){let n={};if(e===void 0)return O;if(s.default.isTypeReferenceNode(e))if(de(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(i=>x(i))];else return c(e.typeName);else if(s.default.isFunctionTypeNode(e))n.isFunction=!0;else if(s.default.isConstructorTypeNode(e))n.isConstructor=!0;else{if(s.default.isTypeQueryNode(e))return d(e);if(s.default.isTypeLiteralNode(e)){let i=[];e.members.forEach(t=>{var a,r;s.default.isPropertySignature(t)?i.push({name:c(t.name),isOptional:t.questionToken!==void 0,type:d(t)}):s.default.isIndexSignatureDeclaration(t)?n.index={keyType:(a=t.parameters)!=null&&a[0].type?d((r=t.parameters)==null?void 0:r[0]):void 0,valueType:d(t)}:i.push({name:c(t.name)||"",isOptional:t.questionToken!==void 0,type:x()})}),n.typeLiteralMembers=i}else if(s.default.isArrayTypeNode(e))n.arrayElementType=x(e.elementType);else if(s.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(x);else if(s.default.isOptionalTypeNode(e))Object.assign(n,d(e)),n.isOptionalInTuple=!0;else{if(s.default.isRestTypeNode(e))return d(e);if(s.default.isUnionTypeNode(e))n.unionMembers=e.types.map(x);else if(s.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(x);else{if(s.default.isConditionalTypeNode(e))return d(e);if(s.default.isInferTypeNode(e))return d(e);if(s.default.isParenthesizedTypeNode(e))return d(e);if(s.default.isThisTypeNode(e))return d(e);if(s.default.isTypeOperatorNode(e)&&e.operator===s.default.SyntaxKind.KeyOfKeyword)return d(e,!0);if(s.default.isIndexedAccessTypeNode(e))return d(e,!0);if(s.default.isMappedTypeNode(e))n.index={keyType:x(e.typeParameter.constraint),valueType:x(e.type)};else if(s.default.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(se).includes(String(e.kind)))return se[e.kind]||O;if(s.default.isNamedTupleMember(e))Object.assign(n,d(e));else return d(e,!0)}}}}return n}var Q=(e,n,i)=>[...(e==null?void 0:e.filter(t=>!(n!=null&&n.some(a=>(i||(()=>a===t))(a,t)))))||[],...n||[]];function H(e,n){if(e!==void 0&&e!==O)return typeof e=="string"?q.has(e)||n!=null&&n.includes(e)?e:void 0:e}function Oe(e){var n,i;(n=e.methods)==null||n.forEach(t=>ge(t,e.genericsParams)),(i=e.properties)==null||i.forEach(t=>ye(t,e.genericsParams))}function Ce(e){var n,i;(n=e.methods)==null||n.forEach(t=>ge(t,e.genericsParams)),(i=e.properties)==null||i.forEach(t=>ye(t,e.genericsParams))}function ye(e,n){e.type=H(e.type,n)}function ge(e,n){var i;(i=e.args)==null||i.forEach(t=>t.type=H(t.type,n)),e.returnType=H(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return s.default.isQualifiedName(n)?c(n.right):n.getText()}catch(n){return e.text}}function X(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(i=>{let[t,a]=i;a===!1||a===void 0||a===null?delete n[t]:a instanceof Array?a.length===0?delete n[t]:a.forEach(X):X(a)})}function Ie(e){for(let n of e.values())X(n)}function Le(e,n){return n?(n=n instanceof Array?n:[n],n.some(i=>(i instanceof RegExp||(i=new RegExp(i.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(i)))):!1}function ae(e,n=$.cwd()){return oe(e).replace(oe(n)+"/","")}function oe(e){let n=h.sep;return e.split(n).join("/")}function Te(e){return e instanceof Array?e:[e]}function S(e){z.OUTPUT_LOG&&console.log(e)}function ee(e){let{sourcePaths:n,exclude:i,forEnabledClassOnly:t,outputLog:a}=e;if(a&&(z.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${i}, forEnabledClassOnly: ${t}`);let{classDefinitions:r,interfaceDefinitions:T,enumDefinitions:p,typeAliasDefinitions:l,constTypeDefinitions:b}=G(n,i),K=[],P=[];function N(y){let g=[];return(()=>{let u=r.get(y);if(u){u.superClassName&&g.push(u.superClassName),g.push(...u.implementations||[]);return}let w=T.get(y);if(w){g.push(...w.implementations||[]);return}l.get(y)&&g.push(y)})(),g.flatMap(u=>[u,...N(u)])||[]}function E(y,g){return N(y.name).includes(g)}function k(y){if(V.default.isClassDeclaration(y)&&y.name!==void 0){let g=y.name.text,u=r.get(g);if(!g||!u||t&&!E(u,"EnableReflect"))return;P.push(`Reflect.registerClass?Reflect.registerClass({${g}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${g}}))`);return}y.forEachChild(k)}function m(){let y={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return r.forEach((u,w)=>{t&&!E(u,"EnableReflect")||(y.classes[w]=u)}),T.forEach((u,w)=>{t&&!E(u,"EnableReflect")||(y.interfaces[w]=u)}),p.forEach((u,w)=>{y.enums[w]=u}),l.forEach((u,w)=>{y.typeAliases[w]=u}),b.forEach((u,w)=>{y.constTypes[w]=u}),`;Reflect.__meta='${btoa(JSON.stringify(y))}'`}return{outputAllMetas:m,transform:(y,g)=>{if(g.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!g.startsWith(u))){a&&console.log(`transform id: ${g}`);try{let u=V.default.createSourceFile(g,y,V.default.ScriptTarget.Latest,!1);return K.length=0,P.length=0,k(u),`${K.join(";")};${y};${P.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${g}:`,u);return}}}}}var _e=process.cwd().replace(/\\/g,"/")+"/";function $e(e){let n=ee(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(i,t)=>(t=t.replace(_e,""),t===e.entry?`${n.outputAllMetas()}
|
|
2
|
+
${i}`:n.transform(i,t))}}0&&(module.exports={DEBUG_CONFIG,parseSource,reflectLoader,reflectParserPlugin,setupReflectTypes,updateReflectModules});
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
var
|
|
2
|
-
caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};
|
|
3
|
-
-> `)}o(it,"getErrorTraceMessages");var be=[Promise,Date,Map,Set,Error,Function];function D(n,e,t=1){switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`);case Fe(e):return u;case fe(e):return n instanceof Object?he(n,e,t):l(200,`declared as ${p(e)} but actually not an object`);case re(e):return Ye(n,e,t);case le(e):return en(n,e,t);case ae(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`);case ce(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,r)}return u;case Me(e):return Ze(n,e,t);case oe(e):switch(typeof n){case"string":return n===rn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`);case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`);case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`);case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`);default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`)}case se(e):return nn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`);case we(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`);default:return tn(n,e,t)}}o(D,"validateValue");function Ye(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`);if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||T,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,s)}return u}o(Ye,"validateArrayValue");function Ze(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null");if(typeof n=="object")return l(410,`declared as indexedType but actually is ${typeof n}`);for(let i of Object.values(n)){let r=D(i,e.indexElementType,t-1);if(!r.success)return l(420,`declared as ${p(e)} but actually not match`,r)}return u}o(Ze,"validateIndexedValue");function en(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`);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 c=D(n[i],r,t);if(!c.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,c)}return u}o(en,"validateTupleValue");function nn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if(i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||T;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=S(n,i.name),c=D(s,r,t-1);if(!c.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,c)}return u}else return l(210,`declared as ${p(e)} but not an object`)}o(nn,"validateProperties");function tn(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`);if(n===null)return i==="null"?u:l(131,`declared as ${p(e)} but actually null`);for(let s of be)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`);if(n instanceof Object&&!ve(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`);if(t==0)return u;let r=D(n,h(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,r)}o(tn,"validateSimpleValue");function he(n,e,t=3){if(e.classDefinition&&!ve(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`);if(e.name!=="any"&&e===T)return l(202,`${p(e)} not defined`);let i=I({},e);return delete i.classDefinition,D(n,i,t)}o(he,"validateClassInstance");function ve(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(ve,"valueInstanceOf");function rn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(rn,"trimQuotes");function p(n){var e,t,i,r;return typeof n=="string"?n:fe(n)?n.classDefinition.name:re(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":se(n)?"Object":le(n)?`(${n.tupleMembers.map(p).join(",")})`:ae(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":ce(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":oe(n)?n.literalValue:Me(n)?`{ [key]: ${((r=n.indexElementType)==null?void 0:r.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var Re=class Re{constructor(e){this.name=e.name,this.members=new Map,e.members.forEach(t=>{let i=t.initializer===void 0?{name:"number"}:{literalValue:t.initializer};this.members.set(t.name,i)})}get type(){return{name:this.name,unionMembers:Array.from(this.members.values())}}get names(){return Array.from(this.members.keys())}};o(Re,"EnumDefinition");var ue=Re,xe=new Map;function F(n){var e;if(!xe.has(n)){let t=(e=b().enums)==null?void 0:e[n];if(!t)return;xe.set(n,new ue(t))}return xe.get(n)}o(F,"getEnumDefinition");function on(n){var e;return((e=F(n))==null?void 0:e.names)||[]}o(on,"getEnumNames");function sn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=F(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(sn,"getEnumValues");var an=["Partial","Required","Readonly","Pick","Omit","Extract","Exclude"];function Le(n){return typeof n=="string"&&an.includes(n)}o(Le,"isSpecialType");function cn(n,e,t){let i;switch(n){case"Partial":i=ln(e);break;case"Required":i=fn(e);break;case"Readonly":i=un(e);break;case"Pick":i=Ge(e,t);break;case"Omit":i=Be(e,t);break;case"Extract":i=pn(e,t);break;case"Exclude":i=mn(e,t);break}return i}o(cn,"getSpecialType");function Ne(n,e){let[t,i]=e,r,s=["Pick","Omit","Extract","Exclude"].includes(n)?["T"]:["T","K"];return r=cn(n,t,i),r?{name:n,type:r,genericParams:s}:void 0}o(Ne,"getSpecialTypeAlias");function L(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>t.copy(e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>L(t,e))}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>L(t,e))}:void 0}o(L,"getMappedType");function _e(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?t.copy():void 0).filter(t=>!!t)}}o(_e,"getFilterKeyType");function ln(n){return L(n,e=>e.isOptional=!0)}o(ln,"getPartialType");function fn(n){return L(n,e=>e.isOptional=!1)}o(fn,"getRequiredType");function un(n){return L(n,e=>e.isReadonly=!0)}o(un,"getReadonlyType");function Ge(n,e){var i;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return _e(n,r=>r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))}o(Ge,"getPickType");function Be(n,e){var i;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return _e(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(Be,"getOmitType");function pn(n,e){if(n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return Ge(n,t)}}o(pn,"getExtractType");function mn(n,e){if(n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return Be(n,t)}}o(mn,"getExcludeType");function Ce(n,e){var r;if(Le(n))return!e||!e[0]?void 0:Ne(n,[e[0],e[1]]);if(!Pe.has(n)){let s=(r=b().typeAliases)==null?void 0:r[n];if(!s||!s.type)return;Pe.set(n,{name:n,type:s.type,genericParams:s.genericParams})}let t=Pe.get(n),i;if(t.genericParams&&e){let s={};for(let c=0;c<t.genericParams.length;c++){let f=t.genericParams[c];s[f]=e[c]}i=y(t.type,s,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams}}o(Ce,"getTypeAliasDefinition");var Pe=new Map;var T={name:"any"},yn={name:"null"};function Fe(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(Fe,"isIgnoredType");function we(n){return!!(n.name&&ye.includes(n.name))}o(we,"isPrimitiveType");function re(n){return!!n.arrayElementType}o(re,"isArrayType");function oe(n){return!!n.literalValue}o(oe,"isLiteralType");function se(n){return!!n.typeLiteralMembers}o(se,"isTypeLiteralType");function ae(n){return!!n.unionMembers}o(ae,"isUnionType");function ce(n){return!!n.intersectionMembers}o(ce,"isIntersectionType");function le(n){return!!n.tupleMembers}o(le,"isTupleType");function fe(n){return!!n.classDefinition}o(fe,"isClassDefinition");function dn(n){return!!n.generics}o(dn,"hasGenerics");function Me(n){return!!n.indexElementType}o(Me,"isIndexType");function h(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return T;if(n==="null")return yn;let t=d(n);if(t)return e?ne.create(t,e).type:t.type;if(ye.includes(n))return{name:n};if(be.map(c=>c.name).includes(n))return{name:n,generics:e};let i=O(n);if(i)return e?X.create(i,e).type:i.type;let r=F(n);if(r)return r.type;let s=Ce(n,e);return s?s.type:T}o(h,"getTypeDefinition");var Ee=new Map;function y(n,e,t){let i=$e(n);if(n===void 0)return T;let r=Ee.get(i);if(r)return r;let s={};if(Ee.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||h(n,t)||T;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(c=>y(c,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(c=>y(c,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(c=>y(c,e))});else if(n.generics){let c=n.generics[0],f=n.generics.slice(1).map(a=>y(a,e));Object.assign(s,y(c,e,f))}else n.indexElementType&&Object.assign(s,{indexElementType:y(n.indexElementType,e)});return Object.keys(s).length===0&&(s=T),Ee.delete(i),s}o(y,"fillType");function $e(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map($e).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+$e(n[t])).join(",")+"}"}o($e,"stableStringify");var Dn={isPrimitiveType:we,isArrayType:re,isLiteralType:oe,isTypeLiteralType:se,isUnionType:ae,isIntersectionType:ce,isTupleType:le,isClassDefinition:fe,hasGenerics:dn};function w(n){if(typeof n=="string"){let e=gn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?h(n):w(e)}return"array"in n?{arrayElementType:w(n.array)}:"union"in n?{unionMembers:n.union.map(w)}:"intersection"in n?{intersectionMembers:n.intersection.map(w)}:"tuple"in n?{tupleMembers:n.tuple.map(w)}:"generic"in n?h(n.name,n.generic.map(w)):n}o(w,"getTypeDef");function At(n,e,t=5){let i=D(n,w(e),t);if(!i.success){console.error(`assert failed with type: ${e}
|
|
4
|
-
${
|
|
5
|
-
${a.errorStackFlow}`);return c},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||T),t instanceof Promise?t.then(c=>i(c,r||T)):i(t,r||T)}o(hn,"validateMethodReturnValue");function Ie(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Ie,"getMethodDescription");function Qt(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return We(n,r,t),S(n,e).apply(n,t)}o(Qt,"safeCall");export{v as ClassDefinition,ue as EnumDefinition,$ as InterfaceDefinition,Kt as ReflectValidate,Dn as TypeDefinition,ie as ValidateResult,At as assertType,l as failedResult,Xe as getClassByName,d as getClassDefinition,F as getEnumDefinition,on as getEnumNames,sn as getEnumValues,it as getErrorTraceMessages,O as getInterfaceDefinition,Ce as getTypeAliasDefinition,w as getTypeDef,St as isNullable,Tn as isType,Qt as safeCall,u as successResult,_t as validateArray,Gt as validateDictionary,Ue as validateInstance};
|
|
1
|
+
var Be=Object.defineProperty,sn=Object.defineProperties;var an=Object.getOwnPropertyDescriptors;var Je=Object.getOwnPropertySymbols;var cn=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var Ge=(n,e,t)=>e in n?Be(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,E=(n,e)=>{for(var t in e||(e={}))cn.call(e,t)&&Ge(n,t,e[t]);if(Je)for(var t of Je(e))fn.call(e,t)&&Ge(n,t,e[t]);return n},He=(n,e)=>sn(n,an(e)),r=(n,e)=>Be(n,"name",{value:e,configurable:!0});var De=["string","number","boolean","bigint","symbol"],Ue={string:String,number:Number,boolean:Boolean,object:Object};var q=class q{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get isReadonly(){return!!this.rawDef.isReadonly}get isOptional(){return!!this.rawDef.isOptional}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get accessor(){return this.rawDef.accessor}get type(){return y(this.rawDef.type)}copy(e){let t=We(this.rawDef);return e&&e(t),new q(t)}};r(q,"PropertyDefinition");var U=q;function K(n){return new U(n)}r(K,"fillProperty");var z=class z extends U{static create(e,t){let i=M(z,e);return i.genericContext=t,i}get type(){return y(this.rawDef.type,this.genericContext)}};r(z,"GenericProperty");var W=z;function M(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}r(M,"createInstance");function Q(n,e){n.properties=e.properties.map(t=>W.create(t,n.genericContext)),n.methods=e.methods.map(t=>V.create(t,n.genericContext)),n instanceof S&&e instanceof I&&e.constructorMethod!==void 0&&(n.constructorMethod=V.create(e.constructorMethod,n.genericContext))}r(Q,"buildPropertiesAndMethods");function Te(n,e){let t={};return n.forEach(i=>{let[o,s]=e(i);t[o]=s}),t}r(Te,"toDictionary");function X(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}r(X,"mapNotNull");function v(n,e){if(n!==void 0)return n[e]}r(v,"getValue");function We(n){return JSON.parse(JSON.stringify(n))}r(We,"copy");var be=class be{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(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}};r(be,"MethodDefinition");var Y=be;function N(n){return new Y(n)}r(N,"fillMethod");var Z=class Z extends Y{static create(e,t){let i=M(Z,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(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return y(this.rawDef.returnType,this.genericContext)}};r(Z,"GenericMethod");var V=Z;var F=Reflect,_;function x(){if(_)return _;let n=F.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{_=JSON.parse(atob(n))}catch(t){console.error(t),console.warn("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:r(t=>Object.assign(e.classDef,t),"value")}),_}r(x,"getRawMeta");var ne=class ne{constructor(e){var t,i,o,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(N))||[],this.properties=((i=e.properties)==null?void 0:i.map(K))||[],this.generics=(o=e.genericsParams)!=null?o:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=X(this._implementationNames,e=>{var t;return j(e)||((t=d(e))==null?void 0:t.type)||R(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof ne?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){let e={};this.properties.forEach(i=>e[i.name]=i);let t={name:this.name,typeLiteralMembers:Object.values(e),fromLib:this.fromLib};return this.allImplementations.length>0?{intersectionMembers:[t,...this.allImplementations.map(i=>"type"in i?i.type:i)]}:t}toString(){return`interface ${this.name}`}};r(ne,"InterfaceDefinition");var $=ne,te=class te extends ${constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let o=M(te,t);o.genericArgs=i;let s=o;return s.buildGenericContext(),Q(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,o)=>this.genericContext[i]=this.genericArgs[o])}};r(te,"GenericInterface");var ee=te,ge=new Map;function j(n){var e,t;if(!ge.has(n)){let i=(t=(e=x())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;ge.set(n,new $(i))}return ge.get(n)}r(j,"getInterfaceDefinition");var he=class he{constructor(e){var t,i,o,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=d(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?N(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(N))||[],this.properties=((i=e.properties)==null?void 0:i.map(K))||[],this.jsClass=e.jsClass,this.generics=(o=e.genericsParams)!=null?o:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let t=d(this.superClassName);t&&Object.assign(e,E({},t.allMethods))}return Object.assign(e,E({},Te(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},Te(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:X(this._implementationNames,e=>j(e)||R(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(o=>{o instanceof $?o.allImplementations.forEach(s=>i.add(s)):i.add(o)}),(t=(e=this.superClass)==null?void 0:e.allImplementations)==null||t.forEach(o=>i.add(o)),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(o=>e[o.name]=o),this.properties.forEach(o=>e[o.name]=o),{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=d(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};r(he,"ClassDefinition");var I=he,re=class re extends I{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let o=M(re,t);o.genericArgs=i;let s=o;return s.buildGenericContext(),Q(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,o)=>this.genericContext[i]=this.genericArgs[o])}};r(re,"GenericClass");var S=re,ie=new Map;function ln(n){var e;return((e=d(n))==null?void 0:e.jsClass)||Ue[n]}r(ln,"getClassByName");function d(n){var e,t,i,o,s,c;switch(typeof n){case"object":return d(n.constructor);case"function":let f=d(n.name);if(f)return f;let a=Array.from(ie.values()).find(g=>g.jsClass===n);if(a)return a;let m=(t=Object.entries(((e=x())==null?void 0:e.classDef)||{}).find(([g,w])=>w===n))==null?void 0:t[0];return m?d(m):void 0;case"string":let D=n;if(!ie.has(D)){let g=(o=(i=x())==null?void 0:i.classes)==null?void 0:o[D];if(!g)return;let w=(c=(s=x())==null?void 0:s.classDef)==null?void 0:c[D];ie.set(D,new I(He(E({},g),{jsClass:w})))}return ie.get(D)}}r(d,"getClassDefinition");var xe=class xe{constructor(){this.success=!0}};r(xe,"SuccessResult");var we=xe,Re=class Re{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,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}`}};r(Re,"FailureResult");var Me=Re,p=new we,l=r((n,e,t)=>new Me(n,e,t),"failedResult");function Tt(n){let e=r(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
|
|
3
|
+
-> `)}r(Tt,"getErrorTraceMessages");var Ce=class Ce extends Error{constructor(e,t){super(e),this.failureResult=t}};r(Ce,"ValidationError");var C=Ce,A={validationErrorHandler:r(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler")};var Pe=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function T(n,e,t=1){switch(!0){case e.name==="undefined":return n===void 0?p:l(100,`declared as ${u(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?p:l(101,`declared as ${u(e)} but actually not`,{value:n,type:e});case ze(e):return p;case ue(e):return n instanceof Object?ke(n,e,t):l(200,`declared as ${u(e)} but actually not an object`,{value:n,type:e});case oe(e):return un(n,e,t);case le(e):return mn(n,e,t);case ce(e):for(let i of e.unionMembers||[])if(T(n,i,t).success)return p;return l(320,`declared as ${u(e)} but all value not match`,{value:n,type:e});case fe(e):for(let i of e.intersectionMembers||[]){let o=T(n,i,t);if(!o.success)return l(330,`declared as ${u(e)} but all value not match`,{cause:o,value:n,type:e})}return p;case Ie(e):return pn(n,e,t);case se(e):switch(typeof n){case"string":return n===Dn(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 ae(e):return yn(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 Oe(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)}}r(T,"validateValue");function un(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 o=n[i],s=T(o,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})}return p}r(un,"validateArrayValue");function pn(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,o]of Object.entries(n)){let s=T(o,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${u(e)} but actually not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=T(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${u(e)} but actually not match`,{cause:s,value:n,type:e})}return p}r(pn,"validateIndexedValue");function mn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${u(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return p;let i=0;for(let o of e.tupleMembers){let s=n[i++];if(o.isOptionalInTuple&&s===void 0)continue;let c=T(n[i],o,t);if(!c.success)return l(311,`declared as ${u(e)} but not all values in tuple match`,{cause:c,value:n,type:e})}return p}r(mn,"validateTupleValue");function yn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if(i.isStatic)return p;if(i.name.startsWith("[")&&i.name.endsWith("]"))return p;if(t===0)return p;let o=i.type||b;i.isOptional&&(o={unionMembers:[o,{name:"undefined"}]});let s=v(n,i.name),c=T(s,o,t-1);if(!c.success)return l(211,`declared ${i.name} as ${u(o)}, but not match`,{cause:c,value:n,type:e})}return p}else return l(210,`declared as ${u(e)} but not an object`,{value:n,type:e})}r(yn,"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 Pe)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&&!qe(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 o=T(n,R(i),t);return o.success?p:l(134,`declared as ${u(e)} but actually not match`,{cause:o,value:n,type:e})}r(dn,"validateSimpleValue");function ke(n,e,t=3){if(e.classDefinition&&!qe(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=E({},e);return delete i.classDefinition,T(n,i,t)}r(ke,"validateClassInstance");function qe(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}r(qe,"valueInstanceOf");function Dn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}r(Dn,"trimQuotes");function u(n){var e,t,i,o,s;return typeof n=="string"?n:ue(n)?n.classDefinition.name:oe(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":ae(n)?"Object":le(n)?`(${n.tupleMembers.map(u).join(",")})`:ce(n)?((t=n.unionMembers)==null?void 0:t.map(u).join(" | "))||"unknown":fe(n)?((i=n.intersectionMembers)==null?void 0:i.map(u).join(" & "))||"unknown":se(n)?n.literalValue:Ie(n)?`{ [${(o=n.index.keyType)!=null?o:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}r(u,"getTypeDisplayName");var Ae=class Ae{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let o=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,o)}),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())}};r(Ae,"EnumDefinition");var pe=Ae,$e=new Map;function J(n){var e,t;if(!$e.has(n)){let i=(t=(e=x())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;$e.set(n,new pe(i))}return $e.get(n)}r(J,"getEnumDefinition");function Tn(n){var e;return((e=J(n))==null?void 0:e.names)||[]}r(Tn,"getEnumNames");function bn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,o=J(t);return o?o.names.map(s=>i[s]):Array.from(Object.keys(i))}r(bn,"getEnumValues");var gn=["Partial","Required","Readonly","Record","Pick","Omit","Extract","Exclude"];function Ke(n){return typeof n=="string"&&gn.includes(n)}r(Ke,"isSpecialType");function hn(n,e,t){let i;switch(n){case"Partial":i=wn(e);break;case"Required":i=Mn(e);break;case"Readonly":i=xn(e);break;case"Record":i=Rn(e,t);break;case"Pick":i=Ye(e,t);break;case"Omit":i=Ze(e,t);break;case"Extract":i=Cn(e,t);break;case"Exclude":i=Pn(e,t);break}return i}r(hn,"getSpecialType");function Qe(n,e){let[t,i]=e,o,s=["Pick","Omit","Extract","Exclude"].includes(n)?["T"]:["T","K"];return o=hn(n,t,i),o?{name:n,type:o,genericParams:s,fromLib:!0}:void 0}r(Qe,"getSpecialTypeAlias");function G(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>t.copy(e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>G(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>G(t,e)).filter(t=>t!==void 0)}:void 0}r(G,"getMappedType");function Xe(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?t.copy():void 0).filter(t=>!!t)}}r(Xe,"getFilterKeyType");function wn(n){return G(n,e=>e.isOptional=!0)}r(wn,"getPartialType");function Mn(n){return G(n,e=>e.isOptional=!1)}r(Mn,"getRequiredType");function xn(n){return G(n,e=>e.isReadonly=!0)}r(xn,"getReadonlyType");function Rn(n,e){return{index:{keyType:n,valueType:e!=null?e:b}}}r(Rn,"getRecordType");function Ye(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(o=>o.name);if(n.typeLiteralMembers)return Xe(n,o=>{var s;return(s=o.name===e.literalValue||(t==null?void 0:t.includes(o.name)))!=null?s:!1})}r(Ye,"getPickType");function Ze(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(o=>o.name);if(n.typeLiteralMembers)return Xe(n,o=>!(o.name===e.literalValue||t!=null&&t.includes(o.name)))}r(Ze,"getOmitType");function Cn(n,e){if(e&&n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return Ye(n,t)}}r(Cn,"getExtractType");function Pn(n,e){if(e&&n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return Ze(n,t)}}r(Pn,"getExcludeType");function Se(n,e){var o,s,c;if(Ke(n))return!e||!e[0]?void 0:Qe(n,[e[0],e[1]]);if(!Ee.has(n)){let f=(s=(o=x())==null?void 0:o.typeAliases)==null?void 0:s[n];if(!f||!f.type)return;Ee.set(n,{name:n,type:f.type,genericParams:f.genericParams,fromLib:f.fromLib})}let t=Ee.get(n);if(!t)return;let i;if(t.genericParams&&e){let f={};for(let a=0;a<t.genericParams.length;a++){let m=t.genericParams[a];f[m]=e[a]}i=y(t.type,f,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(c=t.fromLib)!=null?c:!1}}r(Se,"getTypeAliasDefinition");var Ee=new Map;var b={name:"any"},kn={name:"null"},On={name:"undefined"};function ze(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}r(ze,"isIgnoredType");function Oe(n){return!!(n.name&&De.includes(n.name))}r(Oe,"isPrimitiveType");function oe(n){return!!n.arrayElementType}r(oe,"isArrayType");function se(n){return!!n.literalValue}r(se,"isLiteralType");function ae(n){return!!n.typeLiteralMembers}r(ae,"isTypeLiteralType");function ce(n){return!!n.unionMembers}r(ce,"isUnionType");function fe(n){return!!n.intersectionMembers}r(fe,"isIntersectionType");function le(n){return!!n.tupleMembers}r(le,"isTupleType");function ue(n){return!!n.classDefinition}r(ue,"isClassDefinition");function In(n){return!!n.generics}r(In,"hasGenerics");function Ie(n){return!!n.index}r(Ie,"isIndexType");function R(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return b;if(n==="null")return kn;if(n==="undefined")return On;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?S.create(t,e).type:t.type;if(De.includes(n))return{name:n};if(Pe.map(c=>c.name).includes(n))return{name:n,generics:e};let i=j(n);if(i)return i.fromLib?{name:n,generics:e}:e?ee.create(i,e).type:i.type;let o=J(n);if(o)return o.type;let s=Se(n,e);return s?s.type:b}r(R,"getTypeDefinition");var je=new Map;function y(n,e,t){let i=Le(n);if(n===void 0)return b;let o=je.get(i);if(o)return o;let s={};if(je.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||R(n,t)||b;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(c=>y(c,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(c=>y(c,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(c=>y(c,e))});else if(n.generics){let c=n.generics[0],f=n.generics.slice(1).map(a=>y(a,e));Object.assign(s,y(c,e,f))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=b),je.delete(i),s}r(y,"fillType");function Le(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Le).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Le(n[t])).join(",")+"}"}r(Le,"stableStringify");var B={isPrimitiveType:Oe,isArrayType:oe,isLiteralType:se,isTypeLiteralType:ae,isUnionType:ce,isIntersectionType:fe,isTupleType:le,isClassDefinition:ue,hasGenerics:In};function h(n){if(typeof n=="string"){let e=An(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?R(n):h(e)}return"array"in n?{arrayElementType:h(n.array)}:"union"in n?{unionMembers:n.union.map(h)}:"intersection"in n?{intersectionMembers:n.intersection.map(h)}:"tuple"in n?{tupleMembers:n.tuple.map(h)}:"generic"in n?R(n.name,n.generic.map(h)):n}r(h,"getTypeDef");function Qt(n,e,t=5){let i=T(n,h(e),t);return i.success||A.validationErrorHandler(new C(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}r(Qt,"assertType");function Xt(n){return $n(null,n)}r(Xt,"isNullable");function $n(n,e,t=5){return T(n,h(e),t).success}r($n,"isType");function An(n){let e=0,t="%%",i={};function o(a){let m=`${t}${e++}`;return i[m]=a,m}r(o,"addPlaceholder");function s(a){let m=a.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let D=m[1].trim(),g=i[D];return delete i[D],g}r(s,"getPlaceholder");function c(a,m,D,g){let w=0;for(;w<a.length;){let P=a.indexOf(m,w);if(P===-1)break;w=P+1;let O=a.indexOf(D,w);if(O===-1)throw new Ve("Illegal type string");let H=a.substring(P+1,O),L=o(H);g?a=`${a.substring(0,P+1)}${L}${a.substring(O)}`:a=`${a.substring(0,P)}${L}${a.substring(O+1)}`}return a}r(c,"replaceBracket");function f(a){let m=a.trim(),D=r(k=>k.trim(),"trim"),g=r(k=>k.length!=0,"notEmpty");m=c(m,"(",")",!1),m=c(m,"<",">",!0);let w=s(m);if(w)return f(w);let P=m.split("|").map(D).filter(g);if(P.length>1)return{union:P.map(f)};let O=m.split("&").map(D).filter(g);if(O.length>1)return{intersection:O.map(f)};let H=m.match(/^\[(.*)]$/);if(H)return{tuple:H[1].split(",").map(D).filter(g).map(f)};let L=m.match(/^(.+)\[]$/);if(L)return{array:f(L[1])};let ye=m.match(/^([^<]+)<(.+)>$/);if(ye){let k=ye[1].trim(),de=f(ye[2]);if(typeof de=="string"){let on=de.split(",").map(D).filter(g).map(f);return{name:k,generic:on}}else return{name:k,generic:[de]}}return m}return r(f,"parseTypeRecursive"),f(n)}r(An,"parseType");var ve=class ve extends Error{};r(ve,"TypeParseError");var Ve=ve;function en(n,e,t=3){return e=e||n.constructor.name,ke(n,h(e),t)}r(en,"validateInstance");function ii(n,e,t=1){for(let i=0;i<n.length;i++){let o=en(n[i],e,t);if(!o.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:o,value:n,type:e})}return p}r(ii,"validateArray");function ri(n,e,t=1){let i=Object.entries(n);for(let o=0;o<i.length;o++){let[s,c]=i[o],f=en(c,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}r(ri,"validateDictionary");var nn=Symbol("VALIDATE_WRAPPER"),pi=r((n,e,t)=>En(n,e,t),"ReflectValidate");function En(n,e,t){let i=t.value;if(typeof i!="function"||v(i,nn))return;let o=r(()=>{var a,m;return(m=(a=d(n))==null?void 0:a.methods)==null?void 0:m.find(D=>D.name===e)},"getMethodDef"),s=r(a=>tn(n,o(),a),"validateArgs"),c=r(a=>Sn(n,o(),a),"validateReturn"),f=r(function(...a){s(a);let m=i.call(this,...a);return c(m)},"newFunc");f[nn]=i,t.value=f}r(En,"wrapValidateMethod");function tn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((o,s)=>{let c=t==null?void 0:t[s];if(c===void 0)if(!o.isOptional)A.validationErrorHandler(new C(`Illegal arguments for ${Ne(n.constructor.name,e)}: ${o.name} is not optional`));else return;let f=T(c,o.type||b,1);f.success||(console.error("validateResult",f),A.validationErrorHandler(new C(`Illegal arguments for ${Ne(n.constructor.name,e)}: ${o.name}: ${o.name} ${f.errorMessage}`)))})}r(tn,"validateMethodParams");function Sn(n,e,t){var s;if(!e)return t;let i=r((c,f)=>{let a=T(c,f,5);return a.success||(console.error(a.errorStackFlow),A.validationErrorHandler(new C(`result for ${Ne(n.constructor.name,e)} doesn't match type ${f.name}:
|
|
4
|
+
${a.errorStackFlow}`))),c},"checkValue"),o=e.returnType;return o.name==="Promise"&&(o=((s=o.generics)==null?void 0:s[0])||b),t instanceof Promise?t.then(c=>i(c,o||b)):i(t,o||b)}r(Sn,"validateMethodReturnValue");function Ne(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}r(Ne,"getMethodDescription");function mi(n,e,...t){let i=d(n);if(!i)return;let o=i.allMethods[e];if(o)return tn(n,o,t),v(n,e).apply(n,t)}r(mi,"safeCall");var Fe=class Fe{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=h(t),o=JSON.parse(e),s=this.convertJSONValue(o,i);return T(s,i).success||this.exceptionHandler(new me(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return B.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):B.isTupleType(t)?t.tupleMembers.map((i,o)=>this.convertJSONValue(e[o],i)):e;default:return B.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new me(`class ${t.name} not reflected`)),e;let i=M(t.jsClass);return Object.assign(i,e),i}};r(Fe,"JSONTransfer");var rn=Fe,_e=class _e extends Error{};r(_e,"JSONError");var me=_e;export{I as ClassDefinition,pe as EnumDefinition,$ as InterfaceDefinition,me as JSONError,rn as JSONTransfer,A as ReflectConfig,pi as ReflectValidate,B as TypeDefinition,Ve as TypeParseError,C as ValidationError,Qt as assertType,l as failedResult,ln as getClassByName,d as getClassDefinition,J as getEnumDefinition,Tn as getEnumNames,bn as getEnumValues,Tt as getErrorTraceMessages,j as getInterfaceDefinition,Se as getTypeAliasDefinition,h as getTypeDef,Xt as isNullable,$n as isType,mi as safeCall,p as successResult,ii as validateArray,ri as validateDictionary,en as validateInstance};
|
package/dist/esm/parser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var U=(e,n,s)=>new Promise((t,c)=>{var r=m=>{try{l(s.next(m))}catch(b){c(b)}},d=m=>{try{l(s.throw(m))}catch(b){c(b)}},l=m=>m.done?t(m.value):Promise.resolve(m.value).then(r,d);l((s=s.apply(e,n)).next())});import Q from"typescript";function R(e){return e||{}}var z=["string","number","boolean","bigint","symbol"];import i from"typescript";import*as S from"fs";import*as v from"process";import*as h from"path";import{pathToFileURL as pe}from"url";var V={OUTPUT_LOG:!1},C=new Map,M=new Map,F=new Map,k=new Map,W=new Map,_=new Set,H={[i.SyntaxKind.BooleanKeyword]:"boolean",[i.SyntaxKind.StringKeyword]:"string",[i.SyntaxKind.BigIntKeyword]:"bigint",[i.SyntaxKind.NumberKeyword]:"number",[i.SyntaxKind.SymbolKeyword]:"symbol",[i.SyntaxKind.VoidKeyword]:"void",[i.SyntaxKind.UndefinedKeyword]:"undefined",[i.SyntaxKind.UnknownKeyword]:"unknown",[i.SyntaxKind.AnyKeyword]:"any",[i.SyntaxKind.ObjectKeyword]:"object"},O="any",ee=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],ne=["Mappable","EnableReflect"];[...z,...ee,...ne].forEach(ae);ne.forEach(e=>M.set(e,{name:e}));var L,X=!1,$=Reflect;function Me(e){return U(this,null,function*(){let{filePaths:n,exclude:s,sourceFolder:t,distFolder:c}=e;if(t=h.resolve(t||v.cwd()),c=h.resolve(c||v.cwd()),$.__meta!==void 0)return;let r={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=ce(n);let d=n.map(l=>h.join(t,l));J(d,s);for(let[l,m]of C)r.classes[l]=m;for(let[l,m]of M)r.interfaces[l]=m;for(let[l,m]of k)r.typeAliases[l]=m;for(let[l,m]of F)r.enums[l]=m;for(let[l,m]of W)r.constTypes[l]=m;$.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(l=>te(l,c)))})}function te(e,n){return U(this,null,function*(){let s=h.resolve(n,e);if(!S.existsSync(s))return;if(S.statSync(s).isDirectory()){let l=S.readdirSync(s);yield Promise.all(l.map(m=>te(h.join(e,m),n)));return}if(!e.endsWith(".js"))return;let c=h.join(n,e),d=yield import(pe(c).href);$.__classDef={},Object.values(d).forEach(l=>{typeof l=="function"&&($.__classDef[l.name]=l)})})}function J(e,n){if(e||(e=[v.cwd()]),e=ce(e),!X){let s=ie(e,n),t=i.createProgram(s,{});L=t.getTypeChecker(),s=s.map(r=>Y(r)),t.getSourceFiles().filter(r=>s.includes(Y(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{P(`parse file: ${r.fileName}`),se(r)});for(let r of _.keys())!C.has(r)&&!M.has(r)&&!F.has(r)&&!k.has(r)&&!z.includes(r)&&!ee.includes(r)&&(P(`remove unknown typeName: ${r}`),_.delete(r));Array.from(C.values()).forEach(Te),Array.from(M.values()).forEach(Re),[C,M,k].forEach(he),X=!0}return{classDefinitions:C,interfaceDefinitions:M,enumDefinitions:F,typeAliasDefinitions:k,constTypeDefinitions:W}}function ie(e,n){let s=[];return e.forEach(t=>{if(t=h.resolve(t),be(t,n)){P(`ignore excluded ${t}`);return}if(!S.existsSync(t)){console.error(`Path ${t} does not exist.`);return}if(S.statSync(t).isFile()){s.push(t);return}S.readdirSync(t).forEach(d=>s.push(...ie([h.join(t,d)],n)))}),s}function se(e){i.isClassDeclaration(e)?ue(e):i.isInterfaceDeclaration(e)?me(e):i.isEnumDeclaration(e)?ye(e):i.isTypeAliasDeclaration(e)?de(e):i.isConstTypeReference(e)?ge(e):e.forEachChild(se)}function ue(e){var l,m,b,N,x,K,u,w,I,j,y,D,f,T;let n=a(e.name);if(!n)return;let s=a((b=(m=(l=e.heritageClauses)==null?void 0:l.find(o=>o.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:b[0].expression),t=(x=(N=e.heritageClauses)==null?void 0:N.find(o=>o.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:x.types.map(o=>a(o.expression)),c=[],r=[];for(let o of e.members)if(i.isPropertyDeclaration(o))c.push({name:a(o.name),isOptional:o.questionToken!==void 0,type:g(o),isPrivate:(K=o.modifiers)==null?void 0:K.some(p=>p.kind===i.SyntaxKind.PrivateKeyword),isStatic:(u=o.modifiers)==null?void 0:u.some(p=>p.kind===i.SyntaxKind.StaticKeyword),isReadonly:(w=o.modifiers)==null?void 0:w.some(p=>p.kind===i.SyntaxKind.ReadonlyKeyword)});else if(i.isMethodDeclaration(o))r.push({name:a(o.name),returnType:g(o),isPrivate:(I=o.modifiers)==null?void 0:I.some(p=>p.kind===i.SyntaxKind.PrivateKeyword),isStatic:(j=o.modifiers)==null?void 0:j.some(p=>p.kind===i.SyntaxKind.StaticKeyword),isAsync:(y=o.modifiers)==null?void 0:y.some(p=>p.kind===i.SyntaxKind.AsyncKeyword),args:o.parameters.map(p=>({name:a(p.name),type:g(p),isOptional:p.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(o)){let p=c.find(A=>A.name===a(o.name));p||(p={name:a(o.name),isOptional:o.questionToken===void 0,type:g(o)},c.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((D=o.modifiers)==null?void 0:D.some(A=>A.kind===i.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(o)){let p=c.find(A=>A.name===a(o.name));p||(p={name:a(o.name),isOptional:o.questionToken===void 0,type:g(o)},c.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((f=o.modifiers)==null?void 0:f.some(A=>A.kind===i.SyntaxKind.PrivateKeyword))||!1}}let d={name:n,superClassName:s,implementations:t,properties:c,methods:r,genericsParams:(T=e.typeParameters)==null?void 0:T.map(o=>a(o.name))};P(`Define class: ${a(e.name)}`),C.set(n,d)}function me(e){var l,m,b,N,x,K;let n=a(e.name);if(!n)return;let s=((m=(l=e.heritageClauses)==null?void 0:l.find(u=>u.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:m.types.map(u=>a(u.expression)))||[],t=[],c=[],r;for(let u of e.members)i.isPropertySignature(u)?t.push({name:a(u.name),isOptional:u.questionToken!==void 0,type:g(u),isPrivate:((b=u.modifiers)==null?void 0:b.some(w=>w.kind===i.SyntaxKind.PrivateKeyword))||!1,isReadonly:((N=u.modifiers)==null?void 0:N.some(w=>w.kind===i.SyntaxKind.ReadonlyKeyword))||!1}):i.isMethodSignature(u)?c.push({name:u.name.text,returnType:g(u),isPrivate:((x=u.modifiers)==null?void 0:x.some(w=>w.kind===i.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(w=>({name:a(w.name),type:g(w),isOptional:w.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(u)&&(r=g(u));let d=M.get(n);d?(d.implementations=q(d.implementations||[],s),d.methods=q(d.methods||[],c,(u,w)=>u.name===w.name),d.properties=q(d.properties||[],t,(u,w)=>u.name===w.name),d.indexElementType=r,P(`Merge interface ${a(e.name)}`)):(d={name:n,implementations:s,methods:c,properties:t,indexElementType:r,genericsParams:(K=e.typeParameters)==null?void 0:K.map(u=>a(u.name))},M.set(n,d),P(`Define interface ${a(e.name)}`))}function ye(e){let n=a(e.name);n&&(F.set(n,{name:n,members:e.members.map(s=>({name:a(s.name),initializer:a(s.initializer)}))}),P(`Define enum: ${a(e.name)}`))}function de(e){var c;P(`Define typeAlias: ${a(e.name)}`);let n=g(e),s=(c=e.typeParameters)==null?void 0:c.map(r=>a(r.name)),t=a(e.name);k.set(t,{name:t,type:n,genericParams:s})}function ge(e){let n=e.parent.parent;i.isVariableDeclaration(n)&&n.initializer&&i.isAsExpression(n.initializer)&&W.set(a(n.name),re(n.initializer.expression))}function re(e){return i.isArrayLiteralExpression(e)?De(e):i.isObjectLiteralExpression(e)?we(e):i.isNumericLiteral(e)?"number":i.isStringLiteral(e)?"string":i.isBigIntLiteral(e)?"bigint":[i.SyntaxKind.TrueKeyword,i.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":O}function De(e){let n=[];return e.elements.forEach(s=>{if(i.isStringLiteral(s))return n.push(a(s))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function we(e){let n=[];return e.properties.map(s=>{i.isPropertyAssignment(s)?n.push({name:a(s.name),type:re(s.initializer)}):P(`unsupported property: ${s.name}`)}),{typeLiteralMembers:n}}function ae(e){_.add(e)}function g(e,n=!1){if(e.type&&!n)return E(e.type);if(!L)return console.error("TypeChecker not initialized!"),O;let s=L.getTypeAtLocation(e),t=L.typeToTypeNode(s,void 0,void 0);return t?E("type"in t?t.type:t):O}function E(e){let n={};if(e===void 0)return O;if(i.isTypeReferenceNode(e))if(ae(a(e.typeName)),e.typeArguments)n.generics=[a(e.typeName),...e.typeArguments.map(s=>E(s))];else return a(e.typeName);else if(i.isFunctionTypeNode(e))n.isFunction=!0;else if(i.isConstructorTypeNode(e))n.isConstructor=!0;else{if(i.isTypeQueryNode(e))return g(e);if(i.isTypeLiteralNode(e)){let s=[];e.members.forEach(t=>{i.isPropertySignature(t)?s.push({name:a(t.name),isOptional:t.questionToken!==void 0,type:g(t)}):i.isIndexSignatureDeclaration(t)?n.indexElementType=g(t):s.push({name:a(t.name)||"",isOptional:t.questionToken!==void 0,type:E()})}),n.typeLiteralMembers=s}else if(i.isArrayTypeNode(e))n.arrayElementType=E(e.elementType);else if(i.isTupleTypeNode(e))n.tupleMembers=e.elements.map(E);else if(i.isOptionalTypeNode(e))Object.assign(n,g(e)),n.isOptionalInTuple=!0;else{if(i.isRestTypeNode(e))return g(e);if(i.isUnionTypeNode(e))n.unionMembers=e.types.map(E);else if(i.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(E);else{if(i.isConditionalTypeNode(e))return g(e);if(i.isInferTypeNode(e))return g(e);if(i.isParenthesizedTypeNode(e))return g(e);if(i.isThisTypeNode(e))return g(e);if(i.isTypeOperatorNode(e)&&e.operator===i.SyntaxKind.KeyOfKeyword)return g(e,!0);if(i.isIndexedAccessTypeNode(e))return g(e,!0);if(i.isMappedTypeNode(e))n.indexElementType=E(e.type);else if(i.isLiteralTypeNode(e))n.literalValue=a(e.literal);else{if(Object.keys(H).includes(String(e.kind)))return H[e.kind]||O;if(i.isNamedTupleMember(e))Object.assign(n,g(e));else return g(e,!0)}}}}return n}var q=(e,n,s)=>[...(e==null?void 0:e.filter(t=>!(n!=null&&n.some(c=>(s||(()=>c===t))(c,t)))))||[],...n||[]];function G(e,n){if(e!==void 0&&e!==O)return typeof e=="string"?_.has(e)||n!=null&&n.includes(e)?e:void 0:e}function Te(e){var n,s;(n=e.methods)==null||n.forEach(t=>fe(t,e.genericsParams)),(s=e.properties)==null||s.forEach(t=>oe(t,e.genericsParams))}function Re(e){var n,s;(n=e.methods)==null||n.forEach(t=>fe(t,e.genericsParams)),(s=e.properties)==null||s.forEach(t=>oe(t,e.genericsParams))}function oe(e,n){e.type=G(e.type,n)}function fe(e,n){var s;(s=e.args)==null||s.forEach(t=>t.type=G(t.type,n)),e.returnType=G(e.returnType,n)}function a(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return i.isQualifiedName(n)?a(n.right):n.getText()}catch(n){return e.text}}function B(e){e&&Object.entries(e).forEach(n=>{let[s,t]=n;t instanceof Array&&t.length===0||t===!1||t===void 0?delete e[s]:t.constructor===Array?t.forEach(B):t.constructor===Object&&B(t)})}function he(e){for(let n of e.values())B(n)}function be(e,n){return n?(n=n instanceof Array?n:[n],n.some(s=>(s instanceof RegExp||(s=new RegExp(s.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(s)))):!1}function Y(e,n=v.cwd()){return Z(e).replace(Z(n)+"/","")}function Z(e){let n=h.sep;return e.split(n).join("/")}function ce(e){return e instanceof Array?e:[e]}function P(e){V.OUTPUT_LOG&&console.log(e)}function le(e){let{sourcePaths:n,exclude:s,forEnabledClassOnly:t,outputLog:c}=e;if(c&&(V.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");c&&console.log(`sourcePaths: ${n}, exclude: ${s}, forEnabledClassOnly: ${t}`);let{classDefinitions:r,interfaceDefinitions:d,enumDefinitions:l,typeAliasDefinitions:m,constTypeDefinitions:b}=J(n,s),N=[],x=[];function K(y){let D=[];return(()=>{let f=r.get(y);if(f){f.superClassName&&D.push(f.superClassName),D.push(...f.implementations||[]);return}let T=d.get(y);if(T){D.push(...T.implementations||[]);return}m.get(y)&&D.push(y)})(),D.flatMap(f=>[f,...K(f)])||[]}function u(y,D){return K(y.name).includes(D)}function w(y){if(Q.isClassDeclaration(y)&&y.name!==void 0){let D=y.name.text,f=r.get(D);if(!D||!f||t&&!u(f,"EnableReflect"))return;x.push(`Reflect.registerClass?Reflect.registerClass({${D}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${D}}))`);return}y.forEachChild(w)}function I(){let y={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return r.forEach((f,T)=>{t&&!u(f,"EnableReflect")||(y.classes[T]=f)}),d.forEach((f,T)=>{t&&!u(f,"EnableReflect")||(y.interfaces[T]=f)}),l.forEach((f,T)=>{y.enums[T]=f}),m.forEach((f,T)=>{y.typeAliases[T]=f}),b.forEach((f,T)=>{y.constTypes[T]=f}),`;Reflect.__meta='${btoa(JSON.stringify(y))}'`}return{outputAllMetas:I,transform:(y,D)=>{if(D.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(f=>!D.startsWith(f))){c&&console.log(`transform id: ${D}`);try{let f=Q.createSourceFile(D,y,Q.ScriptTarget.Latest,!1);return N.length=0,x.length=0,w(f),`${N.join(";")};${y};${x.join(";")}`}catch(f){return console.error(`[reflect-parser-plugin] Error processing ${D}:`,f),null}}}}}var xe=process.cwd().replace(/\\/g,"/")+"/";function Fe(e){let n=le(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(s,t)=>(t=t.replace(xe,""),t===e.entry?`${n.outputAllMetas()}
|
|
2
|
-
${
|
|
1
|
+
var q=(e,n,i)=>new Promise((s,a)=>{var r=l=>{try{p(i.next(l))}catch(b){a(b)}},T=l=>{try{p(i.throw(l))}catch(b){a(b)}},p=l=>l.done?s(l.value):Promise.resolve(l.value).then(r,T);p((i=i.apply(e,n)).next())});import H from"typescript";function R(e){return e||{}}var z=["string","number","boolean","bigint","symbol"];import t from"typescript";import*as M from"fs";import*as _ from"process";import*as h from"path";import{pathToFileURL as de}from"url";var W={OUTPUT_LOG:!1},C=new Map,A=new Map,j=new Map,I=new Map,J=new Map,F=new Set,Z={[t.SyntaxKind.BooleanKeyword]:"boolean",[t.SyntaxKind.StringKeyword]:"string",[t.SyntaxKind.BigIntKeyword]:"bigint",[t.SyntaxKind.NumberKeyword]:"number",[t.SyntaxKind.SymbolKeyword]:"symbol",[t.SyntaxKind.VoidKeyword]:"void",[t.SyntaxKind.UndefinedKeyword]:"undefined",[t.SyntaxKind.UnknownKeyword]:"unknown",[t.SyntaxKind.AnyKeyword]:"any",[t.SyntaxKind.ObjectKeyword]:"object"},O="any",te=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],se=["Mappable","EnableReflect"];[...z,...te,...se].forEach(ce);se.forEach(e=>A.set(e,{name:e}));var $,ee=!1,L=Reflect;function ve(e){return q(this,null,function*(){let{filePaths:n,exclude:i,sourceFolder:s,distFolder:a}=e;if(s=h.resolve(s||_.cwd()),a=h.resolve(a||_.cwd()),L.__meta!==void 0)return;let r={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=ue(n);let T=n.map(p=>h.join(s,p));Q(T,i);for(let[p,l]of C)r.classes[p]=l;for(let[p,l]of A)r.interfaces[p]=l;for(let[p,l]of I)r.typeAliases[p]=l;for(let[p,l]of j)r.enums[p]=l;for(let[p,l]of J)r.constTypes[p]=l;L.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(p=>re(p,a)))})}function re(e,n){return q(this,null,function*(){let i=h.resolve(n,e);if(!M.existsSync(i))return;if(M.statSync(i).isDirectory()){let p=M.readdirSync(i);yield Promise.all(p.map(l=>re(h.join(e,l),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),T=yield import(de(a).href);L.__classDef={},Object.values(T).forEach(p=>{typeof p=="function"&&L.__classDef&&(L.__classDef[p.name]=p)})})}function Q(e,n){if(e||(e=[_.cwd()]),e=ue(e),!ee){let i=ae(e,n),s=t.createProgram(i,{});$=s.getTypeChecker(),i=i.map(r=>ne(r)),s.getSourceFiles().filter(r=>i.includes(ne(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{S(`parse file: ${r.fileName}`),oe(r,r.fileName.endsWith("/lib.es5.d.ts"))});for(let r of F.keys())!C.has(r)&&!A.has(r)&&!j.has(r)&&!I.has(r)&&!z.includes(r)&&!te.includes(r)&&(S(`remove unknown typeName: ${r}`),F.delete(r));Array.from(C.values()).forEach(be),Array.from(A.values()).forEach(xe),[C,A,I].forEach(Pe),ee=!0}return{classDefinitions:C,interfaceDefinitions:A,enumDefinitions:j,typeAliasDefinitions:I,constTypeDefinitions:J}}function ae(e,n){let i=[];return e.forEach(s=>{if(s=h.resolve(s),Ee(s,n)){S(`ignore excluded ${s}`);return}if(!M.existsSync(s)){console.error(`Path ${s} does not exist.`);return}if(M.statSync(s).isFile()){i.push(s);return}M.readdirSync(s).forEach(T=>i.push(...ae([h.join(s,T)],n)))}),i}function oe(e,n){t.isClassDeclaration(e)?ye(e,n):t.isInterfaceDeclaration(e)?ge(e,n):t.isEnumDeclaration(e)?Te(e,n):t.isTypeAliasDeclaration(e)?De(e,n):t.isConstTypeReference(e)?we(e):e.forEachChild(i=>oe(i,n))}function ye(e,n){var b,K,P,N,E,k,m,D,y,g,u,w,U,X,Y;let i=c(e.name);if(!i)return;let s=c((P=(K=(b=e.heritageClauses)==null?void 0:b.find(o=>o.token===t.SyntaxKind.ExtendsKeyword))==null?void 0:K.types)==null?void 0:P[0].expression),a=(E=(N=e.heritageClauses)==null?void 0:N.find(o=>o.token===t.SyntaxKind.ImplementsKeyword))==null?void 0:E.types.map(o=>c(o.expression)),r=[],T=[],p;for(let o of e.members)if(t.isPropertyDeclaration(o))r.push({name:c(o.name),isOptional:o.questionToken!==void 0,type:d(o),isPrivate:(k=o.modifiers)==null?void 0:k.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),isStatic:(m=o.modifiers)==null?void 0:m.some(f=>f.kind===t.SyntaxKind.StaticKeyword),isReadonly:(D=o.modifiers)==null?void 0:D.some(f=>f.kind===t.SyntaxKind.ReadonlyKeyword)});else if(t.isConstructorDeclaration(o))p={name:"constructor",isPrivate:(y=o.modifiers)==null?void 0:y.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0})),isConstructor:!0};else if(t.isMethodDeclaration(o))T.push({name:c(o.name),returnType:d(o),isPrivate:(g=o.modifiers)==null?void 0:g.some(f=>f.kind===t.SyntaxKind.PrivateKeyword),isStatic:(u=o.modifiers)==null?void 0:u.some(f=>f.kind===t.SyntaxKind.StaticKeyword),isAsync:(w=o.modifiers)==null?void 0:w.some(f=>f.kind===t.SyntaxKind.AsyncKeyword),args:o.parameters.map(f=>({name:c(f.name),type:d(f),isOptional:f.questionToken!==void 0}))});else if(t.isGetAccessorDeclaration(o)){let f=r.find(v=>v.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((U=o.modifiers)==null?void 0:U.some(v=>v.kind===t.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(t.isSetAccessorDeclaration(o)){let f=r.find(v=>v.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:d(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((X=o.modifiers)==null?void 0:X.some(v=>v.kind===t.SyntaxKind.PrivateKeyword))||!1}}let l={name:i,constructorMethod:p,superClassName:s,implementations:a,properties:r,methods:T,genericsParams:(Y=e.typeParameters)==null?void 0:Y.map(o=>c(o.name)),fromLib:n};S(`Define class: ${c(e.name)}`),C.set(i,l)}function ge(e,n){var b,K,P,N,E,k;let i=c(e.name);if(!i)return;let s=((K=(b=e.heritageClauses)==null?void 0:b.find(m=>m.token===t.SyntaxKind.ExtendsKeyword))==null?void 0:K.types.map(m=>c(m.expression)))||[],a=[],r=[],T,p;for(let m of e.members)t.isPropertySignature(m)?a.push({name:c(m.name),isOptional:m.questionToken!==void 0,type:d(m),isPrivate:((P=m.modifiers)==null?void 0:P.some(D=>D.kind===t.SyntaxKind.PrivateKeyword))||!1,isReadonly:((N=m.modifiers)==null?void 0:N.some(D=>D.kind===t.SyntaxKind.ReadonlyKeyword))||!1}):t.isMethodSignature(m)?r.push({name:m.name.text,returnType:d(m),isPrivate:((E=m.modifiers)==null?void 0:E.some(D=>D.kind===t.SyntaxKind.PrivateKeyword))||!1,args:m.parameters.map(D=>({name:c(D.name),type:d(D),isOptional:D.questionToken!==void 0}))}):t.isIndexSignatureDeclaration(m)&&(m.parameters[0]&&(T=d(m.parameters[0])),p=d(m));let l=A.get(i);l?(l.implementations=G(l.implementations||[],s),l.methods=G(l.methods||[],r,(m,D)=>m.name===D.name),l.properties=G(l.properties||[],a,(m,D)=>m.name===D.name),p&&(l.index={keyType:T,valueType:p}),S(`Merge interface ${c(e.name)}`)):(l={name:i,implementations:s,methods:r,properties:a,index:p?{keyType:T,valueType:p}:void 0,genericsParams:(k=e.typeParameters)==null?void 0:k.map(m=>c(m.name)),fromLib:n},A.set(i,l),S(`Define interface ${c(e.name)}`))}function Te(e,n){let i=c(e.name);i&&(j.set(i,{name:i,members:e.members.map(s=>({name:c(s.name),initializer:c(s.initializer)})),fromLib:n}),S(`Define enum: ${c(e.name)}`))}function De(e,n){var r;S(`Define typeAlias: ${c(e.name)}`);let i=d(e),s=(r=e.typeParameters)==null?void 0:r.map(T=>c(T.name)),a=c(e.name);I.set(a,{name:a,type:i,genericParams:s,fromLib:n})}function we(e){let n=e.parent.parent;t.isVariableDeclaration(n)&&n.initializer&&t.isAsExpression(n.initializer)&&J.set(c(n.name),fe(n.initializer.expression))}function fe(e){return t.isArrayLiteralExpression(e)?Re(e):t.isObjectLiteralExpression(e)?he(e):t.isNumericLiteral(e)?"number":t.isStringLiteral(e)?"string":t.isBigIntLiteral(e)?"bigint":[t.SyntaxKind.TrueKeyword,t.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":O}function Re(e){let n=[];return e.elements.forEach(i=>{if(t.isStringLiteral(i))return n.push(c(i))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function he(e){let n=[];return e.properties.map(i=>{t.isPropertyAssignment(i)?n.push({name:c(i.name),type:fe(i.initializer)}):S(`unsupported property: ${i.name}`)}),{typeLiteralMembers:n}}function ce(e){F.add(e)}function d(e,n=!1){if(e.type&&!n)return x(e.type);if(!$)return console.error("TypeChecker not initialized!"),O;let i=$.getTypeAtLocation(e),s=$.typeToTypeNode(i,void 0,void 0);return s?x("type"in s?s.type:s):O}function x(e){let n={};if(e===void 0)return O;if(t.isTypeReferenceNode(e))if(ce(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(i=>x(i))];else return c(e.typeName);else if(t.isFunctionTypeNode(e))n.isFunction=!0;else if(t.isConstructorTypeNode(e))n.isConstructor=!0;else{if(t.isTypeQueryNode(e))return d(e);if(t.isTypeLiteralNode(e)){let i=[];e.members.forEach(s=>{var a,r;t.isPropertySignature(s)?i.push({name:c(s.name),isOptional:s.questionToken!==void 0,type:d(s)}):t.isIndexSignatureDeclaration(s)?n.index={keyType:(a=s.parameters)!=null&&a[0].type?d((r=s.parameters)==null?void 0:r[0]):void 0,valueType:d(s)}:i.push({name:c(s.name)||"",isOptional:s.questionToken!==void 0,type:x()})}),n.typeLiteralMembers=i}else if(t.isArrayTypeNode(e))n.arrayElementType=x(e.elementType);else if(t.isTupleTypeNode(e))n.tupleMembers=e.elements.map(x);else if(t.isOptionalTypeNode(e))Object.assign(n,d(e)),n.isOptionalInTuple=!0;else{if(t.isRestTypeNode(e))return d(e);if(t.isUnionTypeNode(e))n.unionMembers=e.types.map(x);else if(t.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(x);else{if(t.isConditionalTypeNode(e))return d(e);if(t.isInferTypeNode(e))return d(e);if(t.isParenthesizedTypeNode(e))return d(e);if(t.isThisTypeNode(e))return d(e);if(t.isTypeOperatorNode(e)&&e.operator===t.SyntaxKind.KeyOfKeyword)return d(e,!0);if(t.isIndexedAccessTypeNode(e))return d(e,!0);if(t.isMappedTypeNode(e))n.index={keyType:x(e.typeParameter.constraint),valueType:x(e.type)};else if(t.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(Z).includes(String(e.kind)))return Z[e.kind]||O;if(t.isNamedTupleMember(e))Object.assign(n,d(e));else return d(e,!0)}}}}return n}var G=(e,n,i)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(a=>(i||(()=>a===s))(a,s)))))||[],...n||[]];function V(e,n){if(e!==void 0&&e!==O)return typeof e=="string"?F.has(e)||n!=null&&n.includes(e)?e:void 0:e}function be(e){var n,i;(n=e.methods)==null||n.forEach(s=>pe(s,e.genericsParams)),(i=e.properties)==null||i.forEach(s=>le(s,e.genericsParams))}function xe(e){var n,i;(n=e.methods)==null||n.forEach(s=>pe(s,e.genericsParams)),(i=e.properties)==null||i.forEach(s=>le(s,e.genericsParams))}function le(e,n){e.type=V(e.type,n)}function pe(e,n){var i;(i=e.args)==null||i.forEach(s=>s.type=V(s.type,n)),e.returnType=V(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return t.isQualifiedName(n)?c(n.right):n.getText()}catch(n){return e.text}}function B(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(i=>{let[s,a]=i;a===!1||a===void 0||a===null?delete n[s]:a instanceof Array?a.length===0?delete n[s]:a.forEach(B):B(a)})}function Pe(e){for(let n of e.values())B(n)}function Ee(e,n){return n?(n=n instanceof Array?n:[n],n.some(i=>(i instanceof RegExp||(i=new RegExp(i.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(i)))):!1}function ne(e,n=_.cwd()){return ie(e).replace(ie(n)+"/","")}function ie(e){let n=h.sep;return e.split(n).join("/")}function ue(e){return e instanceof Array?e:[e]}function S(e){W.OUTPUT_LOG&&console.log(e)}function me(e){let{sourcePaths:n,exclude:i,forEnabledClassOnly:s,outputLog:a}=e;if(a&&(W.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${i}, forEnabledClassOnly: ${s}`);let{classDefinitions:r,interfaceDefinitions:T,enumDefinitions:p,typeAliasDefinitions:l,constTypeDefinitions:b}=Q(n,i),K=[],P=[];function N(y){let g=[];return(()=>{let u=r.get(y);if(u){u.superClassName&&g.push(u.superClassName),g.push(...u.implementations||[]);return}let w=T.get(y);if(w){g.push(...w.implementations||[]);return}l.get(y)&&g.push(y)})(),g.flatMap(u=>[u,...N(u)])||[]}function E(y,g){return N(y.name).includes(g)}function k(y){if(H.isClassDeclaration(y)&&y.name!==void 0){let g=y.name.text,u=r.get(g);if(!g||!u||s&&!E(u,"EnableReflect"))return;P.push(`Reflect.registerClass?Reflect.registerClass({${g}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${g}}))`);return}y.forEachChild(k)}function m(){let y={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return r.forEach((u,w)=>{s&&!E(u,"EnableReflect")||(y.classes[w]=u)}),T.forEach((u,w)=>{s&&!E(u,"EnableReflect")||(y.interfaces[w]=u)}),p.forEach((u,w)=>{y.enums[w]=u}),l.forEach((u,w)=>{y.typeAliases[w]=u}),b.forEach((u,w)=>{y.constTypes[w]=u}),`;Reflect.__meta='${btoa(JSON.stringify(y))}'`}return{outputAllMetas:m,transform:(y,g)=>{if(g.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(u=>!g.startsWith(u))){a&&console.log(`transform id: ${g}`);try{let u=H.createSourceFile(g,y,H.ScriptTarget.Latest,!1);return K.length=0,P.length=0,k(u),`${K.join(";")};${y};${P.join(";")}`}catch(u){console.error(`[reflect-parser-plugin] Error processing ${g}:`,u);return}}}}}var Se=process.cwd().replace(/\\/g,"/")+"/";function Fe(e){let n=me(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(i,s)=>(s=s.replace(Se,""),s===e.entry?`${n.outputAllMetas()}
|
|
2
|
+
${i}`:n.transform(i,s))}}export{W as DEBUG_CONFIG,Q as parseSource,me as reflectLoader,Fe as reflectParserPlugin,ve as setupReflectTypes,re as updateReflectModules};
|
package/package.json
CHANGED
|
@@ -6,5 +6,5 @@ export interface ReflectLoaderOptions {
|
|
|
6
6
|
}
|
|
7
7
|
export declare function reflectLoader(options: ReflectLoaderOptions): {
|
|
8
8
|
outputAllMetas: () => string;
|
|
9
|
-
transform: (sourceCode: string, sourceFileName: string) => string;
|
|
9
|
+
transform: (sourceCode: string, sourceFileName: string) => string | undefined;
|
|
10
10
|
};
|
package/types/raw.d.ts
CHANGED
|
@@ -2,17 +2,23 @@ export interface RawClassDefinition {
|
|
|
2
2
|
name: string;
|
|
3
3
|
superClassName?: string;
|
|
4
4
|
implementations?: string[];
|
|
5
|
+
constructorMethod?: RawMethodDefinition;
|
|
5
6
|
methods?: RawMethodDefinition[];
|
|
6
7
|
properties?: RawPropertyDefinition[];
|
|
7
8
|
genericsParams?: string[];
|
|
9
|
+
fromLib?: boolean;
|
|
8
10
|
}
|
|
9
11
|
export interface RawInterfaceDefinition {
|
|
10
12
|
name: string;
|
|
11
13
|
implementations?: string[];
|
|
12
14
|
methods?: RawMethodDefinition[];
|
|
13
15
|
properties?: RawPropertyDefinition[];
|
|
14
|
-
|
|
16
|
+
index?: {
|
|
17
|
+
keyType?: RawTypeDef;
|
|
18
|
+
valueType: RawTypeDef;
|
|
19
|
+
};
|
|
15
20
|
genericsParams?: string[];
|
|
21
|
+
fromLib?: boolean;
|
|
16
22
|
}
|
|
17
23
|
export interface RawEnumDefinition {
|
|
18
24
|
name: string;
|
|
@@ -20,11 +26,13 @@ export interface RawEnumDefinition {
|
|
|
20
26
|
name: string;
|
|
21
27
|
initializer: string | undefined;
|
|
22
28
|
}[];
|
|
29
|
+
fromLib?: boolean;
|
|
23
30
|
}
|
|
24
31
|
export interface RawTypeAliasDefinition {
|
|
25
32
|
name: string;
|
|
26
33
|
genericParams?: string[];
|
|
27
34
|
type: RawTypeDef;
|
|
35
|
+
fromLib?: boolean;
|
|
28
36
|
}
|
|
29
37
|
export interface RawMethodDefinition {
|
|
30
38
|
name: string;
|
|
@@ -32,6 +40,7 @@ export interface RawMethodDefinition {
|
|
|
32
40
|
isStatic?: boolean;
|
|
33
41
|
isAsync?: boolean;
|
|
34
42
|
returnType?: RawTypeDef;
|
|
43
|
+
isConstructor?: boolean;
|
|
35
44
|
args?: {
|
|
36
45
|
name: string;
|
|
37
46
|
type?: RawTypeDef;
|
|
@@ -57,7 +66,10 @@ export interface RawPropertyDefinition {
|
|
|
57
66
|
export type RawTypeDef = string | RawTypeDefinition;
|
|
58
67
|
export interface RawTypeDefinition {
|
|
59
68
|
arrayElementType?: RawTypeDef;
|
|
60
|
-
|
|
69
|
+
index?: {
|
|
70
|
+
keyType?: RawTypeDef;
|
|
71
|
+
valueType: RawTypeDef;
|
|
72
|
+
};
|
|
61
73
|
literalValue?: unknown;
|
|
62
74
|
typeLiteralMembers?: RawPropertyDefinition[];
|
|
63
75
|
unionMembers?: RawTypeDef[];
|
|
@@ -68,14 +80,14 @@ export interface RawTypeDefinition {
|
|
|
68
80
|
isOptionalInTuple?: boolean;
|
|
69
81
|
isConstructor?: boolean;
|
|
70
82
|
}
|
|
71
|
-
export type
|
|
83
|
+
export type Constructor<T = unknown, A extends unknown[] = unknown[]> = new (...args: A) => T;
|
|
72
84
|
export type Dictionary<T> = {
|
|
73
85
|
[key: string]: T;
|
|
74
86
|
};
|
|
75
87
|
export interface ReflectObject {
|
|
76
|
-
__classDef
|
|
77
|
-
__meta
|
|
78
|
-
registerClass?: (classDef: Dictionary<
|
|
88
|
+
__classDef?: Dictionary<Constructor>;
|
|
89
|
+
__meta?: string;
|
|
90
|
+
registerClass?: (classDef: Dictionary<Constructor>) => void;
|
|
79
91
|
}
|
|
80
92
|
export interface RawReflectMeta {
|
|
81
93
|
classes: Dictionary<RawClassDefinition>;
|
|
@@ -83,8 +95,8 @@ export interface RawReflectMeta {
|
|
|
83
95
|
typeAliases: Dictionary<RawTypeAliasDefinition>;
|
|
84
96
|
constTypes: Dictionary<RawTypeDef>;
|
|
85
97
|
enums: Dictionary<RawEnumDefinition>;
|
|
86
|
-
classDef?: Dictionary<
|
|
98
|
+
classDef?: Dictionary<Constructor>;
|
|
87
99
|
}
|
|
88
100
|
export declare function Dictionary<T = unknown>(obj?: object): Dictionary<T>;
|
|
89
101
|
export declare const primitiveTypes: string[];
|
|
90
|
-
export declare const primitiveMap: Dictionary<
|
|
102
|
+
export declare const primitiveMap: Dictionary<Constructor>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Constructor, Dictionary, RawClassDefinition } from '../raw';
|
|
2
2
|
import type { GenericMethod, MethodDefinition } from './MethodDefinition';
|
|
3
3
|
import type { GenericProperty, PropertyDefinition } from './PropertyDefinition';
|
|
4
4
|
import { type Implementation } from './InterfaceDefinition';
|
|
@@ -8,14 +8,16 @@ export declare class ClassDefinition {
|
|
|
8
8
|
readonly name: string;
|
|
9
9
|
readonly superClassName: string;
|
|
10
10
|
readonly superClass: ClassDefinition | undefined;
|
|
11
|
+
readonly constructorMethod: MethodDefinition | undefined;
|
|
11
12
|
readonly methods: MethodDefinition[];
|
|
12
13
|
readonly properties: PropertyDefinition[];
|
|
13
|
-
readonly
|
|
14
|
+
readonly fromLib: boolean;
|
|
15
|
+
readonly jsClass?: Constructor;
|
|
14
16
|
private readonly _implementationNames;
|
|
15
17
|
private readonly _implementations?;
|
|
16
18
|
private _allImplementations?;
|
|
17
19
|
constructor(def: RawClassDefinition & {
|
|
18
|
-
jsClass
|
|
20
|
+
jsClass?: Constructor;
|
|
19
21
|
});
|
|
20
22
|
get allMethods(): Dictionary<MethodDefinition>;
|
|
21
23
|
get allProperties(): Dictionary<PropertyDefinition>;
|
|
@@ -31,9 +33,10 @@ export declare class GenericClass extends ClassDefinition {
|
|
|
31
33
|
genericArgs: TypeDefinition[];
|
|
32
34
|
properties: GenericProperty[];
|
|
33
35
|
methods: GenericMethod[];
|
|
36
|
+
constructorMethod: MethodDefinition | undefined;
|
|
34
37
|
genericContext: Dictionary<TypeDefinition>;
|
|
35
38
|
static create(proto: ClassDefinition, genericArgs: TypeDefinition[]): GenericClass;
|
|
36
39
|
buildGenericContext(): void;
|
|
37
40
|
}
|
|
38
|
-
export declare function getClassByName(className: string):
|
|
39
|
-
export declare function getClassDefinition(arg:
|
|
41
|
+
export declare function getClassByName(className: string): Constructor | undefined;
|
|
42
|
+
export declare function getClassDefinition(arg: Constructor | object | string): ClassDefinition | undefined;
|
|
@@ -3,6 +3,7 @@ import { type TypeDefinition } from './TypeDefinition';
|
|
|
3
3
|
export declare class EnumDefinition {
|
|
4
4
|
readonly name: string;
|
|
5
5
|
readonly members: Map<string, TypeDefinition>;
|
|
6
|
+
readonly fromLib: boolean;
|
|
6
7
|
constructor(def: RawEnumDefinition);
|
|
7
8
|
get type(): TypeDefinition;
|
|
8
9
|
get names(): string[];
|
|
@@ -11,6 +11,7 @@ export declare class InterfaceDefinition {
|
|
|
11
11
|
private readonly _implementationNames;
|
|
12
12
|
private _implementations?;
|
|
13
13
|
private _allImplementations?;
|
|
14
|
+
readonly fromLib: boolean;
|
|
14
15
|
constructor(def: RawInterfaceDefinition);
|
|
15
16
|
get implementations(): Implementation[];
|
|
16
17
|
get allImplementations(): Implementation[];
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { type Dictionary, type RawMethodDefinition } from '../raw';
|
|
2
2
|
import { type TypeDefinition } from './TypeDefinition';
|
|
3
|
-
type MethodArg
|
|
4
|
-
name: string;
|
|
5
|
-
type: TypeDefinition;
|
|
6
|
-
isOptional: boolean;
|
|
7
|
-
};
|
|
3
|
+
import { type MethodArg } from './package';
|
|
8
4
|
export declare class MethodDefinition {
|
|
9
5
|
protected rawDef: RawMethodDefinition;
|
|
10
6
|
constructor(def: RawMethodDefinition);
|
|
@@ -14,6 +10,7 @@ export declare class MethodDefinition {
|
|
|
14
10
|
get isPrivate(): boolean;
|
|
15
11
|
get isStatic(): boolean;
|
|
16
12
|
get isAsync(): boolean;
|
|
13
|
+
get isConstructor(): boolean;
|
|
17
14
|
}
|
|
18
15
|
export declare function fillMethod(rawMethod: RawMethodDefinition): MethodDefinition;
|
|
19
16
|
export declare class GenericMethod extends MethodDefinition {
|
|
@@ -22,4 +19,3 @@ export declare class GenericMethod extends MethodDefinition {
|
|
|
22
19
|
get args(): MethodArg[];
|
|
23
20
|
get returnType(): TypeDefinition;
|
|
24
21
|
}
|
|
25
|
-
export {};
|
|
@@ -16,7 +16,7 @@ export declare class PropertyDefinition {
|
|
|
16
16
|
get isOptional(): boolean;
|
|
17
17
|
get isPrivate(): boolean;
|
|
18
18
|
get isStatic(): boolean;
|
|
19
|
-
get accessor(): PropertyAccessor;
|
|
19
|
+
get accessor(): PropertyAccessor | undefined;
|
|
20
20
|
get type(): TypeDefinition;
|
|
21
21
|
copy(callback?: (rawDef: RawPropertyDefinition) => void): PropertyDefinition;
|
|
22
22
|
}
|
|
@@ -7,6 +7,9 @@ export declare const anyType: {
|
|
|
7
7
|
export declare const nullType: {
|
|
8
8
|
name: string;
|
|
9
9
|
};
|
|
10
|
+
export declare const undefinedType: {
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
10
13
|
export interface TypeDefinition {
|
|
11
14
|
name?: string;
|
|
12
15
|
arrayElementType?: TypeDefinition;
|
|
@@ -19,8 +22,12 @@ export interface TypeDefinition {
|
|
|
19
22
|
isOptionalInTuple?: boolean;
|
|
20
23
|
isConstructor?: boolean;
|
|
21
24
|
generics?: TypeDefinition[];
|
|
22
|
-
|
|
25
|
+
index?: {
|
|
26
|
+
keyType?: TypeDefinition;
|
|
27
|
+
valueType: TypeDefinition;
|
|
28
|
+
};
|
|
23
29
|
classDefinition?: ClassDefinition;
|
|
30
|
+
fromLib?: boolean;
|
|
24
31
|
}
|
|
25
32
|
export declare function isIgnoredType(type: TypeDefinition): boolean;
|
|
26
33
|
export declare function isPrimitiveType(type: TypeDefinition): type is {
|
|
@@ -51,7 +58,10 @@ export declare function hasGenerics(type: TypeDefinition): type is {
|
|
|
51
58
|
generics: TypeDefinition[];
|
|
52
59
|
};
|
|
53
60
|
export declare function isIndexType(type: TypeDefinition): type is {
|
|
54
|
-
|
|
61
|
+
index: {
|
|
62
|
+
keyType?: TypeDefinition;
|
|
63
|
+
valueType: TypeDefinition;
|
|
64
|
+
};
|
|
55
65
|
};
|
|
56
66
|
export declare function getTypeDefinition(typeName: string, genericArgs?: TypeDefinition[]): TypeDefinition;
|
|
57
67
|
export declare function fillType(rawType: RawTypeDefinition | string | undefined, genericContext?: Dictionary<TypeDefinition>, genericArgs?: TypeDefinition[]): TypeDefinition;
|
|
@@ -3,4 +3,5 @@ export { getClassDefinition, getClassByName, ClassDefinition } from './ClassDefi
|
|
|
3
3
|
export { getInterfaceDefinition, InterfaceDefinition } from './InterfaceDefinition';
|
|
4
4
|
export { getTypeAliasDefinition, TypeAliasDefinition } from './TypeAliasDefinition';
|
|
5
5
|
export { getEnumDefinition, getEnumNames, getEnumValues, EnumDefinition } from './EnumDefinition';
|
|
6
|
+
export * from './json';
|
|
6
7
|
export * from './validates';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { JSONString } from './types';
|
|
2
|
+
import { type Type } from '../validates';
|
|
3
|
+
export declare class JSONTransfer {
|
|
4
|
+
exceptionHandler: (error: JSONError) => void;
|
|
5
|
+
constructor(exceptionHandler?: (error: JSONError) => void);
|
|
6
|
+
parse<T = unknown>(jsonString: JSONString<T>, type?: Type): T;
|
|
7
|
+
private convertJSONValue;
|
|
8
|
+
private convertJSONObjectAsClassInstance;
|
|
9
|
+
}
|
|
10
|
+
export declare class JSONError extends Error {
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './JSONTransfer';
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import type { Dictionary } from '../raw';
|
|
2
|
-
import
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
export
|
|
1
|
+
import type { Constructor, Dictionary } from '../raw';
|
|
2
|
+
import { ClassDefinition, GenericClass } from './ClassDefinition';
|
|
3
|
+
import type { GenericInterface, InterfaceDefinition } from './InterfaceDefinition';
|
|
4
|
+
import type { TypeDefinition } from './TypeDefinition';
|
|
5
|
+
export type MethodArg = {
|
|
6
|
+
name: string;
|
|
7
|
+
type: TypeDefinition;
|
|
8
|
+
isOptional: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function createInstance<S, T extends S, A extends unknown[] = unknown[]>(constructor: Constructor<T, A>, proto?: S): T;
|
|
11
|
+
export declare function buildPropertiesAndMethods(ret: GenericClass, proto: ClassDefinition): void;
|
|
12
|
+
export declare function buildPropertiesAndMethods(ret: GenericInterface, proto: InterfaceDefinition): void;
|
|
6
13
|
export declare function toDictionary<T, R>(arr: T[], handler: (item: T) => [string, R]): Dictionary<R>;
|
|
7
14
|
export declare function mapNotNull<T, U>(arr: T[] | undefined, mapper: (item: T) => U | undefined): U[];
|
|
8
15
|
export declare function setValue<T>(target: unknown, field: string | symbol, value: T): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TypeDefinition } from './TypeDefinition';
|
|
2
2
|
import type { RawTypeDef } from '../raw';
|
|
3
3
|
import type { TypeAliasDefinition } from './TypeAliasDefinition';
|
|
4
|
-
declare const SpecialTypes: readonly ["Partial", "Required", "Readonly", "Pick", "Omit", "Extract", "Exclude"];
|
|
4
|
+
declare const SpecialTypes: readonly ["Partial", "Required", "Readonly", "Record", "Pick", "Omit", "Extract", "Exclude"];
|
|
5
5
|
type SpecialTypeName = (typeof SpecialTypes)[number];
|
|
6
6
|
export declare function isSpecialType(typeDef: RawTypeDef): typeDef is SpecialTypeName;
|
|
7
7
|
export declare function getSpecialTypeAlias(name: SpecialTypeName, args: [targetType: TypeDefinition, refType?: TypeDefinition]): TypeAliasDefinition | undefined;
|
|
@@ -15,3 +15,5 @@ export declare function getTypeDef(type: Type | TypeDefinition): TypeDefinition;
|
|
|
15
15
|
export declare function assertType<T>(data: unknown, type: Type, depth?: number): T;
|
|
16
16
|
export declare function isNullable(type: Type | TypeDefinition): boolean;
|
|
17
17
|
export declare function isType(value: unknown, type: Type | TypeDefinition, depth?: number): boolean;
|
|
18
|
+
export declare class TypeParseError extends Error {
|
|
19
|
+
}
|
|
@@ -1,18 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
readonly
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import type { TypeDefinition } from '../TypeDefinition';
|
|
2
|
+
import type { Type } from './Type';
|
|
3
|
+
export type ValidateResult = SuccessResult | FailureResult;
|
|
4
|
+
declare class SuccessResult {
|
|
5
|
+
readonly success = true;
|
|
6
|
+
}
|
|
7
|
+
declare class FailureResult {
|
|
8
|
+
errorCode: number;
|
|
9
|
+
errorDesc: string;
|
|
10
|
+
readonly success = false;
|
|
11
|
+
readonly cause?: FailureResult;
|
|
12
|
+
readonly value?: unknown;
|
|
13
|
+
readonly type?: TypeDefinition | Type;
|
|
14
|
+
constructor(errorCode: number, errorDesc: string, detail: {
|
|
15
|
+
cause?: FailureResult;
|
|
16
|
+
value?: unknown;
|
|
17
|
+
type?: TypeDefinition | Type;
|
|
18
|
+
});
|
|
9
19
|
get errorStackFlow(): string;
|
|
10
20
|
get errorMessage(): string;
|
|
11
21
|
}
|
|
12
|
-
|
|
22
|
+
export declare const successResult: SuccessResult;
|
|
23
|
+
export declare const failedResult: (errorCode: number, errorDesc: string, detail: {
|
|
13
24
|
cause?: FailureResult;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
25
|
+
value?: unknown;
|
|
26
|
+
type?: TypeDefinition | Type;
|
|
27
|
+
}) => FailureResult;
|
|
17
28
|
export declare function getErrorTraceMessages(failureResult: FailureResult): string;
|
|
29
|
+
export declare class ValidationError extends Error {
|
|
30
|
+
failureResult?: FailureResult;
|
|
31
|
+
constructor(message: string, failureResult?: FailureResult);
|
|
32
|
+
}
|
|
33
|
+
export declare const ReflectConfig: {
|
|
34
|
+
validationErrorHandler: (e: ValidationError) => void;
|
|
35
|
+
};
|
|
18
36
|
export {};
|
|
@@ -5,5 +5,5 @@ declare global {
|
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
export declare const ReflectValidate: MethodDecorator;
|
|
8
|
-
export declare function safeCall<R>(target: object, methodName: string, ...args: unknown[]): R;
|
|
8
|
+
export declare function safeCall<R>(target: object, methodName: string, ...args: unknown[]): R | undefined;
|
|
9
9
|
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type TypeDefinition } from '../TypeDefinition';
|
|
2
|
-
import type { ConstructorFunction } from '../../raw';
|
|
3
2
|
import type { ValidateResult } from './ValidateResult';
|
|
4
|
-
export declare const preservedTypes:
|
|
3
|
+
export declare const preservedTypes: Function[];
|
|
5
4
|
export declare function validateValue(value: unknown, type: TypeDefinition, depth?: number): ValidateResult;
|
|
6
5
|
export declare function validateClassInstance<T extends object>(instance: T, typeDef: TypeDefinition, depth?: number): ValidateResult;
|
|
7
6
|
export declare function safeSetValue(target: object, propName: string, value: unknown): void;
|