ts-ref-kit 1.1.6 → 1.1.8
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 +2 -2
- package/types/index.d.ts +0 -1
- package/types/parser/reflect-loader.d.ts +1 -1
- package/types/raw.d.ts +13 -5
- package/types/reflect-types/ClassDefinition.d.ts +9 -4
- package/types/reflect-types/EnumDefinition.d.ts +6 -0
- package/types/reflect-types/InterfaceDefinition.d.ts +2 -0
- package/types/reflect-types/MethodDefinition.d.ts +2 -6
- package/types/reflect-types/PropertyDefinition.d.ts +2 -2
- package/types/reflect-types/TypeAliasDefinition.d.ts +8 -0
- package/types/reflect-types/TypeDefinition.d.ts +2 -2
- package/types/reflect-types/index.d.ts +5 -5
- package/types/reflect-types/package.d.ts +12 -5
- package/types/reflect-types/raw-meta.d.ts +2 -1
- package/types/reflect-types/special-types.d.ts +1 -1
- package/types/reflect-types/{Type.d.ts → validates/Type.d.ts} +7 -2
- package/types/reflect-types/{ValidateResult.d.ts → validates/ValidateResult.d.ts} +12 -3
- package/types/reflect-types/validates/index.d.ts +4 -0
- package/types/reflect-types/{instance-validate.d.ts → validates/instance-validate.d.ts} +1 -1
- package/types/reflect-types/{method-validate.d.ts → validates/method-validate.d.ts} +1 -1
- package/types/reflect-types/{value-validate.d.ts → validates/value-validate.d.ts} +2 -3
- package/types/reflect-json/Mappable.d.ts +0 -13
- package/types/reflect-json/decorate.d.ts +0 -17
- package/types/reflect-json/index.d.ts +0 -6
- package/types/reflect-json/json-translation.d.ts +0 -61
- package/types/reflect-json/reflect-extension.d.ts +0 -13
- package/types/reflect-json/types.d.ts +0 -7
- package/types/reflect-json/utils.d.ts +0 -10
- package/types/reflect-types/reflect-context.d.ts +0 -22
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(we,"getErrorTraceMessages");var Re=class Re{constructor(t){this.rawDef=t}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 d(this.rawDef.type)}get rawDefinition(){return h(this.rawDef)}};o(Re,"PropertyDefinition");var C=Re;function Z(e){return new C(e)}o(Z,"fillProperty");var U=class U extends C{static create(t,n){let i=w(U,t);return i.genericContext=n,i}get type(){return d(this.rawDef.type,this.genericContext)}};o(U,"GenericProperty");var W=U;var Se=class Se{constructor(t){this.rawDef=t}get name(){return this.rawDef.name}get returnType(){return d(this.rawDef.returnType)}get args(){var t;return((t=this.rawDef.args)==null?void 0:t.map(n=>({name:n.name,type:d(n.type),isOptional:n.isOptional})))||[]}get isPrivate(){return this.rawDef.isPrivate}get isStatic(){return this.rawDef.isStatic}get isAsync(){return this.rawDef.isAsync}};o(Se,"MethodDefinition");var q=Se;function H(e){return new q(e)}o(H,"fillMethod");var Q=class Q extends q{static create(t,n){let i=w(Q,t);return i.genericContext=n,i}get args(){var t;return((t=this.rawDef.args)==null?void 0:t.map(n=>({name:n.name,type:d(n.type,this.genericContext),isOptional:n.isOptional})))||[]}get returnType(){return d(this.rawDef.returnType,this.genericContext)}};o(Q,"GenericMethod");var Y=Q;function w(e,t){let n=Object.create(e.prototype);return Object.assign(n,t),n}o(w,"createInstance");function X(e,t){e.properties=t.properties.map(n=>W.create(n,e.genericContext)),e.methods=t.methods.map(n=>Y.create(n,e.genericContext))}o(X,"buildPropertiesAndMethods");function Pe(e,t){let n={};return e.forEach(i=>{let[r,s]=t(i);n[r]=s}),n}o(Pe,"toDictionary");function ee(e,t){return(e==null?void 0:e.map(t).filter(n=>n!==void 0))||[]}o(ee,"mapNotNull");function k(e,t){if(e!==void 0)return e[t]}o(k,"getValue");function h(e){return JSON.parse(JSON.stringify(e))}o(h,"copy");var Oe=class Oe{constructor(t){this.name=t.name,this.members=new Map,t.members.forEach(n=>{let i=n.initializer===void 0?{name:"number"}:{literalValue:n.initializer};this.members.set(n.name,i)})}get type(){return{name:this.name,unionMembers:Array.from(this.members.values())}}get names(){return Array.from(this.members.keys())}};o(Oe,"EnumDefinition");var te=Oe;var Ct=["Partial","Required","Readonly","Pick","Omit","Extract","Exclude"];function it(e){return typeof e=="string"&&Ct.includes(e)}o(it,"isSpecialType");function It(e,t,n,i){switch(e){case"Partial":t=Et(n);break;case"Required":t=Vt(n);break;case"Readonly":t=Nt(n);break;case"Pick":t=st(n,i);break;case"Omit":t=at(n,i);break;case"Extract":t=Jt(n,i);break;case"Exclude":t=At(n,i);break}return t}o(It,"getSpecialType");function rt(e,t){let[n,i]=t,r,s=["Pick","Omit","Extract","Exclude"].includes(e)?["T"]:["T","K"];return r=It(e,r,n,i),r?{name:e,type:r,genericParams:s,rawType:e}:void 0}o(rt,"getSpecialTypeAlias");function $(e,t){return e.typeLiteralMembers?{typeLiteralMembers:e.typeLiteralMembers.map(n=>{let i=h(n.rawDefinition);return t(i),new C(i)})}:e.unionMembers?{unionMembers:e.unionMembers.map(n=>$(n,t))}:e.intersectionMembers?{intersectionMembers:e.intersectionMembers.map(n=>$(n,t))}:void 0}o($,"getMappedType");function ot(e,t){if(e.typeLiteralMembers)return{typeLiteralMembers:e.typeLiteralMembers.map(n=>t(n)?h(n):void 0).filter(n=>!!n)}}o(ot,"getFilterKeyType");function Et(e){return $(e,t=>t.isOptional=!0)}o(Et,"getPartialType");function Vt(e){return $(e,t=>t.isOptional=!1)}o(Vt,"getRequiredType");function Nt(e){return $(e,t=>t.isReadonly=!0)}o(Nt,"getReadonlyType");function st(e,t){var i;let n=(i=t.unionMembers)==null?void 0:i.map(r=>r.name);if(e.typeLiteralMembers)return ot(e,r=>r.name===t.literalValue||(n==null?void 0:n.includes(r.name)))}o(st,"getPickType");function at(e,t){var i;let n=(i=t.unionMembers)==null?void 0:i.map(r=>r.name);if(e.typeLiteralMembers)return ot(e,r=>!(r.name===t.literalValue||n!=null&&n.includes(r.name)))}o(at,"getOmitType");function Jt(e,t){if(e.typeLiteralMembers&&t.typeLiteralMembers){let n={unionMembers:t.typeLiteralMembers.map(i=>({literalValue:i.name}))};return st(e,n)}}o(Jt,"getExtractType");function At(e,t){if(e.typeLiteralMembers&&t.typeLiteralMembers){let n={unionMembers:t.typeLiteralMembers.map(i=>({literalValue:i.name}))};return at(e,n)}}o(At,"getExcludeType");var F=Reflect,I;function S(){if(I)return I;let e=F.__meta;if(e===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{I=JSON.parse(atob(e))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}return delete F.__meta,I.classDef=F.__classDef||{},delete F.__classDef,F.registerClass=t=>{Object.assign(I.classDef,t)},I}o(S,"getRawMeta");var ne=new Map,je=new Map,Ce=new Map,Ie=new Map,kt=new Map,$t=o((e=>{kt.set(e.name,e)}),"ReflectClass"),Ft={string:String,number:Number,boolean:Boolean,object:Object};function ie(e){var t;return((t=y(e))==null?void 0:t.jsClass)||Ft[e]}o(ie,"getClassByName");function y(e){var t,n,i;switch(typeof e){case"object":return y(e.constructor);case"function":let r=y(e.name);if(r)return r;let s=Array.from(ne.values()).find(l=>l.jsClass===e);if(s)return s;let a=(t=Object.entries(S().classDef||{}).find(([l,u])=>u===e))==null?void 0:t[0];return a?y(a):void 0;case"string":let c=e;if(!ne.has(c)){let l=(n=S().classes)==null?void 0:n[c];if(!l)return;let u=(i=S().classDef)==null?void 0:i[c];ne.set(c,new v(nt(J({},l),{jsClass:u})))}return ne.get(c)}}o(y,"getClassDefinition");function P(e){var t;if(!je.has(e)){let n=(t=S().interfaces)==null?void 0:t[e];if(!n)return;je.set(e,new O(n))}return je.get(e)}o(P,"getInterfaceDefinition");function z(e){var t;if(!Ce.has(e)){let n=(t=S().enums)==null?void 0:t[e];if(!n)return;Ce.set(e,new te(n))}return Ce.get(e)}o(z,"getEnumDefinition");function zt(e){var t;return((t=z(e))==null?void 0:t.names)||[]}o(zt,"getEnumNames");function vt(e){let t=Object.entries(e)[0];if(!t)return[];let[n,i]=t,r=z(n);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(vt,"getEnumValues");function Ee(e,t){var i;if(it(e))return!t||!t[0]?void 0:rt(e,[t[0],t[1]]);if(!Ie.has(e)){let r=(i=S().typeAliases)==null?void 0:i[e];if(!r||!r.type)return;Ie.set(e,{name:e,rawType:r.type,type:d(r.type),genericParams:r.genericParams})}let n=h(Ie.get(e));if(n.genericParams&&t){let r={};for(let s=0;s<n.genericParams.length;s++){let a=n.genericParams[s];r[a]=t[s]}n.type=d(n.rawType,r,t)}return n}o(Ee,"getTypeAliasDefinition");var oe=class oe{constructor(t){var n,i;this.name=t.name,this._implementationNames=t.implementations||[],this.methods=((n=t.methods)==null?void 0:n.map(H))||[],this.properties=((i=t.properties)==null?void 0:i.map(Z))||[],this.generics=t.genericsParams}get implementations(){return this._implementations||(this._implementations=ee(this._implementationNames,t=>{var n;return P(t)||((n=y(t))==null?void 0:n.type)||D(t)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let t=new Set(this.implementations);this.implementations.forEach(n=>{n instanceof oe?n.allImplementations.forEach(i=>t.add(i)):t.add(n)}),this._allImplementations=Array.from(t)}return this._allImplementations}get type(){let t={};return this.allImplementations.forEach(n=>{let r=("type"in n?n.type:n).typeLiteralMembers;r==null||r.forEach(s=>t[s.name]=s)}),this.properties.forEach(n=>t[n.name]=n),{name:this.name,typeLiteralMembers:Object.values(t)}}toString(){return`interface ${this.name}`}};o(oe,"InterfaceDefinition");var O=oe,se=class se extends O{static create(t,n){let i=w(se,t);i.genericArgs=n;let r=i;return r.buildGenericContext(),X(r,t),r}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((n,i)=>this.genericContext[n]=this.genericArgs[i])}};o(se,"GenericInterface");var re=se;var Ve=class Ve{constructor(t){var n,i;this.name=t.name,this.superClassName=t.superClassName||"Object",this.superClass=y(this.superClassName),this._implementationNames=t.implementations||[],this.methods=((n=t.methods)==null?void 0:n.map(H))||[],this.properties=((i=t.properties)==null?void 0:i.map(Z))||[],this.jsClass=t.jsClass,this.generics=t.genericsParams}get allMethods(){let t={};if(this.superClassName!=="Object"){let n=y(this.superClassName);n&&Object.assign(t,J({},n.allMethods))}return Object.assign(t,J({},Pe(this.methods,n=>[n.name,n]))),t}get allProperties(){var t;return Object.assign(((t=this.superClass)==null?void 0:t.allProperties)||{},Pe(this.properties,n=>[n.name,n]))}get implementations(){return this._implementations?this._implementations:ee(this._implementationNames,t=>P(t)||D(t))}get allImplementations(){var t,n;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof O?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(n=(t=this.superClass)==null?void 0:t.allImplementations)==null||n.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(t){return this.properties.find(n=>n.name===t)}get type(){var n,i;let t={};return(i=(n=this.superClass)==null?void 0:n.type.typeLiteralMembers)==null||i.forEach(r=>t[r.name]=r),this.properties.forEach(r=>t[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(t)}}isSubClassOf(t){var n;return this.name===t||(n=this.superClass)!=null&&n.isSubClassOf(t)?!0:this.implementations.map(i=>i.name).includes(t)}isSuperClassOf(t){if(this.name===t)return!0;let n=y(t);return n?n.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(Ve,"ClassDefinition");var v=Ve,ce=class ce extends v{static create(t,n){let i=w(ce,t);i.genericArgs=n;let r=i;return r.buildGenericContext(),X(r,t),r}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((n,i)=>this.genericContext[n]=this.genericArgs[i])}};o(ce,"GenericClass");var ae=ce;var Ne=[Promise,Date,Map,Set,Error,Function];function T(e,t,n=1){switch(!0){case t.name==="undefined":return e===void 0?p:f(100,`declared as ${m(t)} but actually not`);case lt(t):return p;case de(t):return e instanceof Object?Je(e,t,n):f(200,`declared as ${m(t)} but actually not an object`);case le(t):return Lt(e,t,n);case ye(t):return _t(e,t,n);case pe(t):for(let i of t.unionMembers||[])if(T(e,i,n).success)return p;return f(320,`declared as ${m(t)} but all value not match`);case me(t):for(let i of t.intersectionMembers||[]){let r=T(e,i,n);if(!r.success)return f(330,`declared as ${m(t)} but all value not match`,r)}return p;case ke(t):return Bt(e,t,n);case fe(t):switch(typeof e){case"string":return e===Wt(t.literalValue)?p:f(110,`declared as string ${m(t)} but value not match`);case"number":return e===Number(t.literalValue)?p:f(111,`declared as number ${m(t)} but value not match`);case"bigint":return e===BigInt(t.literalValue)?p:f(112,`declared as bigint ${m(t)} but value not match`);case"boolean":return e===!!t.literalValue?p:f(113,`declared as boolean ${m(t)} but value not match`);default:return t.literalValue==="null"&&e===null?p:e===t.literalValue?p:f(114,`declared as ${m(t)} but value not match`)}case ue(t):return Gt(e,t,n);case t.isFunction:case t.isConstructor:return typeof e=="function"?p:f(150,`declared as ${m(t)} but actually not`);case Ae(t):return e==null?f(120,`declared as ${m(t)} but actually ${e}`):typeof e===t.name?p:f(121,`declared as ${m(t)} but actually ${typeof e}`);default:return Kt(e,t,n)}}o(T,"validateValue");function Lt(e,t,n=1){if(!Array.isArray(e))return f(300,`declared as ${m(t)} but actually not`);if(n===0)return p;for(let i=0;i<e.length;i++){let r=e[i],s=T(r,t.arrayElementType||b,n-1);if(!s.success)return f(301,`declared as ${m(t)} but [${i}] not match`,s)}return p}o(Lt,"validateArrayValue");function Bt(e,t,n=1){if(e===null)return f(400,"declared as indexedType but actually is null");if(typeof e=="object")return f(410,`declared as indexedType but actually is ${typeof e}`);for(let i of Object.values(e)){let r=T(i,t.indexElementType,n-1);if(!r.success)return f(420,`declared as ${m(t)} but actually not match`,r)}return p}o(Bt,"validateIndexedValue");function _t(e,t,n=1){if(!Array.isArray(e))return f(310,`declared as ${m(t)} but actually not a tuple`);if(n===0)return p;let i=0;for(let r of t.tupleMembers){let s=e[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=T(e[i],r,n);if(!a.success)return f(311,`declared as ${m(t)} but not all values in tuple match`,a)}return p}o(_t,"validateTupleValue");function Gt(e,t,n=1){if(e instanceof Object){for(let i of t.typeLiteralMembers||[]){if(i.isStatic)return p;if(i.name.startsWith("[")&&i.name.endsWith("]"))return p;if(n===0)return p;let r=i.type||b;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=k(e,i.name),a=T(s,r,n-1);if(!a.success)return f(211,`declared ${i.name} as ${m(r)}, but not match`,a)}return p}else return f(210,`declared as ${m(t)} but not an object`)}o(Gt,"validateProperties");function Kt(e,t,n=1){let i=typeof t=="string"?t:t.name;if(!i)return p;if(e===void 0)return f(130,`declared as ${m(t)} but actually undefined`);if(e===null)return i==="null"?p:f(131,`declared as ${m(t)} but actually null`);for(let s of Ne)if(i===s.name)return e instanceof s?p:f(132,`declared as ${m(t)} but actually ${e.constructor.name}`);if(e instanceof Object&&!ct(e,i))return f(133,`declared as ${m(t)} but actually not instance of it`);if(n==0)return p;let r=T(e,D(i),n);return r.success?p:f(134,`declared as ${m(t)} but actually not match`,r)}o(Kt,"validateSimpleValue");function Je(e,t,n=3){if(t.classDefinition&&!ct(e,t.classDefinition.name))return f(201,`declared as instance of ${m(t)} but actually not`);if(t.name!=="any"&&t===b)return f(202,`${m(t)} not defined`);let i=h(t);return delete i.classDefinition,T(e,t,n)}o(Je,"validateClassInstance");function ct(e,t){if(e===void 0||e.constructor.name===t)return!0;let n=y(t);if(!n)return!0;if(n.jsClass)return e instanceof n.jsClass;let i=y(e);return i?i.isSubClassOf(n.name):!1}o(ct,"valueInstanceOf");function Wt(e){return e.length>=2&&(e[0]==='"'&&e[e.length-1]==='"'||e[0]==="'"&&e[e.length-1]==="'")?e.substring(1,e.length-1):e}o(Wt,"trimQuotes");function m(e){var t,n,i,r;return typeof e=="string"?e:de(e)?e.classDefinition.name:le(e)?(((t=e.arrayElementType)==null?void 0:t.name)||"unknown")+"[]":e.isConstructor?"Class":e.isFunction?"Function":ue(e)?"Object":ye(e)?`(${e.tupleMembers.map(m).join(",")})`:pe(e)?((n=e.unionMembers)==null?void 0:n.map(m).join(" | "))||"unknown":me(e)?((i=e.intersectionMembers)==null?void 0:i.map(m).join(" & "))||"unknown":fe(e)?e.literalValue:ke(e)?`{ [key]: ${((r=e.indexElementType)==null?void 0:r.name)||"unknown"} }`:e.name||"unknown"}o(m,"getTypeDisplayName");var b={name:"any"},Ut={name:"null"},ft=["string","number","boolean","bigint","symbol"];function lt(e){return!!(e.name&&["any","void","unknown"].includes(e.name))}o(lt,"isIgnoredType");function Ae(e){return!!(e.name&&ft.includes(e.name))}o(Ae,"isPrimitiveType");function le(e){return!!e.arrayElementType}o(le,"isArrayType");function fe(e){return!!e.literalValue}o(fe,"isLiteralType");function ue(e){return!!e.typeLiteralMembers}o(ue,"isTypeLiteralType");function pe(e){return!!e.unionMembers}o(pe,"isUnionType");function me(e){return!!e.intersectionMembers}o(me,"isIntersectionType");function ye(e){return!!e.tupleMembers}o(ye,"isTupleType");function de(e){return!!e.classDefinition}o(de,"isClassDefinition");function Zt(e){return!!e.generics}o(Zt,"hasGenerics");function ke(e){return!!e.indexElementType}o(ke,"isIndexType");function D(e,t){if(e==="any"||e==="Any"||e==="unknown"||e==="")return b;if(e==="null")return Ut;let n=y(e);if(n)return t?ae.create(n,t).type:n.type;if(ft.includes(e))return{name:e};if(Ne.map(a=>a.name).includes(e))return{name:e,generics:t};let i=P(e);if(i)return t?re.create(i,t).type:i.type;let r=z(e);if(r)return r.type;let s=Ee(e,t);return s?s.type:b}o(D,"getTypeDefinition");var $e=new Map;function d(e,t,n){let i=Fe(e);if(e===void 0)return b;let r=$e.get(i);if(r)return r;let s={};if($e.set(i,s),typeof e=="string")s=(t==null?void 0:t[e])||D(e,n)||b;else if(e.arrayElementType)Object.assign(s,{arrayElementType:d(e.arrayElementType,t)});else if(e.unionMembers)Object.assign(s,{unionMembers:e.unionMembers.map(a=>d(a,t))});else if(e.intersectionMembers)Object.assign(s,{intersectionMembers:e.intersectionMembers.map(a=>d(a,t))});else if(e.tupleMembers)Object.assign(s,{tupleMembers:e.tupleMembers.map(a=>d(a,t))});else if(e.generics){let a=e.generics[0],c=e.generics.slice(1).map(l=>d(l,t));Object.assign(s,d(a,t,c))}else e.indexElementType&&Object.assign(s,{indexElementType:d(e.indexElementType,t)});return Object.keys(s).length===0&&(s=b),$e.delete(i),s}o(d,"fillType");function Fe(e){return e===null?"null":e===void 0?"undefined":typeof e!="object"?JSON.stringify(e):Array.isArray(e)?"["+e.map(Fe).join(",")+"]":"{"+Object.keys(e).sort().map(n=>JSON.stringify(n)+":"+Fe(e[n])).join(",")+"}"}o(Fe,"stableStringify");var Te={isPrimitiveType:Ae,isArrayType:le,isLiteralType:fe,isTypeLiteralType:ue,isUnionType:pe,isIntersectionType:me,isTupleType:ye,isClassDefinition:de,hasGenerics:Zt};function g(e){if(typeof e=="string"){let t=Qt(e);if(typeof t=="string"){let n=t.match(/\"(.+)\"$/)||t.match(/\'(.+)\'$/);if(n!=null&&n[1])return{literalValue:n[1]}}return typeof t=="string"?D(e):g(t)}return Array.isArray(e)?D(e[0],e.slice(1).map(g)):"array"in e?{arrayElementType:g(e.array)}:"union"in e?{unionMembers:e.union.map(g)}:"intersection"in e?{intersectionMembers:e.intersection.map(g)}:"tuple"in e?{tupleMembers:e.tuple.map(g)}:e}o(g,"getTypeDef");function qt(e,t,n=5){let i=T(e,g(t),n);if(!i.success){console.error(`assert failed with type: ${t}
|
|
4
|
-
${
|
|
5
|
-
${l.errorStackFlow}`);return a},"checkValue"),r=t.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||b),n instanceof Promise?n.then(a=>i(a,r||b)):i(n,r||b)}o(nn,"validateMethodReturnValue");function ze(e,t){var n;return`${e}.${t.name}(${(n=t.args)==null?void 0:n.map(i=>i.name).join(", ")})`}o(ze,"getMethodDescription");function rn(e,t,...n){let i=y(e);if(!i)return;let r=i.allMethods[t];if(r)return mt(e,r,n),k(e,t).apply(e,n)}o(rn,"safeCall");var or=require("reflect-metadata");function ve(e){return String(e).toLocaleLowerCase()==="false"?!1:!!e}o(ve,"asBoolean");function E(e){return e==null||Number.isNaN(e)||e instanceof Date&&String(e)==="Invalid Date"?"":typeof e=="symbol"?e.description||"":String(e)}o(E,"asString");function be(e){return e?e instanceof Date?e.getDate():Number(e):0}o(be,"asNumber");function M(e,t,n){e[t]=n}o(M,"setAnyValue");function B(e,t){return e[t]}o(B,"getAnyValue");function on(e,t,n){let i=e[t];if(i!==void 0)return i;let r=n();return M(e,t,r),r}o(on,"getOrSetValue");function Le(e){return typeof e=="object"&&e!==null&&e.constructor===Object}o(Le,"isDictionary");function Be(e,t){let n=Object.create(e.prototype);return Object.assign(n,t||{}),n}o(Be,"createInstance");function _e(e){return((t,n)=>Reflect.defineMetadata(e,n,t.constructor))}o(_e,"defineDecoratedProperty");function Ge(e,t,...n){let i=Ke(e,t);if(i!==void 0&&i instanceof Function)return i.apply(e,n)}o(Ge,"callDecoratedMethod");function sn(e,t){let n=Ke(e,t);return n!==void 0&&n instanceof Function}o(sn,"hasDecoratedMethod");function yt(e,t){return Reflect.getMetadata(t,e.constructor)}o(yt,"getDecoratedProperty");function Ke(e,t){let n=yt(e,t);if(n!==void 0)return B(e,n)}o(Ke,"getDecoratedPropertyValue");var R=o(function({getter:e,setter:t,fieldSymbol:n}){return(i,r)=>{Object.defineProperty(i,r,{get:o(function(){return e?e(this,r):R.getField(i,r,n)},"get"),set:o(function(s){t?t(this,s,r):R.setField(i,r,s,n)},"set")})}},"PropertyWrapper");M(R,"getField",(e,t,n)=>{var i;return(i=B(e,n))==null?void 0:i[t]});M(R,"setField",(e,t,n,i)=>{let r=B(e,i)||{};r[t]=n,M(e,i,r)});function an(e){let t=Symbol("lazy");return R({getter:o((n,i)=>{let r=R.getField(n,i,t);if(r)return r.value;let s=e(n,i);return R.setField(n,i,{value:s},t),s},"getter"),setter:o(()=>{},"setter"),fieldSymbol:t})}o(an,"Lazy");var _=Symbol("JSON_SERIALIZED"),dt=Symbol("AFTER_SERIALIZED"),Qe=class Qe{constructor(){this.settingsByName={};this.settingsBySerializedName={};this.ignoredProperties=[];this.defaultIgnored=!1}add(t){this.settingsByName[t.propName]=t,this.settingsBySerializedName[t.serializedName]=t}isPropertyIgnored(t){return this.defaultIgnored&&!this.settingsByName[t]?!0:this.ignoredProperties.indexOf(t)!==-1}};o(Qe,"SerializeSettings");var We=Qe,He=class He{constructor(t,n,i){this.target=t;this.propName=n;this.options=i;this.isArray=Reflect.getDesignType(t,n)===Array,this.serializedName=i.name||E(n),this.class=i.class,this.fromJSON=this.createBuilder(),this.toJSON=i.toJSON||(r=>Ye(r))}createBuilder(){if(this.options.fromJSON)return this.options.fromJSON;if(this.class&&this.class instanceof Function){let t=this.class;return n=>{let i=Me.get(t);return i?i.fromJson(n):he(n,t)}}else return t=>mn(this.target,this.propName,t)}};o(He,"SerializedPropertySetting");var Ue=He;function Ze(e,t){qe(e,n=>{n.defaultIgnored=t})}o(Ze,"setDefaultIgnored");function G(e,t,n){let i=V(e);qe(i,r=>{r.add(new Ue(e,t,n))})}o(G,"registerSerializedProperty");function qe(e,t){let n=Reflect.getMetadata(_,e);n===void 0&&(n=new We),t(n),Reflect.defineMetadata(_,n,e)}o(qe,"updateSerializeSettings");var cn=Tt();function Tt(e){return e=e||{},(t,n)=>G(t,E(n),e)}o(Tt,"Serialized");function ln(e){return(t,n)=>G(t,E(n),{name:e})}o(ln,"SerializedName");var fn=o((e,t)=>qe(V(e),n=>n.ignoredProperties.push(t)),"IgnoreSerialization");function un(e){return JSON.stringify(typeof e=="object"?De(e):e)}o(un,"serialize");function Ye(e){if(e===void 0)throw new Error("attempt to serialize undefined value");if(e===null)return null;if(typeof e=="object"){let t=Me.get(V(e));return t?t.toJson(e):De(e)}return e}o(Ye,"serializeTo");function De(e){var s;if(e instanceof Array)return e.map(a=>De(a));if(Le(e)){let a={};return Object.entries(e).forEach(c=>{let[l,u]=c;a[l]=Ye(u)}),a}let t=V(e);((s=y(t))==null?void 0:s.isSubClassOf("Mappable"))&&xe(t);let i=Reflect.getMetadata(_,t);if(i===void 0)return e;let r={};return Object.entries(e).forEach(a=>{let c=a[0];if(i.isPropertyIgnored(c))return;let l=a[1];if(l===void 0||l instanceof Function||typeof l=="symbol")return;let u=i.settingsByName[c],x=(u==null?void 0:u.serializedName)||c;u&&(u.isArray?l=l.map(K=>u.toJSON(K)):l=u.toJSON(l)),r[x]=l}),r}o(De,"serializeToData");function he(e,t){var n;if(typeof e=="string"&&(e=JSON.parse(e)),t===null||t===void 0)return e;try{let i=e,r=V(t),s=(n=y(r))==null?void 0:n.isSubClassOf("Mappable");s&&xe(r);let a=Me.get(r);if(a)return a.fromJson(i);let c=t instanceof Function?Be(t):t;if(typeof c=="object"&>(i,c),s){let l=L(c,r.name);if(!l.success)throw new Error(`JSON deserialize validate failed: ${we(l)} `)}return c}catch(i){throw console.error("failed to deserialize"),console.dir(i),i}}o(he,"deserialize");function bt(e,t){let n=typeof e=="string"?JSON.parse(e):e;return n instanceof Array?n.map(i=>he(i,t)):[]}o(bt,"deserializeArray");function gt(e,t){let n=V(t),i=Reflect.getMetadata(_,n);if(i===void 0){Object.assign(t,e);return}Object.keys(e).forEach(r=>{let s=i.settingsBySerializedName[r],a=e[r];if(s===void 0){i.defaultIgnored||M(t,r,a);return}let c=s.propName;if(i.isPropertyIgnored(c))return;let l;l=a instanceof Array?a.map(u=>s.fromJSON(u)):s.fromJSON(a),M(t,c,l)}),Ge(t,dt)}o(gt,"deserializeFrom");function pn(e){return Reflect.getMetadata(_,e)}o(pn,"getSerializeSettings");function mn(e,t,n){let i=Reflect.getDesignType(e,t);if(i===void 0)return n;if(i===Array)return bt(n);let r=Me.get(i);return r?r.fromJson(n):he(n,i)}o(mn,"getValueByReflectType");function V(e){return e instanceof Function?e:e.constructor}o(V,"classOf");function yn(e){return e()}o(yn,"run");var Me=yn(()=>{let e=new Map;function t(i){return e.get(i)}o(t,"get");function n(i,r){e.set(i,r)}return o(n,"register"),n(String,{fromJson:E,toJson:ge}),n(Number,{fromJson:be,toJson:ge}),n(Boolean,{fromJson:ve,toJson:ge}),n(Date,{fromJson:o(i=>new Date(be(i)),"fromJson"),toJson:o(i=>i.getTime(),"toJson")}),{get:t,register:n}}),ge=o(e=>e,"itSelf"),dn=o(()=>{},"done"),Tn=_e(dt);var Dt=new Map;function xe(e){if(Dt.get(e))return;let t=y(e),n=new Proxy({},{get(r,s){return i(s)},set(r,s,a){return i(s)(a),!0}});function i(r){return(s,a)=>{var u,x,K;let c=(x=(u=Object.values((t==null?void 0:t.allProperties)||{}))==null?void 0:u.find(ht=>ht.name===r))==null?void 0:x.type,l=(c==null?void 0:c.name)!==void 0?ie(c.name):void 0;c&&Te.isArrayType(c)&&(l=((K=c.arrayElementType)==null?void 0:K.name)!==void 0?ie(c.arrayElementType.name):void 0),typeof r=="string"&&(G(e.prototype,r,{name:s,class:l,fromJSON:a==null?void 0:a.fromJSON,toJSON:a==null?void 0:a.toJSON}),Ze(e,!0))}}o(i,"doMap"),e.prototype.mapping(n),Dt.set(e,!0)}o(xe,"registerMappable");function bn(e,t){let n=y(e);n&&n.properties.forEach(i=>t[i.name]())}o(bn,"mapAllProperties");var Tr=require("reflect-metadata");var gn="design:type",Dn="design:returntype",hn="design:paramtypes";function Mn(e,t){return Reflect.getMetadata(gn,e,t)}o(Mn,"getDesignType");function xn(e,t){return Reflect.getMetadata(Dn,e,t)}o(xn,"getReturnType");function wn(e,t){return Reflect.getMetadata(hn,e,t)}o(wn,"getParamTypes");function Rn(e,t,n,i){let r=(i===void 0?Reflect.getMetadata(e,n):Reflect.getMetadata(e,n,i))||[];r.includes(t)||r.push(t),i===void 0?Reflect.defineMetadata(e,r,n):Reflect.defineMetadata(e,r,n,i)}o(Rn,"addMetadataList");Object.assign(Reflect,{getDesignType:Mn,getReturnType:xn,getParamTypes:wn,addMetadataList:Rn});0&&(module.exports={AfterSerialized,IgnoreSerialization,Lazy,PropertyWrapper,ReflectClass,ReflectValidate,Serialized,SerializedClass,SerializedName,TypeDefinition,ValidateResult,asBoolean,asNumber,asString,assertType,callDecoratedMethod,createInstance,defineDecoratedProperty,deserialize,deserializeArray,deserializeFrom,done,failedResult,getAnyValue,getClassByName,getClassDefinition,getDecoratedProperty,getDecoratedPropertyValue,getEnumDefinition,getEnumNames,getEnumValues,getErrorTraceMessages,getInterfaceDefinition,getOrSetValue,getSerializeSettings,getTypeAliasDefinition,getTypeDef,hasDecoratedMethod,isDictionary,isNullable,isType,itSelf,mapAllProperties,registerMappable,registerSerializedProperty,safeCall,serialize,serializeTo,serializeToData,setAnyValue,setDefaultIgnored,successResult,validateArray,validateDictionary,validateInstance});
|
|
1
|
+
"use strict";var F=Object.defineProperty,sn=Object.defineProperties,an=Object.getOwnPropertyDescriptor,fn=Object.getOwnPropertyDescriptors,cn=Object.getOwnPropertyNames,Fe=Object.getOwnPropertySymbols;var _e=Object.prototype.hasOwnProperty,ln=Object.prototype.propertyIsEnumerable;var Ne=(n,e,t)=>e in n?F(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,O=(n,e)=>{for(var t in e||(e={}))_e.call(e,t)&&Ne(n,t,e[t]);if(Fe)for(var t of Fe(e))ln.call(e,t)&&Ne(n,t,e[t]);return n},Ge=(n,e)=>sn(n,fn(e)),o=(n,e)=>F(n,"name",{value:e,configurable:!0});var un=(n,e)=>{for(var t in e)F(n,t,{get:e[t],enumerable:!0})},pn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of cn(e))!_e.call(n,r)&&r!==t&&F(n,r,{get:()=>e[r],enumerable:!(i=an(e,r))||i.enumerable});return n};var mn=n=>pn(F({},"__esModule",{value:!0}),n);var Nn={};un(Nn,{ClassDefinition:()=>E,EnumDefinition:()=>J,InterfaceDefinition:()=>$,ReflectConfig:()=>V,ReflectValidate:()=>Vn,TypeDefinition:()=>en,TypeParseError:()=>De,ValidateResult:()=>U,ValidationError:()=>x,assertType:()=>kn,failedResult:()=>l,getClassByName:()=>Ue,getClassDefinition:()=>y,getEnumDefinition:()=>S,getEnumNames:()=>qe,getEnumValues:()=>ze,getErrorTraceMessages:()=>yn,getInterfaceDefinition:()=>A,getTypeAliasDefinition:()=>de,getTypeDef:()=>M,isNullable:()=>An,isType:()=>nn,safeCall:()=>Fn,successResult:()=>u,validateArray:()=>jn,validateDictionary:()=>Ln,validateInstance:()=>Ve});module.exports=mn(Nn);var Te=["string","number","boolean","bigint","symbol"],Be={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 d(this.rawDef.type)}copy(e){let t=He(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=I(X,e);return i.genericContext=t,i}get type(){return d(this.rawDef.type,this.genericContext)}};o(X,"GenericProperty");var K=X;function I(n,e){let t=Object.create(n.prototype);return Object.assign(t,e),t}o(I,"createInstance");function Z(n,e){n.properties=e.properties.map(t=>K.create(t,n.genericContext)),n.methods=e.methods.map(t=>N.create(t,n.genericContext)),n instanceof j&&e instanceof E&&e.constructorMethod!==void 0&&(n.constructorMethod=N.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 He(n){return JSON.parse(JSON.stringify(n))}o(He,"copy");var Me=class Me{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return d(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:d(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(Me,"MethodDefinition");var ne=Me;function G(n){return new ne(n)}o(G,"fillMethod");var te=class te extends ne{static create(e,t){let i=I(te,e);return i.genericContext=t,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:d(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return d(this.rawDef.returnType,this.genericContext)}};o(te,"GenericMethod");var N=te;var B=Reflect,H;function w(){if(H)return H;let n=B.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{H=JSON.parse(atob(n))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}delete B.__meta;let e=H;return e.classDef=B.__classDef||{},delete B.__classDef,Reflect.defineProperty(B,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),H}o(w,"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(G))||[],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 A(e)||((t=y(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 $=re,oe=class oe extends ${constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=I(oe,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),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,we=new Map;function A(n){var e,t;if(!we.has(n)){let i=(t=(e=w())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;we.set(n,new $(i))}return we.get(n)}o(A,"getInterfaceDefinition");var Re=class Re{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=y(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?G(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(G))||[],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=y(this.superClassName);t&&Object.assign(e,O({},t.allMethods))}return Object.assign(e,O({},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=>A(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 $?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=y(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(Re,"ClassDefinition");var E=Re,ae=class ae extends E{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=I(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 Ue(n){var e;return((e=y(n))==null?void 0:e.jsClass)||Be[n]}o(Ue,"getClassByName");function y(n){var e,t,i,r,s,f;switch(typeof n){case"object":return y(n.constructor);case"function":let c=y(n.name);if(c)return c;let a=Array.from(se.values()).find(b=>b.jsClass===n);if(a)return a;let p=(t=Object.entries(((e=w())==null?void 0:e.classDef)||{}).find(([b,h])=>h===n))==null?void 0:t[0];return p?y(p):void 0;case"string":let D=n;if(!se.has(D)){let b=(r=(i=w())==null?void 0:i.classes)==null?void 0:r[D];if(!b)return;let h=(f=(s=w())==null?void 0:s.classDef)==null?void 0:f[D];se.set(D,new E(Ge(O({},b),{jsClass:h})))}return se.get(D)}}o(y,"getClassDefinition");var L=class L{constructor(e,t,i,r){this.success=e;this.errorCode=t;this.errorDesc=i;this.cause=r}static failure(e,t,i){return new L(!1,e,t,i)}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(L,"ValidateResult"),L.success=new L(!0);var U=L,u=U.success,l=U.failure;function yn(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
|
|
3
|
+
-> `)}o(yn,"getErrorTraceMessages");var xe=class xe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(xe,"ValidationError");var x=xe,V={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler")};var Ce=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function g(n,e,t=1){switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${m(e)} but actually not`);case We(e):return u;case ye(e):return n instanceof Object?Pe(n,e,t):l(200,`declared as ${m(e)} but actually not an object`);case fe(e):return dn(n,e,t);case me(e):return bn(n,e,t);case ue(e):for(let i of e.unionMembers||[])if(g(n,i,t).success)return u;return l(320,`declared as ${m(e)} but all value not match`);case pe(e):for(let i of e.intersectionMembers||[]){let r=g(n,i,t);if(!r.success)return l(330,`declared as ${m(e)} but all value not match`,r)}return u;case Ee(e):return Dn(n,e,t);case ce(e):switch(typeof n){case"string":return n===hn(e.literalValue)?u:l(110,`declared as string ${m(e)} but value not match`);case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${m(e)} but value not match`);case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${m(e)} but value not match`);case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${m(e)} but value not match`);default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${m(e)} but value not match`)}case le(e):return gn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${m(e)} but actually not`);case Ie(e):return n==null?l(120,`declared as ${m(e)} but actually ${n}`):typeof n===e.name?u:l(121,`declared as ${m(e)} but actually ${typeof n}`);default:return Tn(n,e,t)}}o(g,"validateValue");function dn(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${m(e)} but actually not`);if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=g(r,e.arrayElementType||T,t-1);if(!s.success)return l(301,`declared as ${m(e)} but [${i}] not match`,s)}return u}o(dn,"validateArrayValue");function Dn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null");if(n===void 0)return l(401,"declared as indexedType but actually is undefined");if(typeof n=="object")return l(410,`declared as indexedType but actually is ${typeof n}`);for(let i of Object.values(n)){let r=g(i,e.indexElementType,t-1);if(!r.success)return l(420,`declared as ${m(e)} but actually not match`,r)}return u}o(Dn,"validateIndexedValue");function bn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${m(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 f=g(n[i],r,t);if(!f.success)return l(311,`declared as ${m(e)} but not all values in tuple match`,f)}return u}o(bn,"validateTupleValue");function gn(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=_(n,i.name),f=g(s,r,t-1);if(!f.success)return l(211,`declared ${i.name} as ${m(r)}, but not match`,f)}return u}else return l(210,`declared as ${m(e)} but not an object`)}o(gn,"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 ${m(e)} but actually undefined`);if(n===null)return i==="null"?u:l(131,`declared as ${m(e)} but actually null`);for(let s of Ce)if(i===s.name)return n instanceof s?u:l(132,`declared as ${m(e)} but actually ${n.constructor.name}`);if(n instanceof Object&&!Je(n,i))return l(133,`declared as ${m(e)} but actually not instance of it`);if(t==0)return u;let r=g(n,R(i),t);return r.success?u:l(134,`declared as ${m(e)} but actually not match`,r)}o(Tn,"validateSimpleValue");function Pe(n,e,t=3){if(e.classDefinition&&!Je(n,e.classDefinition.name))return l(201,`declared as instance of ${m(e)} but actually not`);if(e.name!=="any"&&e===T)return l(202,`${m(e)} not defined`);let i=O({},e);return delete i.classDefinition,g(n,i,t)}o(Pe,"validateClassInstance");function Je(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(Je,"valueInstanceOf");function hn(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(hn,"trimQuotes");function m(n){var e,t,i,r;return typeof n=="string"?n:ye(n)?n.classDefinition.name:fe(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":le(n)?"Object":me(n)?`(${n.tupleMembers.map(m).join(",")})`:ue(n)?((t=n.unionMembers)==null?void 0:t.map(m).join(" | "))||"unknown":pe(n)?((i=n.intersectionMembers)==null?void 0:i.map(m).join(" & "))||"unknown":ce(n)?n.literalValue:Ee(n)?`{ [key]: ${((r=n.indexElementType)==null?void 0:r.name)||"unknown"} }`:n.name||"unknown"}o(m,"getTypeDisplayName");var ke=class ke{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(ke,"EnumDefinition");var J=ke,$e=new Map;function S(n){var e,t;if(!$e.has(n)){let i=(t=(e=w())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;$e.set(n,new J(i))}return $e.get(n)}o(S,"getEnumDefinition");function qe(n){var e;return((e=S(n))==null?void 0:e.names)||[]}o(qe,"getEnumNames");function ze(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(ze,"getEnumValues");var Mn=["Partial","Required","Readonly","Pick","Omit","Extract","Exclude"];function Ke(n){return typeof n=="string"&&Mn.includes(n)}o(Ke,"isSpecialType");function wn(n,e,t){let i;switch(n){case"Partial":i=Rn(e);break;case"Required":i=xn(e);break;case"Readonly":i=Cn(e);break;case"Pick":i=Ye(e,t);break;case"Omit":i=Ze(e,t);break;case"Extract":i=Pn(e,t);break;case"Exclude":i=In(e,t);break}return i}o(wn,"getSpecialType");function Qe(n,e){let[t,i]=e,r,s=["Pick","Omit","Extract","Exclude"].includes(n)?["T"]:["T","K"];return r=wn(n,t,i),r?{name:n,type:r,genericParams:s,fromLib:!0}:void 0}o(Qe,"getSpecialTypeAlias");function W(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>t.copy(e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>W(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>W(t,e)).filter(t=>t!==void 0)}:void 0}o(W,"getMappedType");function Xe(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?t.copy():void 0).filter(t=>!!t)}}o(Xe,"getFilterKeyType");function Rn(n){return W(n,e=>e.isOptional=!0)}o(Rn,"getPartialType");function xn(n){return W(n,e=>e.isOptional=!1)}o(xn,"getRequiredType");function Cn(n){return W(n,e=>e.isReadonly=!0)}o(Cn,"getReadonlyType");function Ye(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return Xe(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(Ye,"getPickType");function Ze(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return Xe(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(Ze,"getOmitType");function Pn(n,e){if(e&&n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return Ye(n,t)}}o(Pn,"getExtractType");function In(n,e){if(e&&n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return Ze(n,t)}}o(In,"getExcludeType");function de(n,e){var r,s,f;if(Ke(n))return!e||!e[0]?void 0:Qe(n,[e[0],e[1]]);if(!Ae.has(n)){let c=(s=(r=w())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;Ae.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=Ae.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let a=0;a<t.genericParams.length;a++){let p=t.genericParams[a];c[p]=e[a]}i=d(t.type,c,e)}else i=d(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(f=t.fromLib)!=null?f:!1}}o(de,"getTypeAliasDefinition");var Ae=new Map;var T={name:"any"},En={name:"null"};function We(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(We,"isIgnoredType");function Ie(n){return!!(n.name&&Te.includes(n.name))}o(Ie,"isPrimitiveType");function fe(n){return!!n.arrayElementType}o(fe,"isArrayType");function ce(n){return!!n.literalValue}o(ce,"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 $n(n){return!!n.generics}o($n,"hasGenerics");function Ee(n){return!!n.indexElementType}o(Ee,"isIndexType");function R(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return T;if(n==="null")return En;if(n==="Function")return{isFunction:!0};let t=y(n);if(t)return e?j.create(t,e).type:t.type;if(Te.includes(n))return{name:n};if(Ce.map(f=>f.name).includes(n))return{name:n,generics:e};let i=A(n);if(i)return i.fromLib?{name:n,generics:e}:e?ie.create(i,e).type:i.type;let r=S(n);if(r)return r.type;let s=de(n,e);return s?s.type:T}o(R,"getTypeDefinition");var Oe=new Map;function d(n,e,t){let i=je(n);if(n===void 0)return T;let r=Oe.get(i);if(r)return r;let s={};if(Oe.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||R(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(f=>d(f,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(f=>d(f,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(f=>d(f,e))});else if(n.generics){let f=n.generics[0],c=n.generics.slice(1).map(a=>d(a,e));Object.assign(s,d(f,e,c))}else n.indexElementType&&Object.assign(s,{indexElementType:d(n.indexElementType,e)});return Object.keys(s).length===0&&(s=T),Oe.delete(i),s}o(d,"fillType");function je(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(je).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+je(n[t])).join(",")+"}"}o(je,"stableStringify");var en={isPrimitiveType:Ie,isArrayType:fe,isLiteralType:ce,isTypeLiteralType:le,isUnionType:ue,isIntersectionType:pe,isTupleType:me,isClassDefinition:ye,hasGenerics:$n};function M(n){if(typeof n=="string"){let e=On(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):M(e)}return"array"in n?{arrayElementType:M(n.array)}:"union"in n?{unionMembers:n.union.map(M)}:"intersection"in n?{intersectionMembers:n.intersection.map(M)}:"tuple"in n?{tupleMembers:n.tuple.map(M)}:"generic"in n?R(n.name,n.generic.map(M)):n}o(M,"getTypeDef");function kn(n,e,t=5){let i=g(n,M(e),t);return i.success||V.validationErrorHandler(new x(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(kn,"assertType");function An(n){return nn(null,n)}o(An,"isNullable");function nn(n,e,t=5){return g(n,M(e),t).success}o(nn,"isType");function On(n){let e=0,t="%%",i={};function r(a){let p=`${t}${e++}`;return i[p]=a,p}o(r,"addPlaceholder");function s(a){let p=a.match(new RegExp(`^(${t}\\d)$`));if(!p)return;let D=p[1].trim(),b=i[D];return delete i[D],b}o(s,"getPlaceholder");function f(a,p,D,b){let h=0;for(;h<a.length;){let C=a.indexOf(p,h);if(C===-1)break;h=C+1;let k=a.indexOf(D,h);if(k===-1)throw new De("Illegal type string");let q=a.substring(C+1,k),v=r(q);b?a=`${a.substring(0,C+1)}${v}${a.substring(k)}`:a=`${a.substring(0,C)}${v}${a.substring(k+1)}`}return a}o(f,"replaceBracket");function c(a){let p=a.trim(),D=o(P=>P.trim(),"trim"),b=o(P=>P.length!=0,"notEmpty");p=f(p,"(",")",!1),p=f(p,"<",">",!0);let h=s(p);if(h)return c(h);let C=p.split("|").map(D).filter(b);if(C.length>1)return{union:C.map(c)};let k=p.split("&").map(D).filter(b);if(k.length>1)return{intersection:k.map(c)};let q=p.match(/^\[(.*)]$/);if(q)return{tuple:q[1].split(",").map(D).filter(b).map(c)};let v=p.match(/^(.+)\[]$/);if(v)return{array:c(v[1])};let be=p.match(/^([^<]+)<(.+)>$/);if(be){let P=be[1].trim(),ge=c(be[2]);if(typeof ge=="string"){let on=ge.split(",").map(D).filter(b).map(c);return{name:P,generic:on}}else return{name:P,generic:[ge]}}return p}return o(c,"parseTypeRecursive"),c(n)}o(On,"parseType");var Le=class Le extends Error{};o(Le,"TypeParseError");var De=Le;function Ve(n,e,t=3){return e=e||n.constructor.name,Pe(n,M(e),t)}o(Ve,"validateInstance");function jn(n,e,t=1){for(let i=0;i<n.length;i++){let r=Ve(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,r)}return u}o(jn,"validateArray");function Ln(n,e,t=1){let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,f]=i[r],c=Ve(f,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,c)}return u}o(Ln,"validateDictionary");var tn=Symbol("VALIDATE_WRAPPER"),Se=V.validationErrorHandler,Vn=o((n,e,t)=>Sn(n,e,t),"ReflectValidate");function Sn(n,e,t){let i=t.value;if(typeof i!="function"||_(i,tn))return;let r=o(()=>{var a,p;return(p=(a=y(n))==null?void 0:a.methods)==null?void 0:p.find(D=>D.name===e)},"getMethodDef"),s=o(a=>rn(n,r(),a),"validateArgs"),f=o(a=>vn(n,r(),a),"validateReturn"),c=o(function(...a){s(a);let p=i.call(this,...a);return f(p)},"newFunc");c[tn]=i,t.value=c}o(Sn,"wrapValidateMethod");function rn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let f=t==null?void 0:t[s];if(f===void 0)if(!r.isOptional)Se(new x(`Illegal arguments for ${ve(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=g(f,r.type||T,1);c.success||(console.error("validateResult",c),Se(new x(`Illegal arguments for ${ve(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`)))})}o(rn,"validateMethodParams");function vn(n,e,t){var s;if(!e)return t;let i=o((f,c)=>{let a=g(f,c,5);return a.success||(console.error(a.errorStackFlow),Se(new x(`result for ${ve(n.constructor.name,e)} doesn't match type ${c.name}:
|
|
4
|
+
${a.errorStackFlow}`))),f},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||T),t instanceof Promise?t.then(f=>i(f,r||T)):i(t,r||T)}o(vn,"validateMethodReturnValue");function ve(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(ve,"getMethodDescription");function Fn(n,e,...t){let i=y(n);if(!i)return;let r=i.allMethods[e];if(r)return rn(n,r,t),_(n,e).apply(n,t)}o(Fn,"safeCall");0&&(module.exports={ClassDefinition,EnumDefinition,InterfaceDefinition,ReflectConfig,ReflectValidate,TypeDefinition,TypeParseError,ValidateResult,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})},Z=(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 C=(e,n,t)=>(t=e!=null?de(we(e)):{},Z(n||!e||!e.__esModule?F(t,"default",{value:e,enumerable:!0}):t,e)),he=e=>Z(F({},"__esModule",{value:!0}),e);var B=(e,n,t)=>new Promise((i,a)=>{var r=m=>{try{l(t.next(m))}catch(x){a(x)}},d=m=>{try{l(t.throw(m))}catch(x){a(x)}},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:()=>Y,reflectParserPlugin:()=>Ie,setupReflectTypes:()=>xe,updateReflectModules:()=>X});module.exports=he(Le);var G=C(require("typescript"),1);function R(e){return e||{}}var s=C(require("typescript"),1),S=C(require("fs"),1),I=C(require("process"),1),h=C(require("path"),1),se=require("url");var z={OUTPUT_LOG:!1},k=new Map,M=new Map,$=new Map,v=new Map,H=new Map,j=new Set,ee={[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",re=["string","number","boolean","bigint","symbol"],ae=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],oe=["Mappable","EnableReflect"];[...re,...ae,...oe].forEach(pe);oe.forEach(e=>M.set(e,{name:e}));var _,ne=!1,U=Reflect;function xe(e){return B(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 k)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 H)r.constTypes[l]=m;U.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(l=>X(l,a)))})}function X(e,n){return B(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=>X(h.join(e,m),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),d=yield import((0,se.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),!ne){let t=fe(e,n),i=s.default.createProgram(t,{});_=i.getTypeChecker(),t=t.map(r=>te(r)),i.getSourceFiles().filter(r=>t.includes(te(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{b(`parse file: ${r.fileName}`),ce(r)});for(let r of j.keys())!k.has(r)&&!M.has(r)&&!$.has(r)&&!v.has(r)&&!re.includes(r)&&!ae.includes(r)&&(b(`remove unknown typeName: ${r}`),j.delete(r));Array.from(k.values()).forEach(Ae),Array.from(M.values()).forEach(Oe),[k,M,v].forEach(ke),ne=!0}return{classDefinitions:k,interfaceDefinitions:M,enumDefinitions:$,typeAliasDefinitions:v,constTypeDefinitions:H}}function fe(e,n){let t=[];return e.forEach(i=>{if(i=h.resolve(i),Ce(i,n)){b(`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)?Ee(e):s.default.isInterfaceDeclaration(e)?Pe(e):s.default.isEnumDeclaration(e)?be(e):s.default.isTypeAliasDeclaration(e)?Se(e):s.default.isConstTypeReference(e)?Ne(e):e.forEachChild(ce)}function Ee(e){var l,m,x,N,E,K,u,w,L,V,y,D,c,T;let n=o(e.name);if(!n)return;let t=o((x=(m=(l=e.heritageClauses)==null?void 0:l.find(f=>f.token===s.default.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:x[0].expression),i=(E=(N=e.heritageClauses)==null?void 0:N.find(f=>f.token===s.default.SyntaxKind.ImplementsKeyword))==null?void 0:E.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:(V=f.modifiers)==null?void 0:V.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))};b(`Define class: ${o(e.name)}`),k.set(n,d)}function Pe(e){var l,m,x,N,E,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:((x=u.modifiers)==null?void 0:x.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:((E=u.modifiers)==null?void 0:E.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=W(d.implementations||[],t),d.methods=W(d.methods||[],a,(u,w)=>u.name===w.name),d.properties=W(d.properties||[],i,(u,w)=>u.name===w.name),d.indexElementType=r,b(`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),b(`Define interface ${o(e.name)}`))}function be(e){let n=o(e.name);n&&($.set(n,{name:n,members:e.members.map(t=>({name:o(t.name),initializer:o(t.initializer)}))}),b(`Define enum: ${o(e.name)}`))}function Se(e){var a;b(`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)&&H.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)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function pe(e){j.add(e)}function g(e,n=!1){if(e.type&&!n)return P(e.type);if(!_)return console.error("TypeChecker not initialized!"),O;let t=_.getTypeAtLocation(e),i=_.typeToTypeNode(t,void 0,void 0);return i?P("type"in i?i.type:i):O}function P(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=>P(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:P()})}),n.typeLiteralMembers=t}else if(s.default.isArrayTypeNode(e))n.arrayElementType=P(e.elementType);else if(s.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(P);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(P);else if(s.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(P);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=P(e.type);else if(s.default.isLiteralTypeNode(e))n.literalValue=o(e.literal);else{if(Object.keys(ee).includes(String(e.kind)))return ee[e.kind]||O;if(s.default.isNamedTupleMember(e))Object.assign(n,g(e));else return g(e,!0)}}}}return n}var W=(e,n,t)=>[...(e==null?void 0:e.filter(i=>!(n!=null&&n.some(a=>(t||(()=>a===i))(a,i)))))||[],...n||[]];function J(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=J(e.type,n)}function me(e,n){var t;(t=e.args)==null||t.forEach(i=>i.type=J(i.type,n)),e.returnType=J(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 Q(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(Q):i.constructor===Object&&Q(i)})}function ke(e){for(let n of e.values())Q(n)}function Ce(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 te(e,n=I.cwd()){return ie(e).replace(ie(n)+"/","")}function ie(e){let n=h.sep;return e.split(n).join("/")}function ye(e){return e instanceof Array?e:[e]}function b(e){z.OUTPUT_LOG&&console.log(e)}function Y(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:x}=q(n,t),N=[],E=[];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;E.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}),x.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,E.length=0,w(c),`${N.join(";")};${y};${E.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=Y(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,i)=>(i=i.replace(ve,""),i===e.entry?`${n.outputAllMetas()}
|
|
2
|
-
${t}`:n.transform(t,
|
|
1
|
+
"use strict";var we=Object.create;var $=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,be=Object.prototype.hasOwnProperty;var xe=(e,n)=>{for(var t in n)$(e,t,{get:n[t],enumerable:!0})},ie=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of Re(n))!be.call(e,a)&&a!==t&&$(e,a,{get:()=>n[a],enumerable:!(s=Te(n,a))||s.enumerable});return e};var v=(e,n,t)=>(t=e!=null?we(he(e)):{},ie(n||!e||!e.__esModule?$(t,"default",{value:e,enumerable:!0}):t,e)),Pe=e=>ie($({},"__esModule",{value:!0}),e);var W=(e,n,t)=>new Promise((s,a)=>{var r=m=>{try{o(t.next(m))}catch(b){a(b)}},D=m=>{try{o(t.throw(m))}catch(b){a(b)}},o=m=>m.done?s(m.value):Promise.resolve(m.value).then(r,D);o((t=t.apply(e,n)).next())});var je={};xe(je,{DEBUG_CONFIG:()=>q,parseSource:()=>z,reflectLoader:()=>ee,reflectParserPlugin:()=>$e,setupReflectTypes:()=>Ee,updateReflectModules:()=>Z});module.exports=Pe(je);var G=v(require("typescript"),1);function R(e){return e||{}}var J=["string","number","boolean","bigint","symbol"];var i=v(require("typescript"),1),M=v(require("fs"),1),_=v(require("process"),1),h=v(require("path"),1),fe=require("url");var q={OUTPUT_LOG:!1},C=new Map,A=new Map,F=new Map,I=new Map,Y=new Map,U=new Set,se={[i.default.SyntaxKind.BooleanKeyword]:"boolean",[i.default.SyntaxKind.StringKeyword]:"string",[i.default.SyntaxKind.BigIntKeyword]:"bigint",[i.default.SyntaxKind.NumberKeyword]:"number",[i.default.SyntaxKind.SymbolKeyword]:"symbol",[i.default.SyntaxKind.VoidKeyword]:"void",[i.default.SyntaxKind.UndefinedKeyword]:"undefined",[i.default.SyntaxKind.UnknownKeyword]:"unknown",[i.default.SyntaxKind.AnyKeyword]:"any",[i.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 j,re=!1,L=Reflect;function Ee(e){return W(this,null,function*(){let{filePaths:n,exclude:t,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=De(n);let D=n.map(o=>h.join(s,o));z(D,t);for(let[o,m]of C)r.classes[o]=m;for(let[o,m]of A)r.interfaces[o]=m;for(let[o,m]of I)r.typeAliases[o]=m;for(let[o,m]of F)r.enums[o]=m;for(let[o,m]of Y)r.constTypes[o]=m;L.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(o=>Z(o,a)))})}function Z(e,n){return W(this,null,function*(){let t=h.resolve(n,e);if(!M.existsSync(t))return;if(M.statSync(t).isDirectory()){let o=M.readdirSync(t);yield Promise.all(o.map(m=>Z(h.join(e,m),n)));return}if(!e.endsWith(".js"))return;let a=h.join(n,e),D=yield import((0,fe.pathToFileURL)(a).href);L.__classDef={},Object.values(D).forEach(o=>{typeof o=="function"&&L.__classDef&&(L.__classDef[o.name]=o)})})}function z(e,n){if(e||(e=[_.cwd()]),e=De(e),!re){let t=pe(e,n),s=i.default.createProgram(t,{});j=s.getTypeChecker(),t=t.map(r=>ae(r)),s.getSourceFiles().filter(r=>t.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 U.keys())!C.has(r)&&!A.has(r)&&!F.has(r)&&!I.has(r)&&!J.includes(r)&&!ce.includes(r)&&(S(`remove unknown typeName: ${r}`),U.delete(r));Array.from(C.values()).forEach(Ce),Array.from(A.values()).forEach(ve),[C,A,I].forEach(Ie),re=!0}return{classDefinitions:C,interfaceDefinitions:A,enumDefinitions:F,typeAliasDefinitions:I,constTypeDefinitions:Y}}function pe(e,n){let t=[];return e.forEach(s=>{if(s=h.resolve(s),Le(s,n)){S(`ignore excluded ${s}`);return}if(!M.existsSync(s)){console.error(`Path ${s} does not exist.`);return}if(M.statSync(s).isFile()){t.push(s);return}M.readdirSync(s).forEach(D=>t.push(...pe([h.join(s,D)],n)))}),t}function ue(e,n){i.default.isClassDeclaration(e)?Se(e,n):i.default.isInterfaceDeclaration(e)?Me(e,n):i.default.isEnumDeclaration(e)?Ne(e,n):i.default.isTypeAliasDeclaration(e)?Ke(e,n):i.default.isConstTypeReference(e)?Ae(e):e.forEachChild(t=>ue(t,n))}function Se(e,n){var b,N,x,K,P,u,w,B,d,g,p,T,V,ne,te;let t=l(e.name);if(!t)return;let s=l((x=(N=(b=e.heritageClauses)==null?void 0:b.find(f=>f.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:N.types)==null?void 0:x[0].expression),a=(P=(K=e.heritageClauses)==null?void 0:K.find(f=>f.token===i.default.SyntaxKind.ImplementsKeyword))==null?void 0:P.types.map(f=>l(f.expression)),r=[],D=[],o;for(let f of e.members)if(i.default.isPropertyDeclaration(f))r.push({name:l(f.name),isOptional:f.questionToken!==void 0,type:y(f),isPrivate:(u=f.modifiers)==null?void 0:u.some(c=>c.kind===i.default.SyntaxKind.PrivateKeyword),isStatic:(w=f.modifiers)==null?void 0:w.some(c=>c.kind===i.default.SyntaxKind.StaticKeyword),isReadonly:(B=f.modifiers)==null?void 0:B.some(c=>c.kind===i.default.SyntaxKind.ReadonlyKeyword)});else if(i.default.isConstructorDeclaration(f))o={name:"constructor",isPrivate:(d=f.modifiers)==null?void 0:d.some(c=>c.kind===i.default.SyntaxKind.PrivateKeyword),args:f.parameters.map(c=>({name:l(c.name),type:y(c),isOptional:c.questionToken!==void 0})),isConstructor:!0};else if(i.default.isMethodDeclaration(f))D.push({name:l(f.name),returnType:y(f),isPrivate:(g=f.modifiers)==null?void 0:g.some(c=>c.kind===i.default.SyntaxKind.PrivateKeyword),isStatic:(p=f.modifiers)==null?void 0:p.some(c=>c.kind===i.default.SyntaxKind.StaticKeyword),isAsync:(T=f.modifiers)==null?void 0:T.some(c=>c.kind===i.default.SyntaxKind.AsyncKeyword),args:f.parameters.map(c=>({name:l(c.name),type:y(c),isOptional:c.questionToken!==void 0}))});else if(i.default.isGetAccessorDeclaration(f)){let c=r.find(k=>k.name===l(f.name));c||(c={name:l(f.name),isOptional:f.questionToken===void 0,type:y(f)},r.push(c)),c.accessor=c.accessor||{},c.accessor.getter={isPrivate:((V=f.modifiers)==null?void 0:V.some(k=>k.kind===i.default.SyntaxKind.PrivateKeyword))||!1},c.isPrivate=c.accessor.getter.isPrivate}else if(i.default.isSetAccessorDeclaration(f)){let c=r.find(k=>k.name===l(f.name));c||(c={name:l(f.name),isOptional:f.questionToken===void 0,type:y(f)},r.push(c)),c.accessor=c.accessor||{},c.accessor.setter={isPrivate:((ne=f.modifiers)==null?void 0:ne.some(k=>k.kind===i.default.SyntaxKind.PrivateKeyword))||!1}}let m={name:t,constructorMethod:o,superClassName:s,implementations:a,properties:r,methods:D,genericsParams:(te=e.typeParameters)==null?void 0:te.map(f=>l(f.name)),fromLib:n};S(`Define class: ${l(e.name)}`),C.set(t,m)}function Me(e,n){var m,b,N,x,K,P;let t=l(e.name);if(!t)return;let s=((b=(m=e.heritageClauses)==null?void 0:m.find(u=>u.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:b.types.map(u=>l(u.expression)))||[],a=[],r=[],D;for(let u of e.members)i.default.isPropertySignature(u)?a.push({name:l(u.name),isOptional:u.questionToken!==void 0,type:y(u),isPrivate:((N=u.modifiers)==null?void 0:N.some(w=>w.kind===i.default.SyntaxKind.PrivateKeyword))||!1,isReadonly:((x=u.modifiers)==null?void 0:x.some(w=>w.kind===i.default.SyntaxKind.ReadonlyKeyword))||!1}):i.default.isMethodSignature(u)?r.push({name:u.name.text,returnType:y(u),isPrivate:((K=u.modifiers)==null?void 0:K.some(w=>w.kind===i.default.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(w=>({name:l(w.name),type:y(w),isOptional:w.questionToken!==void 0}))}):i.default.isIndexSignatureDeclaration(u)&&(D=y(u));let o=A.get(t);o?(o.implementations=Q(o.implementations||[],s),o.methods=Q(o.methods||[],r,(u,w)=>u.name===w.name),o.properties=Q(o.properties||[],a,(u,w)=>u.name===w.name),o.indexElementType=D,S(`Merge interface ${l(e.name)}`)):(o={name:t,implementations:s,methods:r,properties:a,indexElementType:D,genericsParams:(P=e.typeParameters)==null?void 0:P.map(u=>l(u.name)),fromLib:n},A.set(t,o),S(`Define interface ${l(e.name)}`))}function Ne(e,n){let t=l(e.name);t&&(F.set(t,{name:t,members:e.members.map(s=>({name:l(s.name),initializer:l(s.initializer)})),fromLib:n}),S(`Define enum: ${l(e.name)}`))}function Ke(e,n){var r;S(`Define typeAlias: ${l(e.name)}`);let t=y(e),s=(r=e.typeParameters)==null?void 0:r.map(D=>l(D.name)),a=l(e.name);I.set(a,{name:a,type:t,genericParams:s,fromLib:n})}function Ae(e){let n=e.parent.parent;i.default.isVariableDeclaration(n)&&n.initializer&&i.default.isAsExpression(n.initializer)&&Y.set(l(n.name),me(n.initializer.expression))}function me(e){return i.default.isArrayLiteralExpression(e)?ke(e):i.default.isObjectLiteralExpression(e)?Oe(e):i.default.isNumericLiteral(e)?"number":i.default.isStringLiteral(e)?"string":i.default.isBigIntLiteral(e)?"bigint":[i.default.SyntaxKind.TrueKeyword,i.default.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":O}function ke(e){let n=[];return e.elements.forEach(t=>{if(i.default.isStringLiteral(t))return n.push(l(t))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function Oe(e){let n=[];return e.properties.map(t=>{i.default.isPropertyAssignment(t)?n.push({name:l(t.name),type:me(t.initializer)}):S(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function de(e){U.add(e)}function y(e,n=!1){if(e.type&&!n)return E(e.type);if(!j)return console.error("TypeChecker not initialized!"),O;let t=j.getTypeAtLocation(e),s=j.typeToTypeNode(t,void 0,void 0);return s?E("type"in s?s.type:s):O}function E(e){let n={};if(e===void 0)return O;if(i.default.isTypeReferenceNode(e))if(de(l(e.typeName)),e.typeArguments)n.generics=[l(e.typeName),...e.typeArguments.map(t=>E(t))];else return l(e.typeName);else if(i.default.isFunctionTypeNode(e))n.isFunction=!0;else if(i.default.isConstructorTypeNode(e))n.isConstructor=!0;else{if(i.default.isTypeQueryNode(e))return y(e);if(i.default.isTypeLiteralNode(e)){let t=[];e.members.forEach(s=>{i.default.isPropertySignature(s)?t.push({name:l(s.name),isOptional:s.questionToken!==void 0,type:y(s)}):i.default.isIndexSignatureDeclaration(s)?n.indexElementType=y(s):t.push({name:l(s.name)||"",isOptional:s.questionToken!==void 0,type:E()})}),n.typeLiteralMembers=t}else if(i.default.isArrayTypeNode(e))n.arrayElementType=E(e.elementType);else if(i.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(E);else if(i.default.isOptionalTypeNode(e))Object.assign(n,y(e)),n.isOptionalInTuple=!0;else{if(i.default.isRestTypeNode(e))return y(e);if(i.default.isUnionTypeNode(e))n.unionMembers=e.types.map(E);else if(i.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(E);else{if(i.default.isConditionalTypeNode(e))return y(e);if(i.default.isInferTypeNode(e))return y(e);if(i.default.isParenthesizedTypeNode(e))return y(e);if(i.default.isThisTypeNode(e))return y(e);if(i.default.isTypeOperatorNode(e)&&e.operator===i.default.SyntaxKind.KeyOfKeyword)return y(e,!0);if(i.default.isIndexedAccessTypeNode(e))return y(e,!0);if(i.default.isMappedTypeNode(e))n.indexElementType=E(e.type);else if(i.default.isLiteralTypeNode(e))n.literalValue=l(e.literal);else{if(Object.keys(se).includes(String(e.kind)))return se[e.kind]||O;if(i.default.isNamedTupleMember(e))Object.assign(n,y(e));else return y(e,!0)}}}}return n}var Q=(e,n,t)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(a=>(t||(()=>a===s))(a,s)))))||[],...n||[]];function H(e,n){if(e!==void 0&&e!==O)return typeof e=="string"?U.has(e)||n!=null&&n.includes(e)?e:void 0:e}function Ce(e){var n,t;(n=e.methods)==null||n.forEach(s=>ge(s,e.genericsParams)),(t=e.properties)==null||t.forEach(s=>ye(s,e.genericsParams))}function ve(e){var n,t;(n=e.methods)==null||n.forEach(s=>ge(s,e.genericsParams)),(t=e.properties)==null||t.forEach(s=>ye(s,e.genericsParams))}function ye(e,n){e.type=H(e.type,n)}function ge(e,n){var t;(t=e.args)==null||t.forEach(s=>s.type=H(s.type,n)),e.returnType=H(e.returnType,n)}function l(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return i.default.isQualifiedName(n)?l(n.right):n.getText()}catch(n){return e.text}}function X(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(t=>{let[s,a]=t;a===!1||a===void 0||a===null?delete n[s]:a instanceof Array?a.length===0?delete n[s]: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(t=>(t instanceof RegExp||(t=new RegExp(t.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(t)))):!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 De(e){return e instanceof Array?e:[e]}function S(e){q.OUTPUT_LOG&&console.log(e)}function ee(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:s,outputLog:a}=e;if(a&&(q.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");a&&console.log(`sourcePaths: ${n}, exclude: ${t}, forEnabledClassOnly: ${s}`);let{classDefinitions:r,interfaceDefinitions:D,enumDefinitions:o,typeAliasDefinitions:m,constTypeDefinitions:b}=z(n,t),N=[],x=[];function K(d){let g=[];return(()=>{let p=r.get(d);if(p){p.superClassName&&g.push(p.superClassName),g.push(...p.implementations||[]);return}let T=D.get(d);if(T){g.push(...T.implementations||[]);return}m.get(d)&&g.push(d)})(),g.flatMap(p=>[p,...K(p)])||[]}function P(d,g){return K(d.name).includes(g)}function u(d){if(G.default.isClassDeclaration(d)&&d.name!==void 0){let g=d.name.text,p=r.get(g);if(!g||!p||s&&!P(p,"EnableReflect"))return;x.push(`Reflect.registerClass?Reflect.registerClass({${g}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${g}}))`);return}d.forEachChild(u)}function w(){let d={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return r.forEach((p,T)=>{s&&!P(p,"EnableReflect")||(d.classes[T]=p)}),D.forEach((p,T)=>{s&&!P(p,"EnableReflect")||(d.interfaces[T]=p)}),o.forEach((p,T)=>{d.enums[T]=p}),m.forEach((p,T)=>{d.typeAliases[T]=p}),b.forEach((p,T)=>{d.constTypes[T]=p}),`;Reflect.__meta='${btoa(JSON.stringify(d))}'`}return{outputAllMetas:w,transform:(d,g)=>{if(g.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(p=>!g.startsWith(p))){a&&console.log(`transform id: ${g}`);try{let p=G.default.createSourceFile(g,d,G.default.ScriptTarget.Latest,!1);return N.length=0,x.length=0,u(p),`${N.join(";")};${d};${x.join(";")}`}catch(p){console.error(`[reflect-parser-plugin] Error processing ${g}:`,p);return}}}}}var _e=process.cwd().replace(/\\/g,"/")+"/";function $e(e){let n=ee(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,s)=>(s=s.replace(_e,""),s===e.entry?`${n.outputAllMetas()}
|
|
2
|
+
${t}`:n.transform(t,s))}}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}`}};o(
|
|
3
|
-
-> `)}o(We,"getErrorTraceMessages");var de=class de{constructor(t){this.rawDef=t}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 d(this.rawDef.type)}get rawDefinition(){return h(this.rawDef)}};o(de,"PropertyDefinition");var j=de;function _(e){return new j(e)}o(_,"fillProperty");var B=class B extends j{static create(t,n){let i=x(B,t);return i.genericContext=n,i}get type(){return d(this.rawDef.type,this.genericContext)}};o(B,"GenericProperty");var L=B;var Te=class Te{constructor(t){this.rawDef=t}get name(){return this.rawDef.name}get returnType(){return d(this.rawDef.returnType)}get args(){var t;return((t=this.rawDef.args)==null?void 0:t.map(n=>({name:n.name,type:d(n.type),isOptional:n.isOptional})))||[]}get isPrivate(){return this.rawDef.isPrivate}get isStatic(){return this.rawDef.isStatic}get isAsync(){return this.rawDef.isAsync}};o(Te,"MethodDefinition");var G=Te;function U(e){return new G(e)}o(U,"fillMethod");var W=class W extends G{static create(t,n){let i=x(W,t);return i.genericContext=n,i}get args(){var t;return((t=this.rawDef.args)==null?void 0:t.map(n=>({name:n.name,type:d(n.type,this.genericContext),isOptional:n.isOptional})))||[]}get returnType(){return d(this.rawDef.returnType,this.genericContext)}};o(W,"GenericMethod");var K=W;function x(e,t){let n=Object.create(e.prototype);return Object.assign(n,t),n}o(x,"createInstance");function Z(e,t){e.properties=t.properties.map(n=>L.create(n,e.genericContext)),e.methods=t.methods.map(n=>K.create(n,e.genericContext))}o(Z,"buildPropertiesAndMethods");function be(e,t){let n={};return e.forEach(i=>{let[r,s]=t(i);n[r]=s}),n}o(be,"toDictionary");function q(e,t){return(e==null?void 0:e.map(t).filter(n=>n!==void 0))||[]}o(q,"mapNotNull");function N(e,t){if(e!==void 0)return e[t]}o(N,"getValue");function h(e){return JSON.parse(JSON.stringify(e))}o(h,"copy");var ge=class ge{constructor(t){this.name=t.name,this.members=new Map,t.members.forEach(n=>{let i=n.initializer===void 0?{name:"number"}:{literalValue:n.initializer};this.members.set(n.name,i)})}get type(){return{name:this.name,unionMembers:Array.from(this.members.values())}}get names(){return Array.from(this.members.keys())}};o(ge,"EnumDefinition");var Y=ge;var Dt=["Partial","Required","Readonly","Pick","Omit","Extract","Exclude"];function Ue(e){return typeof e=="string"&&Dt.includes(e)}o(Ue,"isSpecialType");function ht(e,t,n,i){switch(e){case"Partial":t=Mt(n);break;case"Required":t=xt(n);break;case"Readonly":t=wt(n);break;case"Pick":t=Ye(n,i);break;case"Omit":t=Qe(n,i);break;case"Extract":t=Rt(n,i);break;case"Exclude":t=St(n,i);break}return t}o(ht,"getSpecialType");function Ze(e,t){let[n,i]=t,r,s=["Pick","Omit","Extract","Exclude"].includes(e)?["T"]:["T","K"];return r=ht(e,r,n,i),r?{name:e,type:r,genericParams:s,rawType:e}:void 0}o(Ze,"getSpecialTypeAlias");function J(e,t){return e.typeLiteralMembers?{typeLiteralMembers:e.typeLiteralMembers.map(n=>{let i=h(n.rawDefinition);return t(i),new j(i)})}:e.unionMembers?{unionMembers:e.unionMembers.map(n=>J(n,t))}:e.intersectionMembers?{intersectionMembers:e.intersectionMembers.map(n=>J(n,t))}:void 0}o(J,"getMappedType");function qe(e,t){if(e.typeLiteralMembers)return{typeLiteralMembers:e.typeLiteralMembers.map(n=>t(n)?h(n):void 0).filter(n=>!!n)}}o(qe,"getFilterKeyType");function Mt(e){return J(e,t=>t.isOptional=!0)}o(Mt,"getPartialType");function xt(e){return J(e,t=>t.isOptional=!1)}o(xt,"getRequiredType");function wt(e){return J(e,t=>t.isReadonly=!0)}o(wt,"getReadonlyType");function Ye(e,t){var i;let n=(i=t.unionMembers)==null?void 0:i.map(r=>r.name);if(e.typeLiteralMembers)return qe(e,r=>r.name===t.literalValue||(n==null?void 0:n.includes(r.name)))}o(Ye,"getPickType");function Qe(e,t){var i;let n=(i=t.unionMembers)==null?void 0:i.map(r=>r.name);if(e.typeLiteralMembers)return qe(e,r=>!(r.name===t.literalValue||n!=null&&n.includes(r.name)))}o(Qe,"getOmitType");function Rt(e,t){if(e.typeLiteralMembers&&t.typeLiteralMembers){let n={unionMembers:t.typeLiteralMembers.map(i=>({literalValue:i.name}))};return Ye(e,n)}}o(Rt,"getExtractType");function St(e,t){if(e.typeLiteralMembers&&t.typeLiteralMembers){let n={unionMembers:t.typeLiteralMembers.map(i=>({literalValue:i.name}))};return Qe(e,n)}}o(St,"getExcludeType");var A=Reflect,C;function R(){if(C)return C;let e=A.__meta;if(e===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{C=JSON.parse(atob(e))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}return delete A.__meta,C.classDef=A.__classDef||{},delete A.__classDef,A.registerClass=t=>{Object.assign(C.classDef,t)},C}o(R,"getRawMeta");var Q=new Map,De=new Map,he=new Map,Me=new Map,Pt=new Map,In=o((e=>{Pt.set(e.name,e)}),"ReflectClass"),Ot={string:String,number:Number,boolean:Boolean,object:Object};function xe(e){var t;return((t=y(e))==null?void 0:t.jsClass)||Ot[e]}o(xe,"getClassByName");function y(e){var t,n,i;switch(typeof e){case"object":return y(e.constructor);case"function":let r=y(e.name);if(r)return r;let s=Array.from(Q.values()).find(l=>l.jsClass===e);if(s)return s;let a=(t=Object.entries(R().classDef||{}).find(([l,u])=>u===e))==null?void 0:t[0];return a?y(a):void 0;case"string":let c=e;if(!Q.has(c)){let l=(n=R().classes)==null?void 0:n[c];if(!l)return;let u=(i=R().classDef)==null?void 0:i[c];Q.set(c,new k(Ke(V({},l),{jsClass:u})))}return Q.get(c)}}o(y,"getClassDefinition");function I(e){var t;if(!De.has(e)){let n=(t=R().interfaces)==null?void 0:t[e];if(!n)return;De.set(e,new S(n))}return De.get(e)}o(I,"getInterfaceDefinition");function H(e){var t;if(!he.has(e)){let n=(t=R().enums)==null?void 0:t[e];if(!n)return;he.set(e,new Y(n))}return he.get(e)}o(H,"getEnumDefinition");function En(e){var t;return((t=H(e))==null?void 0:t.names)||[]}o(En,"getEnumNames");function Vn(e){let t=Object.entries(e)[0];if(!t)return[];let[n,i]=t,r=H(n);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(Vn,"getEnumValues");function He(e,t){var i;if(Ue(e))return!t||!t[0]?void 0:Ze(e,[t[0],t[1]]);if(!Me.has(e)){let r=(i=R().typeAliases)==null?void 0:i[e];if(!r||!r.type)return;Me.set(e,{name:e,rawType:r.type,type:d(r.type),genericParams:r.genericParams})}let n=h(Me.get(e));if(n.genericParams&&t){let r={};for(let s=0;s<n.genericParams.length;s++){let a=n.genericParams[s];r[a]=t[s]}n.type=d(n.rawType,r,t)}return n}o(He,"getTypeAliasDefinition");var ee=class ee{constructor(t){var n,i;this.name=t.name,this._implementationNames=t.implementations||[],this.methods=((n=t.methods)==null?void 0:n.map(U))||[],this.properties=((i=t.properties)==null?void 0:i.map(_))||[],this.generics=t.genericsParams}get implementations(){return this._implementations||(this._implementations=q(this._implementationNames,t=>{var n;return I(t)||((n=y(t))==null?void 0:n.type)||g(t)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let t=new Set(this.implementations);this.implementations.forEach(n=>{n instanceof ee?n.allImplementations.forEach(i=>t.add(i)):t.add(n)}),this._allImplementations=Array.from(t)}return this._allImplementations}get type(){let t={};return this.allImplementations.forEach(n=>{let r=("type"in n?n.type:n).typeLiteralMembers;r==null||r.forEach(s=>t[s.name]=s)}),this.properties.forEach(n=>t[n.name]=n),{name:this.name,typeLiteralMembers:Object.values(t)}}toString(){return`interface ${this.name}`}};o(ee,"InterfaceDefinition");var S=ee,te=class te extends S{static create(t,n){let i=x(te,t);i.genericArgs=n;let r=i;return r.buildGenericContext(),Z(r,t),r}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((n,i)=>this.genericContext[n]=this.genericArgs[i])}};o(te,"GenericInterface");var X=te;var we=class we{constructor(t){var n,i;this.name=t.name,this.superClassName=t.superClassName||"Object",this.superClass=y(this.superClassName),this._implementationNames=t.implementations||[],this.methods=((n=t.methods)==null?void 0:n.map(U))||[],this.properties=((i=t.properties)==null?void 0:i.map(_))||[],this.jsClass=t.jsClass,this.generics=t.genericsParams}get allMethods(){let t={};if(this.superClassName!=="Object"){let n=y(this.superClassName);n&&Object.assign(t,V({},n.allMethods))}return Object.assign(t,V({},be(this.methods,n=>[n.name,n]))),t}get allProperties(){var t;return Object.assign(((t=this.superClass)==null?void 0:t.allProperties)||{},be(this.properties,n=>[n.name,n]))}get implementations(){return this._implementations?this._implementations:q(this._implementationNames,t=>I(t)||g(t))}get allImplementations(){var t,n;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof S?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(n=(t=this.superClass)==null?void 0:t.allImplementations)==null||n.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(t){return this.properties.find(n=>n.name===t)}get type(){var n,i;let t={};return(i=(n=this.superClass)==null?void 0:n.type.typeLiteralMembers)==null||i.forEach(r=>t[r.name]=r),this.properties.forEach(r=>t[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(t)}}isSubClassOf(t){var n;return this.name===t||(n=this.superClass)!=null&&n.isSubClassOf(t)?!0:this.implementations.map(i=>i.name).includes(t)}isSuperClassOf(t){if(this.name===t)return!0;let n=y(t);return n?n.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(we,"ClassDefinition");var k=we,ie=class ie extends k{static create(t,n){let i=x(ie,t);i.genericArgs=n;let r=i;return r.buildGenericContext(),Z(r,t),r}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((n,i)=>this.genericContext[n]=this.genericArgs[i])}};o(ie,"GenericClass");var ne=ie;var Re=[Promise,Date,Map,Set,Error,Function];function T(e,t,n=1){switch(!0){case t.name==="undefined":return e===void 0?p:f(100,`declared as ${m(t)} but actually not`);case et(t):return p;case fe(t):return e instanceof Object?Se(e,t,n):f(200,`declared as ${m(t)} but actually not an object`);case re(t):return jt(e,t,n);case le(t):return It(e,t,n);case ae(t):for(let i of t.unionMembers||[])if(T(e,i,n).success)return p;return f(320,`declared as ${m(t)} but all value not match`);case ce(t):for(let i of t.intersectionMembers||[]){let r=T(e,i,n);if(!r.success)return f(330,`declared as ${m(t)} but all value not match`,r)}return p;case Oe(t):return Ct(e,t,n);case oe(t):switch(typeof e){case"string":return e===Nt(t.literalValue)?p:f(110,`declared as string ${m(t)} but value not match`);case"number":return e===Number(t.literalValue)?p:f(111,`declared as number ${m(t)} but value not match`);case"bigint":return e===BigInt(t.literalValue)?p:f(112,`declared as bigint ${m(t)} but value not match`);case"boolean":return e===!!t.literalValue?p:f(113,`declared as boolean ${m(t)} but value not match`);default:return t.literalValue==="null"&&e===null?p:e===t.literalValue?p:f(114,`declared as ${m(t)} but value not match`)}case se(t):return Et(e,t,n);case t.isFunction:case t.isConstructor:return typeof e=="function"?p:f(150,`declared as ${m(t)} but actually not`);case Pe(t):return e==null?f(120,`declared as ${m(t)} but actually ${e}`):typeof e===t.name?p:f(121,`declared as ${m(t)} but actually ${typeof e}`);default:return Vt(e,t,n)}}o(T,"validateValue");function jt(e,t,n=1){if(!Array.isArray(e))return f(300,`declared as ${m(t)} but actually not`);if(n===0)return p;for(let i=0;i<e.length;i++){let r=e[i],s=T(r,t.arrayElementType||b,n-1);if(!s.success)return f(301,`declared as ${m(t)} but [${i}] not match`,s)}return p}o(jt,"validateArrayValue");function Ct(e,t,n=1){if(e===null)return f(400,"declared as indexedType but actually is null");if(typeof e=="object")return f(410,`declared as indexedType but actually is ${typeof e}`);for(let i of Object.values(e)){let r=T(i,t.indexElementType,n-1);if(!r.success)return f(420,`declared as ${m(t)} but actually not match`,r)}return p}o(Ct,"validateIndexedValue");function It(e,t,n=1){if(!Array.isArray(e))return f(310,`declared as ${m(t)} but actually not a tuple`);if(n===0)return p;let i=0;for(let r of t.tupleMembers){let s=e[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=T(e[i],r,n);if(!a.success)return f(311,`declared as ${m(t)} but not all values in tuple match`,a)}return p}o(It,"validateTupleValue");function Et(e,t,n=1){if(e instanceof Object){for(let i of t.typeLiteralMembers||[]){if(i.isStatic)return p;if(i.name.startsWith("[")&&i.name.endsWith("]"))return p;if(n===0)return p;let r=i.type||b;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=N(e,i.name),a=T(s,r,n-1);if(!a.success)return f(211,`declared ${i.name} as ${m(r)}, but not match`,a)}return p}else return f(210,`declared as ${m(t)} but not an object`)}o(Et,"validateProperties");function Vt(e,t,n=1){let i=typeof t=="string"?t:t.name;if(!i)return p;if(e===void 0)return f(130,`declared as ${m(t)} but actually undefined`);if(e===null)return i==="null"?p:f(131,`declared as ${m(t)} but actually null`);for(let s of Re)if(i===s.name)return e instanceof s?p:f(132,`declared as ${m(t)} but actually ${e.constructor.name}`);if(e instanceof Object&&!Xe(e,i))return f(133,`declared as ${m(t)} but actually not instance of it`);if(n==0)return p;let r=T(e,g(i),n);return r.success?p:f(134,`declared as ${m(t)} but actually not match`,r)}o(Vt,"validateSimpleValue");function Se(e,t,n=3){if(t.classDefinition&&!Xe(e,t.classDefinition.name))return f(201,`declared as instance of ${m(t)} but actually not`);if(t.name!=="any"&&t===b)return f(202,`${m(t)} not defined`);let i=h(t);return delete i.classDefinition,T(e,t,n)}o(Se,"validateClassInstance");function Xe(e,t){if(e===void 0||e.constructor.name===t)return!0;let n=y(t);if(!n)return!0;if(n.jsClass)return e instanceof n.jsClass;let i=y(e);return i?i.isSubClassOf(n.name):!1}o(Xe,"valueInstanceOf");function Nt(e){return e.length>=2&&(e[0]==='"'&&e[e.length-1]==='"'||e[0]==="'"&&e[e.length-1]==="'")?e.substring(1,e.length-1):e}o(Nt,"trimQuotes");function m(e){var t,n,i,r;return typeof e=="string"?e:fe(e)?e.classDefinition.name:re(e)?(((t=e.arrayElementType)==null?void 0:t.name)||"unknown")+"[]":e.isConstructor?"Class":e.isFunction?"Function":se(e)?"Object":le(e)?`(${e.tupleMembers.map(m).join(",")})`:ae(e)?((n=e.unionMembers)==null?void 0:n.map(m).join(" | "))||"unknown":ce(e)?((i=e.intersectionMembers)==null?void 0:i.map(m).join(" & "))||"unknown":oe(e)?e.literalValue:Oe(e)?`{ [key]: ${((r=e.indexElementType)==null?void 0:r.name)||"unknown"} }`:e.name||"unknown"}o(m,"getTypeDisplayName");var b={name:"any"},Jt={name:"null"},tt=["string","number","boolean","bigint","symbol"];function et(e){return!!(e.name&&["any","void","unknown"].includes(e.name))}o(et,"isIgnoredType");function Pe(e){return!!(e.name&&tt.includes(e.name))}o(Pe,"isPrimitiveType");function re(e){return!!e.arrayElementType}o(re,"isArrayType");function oe(e){return!!e.literalValue}o(oe,"isLiteralType");function se(e){return!!e.typeLiteralMembers}o(se,"isTypeLiteralType");function ae(e){return!!e.unionMembers}o(ae,"isUnionType");function ce(e){return!!e.intersectionMembers}o(ce,"isIntersectionType");function le(e){return!!e.tupleMembers}o(le,"isTupleType");function fe(e){return!!e.classDefinition}o(fe,"isClassDefinition");function At(e){return!!e.generics}o(At,"hasGenerics");function Oe(e){return!!e.indexElementType}o(Oe,"isIndexType");function g(e,t){if(e==="any"||e==="Any"||e==="unknown"||e==="")return b;if(e==="null")return Jt;let n=y(e);if(n)return t?ne.create(n,t).type:n.type;if(tt.includes(e))return{name:e};if(Re.map(a=>a.name).includes(e))return{name:e,generics:t};let i=I(e);if(i)return t?X.create(i,t).type:i.type;let r=H(e);if(r)return r.type;let s=He(e,t);return s?s.type:b}o(g,"getTypeDefinition");var je=new Map;function d(e,t,n){let i=Ce(e);if(e===void 0)return b;let r=je.get(i);if(r)return r;let s={};if(je.set(i,s),typeof e=="string")s=(t==null?void 0:t[e])||g(e,n)||b;else if(e.arrayElementType)Object.assign(s,{arrayElementType:d(e.arrayElementType,t)});else if(e.unionMembers)Object.assign(s,{unionMembers:e.unionMembers.map(a=>d(a,t))});else if(e.intersectionMembers)Object.assign(s,{intersectionMembers:e.intersectionMembers.map(a=>d(a,t))});else if(e.tupleMembers)Object.assign(s,{tupleMembers:e.tupleMembers.map(a=>d(a,t))});else if(e.generics){let a=e.generics[0],c=e.generics.slice(1).map(l=>d(l,t));Object.assign(s,d(a,t,c))}else e.indexElementType&&Object.assign(s,{indexElementType:d(e.indexElementType,t)});return Object.keys(s).length===0&&(s=b),je.delete(i),s}o(d,"fillType");function Ce(e){return e===null?"null":e===void 0?"undefined":typeof e!="object"?JSON.stringify(e):Array.isArray(e)?"["+e.map(Ce).join(",")+"]":"{"+Object.keys(e).sort().map(n=>JSON.stringify(n)+":"+Ce(e[n])).join(",")+"}"}o(Ce,"stableStringify");var Ie={isPrimitiveType:Pe,isArrayType:re,isLiteralType:oe,isTypeLiteralType:se,isUnionType:ae,isIntersectionType:ce,isTupleType:le,isClassDefinition:fe,hasGenerics:At};function D(e){if(typeof e=="string"){let t=$t(e);if(typeof t=="string"){let n=t.match(/\"(.+)\"$/)||t.match(/\'(.+)\'$/);if(n!=null&&n[1])return{literalValue:n[1]}}return typeof t=="string"?g(e):D(t)}return Array.isArray(e)?g(e[0],e.slice(1).map(D)):"array"in e?{arrayElementType:D(e.array)}:"union"in e?{unionMembers:e.union.map(D)}:"intersection"in e?{intersectionMembers:e.intersection.map(D)}:"tuple"in e?{tupleMembers:e.tuple.map(D)}:e}o(D,"getTypeDef");function ui(e,t,n=5){let i=T(e,D(t),n);if(!i.success){console.error(`assert failed with type: ${t}
|
|
4
|
-
${
|
|
5
|
-
${l.errorStackFlow}`);return a},"checkValue"),r=t.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||b),n instanceof Promise?n.then(a=>i(a,r||b)):i(n,r||b)}o(zt,"validateMethodReturnValue");function Ee(e,t){var n;return`${e}.${t.name}(${(n=t.args)==null?void 0:n.map(i=>i.name).join(", ")})`}o(Ee,"getMethodDescription");function Oi(e,t,...n){let i=y(e);if(!i)return;let r=i.allMethods[t];if(r)return it(e,r,n),N(e,t).apply(e,n)}o(Oi,"safeCall");import"reflect-metadata";function rt(e){return String(e).toLocaleLowerCase()==="false"?!1:!!e}o(rt,"asBoolean");function $(e){return e==null||Number.isNaN(e)||e instanceof Date&&String(e)==="Invalid Date"?"":typeof e=="symbol"?e.description||"":String(e)}o($,"asString");function Ve(e){return e?e instanceof Date?e.getDate():Number(e):0}o(Ve,"asNumber");function w(e,t,n){e[t]=n}o(w,"setAnyValue");function pe(e,t){return e[t]}o(pe,"getAnyValue");function $i(e,t,n){let i=e[t];if(i!==void 0)return i;let r=n();return w(e,t,r),r}o($i,"getOrSetValue");function ot(e){return typeof e=="object"&&e!==null&&e.constructor===Object}o(ot,"isDictionary");function st(e,t){let n=Object.create(e.prototype);return Object.assign(n,t||{}),n}o(st,"createInstance");function at(e){return((t,n)=>Reflect.defineMetadata(e,n,t.constructor))}o(at,"defineDecoratedProperty");function ct(e,t,...n){let i=lt(e,t);if(i!==void 0&&i instanceof Function)return i.apply(e,n)}o(ct,"callDecoratedMethod");function Li(e,t){let n=lt(e,t);return n!==void 0&&n instanceof Function}o(Li,"hasDecoratedMethod");function vt(e,t){return Reflect.getMetadata(t,e.constructor)}o(vt,"getDecoratedProperty");function lt(e,t){let n=vt(e,t);if(n!==void 0)return pe(e,n)}o(lt,"getDecoratedPropertyValue");var P=o(function({getter:e,setter:t,fieldSymbol:n}){return(i,r)=>{Object.defineProperty(i,r,{get:o(function(){return e?e(this,r):P.getField(i,r,n)},"get"),set:o(function(s){t?t(this,s,r):P.setField(i,r,s,n)},"set")})}},"PropertyWrapper");w(P,"getField",(e,t,n)=>{var i;return(i=pe(e,n))==null?void 0:i[t]});w(P,"setField",(e,t,n,i)=>{let r=pe(e,i)||{};r[t]=n,w(e,i,r)});function Bi(e){let t=Symbol("lazy");return P({getter:o((n,i)=>{let r=P.getField(n,i,t);if(r)return r.value;let s=e(n,i);return P.setField(n,i,{value:s},t),s},"getter"),setter:o(()=>{},"setter"),fieldSymbol:t})}o(Bi,"Lazy");var F=Symbol("JSON_SERIALIZED"),ft=Symbol("AFTER_SERIALIZED"),ze=class ze{constructor(){this.settingsByName={};this.settingsBySerializedName={};this.ignoredProperties=[];this.defaultIgnored=!1}add(t){this.settingsByName[t.propName]=t,this.settingsBySerializedName[t.serializedName]=t}isPropertyIgnored(t){return this.defaultIgnored&&!this.settingsByName[t]?!0:this.ignoredProperties.indexOf(t)!==-1}};o(ze,"SerializeSettings");var Je=ze,ve=class ve{constructor(t,n,i){this.target=t;this.propName=n;this.options=i;this.isArray=Reflect.getDesignType(t,n)===Array,this.serializedName=i.name||$(n),this.class=i.class,this.fromJSON=this.createBuilder(),this.toJSON=i.toJSON||(r=>pt(r))}createBuilder(){if(this.options.fromJSON)return this.options.fromJSON;if(this.class&&this.class instanceof Function){let t=this.class;return n=>{let i=ye.get(t);return i?i.fromJson(n):Fe(n,t)}}else return t=>Gt(this.target,this.propName,t)}};o(ve,"SerializedPropertySetting");var Ae=ve;function ut(e,t){ke(e,n=>{n.defaultIgnored=t})}o(ut,"setDefaultIgnored");function me(e,t,n){let i=E(e);ke(i,r=>{r.add(new Ae(e,t,n))})}o(me,"registerSerializedProperty");function ke(e,t){let n=Reflect.getMetadata(F,e);n===void 0&&(n=new Je),t(n),Reflect.defineMetadata(F,n,e)}o(ke,"updateSerializeSettings");var Yi=Lt();function Lt(e){return e=e||{},(t,n)=>me(t,$(n),e)}o(Lt,"Serialized");function Qi(e){return(t,n)=>me(t,$(n),{name:e})}o(Qi,"SerializedName");var Hi=o((e,t)=>ke(E(e),n=>n.ignoredProperties.push(t)),"IgnoreSerialization");function Xi(e){return JSON.stringify(typeof e=="object"?$e(e):e)}o(Xi,"serialize");function pt(e){if(e===void 0)throw new Error("attempt to serialize undefined value");if(e===null)return null;if(typeof e=="object"){let t=ye.get(E(e));return t?t.toJson(e):$e(e)}return e}o(pt,"serializeTo");function $e(e){var s;if(e instanceof Array)return e.map(a=>$e(a));if(ot(e)){let a={};return Object.entries(e).forEach(c=>{let[l,u]=c;a[l]=pt(u)}),a}let t=E(e);((s=y(t))==null?void 0:s.isSubClassOf("Mappable"))&&Le(t);let i=Reflect.getMetadata(F,t);if(i===void 0)return e;let r={};return Object.entries(e).forEach(a=>{let c=a[0];if(i.isPropertyIgnored(c))return;let l=a[1];if(l===void 0||l instanceof Function||typeof l=="symbol")return;let u=i.settingsByName[c],M=(u==null?void 0:u.serializedName)||c;u&&(u.isArray?l=l.map(z=>u.toJSON(z)):l=u.toJSON(l)),r[M]=l}),r}o($e,"serializeToData");function Fe(e,t){var n;if(typeof e=="string"&&(e=JSON.parse(e)),t===null||t===void 0)return e;try{let i=e,r=E(t),s=(n=y(r))==null?void 0:n.isSubClassOf("Mappable");s&&Le(r);let a=ye.get(r);if(a)return a.fromJson(i);let c=t instanceof Function?st(t):t;if(typeof c=="object"&&_t(i,c),s){let l=ue(c,r.name);if(!l.success)throw new Error(`JSON deserialize validate failed: ${We(l)} `)}return c}catch(i){throw console.error("failed to deserialize"),console.dir(i),i}}o(Fe,"deserialize");function Bt(e,t){let n=typeof e=="string"?JSON.parse(e):e;return n instanceof Array?n.map(i=>Fe(i,t)):[]}o(Bt,"deserializeArray");function _t(e,t){let n=E(t),i=Reflect.getMetadata(F,n);if(i===void 0){Object.assign(t,e);return}Object.keys(e).forEach(r=>{let s=i.settingsBySerializedName[r],a=e[r];if(s===void 0){i.defaultIgnored||w(t,r,a);return}let c=s.propName;if(i.isPropertyIgnored(c))return;let l;l=a instanceof Array?a.map(u=>s.fromJSON(u)):s.fromJSON(a),w(t,c,l)}),ct(t,ft)}o(_t,"deserializeFrom");function er(e){return Reflect.getMetadata(F,e)}o(er,"getSerializeSettings");function Gt(e,t,n){let i=Reflect.getDesignType(e,t);if(i===void 0)return n;if(i===Array)return Bt(n);let r=ye.get(i);return r?r.fromJson(n):Fe(n,i)}o(Gt,"getValueByReflectType");function E(e){return e instanceof Function?e:e.constructor}o(E,"classOf");function Kt(e){return e()}o(Kt,"run");var ye=Kt(()=>{let e=new Map;function t(i){return e.get(i)}o(t,"get");function n(i,r){e.set(i,r)}return o(n,"register"),n(String,{fromJson:$,toJson:Ne}),n(Number,{fromJson:Ve,toJson:Ne}),n(Boolean,{fromJson:rt,toJson:Ne}),n(Date,{fromJson:o(i=>new Date(Ve(i)),"fromJson"),toJson:o(i=>i.getTime(),"toJson")}),{get:t,register:n}}),Ne=o(e=>e,"itSelf"),tr=o(()=>{},"done"),nr=at(ft);var mt=new Map;function Le(e){if(mt.get(e))return;let t=y(e),n=new Proxy({},{get(r,s){return i(s)},set(r,s,a){return i(s)(a),!0}});function i(r){return(s,a)=>{var u,M,z;let c=(M=(u=Object.values((t==null?void 0:t.allProperties)||{}))==null?void 0:u.find(yt=>yt.name===r))==null?void 0:M.type,l=(c==null?void 0:c.name)!==void 0?xe(c.name):void 0;c&&Ie.isArrayType(c)&&(l=((z=c.arrayElementType)==null?void 0:z.name)!==void 0?xe(c.arrayElementType.name):void 0),typeof r=="string"&&(me(e.prototype,r,{name:s,class:l,fromJSON:a==null?void 0:a.fromJSON,toJSON:a==null?void 0:a.toJSON}),ut(e,!0))}}o(i,"doMap"),e.prototype.mapping(n),mt.set(e,!0)}o(Le,"registerMappable");function ar(e,t){let n=y(e);n&&n.properties.forEach(i=>t[i.name]())}o(ar,"mapAllProperties");import"reflect-metadata";var Wt="design:type",Ut="design:returntype",Zt="design:paramtypes";function qt(e,t){return Reflect.getMetadata(Wt,e,t)}o(qt,"getDesignType");function Yt(e,t){return Reflect.getMetadata(Ut,e,t)}o(Yt,"getReturnType");function Qt(e,t){return Reflect.getMetadata(Zt,e,t)}o(Qt,"getParamTypes");function Ht(e,t,n,i){let r=(i===void 0?Reflect.getMetadata(e,n):Reflect.getMetadata(e,n,i))||[];r.includes(t)||r.push(t),i===void 0?Reflect.defineMetadata(e,r,n):Reflect.defineMetadata(e,r,n,i)}o(Ht,"addMetadataList");Object.assign(Reflect,{getDesignType:qt,getReturnType:Yt,getParamTypes:Qt,addMetadataList:Ht});export{nr as AfterSerialized,Hi as IgnoreSerialization,Bi as Lazy,P as PropertyWrapper,In as ReflectClass,Pi as ReflectValidate,Lt as Serialized,Yi as SerializedClass,Qi as SerializedName,Ie as TypeDefinition,v as ValidateResult,rt as asBoolean,Ve as asNumber,$ as asString,ui as assertType,ct as callDecoratedMethod,st as createInstance,at as defineDecoratedProperty,Fe as deserialize,Bt as deserializeArray,_t as deserializeFrom,tr as done,f as failedResult,pe as getAnyValue,xe as getClassByName,y as getClassDefinition,vt as getDecoratedProperty,lt as getDecoratedPropertyValue,H as getEnumDefinition,En as getEnumNames,Vn as getEnumValues,We as getErrorTraceMessages,I as getInterfaceDefinition,$i as getOrSetValue,er as getSerializeSettings,He as getTypeAliasDefinition,D as getTypeDef,Li as hasDecoratedMethod,ot as isDictionary,pi as isNullable,kt as isType,Ne as itSelf,ar as mapAllProperties,Le as registerMappable,me as registerSerializedProperty,Oi as safeCall,Xi as serialize,pt as serializeTo,$e as serializeToData,w as setAnyValue,ut as setDefaultIgnored,p as successResult,gi as validateArray,Di as validateDictionary,ue as validateInstance};
|
|
1
|
+
var Fe=Object.defineProperty,Ze=Object.defineProperties;var en=Object.getOwnPropertyDescriptors;var Se=Object.getOwnPropertySymbols;var nn=Object.prototype.hasOwnProperty,tn=Object.prototype.propertyIsEnumerable;var ve=(n,e,t)=>e in n?Fe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,A=(n,e)=>{for(var t in e||(e={}))nn.call(e,t)&&ve(n,t,e[t]);if(Se)for(var t of Se(e))tn.call(e,t)&&ve(n,t,e[t]);return n},Ne=(n,e)=>Ze(n,en(e)),o=(n,e)=>Fe(n,"name",{value:e,configurable:!0});var De=["string","number","boolean","bigint","symbol"],_e={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=Ge(this.rawDef);return e&&e(t),new q(t)}};o(q,"PropertyDefinition");var J=q;function K(n){return new J(n)}o(K,"fillProperty");var z=class z extends J{static create(e,t){let i=I(z,e);return i.genericContext=t,i}get type(){return y(this.rawDef.type,this.genericContext)}};o(z,"GenericProperty");var W=z;function I(n,e){let t=Object.create(n.prototype);return Object.assign(t,e),t}o(I,"createInstance");function Q(n,e){n.properties=e.properties.map(t=>W.create(t,n.genericContext)),n.methods=e.methods.map(t=>S.create(t,n.genericContext)),n instanceof O&&e instanceof $&&e.constructorMethod!==void 0&&(n.constructorMethod=S.create(e.constructorMethod,n.genericContext))}o(Q,"buildPropertiesAndMethods");function be(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(be,"toDictionary");function X(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(X,"mapNotNull");function v(n,e){if(n!==void 0)return n[e]}o(v,"getValue");function Ge(n){return JSON.parse(JSON.stringify(n))}o(Ge,"copy");var ge=class ge{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(ge,"MethodDefinition");var Y=ge;function F(n){return new Y(n)}o(F,"fillMethod");var Z=class Z extends Y{static create(e,t){let i=I(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)}};o(Z,"GenericMethod");var S=Z;var N=Reflect,_;function M(){if(_)return _;let n=N.__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 N.__meta;let e=_;return e.classDef=N.__classDef||{},delete N.__classDef,Reflect.defineProperty(N,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),_}o(M,"getRawMeta");var ne=class ne{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(F))||[],this.properties=((i=e.properties)==null?void 0:i.map(K))||[],this.generics=(r=e.genericsParams)!=null?r:[],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)||w(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}`}};o(ne,"InterfaceDefinition");var k=ne,te=class te extends k{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=I(te,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),Q(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(te,"GenericInterface");var ee=te,Te=new Map;function j(n){var e,t;if(!Te.has(n)){let i=(t=(e=M())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;Te.set(n,new k(i))}return Te.get(n)}o(j,"getInterfaceDefinition");var he=class he{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?F(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(F))||[],this.properties=((i=e.properties)==null?void 0:i.map(K))||[],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,A({},t.allMethods))}return Object.assign(e,A({},be(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},be(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:X(this._implementationNames,e=>j(e)||w(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof k?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(he,"ClassDefinition");var $=he,re=class re extends ${constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=I(re,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),Q(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(re,"GenericClass");var O=re,ie=new Map;function rn(n){var e;return((e=d(n))==null?void 0:e.jsClass)||_e[n]}o(rn,"getClassByName");function d(n){var e,t,i,r,s,f;switch(typeof n){case"object":return d(n.constructor);case"function":let c=d(n.name);if(c)return c;let a=Array.from(ie.values()).find(b=>b.jsClass===n);if(a)return a;let p=(t=Object.entries(((e=M())==null?void 0:e.classDef)||{}).find(([b,h])=>h===n))==null?void 0:t[0];return p?d(p):void 0;case"string":let D=n;if(!ie.has(D)){let b=(r=(i=M())==null?void 0:i.classes)==null?void 0:r[D];if(!b)return;let h=(f=(s=M())==null?void 0:s.classDef)==null?void 0:f[D];ie.set(D,new $(Ne(A({},b),{jsClass:h})))}return ie.get(D)}}o(d,"getClassDefinition");var L=class L{constructor(e,t,i,r){this.success=e;this.errorCode=t;this.errorDesc=i;this.cause=r}static failure(e,t,i){return new L(!1,e,t,i)}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(L,"ValidateResult"),L.success=new L(!0);var oe=L,u=oe.success,l=oe.failure;function lt(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
|
|
3
|
+
-> `)}o(lt,"getErrorTraceMessages");var Me=class Me extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Me,"ValidationError");var x=Me,G={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler")};var we=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function g(n,e,t=1){switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${m(e)} but actually not`);case He(e):return u;case pe(e):return n instanceof Object?Re(n,e,t):l(200,`declared as ${m(e)} but actually not an object`);case se(e):return on(n,e,t);case ue(e):return an(n,e,t);case ce(e):for(let i of e.unionMembers||[])if(g(n,i,t).success)return u;return l(320,`declared as ${m(e)} but all value not match`);case le(e):for(let i of e.intersectionMembers||[]){let r=g(n,i,t);if(!r.success)return l(330,`declared as ${m(e)} but all value not match`,r)}return u;case Ce(e):return sn(n,e,t);case ae(e):switch(typeof n){case"string":return n===ln(e.literalValue)?u:l(110,`declared as string ${m(e)} but value not match`);case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${m(e)} but value not match`);case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${m(e)} but value not match`);case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${m(e)} but value not match`);default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${m(e)} but value not match`)}case fe(e):return fn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${m(e)} but actually not`);case xe(e):return n==null?l(120,`declared as ${m(e)} but actually ${n}`):typeof n===e.name?u:l(121,`declared as ${m(e)} but actually ${typeof n}`);default:return cn(n,e,t)}}o(g,"validateValue");function on(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${m(e)} but actually not`);if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=g(r,e.arrayElementType||T,t-1);if(!s.success)return l(301,`declared as ${m(e)} but [${i}] not match`,s)}return u}o(on,"validateArrayValue");function sn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null");if(n===void 0)return l(401,"declared as indexedType but actually is undefined");if(typeof n=="object")return l(410,`declared as indexedType but actually is ${typeof n}`);for(let i of Object.values(n)){let r=g(i,e.indexElementType,t-1);if(!r.success)return l(420,`declared as ${m(e)} but actually not match`,r)}return u}o(sn,"validateIndexedValue");function an(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${m(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 f=g(n[i],r,t);if(!f.success)return l(311,`declared as ${m(e)} but not all values in tuple match`,f)}return u}o(an,"validateTupleValue");function fn(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=v(n,i.name),f=g(s,r,t-1);if(!f.success)return l(211,`declared ${i.name} as ${m(r)}, but not match`,f)}return u}else return l(210,`declared as ${m(e)} but not an object`)}o(fn,"validateProperties");function cn(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 ${m(e)} but actually undefined`);if(n===null)return i==="null"?u:l(131,`declared as ${m(e)} but actually null`);for(let s of we)if(i===s.name)return n instanceof s?u:l(132,`declared as ${m(e)} but actually ${n.constructor.name}`);if(n instanceof Object&&!Be(n,i))return l(133,`declared as ${m(e)} but actually not instance of it`);if(t==0)return u;let r=g(n,w(i),t);return r.success?u:l(134,`declared as ${m(e)} but actually not match`,r)}o(cn,"validateSimpleValue");function Re(n,e,t=3){if(e.classDefinition&&!Be(n,e.classDefinition.name))return l(201,`declared as instance of ${m(e)} but actually not`);if(e.name!=="any"&&e===T)return l(202,`${m(e)} not defined`);let i=A({},e);return delete i.classDefinition,g(n,i,t)}o(Re,"validateClassInstance");function Be(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(Be,"valueInstanceOf");function ln(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(ln,"trimQuotes");function m(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":fe(n)?"Object":ue(n)?`(${n.tupleMembers.map(m).join(",")})`:ce(n)?((t=n.unionMembers)==null?void 0:t.map(m).join(" | "))||"unknown":le(n)?((i=n.intersectionMembers)==null?void 0:i.map(m).join(" & "))||"unknown":ae(n)?n.literalValue:Ce(n)?`{ [key]: ${((r=n.indexElementType)==null?void 0:r.name)||"unknown"} }`:n.name||"unknown"}o(m,"getTypeDisplayName");var Ie=class Ie{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(Ie,"EnumDefinition");var me=Ie,Pe=new Map;function B(n){var e,t;if(!Pe.has(n)){let i=(t=(e=M())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;Pe.set(n,new me(i))}return Pe.get(n)}o(B,"getEnumDefinition");function un(n){var e;return((e=B(n))==null?void 0:e.names)||[]}o(un,"getEnumNames");function pn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=B(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(pn,"getEnumValues");var mn=["Partial","Required","Readonly","Pick","Omit","Extract","Exclude"];function Ue(n){return typeof n=="string"&&mn.includes(n)}o(Ue,"isSpecialType");function yn(n,e,t){let i;switch(n){case"Partial":i=dn(e);break;case"Required":i=Dn(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=gn(e,t);break;case"Exclude":i=Tn(e,t);break}return i}o(yn,"getSpecialType");function Je(n,e){let[t,i]=e,r,s=["Pick","Omit","Extract","Exclude"].includes(n)?["T"]:["T","K"];return r=yn(n,t,i),r?{name:n,type:r,genericParams:s,fromLib:!0}:void 0}o(Je,"getSpecialTypeAlias");function H(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>t.copy(e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:void 0}o(H,"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 dn(n){return H(n,e=>e.isOptional=!0)}o(dn,"getPartialType");function Dn(n){return H(n,e=>e.isOptional=!1)}o(Dn,"getRequiredType");function bn(n){return H(n,e=>e.isReadonly=!0)}o(bn,"getReadonlyType");function qe(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return We(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(qe,"getPickType");function ze(n,e){var i;if(!e)return;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 gn(n,e){if(e&&n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return qe(n,t)}}o(gn,"getExtractType");function Tn(n,e){if(e&&n.typeLiteralMembers&&e.typeLiteralMembers){let t={unionMembers:e.typeLiteralMembers.map(i=>({literalValue:i.name}))};return ze(n,t)}}o(Tn,"getExcludeType");function $e(n,e){var r,s,f;if(Ue(n))return!e||!e[0]?void 0:Je(n,[e[0],e[1]]);if(!Ee.has(n)){let c=(s=(r=M())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;Ee.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=Ee.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let a=0;a<t.genericParams.length;a++){let p=t.genericParams[a];c[p]=e[a]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(f=t.fromLib)!=null?f:!1}}o($e,"getTypeAliasDefinition");var Ee=new Map;var T={name:"any"},hn={name:"null"};function He(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(He,"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 fe(n){return!!n.typeLiteralMembers}o(fe,"isTypeLiteralType");function ce(n){return!!n.unionMembers}o(ce,"isUnionType");function le(n){return!!n.intersectionMembers}o(le,"isIntersectionType");function ue(n){return!!n.tupleMembers}o(ue,"isTupleType");function pe(n){return!!n.classDefinition}o(pe,"isClassDefinition");function Mn(n){return!!n.generics}o(Mn,"hasGenerics");function Ce(n){return!!n.indexElementType}o(Ce,"isIndexType");function w(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return T;if(n==="null")return hn;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?O.create(t,e).type:t.type;if(De.includes(n))return{name:n};if(we.map(f=>f.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 r=B(n);if(r)return r.type;let s=$e(n,e);return s?s.type:T}o(w,"getTypeDefinition");var ke=new Map;function y(n,e,t){let i=Ae(n);if(n===void 0)return T;let r=ke.get(i);if(r)return r;let s={};if(ke.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:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(f=>y(f,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(f=>y(f,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(f=>y(f,e))});else if(n.generics){let f=n.generics[0],c=n.generics.slice(1).map(a=>y(a,e));Object.assign(s,y(f,e,c))}else n.indexElementType&&Object.assign(s,{indexElementType:y(n.indexElementType,e)});return Object.keys(s).length===0&&(s=T),ke.delete(i),s}o(y,"fillType");function Ae(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Ae).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Ae(n[t])).join(",")+"}"}o(Ae,"stableStringify");var wn={isPrimitiveType:xe,isArrayType:se,isLiteralType:ae,isTypeLiteralType:fe,isUnionType:ce,isIntersectionType:le,isTupleType:ue,isClassDefinition:pe,hasGenerics:Mn};function R(n){if(typeof n=="string"){let e=xn(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):R(e)}return"array"in n?{arrayElementType:R(n.array)}:"union"in n?{unionMembers:n.union.map(R)}:"intersection"in n?{intersectionMembers:n.intersection.map(R)}:"tuple"in n?{tupleMembers:n.tuple.map(R)}:"generic"in n?w(n.name,n.generic.map(R)):n}o(R,"getTypeDef");function Bt(n,e,t=5){let i=g(n,R(e),t);return i.success||G.validationErrorHandler(new x(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(Bt,"assertType");function Ht(n){return Rn(null,n)}o(Ht,"isNullable");function Rn(n,e,t=5){return g(n,R(e),t).success}o(Rn,"isType");function xn(n){let e=0,t="%%",i={};function r(a){let p=`${t}${e++}`;return i[p]=a,p}o(r,"addPlaceholder");function s(a){let p=a.match(new RegExp(`^(${t}\\d)$`));if(!p)return;let D=p[1].trim(),b=i[D];return delete i[D],b}o(s,"getPlaceholder");function f(a,p,D,b){let h=0;for(;h<a.length;){let C=a.indexOf(p,h);if(C===-1)break;h=C+1;let E=a.indexOf(D,h);if(E===-1)throw new Oe("Illegal type string");let U=a.substring(C+1,E),V=r(U);b?a=`${a.substring(0,C+1)}${V}${a.substring(E)}`:a=`${a.substring(0,C)}${V}${a.substring(E+1)}`}return a}o(f,"replaceBracket");function c(a){let p=a.trim(),D=o(P=>P.trim(),"trim"),b=o(P=>P.length!=0,"notEmpty");p=f(p,"(",")",!1),p=f(p,"<",">",!0);let h=s(p);if(h)return c(h);let C=p.split("|").map(D).filter(b);if(C.length>1)return{union:C.map(c)};let E=p.split("&").map(D).filter(b);if(E.length>1)return{intersection:E.map(c)};let U=p.match(/^\[(.*)]$/);if(U)return{tuple:U[1].split(",").map(D).filter(b).map(c)};let V=p.match(/^(.+)\[]$/);if(V)return{array:c(V[1])};let ye=p.match(/^([^<]+)<(.+)>$/);if(ye){let P=ye[1].trim(),de=c(ye[2]);if(typeof de=="string"){let Ye=de.split(",").map(D).filter(b).map(c);return{name:P,generic:Ye}}else return{name:P,generic:[de]}}return p}return o(c,"parseTypeRecursive"),c(n)}o(xn,"parseType");var je=class je extends Error{};o(je,"TypeParseError");var Oe=je;function Ke(n,e,t=3){return e=e||n.constructor.name,Re(n,R(e),t)}o(Ke,"validateInstance");function Kt(n,e,t=1){for(let i=0;i<n.length;i++){let r=Ke(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,r)}return u}o(Kt,"validateArray");function Qt(n,e,t=1){let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,f]=i[r],c=Ke(f,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,c)}return u}o(Qt,"validateDictionary");var Qe=Symbol("VALIDATE_WRAPPER"),Le=G.validationErrorHandler,ri=o((n,e,t)=>Cn(n,e,t),"ReflectValidate");function Cn(n,e,t){let i=t.value;if(typeof i!="function"||v(i,Qe))return;let r=o(()=>{var a,p;return(p=(a=d(n))==null?void 0:a.methods)==null?void 0:p.find(D=>D.name===e)},"getMethodDef"),s=o(a=>Xe(n,r(),a),"validateArgs"),f=o(a=>Pn(n,r(),a),"validateReturn"),c=o(function(...a){s(a);let p=i.call(this,...a);return f(p)},"newFunc");c[Qe]=i,t.value=c}o(Cn,"wrapValidateMethod");function Xe(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let f=t==null?void 0:t[s];if(f===void 0)if(!r.isOptional)Le(new x(`Illegal arguments for ${Ve(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=g(f,r.type||T,1);c.success||(console.error("validateResult",c),Le(new x(`Illegal arguments for ${Ve(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`)))})}o(Xe,"validateMethodParams");function Pn(n,e,t){var s;if(!e)return t;let i=o((f,c)=>{let a=g(f,c,5);return a.success||(console.error(a.errorStackFlow),Le(new x(`result for ${Ve(n.constructor.name,e)} doesn't match type ${c.name}:
|
|
4
|
+
${a.errorStackFlow}`))),f},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||T),t instanceof Promise?t.then(f=>i(f,r||T)):i(t,r||T)}o(Pn,"validateMethodReturnValue");function Ve(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Ve,"getMethodDescription");function oi(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return Xe(n,r,t),v(n,e).apply(n,t)}o(oi,"safeCall");export{$ as ClassDefinition,me as EnumDefinition,k as InterfaceDefinition,G as ReflectConfig,ri as ReflectValidate,wn as TypeDefinition,Oe as TypeParseError,oe as ValidateResult,x as ValidationError,Bt as assertType,l as failedResult,rn as getClassByName,d as getClassDefinition,B as getEnumDefinition,un as getEnumNames,pn as getEnumValues,lt as getErrorTraceMessages,j as getInterfaceDefinition,$e as getTypeAliasDefinition,R as getTypeDef,Ht as isNullable,Rn as isType,oi as safeCall,u as successResult,Kt as validateArray,Qt as validateDictionary,Ke 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(x){c(x)}},d=m=>{try{l(s.throw(m))}catch(x){c(x)}},l=m=>m.done?t(m.value):Promise.resolve(m.value).then(r,d);l((s=s.apply(e,n)).next())});import J from"typescript";function R(e){return e||{}}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},k=new Map,M=new Map,F=new Map,C=new Map,B=new Map,_=new Set,Q={[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",Z=["string","number","boolean","bigint","symbol"],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,H=!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));W(d,s);for(let[l,m]of k)r.classes[l]=m;for(let[l,m]of M)r.interfaces[l]=m;for(let[l,m]of C)r.typeAliases[l]=m;for(let[l,m]of F)r.enums[l]=m;for(let[l,m]of B)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 W(e,n){if(e||(e=[v.cwd()]),e=ce(e),!H){let s=ie(e,n),t=i.createProgram(s,{});L=t.getTypeChecker(),s=s.map(r=>X(r)),t.getSourceFiles().filter(r=>s.includes(X(r.fileName))||r.fileName.endsWith("/lib.es5.d.ts")).forEach(r=>{b(`parse file: ${r.fileName}`),se(r)});for(let r of _.keys())!k.has(r)&&!M.has(r)&&!F.has(r)&&!C.has(r)&&!Z.includes(r)&&!ee.includes(r)&&(b(`remove unknown typeName: ${r}`),_.delete(r));Array.from(k.values()).forEach(Te),Array.from(M.values()).forEach(Re),[k,M,C].forEach(he),H=!0}return{classDefinitions:k,interfaceDefinitions:M,enumDefinitions:F,typeAliasDefinitions:C,constTypeDefinitions:B}}function ie(e,n){let s=[];return e.forEach(t=>{if(t=h.resolve(t),xe(t,n)){b(`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,x,N,E,K,u,w,I,j,y,D,f,T;let n=a(e.name);if(!n)return;let s=a((x=(m=(l=e.heritageClauses)==null?void 0:l.find(o=>o.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:x[0].expression),t=(E=(N=e.heritageClauses)==null?void 0:N.find(o=>o.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:E.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))};b(`Define class: ${a(e.name)}`),k.set(n,d)}function me(e){var l,m,x,N,E,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:((x=u.modifiers)==null?void 0:x.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:((E=u.modifiers)==null?void 0:E.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=z(d.implementations||[],s),d.methods=z(d.methods||[],c,(u,w)=>u.name===w.name),d.properties=z(d.properties||[],t,(u,w)=>u.name===w.name),d.indexElementType=r,b(`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),b(`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)}))}),b(`Define enum: ${a(e.name)}`))}function de(e){var c;b(`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);C.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)&&B.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)}):b(`unsupported property: ${s.name}`)}),{typeLiteralMembers:n}}function ae(e){_.add(e)}function g(e,n=!1){if(e.type&&!n)return P(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?P("type"in t?t.type:t):O}function P(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=>P(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:P()})}),n.typeLiteralMembers=s}else if(i.isArrayTypeNode(e))n.arrayElementType=P(e.elementType);else if(i.isTupleTypeNode(e))n.tupleMembers=e.elements.map(P);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(P);else if(i.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(P);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=P(e.type);else if(i.isLiteralTypeNode(e))n.literalValue=a(e.literal);else{if(Object.keys(Q).includes(String(e.kind)))return Q[e.kind]||O;if(i.isNamedTupleMember(e))Object.assign(n,g(e));else return g(e,!0)}}}}return n}var z=(e,n,s)=>[...(e==null?void 0:e.filter(t=>!(n!=null&&n.some(c=>(s||(()=>c===t))(c,t)))))||[],...n||[]];function q(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=q(e.type,n)}function fe(e,n){var s;(s=e.args)==null||s.forEach(t=>t.type=q(t.type,n)),e.returnType=q(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 G(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(G):t.constructor===Object&&G(t)})}function he(e){for(let n of e.values())G(n)}function xe(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 X(e,n=v.cwd()){return Y(e).replace(Y(n)+"/","")}function Y(e){let n=h.sep;return e.split(n).join("/")}function ce(e){return e instanceof Array?e:[e]}function b(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:x}=W(n,s),N=[],E=[];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(J.isClassDeclaration(y)&&y.name!==void 0){let D=y.name.text,f=r.get(D);if(!D||!f||t&&!u(f,"EnableReflect"))return;E.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}),x.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=J.createSourceFile(D,y,J.ScriptTarget.Latest,!1);return N.length=0,E.length=0,w(f),`${N.join(";")};${y};${E.join(";")}`}catch(f){return console.error(`[reflect-parser-plugin] Error processing ${D}:`,f),null}}}}}var Ee=process.cwd().replace(/\\/g,"/")+"/";function Fe(e){let n=le(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(s,t)=>(t=t.replace(Ee,""),t===e.entry?`${n.outputAllMetas()}
|
|
2
|
-
${
|
|
1
|
+
var q=(e,n,t)=>new Promise((s,l)=>{var r=m=>{try{a(t.next(m))}catch(b){l(b)}},D=m=>{try{a(t.throw(m))}catch(b){l(b)}},a=m=>m.done?s(m.value):Promise.resolve(m.value).then(r,D);a((t=t.apply(e,n)).next())});import H from"typescript";function R(e){return e||{}}var z=["string","number","boolean","bigint","symbol"];import i from"typescript";import*as M from"fs";import*as L from"process";import*as h from"path";import{pathToFileURL as de}from"url";var W={OUTPUT_LOG:!1},C=new Map,A=new Map,$=new Map,v=new Map,J=new Map,j=new Set,Z={[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",ie=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],se=["Mappable","EnableReflect"];[...z,...ie,...se].forEach(ce);se.forEach(e=>A.set(e,{name:e}));var _,ee=!1,I=Reflect;function Oe(e){return q(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:s,distFolder:l}=e;if(s=h.resolve(s||L.cwd()),l=h.resolve(l||L.cwd()),I.__meta!==void 0)return;let r={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};n=ue(n);let D=n.map(a=>h.join(s,a));Q(D,t);for(let[a,m]of C)r.classes[a]=m;for(let[a,m]of A)r.interfaces[a]=m;for(let[a,m]of v)r.typeAliases[a]=m;for(let[a,m]of $)r.enums[a]=m;for(let[a,m]of J)r.constTypes[a]=m;I.__meta=btoa(JSON.stringify(r)),yield Promise.all(n.map(a=>re(a,l)))})}function re(e,n){return q(this,null,function*(){let t=h.resolve(n,e);if(!M.existsSync(t))return;if(M.statSync(t).isDirectory()){let a=M.readdirSync(t);yield Promise.all(a.map(m=>re(h.join(e,m),n)));return}if(!e.endsWith(".js"))return;let l=h.join(n,e),D=yield import(de(l).href);I.__classDef={},Object.values(D).forEach(a=>{typeof a=="function"&&I.__classDef&&(I.__classDef[a.name]=a)})})}function Q(e,n){if(e||(e=[L.cwd()]),e=ue(e),!ee){let t=ae(e,n),s=i.createProgram(t,{});_=s.getTypeChecker(),t=t.map(r=>ne(r)),s.getSourceFiles().filter(r=>t.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 j.keys())!C.has(r)&&!A.has(r)&&!$.has(r)&&!v.has(r)&&!z.includes(r)&&!ie.includes(r)&&(S(`remove unknown typeName: ${r}`),j.delete(r));Array.from(C.values()).forEach(be),Array.from(A.values()).forEach(xe),[C,A,v].forEach(Pe),ee=!0}return{classDefinitions:C,interfaceDefinitions:A,enumDefinitions:$,typeAliasDefinitions:v,constTypeDefinitions:J}}function ae(e,n){let t=[];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()){t.push(s);return}M.readdirSync(s).forEach(D=>t.push(...ae([h.join(s,D)],n)))}),t}function oe(e,n){i.isClassDeclaration(e)?ye(e,n):i.isInterfaceDeclaration(e)?ge(e,n):i.isEnumDeclaration(e)?De(e,n):i.isTypeAliasDeclaration(e)?we(e,n):i.isConstTypeReference(e)?Te(e):e.forEachChild(t=>oe(t,n))}function ye(e,n){var b,N,x,K,P,u,w,F,d,g,p,T,U,X,Y;let t=c(e.name);if(!t)return;let s=c((x=(N=(b=e.heritageClauses)==null?void 0:b.find(o=>o.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:N.types)==null?void 0:x[0].expression),l=(P=(K=e.heritageClauses)==null?void 0:K.find(o=>o.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:P.types.map(o=>c(o.expression)),r=[],D=[],a;for(let o of e.members)if(i.isPropertyDeclaration(o))r.push({name:c(o.name),isOptional:o.questionToken!==void 0,type:y(o),isPrivate:(u=o.modifiers)==null?void 0:u.some(f=>f.kind===i.SyntaxKind.PrivateKeyword),isStatic:(w=o.modifiers)==null?void 0:w.some(f=>f.kind===i.SyntaxKind.StaticKeyword),isReadonly:(F=o.modifiers)==null?void 0:F.some(f=>f.kind===i.SyntaxKind.ReadonlyKeyword)});else if(i.isConstructorDeclaration(o))a={name:"constructor",isPrivate:(d=o.modifiers)==null?void 0:d.some(f=>f.kind===i.SyntaxKind.PrivateKeyword),args:o.parameters.map(f=>({name:c(f.name),type:y(f),isOptional:f.questionToken!==void 0})),isConstructor:!0};else if(i.isMethodDeclaration(o))D.push({name:c(o.name),returnType:y(o),isPrivate:(g=o.modifiers)==null?void 0:g.some(f=>f.kind===i.SyntaxKind.PrivateKeyword),isStatic:(p=o.modifiers)==null?void 0:p.some(f=>f.kind===i.SyntaxKind.StaticKeyword),isAsync:(T=o.modifiers)==null?void 0:T.some(f=>f.kind===i.SyntaxKind.AsyncKeyword),args:o.parameters.map(f=>({name:c(f.name),type:y(f),isOptional:f.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(o)){let f=r.find(k=>k.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:y(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.getter={isPrivate:((U=o.modifiers)==null?void 0:U.some(k=>k.kind===i.SyntaxKind.PrivateKeyword))||!1},f.isPrivate=f.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(o)){let f=r.find(k=>k.name===c(o.name));f||(f={name:c(o.name),isOptional:o.questionToken===void 0,type:y(o)},r.push(f)),f.accessor=f.accessor||{},f.accessor.setter={isPrivate:((X=o.modifiers)==null?void 0:X.some(k=>k.kind===i.SyntaxKind.PrivateKeyword))||!1}}let m={name:t,constructorMethod:a,superClassName:s,implementations:l,properties:r,methods:D,genericsParams:(Y=e.typeParameters)==null?void 0:Y.map(o=>c(o.name)),fromLib:n};S(`Define class: ${c(e.name)}`),C.set(t,m)}function ge(e,n){var m,b,N,x,K,P;let t=c(e.name);if(!t)return;let s=((b=(m=e.heritageClauses)==null?void 0:m.find(u=>u.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:b.types.map(u=>c(u.expression)))||[],l=[],r=[],D;for(let u of e.members)i.isPropertySignature(u)?l.push({name:c(u.name),isOptional:u.questionToken!==void 0,type:y(u),isPrivate:((N=u.modifiers)==null?void 0:N.some(w=>w.kind===i.SyntaxKind.PrivateKeyword))||!1,isReadonly:((x=u.modifiers)==null?void 0:x.some(w=>w.kind===i.SyntaxKind.ReadonlyKeyword))||!1}):i.isMethodSignature(u)?r.push({name:u.name.text,returnType:y(u),isPrivate:((K=u.modifiers)==null?void 0:K.some(w=>w.kind===i.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(w=>({name:c(w.name),type:y(w),isOptional:w.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(u)&&(D=y(u));let a=A.get(t);a?(a.implementations=G(a.implementations||[],s),a.methods=G(a.methods||[],r,(u,w)=>u.name===w.name),a.properties=G(a.properties||[],l,(u,w)=>u.name===w.name),a.indexElementType=D,S(`Merge interface ${c(e.name)}`)):(a={name:t,implementations:s,methods:r,properties:l,indexElementType:D,genericsParams:(P=e.typeParameters)==null?void 0:P.map(u=>c(u.name)),fromLib:n},A.set(t,a),S(`Define interface ${c(e.name)}`))}function De(e,n){let t=c(e.name);t&&($.set(t,{name:t,members:e.members.map(s=>({name:c(s.name),initializer:c(s.initializer)})),fromLib:n}),S(`Define enum: ${c(e.name)}`))}function we(e,n){var r;S(`Define typeAlias: ${c(e.name)}`);let t=y(e),s=(r=e.typeParameters)==null?void 0:r.map(D=>c(D.name)),l=c(e.name);v.set(l,{name:l,type:t,genericParams:s,fromLib:n})}function Te(e){let n=e.parent.parent;i.isVariableDeclaration(n)&&n.initializer&&i.isAsExpression(n.initializer)&&J.set(c(n.name),fe(n.initializer.expression))}function fe(e){return i.isArrayLiteralExpression(e)?Re(e):i.isObjectLiteralExpression(e)?he(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 Re(e){let n=[];return e.elements.forEach(t=>{if(i.isStringLiteral(t))return n.push(c(t))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function he(e){let n=[];return e.properties.map(t=>{i.isPropertyAssignment(t)?n.push({name:c(t.name),type:fe(t.initializer)}):S(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function ce(e){j.add(e)}function y(e,n=!1){if(e.type&&!n)return E(e.type);if(!_)return console.error("TypeChecker not initialized!"),O;let t=_.getTypeAtLocation(e),s=_.typeToTypeNode(t,void 0,void 0);return s?E("type"in s?s.type:s):O}function E(e){let n={};if(e===void 0)return O;if(i.isTypeReferenceNode(e))if(ce(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(t=>E(t))];else return c(e.typeName);else if(i.isFunctionTypeNode(e))n.isFunction=!0;else if(i.isConstructorTypeNode(e))n.isConstructor=!0;else{if(i.isTypeQueryNode(e))return y(e);if(i.isTypeLiteralNode(e)){let t=[];e.members.forEach(s=>{i.isPropertySignature(s)?t.push({name:c(s.name),isOptional:s.questionToken!==void 0,type:y(s)}):i.isIndexSignatureDeclaration(s)?n.indexElementType=y(s):t.push({name:c(s.name)||"",isOptional:s.questionToken!==void 0,type:E()})}),n.typeLiteralMembers=t}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,y(e)),n.isOptionalInTuple=!0;else{if(i.isRestTypeNode(e))return y(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 y(e);if(i.isInferTypeNode(e))return y(e);if(i.isParenthesizedTypeNode(e))return y(e);if(i.isThisTypeNode(e))return y(e);if(i.isTypeOperatorNode(e)&&e.operator===i.SyntaxKind.KeyOfKeyword)return y(e,!0);if(i.isIndexedAccessTypeNode(e))return y(e,!0);if(i.isMappedTypeNode(e))n.indexElementType=E(e.type);else if(i.isLiteralTypeNode(e))n.literalValue=c(e.literal);else{if(Object.keys(Z).includes(String(e.kind)))return Z[e.kind]||O;if(i.isNamedTupleMember(e))Object.assign(n,y(e));else return y(e,!0)}}}}return n}var G=(e,n,t)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(l=>(t||(()=>l===s))(l,s)))))||[],...n||[]];function B(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 be(e){var n,t;(n=e.methods)==null||n.forEach(s=>pe(s,e.genericsParams)),(t=e.properties)==null||t.forEach(s=>le(s,e.genericsParams))}function xe(e){var n,t;(n=e.methods)==null||n.forEach(s=>pe(s,e.genericsParams)),(t=e.properties)==null||t.forEach(s=>le(s,e.genericsParams))}function le(e,n){e.type=B(e.type,n)}function pe(e,n){var t;(t=e.args)==null||t.forEach(s=>s.type=B(s.type,n)),e.returnType=B(e.returnType,n)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{let n=e;return i.isQualifiedName(n)?c(n.right):n.getText()}catch(n){return e.text}}function V(e){if(e==null||!(e instanceof Object))return;let n=e;Object.entries(n).forEach(t=>{let[s,l]=t;l===!1||l===void 0||l===null?delete n[s]:l instanceof Array?l.length===0?delete n[s]:l.forEach(V):V(l)})}function Pe(e){for(let n of e.values())V(n)}function Ee(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 ne(e,n=L.cwd()){return te(e).replace(te(n)+"/","")}function te(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:t,forEnabledClassOnly:s,outputLog:l}=e;if(l&&(W.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");l&&console.log(`sourcePaths: ${n}, exclude: ${t}, forEnabledClassOnly: ${s}`);let{classDefinitions:r,interfaceDefinitions:D,enumDefinitions:a,typeAliasDefinitions:m,constTypeDefinitions:b}=Q(n,t),N=[],x=[];function K(d){let g=[];return(()=>{let p=r.get(d);if(p){p.superClassName&&g.push(p.superClassName),g.push(...p.implementations||[]);return}let T=D.get(d);if(T){g.push(...T.implementations||[]);return}m.get(d)&&g.push(d)})(),g.flatMap(p=>[p,...K(p)])||[]}function P(d,g){return K(d.name).includes(g)}function u(d){if(H.isClassDeclaration(d)&&d.name!==void 0){let g=d.name.text,p=r.get(g);if(!g||!p||s&&!P(p,"EnableReflect"))return;x.push(`Reflect.registerClass?Reflect.registerClass({${g}}):(Reflect.__classDef=Object.assign(Reflect.__classDef||{},{${g}}))`);return}d.forEachChild(u)}function w(){let d={classes:R(),interfaces:R(),typeAliases:R(),constTypes:R(),enums:R()};return r.forEach((p,T)=>{s&&!P(p,"EnableReflect")||(d.classes[T]=p)}),D.forEach((p,T)=>{s&&!P(p,"EnableReflect")||(d.interfaces[T]=p)}),a.forEach((p,T)=>{d.enums[T]=p}),m.forEach((p,T)=>{d.typeAliases[T]=p}),b.forEach((p,T)=>{d.constTypes[T]=p}),`;Reflect.__meta='${btoa(JSON.stringify(d))}'`}return{outputAllMetas:w,transform:(d,g)=>{if(g.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(p=>!g.startsWith(p))){l&&console.log(`transform id: ${g}`);try{let p=H.createSourceFile(g,d,H.ScriptTarget.Latest,!1);return N.length=0,x.length=0,u(p),`${N.join(";")};${d};${x.join(";")}`}catch(p){console.error(`[reflect-parser-plugin] Error processing ${g}:`,p);return}}}}}var Se=process.cwd().replace(/\\/g,"/")+"/";function Fe(e){let n=me(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,s)=>(s=s.replace(Se,""),s===e.entry?`${n.outputAllMetas()}
|
|
2
|
+
${t}`:n.transform(t,s))}}export{W as DEBUG_CONFIG,Q as parseSource,me as reflectLoader,Fe as reflectParserPlugin,Oe as setupReflectTypes,re as updateReflectModules};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ref-kit",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.8",
|
|
4
4
|
"description": "Type reflection and validation library for TypeScript",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"rimraf": "^6.0.1",
|
|
56
56
|
"typescript": "^5.9.2",
|
|
57
57
|
"typescript-eslint": "^8.44.1",
|
|
58
|
-
"vite": "
|
|
58
|
+
"vite": "7.1.11"
|
|
59
59
|
},
|
|
60
60
|
"private": false
|
|
61
61
|
}
|
package/types/index.d.ts
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,9 +2,11 @@ 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;
|
|
@@ -13,6 +15,7 @@ export interface RawInterfaceDefinition {
|
|
|
13
15
|
properties?: RawPropertyDefinition[];
|
|
14
16
|
indexElementType?: RawTypeDef;
|
|
15
17
|
genericsParams?: string[];
|
|
18
|
+
fromLib?: boolean;
|
|
16
19
|
}
|
|
17
20
|
export interface RawEnumDefinition {
|
|
18
21
|
name: string;
|
|
@@ -20,11 +23,13 @@ export interface RawEnumDefinition {
|
|
|
20
23
|
name: string;
|
|
21
24
|
initializer: string | undefined;
|
|
22
25
|
}[];
|
|
26
|
+
fromLib?: boolean;
|
|
23
27
|
}
|
|
24
28
|
export interface RawTypeAliasDefinition {
|
|
25
29
|
name: string;
|
|
26
30
|
genericParams?: string[];
|
|
27
31
|
type: RawTypeDef;
|
|
32
|
+
fromLib?: boolean;
|
|
28
33
|
}
|
|
29
34
|
export interface RawMethodDefinition {
|
|
30
35
|
name: string;
|
|
@@ -32,6 +37,7 @@ export interface RawMethodDefinition {
|
|
|
32
37
|
isStatic?: boolean;
|
|
33
38
|
isAsync?: boolean;
|
|
34
39
|
returnType?: RawTypeDef;
|
|
40
|
+
isConstructor?: boolean;
|
|
35
41
|
args?: {
|
|
36
42
|
name: string;
|
|
37
43
|
type?: RawTypeDef;
|
|
@@ -68,14 +74,14 @@ export interface RawTypeDefinition {
|
|
|
68
74
|
isOptionalInTuple?: boolean;
|
|
69
75
|
isConstructor?: boolean;
|
|
70
76
|
}
|
|
71
|
-
export type
|
|
77
|
+
export type Constructor<T = unknown, A extends unknown[] = unknown[]> = new (...args: A) => T;
|
|
72
78
|
export type Dictionary<T> = {
|
|
73
79
|
[key: string]: T;
|
|
74
80
|
};
|
|
75
81
|
export interface ReflectObject {
|
|
76
|
-
__classDef
|
|
77
|
-
__meta
|
|
78
|
-
registerClass?: (classDef: Dictionary<
|
|
82
|
+
__classDef?: Dictionary<Constructor>;
|
|
83
|
+
__meta?: string;
|
|
84
|
+
registerClass?: (classDef: Dictionary<Constructor>) => void;
|
|
79
85
|
}
|
|
80
86
|
export interface RawReflectMeta {
|
|
81
87
|
classes: Dictionary<RawClassDefinition>;
|
|
@@ -83,6 +89,8 @@ export interface RawReflectMeta {
|
|
|
83
89
|
typeAliases: Dictionary<RawTypeAliasDefinition>;
|
|
84
90
|
constTypes: Dictionary<RawTypeDef>;
|
|
85
91
|
enums: Dictionary<RawEnumDefinition>;
|
|
86
|
-
classDef?: Dictionary<
|
|
92
|
+
classDef?: Dictionary<Constructor>;
|
|
87
93
|
}
|
|
88
94
|
export declare function Dictionary<T = unknown>(obj?: object): Dictionary<T>;
|
|
95
|
+
export declare const primitiveTypes: string[];
|
|
96
|
+
export declare const primitiveMap: Dictionary<Constructor>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Constructor, Dictionary, RawClassDefinition } from '../raw';
|
|
2
2
|
import type { GenericMethod, MethodDefinition } from './MethodDefinition';
|
|
3
|
-
import type {
|
|
3
|
+
import type { GenericProperty, PropertyDefinition } from './PropertyDefinition';
|
|
4
4
|
import { type Implementation } from './InterfaceDefinition';
|
|
5
5
|
import { type TypeDefinition } from './TypeDefinition';
|
|
6
6
|
export declare class ClassDefinition {
|
|
@@ -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,7 +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
|
}
|
|
41
|
+
export declare function getClassByName(className: string): Constructor | undefined;
|
|
42
|
+
export declare function getClassDefinition(arg: Constructor | object | string): ClassDefinition | undefined;
|
|
@@ -3,7 +3,13 @@ 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[];
|
|
9
10
|
}
|
|
11
|
+
export declare function getEnumDefinition(name: string): EnumDefinition | undefined;
|
|
12
|
+
export declare function getEnumNames(enumName: string): string[];
|
|
13
|
+
export declare function getEnumValues(args: {
|
|
14
|
+
[enumName: string]: Record<string, string | number>;
|
|
15
|
+
}): (string | number)[];
|
|
@@ -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[];
|
|
@@ -25,3 +26,4 @@ export declare class GenericInterface extends InterfaceDefinition {
|
|
|
25
26
|
static create(proto: InterfaceDefinition, genericArgs: TypeDefinition[]): GenericInterface;
|
|
26
27
|
buildGenericContext(): void;
|
|
27
28
|
}
|
|
29
|
+
export declare function getInterfaceDefinition(name: string): InterfaceDefinition | undefined;
|
|
@@ -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,9 +16,9 @@ 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
|
}
|
|
23
23
|
export declare function fillProperty(rawProperty: RawPropertyDefinition): PropertyDefinition;
|
|
24
24
|
export declare class GenericProperty extends PropertyDefinition {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TypeDefinition } from './TypeDefinition';
|
|
2
|
+
export interface TypeAliasDefinition {
|
|
3
|
+
name: string;
|
|
4
|
+
genericParams?: string[];
|
|
5
|
+
type: TypeDefinition;
|
|
6
|
+
fromLib: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function getTypeAliasDefinition(name: string, genericArgs?: TypeDefinition[]): TypeAliasDefinition | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Dictionary, RawTypeDefinition } from '../raw';
|
|
2
|
-
import type
|
|
2
|
+
import { type ClassDefinition } from './ClassDefinition';
|
|
3
3
|
import type { PropertyDefinition } from './PropertyDefinition';
|
|
4
4
|
export declare const anyType: {
|
|
5
5
|
name: string;
|
|
@@ -21,8 +21,8 @@ export interface TypeDefinition {
|
|
|
21
21
|
generics?: TypeDefinition[];
|
|
22
22
|
indexElementType?: TypeDefinition;
|
|
23
23
|
classDefinition?: ClassDefinition;
|
|
24
|
+
fromLib?: boolean;
|
|
24
25
|
}
|
|
25
|
-
export declare const primitiveTypes: string[];
|
|
26
26
|
export declare function isIgnoredType(type: TypeDefinition): boolean;
|
|
27
27
|
export declare function isPrimitiveType(type: TypeDefinition): type is {
|
|
28
28
|
name: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './ValidateResult';
|
|
2
1
|
export { TypeDefinition } from './TypeDefinition';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
2
|
+
export { getClassDefinition, getClassByName, ClassDefinition } from './ClassDefinition';
|
|
3
|
+
export { getInterfaceDefinition, InterfaceDefinition } from './InterfaceDefinition';
|
|
4
|
+
export { getTypeAliasDefinition, TypeAliasDefinition } from './TypeAliasDefinition';
|
|
5
|
+
export { getEnumDefinition, getEnumNames, getEnumValues, EnumDefinition } from './EnumDefinition';
|
|
6
|
+
export * from './validates';
|
|
@@ -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,6 +1,6 @@
|
|
|
1
1
|
import type { TypeDefinition } from './TypeDefinition';
|
|
2
2
|
import type { RawTypeDef } from '../raw';
|
|
3
|
-
import type { TypeAliasDefinition } from './
|
|
3
|
+
import type { TypeAliasDefinition } from './TypeAliasDefinition';
|
|
4
4
|
declare const SpecialTypes: readonly ["Partial", "Required", "Readonly", "Pick", "Omit", "Extract", "Exclude"];
|
|
5
5
|
type SpecialTypeName = (typeof SpecialTypes)[number];
|
|
6
6
|
export declare function isSpecialType(typeDef: RawTypeDef): typeDef is SpecialTypeName;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type TypeDefinition } from '
|
|
2
|
-
export type Type = string |
|
|
1
|
+
import { type TypeDefinition } from '../TypeDefinition';
|
|
2
|
+
export type Type = string | {
|
|
3
3
|
array: Type;
|
|
4
4
|
} | {
|
|
5
5
|
union: Type[];
|
|
@@ -7,8 +7,13 @@ export type Type = string | string[] | {
|
|
|
7
7
|
intersection: Type[];
|
|
8
8
|
} | {
|
|
9
9
|
tuple: Type[];
|
|
10
|
+
} | {
|
|
11
|
+
name: string;
|
|
12
|
+
generic: Type[];
|
|
10
13
|
};
|
|
11
14
|
export declare function getTypeDef(type: Type | TypeDefinition): TypeDefinition;
|
|
12
15
|
export declare function assertType<T>(data: unknown, type: Type, depth?: number): T;
|
|
13
16
|
export declare function isNullable(type: Type | TypeDefinition): boolean;
|
|
14
17
|
export declare function isType(value: unknown, type: Type | TypeDefinition, depth?: number): boolean;
|
|
18
|
+
export declare class TypeParseError extends Error {
|
|
19
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare class ValidateResult {
|
|
2
2
|
readonly success: boolean;
|
|
3
|
-
readonly errorCode?: number;
|
|
4
|
-
readonly errorDesc?: string;
|
|
5
|
-
readonly cause?: ValidateResult;
|
|
3
|
+
readonly errorCode?: number | undefined;
|
|
4
|
+
readonly errorDesc?: string | undefined;
|
|
5
|
+
readonly cause?: ValidateResult | undefined;
|
|
6
6
|
private constructor();
|
|
7
7
|
static success: ValidateResult;
|
|
8
8
|
static failure(errorCode: number, errorDesc: string, cause?: ValidateResult): ValidateResult;
|
|
@@ -11,8 +11,17 @@ export declare class ValidateResult {
|
|
|
11
11
|
}
|
|
12
12
|
interface FailureResult extends ValidateResult {
|
|
13
13
|
cause?: FailureResult;
|
|
14
|
+
errorStackFlow: string;
|
|
15
|
+
errorMessage: string;
|
|
14
16
|
}
|
|
15
17
|
export declare const successResult: ValidateResult;
|
|
16
18
|
export declare const failedResult: typeof ValidateResult.failure;
|
|
17
19
|
export declare function getErrorTraceMessages(failureResult: FailureResult): string;
|
|
20
|
+
export declare class ValidationError extends Error {
|
|
21
|
+
failureResult?: FailureResult;
|
|
22
|
+
constructor(message: string, failureResult?: FailureResult);
|
|
23
|
+
}
|
|
24
|
+
export declare const ReflectConfig: {
|
|
25
|
+
validationErrorHandler: (e: ValidationError) => void;
|
|
26
|
+
};
|
|
18
27
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Dictionary } from '
|
|
1
|
+
import type { Dictionary } from '../../raw';
|
|
2
2
|
import type { ValidateResult } from './ValidateResult';
|
|
3
3
|
import { type Type } from './Type';
|
|
4
4
|
export declare function validateInstance<T extends object>(instance: T, type?: Type, depth?: number): ValidateResult;
|
|
@@ -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
|
-
import { type TypeDefinition } from '
|
|
2
|
-
import type { ConstructorFunction } from '../raw';
|
|
1
|
+
import { type TypeDefinition } from '../TypeDefinition';
|
|
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;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type EnableReflect } from '../reflect-types';
|
|
2
|
-
import type { Class, JsonValue } from './types';
|
|
3
|
-
export interface Mappable extends EnableReflect {
|
|
4
|
-
mapping(map: Mapping<Mappable>): void;
|
|
5
|
-
}
|
|
6
|
-
export type Mapping<T extends Mappable> = {
|
|
7
|
-
[propName in keyof T]-?: (fieldName?: string | symbol, transform?: {
|
|
8
|
-
fromJSON?: (jsonValue: JsonValue) => Mappable;
|
|
9
|
-
toJSON?: (obj: Mappable) => JsonValue;
|
|
10
|
-
}) => void;
|
|
11
|
-
};
|
|
12
|
-
export declare function registerMappable<T extends Mappable>(mappableClass: Class<T>): void;
|
|
13
|
-
export declare function mapAllProperties<T extends Mappable>(target: T, map: Mapping<T>): void;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { ReflectPropertyKey } from './reflect-extension';
|
|
2
|
-
export declare function defineDecoratedProperty(metaKey: symbol): PropertyDecorator;
|
|
3
|
-
export declare function callDecoratedMethod<Self extends object, R>(self: Self, metaKey: symbol, ...args: unknown[]): R | undefined;
|
|
4
|
-
export declare function hasDecoratedMethod<Self extends object>(self: Self, metaKey: symbol): boolean;
|
|
5
|
-
export declare function getDecoratedProperty(target: object, metaKey: symbol): ReflectPropertyKey | undefined;
|
|
6
|
-
export declare function getDecoratedPropertyValue<V>(target: object, metaKey: symbol): V | undefined;
|
|
7
|
-
export declare const PropertyWrapper: IPropertyWrapper;
|
|
8
|
-
type IPropertyWrapper = {
|
|
9
|
-
getField: <T>(owner: object, property: ReflectPropertyKey, fieldSymbol: symbol) => T;
|
|
10
|
-
setField: <T>(owner: object, property: ReflectPropertyKey, newValue: T, fieldSymbol: symbol) => void;
|
|
11
|
-
} & (<T>({ getter, setter, fieldSymbol }: {
|
|
12
|
-
getter?: (self: object, property: ReflectPropertyKey) => T;
|
|
13
|
-
setter?: (self: object, newValue: T, property: ReflectPropertyKey) => void;
|
|
14
|
-
fieldSymbol: symbol;
|
|
15
|
-
}) => PropertyDecorator);
|
|
16
|
-
export declare function Lazy<T>(creator: (self: object, property: ReflectPropertyKey) => T): PropertyDecorator;
|
|
17
|
-
export {};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
import type { Class, ClassOrInstance, ConstructorFunction, JsonObject, JsonValue } from './types';
|
|
3
|
-
type FromJSON<T> = (jsonValue: JsonValue) => T;
|
|
4
|
-
type ToJSON<T> = (obj: T) => JsonValue;
|
|
5
|
-
type SerializedOptions<T = unknown> = {
|
|
6
|
-
name?: string;
|
|
7
|
-
class?: Class<T>;
|
|
8
|
-
fromJSON?: FromJSON<T>;
|
|
9
|
-
toJSON?: ToJSON<T>;
|
|
10
|
-
};
|
|
11
|
-
declare class SerializeSettings {
|
|
12
|
-
settingsByName: {
|
|
13
|
-
[propName: string]: SerializedPropertySetting;
|
|
14
|
-
};
|
|
15
|
-
settingsBySerializedName: {
|
|
16
|
-
[serializedName: string]: SerializedPropertySetting;
|
|
17
|
-
};
|
|
18
|
-
ignoredProperties: (string | symbol)[];
|
|
19
|
-
defaultIgnored: boolean;
|
|
20
|
-
add<T>(prop: SerializedPropertySetting<T>): void;
|
|
21
|
-
isPropertyIgnored(propName: string): boolean;
|
|
22
|
-
}
|
|
23
|
-
declare class SerializedPropertySetting<T = unknown> {
|
|
24
|
-
target: object;
|
|
25
|
-
propName: string;
|
|
26
|
-
options: SerializedOptions<T>;
|
|
27
|
-
serializedName: string;
|
|
28
|
-
class?: Class<T>;
|
|
29
|
-
isArray: boolean;
|
|
30
|
-
fromJSON: FromJSON<T>;
|
|
31
|
-
toJSON: ToJSON<T>;
|
|
32
|
-
constructor(target: object, propName: string, options: SerializedOptions<T>);
|
|
33
|
-
createBuilder(): FromJSON<T>;
|
|
34
|
-
}
|
|
35
|
-
export declare function setDefaultIgnored(clazz: ConstructorFunction, defaultIgnored: boolean): void;
|
|
36
|
-
export declare function registerSerializedProperty<T>(target: object, propName: string, options: SerializedOptions<T>): void;
|
|
37
|
-
export declare const SerializedClass: PropertyDecorator;
|
|
38
|
-
export declare function Serialized<T extends object>(options?: SerializedOptions<T>): PropertyDecorator;
|
|
39
|
-
export declare function SerializedName(serializedName: string): PropertyDecorator;
|
|
40
|
-
export declare const IgnoreSerialization: PropertyDecorator;
|
|
41
|
-
/**
|
|
42
|
-
* serialize an object to json string
|
|
43
|
-
*/
|
|
44
|
-
export declare function serialize<T>(value: T): string;
|
|
45
|
-
export declare function serializeTo<T>(value: T): JsonValue;
|
|
46
|
-
/**
|
|
47
|
-
* convert an object to data object
|
|
48
|
-
*/
|
|
49
|
-
export declare function serializeToData<T extends object>(object: T): JsonObject | JsonObject[];
|
|
50
|
-
export declare function deserialize<T>(json: JsonValue, constructorOrTarget?: ClassOrInstance<T>): T;
|
|
51
|
-
export declare function deserializeArray<T>(json: string | JsonValue[], clazz?: Class<T>): T[];
|
|
52
|
-
export declare function deserializeFrom<T extends object>(data: JsonObject, target: T): void;
|
|
53
|
-
export declare function getSerializeSettings(clazz: ConstructorFunction): SerializeSettings | undefined;
|
|
54
|
-
export interface JsonValueTransform<T> {
|
|
55
|
-
fromJson: FromJSON<T>;
|
|
56
|
-
toJson: ToJSON<T>;
|
|
57
|
-
}
|
|
58
|
-
export declare const itSelf: <T, R>(some: T) => R;
|
|
59
|
-
export declare const done: () => void;
|
|
60
|
-
export declare const AfterSerialized: PropertyDecorator;
|
|
61
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
import type { ConstructorFunction } from './types';
|
|
3
|
-
export type ReflectPropertyKey = string | symbol;
|
|
4
|
-
export type ReflectType = StringConstructor | NumberConstructor | BooleanConstructor | ObjectConstructor | ArrayConstructor | FunctionConstructor | ConstructorFunction;
|
|
5
|
-
declare global {
|
|
6
|
-
namespace Reflect {
|
|
7
|
-
function getDesignType<T extends object>(target: T, property: keyof T | ReflectPropertyKey): ReflectType | undefined;
|
|
8
|
-
function getReturnType<T extends object>(target: T, property: keyof T | ReflectPropertyKey): ReflectType | undefined;
|
|
9
|
-
function getParamTypes<T extends object>(target: T, property: keyof T | ReflectPropertyKey): ReflectType[] | undefined;
|
|
10
|
-
function addMetadataList<T extends object, V>(key: symbol, value: V, target: T): void;
|
|
11
|
-
function addMetadataList<T extends object, V>(key: symbol, value: V, target: T, property: ReflectPropertyKey): void;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export type ConstructorFunction = new (...args: unknown[]) => unknown;
|
|
2
|
-
export type Class<T> = new (...args: unknown[]) => T;
|
|
3
|
-
export type ClassOrInstance<T> = T | Class<T>;
|
|
4
|
-
export type JsonValue = string | number | boolean | null | JsonObject | JsonObject[];
|
|
5
|
-
export type JsonObject = {
|
|
6
|
-
[propName: string]: JsonValue;
|
|
7
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Class } from './types';
|
|
2
|
-
import type { Dictionary } from '../raw';
|
|
3
|
-
export declare function asBoolean(value: unknown): boolean;
|
|
4
|
-
export declare function asString(v: unknown): string;
|
|
5
|
-
export declare function asNumber(v: unknown): number;
|
|
6
|
-
export declare function setAnyValue<T>(target: object, field: string | number | symbol, value: T): void;
|
|
7
|
-
export declare function getAnyValue<T>(target: object, field: string | number | symbol): T | undefined;
|
|
8
|
-
export declare function getOrSetValue<T>(target: object, field: string | number | symbol, defaultWith: () => T): T;
|
|
9
|
-
export declare function isDictionary(value: unknown): value is Dictionary<unknown>;
|
|
10
|
-
export declare function createInstance<S, T extends S>(constructor: Class<T>, proto?: S): T;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type ConstructorFunction, type RawTypeDef } from '../raw';
|
|
2
|
-
import { type TypeDefinition } from './TypeDefinition';
|
|
3
|
-
import { ClassDefinition } from './ClassDefinition';
|
|
4
|
-
import { InterfaceDefinition } from './InterfaceDefinition';
|
|
5
|
-
import { EnumDefinition } from './EnumDefinition';
|
|
6
|
-
export declare const ReflectClass: ClassDecorator;
|
|
7
|
-
export declare function getClassByName(className: string): ConstructorFunction | undefined;
|
|
8
|
-
export declare function getClassDefinition(arg: ConstructorFunction | object | string): ClassDefinition | undefined;
|
|
9
|
-
export declare function getInterfaceDefinition(name: string): InterfaceDefinition | undefined;
|
|
10
|
-
export declare function getEnumDefinition(name: string): EnumDefinition | undefined;
|
|
11
|
-
export declare function getEnumNames(enumName: string): string[];
|
|
12
|
-
export declare function getEnumValues(args: {
|
|
13
|
-
[enumName: string]: Record<string, string | number>;
|
|
14
|
-
}): (string | number)[];
|
|
15
|
-
export interface TypeAliasDefinition {
|
|
16
|
-
name: string;
|
|
17
|
-
genericParams?: string[];
|
|
18
|
-
type: TypeDefinition;
|
|
19
|
-
rawType: RawTypeDef;
|
|
20
|
-
}
|
|
21
|
-
export declare function getTypeAliasDefinition(name: string, genericArgs?: TypeDefinition[]): TypeAliasDefinition | undefined;
|
|
22
|
-
export type EnableReflect = object;
|