ts-ref-kit 1.0.28 → 1.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var ue=Object.create;var C=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var ye=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,ge=Object.prototype.hasOwnProperty;var Te=(e,n)=>{for(var t in n)C(e,t,{get:n[t],enumerable:!0})},H=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of ye(n))!ge.call(e,a)&&a!==t&&C(e,a,{get:()=>n[a],enumerable:!(s=me(n,a))||s.enumerable});return e};var A=(e,n,t)=>(t=e!=null?ue(de(e)):{},H(n||!e||!e.__esModule?C(t,"default",{value:e,enumerable:!0}):t,e)),De=e=>H(C({},"__esModule",{value:!0}),e);var z=(e,n,t)=>new Promise((s,a)=>{var l=T=>{try{y(t.next(T))}catch(h){a(h)}},o=T=>{try{y(t.throw(T))}catch(h){a(h)}},y=T=>T.done?s(T.value):Promise.resolve(T.value).then(l,o);y((t=t.apply(e,n)).next())});var ke={};Te(ke,{DEBUG_CONFIG:()=>F,parseSource:()=>I,reflectLoader:()=>W,reflectParserPlugin:()=>Me,setupReflectTypes:()=>he,updateReflectModules:()=>Q});module.exports=De(ke);var j=A(require("typescript"),1);var i=A(require("typescript"),1),E=A(require("fs"),1),k=A(require("process"),1),w=A(require("path"),1),ne=require("url");var F={OUTPUT_LOG:!1},O=new Map,P=new Map,G=new Map,M=new Map,J=new Map,$=new Set,X={[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"},N="any",te=["string","number","boolean","bigint","symbol"],ie=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],se=["Mappable","EnableReflect"];[...te,...ie,...se].forEach(fe);se.forEach(e=>P.set(e,{name:e}));var L,Y=!1,R=Reflect;function he(e){return z(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:s,distFolder:a}=e;if(s=w.resolve(s||k.cwd()),a=w.resolve(a||k.cwd()),R.__classes!==void 0)return;n=pe(n);let l=n.map(o=>w.join(s,o));I(l,t),R.__classes={};for(let[o,y]of O)R.__classes[o]=y;R.__interfaces={};for(let[o,y]of P)R.__interfaces[o]=y;R.__typeAliases={};for(let[o,y]of M)R.__typeAliases[o]=y;R.__constTypes={};for(let[o,y]of J)R.__constTypes[o]=y;yield Promise.all(n.map(o=>Q(o,a)))})}function Q(e,n){return z(this,null,function*(){let t=w.resolve(n,e);if(!E.existsSync(t))return;if(E.statSync(t).isDirectory()){E.readdirSync(t).forEach(T=>{Q(w.join(e,T),n)});return}if(!e.endsWith(".js"))return;let a=w.join(n,e),o=yield import((0,ne.pathToFileURL)(a).href);R.__classDef={},Object.values(o).forEach(y=>{typeof y=="function"&&(R.__classDef[y.name]=y)})})}function I(e,n){if(e||(e=[k.cwd()]),e=pe(e),!Y){let t=re(e,n),s=i.default.createProgram(t,{});L=s.getTypeChecker(),t=t.map(l=>Z(l)),s.getSourceFiles().filter(l=>t.includes(Z(l.fileName))).forEach(l=>{b(`parse file: ${l.fileName}`),ae(l)});for(let l of $.keys())!O.has(l)&&!P.has(l)&&!G.has(l)&&!M.has(l)&&!te.includes(l)&&!ie.includes(l)&&(b(`remove unknown typeName: ${l}`),$.delete(l));Array.from(O.values()).forEach(_e),Array.from(P.values()).forEach(Ne),[O,P,M].forEach(Oe),Y=!0}return{classDefinitions:O,interfaceDefinitions:P,enumDefinitions:G,typeAliasDefinitions:M,constTypeDefinitions:J}}function re(e,n){let t=[];return e.forEach(s=>{if(s=w.resolve(s),Ke(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(...re([w.join(s,o)],n)))}),t}function ae(e){i.default.isClassDeclaration(e)?we(e):i.default.isInterfaceDeclaration(e)?Re(e):i.default.isEnumDeclaration(e)?xe(e):i.default.isTypeAliasDeclaration(e)?be(e):i.default.isConstTypeReference(e)?Ee(e):e.forEachChild(ae)}function we(e){var y,T,h,x,u,D,K,v,U,d,f,m;let n=c(e.name);if(!n)return;let t=c((h=(T=(y=e.heritageClauses)==null?void 0:y.find(r=>r.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:T.types)==null?void 0:h[0].expression),s=(u=(x=e.heritageClauses)==null?void 0:x.find(r=>r.token===i.default.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(r=>c(r.expression)),a=[],l=[];for(let r of e.members)if(i.default.isPropertyDeclaration(r))a.push({name:c(r.name),isOptional:r.questionToken!==void 0,type:g(r),isPrivate:(D=r.modifiers)==null?void 0:D.some(p=>p.kind===i.default.SyntaxKind.PrivateKeyword),isStatic:(K=r.modifiers)==null?void 0:K.some(p=>p.kind===i.default.SyntaxKind.StaticKeyword)});else if(i.default.isMethodDeclaration(r))l.push({name:c(r.name),returnType:g(r),isPrivate:(v=r.modifiers)==null?void 0:v.some(p=>p.kind===i.default.SyntaxKind.PrivateKeyword),isStatic:(U=r.modifiers)==null?void 0:U.some(p=>p.kind===i.default.SyntaxKind.StaticKeyword),isAsync:(d=r.modifiers)==null?void 0:d.some(p=>p.kind===i.default.SyntaxKind.AsyncKeyword),args:r.parameters.map(p=>({name:c(p.name),type:g(p),isOptional:p.questionToken!==void 0}))});else if(i.default.isGetAccessorDeclaration(r)){let p=a.find(_=>_.name===c(r.name));p||(p={name:c(r.name),isOptional:r.questionToken===void 0,type:g(r)},a.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((f=r.modifiers)==null?void 0:f.some(_=>_.kind===i.default.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(i.default.isSetAccessorDeclaration(r)){let p=a.find(_=>_.name===c(r.name));p||(p={name:c(r.name),isOptional:r.questionToken===void 0,type:g(r)},a.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((m=r.modifiers)==null?void 0:m.some(_=>_.kind===i.default.SyntaxKind.PrivateKeyword))||!1}}let o={name:n,superClassName:t,implementations:s,properties:a,methods:l};b(`Define class: ${c(e.name)}`),O.set(n,o)}function Re(e){var y,T,h,x;let n=c(e.name);if(!n)return;let t=((T=(y=e.heritageClauses)==null?void 0:y.find(u=>u.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:T.types.map(u=>c(u.expression)))||[],s=[],a=[],l;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:((h=u.modifiers)==null?void 0:h.some(D=>D.kind===i.default.SyntaxKind.PrivateKeyword))||!1}):i.default.isMethodSignature(u)?a.push({name:u.name.text,returnType:g(u),isPrivate:((x=u.modifiers)==null?void 0:x.some(D=>D.kind===i.default.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(D=>({name:c(D.name),type:g(D),isOptional:D.questionToken!==void 0}))}):i.default.isIndexSignatureDeclaration(u)&&(l=g(u));let o=P.get(n);o?(o.implementations=q(o.implementations||[],t),o.methods=q(o.methods||[],a,(u,D)=>u.name===D.name),o.properties=q(o.properties||[],s,(u,D)=>u.name===D.name),o.indexElementType=l,b(`Merge interface ${c(e.name)}`)):(o={name:n,implementations:t,methods:a,properties:s,indexElementType:l},P.set(n,o),b(`Define interface ${c(e.name)}`))}function xe(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 be(e){b(`Define typeAlias: ${c(e.name)}`),M.set(c(e.name),g(e))}function Ee(e){let n=e.parent.parent;i.default.isVariableDeclaration(n)&&n.initializer&&i.default.isAsExpression(n.initializer)&&J.set(c(n.name),oe(n.initializer.expression))}function oe(e){return i.default.isArrayLiteralExpression(e)?Se(e):i.default.isObjectLiteralExpression(e)?Pe(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":N}function Se(e){let n=[];return e.elements.forEach(t=>{if(i.default.isStringLiteral(t))return n.push(c(t))}),n.length===0?N:n.length===1?n[0]:{unionMembers:n}}function Pe(e){let n=[];return e.properties.map(t=>{i.default.isPropertyAssignment(t)?n.push({name:c(t.name),type:oe(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function fe(e){$.add(e)}function g(e,n=!1){if(e.type&&!n)return S(e.type);if(!L)return console.error("TypeChecker not initialized!"),N;let t=L.getTypeAtLocation(e),s=L.typeToTypeNode(t,void 0,void 0);return s?S("type"in s?s.type:s):N}function S(e){let n={};if(e===void 0)return N;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(fe(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(X).includes(String(e.kind)))return X[e.kind]||N;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(a=>(t||(()=>a===s))(a,s)))))||[],...n||[]];function V(e){if(e!==void 0&&e!==N)return typeof e=="string"?$.has(e)?e:void 0:e}function _e(e){var n,t;(n=e.methods)==null||n.forEach(le),(t=e.properties)==null||t.forEach(ce)}function Ne(e){var n,t;(n=e.methods)==null||n.forEach(le),(t=e.properties)==null||t.forEach(ce)}function ce(e){e.type=V(e.type)}function le(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 Oe(e){for(let n of e.values())B(n)}function Ke(e,n){return n?(n=n instanceof Array?n:[n],n.some(t=>(t instanceof RegExp||(t=new RegExp(t.replace(/\./g,"\\.").replace(/\*/g,".*"))),e.match(t)))):!1}function Z(e,n=k.cwd()){return ee(e).replace(ee(n)+"/","")}function ee(e){let n=w.sep;return e.split(n).join("/")}function pe(e){return e instanceof Array?e:[e]}function b(e){F.OUTPUT_LOG&&console.log(e)}function W(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:s,outputLog:a}=e;if(a&&(F.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:l,interfaceDefinitions:o,enumDefinitions:y,typeAliasDefinitions:T}=I(n,t),h=[],x=[];function u(d){let f=l.get(d),m=[];return f?(f.superClassName&&m.push(f.superClassName),m.push(...f.implementations||[])):(f=o.get(d),f?m.push(...f.implementations||[]):(f=T.get(d),f&&m.push(...f.implementations||[]))),m.flatMap(r=>[r,...u(r)])||[]}function D(d,f){return u(d.name).includes(f)}function K(d){if(j.default.isClassDeclaration(d)&&d.name!==void 0){let f=d.name.text,m=l.get(f);if(!f||!m||s&&!D(m,"EnableReflect"))return;x.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${f} })`);return}d.forEachChild(K)}function v(){let d=[];return l.forEach((f,m)=>{s&&!D(f,"EnableReflect")||d.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${m}: ${JSON.stringify(f)} })`)}),o.forEach((f,m)=>{s&&!D(f,"EnableReflect")||d.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${m}: ${JSON.stringify(f)} })`)}),y.forEach((f,m)=>{d.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${m}: ${JSON.stringify(f)} })`)}),T.forEach((f,m)=>{d.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${m}: ${JSON.stringify(f)} })`)}),d.join(`
|
|
2
|
-
`)}return{outputAllMetas:v,transform:(
|
|
1
|
+
var ue=Object.create;var C=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,ge=Object.prototype.hasOwnProperty;var Te=(e,n)=>{for(var t in n)C(e,t,{get:n[t],enumerable:!0})},H=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of de(n))!ge.call(e,o)&&o!==t&&C(e,o,{get:()=>n[o],enumerable:!(s=me(n,o))||s.enumerable});return e};var A=(e,n,t)=>(t=e!=null?ue(ye(e)):{},H(n||!e||!e.__esModule?C(t,"default",{value:e,enumerable:!0}):t,e)),he=e=>H(C({},"__esModule",{value:!0}),e);var z=(e,n,t)=>new Promise((s,o)=>{var l=T=>{try{d(t.next(T))}catch(D){o(D)}},f=T=>{try{d(t.throw(T))}catch(D){o(D)}},d=T=>T.done?s(T.value):Promise.resolve(T.value).then(l,f);d((t=t.apply(e,n)).next())});var ke={};Te(ke,{DEBUG_CONFIG:()=>I,parseSource:()=>F,reflectLoader:()=>Q,reflectParserPlugin:()=>Me,setupReflectTypes:()=>De,updateReflectModules:()=>W});module.exports=he(ke);var j=A(require("typescript"),1);var i=A(require("typescript"),1),E=A(require("fs"),1),k=A(require("process"),1),w=A(require("path"),1),ne=require("url");var I={OUTPUT_LOG:!1},K=new Map,P=new Map,G=new Map,M=new Map,J=new Map,$=new Set,X={[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",te=["string","number","boolean","bigint","symbol"],ie=["any","Promise","Date","Error","undefined","unknown","object","Map","Set"],se=["Mappable","EnableReflect"];[...te,...ie,...se].forEach(fe);se.forEach(e=>P.set(e,{name:e}));var L,Y=!1,R=Reflect;function De(e){return z(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:s,distFolder:o}=e;if(s=w.resolve(s||k.cwd()),o=w.resolve(o||k.cwd()),R.__classes!==void 0)return;n=pe(n);let l=n.map(f=>w.join(s,f));F(l,t),R.__classes={};for(let[f,d]of K)R.__classes[f]=d;R.__interfaces={};for(let[f,d]of P)R.__interfaces[f]=d;R.__typeAliases={};for(let[f,d]of M)R.__typeAliases[f]=d;R.__constTypes={};for(let[f,d]of J)R.__constTypes[f]=d;yield Promise.all(n.map(f=>W(f,o)))})}function W(e,n){return z(this,null,function*(){let t=w.resolve(n,e);if(!E.existsSync(t))return;if(E.statSync(t).isDirectory()){E.readdirSync(t).forEach(T=>{W(w.join(e,T),n)});return}if(!e.endsWith(".js"))return;let o=w.join(n,e),f=yield import((0,ne.pathToFileURL)(o).href);R.__classDef={},Object.values(f).forEach(d=>{typeof d=="function"&&(R.__classDef[d.name]=d)})})}function F(e,n){if(e||(e=[k.cwd()]),e=pe(e),!Y){let t=re(e,n),s=i.default.createProgram(t,{});L=s.getTypeChecker(),t=t.map(l=>Z(l)),s.getSourceFiles().filter(l=>t.includes(Z(l.fileName))).forEach(l=>{b(`parse file: ${l.fileName}`),ae(l)});for(let l of $.keys())!K.has(l)&&!P.has(l)&&!G.has(l)&&!M.has(l)&&!te.includes(l)&&!ie.includes(l)&&(b(`remove unknown typeName: ${l}`),$.delete(l));Array.from(K.values()).forEach(_e),Array.from(P.values()).forEach(Oe),[K,P,M].forEach(Ke),Y=!0}return{classDefinitions:K,interfaceDefinitions:P,enumDefinitions:G,typeAliasDefinitions:M,constTypeDefinitions:J}}function re(e,n){let t=[];return e.forEach(s=>{if(s=w.resolve(s),Ne(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(f=>t.push(...re([w.join(s,f)],n)))}),t}function ae(e){i.default.isClassDeclaration(e)?we(e):i.default.isInterfaceDeclaration(e)?Re(e):i.default.isEnumDeclaration(e)?xe(e):i.default.isTypeAliasDeclaration(e)?be(e):i.default.isConstTypeReference(e)?Ee(e):e.forEachChild(ae)}function we(e){var d,T,D,x,u,h,N,v,U,y,r,m;let n=c(e.name);if(!n)return;let t=c((D=(T=(d=e.heritageClauses)==null?void 0:d.find(a=>a.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:T.types)==null?void 0:D[0].expression),s=(u=(x=e.heritageClauses)==null?void 0:x.find(a=>a.token===i.default.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(a=>c(a.expression)),o=[],l=[];for(let a of e.members)if(i.default.isPropertyDeclaration(a))o.push({name:c(a.name),isOptional:a.questionToken!==void 0,type:g(a),isPrivate:(h=a.modifiers)==null?void 0:h.some(p=>p.kind===i.default.SyntaxKind.PrivateKeyword),isStatic:(N=a.modifiers)==null?void 0:N.some(p=>p.kind===i.default.SyntaxKind.StaticKeyword)});else if(i.default.isMethodDeclaration(a))l.push({name:c(a.name),returnType:g(a),isPrivate:(v=a.modifiers)==null?void 0:v.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=o.find(_=>_.name===c(a.name));p||(p={name:c(a.name),isOptional:a.questionToken===void 0,type:g(a)},o.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((r=a.modifiers)==null?void 0:r.some(_=>_.kind===i.default.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(i.default.isSetAccessorDeclaration(a)){let p=o.find(_=>_.name===c(a.name));p||(p={name:c(a.name),isOptional:a.questionToken===void 0,type:g(a)},o.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((m=a.modifiers)==null?void 0:m.some(_=>_.kind===i.default.SyntaxKind.PrivateKeyword))||!1}}let f={name:n,superClassName:t,implementations:s,properties:o,methods:l};b(`Define class: ${c(e.name)}`),K.set(n,f)}function Re(e){var d,T,D,x;let n=c(e.name);if(!n)return;let t=((T=(d=e.heritageClauses)==null?void 0:d.find(u=>u.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:T.types.map(u=>c(u.expression)))||[],s=[],o=[],l;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:((D=u.modifiers)==null?void 0:D.some(h=>h.kind===i.default.SyntaxKind.PrivateKeyword))||!1}):i.default.isMethodSignature(u)?o.push({name:u.name.text,returnType:g(u),isPrivate:((x=u.modifiers)==null?void 0:x.some(h=>h.kind===i.default.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(h=>({name:c(h.name),type:g(h),isOptional:h.questionToken!==void 0}))}):i.default.isIndexSignatureDeclaration(u)&&(l=g(u));let f=P.get(n);f?(f.implementations=q(f.implementations||[],t),f.methods=q(f.methods||[],o,(u,h)=>u.name===h.name),f.properties=q(f.properties||[],s,(u,h)=>u.name===h.name),f.indexElementType=l,b(`Merge interface ${c(e.name)}`)):(f={name:n,implementations:t,methods:o,properties:s,indexElementType:l},P.set(n,f),b(`Define interface ${c(e.name)}`))}function xe(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 be(e){b(`Define typeAlias: ${c(e.name)}`),M.set(c(e.name),g(e))}function Ee(e){let n=e.parent.parent;i.default.isVariableDeclaration(n)&&n.initializer&&i.default.isAsExpression(n.initializer)&&J.set(c(n.name),oe(n.initializer.expression))}function oe(e){return i.default.isArrayLiteralExpression(e)?Se(e):i.default.isObjectLiteralExpression(e)?Pe(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 Se(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 Pe(e){let n=[];return e.properties.map(t=>{i.default.isPropertyAssignment(t)?n.push({name:c(t.name),type:oe(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function fe(e){$.add(e)}function g(e,n=!1){if(e.type&&!n)return S(e.type);if(!L)return console.error("TypeChecker not initialized!"),O;let t=L.getTypeAtLocation(e),s=L.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(fe(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(X).includes(String(e.kind)))return X[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(o=>(t||(()=>o===s))(o,s)))))||[],...n||[]];function V(e){if(e!==void 0&&e!==O)return typeof e=="string"?$.has(e)?e:void 0:e}function _e(e){var n,t;(n=e.methods)==null||n.forEach(le),(t=e.properties)==null||t.forEach(ce)}function Oe(e){var n,t;(n=e.methods)==null||n.forEach(le),(t=e.properties)==null||t.forEach(ce)}function ce(e){e.type=V(e.type)}function le(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 Ne(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 Z(e,n=k.cwd()){return ee(e).replace(ee(n)+"/","")}function ee(e){let n=w.sep;return e.split(n).join("/")}function pe(e){return e instanceof Array?e:[e]}function b(e){I.OUTPUT_LOG&&console.log(e)}function Q(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:s,outputLog:o}=e;if(o&&(I.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:l,interfaceDefinitions:f,enumDefinitions:d,typeAliasDefinitions:T}=F(n,t),D=[],x=[];function u(y){let r=l.get(y),m=[];return r?(r.superClassName&&m.push(r.superClassName),m.push(...r.implementations||[])):(r=f.get(y),r?m.push(...r.implementations||[]):(r=T.get(y),r&&m.push(...r.implementations||[]))),m.flatMap(a=>[a,...u(a)])||[]}function h(y,r){return u(y.name).includes(r)}function N(y){if(j.default.isClassDeclaration(y)&&y.name!==void 0){let r=y.name.text,m=l.get(r);if(!r||!m||s&&!h(m,"EnableReflect"))return;x.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${r} })`);return}y.forEachChild(N)}function v(){let y=[];return l.forEach((r,m)=>{s&&!h(r,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${m}: ${JSON.stringify(r)} })`)}),f.forEach((r,m)=>{s&&!h(r,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${m}: ${JSON.stringify(r)} })`)}),d.forEach((r,m)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${m}: ${JSON.stringify(r)} })`)}),T.forEach((r,m)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${m}: ${JSON.stringify(r)} })`)}),y.join(`
|
|
2
|
+
`)}return{outputAllMetas:v,transform:(y,r)=>{if(r.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(m=>!r.startsWith(m))){console.log(`transform id: ${r}`);try{let m=j.default.createSourceFile(r,y,j.default.ScriptTarget.Latest,!1);return D.length=0,x.length=0,N(m),`${D.join(";")};${y};${x.join(";")}`}catch(m){return console.error(`[reflect-parser-plugin] Error processing ${r}:`,m),null}}}}}var Ae=process.cwd().replace(/\\/g,"/")+"/";function Me(e){let n=Q(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,s)=>(s=s.replace(Ae,""),s===e.entry?`${n.outputAllMetas()}
|
|
3
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,p)=>{var c=T=>{try{y(t.next(T))}catch(h){p(h)}},a=T=>{try{y(t.throw(T))}catch(h){p(h)}},y=T=>T.done?s(T.value):Promise.resolve(T.value).then(c,a);y((t=t.apply(e,n)).next())});import V from"typescript";import i from"typescript";import*as E from"fs";import*as M from"process";import*as w from"path";import{pathToFileURL as fe}from"url";var z={OUTPUT_LOG:!1},O=new Map,P=new Map,I=new Map,A=new Map,q=new Map,C=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"},N="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=>P.set(e,{name:e}));var v,J=!1,R=Reflect;function Ee(e){return $(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:s,distFolder:p}=e;if(s=w.resolve(s||M.cwd()),p=w.resolve(p||M.cwd()),R.__classes!==void 0)return;n=ae(n);let c=n.map(a=>w.join(s,a));G(c,t),R.__classes={};for(let[a,y]of O)R.__classes[a]=y;R.__interfaces={};for(let[a,y]of P)R.__interfaces[a]=y;R.__typeAliases={};for(let[a,y]of A)R.__typeAliases[a]=y;R.__constTypes={};for(let[a,y]of q)R.__constTypes[a]=y;yield Promise.all(n.map(a=>Z(a,p)))})}function Z(e,n){return $(this,null,function*(){let t=w.resolve(n,e);if(!E.existsSync(t))return;if(E.statSync(t).isDirectory()){E.readdirSync(t).forEach(T=>{Z(w.join(e,T),n)});return}if(!e.endsWith(".js"))return;let p=w.join(n,e),a=yield import(fe(p).href);R.__classDef={},Object.values(a).forEach(y=>{typeof y=="function"&&(R.__classDef[y.name]=y)})})}function G(e,n){if(e||(e=[M.cwd()]),e=ae(e),!J){let t=ee(e,n),s=i.createProgram(t,{});v=s.getTypeChecker(),t=t.map(c=>Q(c)),s.getSourceFiles().filter(c=>t.includes(Q(c.fileName))).forEach(c=>{b(`parse file: ${c.fileName}`),ne(c)});for(let c of C.keys())!O.has(c)&&!P.has(c)&&!I.has(c)&&!A.has(c)&&!H.includes(c)&&!X.includes(c)&&(b(`remove unknown typeName: ${c}`),C.delete(c));Array.from(O.values()).forEach(ge),Array.from(P.values()).forEach(Te),[O,P,A].forEach(De),J=!0}return{classDefinitions:O,interfaceDefinitions:P,enumDefinitions:I,typeAliasDefinitions:A,constTypeDefinitions:q}}function ee(e,n){let t=[];return e.forEach(s=>{if(s=w.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(a=>t.push(...ee([w.join(s,a)],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 y,T,h,x,u,D,K,k,L,d,o,m;let n=f(e.name);if(!n)return;let t=f((h=(T=(y=e.heritageClauses)==null?void 0:y.find(r=>r.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:T.types)==null?void 0:h[0].expression),s=(u=(x=e.heritageClauses)==null?void 0:x.find(r=>r.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(r=>f(r.expression)),p=[],c=[];for(let r of e.members)if(i.isPropertyDeclaration(r))p.push({name:f(r.name),isOptional:r.questionToken!==void 0,type:g(r),isPrivate:(D=r.modifiers)==null?void 0:D.some(l=>l.kind===i.SyntaxKind.PrivateKeyword),isStatic:(K=r.modifiers)==null?void 0:K.some(l=>l.kind===i.SyntaxKind.StaticKeyword)});else if(i.isMethodDeclaration(r))c.push({name:f(r.name),returnType:g(r),isPrivate:(k=r.modifiers)==null?void 0:k.some(l=>l.kind===i.SyntaxKind.PrivateKeyword),isStatic:(L=r.modifiers)==null?void 0:L.some(l=>l.kind===i.SyntaxKind.StaticKeyword),isAsync:(d=r.modifiers)==null?void 0:d.some(l=>l.kind===i.SyntaxKind.AsyncKeyword),args:r.parameters.map(l=>({name:f(l.name),type:g(l),isOptional:l.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(r)){let l=p.find(_=>_.name===f(r.name));l||(l={name:f(r.name),isOptional:r.questionToken===void 0,type:g(r)},p.push(l)),l.accessor=l.accessor||{},l.accessor.getter={isPrivate:((o=r.modifiers)==null?void 0:o.some(_=>_.kind===i.SyntaxKind.PrivateKeyword))||!1},l.isPrivate=l.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(r)){let l=p.find(_=>_.name===f(r.name));l||(l={name:f(r.name),isOptional:r.questionToken===void 0,type:g(r)},p.push(l)),l.accessor=l.accessor||{},l.accessor.setter={isPrivate:((m=r.modifiers)==null?void 0:m.some(_=>_.kind===i.SyntaxKind.PrivateKeyword))||!1}}let a={name:n,superClassName:t,implementations:s,properties:p,methods:c};b(`Define class: ${f(e.name)}`),O.set(n,a)}function le(e){var y,T,h,x;let n=f(e.name);if(!n)return;let t=((T=(y=e.heritageClauses)==null?void 0:y.find(u=>u.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:T.types.map(u=>f(u.expression)))||[],s=[],p=[],c;for(let u of e.members)i.isPropertySignature(u)?s.push({name:f(u.name),isOptional:u.questionToken!==void 0,type:g(u),isPrivate:((h=u.modifiers)==null?void 0:h.some(D=>D.kind===i.SyntaxKind.PrivateKeyword))||!1}):i.isMethodSignature(u)?p.push({name:u.name.text,returnType:g(u),isPrivate:((x=u.modifiers)==null?void 0:x.some(D=>D.kind===i.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(D=>({name:f(D.name),type:g(D),isOptional:D.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(u)&&(c=g(u));let a=P.get(n);a?(a.implementations=F(a.implementations||[],t),a.methods=F(a.methods||[],p,(u,D)=>u.name===D.name),a.properties=F(a.properties||[],s,(u,D)=>u.name===D.name),a.indexElementType=c,b(`Merge interface ${f(e.name)}`)):(a={name:n,implementations:t,methods:p,properties:s,indexElementType:c},P.set(n,a),b(`Define interface ${f(e.name)}`))}function pe(e){let n=f(e.name);n&&(I.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),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":N}function ye(e){let n=[];return e.elements.forEach(t=>{if(i.isStringLiteral(t))return n.push(f(t))}),n.length===0?N: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:te(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function ie(e){C.add(e)}function g(e,n=!1){if(e.type&&!n)return S(e.type);if(!v)return console.error("TypeChecker not initialized!"),N;let t=v.getTypeAtLocation(e),s=v.typeToTypeNode(t,void 0,void 0);return s?S("type"in s?s.type:s):N}function S(e){let n={};if(e===void 0)return N;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(ie(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(B).includes(String(e.kind)))return B[e.kind]||N;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 F=(e,n,t)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(p=>(t||(()=>p===s))(p,s)))))||[],...n||[]];function j(e){if(e!==void 0&&e!==N)return typeof e=="string"?C.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=j(e.type)}function re(e){var n;(n=e.args)==null||n.forEach(t=>t.type=j(t.type)),e.returnType=j(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 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 De(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 Q(e,n=M.cwd()){return W(e).replace(W(n)+"/","")}function W(e){let n=w.sep;return e.split(n).join("/")}function ae(e){return e instanceof Array?e:[e]}function b(e){z.OUTPUT_LOG&&console.log(e)}function oe(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:c,interfaceDefinitions:a,enumDefinitions:y,typeAliasDefinitions:T}=G(n,t),h=[],x=[];function u(d){let o=c.get(d),m=[];return o?(o.superClassName&&m.push(o.superClassName),m.push(...o.implementations||[])):(o=a.get(d),o?m.push(...o.implementations||[]):(o=T.get(d),o&&m.push(...o.implementations||[]))),m.flatMap(r=>[r,...u(r)])||[]}function D(d,o){return u(d.name).includes(o)}function K(d){if(V.isClassDeclaration(d)&&d.name!==void 0){let o=d.name.text,m=c.get(o);if(!o||!m||s&&!D(m,"EnableReflect"))return;x.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${o} })`);return}d.forEachChild(K)}function k(){let d=[];return c.forEach((o,m)=>{s&&!D(o,"EnableReflect")||d.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${m}: ${JSON.stringify(o)} })`)}),a.forEach((o,m)=>{s&&!D(o,"EnableReflect")||d.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${m}: ${JSON.stringify(o)} })`)}),y.forEach((o,m)=>{d.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${m}: ${JSON.stringify(o)} })`)}),T.forEach((o,m)=>{d.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${m}: ${JSON.stringify(o)} })`)}),d.join(`
|
|
2
|
-
`)}return{outputAllMetas:k,transform:(
|
|
1
|
+
var $=(e,n,t)=>new Promise((s,p)=>{var c=T=>{try{d(t.next(T))}catch(D){p(D)}},o=T=>{try{d(t.throw(T))}catch(D){p(D)}},d=T=>T.done?s(T.value):Promise.resolve(T.value).then(c,o);d((t=t.apply(e,n)).next())});import V from"typescript";import i from"typescript";import*as E from"fs";import*as M from"process";import*as w from"path";import{pathToFileURL as fe}from"url";var z={OUTPUT_LOG:!1},K=new Map,P=new Map,F=new Map,A=new Map,q=new Map,C=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"},O="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=>P.set(e,{name:e}));var v,J=!1,R=Reflect;function Ee(e){return $(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:s,distFolder:p}=e;if(s=w.resolve(s||M.cwd()),p=w.resolve(p||M.cwd()),R.__classes!==void 0)return;n=ae(n);let c=n.map(o=>w.join(s,o));G(c,t),R.__classes={};for(let[o,d]of K)R.__classes[o]=d;R.__interfaces={};for(let[o,d]of P)R.__interfaces[o]=d;R.__typeAliases={};for(let[o,d]of A)R.__typeAliases[o]=d;R.__constTypes={};for(let[o,d]of q)R.__constTypes[o]=d;yield Promise.all(n.map(o=>Z(o,p)))})}function Z(e,n){return $(this,null,function*(){let t=w.resolve(n,e);if(!E.existsSync(t))return;if(E.statSync(t).isDirectory()){E.readdirSync(t).forEach(T=>{Z(w.join(e,T),n)});return}if(!e.endsWith(".js"))return;let p=w.join(n,e),o=yield import(fe(p).href);R.__classDef={},Object.values(o).forEach(d=>{typeof d=="function"&&(R.__classDef[d.name]=d)})})}function G(e,n){if(e||(e=[M.cwd()]),e=ae(e),!J){let t=ee(e,n),s=i.createProgram(t,{});v=s.getTypeChecker(),t=t.map(c=>W(c)),s.getSourceFiles().filter(c=>t.includes(W(c.fileName))).forEach(c=>{b(`parse file: ${c.fileName}`),ne(c)});for(let c of C.keys())!K.has(c)&&!P.has(c)&&!F.has(c)&&!A.has(c)&&!H.includes(c)&&!X.includes(c)&&(b(`remove unknown typeName: ${c}`),C.delete(c));Array.from(K.values()).forEach(ge),Array.from(P.values()).forEach(Te),[K,P,A].forEach(he),J=!0}return{classDefinitions:K,interfaceDefinitions:P,enumDefinitions:F,typeAliasDefinitions:A,constTypeDefinitions:q}}function ee(e,n){let t=[];return e.forEach(s=>{if(s=w.resolve(s),De(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(...ee([w.join(s,o)],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 d,T,D,x,u,h,N,k,L,y,r,m;let n=f(e.name);if(!n)return;let t=f((D=(T=(d=e.heritageClauses)==null?void 0:d.find(a=>a.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:T.types)==null?void 0:D[0].expression),s=(u=(x=e.heritageClauses)==null?void 0:x.find(a=>a.token===i.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(a=>f(a.expression)),p=[],c=[];for(let a of e.members)if(i.isPropertyDeclaration(a))p.push({name:f(a.name),isOptional:a.questionToken!==void 0,type:g(a),isPrivate:(h=a.modifiers)==null?void 0:h.some(l=>l.kind===i.SyntaxKind.PrivateKeyword),isStatic:(N=a.modifiers)==null?void 0:N.some(l=>l.kind===i.SyntaxKind.StaticKeyword)});else if(i.isMethodDeclaration(a))c.push({name:f(a.name),returnType:g(a),isPrivate:(k=a.modifiers)==null?void 0:k.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:f(l.name),type:g(l),isOptional:l.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(a)){let l=p.find(_=>_.name===f(a.name));l||(l={name:f(a.name),isOptional:a.questionToken===void 0,type:g(a)},p.push(l)),l.accessor=l.accessor||{},l.accessor.getter={isPrivate:((r=a.modifiers)==null?void 0:r.some(_=>_.kind===i.SyntaxKind.PrivateKeyword))||!1},l.isPrivate=l.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(a)){let l=p.find(_=>_.name===f(a.name));l||(l={name:f(a.name),isOptional:a.questionToken===void 0,type:g(a)},p.push(l)),l.accessor=l.accessor||{},l.accessor.setter={isPrivate:((m=a.modifiers)==null?void 0:m.some(_=>_.kind===i.SyntaxKind.PrivateKeyword))||!1}}let o={name:n,superClassName:t,implementations:s,properties:p,methods:c};b(`Define class: ${f(e.name)}`),K.set(n,o)}function le(e){var d,T,D,x;let n=f(e.name);if(!n)return;let t=((T=(d=e.heritageClauses)==null?void 0:d.find(u=>u.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:T.types.map(u=>f(u.expression)))||[],s=[],p=[],c;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(h=>h.kind===i.SyntaxKind.PrivateKeyword))||!1}):i.isMethodSignature(u)?p.push({name:u.name.text,returnType:g(u),isPrivate:((x=u.modifiers)==null?void 0:x.some(h=>h.kind===i.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(h=>({name:f(h.name),type:g(h),isOptional:h.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(u)&&(c=g(u));let o=P.get(n);o?(o.implementations=I(o.implementations||[],t),o.methods=I(o.methods||[],p,(u,h)=>u.name===h.name),o.properties=I(o.properties||[],s,(u,h)=>u.name===h.name),o.indexElementType=c,b(`Merge interface ${f(e.name)}`)):(o={name:n,implementations:t,methods:p,properties:s,indexElementType:c},P.set(n,o),b(`Define interface ${f(e.name)}`))}function pe(e){let n=f(e.name);n&&(F.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),te(n.initializer.expression))}function te(e){return i.isArrayLiteralExpression(e)?de(e):i.isObjectLiteralExpression(e)?ye(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(f(t))}),n.length===0?O:n.length===1?n[0]:{unionMembers:n}}function ye(e){let n=[];return e.properties.map(t=>{i.isPropertyAssignment(t)?n.push({name:f(t.name),type:te(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function ie(e){C.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.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(ie(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(B).includes(String(e.kind)))return B[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 j(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(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=j(e.type)}function re(e){var n;(n=e.args)==null||n.forEach(t=>t.type=j(t.type)),e.returnType=j(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 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 he(e){for(let n of e.values())U(n)}function De(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=M.cwd()){return Q(e).replace(Q(n)+"/","")}function Q(e){let n=w.sep;return e.split(n).join("/")}function ae(e){return e instanceof Array?e:[e]}function b(e){z.OUTPUT_LOG&&console.log(e)}function oe(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:c,interfaceDefinitions:o,enumDefinitions:d,typeAliasDefinitions:T}=G(n,t),D=[],x=[];function u(y){let r=c.get(y),m=[];return r?(r.superClassName&&m.push(r.superClassName),m.push(...r.implementations||[])):(r=o.get(y),r?m.push(...r.implementations||[]):(r=T.get(y),r&&m.push(...r.implementations||[]))),m.flatMap(a=>[a,...u(a)])||[]}function h(y,r){return u(y.name).includes(r)}function N(y){if(V.isClassDeclaration(y)&&y.name!==void 0){let r=y.name.text,m=c.get(r);if(!r||!m||s&&!h(m,"EnableReflect"))return;x.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${r} })`);return}y.forEachChild(N)}function k(){let y=[];return c.forEach((r,m)=>{s&&!h(r,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${m}: ${JSON.stringify(r)} })`)}),o.forEach((r,m)=>{s&&!h(r,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${m}: ${JSON.stringify(r)} })`)}),d.forEach((r,m)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${m}: ${JSON.stringify(r)} })`)}),T.forEach((r,m)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${m}: ${JSON.stringify(r)} })`)}),y.join(`
|
|
2
|
+
`)}return{outputAllMetas:k,transform:(y,r)=>{if(r.endsWith(".ts")&&!(typeof n=="string"?[n]:n).every(m=>!r.startsWith(m))){console.log(`transform id: ${r}`);try{let m=V.createSourceFile(r,y,V.ScriptTarget.Latest,!1);return D.length=0,x.length=0,N(m),`${D.join(";")};${y};${x.join(";")}`}catch(m){return console.error(`[reflect-parser-plugin] Error processing ${r}:`,m),null}}}}}var we=process.cwd().replace(/\\/g,"/")+"/";function Me(e){let n=oe(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,s)=>(s=s.replace(we,""),s===e.entry?`${n.outputAllMetas()}
|
|
3
3
|
${t}`:n.transform(t,s))}}export{z as DEBUG_CONFIG,G as parseSource,oe as reflectLoader,Me as reflectParserPlugin,Ee as setupReflectTypes,Z as updateReflectModules};
|