@bobtail.software/b-ssr 1.0.34 → 1.0.35

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,4 +1,4 @@
1
- "use strict";var de=Object.create;var I=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var be=(o,l)=>{for(var x in l)I(o,x,{get:l[x],enumerable:!0})},te=(o,l,x,C)=>{if(l&&typeof l=="object"||typeof l=="function")for(let w of fe(l))!he.call(o,w)&&w!==x&&I(o,w,{get:()=>l[w],enumerable:!(C=me(l,w))||C.enumerable});return o};var re=(o,l,x)=>(x=o!=null?de(ye(o)):{},te(l||!o||!o.__esModule?I(x,"default",{value:o,enumerable:!0}):x,o)),xe=o=>te(I({},"__esModule",{value:!0}),o);var Se={};be(Se,{rpcGeneratorPlugin:()=>Pe});module.exports=xe(Se);var ne=re(require("fast-glob"),1),O=require("fs/promises"),u=re(require("path"),1),K=require("prettier"),n=require("ts-morph"),k="virtual:b-ssr-rpc-universal:";function Te(o){let l=o.replace(/[^a-zA-Z0-9]+(.)?/g,(x,C)=>C?C.toUpperCase():"");return l.charAt(0).toLowerCase()+l.slice(1)}function Z(o,l,x){let C=u.default.basename(x,u.default.extname(x))||"Index",w=l.replace(/:[a-zA-Z0-9_]+/g,"").replace(/\//g," "),q=`${o} ${w} ${C}`;return Te(q)}function Pe(o={}){let{routerPattern:l="src-ts/routers/**/*.mts",tsConfigFilePath:x="tsconfig.json",routerBaseDir:C="src-ts/routers"}=o,w=new Map,q=new Set,U=new n.Project({tsConfigFilePath:x,skipAddingFilesFromTsConfig:!1}),se=u.default.resolve(process.cwd(),C||".");async function B(t){try{let D=function(e){return e.replace(/import\(['"](.*?)['"]\)/g,(c,a)=>{if(!u.default.isAbsolute(a))return c;let i=a;if(!u.default.extname(i)){let b=U.getSourceFile(y=>y.getFilePath().replace(/\.(mts|ts|tsx)$/,"")===a);b&&(i=b.getFilePath())}let p=u.default.relative(u.default.dirname($),i).replace(/\\/g,"/");return p.startsWith(".")||(p="./"+p),`import("${p}")`})},M=function(e,c){if(e.getSymbol()?.getName()==="Promise"){let g=e.getAwaitedType();if(g)return`Promise<${M(g,c)}>`}let a=e.getAliasSymbol()??e.getSymbol();if(a?.getName()==="__object")return D(e.getText(c,n.ts.TypeFormatFlags.NoTruncation|n.ts.TypeFormatFlags.UseFullyQualifiedType));if(e.isObject()&&!a){let g=(f,h=0)=>{if(!(h>5)){if(f.isArray()){let T=f.getArrayElementType();T&&g(T,h);return}if(f.isObject()&&!f.getSymbol()&&!f.getAliasSymbol()){for(let T of f.getApparentProperties()){let v=T.getValueDeclaration();v&&g(T.getTypeAtLocation(v),h+1)}return}M(f,c)}};return g(e),D(e.getText(c,n.ts.TypeFormatFlags.NoTruncation|n.ts.TypeFormatFlags.UseFullyQualifiedType))}if(!a)return D(e.getText(c,n.ts.TypeFormatFlags.NoTruncation));let i=a.getDeclarations()[0];if(!i)return a.getName();if(n.Node.isImportSpecifier(i)||n.Node.isImportClause(i)){let g=i.getFirstAncestorByKind(n.SyntaxKind.ImportDeclaration);if(g){let f=g.getModuleSpecifierValue(),h=a.getName();return F.has(f)||F.set(f,new Set),F.get(f)?.add(h),h}}let p=i.getSourceFile();if(p.getFilePath()===m.getFilePath())return a.getName();if(p.isInNodeModules())return D(e.getText(c,n.ts.TypeFormatFlags.NoTruncation));let b=u.default.relative(u.default.dirname($),p.getFilePath()).replace(/\\/g,"/"),E=b.startsWith(".")?b:`./${b}`,S=a.getName();return F.has(E)||F.set(E,new Set),F.get(E)?.add(S),S},Q=function(e){let c;if(n.Node.isFunctionLikeDeclaration(e)||n.Node.isArrowFunction(e)){let a=e.getDescendantsOfKind(n.SyntaxKind.ReturnStatement);for(let i of a){let p=i.getExpression();if(p?.isKind(n.SyntaxKind.SatisfiesExpression)){c=p.getTypeNode()?.getType();break}}}if(c)return M(c,e);{let a=e.getType().getCallSignatures();if(a.length>0){let i=a[0]?.getReturnType();return M(i,e)}}return"unknown"};var d=D,s=M,r=Q;let m=U.addSourceFileAtPath(t);await m.refreshFromFileSystem(),U.resolveSourceFileDependencies();let P=m.getDescendantsOfKind(n.SyntaxKind.CallExpression),R=P.filter(e=>e.getExpression().getText().endsWith(".addRpcRoute")),A=P.filter(e=>e.getExpression().getText().endsWith(".addRenderRoute")),j=P.filter(e=>e.getExpression().getText().endsWith(".addLoaderRoute")),L=u.default.extname(t),$=t.substring(0,t.length-L.length)+".universal.d.ts",V=u.default.resolve(t);if(R.length===0&&A.length===0&&j.length===0){w.delete(V),q.delete(V),$!==t&&await(0,O.unlink)($).catch(()=>{});return}q.add(V);let _=[],F=new Map;F.has("fastify")||F.set("fastify",new Set),F.get("fastify")?.add("FastifyRequest"),F.get("fastify")?.add("FastifyReply");let ce=e=>{let c="unknown",a="unknown",i="unknown",p=!1;if(!e||!n.Node.isObjectLiteralExpression(e))return{paramsType:c,queryType:a,bodyType:i,isMultipart:p};let b=e.getProperty("schema");if(b?.isKind(n.SyntaxKind.PropertyAssignment)){let y=b.getInitializer();if(y?.isKind(n.SyntaxKind.Identifier)){let S=y.getSymbol()?.getValueDeclaration();if(S){let g=S.getFirstDescendantByKind(n.SyntaxKind.ObjectLiteralExpression);g&&(y=g)}}if(y&&n.Node.isObjectLiteralExpression(y)){let E=y.getProperty("consumes");if(E?.isKind(n.SyntaxKind.PropertyAssignment)){let g=E.getInitializer();n.Node.isArrayLiteralExpression(g)&&(p=g.getElements().some(f=>f.isKind(n.SyntaxKind.StringLiteral)&&f.getLiteralValue()==="multipart/form-data"))}let S=g=>{let f=y.getProperty(g);if(f?.isKind(n.SyntaxKind.PropertyAssignment)){let h=f.getInitializer();if(h){let T=h.getType(),v=T.getProperty("_output");return M(v?v.getTypeAtLocation(h).getApparentType():T,h)}}return"unknown"};if(c=S("params"),a=S("querystring"),i=S("body"),p){let g="{ file: File }";i=i!=="unknown"&&i.trim().startsWith("{")?`(${i} & ${g})`:g}}}return{paramsType:c,queryType:a,bodyType:i,isMultipart:p}},N=u.default.relative(se,u.default.dirname(t)).split(u.default.sep).join("/"),pe=N==="."||!N?"":N.startsWith("/")?N:"/"+N,z=(e,c)=>{let[a,i]=e.getArguments();if(!a?.isKind(n.SyntaxKind.StringLiteral))return;let p=a.getLiteralValue(),b="unknown",y=pe,{paramsType:E,queryType:S,bodyType:g,isMultipart:f}=ce(i);if(i?.isKind(n.SyntaxKind.ObjectLiteralExpression)){let v=i.getProperty("prefix");if(v?.isKind(n.SyntaxKind.PropertyAssignment)){let W=v.getInitializer();W?.isKind(n.SyntaxKind.StringLiteral)&&(y=W.getLiteralValue())}let ee=i.getProperty("handler");if(ee?.isKind(n.SyntaxKind.PropertyAssignment)){let W=ee.getInitializer();W&&(b=Q(W),b.startsWith("Promise<")||(b=`Promise<${b}>`))}}let h="",T="";c==="rpc"?(h=u.default.join(y,"rpc",p).replace(/\\/g,"/"),T=Z("action",y,p)):c==="loader"?(h=u.default.join(y,"loader",p).replace(/\\/g,"/"),T=Z("loader",y,p)):c==="api"&&(h=u.default.join(y,"api",p).replace(/\\/g,"/"),T=Z("get",y,p)),T&&_.push({type:c,name:T,returnType:b,url:p,rpcUrl:h,loaderUrl:h,paramsType:E,queryType:S,bodyType:g,isMultipart:f})};R.forEach(e=>z(e,"rpc")),A.forEach(e=>z(e,"loader")),j.forEach(e=>z(e,"api"));let H=[];for(let[e,c]of F.entries())H.push(`import type { ${[...c].sort().join(", ")} } from "${e}";`);let X=[];_.forEach(e=>{X.push(oe(e))});let G=`// AUTO-GENERATED by @bobtail.software/b-ssr. DO NOT EDIT.
1
+ "use strict";var de=Object.create;var K=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var be=(o,l)=>{for(var x in l)K(o,x,{get:l[x],enumerable:!0})},te=(o,l,x,C)=>{if(l&&typeof l=="object"||typeof l=="function")for(let P of fe(l))!he.call(o,P)&&P!==x&&K(o,P,{get:()=>l[P],enumerable:!(C=me(l,P))||C.enumerable});return o};var re=(o,l,x)=>(x=o!=null?de(ye(o)):{},te(l||!o||!o.__esModule?K(x,"default",{value:o,enumerable:!0}):x,o)),xe=o=>te(K({},"__esModule",{value:!0}),o);var Se={};be(Se,{rpcGeneratorPlugin:()=>Pe});module.exports=xe(Se);var ne=re(require("fast-glob"),1),O=require("fs/promises"),u=re(require("path"),1),U=require("prettier"),s=require("ts-morph"),k="virtual:b-ssr-rpc-universal:";function Te(o){let l=o.replace(/[^a-zA-Z0-9]+(.)?/g,(x,C)=>C?C.toUpperCase():"");return l.charAt(0).toLowerCase()+l.slice(1)}function Z(o,l,x){let C=u.default.basename(x,u.default.extname(x))||"Index",P=l.replace(/:[a-zA-Z0-9_]+/g,"").replace(/\//g," "),q=`${o} ${P} ${C}`;return Te(q)}function Pe(o={}){let{routerPattern:l="src-ts/routers/**/*.mts",tsConfigFilePath:x="tsconfig.json",routerBaseDir:C="src-ts/routers"}=o,P=new Map,q=new Set,B=new s.Project({tsConfigFilePath:x,skipAddingFilesFromTsConfig:!1}),se=u.default.resolve(process.cwd(),C||".");async function I(t){try{let D=function(e){return e.replace(/import\(['"](.*?)['"]\)/g,(c,a)=>{if(!u.default.isAbsolute(a))return c;let i=a;if(!u.default.extname(i)){let b=B.getSourceFile(y=>y.getFilePath().replace(/\.(mts|ts|tsx)$/,"")===a);b&&(i=b.getFilePath())}let p=u.default.relative(u.default.dirname($),i).replace(/\\/g,"/");return p.startsWith(".")||(p="./"+p),`import("${p}")`})},M=function(e,c){if(e.getSymbol()?.getName()==="Promise"){let g=e.getAwaitedType();if(g)return`Promise<${M(g,c)}>`}let a=e.getAliasSymbol()??e.getSymbol();if(a?.getName()==="__object")return D(e.getText(c,s.ts.TypeFormatFlags.NoTruncation|s.ts.TypeFormatFlags.UseFullyQualifiedType));if(e.isObject()&&!a){let g=(f,h=0)=>{if(!(h>5)){if(f.isArray()){let T=f.getArrayElementType();T&&g(T,h);return}if(f.isObject()&&!f.getSymbol()&&!f.getAliasSymbol()){for(let T of f.getApparentProperties()){let v=T.getValueDeclaration();v&&g(T.getTypeAtLocation(v),h+1)}return}M(f,c)}};return g(e),D(e.getText(c,s.ts.TypeFormatFlags.NoTruncation|s.ts.TypeFormatFlags.UseFullyQualifiedType))}if(!a)return D(e.getText(c,s.ts.TypeFormatFlags.NoTruncation));let i=a.getDeclarations()[0];if(!i)return a.getName();if(s.Node.isImportSpecifier(i)||s.Node.isImportClause(i)){let g=i.getFirstAncestorByKind(s.SyntaxKind.ImportDeclaration);if(g){let f=g.getModuleSpecifierValue(),h=a.getName();return F.has(f)||F.set(f,new Set),F.get(f)?.add(h),h}}let p=i.getSourceFile();if(p.getFilePath()===m.getFilePath())return a.getName();if(p.isInNodeModules())return D(e.getText(c,s.ts.TypeFormatFlags.NoTruncation));let b=u.default.relative(u.default.dirname($),p.getFilePath()).replace(/\\/g,"/"),E=b.startsWith(".")?b:`./${b}`,S=a.getName();return F.has(E)||F.set(E,new Set),F.get(E)?.add(S),S},Q=function(e){let c;if(s.Node.isFunctionLikeDeclaration(e)||s.Node.isArrowFunction(e)){let a=e.getDescendantsOfKind(s.SyntaxKind.ReturnStatement);for(let i of a){let p=i.getExpression();if(p?.isKind(s.SyntaxKind.SatisfiesExpression)){c=p.getTypeNode()?.getType();break}}}if(c)return M(c,e);{let a=e.getType().getCallSignatures();if(a.length>0){let i=a[0]?.getReturnType();return M(i,e)}}return"unknown"};var d=D,n=M,r=Q;let m=B.addSourceFileAtPath(t);await m.refreshFromFileSystem(),B.resolveSourceFileDependencies();let w=m.getDescendantsOfKind(s.SyntaxKind.CallExpression),R=w.filter(e=>e.getExpression().getText().endsWith(".addRpcRoute")),A=w.filter(e=>e.getExpression().getText().endsWith(".addRenderRoute")),j=w.filter(e=>e.getExpression().getText().endsWith(".addLoaderRoute")),L=u.default.extname(t),$=t.substring(0,t.length-L.length)+".universal.d.ts",V=u.default.resolve(t);if(R.length===0&&A.length===0&&j.length===0){P.delete(V),q.delete(V),$!==t&&await(0,O.unlink)($).catch(()=>{});return}q.add(V);let _=[],F=new Map;F.has("fastify")||F.set("fastify",new Set),F.get("fastify")?.add("FastifyRequest"),F.get("fastify")?.add("FastifyReply");let ce=e=>{let c="unknown",a="unknown",i="unknown",p=!1;if(!e||!s.Node.isObjectLiteralExpression(e))return{paramsType:c,queryType:a,bodyType:i,isMultipart:p};let b=e.getProperty("schema");if(b?.isKind(s.SyntaxKind.PropertyAssignment)){let y=b.getInitializer();if(y?.isKind(s.SyntaxKind.Identifier)){let S=y.getSymbol()?.getValueDeclaration();if(S){let g=S.getFirstDescendantByKind(s.SyntaxKind.ObjectLiteralExpression);g&&(y=g)}}if(y&&s.Node.isObjectLiteralExpression(y)){let E=y.getProperty("consumes");if(E?.isKind(s.SyntaxKind.PropertyAssignment)){let g=E.getInitializer();s.Node.isArrayLiteralExpression(g)&&(p=g.getElements().some(f=>f.isKind(s.SyntaxKind.StringLiteral)&&f.getLiteralValue()==="multipart/form-data"))}let S=g=>{let f=y.getProperty(g);if(f?.isKind(s.SyntaxKind.PropertyAssignment)){let h=f.getInitializer();if(h){let T=h.getType(),v=T.getProperty("_output");return M(v?v.getTypeAtLocation(h).getApparentType():T,h)}}return"unknown"};if(c=S("params"),a=S("querystring"),i=S("body"),p){let g="{ file: File }";i=i!=="unknown"&&i.trim().startsWith("{")?`(${i} & ${g})`:g}}}return{paramsType:c,queryType:a,bodyType:i,isMultipart:p}},N=u.default.relative(se,u.default.dirname(t)).split(u.default.sep).join("/"),pe=N==="."||!N?"":N.startsWith("/")?N:"/"+N,z=(e,c)=>{let[a,i]=e.getArguments();if(!a?.isKind(s.SyntaxKind.StringLiteral))return;let p=a.getLiteralValue(),b="unknown",y=pe,{paramsType:E,queryType:S,bodyType:g,isMultipart:f}=ce(i);if(i?.isKind(s.SyntaxKind.ObjectLiteralExpression)){let v=i.getProperty("prefix");if(v?.isKind(s.SyntaxKind.PropertyAssignment)){let W=v.getInitializer();W?.isKind(s.SyntaxKind.StringLiteral)&&(y=W.getLiteralValue())}let ee=i.getProperty("handler");if(ee?.isKind(s.SyntaxKind.PropertyAssignment)){let W=ee.getInitializer();W&&(b=Q(W),b.startsWith("Promise<")||(b=`Promise<${b}>`))}}let h="",T="";c==="rpc"?(h=u.default.join(y,"rpc",p).replace(/\\/g,"/"),T=Z("action",y,p)):c==="loader"?(h=u.default.join(y,"loader",p).replace(/\\/g,"/"),T=Z("loader",y,p)):c==="api"&&(h=u.default.join(y,"api",p).replace(/\\/g,"/"),T=Z("get",y,p)),T&&_.push({type:c,name:T,returnType:b,url:p,rpcUrl:h,loaderUrl:h,paramsType:E,queryType:S,bodyType:g,isMultipart:f})};R.forEach(e=>z(e,"rpc")),A.forEach(e=>z(e,"loader")),j.forEach(e=>z(e,"api"));let H=[];for(let[e,c]of F.entries())H.push(`import type { ${[...c].sort().join(", ")} } from "${e}";`);let X=[];_.forEach(e=>{X.push(oe(e))});let G=`// AUTO-GENERATED by @bobtail.software/b-ssr. DO NOT EDIT.
2
2
  /* eslint-disable */
3
3
 
4
4
  `+(H.length>0?H.join(`
@@ -6,7 +6,7 @@
6
6
 
7
7
  `:"")+X.join(`
8
8
 
9
- `);try{let e=await(0,K.resolveConfig)($)||{};G=await(0,K.format)(G,{...e,parser:"typescript",filepath:$})}catch{}await(0,O.writeFile)($,G);let Y=[],J=[];_.forEach(e=>{let a=e.type==="rpc"?"POST":"GET",i=e.type==="loader"?e.loaderUrl:e.rpcUrl;J.push({name:e.name,rpcUrl:i,method:a,isMultipart:!!e.isMultipart}),Y.push({name:e.name,url:e.url,type:e.type,requiresArgs:!0})});let ue=`
9
+ `);try{let e=await(0,U.resolveConfig)($)||{};G=await(0,U.format)(G,{...e,parser:"typescript",filepath:$})}catch{}await(0,O.writeFile)($,G);let Y=[],J=[];_.forEach(e=>{let a=e.type==="rpc"?"POST":"GET",i=e.type==="loader"?e.loaderUrl:e.rpcUrl;J.push({name:e.name,rpcUrl:i,method:a,isMultipart:!!e.isMultipart}),Y.push({name:e.name,url:e.url,type:e.type,requiresArgs:!0})});let ue=`
10
10
  import { createClientRpc } from '@bobtail.software/b-ssr/client';
11
11
 
12
12
  if (import.meta.env.DEV) {
@@ -21,15 +21,15 @@
21
21
  });
22
22
  `).join(`
23
23
  `)}
24
- `,ge=ae(Y,t);w.set(u.default.resolve(t),{client:ue,server:ge})}catch(m){console.error(`[rpc-generator] Error al procesar ${t}:`,{error:m})}}let ie=(t,d,s)=>{if(d.includes("node_modules")||d.startsWith(k))return null;if(s?.ssr===!0&&/\.[cm]?[jt]sx?$/.test(d)){let r=/\brequire\s*\(/.test(t),m=/\bmodule\.exports\b/.test(t),P=/\bexports\./.test(t);if(r||m||P)return"import { createRequire } from 'module';"+`
24
+ `,ge=ae(Y,t);P.set(u.default.resolve(t),{client:ue,server:ge})}catch(m){console.error(`[rpc-generator] Error al procesar ${t}:`,{error:m})}}let ie=(t,d,n)=>{if(d.includes("node_modules")||d.startsWith(k))return null;if(n?.ssr===!0&&/\.[cm]?[jt]sx?$/.test(d)){let r=/\brequire\s*\(/.test(t),m=/\bmodule\.exports\b/.test(t),w=/\bexports\./.test(t);if(r||m||w)return"import { createRequire } from 'module';"+`
25
25
  const require = createRequire(import.meta.url);
26
26
  const module = { exports: {} };
27
27
  const exports = module.exports;
28
28
  `+t+`
29
- export default module.exports;`}return null};function oe(t){let d=we(t),s="";return d.length>0&&(s=`args: { ${d.join("; ")} }`),s||(s="args: { signal?: AbortSignal }"),`export declare const ${t.name}: (${s}, ssrContext?: { req?: FastifyRequest, reply?: FastifyReply }) => ${t.returnType};`}function ae(t,d){if(t.length===0)return"";let s=d.replace(/\\/g,"/");return`
29
+ export default module.exports;`}return null};function oe(t){let d=we(t),n="";return d.length>0&&(n=`args: { ${d.join("; ")} }`),n||(n="args: { signal?: AbortSignal }"),`export declare const ${t.name}: (${n}, ssrContext?: { req?: FastifyRequest, reply?: FastifyReply }) => ${t.returnType};`}function ae(t,d){if(t.length===0)return"";let n=d.replace(/\\/g,"/");return`
30
30
 
31
31
  if (typeof window !== 'undefined' && typeof document !== 'undefined') {
32
- throw new Error('\u{1F6A8} [B-SSR SECURITY ALERT] Server-side code leaked to browser: ${s}');
32
+ throw new Error('\u{1F6A8} [B-SSR SECURITY ALERT] Server-side code leaked to browser: ${n}');
33
33
  }
34
34
 
35
35
  let initPromise;
@@ -42,7 +42,7 @@ export default module.exports;`}return null};function oe(t){let d=we(t),s="";ret
42
42
  rpcOptionsMap = new Map();
43
43
  renderOptionsMap = new Map();
44
44
  loaderApiOptionsMap = new Map();
45
- const serverModulePath = '${s}';
45
+ const serverModulePath = '${n}';
46
46
 
47
47
  if (typeof globalThis.require === 'undefined') {
48
48
  try {
@@ -89,12 +89,12 @@ export default module.exports;`}return null};function oe(t){let d=we(t),s="";ret
89
89
  return initPromise;
90
90
  }
91
91
 
92
- ${t.map(r=>{let m=[];r.requiresArgs&&m.push("args"),m.push("ssrContext");let P=r.requiresArgs?"args":"{}",R="";return r.type==="rpc"?R=`
92
+ ${t.map(r=>{let m=[];r.requiresArgs&&m.push("args"),m.push("ssrContext");let w=r.requiresArgs?"args":"{}",R="";return r.type==="rpc"?R=`
93
93
  if (fn.isMultipart) throw new Error('RPC multipart no soportado en SSR.');
94
94
  await getOptionsMaps();
95
95
  const options = rpcOptionsMap.get('${r.url}');
96
96
  if (!options?.handler) throw new Error('Handler no encontrado para RPC: ${r.name}');
97
- const augmentedReq = Object.assign(Object.create(ssrContext.req), ${P});
97
+ const augmentedReq = Object.assign(Object.create(ssrContext.req), ${w});
98
98
  return await options.handler.call(ssrContext.req.server, augmentedReq, ssrContext.reply);
99
99
  `:r.type==="api"?R=`
100
100
  await getOptionsMaps();
@@ -103,13 +103,13 @@ export default module.exports;`}return null};function oe(t){let d=we(t),s="";ret
103
103
  console.error('\u26A0\uFE0F [B-SSR Warning] Handler API no encontrado:', '${r.name}', 'URL:', '${r.url}');
104
104
  return null;
105
105
  }
106
- const augmentedReq = Object.assign(Object.create(ssrContext.req), ${P});
106
+ const augmentedReq = Object.assign(Object.create(ssrContext.req), ${w});
107
107
  return await options.handler.call(ssrContext.req.server, augmentedReq, ssrContext.reply);
108
108
  `:R=`
109
109
  await getOptionsMaps();
110
110
  const options = renderOptionsMap.get('${r.url}');
111
111
  if (!options) return {};
112
- const augmentedReq = Object.assign(Object.create(ssrContext.req), ${P});
112
+ const augmentedReq = Object.assign(Object.create(ssrContext.req), ${w});
113
113
  let customData = {};
114
114
  try {
115
115
  if (options.handler) {
@@ -131,4 +131,4 @@ export default module.exports;`}return null};function oe(t){let d=we(t),s="";ret
131
131
  }
132
132
  };`}).join(`
133
133
  `)}
134
- `}async function le(){let t=await(0,ne.default)(l,{absolute:!0});await Promise.all(t.map(d=>B(d)))}return{name:"b-ssr-vite-plugin-rpc-universal-generator",enforce:"pre",async buildStart(){await le()},configureServer(t){let d=s=>s.endsWith(".mts")||s.endsWith(".ts");t.watcher.on("add",s=>d(s)&&B(s)),t.watcher.on("change",s=>d(s)&&B(s)),t.watcher.on("unlink",s=>{if(d(s)){let r=u.default.resolve(s);w.delete(r),q.delete(r);let m=u.default.extname(s),P=s.substring(0,s.length-m.length)+".universal.d.ts";(0,O.unlink)(P).catch(()=>{})}})},async resolveId(t,d,s){if(t.startsWith(k))return null;if(t.includes(".universal")){let r=t.split("?")[0],m=r;if(r.endsWith(".universal"))m=r;else if(r.endsWith(".universal.ts"))m=r.slice(0,-3);else if(r.endsWith(".universal.mts"))m=r.slice(0,-4);else if(r.endsWith(".universal.js"))m=r.slice(0,-3);else return null;let P=[".mts",".ts"];for(let R of P){let A=m.slice(0,-10)+R,j=await this.resolve(A,d,{skipSelf:!0});if(j){let L=s?.ssr?"?mode=ssr":"?mode=client";return k+j.id+L}try{await(0,O.access)(A);let L=s?.ssr?"?mode=ssr":"?mode=client";return k+A+L}catch{}}}return null},load(t,d){if(t.startsWith(k)){let s=t.slice(k.length).split("?")[0],r=w.get(s);return r?d?.ssr===!0?r.server:r.client:null}if(d?.ssr!==!0){let s=u.default.resolve(t);if(q.has(s))return`throw new Error("\u{1F6A8} [B-SSR FIREWALL] BLOCKED: Backend File imported in Client: ${u.default.basename(t)}");`}return null},transform:ie}}function we(o){let l=[];return o.paramsType!=="unknown"&&l.push(`params: ${o.paramsType}`),o.queryType!=="unknown"&&l.push(`query: ${o.queryType}`),o.bodyType!=="unknown"&&l.push(`body: ${o.bodyType}`),l.push("signal?: AbortSignal"),l}0&&(module.exports={rpcGeneratorPlugin});
134
+ `}async function le(){let t=await(0,ne.default)(l,{absolute:!0});await Promise.all(t.map(d=>I(d)))}return{name:"b-ssr-vite-plugin-rpc-universal-generator",enforce:"pre",async buildStart(){await le()},configureServer(t){let d=n=>n.endsWith(".mts")||n.endsWith(".ts");t.watcher.on("add",n=>d(n)&&I(n)),t.watcher.on("change",n=>d(n)&&I(n)),t.watcher.on("unlink",n=>{if(d(n)){let r=u.default.resolve(n);P.delete(r),q.delete(r);let m=u.default.extname(n),w=n.substring(0,n.length-m.length)+".universal.d.ts";(0,O.unlink)(w).catch(()=>{})}})},async resolveId(t,d,n){if(t.startsWith(k))return null;if(t.includes(".universal")){let r=t.split("?")[0],m=r;if(r.endsWith(".universal"))m=r;else if(r.endsWith(".universal.ts"))m=r.slice(0,-3);else if(r.endsWith(".universal.mts"))m=r.slice(0,-4);else if(r.endsWith(".universal.js"))m=r.slice(0,-3);else return null;let w=[".mts",".ts"];for(let R of w){let A=m.slice(0,-10)+R,j=await this.resolve(A,d,{skipSelf:!0});if(j){let L=n?.ssr?"?mode=ssr":"?mode=client";return k+j.id+L}try{await(0,O.access)(A);let L=n?.ssr?"?mode=ssr":"?mode=client";return k+A+L}catch{}}}return null},async load(t,d){if(t.startsWith(k)){let n=t.slice(k.length).split("?")[0],r=P.get(n);return r||(await I(n),r=P.get(n)),r?d?.ssr===!0?r.server:r.client:null}if(d?.ssr!==!0){let n=u.default.resolve(t);if(q.has(n))return`throw new Error("\u{1F6A8} [B-SSR FIREWALL] BLOCKED: Backend File imported in Client: ${u.default.basename(t)}");`}return null},transform:ie}}function we(o){let l=[];return o.paramsType!=="unknown"&&l.push(`params: ${o.paramsType}`),o.queryType!=="unknown"&&l.push(`query: ${o.queryType}`),o.bodyType!=="unknown"&&l.push(`body: ${o.bodyType}`),l.push("signal?: AbortSignal"),l}0&&(module.exports={rpcGeneratorPlugin});
@@ -1,4 +1,4 @@
1
- import pe from"fast-glob";import{access as ue,unlink as ee,writeFile as ge}from"fs/promises";import l from"path";import{format as de,resolveConfig as me}from"prettier";import{Node as A,Project as fe,SyntaxKind as y,ts as j}from"ts-morph";var k="virtual:b-ssr-rpc-universal:";function ye(x){let T=x.replace(/[^a-zA-Z0-9]+(.)?/g,(L,$)=>$?$.toUpperCase():"");return T.charAt(0).toLowerCase()+T.slice(1)}function G(x,T,L){let $=l.basename(L,l.extname(L))||"Index",M=T.replace(/:[a-zA-Z0-9_]+/g,"").replace(/\//g," "),O=`${x} ${M} ${$}`;return ye(O)}function Re(x={}){let{routerPattern:T="src-ts/routers/**/*.mts",tsConfigFilePath:L="tsconfig.json",routerBaseDir:$="src-ts/routers"}=x,M=new Map,O=new Set,K=new fe({tsConfigFilePath:L,skipAddingFilesFromTsConfig:!1}),te=l.resolve(process.cwd(),$||".");async function U(t){try{let N=function(e){return e.replace(/import\(['"](.*?)['"]\)/g,(o,i)=>{if(!l.isAbsolute(i))return o;let s=i;if(!l.extname(s)){let f=K.getSourceFile(d=>d.getFilePath().replace(/\.(mts|ts|tsx)$/,"")===i);f&&(s=f.getFilePath())}let a=l.relative(l.dirname(C),s).replace(/\\/g,"/");return a.startsWith(".")||(a="./"+a),`import("${a}")`})},v=function(e,o){if(e.getSymbol()?.getName()==="Promise"){let c=e.getAwaitedType();if(c)return`Promise<${v(c,o)}>`}let i=e.getAliasSymbol()??e.getSymbol();if(i?.getName()==="__object")return N(e.getText(o,j.TypeFormatFlags.NoTruncation|j.TypeFormatFlags.UseFullyQualifiedType));if(e.isObject()&&!i){let c=(g,m=0)=>{if(!(m>5)){if(g.isArray()){let h=g.getArrayElementType();h&&c(h,m);return}if(g.isObject()&&!g.getSymbol()&&!g.getAliasSymbol()){for(let h of g.getApparentProperties()){let R=h.getValueDeclaration();R&&c(h.getTypeAtLocation(R),m+1)}return}v(g,o)}};return c(e),N(e.getText(o,j.TypeFormatFlags.NoTruncation|j.TypeFormatFlags.UseFullyQualifiedType))}if(!i)return N(e.getText(o,j.TypeFormatFlags.NoTruncation));let s=i.getDeclarations()[0];if(!s)return i.getName();if(A.isImportSpecifier(s)||A.isImportClause(s)){let c=s.getFirstAncestorByKind(y.ImportDeclaration);if(c){let g=c.getModuleSpecifierValue(),m=i.getName();return w.has(g)||w.set(g,new Set),w.get(g)?.add(m),m}}let a=s.getSourceFile();if(a.getFilePath()===u.getFilePath())return i.getName();if(a.isInNodeModules())return N(e.getText(o,j.TypeFormatFlags.NoTruncation));let f=l.relative(l.dirname(C),a.getFilePath()).replace(/\\/g,"/"),F=f.startsWith(".")?f:`./${f}`,P=i.getName();return w.has(F)||w.set(F,new Set),w.get(F)?.add(P),P},Z=function(e){let o;if(A.isFunctionLikeDeclaration(e)||A.isArrowFunction(e)){let i=e.getDescendantsOfKind(y.ReturnStatement);for(let s of i){let a=s.getExpression();if(a?.isKind(y.SatisfiesExpression)){o=a.getTypeNode()?.getType();break}}}if(o)return v(o,e);{let i=e.getType().getCallSignatures();if(i.length>0){let s=i[0]?.getReturnType();return v(s,e)}}return"unknown"};var p=N,n=v,r=Z;let u=K.addSourceFileAtPath(t);await u.refreshFromFileSystem(),K.resolveSourceFileDependencies();let b=u.getDescendantsOfKind(y.CallExpression),S=b.filter(e=>e.getExpression().getText().endsWith(".addRpcRoute")),E=b.filter(e=>e.getExpression().getText().endsWith(".addRenderRoute")),q=b.filter(e=>e.getExpression().getText().endsWith(".addLoaderRoute")),D=l.extname(t),C=t.substring(0,t.length-D.length)+".universal.d.ts",B=l.resolve(t);if(S.length===0&&E.length===0&&q.length===0){M.delete(B),O.delete(B),C!==t&&await ee(C).catch(()=>{});return}O.add(B);let V=[],w=new Map;w.has("fastify")||w.set("fastify",new Set),w.get("fastify")?.add("FastifyRequest"),w.get("fastify")?.add("FastifyReply");let oe=e=>{let o="unknown",i="unknown",s="unknown",a=!1;if(!e||!A.isObjectLiteralExpression(e))return{paramsType:o,queryType:i,bodyType:s,isMultipart:a};let f=e.getProperty("schema");if(f?.isKind(y.PropertyAssignment)){let d=f.getInitializer();if(d?.isKind(y.Identifier)){let P=d.getSymbol()?.getValueDeclaration();if(P){let c=P.getFirstDescendantByKind(y.ObjectLiteralExpression);c&&(d=c)}}if(d&&A.isObjectLiteralExpression(d)){let F=d.getProperty("consumes");if(F?.isKind(y.PropertyAssignment)){let c=F.getInitializer();A.isArrayLiteralExpression(c)&&(a=c.getElements().some(g=>g.isKind(y.StringLiteral)&&g.getLiteralValue()==="multipart/form-data"))}let P=c=>{let g=d.getProperty(c);if(g?.isKind(y.PropertyAssignment)){let m=g.getInitializer();if(m){let h=m.getType(),R=h.getProperty("_output");return v(R?R.getTypeAtLocation(m).getApparentType():h,m)}}return"unknown"};if(o=P("params"),i=P("querystring"),s=P("body"),a){let c="{ file: File }";s=s!=="unknown"&&s.trim().startsWith("{")?`(${s} & ${c})`:c}}}return{paramsType:o,queryType:i,bodyType:s,isMultipart:a}},W=l.relative(te,l.dirname(t)).split(l.sep).join("/"),ae=W==="."||!W?"":W.startsWith("/")?W:"/"+W,_=(e,o)=>{let[i,s]=e.getArguments();if(!i?.isKind(y.StringLiteral))return;let a=i.getLiteralValue(),f="unknown",d=ae,{paramsType:F,queryType:P,bodyType:c,isMultipart:g}=oe(s);if(s?.isKind(y.ObjectLiteralExpression)){let R=s.getProperty("prefix");if(R?.isKind(y.PropertyAssignment)){let I=R.getInitializer();I?.isKind(y.StringLiteral)&&(d=I.getLiteralValue())}let J=s.getProperty("handler");if(J?.isKind(y.PropertyAssignment)){let I=J.getInitializer();I&&(f=Z(I),f.startsWith("Promise<")||(f=`Promise<${f}>`))}}let m="",h="";o==="rpc"?(m=l.join(d,"rpc",a).replace(/\\/g,"/"),h=G("action",d,a)):o==="loader"?(m=l.join(d,"loader",a).replace(/\\/g,"/"),h=G("loader",d,a)):o==="api"&&(m=l.join(d,"api",a).replace(/\\/g,"/"),h=G("get",d,a)),h&&V.push({type:o,name:h,returnType:f,url:a,rpcUrl:m,loaderUrl:m,paramsType:F,queryType:P,bodyType:c,isMultipart:g})};S.forEach(e=>_(e,"rpc")),E.forEach(e=>_(e,"loader")),q.forEach(e=>_(e,"api"));let z=[];for(let[e,o]of w.entries())z.push(`import type { ${[...o].sort().join(", ")} } from "${e}";`);let Q=[];V.forEach(e=>{Q.push(ne(e))});let H=`// AUTO-GENERATED by @bobtail.software/b-ssr. DO NOT EDIT.
1
+ import pe from"fast-glob";import{access as ue,unlink as ee,writeFile as ge}from"fs/promises";import l from"path";import{format as de,resolveConfig as me}from"prettier";import{Node as $,Project as fe,SyntaxKind as y,ts as j}from"ts-morph";var k="virtual:b-ssr-rpc-universal:";function ye(x){let T=x.replace(/[^a-zA-Z0-9]+(.)?/g,(L,M)=>M?M.toUpperCase():"");return T.charAt(0).toLowerCase()+T.slice(1)}function G(x,T,L){let M=l.basename(L,l.extname(L))||"Index",E=T.replace(/:[a-zA-Z0-9_]+/g,"").replace(/\//g," "),O=`${x} ${E} ${M}`;return ye(O)}function Re(x={}){let{routerPattern:T="src-ts/routers/**/*.mts",tsConfigFilePath:L="tsconfig.json",routerBaseDir:M="src-ts/routers"}=x,E=new Map,O=new Set,U=new fe({tsConfigFilePath:L,skipAddingFilesFromTsConfig:!1}),te=l.resolve(process.cwd(),M||".");async function K(t){try{let N=function(e){return e.replace(/import\(['"](.*?)['"]\)/g,(o,i)=>{if(!l.isAbsolute(i))return o;let s=i;if(!l.extname(s)){let f=U.getSourceFile(d=>d.getFilePath().replace(/\.(mts|ts|tsx)$/,"")===i);f&&(s=f.getFilePath())}let a=l.relative(l.dirname(v),s).replace(/\\/g,"/");return a.startsWith(".")||(a="./"+a),`import("${a}")`})},A=function(e,o){if(e.getSymbol()?.getName()==="Promise"){let c=e.getAwaitedType();if(c)return`Promise<${A(c,o)}>`}let i=e.getAliasSymbol()??e.getSymbol();if(i?.getName()==="__object")return N(e.getText(o,j.TypeFormatFlags.NoTruncation|j.TypeFormatFlags.UseFullyQualifiedType));if(e.isObject()&&!i){let c=(g,m=0)=>{if(!(m>5)){if(g.isArray()){let h=g.getArrayElementType();h&&c(h,m);return}if(g.isObject()&&!g.getSymbol()&&!g.getAliasSymbol()){for(let h of g.getApparentProperties()){let R=h.getValueDeclaration();R&&c(h.getTypeAtLocation(R),m+1)}return}A(g,o)}};return c(e),N(e.getText(o,j.TypeFormatFlags.NoTruncation|j.TypeFormatFlags.UseFullyQualifiedType))}if(!i)return N(e.getText(o,j.TypeFormatFlags.NoTruncation));let s=i.getDeclarations()[0];if(!s)return i.getName();if($.isImportSpecifier(s)||$.isImportClause(s)){let c=s.getFirstAncestorByKind(y.ImportDeclaration);if(c){let g=c.getModuleSpecifierValue(),m=i.getName();return w.has(g)||w.set(g,new Set),w.get(g)?.add(m),m}}let a=s.getSourceFile();if(a.getFilePath()===u.getFilePath())return i.getName();if(a.isInNodeModules())return N(e.getText(o,j.TypeFormatFlags.NoTruncation));let f=l.relative(l.dirname(v),a.getFilePath()).replace(/\\/g,"/"),F=f.startsWith(".")?f:`./${f}`,P=i.getName();return w.has(F)||w.set(F,new Set),w.get(F)?.add(P),P},Z=function(e){let o;if($.isFunctionLikeDeclaration(e)||$.isArrowFunction(e)){let i=e.getDescendantsOfKind(y.ReturnStatement);for(let s of i){let a=s.getExpression();if(a?.isKind(y.SatisfiesExpression)){o=a.getTypeNode()?.getType();break}}}if(o)return A(o,e);{let i=e.getType().getCallSignatures();if(i.length>0){let s=i[0]?.getReturnType();return A(s,e)}}return"unknown"};var p=N,n=A,r=Z;let u=U.addSourceFileAtPath(t);await u.refreshFromFileSystem(),U.resolveSourceFileDependencies();let b=u.getDescendantsOfKind(y.CallExpression),S=b.filter(e=>e.getExpression().getText().endsWith(".addRpcRoute")),C=b.filter(e=>e.getExpression().getText().endsWith(".addRenderRoute")),q=b.filter(e=>e.getExpression().getText().endsWith(".addLoaderRoute")),D=l.extname(t),v=t.substring(0,t.length-D.length)+".universal.d.ts",B=l.resolve(t);if(S.length===0&&C.length===0&&q.length===0){E.delete(B),O.delete(B),v!==t&&await ee(v).catch(()=>{});return}O.add(B);let V=[],w=new Map;w.has("fastify")||w.set("fastify",new Set),w.get("fastify")?.add("FastifyRequest"),w.get("fastify")?.add("FastifyReply");let oe=e=>{let o="unknown",i="unknown",s="unknown",a=!1;if(!e||!$.isObjectLiteralExpression(e))return{paramsType:o,queryType:i,bodyType:s,isMultipart:a};let f=e.getProperty("schema");if(f?.isKind(y.PropertyAssignment)){let d=f.getInitializer();if(d?.isKind(y.Identifier)){let P=d.getSymbol()?.getValueDeclaration();if(P){let c=P.getFirstDescendantByKind(y.ObjectLiteralExpression);c&&(d=c)}}if(d&&$.isObjectLiteralExpression(d)){let F=d.getProperty("consumes");if(F?.isKind(y.PropertyAssignment)){let c=F.getInitializer();$.isArrayLiteralExpression(c)&&(a=c.getElements().some(g=>g.isKind(y.StringLiteral)&&g.getLiteralValue()==="multipart/form-data"))}let P=c=>{let g=d.getProperty(c);if(g?.isKind(y.PropertyAssignment)){let m=g.getInitializer();if(m){let h=m.getType(),R=h.getProperty("_output");return A(R?R.getTypeAtLocation(m).getApparentType():h,m)}}return"unknown"};if(o=P("params"),i=P("querystring"),s=P("body"),a){let c="{ file: File }";s=s!=="unknown"&&s.trim().startsWith("{")?`(${s} & ${c})`:c}}}return{paramsType:o,queryType:i,bodyType:s,isMultipart:a}},W=l.relative(te,l.dirname(t)).split(l.sep).join("/"),ae=W==="."||!W?"":W.startsWith("/")?W:"/"+W,_=(e,o)=>{let[i,s]=e.getArguments();if(!i?.isKind(y.StringLiteral))return;let a=i.getLiteralValue(),f="unknown",d=ae,{paramsType:F,queryType:P,bodyType:c,isMultipart:g}=oe(s);if(s?.isKind(y.ObjectLiteralExpression)){let R=s.getProperty("prefix");if(R?.isKind(y.PropertyAssignment)){let I=R.getInitializer();I?.isKind(y.StringLiteral)&&(d=I.getLiteralValue())}let J=s.getProperty("handler");if(J?.isKind(y.PropertyAssignment)){let I=J.getInitializer();I&&(f=Z(I),f.startsWith("Promise<")||(f=`Promise<${f}>`))}}let m="",h="";o==="rpc"?(m=l.join(d,"rpc",a).replace(/\\/g,"/"),h=G("action",d,a)):o==="loader"?(m=l.join(d,"loader",a).replace(/\\/g,"/"),h=G("loader",d,a)):o==="api"&&(m=l.join(d,"api",a).replace(/\\/g,"/"),h=G("get",d,a)),h&&V.push({type:o,name:h,returnType:f,url:a,rpcUrl:m,loaderUrl:m,paramsType:F,queryType:P,bodyType:c,isMultipart:g})};S.forEach(e=>_(e,"rpc")),C.forEach(e=>_(e,"loader")),q.forEach(e=>_(e,"api"));let z=[];for(let[e,o]of w.entries())z.push(`import type { ${[...o].sort().join(", ")} } from "${e}";`);let Q=[];V.forEach(e=>{Q.push(ne(e))});let H=`// AUTO-GENERATED by @bobtail.software/b-ssr. DO NOT EDIT.
2
2
  /* eslint-disable */
3
3
 
4
4
  `+(z.length>0?z.join(`
@@ -6,7 +6,7 @@ import pe from"fast-glob";import{access as ue,unlink as ee,writeFile as ge}from"
6
6
 
7
7
  `:"")+Q.join(`
8
8
 
9
- `);try{let e=await me(C)||{};H=await de(H,{...e,parser:"typescript",filepath:C})}catch{}await ge(C,H);let X=[],Y=[];V.forEach(e=>{let i=e.type==="rpc"?"POST":"GET",s=e.type==="loader"?e.loaderUrl:e.rpcUrl;Y.push({name:e.name,rpcUrl:s,method:i,isMultipart:!!e.isMultipart}),X.push({name:e.name,url:e.url,type:e.type,requiresArgs:!0})});let le=`
9
+ `);try{let e=await me(v)||{};H=await de(H,{...e,parser:"typescript",filepath:v})}catch{}await ge(v,H);let X=[],Y=[];V.forEach(e=>{let i=e.type==="rpc"?"POST":"GET",s=e.type==="loader"?e.loaderUrl:e.rpcUrl;Y.push({name:e.name,rpcUrl:s,method:i,isMultipart:!!e.isMultipart}),X.push({name:e.name,url:e.url,type:e.type,requiresArgs:!0})});let le=`
10
10
  import { createClientRpc } from '@bobtail.software/b-ssr/client';
11
11
 
12
12
  if (import.meta.env.DEV) {
@@ -21,7 +21,7 @@ import pe from"fast-glob";import{access as ue,unlink as ee,writeFile as ge}from"
21
21
  });
22
22
  `).join(`
23
23
  `)}
24
- `,ce=se(X,t);M.set(l.resolve(t),{client:le,server:ce})}catch(u){console.error(`[rpc-generator] Error al procesar ${t}:`,{error:u})}}let re=(t,p,n)=>{if(p.includes("node_modules")||p.startsWith(k))return null;if(n?.ssr===!0&&/\.[cm]?[jt]sx?$/.test(p)){let r=/\brequire\s*\(/.test(t),u=/\bmodule\.exports\b/.test(t),b=/\bexports\./.test(t);if(r||u||b)return"import { createRequire } from 'module';"+`
24
+ `,ce=se(X,t);E.set(l.resolve(t),{client:le,server:ce})}catch(u){console.error(`[rpc-generator] Error al procesar ${t}:`,{error:u})}}let re=(t,p,n)=>{if(p.includes("node_modules")||p.startsWith(k))return null;if(n?.ssr===!0&&/\.[cm]?[jt]sx?$/.test(p)){let r=/\brequire\s*\(/.test(t),u=/\bmodule\.exports\b/.test(t),b=/\bexports\./.test(t);if(r||u||b)return"import { createRequire } from 'module';"+`
25
25
  const require = createRequire(import.meta.url);
26
26
  const module = { exports: {} };
27
27
  const exports = module.exports;
@@ -131,4 +131,4 @@ export default module.exports;`}return null};function ne(t){let p=he(t),n="";ret
131
131
  }
132
132
  };`}).join(`
133
133
  `)}
134
- `}async function ie(){let t=await pe(T,{absolute:!0});await Promise.all(t.map(p=>U(p)))}return{name:"b-ssr-vite-plugin-rpc-universal-generator",enforce:"pre",async buildStart(){await ie()},configureServer(t){let p=n=>n.endsWith(".mts")||n.endsWith(".ts");t.watcher.on("add",n=>p(n)&&U(n)),t.watcher.on("change",n=>p(n)&&U(n)),t.watcher.on("unlink",n=>{if(p(n)){let r=l.resolve(n);M.delete(r),O.delete(r);let u=l.extname(n),b=n.substring(0,n.length-u.length)+".universal.d.ts";ee(b).catch(()=>{})}})},async resolveId(t,p,n){if(t.startsWith(k))return null;if(t.includes(".universal")){let r=t.split("?")[0],u=r;if(r.endsWith(".universal"))u=r;else if(r.endsWith(".universal.ts"))u=r.slice(0,-3);else if(r.endsWith(".universal.mts"))u=r.slice(0,-4);else if(r.endsWith(".universal.js"))u=r.slice(0,-3);else return null;let b=[".mts",".ts"];for(let S of b){let E=u.slice(0,-10)+S,q=await this.resolve(E,p,{skipSelf:!0});if(q){let D=n?.ssr?"?mode=ssr":"?mode=client";return k+q.id+D}try{await ue(E);let D=n?.ssr?"?mode=ssr":"?mode=client";return k+E+D}catch{}}}return null},load(t,p){if(t.startsWith(k)){let n=t.slice(k.length).split("?")[0],r=M.get(n);return r?p?.ssr===!0?r.server:r.client:null}if(p?.ssr!==!0){let n=l.resolve(t);if(O.has(n))return`throw new Error("\u{1F6A8} [B-SSR FIREWALL] BLOCKED: Backend File imported in Client: ${l.basename(t)}");`}return null},transform:re}}function he(x){let T=[];return x.paramsType!=="unknown"&&T.push(`params: ${x.paramsType}`),x.queryType!=="unknown"&&T.push(`query: ${x.queryType}`),x.bodyType!=="unknown"&&T.push(`body: ${x.bodyType}`),T.push("signal?: AbortSignal"),T}export{Re as rpcGeneratorPlugin};
134
+ `}async function ie(){let t=await pe(T,{absolute:!0});await Promise.all(t.map(p=>K(p)))}return{name:"b-ssr-vite-plugin-rpc-universal-generator",enforce:"pre",async buildStart(){await ie()},configureServer(t){let p=n=>n.endsWith(".mts")||n.endsWith(".ts");t.watcher.on("add",n=>p(n)&&K(n)),t.watcher.on("change",n=>p(n)&&K(n)),t.watcher.on("unlink",n=>{if(p(n)){let r=l.resolve(n);E.delete(r),O.delete(r);let u=l.extname(n),b=n.substring(0,n.length-u.length)+".universal.d.ts";ee(b).catch(()=>{})}})},async resolveId(t,p,n){if(t.startsWith(k))return null;if(t.includes(".universal")){let r=t.split("?")[0],u=r;if(r.endsWith(".universal"))u=r;else if(r.endsWith(".universal.ts"))u=r.slice(0,-3);else if(r.endsWith(".universal.mts"))u=r.slice(0,-4);else if(r.endsWith(".universal.js"))u=r.slice(0,-3);else return null;let b=[".mts",".ts"];for(let S of b){let C=u.slice(0,-10)+S,q=await this.resolve(C,p,{skipSelf:!0});if(q){let D=n?.ssr?"?mode=ssr":"?mode=client";return k+q.id+D}try{await ue(C);let D=n?.ssr?"?mode=ssr":"?mode=client";return k+C+D}catch{}}}return null},async load(t,p){if(t.startsWith(k)){let n=t.slice(k.length).split("?")[0],r=E.get(n);return r||(await K(n),r=E.get(n)),r?p?.ssr===!0?r.server:r.client:null}if(p?.ssr!==!0){let n=l.resolve(t);if(O.has(n))return`throw new Error("\u{1F6A8} [B-SSR FIREWALL] BLOCKED: Backend File imported in Client: ${l.basename(t)}");`}return null},transform:re}}function he(x){let T=[];return x.paramsType!=="unknown"&&T.push(`params: ${x.paramsType}`),x.queryType!=="unknown"&&T.push(`query: ${x.queryType}`),x.bodyType!=="unknown"&&T.push(`body: ${x.bodyType}`),T.push("signal?: AbortSignal"),T}export{Re as rpcGeneratorPlugin};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobtail.software/b-ssr",
3
- "version": "1.0.34",
3
+ "version": "1.0.35",
4
4
  "description": "Fastify + Vite SSR Plugin wrapper with RPC",
5
5
  "author": "Victor Moreno <info@bobtail.software> (https://bobtail.software)",
6
6
  "license": "GPL-3.0",