ts-ref-kit 1.0.6 → 1.0.7
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/parser/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var L=(e,n,s)=>new Promise((i,f)=>{var r=m=>{try{w(s.next(m))}catch(D){f(D)}},l=m=>{try{w(s.throw(m))}catch(D){f(D)}},w=m=>m.done?i(m.value):Promise.resolve(m.value).then(r,l);w((s=s.apply(e,n)).next())});import J from"typescript";import*as t from"typescript";import*as E from"fs";import*as C from"process";import*as x from"path";var fe=!0,O=new Map,K=new Map,j=new Map,A=new Map,q=new Map,v=new Set,B={[t.SyntaxKind.BooleanKeyword]:"boolean",[t.SyntaxKind.StringKeyword]:"string",[t.SyntaxKind.BigIntKeyword]:"bigint",[t.SyntaxKind.NumberKeyword]:"number",[t.SyntaxKind.SymbolKeyword]:"symbol",[t.SyntaxKind.VoidKeyword]:"void",[t.SyntaxKind.UndefinedKeyword]:"undefined",[t.SyntaxKind.UnknownKeyword]:"unknown",[t.SyntaxKind.AnyKeyword]:"any",[t.SyntaxKind.ObjectKeyword]:"object"},P="any",H=["string","number","boolean","bigint","symbol"],X=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],Y=["Mappable","EnableReflect"];[...H,...X,...Y].forEach(se);Y.forEach(e=>K.set(e,{name:e}));var k,G=!1,R=Reflect;function xe(i,f){return L(this,arguments,function*(e,n,s=C.cwd()){if(s=x.resolve(s),R.__classes===void 0){e=ae(e),U(e,n),R.__classes={};for(let[r,l]of O)R.__classes[r]=l;R.__interfaces={};for(let[r,l]of K)R.__interfaces[r]=l;R.__typeAliases={};for(let[r,l]of A)R.__typeAliases[r]=l;R.__constTypes={};for(let[r,l]of q)R.__constTypes[r]=l;yield Promise.all(e.map(r=>Z(r,s)))}})}function Z(e,n){return L(this,null,function*(){if(!E.existsSync(e))return;if(E.statSync(e).isDirectory()){E.readdirSync(e).forEach(r=>{Z(x.join(e,r),n)});return}let i=yield import(x.join(n,e).replace(/\.ts$/,".js"));R.__classDef={},Object.values(i).forEach(f=>{typeof f=="function"&&(R.__classDef[f.name]=f)})})}function U(e,n){if(e||(e=[C.cwd()]),e=ae(e),!G){let s=ee(e,n),i=t.createProgram(s,{});k=i.getTypeChecker(),s=s.map(r=>Q(r)),i.getSourceFiles().filter(r=>s.includes(Q(r.fileName))).forEach(r=>{b(`parse file: ${r.fileName}`),te(r)});for(let r of v.keys())!O.has(r)&&!K.has(r)&&!j.has(r)&&!A.has(r)&&!H.includes(r)&&!X.includes(r)&&(b(`remove unknown typeName: ${r}`),v.delete(r));Array.from(O.values()).forEach(ge),Array.from(K.values()).forEach(Te),[O,K,A].forEach(De),G=!0}return{classDefinitions:O,interfaceDefinitions:K,enumDefinitions:j,typeAliasDefinitions:A,constTypeDefinitions:q}}function ee(e,n){let s=[];return e.forEach(i=>{if(i=x.resolve(i),we(i,n)){b(`ignore excluded ${i}`);return}if(!E.existsSync(i)){console.error(`Path ${i} does not exist.`);return}if(E.statSync(i).isFile()){s.push(i);return}E.readdirSync(i).forEach(l=>s.push(...ee([x.join(i,l)],n)))}),s}function te(e){t.isClassDeclaration(e)?ce(e):t.isInterfaceDeclaration(e)?le(e):t.isEnumDeclaration(e)?pe(e):t.isTypeAliasDeclaration(e)?ue(e):t.isConstTypeReference(e)?me(e):e.forEachChild(te)}function ce(e){var w,m,D,S,u,T,M,$,y,a,d,h;let n=o(e.name);if(!n)return;let s=o((D=(m=(w=e.heritageClauses)==null?void 0:w.find(c=>c.token===t.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:D[0].expression),i=(u=(S=e.heritageClauses)==null?void 0:S.find(c=>c.token===t.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(c=>o(c.expression)),f=[],r=[];for(let c of e.members)if(t.isPropertyDeclaration(c))f.push({name:o(c.name),isOptional:c.questionToken!==void 0,type:g(c),isPrivate:(T=c.modifiers)==null?void 0:T.some(p=>p.kind===t.SyntaxKind.PrivateKeyword),isStatic:(M=c.modifiers)==null?void 0:M.some(p=>p.kind===t.SyntaxKind.StaticKeyword)});else if(t.isMethodDeclaration(c))r.push({name:o(c.name),returnType:g(c),isPrivate:($=c.modifiers)==null?void 0:$.some(p=>p.kind===t.SyntaxKind.PrivateKeyword),isStatic:(y=c.modifiers)==null?void 0:y.some(p=>p.kind===t.SyntaxKind.StaticKeyword),isAsync:(a=c.modifiers)==null?void 0:a.some(p=>p.kind===t.SyntaxKind.AsyncKeyword),args:c.parameters.map(p=>({name:o(p.name),type:g(p),isOptional:p.questionToken!==void 0}))});else if(t.isGetAccessorDeclaration(c)){let p=f.find(N=>N.name===o(c.name));p||(p={name:o(c.name),isOptional:c.questionToken===void 0,type:g(c)},f.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((d=c.modifiers)==null?void 0:d.some(N=>N.kind===t.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(t.isSetAccessorDeclaration(c)){let p=f.find(N=>N.name===o(c.name));p||(p={name:o(c.name),isOptional:c.questionToken===void 0,type:g(c)},f.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((h=c.modifiers)==null?void 0:h.some(N=>N.kind===t.SyntaxKind.PrivateKeyword))||!1}}let l={name:n,superClassName:s,implementations:i,properties:f,methods:r};b(`Define class: ${o(e.name)}`),O.set(n,l)}function le(e){var w,m,D,S;let n=o(e.name);if(!n)return;let s=((m=(w=e.heritageClauses)==null?void 0:w.find(u=>u.token===t.SyntaxKind.ExtendsKeyword))==null?void 0:m.types.map(u=>o(u.expression)))||[],i=[],f=[],r;for(let u of e.members)t.isPropertySignature(u)?i.push({name:o(u.name),isOptional:u.questionToken!==void 0,type:g(u),isPrivate:((D=u.modifiers)==null?void 0:D.some(T=>T.kind===t.SyntaxKind.PrivateKeyword))||!1}):t.isMethodSignature(u)?f.push({name:u.name.text,returnType:g(u),isPrivate:((S=u.modifiers)==null?void 0:S.some(T=>T.kind===t.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(T=>({name:o(T.name),type:g(T),isOptional:T.questionToken!==void 0}))}):t.isIndexSignatureDeclaration(u)&&(r=g(u));let l=K.get(n);l?(l.implementations=I(l.implementations||[],s),l.methods=I(l.methods||[],f,(u,T)=>u.name===T.name),l.properties=I(l.properties||[],i,(u,T)=>u.name===T.name),l.indexElementType=r,b(`Merge interface ${o(e.name)}`)):(l={name:n,implementations:s,methods:f,properties:i,indexElementType:r},K.set(n,l),b(`Define interface ${o(e.name)}`))}function pe(e){let n=o(e.name);n&&(j.set(n,{name:n,members:e.members.map(s=>({name:o(s.name),initializer:o(s.initializer)}))}),b(`Define enum: ${o(e.name)}`))}function ue(e){b(`Define typeAlias: ${o(e.name)}`),A.set(o(e.name),g(e))}function me(e){let n=e.parent.parent;t.isVariableDeclaration(n)&&n.initializer&&t.isAsExpression(n.initializer)&&q.set(o(n.name),ne(n.initializer.expression))}function ne(e){return t.isArrayLiteralExpression(e)?ye(e):t.isObjectLiteralExpression(e)?de(e):t.isNumericLiteral(e)?"number":t.isStringLiteral(e)?"string":t.isBigIntLiteral(e)?"bigint":[t.SyntaxKind.TrueKeyword,t.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":P}function ye(e){let n=[];return e.elements.forEach(s=>{if(t.isStringLiteral(s))return n.push(o(s))}),n.length===0?P:n.length===1?n[0]:{unionMembers:n}}function de(e){let n=[];return e.properties.map(s=>{t.isPropertyAssignment(s)?n.push({name:o(s.name),type:ne(s.initializer)}):b(`unsupported property: ${s.name}`)}),{typeLiteralMembers:n}}function se(e){v.add(e)}function g(e,n=!1){if(e.type&&!n)return _(e.type);if(!k)return console.error("TypeChecker not initialized!"),P;let s=k.getTypeAtLocation(e),i=k.typeToTypeNode(s,void 0,void 0);return i?_("type"in i?i.type:i):P}function _(e){let n={};if(e===void 0)return P;if(t.isUnionTypeNode(e))n.unionMembers=e.types.map(_);else if(t.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(_);else if(t.isLiteralTypeNode(e))n.literalValue=o(e.literal);else if(t.isTypeLiteralNode(e)){let s=[];e.members.forEach(i=>{t.isPropertySignature(i)?s.push({name:o(i.name),isOptional:i.questionToken!==void 0,type:g(i)}):t.isIndexSignatureDeclaration(i)?n.indexElementType=g(i):s.push({name:o(i.name)||"",isOptional:i.questionToken!==void 0,type:_()})}),n.typeLiteralMembers=s}else if(t.isArrayTypeNode(e))n.arrayElementType=_(e.elementType);else if(t.isFunctionTypeNode(e))n.isFunction=!0;else if(t.isTypeReferenceNode(e))if(se(o(e.typeName)),e.typeArguments)n.generics=[o(e.typeName),...e.typeArguments.map(s=>_(s))];else return o(e.typeName);else{if(t.isIndexedAccessTypeNode(e))return g(e,!0);if(t.isThisTypeNode(e))return g(e);if(t.isParenthesizedTypeNode(e))return g(e);if(t.isConditionalTypeNode(e))return g(e);if(t.isTypeQueryNode(e))return g(e);if(t.isConstructorTypeNode(e))n.isConstructor=!0;else if(t.isTupleTypeNode(e))n.tupleMembers=e.elements.map(_);else{if(Object.keys(B).includes(String(e.kind)))return B[e.kind]||P;if(t.isOptionalTypeNode(e))Object.assign(n,g(e)),n.isOptionalInTuple=!0;else if(t.isNamedTupleMember(e))Object.assign(n,g(e));else return t.isTypeOperatorNode(e)&&e.operator===t.SyntaxKind.KeyOfKeyword,g(e,!0)}}return n}var I=(e,n,s)=>[...(e==null?void 0:e.filter(i=>!(n!=null&&n.some(f=>(s||(()=>f===i))(f,i)))))||[],...n||[]];function F(e){if(e!==void 0&&e!==P)return typeof e=="string"?v.has(e)?e:void 0:e}function ge(e){var n,s;(n=e.methods)==null||n.forEach(re),(s=e.properties)==null||s.forEach(ie)}function Te(e){var n,s;(n=e.methods)==null||n.forEach(re),(s=e.properties)==null||s.forEach(ie)}function ie(e){e.type=F(e.type)}function re(e){var n;(n=e.args)==null||n.forEach(s=>s.type=F(s.type)),e.returnType=F(e.returnType)}function o(e){if(!e)return e;if(e.end<0)return e.text;try{return t.isQualifiedName(e)?o(e.right):e.getText()}catch(n){return e.text}}function z(e){e&&Object.entries(e).forEach(n=>{let[s,i]=n;i instanceof Array&&i.length===0||i===!1||i===void 0?delete e[s]:i.constructor===Array?i.forEach(z):i.constructor===Object&&z(i)})}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(s=>(s instanceof RegExp||(s=new RegExp(s.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(s)))):!1}function Q(e,n=C.cwd()){return W(e).replace(W(n)+"/","")}function W(e){let n=x.sep;return e.split(n).join("/")}function ae(e){return e instanceof Array?e:[e]}function b(e){fe&&console.log(e)}function V(e,n){let s=f=>{let r=e.replace(/\\/g,"/"),l=f.replace(/\\/g,"/");l=l.replace(/\*\*/g,"<<double_star>>");let m=l.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!f.startsWith("/")&&!f.startsWith("*")&&(m=".*"+m),m="^"+m+"$",new RegExp(m).test(r)};return(n instanceof Array?n:[n]).some(s)}function oe(e){let{sourcePaths:n,exclude:s,forEnabledClassOnly:i}=e;if(!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:f,interfaceDefinitions:r,enumDefinitions:l,typeAliasDefinitions:w}=U(n,s),m=[],D=[];function S(y){let a=f.get(y),d=[];return a?(a.superClassName&&d.push(a.superClassName),d.push(...a.implementations||[])):(a=r.get(y),a?d.push(...a.implementations||[]):(a=w.get(y),a&&d.push(...a.implementations||[]))),d.flatMap(h=>[h,...S(h)])||[]}function u(y,a){return S(y.name).includes(a)}function T(y){if(J.isClassDeclaration(y)&&y.name!==void 0){let a=y.name.text,d=f.get(a);if(!a||!d||i&&!u(d,"EnableReflect"))return;D.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${a} })`);return}y.forEachChild(T)}function M(){let y=[];return f.forEach((a,d)=>{i&&!u(a,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${d}: ${JSON.stringify(a)} })`)}),r.forEach((a,d)=>{i&&!u(a,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${d}: ${JSON.stringify(a)} })`)}),l.forEach((a,d)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${d}: ${JSON.stringify(a)} })`)}),w.forEach((a,d)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${d}: ${JSON.stringify(a)} })`)}),y.join(`
|
|
2
|
-
`)}return{outputAllMetas:M,transform:(y,a)=>{let d=(typeof n=="string"?[n]:n).map(h=>h+"/**.ts");if(V(a,d))try{let h=J.createSourceFile(a,y,J.ScriptTarget.Latest,!1);return m.length=0,D.length=0,T(h),`${m.join(";")};${y};${D.join(";")}`}catch(h){return console.error(`[reflect-parser-plugin] Error processing ${a}:`,h),null}}}}var he=process.cwd().replace(/\\/g,"/")+"/";function
|
|
3
|
-
${
|
|
1
|
+
var L=(e,n,t)=>new Promise((s,f)=>{var r=m=>{try{w(t.next(m))}catch(D){f(D)}},l=m=>{try{w(t.throw(m))}catch(D){f(D)}},w=m=>m.done?s(m.value):Promise.resolve(m.value).then(r,l);w((t=t.apply(e,n)).next())});import J from"typescript";import i from"typescript";import*as E from"fs";import*as C from"process";import*as x from"path";var fe=!0,O=new Map,K=new Map,j=new Map,A=new Map,q=new Map,v=new Set,B={[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"},P="any",H=["string","number","boolean","bigint","symbol"],X=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],Y=["Mappable","EnableReflect"];[...H,...X,...Y].forEach(ie);Y.forEach(e=>K.set(e,{name:e}));var k,G=!1,R=Reflect;function be(s,f){return L(this,arguments,function*(e,n,t=C.cwd()){if(t=x.resolve(t),R.__classes===void 0){e=ae(e),U(e,n),R.__classes={};for(let[r,l]of O)R.__classes[r]=l;R.__interfaces={};for(let[r,l]of K)R.__interfaces[r]=l;R.__typeAliases={};for(let[r,l]of A)R.__typeAliases[r]=l;R.__constTypes={};for(let[r,l]of q)R.__constTypes[r]=l;yield Promise.all(e.map(r=>Z(r,t)))}})}function Z(e,n){return L(this,null,function*(){if(!E.existsSync(e))return;if(E.statSync(e).isDirectory()){E.readdirSync(e).forEach(r=>{Z(x.join(e,r),n)});return}let s=yield import(x.join(n,e).replace(/\.ts$/,".js"));R.__classDef={},Object.values(s).forEach(f=>{typeof f=="function"&&(R.__classDef[f.name]=f)})})}function U(e,n){if(e||(e=[C.cwd()]),e=ae(e),!G){let t=ee(e,n),s=i.createProgram(t,{});k=s.getTypeChecker(),t=t.map(r=>Q(r)),s.getSourceFiles().filter(r=>t.includes(Q(r.fileName))).forEach(r=>{b(`parse file: ${r.fileName}`),ne(r)});for(let r of v.keys())!O.has(r)&&!K.has(r)&&!j.has(r)&&!A.has(r)&&!H.includes(r)&&!X.includes(r)&&(b(`remove unknown typeName: ${r}`),v.delete(r));Array.from(O.values()).forEach(ge),Array.from(K.values()).forEach(Te),[O,K,A].forEach(De),G=!0}return{classDefinitions:O,interfaceDefinitions:K,enumDefinitions:j,typeAliasDefinitions:A,constTypeDefinitions:q}}function ee(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(l=>t.push(...ee([x.join(s,l)],n)))}),t}function ne(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(ne)}function ce(e){var w,m,D,S,u,T,M,$,y,a,d,h;let n=o(e.name);if(!n)return;let t=o((D=(m=(w=e.heritageClauses)==null?void 0:w.find(c=>c.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:D[0].expression),s=(u=(S=e.heritageClauses)==null?void 0:S.find(c=>c.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(c=>o(c.expression)),f=[],r=[];for(let c of e.members)if(i.isPropertyDeclaration(c))f.push({name:o(c.name),isOptional:c.questionToken!==void 0,type:g(c),isPrivate:(T=c.modifiers)==null?void 0:T.some(p=>p.kind===i.SyntaxKind.PrivateKeyword),isStatic:(M=c.modifiers)==null?void 0:M.some(p=>p.kind===i.SyntaxKind.StaticKeyword)});else if(i.isMethodDeclaration(c))r.push({name:o(c.name),returnType:g(c),isPrivate:($=c.modifiers)==null?void 0:$.some(p=>p.kind===i.SyntaxKind.PrivateKeyword),isStatic:(y=c.modifiers)==null?void 0:y.some(p=>p.kind===i.SyntaxKind.StaticKeyword),isAsync:(a=c.modifiers)==null?void 0:a.some(p=>p.kind===i.SyntaxKind.AsyncKeyword),args:c.parameters.map(p=>({name:o(p.name),type:g(p),isOptional:p.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(c)){let p=f.find(N=>N.name===o(c.name));p||(p={name:o(c.name),isOptional:c.questionToken===void 0,type:g(c)},f.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((d=c.modifiers)==null?void 0:d.some(N=>N.kind===i.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(c)){let p=f.find(N=>N.name===o(c.name));p||(p={name:o(c.name),isOptional:c.questionToken===void 0,type:g(c)},f.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((h=c.modifiers)==null?void 0:h.some(N=>N.kind===i.SyntaxKind.PrivateKeyword))||!1}}let l={name:n,superClassName:t,implementations:s,properties:f,methods:r};b(`Define class: ${o(e.name)}`),O.set(n,l)}function le(e){var w,m,D,S;let n=o(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=>o(u.expression)))||[],s=[],f=[],r;for(let u of e.members)i.isPropertySignature(u)?s.push({name:o(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)?f.push({name:u.name.text,returnType:g(u),isPrivate:((S=u.modifiers)==null?void 0:S.some(T=>T.kind===i.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(T=>({name:o(T.name),type:g(T),isOptional:T.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(u)&&(r=g(u));let l=K.get(n);l?(l.implementations=I(l.implementations||[],t),l.methods=I(l.methods||[],f,(u,T)=>u.name===T.name),l.properties=I(l.properties||[],s,(u,T)=>u.name===T.name),l.indexElementType=r,b(`Merge interface ${o(e.name)}`)):(l={name:n,implementations:t,methods:f,properties:s,indexElementType:r},K.set(n,l),b(`Define interface ${o(e.name)}`))}function pe(e){let n=o(e.name);n&&(j.set(n,{name:n,members:e.members.map(t=>({name:o(t.name),initializer:o(t.initializer)}))}),b(`Define enum: ${o(e.name)}`))}function ue(e){b(`Define typeAlias: ${o(e.name)}`),A.set(o(e.name),g(e))}function me(e){let n=e.parent.parent;i.isVariableDeclaration(n)&&n.initializer&&i.isAsExpression(n.initializer)&&q.set(o(n.name),te(n.initializer.expression))}function te(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":P}function ye(e){let n=[];return e.elements.forEach(t=>{if(i.isStringLiteral(t))return n.push(o(t))}),n.length===0?P:n.length===1?n[0]:{unionMembers:n}}function de(e){let n=[];return e.properties.map(t=>{i.isPropertyAssignment(t)?n.push({name:o(t.name),type:te(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function ie(e){v.add(e)}function g(e,n=!1){if(e.type&&!n)return _(e.type);if(!k)return console.error("TypeChecker not initialized!"),P;let t=k.getTypeAtLocation(e),s=k.typeToTypeNode(t,void 0,void 0);return s?_("type"in s?s.type:s):P}function _(e){let n={};if(e===void 0)return P;if(i.isUnionTypeNode(e))n.unionMembers=e.types.map(_);else if(i.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(_);else if(i.isLiteralTypeNode(e))n.literalValue=o(e.literal);else if(i.isTypeLiteralNode(e)){let t=[];e.members.forEach(s=>{i.isPropertySignature(s)?t.push({name:o(s.name),isOptional:s.questionToken!==void 0,type:g(s)}):i.isIndexSignatureDeclaration(s)?n.indexElementType=g(s):t.push({name:o(s.name)||"",isOptional:s.questionToken!==void 0,type:_()})}),n.typeLiteralMembers=t}else if(i.isArrayTypeNode(e))n.arrayElementType=_(e.elementType);else if(i.isFunctionTypeNode(e))n.isFunction=!0;else if(i.isTypeReferenceNode(e))if(ie(o(e.typeName)),e.typeArguments)n.generics=[o(e.typeName),...e.typeArguments.map(t=>_(t))];else return o(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(_);else{if(Object.keys(B).includes(String(e.kind)))return B[e.kind]||P;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(f=>(t||(()=>f===s))(f,s)))))||[],...n||[]];function F(e){if(e!==void 0&&e!==P)return typeof e=="string"?v.has(e)?e:void 0:e}function ge(e){var n,t;(n=e.methods)==null||n.forEach(re),(t=e.properties)==null||t.forEach(se)}function Te(e){var n,t;(n=e.methods)==null||n.forEach(re),(t=e.properties)==null||t.forEach(se)}function se(e){e.type=F(e.type)}function re(e){var n;(n=e.args)==null||n.forEach(t=>t.type=F(t.type)),e.returnType=F(e.returnType)}function o(e){if(!e)return e;if(e.end<0)return e.text;try{return i.isQualifiedName(e)?o(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 Q(e,n=C.cwd()){return W(e).replace(W(n)+"/","")}function W(e){let n=x.sep;return e.split(n).join("/")}function ae(e){return e instanceof Array?e:[e]}function b(e){fe&&console.log(e)}function V(e,n){let t=f=>{let r=e.replace(/\\/g,"/"),l=f.replace(/\\/g,"/");l=l.replace(/\*\*/g,"<<double_star>>");let m=l.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!f.startsWith("/")&&!f.startsWith("*")&&(m=".*"+m),m="^"+m+"$",new RegExp(m).test(r)};return(n instanceof Array?n:[n]).some(t)}function oe(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:s}=e;if(!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:f,interfaceDefinitions:r,enumDefinitions:l,typeAliasDefinitions:w}=U(n,t),m=[],D=[];function S(y){let a=f.get(y),d=[];return a?(a.superClassName&&d.push(a.superClassName),d.push(...a.implementations||[])):(a=r.get(y),a?d.push(...a.implementations||[]):(a=w.get(y),a&&d.push(...a.implementations||[]))),d.flatMap(h=>[h,...S(h)])||[]}function u(y,a){return S(y.name).includes(a)}function T(y){if(J.isClassDeclaration(y)&&y.name!==void 0){let a=y.name.text,d=f.get(a);if(!a||!d||s&&!u(d,"EnableReflect"))return;D.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${a} })`);return}y.forEachChild(T)}function M(){let y=[];return f.forEach((a,d)=>{s&&!u(a,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${d}: ${JSON.stringify(a)} })`)}),r.forEach((a,d)=>{s&&!u(a,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${d}: ${JSON.stringify(a)} })`)}),l.forEach((a,d)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${d}: ${JSON.stringify(a)} })`)}),w.forEach((a,d)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${d}: ${JSON.stringify(a)} })`)}),y.join(`
|
|
2
|
+
`)}return{outputAllMetas:M,transform:(y,a)=>{let d=(typeof n=="string"?[n]:n).map(h=>h+"/**.ts");if(V(a,d))try{let h=J.createSourceFile(a,y,J.ScriptTarget.Latest,!1);return m.length=0,D.length=0,T(h),`${m.join(";")};${y};${D.join(";")}`}catch(h){return console.error(`[reflect-parser-plugin] Error processing ${a}:`,h),null}}}}var he=process.cwd().replace(/\\/g,"/")+"/";function $e(e){let n=oe(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,s)=>(s=s.replace(he,""),s===e.entry?`${n.outputAllMetas()}
|
|
3
|
+
${t}`:n.transform(t,s))}}export{U as parseSource,oe as reflectLoader,$e as reflectParserPlugin,be as setupReflectTypes,Z as updateReflectModules};
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var pe=Object.create;var v=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,de=Object.prototype.hasOwnProperty;var ge=(e,t)=>{for(var s in t)v(e,s,{get:t[s],enumerable:!0})},H=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of me(t))!de.call(e,a)&&a!==s&&v(e,a,{get:()=>t[a],enumerable:!(i=ue(t,a))||i.enumerable});return e};var A=(e,t,s)=>(s=e!=null?pe(ye(e)):{},H(t||!e||!e.__esModule?v(s,"default",{value:e,enumerable:!0}):s,e)),Te=e=>H(v({},"__esModule",{value:!0}),e);var z=(e,t,s)=>new Promise((i,a)=>{var r=m=>{try{w(s.next(m))}catch(D){a(D)}},l=m=>{try{w(s.throw(m))}catch(D){a(D)}},w=m=>m.done?i(m.value):Promise.resolve(m.value).then(r,l);w((s=s.apply(e,t)).next())});var ke={};ge(ke,{parseSource:()=>I,reflectLoader:()=>W,reflectParserPlugin:()=>Me,setupReflectTypes:()=>we,updateReflectModules:()=>G});module.exports=Te(ke);var j=A(require("typescript"),1);var n=A(require("typescript"),1),E=A(require("fs"),1),L=A(require("process"),1),x=A(require("path"),1);var De=!0,O=new Map,K=new Map,U=new Map,M=new Map,B=new Map,$=new Set,X={[n.SyntaxKind.BooleanKeyword]:"boolean",[n.SyntaxKind.StringKeyword]:"string",[n.SyntaxKind.BigIntKeyword]:"bigint",[n.SyntaxKind.NumberKeyword]:"number",[n.SyntaxKind.SymbolKeyword]:"symbol",[n.SyntaxKind.VoidKeyword]:"void",[n.SyntaxKind.UndefinedKeyword]:"undefined",[n.SyntaxKind.UnknownKeyword]:"unknown",[n.SyntaxKind.AnyKeyword]:"any",[n.SyntaxKind.ObjectKeyword]:"object"},P="any",te=["string","number","boolean","bigint","symbol"],ne=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],se=["Mappable","EnableReflect"];[...te,...ne,...se].forEach(oe);se.forEach(e=>K.set(e,{name:e}));var C,Y=!1,R=Reflect;function we(i,a){return z(this,arguments,function*(e,t,s=L.cwd()){if(s=x.resolve(s),R.__classes===void 0){e=le(e),I(e,t),R.__classes={};for(let[r,l]of O)R.__classes[r]=l;R.__interfaces={};for(let[r,l]of K)R.__interfaces[r]=l;R.__typeAliases={};for(let[r,l]of M)R.__typeAliases[r]=l;R.__constTypes={};for(let[r,l]of B)R.__constTypes[r]=l;yield Promise.all(e.map(r=>G(r,s)))}})}function G(e,t){return z(this,null,function*(){if(!E.existsSync(e))return;if(E.statSync(e).isDirectory()){E.readdirSync(e).forEach(r=>{G(x.join(e,r),t)});return}let i=yield import(x.join(t,e).replace(/\.ts$/,".js"));R.__classDef={},Object.values(i).forEach(a=>{typeof a=="function"&&(R.__classDef[a.name]=a)})})}function I(e,t){if(e||(e=[L.cwd()]),e=le(e),!Y){let s=ie(e,t),i=n.createProgram(s,{});C=i.getTypeChecker(),s=s.map(r=>Z(r)),i.getSourceFiles().filter(r=>s.includes(Z(r.fileName))).forEach(r=>{b(`parse file: ${r.fileName}`),re(r)});for(let r of $.keys())!O.has(r)&&!K.has(r)&&!U.has(r)&&!M.has(r)&&!te.includes(r)&&!ne.includes(r)&&(b(`remove unknown typeName: ${r}`),$.delete(r));Array.from(O.values()).forEach(Ke),Array.from(K.values()).forEach(Ne),[O,K,M].forEach(Pe),Y=!0}return{classDefinitions:O,interfaceDefinitions:K,enumDefinitions:U,typeAliasDefinitions:M,constTypeDefinitions:B}}function ie(e,t){let s=[];return e.forEach(i=>{if(i=x.resolve(i),Oe(i,t)){b(`ignore excluded ${i}`);return}if(!E.existsSync(i)){console.error(`Path ${i} does not exist.`);return}if(E.statSync(i).isFile()){s.push(i);return}E.readdirSync(i).forEach(l=>s.push(...ie([x.join(i,l)],t)))}),s}function re(e){n.isClassDeclaration(e)?he(e):n.isInterfaceDeclaration(e)?Re(e):n.isEnumDeclaration(e)?xe(e):n.isTypeAliasDeclaration(e)?be(e):n.isConstTypeReference(e)?Ee(e):e.forEachChild(re)}function he(e){var w,m,D,S,u,T,k,F,y,o,d,h;let t=f(e.name);if(!t)return;let s=f((D=(m=(w=e.heritageClauses)==null?void 0:w.find(c=>c.token===n.SyntaxKind.ExtendsKeyword))==null?void 0:m.types)==null?void 0:D[0].expression),i=(u=(S=e.heritageClauses)==null?void 0:S.find(c=>c.token===n.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(c=>f(c.expression)),a=[],r=[];for(let c of e.members)if(n.isPropertyDeclaration(c))a.push({name:f(c.name),isOptional:c.questionToken!==void 0,type:g(c),isPrivate:(T=c.modifiers)==null?void 0:T.some(p=>p.kind===n.SyntaxKind.PrivateKeyword),isStatic:(k=c.modifiers)==null?void 0:k.some(p=>p.kind===n.SyntaxKind.StaticKeyword)});else if(n.isMethodDeclaration(c))r.push({name:f(c.name),returnType:g(c),isPrivate:(F=c.modifiers)==null?void 0:F.some(p=>p.kind===n.SyntaxKind.PrivateKeyword),isStatic:(y=c.modifiers)==null?void 0:y.some(p=>p.kind===n.SyntaxKind.StaticKeyword),isAsync:(o=c.modifiers)==null?void 0:o.some(p=>p.kind===n.SyntaxKind.AsyncKeyword),args:c.parameters.map(p=>({name:f(p.name),type:g(p),isOptional:p.questionToken!==void 0}))});else if(n.isGetAccessorDeclaration(c)){let p=a.find(N=>N.name===f(c.name));p||(p={name:f(c.name),isOptional:c.questionToken===void 0,type:g(c)},a.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((d=c.modifiers)==null?void 0:d.some(N=>N.kind===n.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(n.isSetAccessorDeclaration(c)){let p=a.find(N=>N.name===f(c.name));p||(p={name:f(c.name),isOptional:c.questionToken===void 0,type:g(c)},a.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((h=c.modifiers)==null?void 0:h.some(N=>N.kind===n.SyntaxKind.PrivateKeyword))||!1}}let l={name:t,superClassName:s,implementations:i,properties:a,methods:r};b(`Define class: ${f(e.name)}`),O.set(t,l)}function Re(e){var w,m,D,S;let t=f(e.name);if(!t)return;let s=((m=(w=e.heritageClauses)==null?void 0:w.find(u=>u.token===n.SyntaxKind.ExtendsKeyword))==null?void 0:m.types.map(u=>f(u.expression)))||[],i=[],a=[],r;for(let u of e.members)n.isPropertySignature(u)?i.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===n.SyntaxKind.PrivateKeyword))||!1}):n.isMethodSignature(u)?a.push({name:u.name.text,returnType:g(u),isPrivate:((S=u.modifiers)==null?void 0:S.some(T=>T.kind===n.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(T=>({name:f(T.name),type:g(T),isOptional:T.questionToken!==void 0}))}):n.isIndexSignatureDeclaration(u)&&(r=g(u));let l=K.get(t);l?(l.implementations=q(l.implementations||[],s),l.methods=q(l.methods||[],a,(u,T)=>u.name===T.name),l.properties=q(l.properties||[],i,(u,T)=>u.name===T.name),l.indexElementType=r,b(`Merge interface ${f(e.name)}`)):(l={name:t,implementations:s,methods:a,properties:i,indexElementType:r},K.set(t,l),b(`Define interface ${f(e.name)}`))}function xe(e){let t=f(e.name);t&&(U.set(t,{name:t,members:e.members.map(s=>({name:f(s.name),initializer:f(s.initializer)}))}),b(`Define enum: ${f(e.name)}`))}function be(e){b(`Define typeAlias: ${f(e.name)}`),M.set(f(e.name),g(e))}function Ee(e){let t=e.parent.parent;n.isVariableDeclaration(t)&&t.initializer&&n.isAsExpression(t.initializer)&&B.set(f(t.name),ae(t.initializer.expression))}function ae(e){return n.isArrayLiteralExpression(e)?Se(e):n.isObjectLiteralExpression(e)?_e(e):n.isNumericLiteral(e)?"number":n.isStringLiteral(e)?"string":n.isBigIntLiteral(e)?"bigint":[n.SyntaxKind.TrueKeyword,n.SyntaxKind.FalseKeyword].includes(e.kind)?"boolean":P}function Se(e){let t=[];return e.elements.forEach(s=>{if(n.isStringLiteral(s))return t.push(f(s))}),t.length===0?P:t.length===1?t[0]:{unionMembers:t}}function _e(e){let t=[];return e.properties.map(s=>{n.isPropertyAssignment(s)?t.push({name:f(s.name),type:ae(s.initializer)}):b(`unsupported property: ${s.name}`)}),{typeLiteralMembers:t}}function oe(e){$.add(e)}function g(e,t=!1){if(e.type&&!t)return _(e.type);if(!C)return console.error("TypeChecker not initialized!"),P;let s=C.getTypeAtLocation(e),i=C.typeToTypeNode(s,void 0,void 0);return i?_("type"in i?i.type:i):P}function _(e){let t={};if(e===void 0)return P;if(n.isUnionTypeNode(e))t.unionMembers=e.types.map(_);else if(n.isIntersectionTypeNode(e))t.intersectionMembers=e.types.map(_);else if(n.isLiteralTypeNode(e))t.literalValue=f(e.literal);else if(n.isTypeLiteralNode(e)){let s=[];e.members.forEach(i=>{n.isPropertySignature(i)?s.push({name:f(i.name),isOptional:i.questionToken!==void 0,type:g(i)}):n.isIndexSignatureDeclaration(i)?t.indexElementType=g(i):s.push({name:f(i.name)||"",isOptional:i.questionToken!==void 0,type:_()})}),t.typeLiteralMembers=s}else if(n.isArrayTypeNode(e))t.arrayElementType=_(e.elementType);else if(n.isFunctionTypeNode(e))t.isFunction=!0;else if(n.isTypeReferenceNode(e))if(oe(f(e.typeName)),e.typeArguments)t.generics=[f(e.typeName),...e.typeArguments.map(s=>_(s))];else return f(e.typeName);else{if(n.isIndexedAccessTypeNode(e))return g(e,!0);if(n.isThisTypeNode(e))return g(e);if(n.isParenthesizedTypeNode(e))return g(e);if(n.isConditionalTypeNode(e))return g(e);if(n.isTypeQueryNode(e))return g(e);if(n.isConstructorTypeNode(e))t.isConstructor=!0;else if(n.isTupleTypeNode(e))t.tupleMembers=e.elements.map(_);else{if(Object.keys(X).includes(String(e.kind)))return X[e.kind]||P;if(n.isOptionalTypeNode(e))Object.assign(t,g(e)),t.isOptionalInTuple=!0;else if(n.isNamedTupleMember(e))Object.assign(t,g(e));else return n.isTypeOperatorNode(e)&&e.operator===n.SyntaxKind.KeyOfKeyword,g(e,!0)}}return t}var q=(e,t,s)=>[...(e==null?void 0:e.filter(i=>!(t!=null&&t.some(a=>(s||(()=>a===i))(a,i)))))||[],...t||[]];function V(e){if(e!==void 0&&e!==P)return typeof e=="string"?$.has(e)?e:void 0:e}function Ke(e){var t,s;(t=e.methods)==null||t.forEach(ce),(s=e.properties)==null||s.forEach(fe)}function Ne(e){var t,s;(t=e.methods)==null||t.forEach(ce),(s=e.properties)==null||s.forEach(fe)}function fe(e){e.type=V(e.type)}function ce(e){var t;(t=e.args)==null||t.forEach(s=>s.type=V(s.type)),e.returnType=V(e.returnType)}function f(e){if(!e)return e;if(e.end<0)return e.text;try{return n.isQualifiedName(e)?f(e.right):e.getText()}catch(t){return e.text}}function J(e){e&&Object.entries(e).forEach(t=>{let[s,i]=t;i instanceof Array&&i.length===0||i===!1||i===void 0?delete e[s]:i.constructor===Array?i.forEach(J):i.constructor===Object&&J(i)})}function Pe(e){for(let t of e.values())J(t)}function Oe(e,t){return t?(t=t instanceof Array?t:[t],t.some(s=>(s instanceof RegExp||(s=new RegExp(s.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(s)))):!1}function Z(e,t=L.cwd()){return ee(e).replace(ee(t)+"/","")}function ee(e){let t=x.sep;return e.split(t).join("/")}function le(e){return e instanceof Array?e:[e]}function b(e){De&&console.log(e)}function Q(e,t){let s=a=>{let r=e.replace(/\\/g,"/"),l=a.replace(/\\/g,"/");l=l.replace(/\*\*/g,"<<double_star>>");let m=l.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!a.startsWith("/")&&!a.startsWith("*")&&(m=".*"+m),m="^"+m+"$",new RegExp(m).test(r)};return(t instanceof Array?t:[t]).some(s)}function W(e){let{sourcePaths:t,exclude:s,forEnabledClassOnly:i}=e;if(!t)throw new Error("need provide source paths for reflect loader");let{classDefinitions:a,interfaceDefinitions:r,enumDefinitions:l,typeAliasDefinitions:w}=I(t,s),m=[],D=[];function S(y){let o=a.get(y),d=[];return o?(o.superClassName&&d.push(o.superClassName),d.push(...o.implementations||[])):(o=r.get(y),o?d.push(...o.implementations||[]):(o=w.get(y),o&&d.push(...o.implementations||[]))),d.flatMap(h=>[h,...S(h)])||[]}function u(y,o){return S(y.name).includes(o)}function T(y){if(j.default.isClassDeclaration(y)&&y.name!==void 0){let o=y.name.text,d=a.get(o);if(!o||!d||i&&!u(d,"EnableReflect"))return;D.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${o} })`);return}y.forEachChild(T)}function k(){let y=[];return a.forEach((o,d)=>{i&&!u(o,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${d}: ${JSON.stringify(o)} })`)}),r.forEach((o,d)=>{i&&!u(o,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${d}: ${JSON.stringify(o)} })`)}),l.forEach((o,d)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${d}: ${JSON.stringify(o)} })`)}),w.forEach((o,d)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${d}: ${JSON.stringify(o)} })`)}),y.join(`
|
|
2
|
-
`)}return{outputAllMetas:k,transform:(y,o)=>{let d=(typeof t=="string"?[t]:t).map(h=>h+"/**.ts");if(Q(o,d))try{let h=j.default.createSourceFile(o,y,j.default.ScriptTarget.Latest,!1);return m.length=0,D.length=0,T(h),`${m.join(";")};${y};${D.join(";")}`}catch(h){return console.error(`[reflect-parser-plugin] Error processing ${o}:`,h),null}}}}var Ae=process.cwd().replace(/\\/g,"/")+"/";function Me(e){let t=W(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(s,i)=>(i=i.replace(Ae,""),i===e.entry?`${t.outputAllMetas()}
|
|
3
|
-
${s}`:t.transform(s,i))}}0&&(module.exports={parseSource,reflectLoader,reflectParserPlugin,setupReflectTypes,updateReflectModules});
|