ts-ref-kit 1.0.16 → 1.0.18

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 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()}
1
+ var me=Object.create;var C=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var ye=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var he=(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 a of ye(n))!Te.call(e,a)&&a!==t&&C(e,a,{get:()=>n[a],enumerable:!(s=de(n,a))||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)),De=e=>X(C({},"__esModule",{value:!0}),e);var z=(e,n,t)=>new Promise((s,a)=>{var f=d=>{try{m(t.next(d))}catch(D){a(D)}},o=d=>{try{m(t.throw(d))}catch(D){a(D)}},m=d=>d.done?s(d.value):Promise.resolve(d.value).then(f,o);m((t=t.apply(e,n)).next())});var ve={};he(ve,{DEBUG_CONFIG:()=>F,parseSource:()=>I,reflectLoader:()=>H,reflectParserPlugin:()=>ke,setupReflectTypes:()=>we,updateReflectModules:()=>Q});module.exports=De(ve);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),te=require("url");var F={OUTPUT_LOG:!1},O=new Map,S=new Map,G=new Map,M=new Map,J=new Map,$=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"},N="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=>S.set(e,{name:e}));var L,Z=!1,R=Reflect;function we(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=ue(n);let f=n.map(o=>w.join(s,o));I(f,t),R.__classes={};for(let[o,m]of O)R.__classes[o]=m;R.__interfaces={};for(let[o,m]of S)R.__interfaces[o]=m;R.__typeAliases={};for(let[o,m]of M)R.__typeAliases[o]=m;R.__constTypes={};for(let[o,m]of J)R.__constTypes[o]=m;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(d=>{Q(w.join(e,d),n)});return}let a=w.join(n,e).replace(/\.ts$/,".js"),o=yield import((0,te.pathToFileURL)(a).href);R.__classDef={},Object.values(o).forEach(m=>{typeof m=="function"&&(R.__classDef[m.name]=m)})})}function I(e,n){if(e||(e=[k.cwd()]),e=ue(e),!Z){let t=ae(e,n),s=i.default.createProgram(t,{});L=s.getTypeChecker(),t=t.map(f=>ee(f)),s.getSourceFiles().filter(f=>t.includes(ee(f.fileName))).forEach(f=>{b(`parse file: ${f.fileName}`),oe(f)});for(let f of $.keys())!O.has(f)&&!S.has(f)&&!G.has(f)&&!M.has(f)&&!ie.includes(f)&&!se.includes(f)&&(b(`remove unknown typeName: ${f}`),$.delete(f));Array.from(O.values()).forEach(Ne),Array.from(S.values()).forEach(Oe),[O,S,M].forEach(Ke),Z=!0}return{classDefinitions:O,interfaceDefinitions:S,enumDefinitions:G,typeAliasDefinitions:M,constTypeDefinitions:J}}function ae(e,n){let t=[];return e.forEach(s=>{if(s=w.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([w.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)?Pe(e):e.forEachChild(oe)}function Re(e){var m,d,D,x,u,h,K,v,U,y,c,g;let n=l(e.name);if(!n)return;let t=l((D=(d=(m=e.heritageClauses)==null?void 0:m.find(r=>r.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:d.types)==null?void 0:D[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=>l(r.expression)),a=[],f=[];for(let r of e.members)if(i.default.isPropertyDeclaration(r))a.push({name:l(r.name),isOptional:r.questionToken!==void 0,type:T(r),isPrivate:(h=r.modifiers)==null?void 0:h.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))f.push({name:l(r.name),returnType:T(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:(y=r.modifiers)==null?void 0:y.some(p=>p.kind===i.default.SyntaxKind.AsyncKeyword),args:r.parameters.map(p=>({name:l(p.name),type:T(p),isOptional:p.questionToken!==void 0}))});else if(i.default.isGetAccessorDeclaration(r)){let p=a.find(_=>_.name===l(r.name));p||(p={name:l(r.name),isOptional:r.questionToken===void 0,type:T(r)},a.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((c=r.modifiers)==null?void 0:c.some(_=>_.kind===i.default.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(i.default.isSetAccessorDeclaration(r)){let p=a.find(_=>_.name===l(r.name));p||(p={name:l(r.name),isOptional:r.questionToken===void 0,type:T(r)},a.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((g=r.modifiers)==null?void 0:g.some(_=>_.kind===i.default.SyntaxKind.PrivateKeyword))||!1}}let o={name:n,superClassName:t,implementations:s,properties:a,methods:f};b(`Define class: ${l(e.name)}`),O.set(n,o)}function xe(e){var m,d,D,x;let n=l(e.name);if(!n)return;let t=((d=(m=e.heritageClauses)==null?void 0:m.find(u=>u.token===i.default.SyntaxKind.ExtendsKeyword))==null?void 0:d.types.map(u=>l(u.expression)))||[],s=[],a=[],f;for(let u of e.members)i.default.isPropertySignature(u)?s.push({name:l(u.name),isOptional:u.questionToken!==void 0,type:T(u),isPrivate:((D=u.modifiers)==null?void 0:D.some(h=>h.kind===i.default.SyntaxKind.PrivateKeyword))||!1}):i.default.isMethodSignature(u)?a.push({name:u.name.text,returnType:T(u),isPrivate:((x=u.modifiers)==null?void 0:x.some(h=>h.kind===i.default.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(h=>({name:l(h.name),type:T(h),isOptional:h.questionToken!==void 0}))}):i.default.isIndexSignatureDeclaration(u)&&(f=T(u));let o=S.get(n);o?(o.implementations=q(o.implementations||[],t),o.methods=q(o.methods||[],a,(u,h)=>u.name===h.name),o.properties=q(o.properties||[],s,(u,h)=>u.name===h.name),o.indexElementType=f,b(`Merge interface ${l(e.name)}`)):(o={name:n,implementations:t,methods:a,properties:s,indexElementType:f},S.set(n,o),b(`Define interface ${l(e.name)}`))}function be(e){let n=l(e.name);n&&(G.set(n,{name:n,members:e.members.map(t=>({name:l(t.name),initializer:l(t.initializer)}))}),b(`Define enum: ${l(e.name)}`))}function Ee(e){b(`Define typeAlias: ${l(e.name)}`),M.set(l(e.name),T(e))}function Pe(e){let n=e.parent.parent;i.default.isVariableDeclaration(n)&&n.initializer&&i.default.isAsExpression(n.initializer)&&J.set(l(n.name),fe(n.initializer.expression))}function fe(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":N}function Se(e){let n=[];return e.elements.forEach(t=>{if(i.default.isStringLiteral(t))return n.push(l(t))}),n.length===0?N:n.length===1?n[0]:{unionMembers:n}}function _e(e){let n=[];return e.properties.map(t=>{i.default.isPropertyAssignment(t)?n.push({name:l(t.name),type:fe(t.initializer)}):b(`unsupported property: ${t.name}`)}),{typeLiteralMembers:n}}function ce(e){$.add(e)}function T(e,n=!1){if(e.type&&!n)return P(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?P("type"in s?s.type:s):N}function P(e){let n={};if(e===void 0)return N;if(i.default.isUnionTypeNode(e))n.unionMembers=e.types.map(P);else if(i.default.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(P);else if(i.default.isLiteralTypeNode(e))n.literalValue=l(e.literal);else if(i.default.isTypeLiteralNode(e)){let t=[];e.members.forEach(s=>{i.default.isPropertySignature(s)?t.push({name:l(s.name),isOptional:s.questionToken!==void 0,type:T(s)}):i.default.isIndexSignatureDeclaration(s)?n.indexElementType=T(s):t.push({name:l(s.name)||"",isOptional:s.questionToken!==void 0,type:P()})}),n.typeLiteralMembers=t}else if(i.default.isArrayTypeNode(e))n.arrayElementType=P(e.elementType);else if(i.default.isFunctionTypeNode(e))n.isFunction=!0;else if(i.default.isTypeReferenceNode(e))if(ce(l(e.typeName)),e.typeArguments)n.generics=[l(e.typeName),...e.typeArguments.map(t=>P(t))];else return l(e.typeName);else{if(i.default.isIndexedAccessTypeNode(e))return T(e,!0);if(i.default.isThisTypeNode(e))return T(e);if(i.default.isParenthesizedTypeNode(e))return T(e);if(i.default.isConditionalTypeNode(e))return T(e);if(i.default.isTypeQueryNode(e))return T(e);if(i.default.isConstructorTypeNode(e))n.isConstructor=!0;else if(i.default.isTupleTypeNode(e))n.tupleMembers=e.elements.map(P);else{if(Object.keys(Y).includes(String(e.kind)))return Y[e.kind]||N;if(i.default.isOptionalTypeNode(e))Object.assign(n,T(e)),n.isOptionalInTuple=!0;else if(i.default.isNamedTupleMember(e))Object.assign(n,T(e));else return i.default.isTypeOperatorNode(e)&&e.operator===i.default.SyntaxKind.KeyOfKeyword,T(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 Ne(e){var n,t;(n=e.methods)==null||n.forEach(pe),(t=e.properties)==null||t.forEach(le)}function Oe(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 l(e){if(!e)return e;if(e.end<0)return e.text;try{return i.default.isQualifiedName(e)?l(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=k.cwd()){return ne(e).replace(ne(n)+"/","")}function ne(e){let n=w.sep;return e.split(n).join("/")}function ue(e){return e instanceof Array?e:[e]}function b(e){F.OUTPUT_LOG&&console.log(e)}function W(e,n){let t=a=>{let f=e.replace(/\\/g,"/"),o=a.replace(/\\/g,"/");o=o.replace(/\*\*/g,"<<double_star>>");let d=o.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!a.startsWith("/")&&!a.startsWith("*")&&(d=".*"+d),d="^"+d+"$",new RegExp(d).test(f)};return(n instanceof Array?n:[n]).some(t)}function H(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:f,interfaceDefinitions:o,enumDefinitions:m,typeAliasDefinitions:d}=I(n,t),D=[],x=[];function u(y){let c=f.get(y),g=[];return c?(c.superClassName&&g.push(c.superClassName),g.push(...c.implementations||[])):(c=o.get(y),c?g.push(...c.implementations||[]):(c=d.get(y),c&&g.push(...c.implementations||[]))),g.flatMap(r=>[r,...u(r)])||[]}function h(y,c){return u(y.name).includes(c)}function K(y){if(j.default.isClassDeclaration(y)&&y.name!==void 0){let c=y.name.text,g=f.get(c);if(!c||!g||s&&!h(g,"EnableReflect"))return;x.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${c} })`);return}y.forEachChild(K)}function v(){let y=[];return f.forEach((c,g)=>{s&&!h(c,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${g}: ${JSON.stringify(c)} })`)}),o.forEach((c,g)=>{s&&!h(c,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${g}: ${JSON.stringify(c)} })`)}),m.forEach((c,g)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${g}: ${JSON.stringify(c)} })`)}),d.forEach((c,g)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${g}: ${JSON.stringify(c)} })`)}),y.join(`
2
+ `)}return{outputAllMetas:v,transform:(y,c)=>{let g=(typeof n=="string"?[n]:n).map(r=>r+"/**.ts");if(W(c,g))try{let r=j.default.createSourceFile(c,y,j.default.ScriptTarget.Latest,!1);return D.length=0,x.length=0,K(r),`${D.join(";")};${y};${x.join(";")}`}catch(r){return console.error(`[reflect-parser-plugin] Error processing ${c}:`,r),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
3
  ${t}`:n.transform(t,s))}}0&&(module.exports={DEBUG_CONFIG,parseSource,reflectLoader,reflectParserPlugin,setupReflectTypes,updateReflectModules});
@@ -1,3 +1,3 @@
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};
1
+ var $=(e,n,t)=>new Promise((s,l)=>{var o=d=>{try{m(t.next(d))}catch(D){l(D)}},a=d=>{try{m(t.throw(d))}catch(D){l(D)}},m=d=>d.done?s(d.value):Promise.resolve(d.value).then(o,a);m((t=t.apply(e,n)).next())});import B from"typescript";import i from"typescript";import*as E from"fs";import*as M from"process";import*as w from"path";import{pathToFileURL as ce}from"url";var z={OUTPUT_LOG:!1},O=new Map,S=new Map,I=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"},N="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=>S.set(e,{name:e}));var v,Q=!1,R=Reflect;function Pe(e){return $(this,null,function*(){let{filePaths:n,exclude:t,sourceFolder:s,distFolder:l}=e;if(s=w.resolve(s||M.cwd()),l=w.resolve(l||M.cwd()),R.__classes!==void 0)return;n=oe(n);let o=n.map(a=>w.join(s,a));G(o,t),R.__classes={};for(let[a,m]of O)R.__classes[a]=m;R.__interfaces={};for(let[a,m]of S)R.__interfaces[a]=m;R.__typeAliases={};for(let[a,m]of A)R.__typeAliases[a]=m;R.__constTypes={};for(let[a,m]of q)R.__constTypes[a]=m;yield Promise.all(n.map(a=>ee(a,l)))})}function ee(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(d=>{ee(w.join(e,d),n)});return}let l=w.join(n,e).replace(/\.ts$/,".js"),a=yield import(ce(l).href);R.__classDef={},Object.values(a).forEach(m=>{typeof m=="function"&&(R.__classDef[m.name]=m)})})}function G(e,n){if(e||(e=[M.cwd()]),e=oe(e),!Q){let t=ne(e,n),s=i.createProgram(t,{});v=s.getTypeChecker(),t=t.map(o=>W(o)),s.getSourceFiles().filter(o=>t.includes(W(o.fileName))).forEach(o=>{b(`parse file: ${o.fileName}`),te(o)});for(let o of C.keys())!O.has(o)&&!S.has(o)&&!I.has(o)&&!A.has(o)&&!X.includes(o)&&!Y.includes(o)&&(b(`remove unknown typeName: ${o}`),C.delete(o));Array.from(O.values()).forEach(Te),Array.from(S.values()).forEach(he),[O,S,A].forEach(De),Q=!0}return{classDefinitions:O,interfaceDefinitions:S,enumDefinitions:I,typeAliasDefinitions:A,constTypeDefinitions:q}}function ne(e,n){let t=[];return e.forEach(s=>{if(s=w.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(a=>t.push(...ne([w.join(s,a)],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)?de(e):e.forEachChild(te)}function le(e){var m,d,D,x,u,h,K,k,L,y,f,g;let n=c(e.name);if(!n)return;let t=c((D=(d=(m=e.heritageClauses)==null?void 0:m.find(r=>r.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:d.types)==null?void 0:D[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=>c(r.expression)),l=[],o=[];for(let r of e.members)if(i.isPropertyDeclaration(r))l.push({name:c(r.name),isOptional:r.questionToken!==void 0,type:T(r),isPrivate:(h=r.modifiers)==null?void 0:h.some(p=>p.kind===i.SyntaxKind.PrivateKeyword),isStatic:(K=r.modifiers)==null?void 0:K.some(p=>p.kind===i.SyntaxKind.StaticKeyword)});else if(i.isMethodDeclaration(r))o.push({name:c(r.name),returnType:T(r),isPrivate:(k=r.modifiers)==null?void 0:k.some(p=>p.kind===i.SyntaxKind.PrivateKeyword),isStatic:(L=r.modifiers)==null?void 0:L.some(p=>p.kind===i.SyntaxKind.StaticKeyword),isAsync:(y=r.modifiers)==null?void 0:y.some(p=>p.kind===i.SyntaxKind.AsyncKeyword),args:r.parameters.map(p=>({name:c(p.name),type:T(p),isOptional:p.questionToken!==void 0}))});else if(i.isGetAccessorDeclaration(r)){let p=l.find(_=>_.name===c(r.name));p||(p={name:c(r.name),isOptional:r.questionToken===void 0,type:T(r)},l.push(p)),p.accessor=p.accessor||{},p.accessor.getter={isPrivate:((f=r.modifiers)==null?void 0:f.some(_=>_.kind===i.SyntaxKind.PrivateKeyword))||!1},p.isPrivate=p.accessor.getter.isPrivate}else if(i.isSetAccessorDeclaration(r)){let p=l.find(_=>_.name===c(r.name));p||(p={name:c(r.name),isOptional:r.questionToken===void 0,type:T(r)},l.push(p)),p.accessor=p.accessor||{},p.accessor.setter={isPrivate:((g=r.modifiers)==null?void 0:g.some(_=>_.kind===i.SyntaxKind.PrivateKeyword))||!1}}let a={name:n,superClassName:t,implementations:s,properties:l,methods:o};b(`Define class: ${c(e.name)}`),O.set(n,a)}function pe(e){var m,d,D,x;let n=c(e.name);if(!n)return;let t=((d=(m=e.heritageClauses)==null?void 0:m.find(u=>u.token===i.SyntaxKind.ExtendsKeyword))==null?void 0:d.types.map(u=>c(u.expression)))||[],s=[],l=[],o;for(let u of e.members)i.isPropertySignature(u)?s.push({name:c(u.name),isOptional:u.questionToken!==void 0,type:T(u),isPrivate:((D=u.modifiers)==null?void 0:D.some(h=>h.kind===i.SyntaxKind.PrivateKeyword))||!1}):i.isMethodSignature(u)?l.push({name:u.name.text,returnType:T(u),isPrivate:((x=u.modifiers)==null?void 0:x.some(h=>h.kind===i.SyntaxKind.PrivateKeyword))||!1,args:u.parameters.map(h=>({name:c(h.name),type:T(h),isOptional:h.questionToken!==void 0}))}):i.isIndexSignatureDeclaration(u)&&(o=T(u));let a=S.get(n);a?(a.implementations=F(a.implementations||[],t),a.methods=F(a.methods||[],l,(u,h)=>u.name===h.name),a.properties=F(a.properties||[],s,(u,h)=>u.name===h.name),a.indexElementType=o,b(`Merge interface ${c(e.name)}`)):(a={name:n,implementations:t,methods:l,properties:s,indexElementType:o},S.set(n,a),b(`Define interface ${c(e.name)}`))}function ue(e){let n=c(e.name);n&&(I.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),T(e))}function de(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)?ye(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":N}function ye(e){let n=[];return e.elements.forEach(t=>{if(i.isStringLiteral(t))return n.push(c(t))}),n.length===0?N: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 T(e,n=!1){if(e.type&&!n)return P(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?P("type"in s?s.type:s):N}function P(e){let n={};if(e===void 0)return N;if(i.isUnionTypeNode(e))n.unionMembers=e.types.map(P);else if(i.isIntersectionTypeNode(e))n.intersectionMembers=e.types.map(P);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:T(s)}):i.isIndexSignatureDeclaration(s)?n.indexElementType=T(s):t.push({name:c(s.name)||"",isOptional:s.questionToken!==void 0,type:P()})}),n.typeLiteralMembers=t}else if(i.isArrayTypeNode(e))n.arrayElementType=P(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=>P(t))];else return c(e.typeName);else{if(i.isIndexedAccessTypeNode(e))return T(e,!0);if(i.isThisTypeNode(e))return T(e);if(i.isParenthesizedTypeNode(e))return T(e);if(i.isConditionalTypeNode(e))return T(e);if(i.isTypeQueryNode(e))return T(e);if(i.isConstructorTypeNode(e))n.isConstructor=!0;else if(i.isTupleTypeNode(e))n.tupleMembers=e.elements.map(P);else{if(Object.keys(J).includes(String(e.kind)))return J[e.kind]||N;if(i.isOptionalTypeNode(e))Object.assign(n,T(e)),n.isOptionalInTuple=!0;else if(i.isNamedTupleMember(e))Object.assign(n,T(e));else return i.isTypeOperatorNode(e)&&e.operator===i.SyntaxKind.KeyOfKeyword,T(e,!0)}}return n}var F=(e,n,t)=>[...(e==null?void 0:e.filter(s=>!(n!=null&&n.some(l=>(t||(()=>l===s))(l,s)))))||[],...n||[]];function j(e){if(e!==void 0&&e!==N)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 he(e){var n,t;(n=e.methods)==null||n.forEach(ae),(t=e.properties)==null||t.forEach(re)}function re(e){e.type=j(e.type)}function ae(e){var n;(n=e.args)==null||n.forEach(t=>t.type=j(t.type)),e.returnType=j(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 De(e){for(let n of e.values())U(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=M.cwd()){return H(e).replace(H(n)+"/","")}function H(e){let n=w.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=l=>{let o=e.replace(/\\/g,"/"),a=l.replace(/\\/g,"/");a=a.replace(/\*\*/g,"<<double_star>>");let d=a.replace(/([.+^${}()|[\]\\])/g,"\\$1").replace(/<<double_star>>/g,".*").replace(/\*/g,"[^/]*");return!l.startsWith("/")&&!l.startsWith("*")&&(d=".*"+d),d="^"+d+"$",new RegExp(d).test(o)};return(n instanceof Array?n:[n]).some(t)}function fe(e){let{sourcePaths:n,exclude:t,forEnabledClassOnly:s,outputLog:l}=e;if(l&&(z.OUTPUT_LOG=!0),!n)throw new Error("need provide source paths for reflect loader");let{classDefinitions:o,interfaceDefinitions:a,enumDefinitions:m,typeAliasDefinitions:d}=G(n,t),D=[],x=[];function u(y){let f=o.get(y),g=[];return f?(f.superClassName&&g.push(f.superClassName),g.push(...f.implementations||[])):(f=a.get(y),f?g.push(...f.implementations||[]):(f=d.get(y),f&&g.push(...f.implementations||[]))),g.flatMap(r=>[r,...u(r)])||[]}function h(y,f){return u(y.name).includes(f)}function K(y){if(B.isClassDeclaration(y)&&y.name!==void 0){let f=y.name.text,g=o.get(f);if(!f||!g||s&&!h(g,"EnableReflect"))return;x.push(`Reflect.__classDef = Object.assign(Reflect.__classDef || {}, { ${f} })`);return}y.forEachChild(K)}function k(){let y=[];return o.forEach((f,g)=>{s&&!h(f,"EnableReflect")||y.push(`Reflect.__classes = Object.assign(Reflect.__classes || {}, { ${g}: ${JSON.stringify(f)} })`)}),a.forEach((f,g)=>{s&&!h(f,"EnableReflect")||y.push(`Reflect.__interfaces = Object.assign(Reflect.__interfaces || {}, { ${g}: ${JSON.stringify(f)} })`)}),m.forEach((f,g)=>{y.push(`Reflect.__enums = Object.assign(Reflect.__enums || {}, { ${g}: ${JSON.stringify(f)} })`)}),d.forEach((f,g)=>{y.push(`Reflect.__typeAliases = Object.assign(Reflect.__typeAliases || {}, { ${g}: ${JSON.stringify(f)} })`)}),y.join(`
2
+ `)}return{outputAllMetas:k,transform:(y,f)=>{let g=(typeof n=="string"?[n]:n).map(r=>r+"/**.ts");if(V(f,g))try{let r=B.createSourceFile(f,y,B.ScriptTarget.Latest,!1);return D.length=0,x.length=0,K(r),`${D.join(";")};${y};${x.join(";")}`}catch(r){return console.error(`[reflect-parser-plugin] Error processing ${f}:`,r),null}}}}var Re=process.cwd().replace(/\\/g,"/")+"/";function Fe(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,Fe as reflectParserPlugin,Pe 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.16",
3
+ "version": "1.0.18",
4
4
  "description": "Type reflection and validation library for TypeScript",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -65,7 +65,12 @@ export interface RawTypeDefinition {
65
65
  isConstructor?: boolean;
66
66
  }
67
67
  type FilePathRule = string | RegExp | (string | RegExp)[];
68
- export declare function setupReflectTypes(filePaths: string | string[], exclude?: FilePathRule, distFolder?: string): Promise<void>;
68
+ export declare function setupReflectTypes(cfg: {
69
+ filePaths: string | string[];
70
+ exclude?: FilePathRule;
71
+ sourceFolder?: string;
72
+ distFolder?: string;
73
+ }): Promise<void>;
69
74
  export declare function updateReflectModules(filePath: string, distFolder: string): Promise<void>;
70
75
  export declare function parseSource(filePaths?: string | string[], exclude?: FilePathRule): {
71
76
  classDefinitions: Map<string, RawClassDefinition>;