ts-ref-kit 1.0.13 → 1.0.15
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/parser/index.cjs +3 -0
- package/dist/esm/parser/index.js +3 -3
- package/dist/types/index.d.ts +455 -0
- package/{types/parser/reflect-parser.d.ts → dist/types/parser/index.d.ts} +110 -77
- package/dist/types/tsdoc-metadata.json +11 -0
- package/package.json +15 -8
- package/dist/cjs/parser/index.js +0 -3
- package/types/index.d.ts +0 -2
- package/types/parser/index.d.ts +0 -3
- package/types/parser/path-match.d.ts +0 -7
- package/types/parser/reflect-loader.d.ts +0 -10
- package/types/parser/reflect-parser-plugin.d.ts +0 -7
- package/types/reflect-json/Mappable.d.ts +0 -13
- package/types/reflect-json/decorate.d.ts +0 -18
- package/types/reflect-json/index.d.ts +0 -6
- package/types/reflect-json/json-translation.d.ts +0 -38
- package/types/reflect-json/reflect-extension.d.ts +0 -13
- package/types/reflect-json/types.d.ts +0 -15
- package/types/reflect-json/utils.d.ts +0 -9
- package/types/reflect-types/ClassDefinition.d.ts +0 -28
- package/types/reflect-types/EnumDefinition.d.ts +0 -8
- package/types/reflect-types/InterfaceDefinition.d.ts +0 -18
- package/types/reflect-types/MethodDefinition.d.ts +0 -15
- package/types/reflect-types/PropertyDefinition.d.ts +0 -18
- package/types/reflect-types/assert-type.d.ts +0 -14
- package/types/reflect-types/function-validate.d.ts +0 -10
- package/types/reflect-types/index.d.ts +0 -11
- package/types/reflect-types/package.d.ts +0 -10
- package/types/reflect-types/reflect-context.d.ts +0 -16
- package/types/reflect-types/reflect-definitions.d.ts +0 -104
- package/types/reflect-types/reflect-types.d.ts +0 -20
- package/types/reflect-types/reflect-validate.d.ts +0 -24
- /package/dist/cjs/{index.js → index.cjs} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var me=Object.create;var C=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var De=(e,n)=>{for(var t in n)C(e,t,{get:n[t],enumerable:!0})},X=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of de(n))!Te.call(e,l)&&l!==t&&C(e,l,{get:()=>n[l],enumerable:!(s=ye(n,l))||s.enumerable});return e};var A=(e,n,t)=>(t=e!=null?me(ge(e)):{},X(n||!e||!e.__esModule?C(t,"default",{value:e,enumerable:!0}):t,e)),we=e=>X(C({},"__esModule",{value:!0}),e);var z=(e,n,t)=>new Promise((s,l)=>{var r=m=>{try{D(t.next(m))}catch(w){l(w)}},o=m=>{try{D(t.throw(m))}catch(w){l(w)}},D=m=>m.done?s(m.value):Promise.resolve(m.value).then(r,o);D((t=t.apply(e,n)).next())});var Ce={};De(Ce,{DEBUG_CONFIG:()=>I,parseSource:()=>j,reflectLoader:()=>H,reflectParserPlugin:()=>ke,setupReflectTypes:()=>he,updateReflectModules:()=>Q});module.exports=we(Ce);var F=A(require("typescript"),1);var i=A(require("typescript"),1),E=A(require("fs"),1),$=A(require("process"),1),x=A(require("path"),1),te=require("url");var I={OUTPUT_LOG:!1},P=new Map,_=new Map,G=new Map,M=new Map,J=new Map,L=new Set,Y={[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",ie=["string","number","boolean","bigint","symbol"],se=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],re=["Mappable","EnableReflect"];[...ie,...se,...re].forEach(ce);re.forEach(e=>_.set(e,{name:e}));var v,Z=!1,h=Reflect;function he(s,l){return z(this,arguments,function*(e,n,t=$.cwd()){if(t=x.resolve(t),h.__classes===void 0){e=ue(e),j(e,n),h.__classes={};for(let[r,o]of P)h.__classes[r]=o;h.__interfaces={};for(let[r,o]of _)h.__interfaces[r]=o;h.__typeAliases={};for(let[r,o]of M)h.__typeAliases[r]=o;h.__constTypes={};for(let[r,o]of J)h.__constTypes[r]=o;yield Promise.all(e.map(r=>Q(r,t)))}})}function Q(e,n){return z(this,null,function*(){if(!E.existsSync(e))return;if(E.statSync(e).isDirectory()){E.readdirSync(e).forEach(D=>{Q(x.join(e,D),n)});return}let s=x.join(n,e).replace(/\.ts$/,".js"),r=yield import((0,te.pathToFileURL)(s).href);h.__classDef={},Object.values(r).forEach(o=>{typeof o=="function"&&(h.__classDef[o.name]=o)})})}function j(e,n){if(e||(e=[$.cwd()]),e=ue(e),!Z){let t=ae(e,n),s=i.default.createProgram(t,{});v=s.getTypeChecker(),t=t.map(r=>ee(r)),s.getSourceFiles().filter(r=>t.includes(ee(r.fileName))).forEach(r=>{b(`parse file: ${r.fileName}`),oe(r)});for(let r of L.keys())!P.has(r)&&!_.has(r)&&!G.has(r)&&!M.has(r)&&!ie.includes(r)&&!se.includes(r)&&(b(`remove unknown typeName: ${r}`),L.delete(r));Array.from(P.values()).forEach(Oe),Array.from(_.values()).forEach(Pe),[P,_,M].forEach(Ke),Z=!0}return{classDefinitions:P,interfaceDefinitions:_,enumDefinitions:G,typeAliasDefinitions:M,constTypeDefinitions:J}}function ae(e,n){let t=[];return e.forEach(s=>{if(s=x.resolve(s),Ae(s,n)){b(`ignore excluded ${s}`);return}if(!E.existsSync(s)){console.error(`Path ${s} does not exist.`);return}if(E.statSync(s).isFile()){t.push(s);return}E.readdirSync(s).forEach(o=>t.push(...ae([x.join(s,o)],n)))}),t}function oe(e){i.default.isClassDeclaration(e)?Re(e):i.default.isInterfaceDeclaration(e)?xe(e):i.default.isEnumDeclaration(e)?be(e):i.default.isTypeAliasDeclaration(e)?Ee(e):i.default.isConstTypeReference(e)?Se(e):e.forEachChild(oe)}function Re(e){var D,m,w,R,u,T,K,k,U,y,f,d;let n=c(e.name);if(!n)return;let t=c((w=(m=(D=e.heritageClauses)==null?void 0:D.find(a=>a.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:w[0].expression),s=(u=(R=e.heritageClauses)==null?void 0:R.find(a=>a.token===i.default.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(a=>c(a.expression)),l=[],r=[];for(let a of e.members)if(i.default.isPropertyDeclaration(a))l.push({name:c(a.name),isOptional:a.questionToken!==void 0,type:g(a),isPrivate:(T=a.modifiers)==null?void 0:T.some(p=>p.kind===i.default.SyntaxKind.PrivateKeyword),isStatic:(K=a.modifiers)==null?void 0:K.some(p=>p.kind===i.default.SyntaxKind.StaticKeyword)});else if(i.default.isMethodDeclaration(a))r.push({name:c(a.name),returnType:g(a),isPrivate:(k=a.modifiers)==null?void 0:k.some(p=>p.kind===i.default.SyntaxKind.PrivateKeyword),isStatic:(U=a.modifiers)==null?void 0:U.some(p=>p.kind===i.default.SyntaxKind.StaticKeyword),isAsync:(y=a.modifiers)==null?void 0:y.some(p=>p.kind===i.default.SyntaxKind.AsyncKeyword),args:a.parameters.map(p=>({name:c(p.name),type:g(p),isOptional:p.questionToken!==void 0}))});else if(i.default.isGetAccessorDeclaration(a)){let p=l.find(N=>N.name===c(a.name));p||(p={name:c(a.name),isOptional:a.questionToken===void 0,type:g(a)},l.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((f=a.modifiers)==null?void 0:f.some(N=>N.kind===i.default.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(i.default.isSetAccessorDeclaration(a)){let p=l.find(N=>N.name===c(a.name));p||(p={name:c(a.name),isOptional:a.questionToken===void 0,type:g(a)},l.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((d=a.modifiers)==null?void 0:d.some(N=>N.kind===i.default.SyntaxKind.PrivateKeyword))||!1}}let o={name:n,superClassName:t,implementations:s,properties:l,methods:r};b(`Define class: ${c(e.name)}`),P.set(n,o)}function xe(e){var D,m,w,R;let n=c(e.name);if(!n)return;let t=((m=(D=e.heritageClauses)==null?void 0:D.find(u=>u.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:m.types.map(u=>c(u.expression)))||[],s=[],l=[],r;for(let u of e.members)i.default.isPropertySignature(u)?s.push({name:c(u.name),isOptional:u.questionToken!==void 0,type:g(u),isPrivate:((w=u.modifiers)==null?void 0:w.some(T=>T.kind===i.default.SyntaxKind.PrivateKeyword))||!1}):i.default.isMethodSignature(u)?l.push({name:u.name.text,returnType:g(u),isPrivate:((R=u.modifiers)==null?void 0:R.some(T=>T.kind===i.default.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(T=>({name:c(T.name),type:g(T),isOptional:T.questionToken!==void 0}))}):i.default.isIndexSignatureDeclaration(u)&&(r=g(u));let o=_.get(n);o?(o.implementations=q(o.implementations||[],t),o.methods=q(o.methods||[],l,(u,T)=>u.name===T.name),o.properties=q(o.properties||[],s,(u,T)=>u.name===T.name),o.indexElementType=r,b(`Merge interface ${c(e.name)}`)):(o={name:n,implementations:t,methods:l,properties:s,indexElementType:r},_.set(n,o),b(`Define interface ${c(e.name)}`))}function be(e){let n=c(e.name);n&&(G.set(n,{name:n,members:e.members.map(t=>({name:c(t.name),initializer:c(t.initializer)}))}),b(`Define enum: ${c(e.name)}`))}function Ee(e){b(`Define typeAlias: ${c(e.name)}`),M.set(c(e.name),g(e))}function Se(e){let n=e.parent.parent;i.default.isVariableDeclaration(n)&&n.initializer&&i.default.isAsExpression(n.initializer)&&J.set(c(n.name),fe(n.initializer.expression))}function fe(e){return i.default.isArrayLiteralExpression(e)?_e(e):i.default.isObjectLiteralExpression(e)?Ne(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 _e(e){let n=[];return e.elements.forEach(t=>{if(i.default.isStringLiteral(t))return n.push(c(t))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function Ne(e){let n=[];return e.properties.map(t=>{i.default.isPropertyAssignment(t)?n.push({name:c(t.name),type:fe(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function ce(e){L.add(e)}function g(e,n=!1){if(e.type&&!n)return S(e.type);if(!v)return console.error("TypeChecker not initialized!"),O;let t=v.getTypeAtLocation(e),s=v.typeToTypeNode(t,void 0,void 0);return s?S("type"in s?s.type:s):O}function S(e){let n={};if(e===void 0)return O;if(i.default.isUnionTypeNode(e))n.unionMembers=e.types.map(S);else if(i.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(S);else if(i.default.isLiteralTypeNode(e))n.literalValue=c(e.literal);else if(i.default.isTypeLiteralNode(e)){let t=[];e.members.forEach(s=>{i.default.isPropertySignature(s)?t.push({name:c(s.name),isOptional:s.questionToken!==void 0,type:g(s)}):i.default.isIndexSignatureDeclaration(s)?n.indexElementType=g(s):t.push({name:c(s.name)||"",isOptional:s.questionToken!==void 0,type:S()})}),n.typeLiteralMembers=t}else if(i.default.isArrayTypeNode(e))n.arrayElementType=S(e.elementType);else if(i.default.isFunctionTypeNode(e))n.isFunction=!0;else if(i.default.isTypeReferenceNode(e))if(ce(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(t=>S(t))];else return c(e.typeName);else{if(i.default.isIndexedAccessTypeNode(e))return g(e,!0);if(i.default.isThisTypeNode(e))return g(e);if(i.default.isParenthesizedTypeNode(e))return g(e);if(i.default.isConditionalTypeNode(e))return g(e);if(i.default.isTypeQueryNode(e))return g(e);if(i.default.isConstructorTypeNode(e))n.isConstructor=!0;else if(i.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(S);else{if(Object.keys(Y).includes(String(e.kind)))return Y[e.kind]||O;if(i.default.isOptionalTypeNode(e))Object.assign(n,g(e)),n.isOptionalInTuple=!0;else if(i.default.isNamedTupleMember(e))Object.assign(n,g(e));else return i.default.isTypeOperatorNode(e)&&e.operator===i.default.SyntaxKind.KeyOfKeyword,g(e,!0)}}return n}var q=(e,n,t)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(l=>(t||(()=>l===s))(l,s)))))||[],...n||[]];function V(e){if(e!==void 0&&e!==O)return typeof e=="string"?L.has(e)?e:void 0:e}function Oe(e){var n,t;(n=e.methods)==null||n.forEach(pe),(t=e.properties)==null||t.forEach(le)}function Pe(e){var n,t;(n=e.methods)==null||n.forEach(pe),(t=e.properties)==null||t.forEach(le)}function le(e){e.type=V(e.type)}function pe(e){var n;(n=e.args)==null||n.forEach(t=>t.type=V(t.type)),e.returnType=V(e.returnType)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{return i.default.isQualifiedName(e)?c(e.right):e.getText()}catch(n){return e.text}}function B(e){e&&Object.entries(e).forEach(n=>{let[t,s]=n;s instanceof Array&&s.length===0||s===!1||s===void 0?delete e[t]:s.constructor===Array?s.forEach(B):s.constructor===Object&&B(s)})}function Ke(e){for(let n of e.values())B(n)}function Ae(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 ee(e,n=$.cwd()){return ne(e).replace(ne(n)+"/","")}function ne(e){let n=x.sep;return e.split(n).join("/")}function ue(e){return e instanceof Array?e:[e]}function b(e){I.OUTPUT_LOG&&console.log(e)}function W(e,n){let t=l=>{let r=e.replace(/\\/g,"/"),o=l.replace(/\\/g,"/");o=o.replace(/\*\*/g,"<<double_star>>");let m=o.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!l.startsWith("/")&&!l.startsWith("*")&&(m=".*"+m),m="^"+m+"$",new RegExp(m).test(r)};return(n instanceof Array?n:[n]).some(t)}function H(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:s,outputLog:l}=e;if(l&&(I.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:r,interfaceDefinitions:o,enumDefinitions:D,typeAliasDefinitions:m}=j(n,t),w=[],R=[];function u(y){let f=r.get(y),d=[];return f?(f.superClassName&&d.push(f.superClassName),d.push(...f.implementations||[])):(f=o.get(y),f?d.push(...f.implementations||[]):(f=m.get(y),f&&d.push(...f.implementations||[]))),d.flatMap(a=>[a,...u(a)])||[]}function T(y,f){return u(y.name).includes(f)}function K(y){if(F.default.isClassDeclaration(y)&&y.name!==void 0){let f=y.name.text,d=r.get(f);if(!f||!d||s&&!T(d,"EnableReflect"))return;R.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${f} })`);return}y.forEachChild(K)}function k(){let y=[];return r.forEach((f,d)=>{s&&!T(f,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${d}: ${JSON.stringify(f)} })`)}),o.forEach((f,d)=>{s&&!T(f,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${d}: ${JSON.stringify(f)} })`)}),D.forEach((f,d)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${d}: ${JSON.stringify(f)} })`)}),m.forEach((f,d)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${d}: ${JSON.stringify(f)} })`)}),y.join(`
|
|
2
|
+
`)}return{outputAllMetas:k,transform:(y,f)=>{let d=(typeof n=="string"?[n]:n).map(a=>a+"/**.ts");if(W(f,d))try{let a=F.default.createSourceFile(f,y,F.default.ScriptTarget.Latest,!1);return w.length=0,R.length=0,K(a),`${w.join(";")};${y};${R.join(";")}`}catch(a){return console.error(`[reflect-parser-plugin] Error processing ${f}:`,a),null}}}}var Me=process.cwd().replace(/\\/g,"/")+"/";function ke(e){let n=H(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,s)=>(s=s.replace(Me,""),s===e.entry?`${n.outputAllMetas()}
|
|
3
|
+
${t}`:n.transform(t,s))}}0&&(module.exports={DEBUG_CONFIG,parseSource,reflectLoader,reflectParserPlugin,setupReflectTypes,updateReflectModules});
|
package/dist/esm/parser/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var $=(e,n,t)=>new Promise((s,l)=>{var r=m=>{try{w(t.next(m))}catch(D){l(D)}},c=m=>{try{w(t.throw(m))}catch(D){l(D)}},w=m=>m.done?s(m.value):Promise.resolve(m.value).then(r,c);w((t=t.apply(e,n)).next())});import B from"typescript";import i from"typescript";import*as E from"fs";import*as v from"process";import*as x from"path";var U={OUTPUT_LOG:!1},P=new Map,_=new Map,j=new Map,A=new Map,q=new Map,C=new Set,J={[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",X=["string","number","boolean","bigint","symbol"],Y=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],Z=["Mappable","EnableReflect"];[...X,...Y,...Z].forEach(se);Z.forEach(e=>_.set(e,{name:e}));var k,Q=!1,h=Reflect;function be(s,l){return $(this,arguments,function*(e,n,t=v.cwd()){if(t=x.resolve(t),h.__classes===void 0){e=oe(e),G(e,n),h.__classes={};for(let[r,c]of P)h.__classes[r]=c;h.__interfaces={};for(let[r,c]of _)h.__interfaces[r]=c;h.__typeAliases={};for(let[r,c]of A)h.__typeAliases[r]=c;h.__constTypes={};for(let[r,c]of q)h.__constTypes[r]=c;yield Promise.all(e.map(r=>ee(r,t)))}})}function ee(e,n){return $(this,null,function*(){if(!E.existsSync(e))return;if(E.statSync(e).isDirectory()){E.readdirSync(e).forEach(r=>{ee(x.join(e,r),n)});return}let s=yield import(x.join(n,e).replace(/\.ts$/,".js"));h.__classDef={},Object.values(s).forEach(l=>{typeof l=="function"&&(h.__classDef[l.name]=l)})})}function G(e,n){if(e||(e=[v.cwd()]),e=oe(e),!Q){let t=ne(e,n),s=i.createProgram(t,{});k=s.getTypeChecker(),t=t.map(r=>W(r)),s.getSourceFiles().filter(r=>t.includes(W(r.fileName))).forEach(r=>{b(`parse file: ${r.fileName}`),te(r)});for(let r of C.keys())!P.has(r)&&!_.has(r)&&!j.has(r)&&!A.has(r)&&!X.includes(r)&&!Y.includes(r)&&(b(`remove unknown typeName: ${r}`),C.delete(r));Array.from(P.values()).forEach(ge),Array.from(_.values()).forEach(Te),[P,_,A].forEach(De),Q=!0}return{classDefinitions:P,interfaceDefinitions:_,enumDefinitions:j,typeAliasDefinitions:A,constTypeDefinitions:q}}function ne(e,n){let t=[];return e.forEach(s=>{if(s=x.resolve(s),we(s,n)){b(`ignore excluded ${s}`);return}if(!E.existsSync(s)){console.error(`Path ${s} does not exist.`);return}if(E.statSync(s).isFile()){t.push(s);return}E.readdirSync(s).forEach(c=>t.push(...ne([x.join(s,c)],n)))}),t}function te(e){i.isClassDeclaration(e)?ce(e):i.isInterfaceDeclaration(e)?le(e):i.isEnumDeclaration(e)?pe(e):i.isTypeAliasDeclaration(e)?ue(e):i.isConstTypeReference(e)?me(e):e.forEachChild(te)}function ce(e){var w,m,D,R,u,T,K,M,L,y,o,d;let n=f(e.name);if(!n)return;let t=f((D=(m=(w=e.heritageClauses)==null?void 0:w.find(a=>a.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:D[0].expression),s=(u=(R=e.heritageClauses)==null?void 0:R.find(a=>a.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(a=>f(a.expression)),l=[],r=[];for(let a of e.members)if(i.isPropertyDeclaration(a))l.push({name:f(a.name),isOptional:a.questionToken!==void 0,type:g(a),isPrivate:(T=a.modifiers)==null?void 0:T.some(p=>p.kind===i.SyntaxKind.PrivateKeyword),isStatic:(K=a.modifiers)==null?void 0:K.some(p=>p.kind===i.SyntaxKind.StaticKeyword)});else if(i.isMethodDeclaration(a))r.push({name:f(a.name),returnType:g(a),isPrivate:(M=a.modifiers)==null?void 0:M.some(p=>p.kind===i.SyntaxKind.PrivateKeyword),isStatic:(L=a.modifiers)==null?void 0:L.some(p=>p.kind===i.SyntaxKind.StaticKeyword),isAsync:(y=a.modifiers)==null?void 0:y.some(p=>p.kind===i.SyntaxKind.AsyncKeyword),args:a.parameters.map(p=>({name:f(p.name),type:g(p),isOptional:p.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(a)){let p=l.find(N=>N.name===f(a.name));p||(p={name:f(a.name),isOptional:a.questionToken===void 0,type:g(a)},l.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((o=a.modifiers)==null?void 0:o.some(N=>N.kind===i.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(a)){let p=l.find(N=>N.name===f(a.name));p||(p={name:f(a.name),isOptional:a.questionToken===void 0,type:g(a)},l.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((d=a.modifiers)==null?void 0:d.some(N=>N.kind===i.SyntaxKind.PrivateKeyword))||!1}}let c={name:n,superClassName:t,implementations:s,properties:l,methods:r};b(`Define class: ${f(e.name)}`),P.set(n,c)}function le(e){var w,m,D,R;let n=f(e.name);if(!n)return;let t=((m=(w=e.heritageClauses)==null?void 0:w.find(u=>u.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:m.types.map(u=>f(u.expression)))||[],s=[],l=[],r;for(let u of e.members)i.isPropertySignature(u)?s.push({name:f(u.name),isOptional:u.questionToken!==void 0,type:g(u),isPrivate:((D=u.modifiers)==null?void 0:D.some(T=>T.kind===i.SyntaxKind.PrivateKeyword))||!1}):i.isMethodSignature(u)?l.push({name:u.name.text,returnType:g(u),isPrivate:((R=u.modifiers)==null?void 0:R.some(T=>T.kind===i.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(T=>({name:f(T.name),type:g(T),isOptional:T.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(u)&&(r=g(u));let c=_.get(n);c?(c.implementations=I(c.implementations||[],t),c.methods=I(c.methods||[],l,(u,T)=>u.name===T.name),c.properties=I(c.properties||[],s,(u,T)=>u.name===T.name),c.indexElementType=r,b(`Merge interface ${f(e.name)}`)):(c={name:n,implementations:t,methods:l,properties:s,indexElementType:r},_.set(n,c),b(`Define interface ${f(e.name)}`))}function pe(e){let n=f(e.name);n&&(j.set(n,{name:n,members:e.members.map(t=>({name:f(t.name),initializer:f(t.initializer)}))}),b(`Define enum: ${f(e.name)}`))}function ue(e){b(`Define typeAlias: ${f(e.name)}`),A.set(f(e.name),g(e))}function me(e){let n=e.parent.parent;i.isVariableDeclaration(n)&&n.initializer&&i.isAsExpression(n.initializer)&&q.set(f(n.name),ie(n.initializer.expression))}function ie(e){return i.isArrayLiteralExpression(e)?ye(e):i.isObjectLiteralExpression(e)?de(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 ye(e){let n=[];return e.elements.forEach(t=>{if(i.isStringLiteral(t))return n.push(f(t))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function de(e){let n=[];return e.properties.map(t=>{i.isPropertyAssignment(t)?n.push({name:f(t.name),type:ie(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function se(e){C.add(e)}function g(e,n=!1){if(e.type&&!n)return S(e.type);if(!k)return console.error("TypeChecker not initialized!"),O;let t=k.getTypeAtLocation(e),s=k.typeToTypeNode(t,void 0,void 0);return s?S("type"in s?s.type:s):O}function S(e){let n={};if(e===void 0)return O;if(i.isUnionTypeNode(e))n.unionMembers=e.types.map(S);else if(i.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(S);else if(i.isLiteralTypeNode(e))n.literalValue=f(e.literal);else if(i.isTypeLiteralNode(e)){let t=[];e.members.forEach(s=>{i.isPropertySignature(s)?t.push({name:f(s.name),isOptional:s.questionToken!==void 0,type:g(s)}):i.isIndexSignatureDeclaration(s)?n.indexElementType=g(s):t.push({name:f(s.name)||"",isOptional:s.questionToken!==void 0,type:S()})}),n.typeLiteralMembers=t}else if(i.isArrayTypeNode(e))n.arrayElementType=S(e.elementType);else if(i.isFunctionTypeNode(e))n.isFunction=!0;else if(i.isTypeReferenceNode(e))if(se(f(e.typeName)),e.typeArguments)n.generics=[f(e.typeName),...e.typeArguments.map(t=>S(t))];else return f(e.typeName);else{if(i.isIndexedAccessTypeNode(e))return g(e,!0);if(i.isThisTypeNode(e))return g(e);if(i.isParenthesizedTypeNode(e))return g(e);if(i.isConditionalTypeNode(e))return g(e);if(i.isTypeQueryNode(e))return g(e);if(i.isConstructorTypeNode(e))n.isConstructor=!0;else if(i.isTupleTypeNode(e))n.tupleMembers=e.elements.map(S);else{if(Object.keys(J).includes(String(e.kind)))return J[e.kind]||O;if(i.isOptionalTypeNode(e))Object.assign(n,g(e)),n.isOptionalInTuple=!0;else if(i.isNamedTupleMember(e))Object.assign(n,g(e));else return i.isTypeOperatorNode(e)&&e.operator===i.SyntaxKind.KeyOfKeyword,g(e,!0)}}return n}var I=(e,n,t)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(l=>(t||(()=>l===s))(l,s)))))||[],...n||[]];function F(e){if(e!==void 0&&e!==O)return typeof e=="string"?C.has(e)?e:void 0:e}function ge(e){var n,t;(n=e.methods)==null||n.forEach(ae),(t=e.properties)==null||t.forEach(re)}function Te(e){var n,t;(n=e.methods)==null||n.forEach(ae),(t=e.properties)==null||t.forEach(re)}function re(e){e.type=F(e.type)}function ae(e){var n;(n=e.args)==null||n.forEach(t=>t.type=F(t.type)),e.returnType=F(e.returnType)}function f(e){if(!e)return e;if(e.end<0)return e.text;try{return i.isQualifiedName(e)?f(e.right):e.getText()}catch(n){return e.text}}function z(e){e&&Object.entries(e).forEach(n=>{let[t,s]=n;s instanceof Array&&s.length===0||s===!1||s===void 0?delete e[t]:s.constructor===Array?s.forEach(z):s.constructor===Object&&z(s)})}function De(e){for(let n of e.values())z(n)}function we(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 W(e,n=v.cwd()){return H(e).replace(H(n)+"/","")}function H(e){let n=x.sep;return e.split(n).join("/")}function oe(e){return e instanceof Array?e:[e]}function b(e){U.OUTPUT_LOG&&console.log(e)}function V(e,n){let t=l=>{let r=e.replace(/\\/g,"/"),c=l.replace(/\\/g,"/");c=c.replace(/\*\*/g,"<<double_star>>");let m=c.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!l.startsWith("/")&&!l.startsWith("*")&&(m=".*"+m),m="^"+m+"$",new RegExp(m).test(r)};return(n instanceof Array?n:[n]).some(t)}function fe(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:s,outputLog:l}=e;if(l&&(U.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:r,interfaceDefinitions:c,enumDefinitions:w,typeAliasDefinitions:m}=G(n,t),D=[],R=[];function u(y){let o=r.get(y),d=[];return o?(o.superClassName&&d.push(o.superClassName),d.push(...o.implementations||[])):(o=c.get(y),o?d.push(...o.implementations||[]):(o=m.get(y),o&&d.push(...o.implementations||[]))),d.flatMap(a=>[a,...u(a)])||[]}function T(y,o){return u(y.name).includes(o)}function K(y){if(B.isClassDeclaration(y)&&y.name!==void 0){let o=y.name.text,d=r.get(o);if(!o||!d||s&&!T(d,"EnableReflect"))return;R.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${o} })`);return}y.forEachChild(K)}function M(){let y=[];return r.forEach((o,d)=>{s&&!T(o,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${d}: ${JSON.stringify(o)} })`)}),c.forEach((o,d)=>{s&&!T(o,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${d}: ${JSON.stringify(o)} })`)}),w.forEach((o,d)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${d}: ${JSON.stringify(o)} })`)}),m.forEach((o,d)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${d}: ${JSON.stringify(o)} })`)}),y.join(`
|
|
2
|
-
`)}return{outputAllMetas:M,transform:(y,
|
|
3
|
-
${t}`:n.transform(t,s))}}export{
|
|
1
|
+
var $=(e,n,t)=>new Promise((s,p)=>{var r=m=>{try{D(t.next(m))}catch(w){p(w)}},o=m=>{try{D(t.throw(m))}catch(w){p(w)}},D=m=>m.done?s(m.value):Promise.resolve(m.value).then(r,o);D((t=t.apply(e,n)).next())});import B from"typescript";import i from"typescript";import*as E from"fs";import*as v from"process";import*as x from"path";import{pathToFileURL as ce}from"url";var z={OUTPUT_LOG:!1},P=new Map,_=new Map,j=new Map,A=new Map,q=new Map,C=new Set,J={[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",X=["string","number","boolean","bigint","symbol"],Y=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],Z=["Mappable","EnableReflect"];[...X,...Y,...Z].forEach(se);Z.forEach(e=>_.set(e,{name:e}));var k,Q=!1,h=Reflect;function Se(s,p){return $(this,arguments,function*(e,n,t=v.cwd()){if(t=x.resolve(t),h.__classes===void 0){e=oe(e),G(e,n),h.__classes={};for(let[r,o]of P)h.__classes[r]=o;h.__interfaces={};for(let[r,o]of _)h.__interfaces[r]=o;h.__typeAliases={};for(let[r,o]of A)h.__typeAliases[r]=o;h.__constTypes={};for(let[r,o]of q)h.__constTypes[r]=o;yield Promise.all(e.map(r=>ee(r,t)))}})}function ee(e,n){return $(this,null,function*(){if(!E.existsSync(e))return;if(E.statSync(e).isDirectory()){E.readdirSync(e).forEach(D=>{ee(x.join(e,D),n)});return}let s=x.join(n,e).replace(/\.ts$/,".js"),r=yield import(ce(s).href);h.__classDef={},Object.values(r).forEach(o=>{typeof o=="function"&&(h.__classDef[o.name]=o)})})}function G(e,n){if(e||(e=[v.cwd()]),e=oe(e),!Q){let t=ne(e,n),s=i.createProgram(t,{});k=s.getTypeChecker(),t=t.map(r=>W(r)),s.getSourceFiles().filter(r=>t.includes(W(r.fileName))).forEach(r=>{b(`parse file: ${r.fileName}`),te(r)});for(let r of C.keys())!P.has(r)&&!_.has(r)&&!j.has(r)&&!A.has(r)&&!X.includes(r)&&!Y.includes(r)&&(b(`remove unknown typeName: ${r}`),C.delete(r));Array.from(P.values()).forEach(Te),Array.from(_.values()).forEach(De),[P,_,A].forEach(we),Q=!0}return{classDefinitions:P,interfaceDefinitions:_,enumDefinitions:j,typeAliasDefinitions:A,constTypeDefinitions:q}}function ne(e,n){let t=[];return e.forEach(s=>{if(s=x.resolve(s),he(s,n)){b(`ignore excluded ${s}`);return}if(!E.existsSync(s)){console.error(`Path ${s} does not exist.`);return}if(E.statSync(s).isFile()){t.push(s);return}E.readdirSync(s).forEach(o=>t.push(...ne([x.join(s,o)],n)))}),t}function te(e){i.isClassDeclaration(e)?le(e):i.isInterfaceDeclaration(e)?pe(e):i.isEnumDeclaration(e)?ue(e):i.isTypeAliasDeclaration(e)?me(e):i.isConstTypeReference(e)?ye(e):e.forEachChild(te)}function le(e){var D,m,w,R,u,T,K,M,L,y,f,d;let n=c(e.name);if(!n)return;let t=c((w=(m=(D=e.heritageClauses)==null?void 0:D.find(a=>a.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:w[0].expression),s=(u=(R=e.heritageClauses)==null?void 0:R.find(a=>a.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(a=>c(a.expression)),p=[],r=[];for(let a of e.members)if(i.isPropertyDeclaration(a))p.push({name:c(a.name),isOptional:a.questionToken!==void 0,type:g(a),isPrivate:(T=a.modifiers)==null?void 0:T.some(l=>l.kind===i.SyntaxKind.PrivateKeyword),isStatic:(K=a.modifiers)==null?void 0:K.some(l=>l.kind===i.SyntaxKind.StaticKeyword)});else if(i.isMethodDeclaration(a))r.push({name:c(a.name),returnType:g(a),isPrivate:(M=a.modifiers)==null?void 0:M.some(l=>l.kind===i.SyntaxKind.PrivateKeyword),isStatic:(L=a.modifiers)==null?void 0:L.some(l=>l.kind===i.SyntaxKind.StaticKeyword),isAsync:(y=a.modifiers)==null?void 0:y.some(l=>l.kind===i.SyntaxKind.AsyncKeyword),args:a.parameters.map(l=>({name:c(l.name),type:g(l),isOptional:l.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(a)){let l=p.find(N=>N.name===c(a.name));l||(l={name:c(a.name),isOptional:a.questionToken===void 0,type:g(a)},p.push(l)),l.accessor=l.accessor||{},l.accessor.getter={isPrivate:((f=a.modifiers)==null?void 0:f.some(N=>N.kind===i.SyntaxKind.PrivateKeyword))||!1},l.isPrivate=l.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(a)){let l=p.find(N=>N.name===c(a.name));l||(l={name:c(a.name),isOptional:a.questionToken===void 0,type:g(a)},p.push(l)),l.accessor=l.accessor||{},l.accessor.setter={isPrivate:((d=a.modifiers)==null?void 0:d.some(N=>N.kind===i.SyntaxKind.PrivateKeyword))||!1}}let o={name:n,superClassName:t,implementations:s,properties:p,methods:r};b(`Define class: ${c(e.name)}`),P.set(n,o)}function pe(e){var D,m,w,R;let n=c(e.name);if(!n)return;let t=((m=(D=e.heritageClauses)==null?void 0:D.find(u=>u.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:m.types.map(u=>c(u.expression)))||[],s=[],p=[],r;for(let u of e.members)i.isPropertySignature(u)?s.push({name:c(u.name),isOptional:u.questionToken!==void 0,type:g(u),isPrivate:((w=u.modifiers)==null?void 0:w.some(T=>T.kind===i.SyntaxKind.PrivateKeyword))||!1}):i.isMethodSignature(u)?p.push({name:u.name.text,returnType:g(u),isPrivate:((R=u.modifiers)==null?void 0:R.some(T=>T.kind===i.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(T=>({name:c(T.name),type:g(T),isOptional:T.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(u)&&(r=g(u));let o=_.get(n);o?(o.implementations=I(o.implementations||[],t),o.methods=I(o.methods||[],p,(u,T)=>u.name===T.name),o.properties=I(o.properties||[],s,(u,T)=>u.name===T.name),o.indexElementType=r,b(`Merge interface ${c(e.name)}`)):(o={name:n,implementations:t,methods:p,properties:s,indexElementType:r},_.set(n,o),b(`Define interface ${c(e.name)}`))}function ue(e){let n=c(e.name);n&&(j.set(n,{name:n,members:e.members.map(t=>({name:c(t.name),initializer:c(t.initializer)}))}),b(`Define enum: ${c(e.name)}`))}function me(e){b(`Define typeAlias: ${c(e.name)}`),A.set(c(e.name),g(e))}function ye(e){let n=e.parent.parent;i.isVariableDeclaration(n)&&n.initializer&&i.isAsExpression(n.initializer)&&q.set(c(n.name),ie(n.initializer.expression))}function ie(e){return i.isArrayLiteralExpression(e)?de(e):i.isObjectLiteralExpression(e)?ge(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(t=>{if(i.isStringLiteral(t))return n.push(c(t))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function ge(e){let n=[];return e.properties.map(t=>{i.isPropertyAssignment(t)?n.push({name:c(t.name),type:ie(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function se(e){C.add(e)}function g(e,n=!1){if(e.type&&!n)return S(e.type);if(!k)return console.error("TypeChecker not initialized!"),O;let t=k.getTypeAtLocation(e),s=k.typeToTypeNode(t,void 0,void 0);return s?S("type"in s?s.type:s):O}function S(e){let n={};if(e===void 0)return O;if(i.isUnionTypeNode(e))n.unionMembers=e.types.map(S);else if(i.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(S);else if(i.isLiteralTypeNode(e))n.literalValue=c(e.literal);else 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:g(s)}):i.isIndexSignatureDeclaration(s)?n.indexElementType=g(s):t.push({name:c(s.name)||"",isOptional:s.questionToken!==void 0,type:S()})}),n.typeLiteralMembers=t}else if(i.isArrayTypeNode(e))n.arrayElementType=S(e.elementType);else if(i.isFunctionTypeNode(e))n.isFunction=!0;else if(i.isTypeReferenceNode(e))if(se(c(e.typeName)),e.typeArguments)n.generics=[c(e.typeName),...e.typeArguments.map(t=>S(t))];else return c(e.typeName);else{if(i.isIndexedAccessTypeNode(e))return g(e,!0);if(i.isThisTypeNode(e))return g(e);if(i.isParenthesizedTypeNode(e))return g(e);if(i.isConditionalTypeNode(e))return g(e);if(i.isTypeQueryNode(e))return g(e);if(i.isConstructorTypeNode(e))n.isConstructor=!0;else if(i.isTupleTypeNode(e))n.tupleMembers=e.elements.map(S);else{if(Object.keys(J).includes(String(e.kind)))return J[e.kind]||O;if(i.isOptionalTypeNode(e))Object.assign(n,g(e)),n.isOptionalInTuple=!0;else if(i.isNamedTupleMember(e))Object.assign(n,g(e));else return i.isTypeOperatorNode(e)&&e.operator===i.SyntaxKind.KeyOfKeyword,g(e,!0)}}return n}var I=(e,n,t)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(p=>(t||(()=>p===s))(p,s)))))||[],...n||[]];function F(e){if(e!==void 0&&e!==O)return typeof e=="string"?C.has(e)?e:void 0:e}function Te(e){var n,t;(n=e.methods)==null||n.forEach(ae),(t=e.properties)==null||t.forEach(re)}function De(e){var n,t;(n=e.methods)==null||n.forEach(ae),(t=e.properties)==null||t.forEach(re)}function re(e){e.type=F(e.type)}function ae(e){var n;(n=e.args)==null||n.forEach(t=>t.type=F(t.type)),e.returnType=F(e.returnType)}function c(e){if(!e)return e;if(e.end<0)return e.text;try{return i.isQualifiedName(e)?c(e.right):e.getText()}catch(n){return e.text}}function U(e){e&&Object.entries(e).forEach(n=>{let[t,s]=n;s instanceof Array&&s.length===0||s===!1||s===void 0?delete e[t]:s.constructor===Array?s.forEach(U):s.constructor===Object&&U(s)})}function we(e){for(let n of e.values())U(n)}function he(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 W(e,n=v.cwd()){return H(e).replace(H(n)+"/","")}function H(e){let n=x.sep;return e.split(n).join("/")}function oe(e){return e instanceof Array?e:[e]}function b(e){z.OUTPUT_LOG&&console.log(e)}function V(e,n){let t=p=>{let r=e.replace(/\\/g,"/"),o=p.replace(/\\/g,"/");o=o.replace(/\*\*/g,"<<double_star>>");let m=o.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!p.startsWith("/")&&!p.startsWith("*")&&(m=".*"+m),m="^"+m+"$",new RegExp(m).test(r)};return(n instanceof Array?n:[n]).some(t)}function fe(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:s,outputLog:p}=e;if(p&&(z.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:r,interfaceDefinitions:o,enumDefinitions:D,typeAliasDefinitions:m}=G(n,t),w=[],R=[];function u(y){let f=r.get(y),d=[];return f?(f.superClassName&&d.push(f.superClassName),d.push(...f.implementations||[])):(f=o.get(y),f?d.push(...f.implementations||[]):(f=m.get(y),f&&d.push(...f.implementations||[]))),d.flatMap(a=>[a,...u(a)])||[]}function T(y,f){return u(y.name).includes(f)}function K(y){if(B.isClassDeclaration(y)&&y.name!==void 0){let f=y.name.text,d=r.get(f);if(!f||!d||s&&!T(d,"EnableReflect"))return;R.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${f} })`);return}y.forEachChild(K)}function M(){let y=[];return r.forEach((f,d)=>{s&&!T(f,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${d}: ${JSON.stringify(f)} })`)}),o.forEach((f,d)=>{s&&!T(f,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${d}: ${JSON.stringify(f)} })`)}),D.forEach((f,d)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${d}: ${JSON.stringify(f)} })`)}),m.forEach((f,d)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${d}: ${JSON.stringify(f)} })`)}),y.join(`
|
|
2
|
+
`)}return{outputAllMetas:M,transform:(y,f)=>{let d=(typeof n=="string"?[n]:n).map(a=>a+"/**.ts");if(V(f,d))try{let a=B.createSourceFile(f,y,B.ScriptTarget.Latest,!1);return w.length=0,R.length=0,K(a),`${w.join(";")};${y};${R.join(";")}`}catch(a){return console.error(`[reflect-parser-plugin] Error processing ${f}:`,a),null}}}}var Re=process.cwd().replace(/\\/g,"/")+"/";function Ie(e){let n=fe(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,s)=>(s=s.replace(Re,""),s===e.entry?`${n.outputAllMetas()}
|
|
3
|
+
${t}`:n.transform(t,s))}}export{z as DEBUG_CONFIG,G as parseSource,fe as reflectLoader,Ie as reflectParserPlugin,Se as setupReflectTypes,ee as updateReflectModules};
|
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
export declare const AfterSerialized: PropertyDecorator;
|
|
2
|
+
|
|
3
|
+
export declare type Any = any;
|
|
4
|
+
|
|
5
|
+
declare type Any_2 = any;
|
|
6
|
+
|
|
7
|
+
export declare type AnyConstructorFunction = new (...args: Any[]) => Any;
|
|
8
|
+
|
|
9
|
+
declare type AnyConstructorFunction_2 = new (...args: Any_2[]) => Any_2;
|
|
10
|
+
|
|
11
|
+
export declare type AnyFunction = (...args: Any[]) => Any;
|
|
12
|
+
|
|
13
|
+
export declare type AnyObject = Dictionary<Any>;
|
|
14
|
+
|
|
15
|
+
export declare const anyType: {
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export declare function asBoolean(value: unknown): boolean;
|
|
20
|
+
|
|
21
|
+
export declare function asNumber(v: unknown): number;
|
|
22
|
+
|
|
23
|
+
export declare function assertType<T>(data: unknown, type: Type, depth?: number): T;
|
|
24
|
+
|
|
25
|
+
export declare function asString(v: unknown): string;
|
|
26
|
+
|
|
27
|
+
export declare function callDecoratedMethod<Self extends object>(self: Self, metaKey: symbol, ...args: Any[]): Any | undefined;
|
|
28
|
+
|
|
29
|
+
export declare type Class<T> = new (...args: Any[]) => T;
|
|
30
|
+
|
|
31
|
+
export declare class ClassDefinition {
|
|
32
|
+
readonly name: string;
|
|
33
|
+
readonly superClassName: string;
|
|
34
|
+
readonly superClass: ClassDefinition | undefined;
|
|
35
|
+
readonly methods: MethodDefinition[];
|
|
36
|
+
readonly properties: PropertyDefinition_2[];
|
|
37
|
+
readonly jsClass: AnyConstructorFunction_2;
|
|
38
|
+
private readonly _implementationNames;
|
|
39
|
+
private readonly _implementations?;
|
|
40
|
+
private _allImplementations?;
|
|
41
|
+
constructor(def: RawClassDefinition & {
|
|
42
|
+
jsClass: AnyConstructorFunction_2;
|
|
43
|
+
});
|
|
44
|
+
get allMethods(): Dictionary_2<MethodDefinition>;
|
|
45
|
+
get allProperties(): Dictionary_2<PropertyDefinition_2>;
|
|
46
|
+
get implementations(): ImplementationOfClass[];
|
|
47
|
+
get allImplementations(): ImplementationOfClass[];
|
|
48
|
+
getProperty(propName: string): PropertyDefinition_2 | undefined;
|
|
49
|
+
get type(): TypeDefinition;
|
|
50
|
+
isSubClassOf(typeName: string): boolean;
|
|
51
|
+
isSuperClassOf(typeName: string): boolean;
|
|
52
|
+
toString(): string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export declare type ClassOrInstance<T> = T | Class<T>;
|
|
56
|
+
|
|
57
|
+
export declare function createNewInstance<T>(clazz: Class<T>): any;
|
|
58
|
+
|
|
59
|
+
export declare function defineDecoratedProperty(metaKey: symbol): PropertyDecorator;
|
|
60
|
+
|
|
61
|
+
export declare function deserialize<T>(json: string | JsonValue, constructorOrTarget?: ClassOrInstance<T>): T;
|
|
62
|
+
|
|
63
|
+
export declare function deserializeArray<T>(json: string | JsonValue[], clazz?: Class<T>): T[];
|
|
64
|
+
|
|
65
|
+
export declare function deserializeFrom<T extends AnyObject>(data: JsonObject, target: T): void;
|
|
66
|
+
|
|
67
|
+
export declare type Dictionary<T> = {
|
|
68
|
+
[key: string | symbol]: T;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
declare type Dictionary_2<T> = {
|
|
72
|
+
[key: string]: T;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export declare const done: () => any;
|
|
76
|
+
|
|
77
|
+
export declare type EnableReflect = object;
|
|
78
|
+
|
|
79
|
+
export declare class EnumDefinition {
|
|
80
|
+
readonly name: string;
|
|
81
|
+
readonly members: Map<string, TypeDefinition>;
|
|
82
|
+
constructor(def: RawEnumDefinition);
|
|
83
|
+
get type(): TypeDefinition;
|
|
84
|
+
get names(): string[];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
declare interface FailureResult extends ValidateResult {
|
|
88
|
+
cause?: FailureResult;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export declare function fillMethod(rawMethod: RawMethodDefinition): MethodDefinition;
|
|
92
|
+
|
|
93
|
+
export declare function fillProperty(rawProperty: RawPropertyDefinition): PropertyDefinition_2;
|
|
94
|
+
|
|
95
|
+
export declare function fillType(rawType: RawTypeDefinition | string | undefined): TypeDefinition;
|
|
96
|
+
|
|
97
|
+
declare type FromJSON<T> = (jsonValue: JsonValue) => T;
|
|
98
|
+
|
|
99
|
+
export declare function getAnyValue<T>(target: Any, field: string | number | symbol): T | undefined;
|
|
100
|
+
|
|
101
|
+
export declare function getClassByName(className: string): AnyConstructorFunction_2 | undefined;
|
|
102
|
+
|
|
103
|
+
export declare function getClassDefinition(arg: AnyConstructorFunction_2 | object | string): ClassDefinition | undefined;
|
|
104
|
+
|
|
105
|
+
declare function getClassDefinition_2(arg: AnyConstructorFunction_2 | object | string): ClassDefinition | undefined;
|
|
106
|
+
|
|
107
|
+
export declare function getDecoratedProperty(target: object, metaKey: symbol): ReflectPropertyKey | undefined;
|
|
108
|
+
|
|
109
|
+
export declare function getDecoratedPropertyValue<V>(target: object, metaKey: symbol): V | undefined;
|
|
110
|
+
|
|
111
|
+
export declare function getEnumDefinition(name: string): EnumDefinition | undefined;
|
|
112
|
+
|
|
113
|
+
declare function getEnumDefinition_2(name: string): EnumDefinition | undefined;
|
|
114
|
+
|
|
115
|
+
export declare function getEnumNames(enumName: string): string[];
|
|
116
|
+
|
|
117
|
+
export declare function getEnumValues(args: {
|
|
118
|
+
[enumName: string]: Record<string, string | number>;
|
|
119
|
+
}): (string | number)[];
|
|
120
|
+
|
|
121
|
+
export declare function getErrorTraceMessages(failureResult: FailureResult): string;
|
|
122
|
+
|
|
123
|
+
export declare function getInterfaceDefinition(name: string): InterfaceDefinition | undefined;
|
|
124
|
+
|
|
125
|
+
declare function getInterfaceDefinition_2(name: string): InterfaceDefinition | undefined;
|
|
126
|
+
|
|
127
|
+
export declare function getOrSetValue<T>(target: Any, field: string | number | symbol, defaultWith: () => T): T;
|
|
128
|
+
|
|
129
|
+
export declare function getSerializeSettings(clazz: Class<Any>): any;
|
|
130
|
+
|
|
131
|
+
export declare function getTypeAliasDefinition(name: string): TypeDefinition | undefined;
|
|
132
|
+
|
|
133
|
+
declare function getTypeAliasDefinition_2(name: string): TypeDefinition | undefined;
|
|
134
|
+
|
|
135
|
+
export declare function getTypeDef(type: Type | TypeDefinition): TypeDefinition;
|
|
136
|
+
|
|
137
|
+
export declare function getTypeDefinition(typeName: string): TypeDefinition;
|
|
138
|
+
|
|
139
|
+
export declare function hasDecoratedMethod<Self extends object>(self: Self, metaKey: symbol): boolean;
|
|
140
|
+
|
|
141
|
+
export declare function hasGenerics(type: TypeDefinition): type is {
|
|
142
|
+
generics: TypeDefinition[];
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
export declare const IgnoreSerialization: PropertyDecorator;
|
|
146
|
+
|
|
147
|
+
declare type ImplementationOfClass = InterfaceDefinition | TypeDefinition;
|
|
148
|
+
|
|
149
|
+
declare type ImplementationOfInterface = InterfaceDefinition | ClassDefinition | TypeDefinition;
|
|
150
|
+
|
|
151
|
+
export declare class InterfaceDefinition {
|
|
152
|
+
readonly name: string;
|
|
153
|
+
readonly methods: MethodDefinition[];
|
|
154
|
+
readonly properties: PropertyDefinition_2[];
|
|
155
|
+
private readonly _implementationNames;
|
|
156
|
+
private _implementations?;
|
|
157
|
+
private _allImplementations?;
|
|
158
|
+
constructor(def: RawInterfaceDefinition);
|
|
159
|
+
get implementations(): ImplementationOfInterface[];
|
|
160
|
+
get allImplementations(): ImplementationOfInterface[];
|
|
161
|
+
get type(): TypeDefinition;
|
|
162
|
+
toString(): string;
|
|
163
|
+
buildBaseObject(): {};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
declare type IPropertyWrapper = {
|
|
167
|
+
getField: (owner: object, property: ReflectPropertyKey, fieldSymbol: symbol) => Any;
|
|
168
|
+
setField: (owner: object, property: ReflectPropertyKey, newValue: Any, fieldSymbol: symbol) => void;
|
|
169
|
+
} & (<T>({ getter, setter, fieldSymbol }: {
|
|
170
|
+
getter?: (self: object, property: ReflectPropertyKey) => T;
|
|
171
|
+
setter?: (self: object, newValue: T, property: ReflectPropertyKey) => void;
|
|
172
|
+
fieldSymbol: symbol;
|
|
173
|
+
}) => PropertyDecorator);
|
|
174
|
+
|
|
175
|
+
export declare function isArrayType(type: TypeDefinition): type is {
|
|
176
|
+
arrayElementType: TypeDefinition;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
export declare function isClassDefinition(type: TypeDefinition): type is {
|
|
180
|
+
classDefinition: ClassDefinition;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
export declare function isDictionary(value: Any): boolean;
|
|
184
|
+
|
|
185
|
+
export declare function isIgnoredType(type: TypeDefinition): boolean;
|
|
186
|
+
|
|
187
|
+
export declare function isIntersectionType(type: TypeDefinition): type is {
|
|
188
|
+
intersectionMembers: TypeDefinition[];
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export declare function isLiteralType(type: TypeDefinition): type is {
|
|
192
|
+
literalValue: string;
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
export declare function isNullable(type: Type | TypeDefinition): boolean;
|
|
196
|
+
|
|
197
|
+
export declare function isPrimitiveType(type: TypeDefinition): type is {
|
|
198
|
+
name: string;
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
export declare function isTupleType(type: TypeDefinition): type is {
|
|
202
|
+
tupleMembers: TypeDefinition[];
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
export declare function isType(value: unknown, type: Type | TypeDefinition): boolean;
|
|
206
|
+
|
|
207
|
+
export declare function isTypeLiteralType(type: TypeDefinition): type is {
|
|
208
|
+
typeLiteralMembers: PropertyDefinition_2[];
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
export declare function isUnionType(type: TypeDefinition): type is {
|
|
212
|
+
unionMembers: TypeDefinition[];
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
export declare const itSelf: (some: Any) => any;
|
|
216
|
+
|
|
217
|
+
export declare type JsonObject = {
|
|
218
|
+
[propName: string]: JsonValue;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
export declare type JsonValue = string | number | boolean | null | JsonObject | JsonObject[];
|
|
222
|
+
|
|
223
|
+
export declare interface JsonValueTransform<T> {
|
|
224
|
+
fromJson: FromJSON<T>;
|
|
225
|
+
toJson: ToJSON<T>;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export declare function Lazy(creator: (self: object, property: ReflectPropertyKey) => Any): PropertyDecorator;
|
|
229
|
+
|
|
230
|
+
export declare function mapAllProperties<T extends Mappable>(target: T, map: Mapping<T>): void;
|
|
231
|
+
|
|
232
|
+
export declare interface Mappable extends EnableReflect {
|
|
233
|
+
mapping(map: Mapping<Mappable>): void;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export declare type Mapping<T extends Mappable> = {
|
|
237
|
+
[propName in keyof T]-?: (fieldName?: string | symbol, transform?: {
|
|
238
|
+
fromJSON?: (jsonValue: JsonValue) => Mappable;
|
|
239
|
+
toJSON?: (obj: Mappable) => JsonValue;
|
|
240
|
+
}) => void;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
export declare class MethodDefinition {
|
|
244
|
+
name: string;
|
|
245
|
+
isPrivate: boolean;
|
|
246
|
+
isStatic: boolean;
|
|
247
|
+
isAsync: boolean;
|
|
248
|
+
returnType: TypeDefinition;
|
|
249
|
+
args: {
|
|
250
|
+
name: string;
|
|
251
|
+
type?: TypeDefinition;
|
|
252
|
+
isOptional: boolean;
|
|
253
|
+
}[];
|
|
254
|
+
constructor(def: RawMethodDefinition);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
export declare type Nullable<T> = T | null;
|
|
258
|
+
|
|
259
|
+
export declare const nullType: {
|
|
260
|
+
name: string;
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
export declare type Optional<T> = T | undefined;
|
|
264
|
+
|
|
265
|
+
declare class PropertyDefinition_2 {
|
|
266
|
+
name: string;
|
|
267
|
+
isOptional: boolean;
|
|
268
|
+
isPrivate: boolean;
|
|
269
|
+
isStatic: boolean;
|
|
270
|
+
type: TypeDefinition;
|
|
271
|
+
accessor?: {
|
|
272
|
+
getter?: {
|
|
273
|
+
isPrivate: boolean;
|
|
274
|
+
};
|
|
275
|
+
setter?: {
|
|
276
|
+
isPrivate: boolean;
|
|
277
|
+
};
|
|
278
|
+
};
|
|
279
|
+
constructor(def: RawPropertyDefinition);
|
|
280
|
+
}
|
|
281
|
+
export { PropertyDefinition_2 as PropertyDefinition }
|
|
282
|
+
|
|
283
|
+
export declare const PropertyWrapper: IPropertyWrapper;
|
|
284
|
+
|
|
285
|
+
export declare interface RawClassDefinition {
|
|
286
|
+
name: string;
|
|
287
|
+
superClassName?: string;
|
|
288
|
+
implementations?: string[];
|
|
289
|
+
methods?: RawMethodDefinition[];
|
|
290
|
+
properties?: RawPropertyDefinition[];
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export declare interface RawEnumDefinition {
|
|
294
|
+
name: string;
|
|
295
|
+
members: {
|
|
296
|
+
name: string;
|
|
297
|
+
initializer: string | undefined;
|
|
298
|
+
}[];
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
export declare interface RawInterfaceDefinition {
|
|
302
|
+
name: string;
|
|
303
|
+
implementations?: string[];
|
|
304
|
+
methods?: RawMethodDefinition[];
|
|
305
|
+
properties?: RawPropertyDefinition[];
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export declare interface RawMethodDefinition {
|
|
309
|
+
name: string;
|
|
310
|
+
isPrivate?: boolean;
|
|
311
|
+
isStatic?: boolean;
|
|
312
|
+
isAsync?: boolean;
|
|
313
|
+
returnType?: RawTypeDef;
|
|
314
|
+
args?: {
|
|
315
|
+
name: string;
|
|
316
|
+
type?: RawTypeDef;
|
|
317
|
+
isOptional: boolean;
|
|
318
|
+
}[];
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
export declare interface RawPropertyDefinition {
|
|
322
|
+
name: string;
|
|
323
|
+
isOptional?: boolean;
|
|
324
|
+
isPrivate?: boolean;
|
|
325
|
+
isStatic?: boolean;
|
|
326
|
+
type?: RawTypeDef;
|
|
327
|
+
accessor?: {
|
|
328
|
+
getter?: {
|
|
329
|
+
isPrivate: boolean;
|
|
330
|
+
};
|
|
331
|
+
setter?: {
|
|
332
|
+
isPrivate: boolean;
|
|
333
|
+
};
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
declare type RawTypeDef = string | RawTypeDefinition;
|
|
338
|
+
|
|
339
|
+
export declare interface RawTypeDefinition {
|
|
340
|
+
arrayElementType?: RawTypeDef;
|
|
341
|
+
literalValue?: unknown;
|
|
342
|
+
typeLiteralMembers?: RawPropertyDefinition[];
|
|
343
|
+
unionMembers?: RawTypeDef[];
|
|
344
|
+
intersectionMembers?: RawTypeDef[];
|
|
345
|
+
isFunction?: boolean;
|
|
346
|
+
tupleMembers?: RawTypeDef[];
|
|
347
|
+
isOptionalInTuple?: boolean;
|
|
348
|
+
isConstructor?: boolean;
|
|
349
|
+
generics?: RawTypeDef[];
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export declare const ReflectClass: ClassDecorator;
|
|
353
|
+
|
|
354
|
+
export declare const ReflectContext: {
|
|
355
|
+
getClassDefinition: typeof getClassDefinition_2;
|
|
356
|
+
getInterfaceDefinition: typeof getInterfaceDefinition_2;
|
|
357
|
+
getEnumDefinition: typeof getEnumDefinition_2;
|
|
358
|
+
getTypeAliasDefinition: typeof getTypeAliasDefinition_2;
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
export declare type ReflectPropertyKey = string | symbol;
|
|
362
|
+
|
|
363
|
+
export declare type ReflectType = StringConstructor | NumberConstructor | BooleanConstructor | ObjectConstructor | ArrayConstructor | FunctionConstructor | AnyConstructorFunction;
|
|
364
|
+
|
|
365
|
+
export declare const ReflectValidate: MethodDecorator;
|
|
366
|
+
|
|
367
|
+
export declare function registerMappable<T extends Mappable>(mappableClass: Class<T>): void;
|
|
368
|
+
|
|
369
|
+
export declare function registerSerializedProperty(target: AnyObject, propName: string, options: SerializedOptions<Any>): void;
|
|
370
|
+
|
|
371
|
+
export declare function registerTransform<T>(clazz: Class<T>, transform: JsonValueTransform<T>): void;
|
|
372
|
+
|
|
373
|
+
export declare function safeCall(target: object, methodName: string, ...args: unknown[]): unknown;
|
|
374
|
+
|
|
375
|
+
export declare function safeSetValue(target: object, propName: string, value: unknown): void;
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* serialize an object to json string
|
|
379
|
+
*/
|
|
380
|
+
export declare function serialize<T>(value: T): string;
|
|
381
|
+
|
|
382
|
+
export declare function Serialized<T extends object>(options?: SerializedOptions<T>): PropertyDecorator;
|
|
383
|
+
|
|
384
|
+
export declare const SerializedClass: PropertyDecorator;
|
|
385
|
+
|
|
386
|
+
export declare function SerializedName(serializedName: string): PropertyDecorator;
|
|
387
|
+
|
|
388
|
+
declare type SerializedOptions<T> = {
|
|
389
|
+
name?: string;
|
|
390
|
+
class?: Class<T>;
|
|
391
|
+
fromJSON?: FromJSON<T>;
|
|
392
|
+
toJSON?: ToJSON<T>;
|
|
393
|
+
};
|
|
394
|
+
|
|
395
|
+
export declare function serializeTo<T>(value: T): JsonValue;
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* convert an object to data object
|
|
399
|
+
*/
|
|
400
|
+
export declare function serializeToData<T extends object>(object: T): JsonObject | JsonObject[];
|
|
401
|
+
|
|
402
|
+
export declare function setAnyValue<T>(target: Any, field: string | number | symbol, value: T): void;
|
|
403
|
+
|
|
404
|
+
export declare function setDefaultIgnored(clazz: Class<Any>, defaultIgnored: boolean): void;
|
|
405
|
+
|
|
406
|
+
declare type ToJSON<T> = (obj: T) => JsonValue;
|
|
407
|
+
|
|
408
|
+
export declare type Type = string | {
|
|
409
|
+
array: Type;
|
|
410
|
+
} | {
|
|
411
|
+
union: Type[];
|
|
412
|
+
} | {
|
|
413
|
+
intersection: Type[];
|
|
414
|
+
} | {
|
|
415
|
+
tuple: Type[];
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
export declare interface TypeDefinition {
|
|
419
|
+
name?: string;
|
|
420
|
+
arrayElementType?: TypeDefinition;
|
|
421
|
+
literalValue?: string;
|
|
422
|
+
typeLiteralMembers?: PropertyDefinition_2[];
|
|
423
|
+
unionMembers?: TypeDefinition[];
|
|
424
|
+
intersectionMembers?: TypeDefinition[];
|
|
425
|
+
isFunction?: boolean;
|
|
426
|
+
tupleMembers?: TypeDefinition[];
|
|
427
|
+
isOptionalInTuple?: boolean;
|
|
428
|
+
isConstructor?: boolean;
|
|
429
|
+
generics?: TypeDefinition[];
|
|
430
|
+
classDefinition?: ClassDefinition;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
export declare function validateArray<T extends object>(array: T[], typeName?: string, depth?: number): ValidateResult;
|
|
434
|
+
|
|
435
|
+
export declare function validateDictionary<T extends object>(dict: Dictionary_2<T>, typeName?: string, depth?: number): ValidateResult;
|
|
436
|
+
|
|
437
|
+
export declare function validateFunctionArgument(args: {
|
|
438
|
+
funcName: string;
|
|
439
|
+
optionsObj?: object;
|
|
440
|
+
value?: unknown;
|
|
441
|
+
argName: string;
|
|
442
|
+
type: string;
|
|
443
|
+
optional?: boolean;
|
|
444
|
+
}): void;
|
|
445
|
+
|
|
446
|
+
export declare function validateInstance<T extends object>(instance: T, typeName?: string, depth?: number): ValidateResult;
|
|
447
|
+
|
|
448
|
+
declare interface ValidateResult {
|
|
449
|
+
success: boolean;
|
|
450
|
+
errorMessage?: string;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
export declare function validateValue(value: unknown, type: TypeDefinition, depth?: number): ValidateResult;
|
|
454
|
+
|
|
455
|
+
export { }
|