ts-ref-kit 1.0.17 → 1.0.19

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