ts-ref-kit 1.0.13 → 1.0.16
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.
|
@@ -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};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ref-kit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
4
4
|
"description": "Type reflection and validation library for TypeScript",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -14,12 +14,14 @@
|
|
|
14
14
|
],
|
|
15
15
|
"exports": {
|
|
16
16
|
".": {
|
|
17
|
+
"types": "./types/index.d.ts",
|
|
17
18
|
"import": "./dist/esm/index.js",
|
|
18
|
-
"require": "./dist/cjs/index.
|
|
19
|
+
"require": "./dist/cjs/index.cjs"
|
|
19
20
|
},
|
|
20
21
|
"./parser": {
|
|
22
|
+
"types": "./types/parser/index.d.ts",
|
|
21
23
|
"import": "./dist/esm/parser/index.js",
|
|
22
|
-
"require": "./dist/cjs/parser/index.
|
|
24
|
+
"require": "./dist/cjs/parser/index.cjs"
|
|
23
25
|
}
|
|
24
26
|
},
|
|
25
27
|
"typesVersions": {
|
|
@@ -40,6 +42,7 @@
|
|
|
40
42
|
"devDependencies": {
|
|
41
43
|
"@types/node": "^24.2.0",
|
|
42
44
|
"esbuild": "^0.25.9",
|
|
45
|
+
"rimraf": "^6.0.1",
|
|
43
46
|
"typescript": "^5.9.2",
|
|
44
47
|
"vite": "^7.1.4"
|
|
45
48
|
},
|
package/dist/cjs/parser/index.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
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})},X=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of ye(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(de(e)):{},X(n||!e||!e.__esModule?C(t,"default",{value:e,enumerable:!0}):t,e)),De=e=>X(C({},"__esModule",{value:!0}),e);var U=(e,n,t)=>new Promise((s,o)=>{var r=m=>{try{w(t.next(m))}catch(D){o(D)}},l=m=>{try{w(t.throw(m))}catch(D){o(D)}},w=m=>m.done?s(m.value):Promise.resolve(m.value).then(r,l);w((t=t.apply(e,n)).next())});var ke={};Te(ke,{DEBUG_CONFIG:()=>I,parseSource:()=>j,reflectLoader:()=>H,reflectParserPlugin:()=>Me,setupReflectTypes:()=>we,updateReflectModules:()=>Q});module.exports=De(ke);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);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",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=>_.set(e,{name:e}));var v,Z=!1,h=Reflect;function we(s,o){return U(this,arguments,function*(e,n,t=$.cwd()){if(t=x.resolve(t),h.__classes===void 0){e=pe(e),j(e,n),h.__classes={};for(let[r,l]of P)h.__classes[r]=l;h.__interfaces={};for(let[r,l]of _)h.__interfaces[r]=l;h.__typeAliases={};for(let[r,l]of M)h.__typeAliases[r]=l;h.__constTypes={};for(let[r,l]of J)h.__constTypes[r]=l;yield Promise.all(e.map(r=>Q(r,t)))}})}function Q(e,n){return U(this,null,function*(){if(!E.existsSync(e))return;if(E.statSync(e).isDirectory()){E.readdirSync(e).forEach(r=>{Q(x.join(e,r),n)});return}let s=yield import(x.join(n,e).replace(/\.ts$/,".js"));h.__classDef={},Object.values(s).forEach(o=>{typeof o=="function"&&(h.__classDef[o.name]=o)})})}function j(e,n){if(e||(e=[$.cwd()]),e=pe(e),!Z){let t=re(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}`),ae(r)});for(let r of L.keys())!P.has(r)&&!_.has(r)&&!G.has(r)&&!M.has(r)&&!te.includes(r)&&!ie.includes(r)&&(b(`remove unknown typeName: ${r}`),L.delete(r));Array.from(P.values()).forEach(Ne),Array.from(_.values()).forEach(Oe),[P,_,M].forEach(Pe),Z=!0}return{classDefinitions:P,interfaceDefinitions:_,enumDefinitions:G,typeAliasDefinitions:M,constTypeDefinitions:J}}function re(e,n){let t=[];return e.forEach(s=>{if(s=x.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(l=>t.push(...re([x.join(s,l)],n)))}),t}function ae(e){i.default.isClassDeclaration(e)?he(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 he(e){var w,m,D,R,u,T,K,k,z,y,f,d;let n=c(e.name);if(!n)return;let t=c((D=(m=(w=e.heritageClauses)==null?void 0:w.find(a=>a.token===i.default.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.default.SyntaxKind.ImplementsKeyword))==null?void 0:u.types.map(a=>c(a.expression)),o=[],r=[];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:(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:(z=a.modifiers)==null?void 0:z.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(N=>N.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:((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=o.find(N=>N.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:((d=a.modifiers)==null?void 0:d.some(N=>N.kind===i.default.SyntaxKind.PrivateKeyword))||!1}}let l={name:n,superClassName:t,implementations:s,properties:o,methods:r};b(`Define class: ${c(e.name)}`),P.set(n,l)}function Re(e){var w,m,D,R;let n=c(e.name);if(!n)return;let t=((m=(w=e.heritageClauses)==null?void 0:w.find(u=>u.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:m.types.map(u=>c(u.expression)))||[],s=[],o=[],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:((D=u.modifiers)==null?void 0:D.some(T=>T.kind===i.default.SyntaxKind.PrivateKeyword))||!1}):i.default.isMethodSignature(u)?o.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 l=_.get(n);l?(l.implementations=q(l.implementations||[],t),l.methods=q(l.methods||[],o,(u,T)=>u.name===T.name),l.properties=q(l.properties||[],s,(u,T)=>u.name===T.name),l.indexElementType=r,b(`Merge interface ${c(e.name)}`)):(l={name:n,implementations:t,methods:o,properties:s,indexElementType:r},_.set(n,l),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)?_e(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 _e(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){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(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(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(o=>(t||(()=>o===s))(o,s)))))||[],...n||[]];function V(e){if(e!==void 0&&e!==O)return typeof e=="string"?L.has(e)?e:void 0:e}function Ne(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 Pe(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 ee(e,n=$.cwd()){return ne(e).replace(ne(n)+"/","")}function ne(e){let n=x.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 W(e,n){let t=o=>{let r=e.replace(/\\/g,"/"),l=o.replace(/\\/g,"/");l=l.replace(/\*\*/g,"<<double_star>>");let m=l.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!o.startsWith("/")&&!o.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:o}=e;if(o&&(I.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:r,interfaceDefinitions:l,enumDefinitions:w,typeAliasDefinitions:m}=j(n,t),D=[],R=[];function u(y){let f=r.get(y),d=[];return f?(f.superClassName&&d.push(f.superClassName),d.push(...f.implementations||[])):(f=l.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)} })`)}),l.forEach((f,d)=>{s&&!T(f,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${d}: ${JSON.stringify(f)} })`)}),w.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 D.length=0,R.length=0,K(a),`${D.join(";")};${y};${R.join(";")}`}catch(a){return console.error(`[reflect-parser-plugin] Error processing ${f}:`,a),null}}}}var Ae=process.cwd().replace(/\\/g,"/")+"/";function Me(e){let n=H(e);return{name:"reflect-parser-plugin",enforce:"pre",transform:(t,s)=>(s=s.replace(Ae,""),s===e.entry?`${n.outputAllMetas()}
|
|
3
|
-
${t}`:n.transform(t,s))}}0&&(module.exports={DEBUG_CONFIG,parseSource,reflectLoader,reflectParserPlugin,setupReflectTypes,updateReflectModules});
|
|
File without changes
|