vite-elysia-forge 1.0.0 → 1.0.1

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.
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use strict';var path=require('path'),child_process=require('child_process'),fs=require('fs');function F({serverFile:v="/server/api.ts",ws:d=false,apiPrefix:E="/api",backendPort:h=3001,MAX_BODY_SIZE:M=1024*1024}={}){return {name:"vite-elysia-forge",config:d?()=>({server:{proxy:{[E]:{target:`http://localhost:${h}`,changeOrigin:true,ws:true}}}}):void 0,async configureServer(o){let l=v,b=path.resolve(o.config.root,l.slice(1)),w=async()=>(await o.ssrLoadModule(l)).api,S=await w(),s=null,g=false,P=async()=>{if(d&&!g){g=true;try{s&&(s.kill("SIGTERM"),s=null);let e=path.resolve(o.config.root,"node_modules",".vite-elysia-forge"),t=path.resolve(e,"dev-server.ts"),a=path.resolve(o.config.root,l.startsWith("/")?l.slice(1):l),i=path.relative(e,a);i.startsWith(".")||(i="./"+i),fs.existsSync(e)||fs.mkdirSync(e,{recursive:!0});let c=`import { api } from ${JSON.stringify(i)};
2
2
  api.listen(${h});
3
3
  console.log("WebSocket server running at ws://localhost:${h}");
4
- `;fs.writeFileSync(t,c),s=child_process.spawn("bun",["run",t],{stdio:["ignore","inherit","inherit"],cwd:o.config.root,env:{...process.env}}),s.on("error",n=>{console.error(`Failed to start API server: ${n.message}`);}),s.on("exit",n=>{n!==null&&n!==0&&console.error(`API server process exited with code ${n}`),s=null;});}finally{g=false;}}};d&&(await P(),o.httpServer?.once("close",()=>{s&&(s.kill("SIGTERM"),s=null);})),o.watcher.add(b),o.watcher.on("change",async e=>{let t=await o.moduleGraph.getModuleByUrl(l);if(!t)return;let a=o.moduleGraph.getModulesByFile(e);if(!a||a.size===0)return;let i=false,c=new Set,n=[...a];for(;n.length>0;){let r=n.shift();if(!(!r||!r.id||c.has(r.id))){if(c.add(r.id),r.id===t.id){i=true;break}for(let m of r.importers)n.push(m);}}if(i)try{o.moduleGraph.invalidateModule(t),S=await w(),console.log("Reloaded Elysia API module"),d&&await P();}catch(r){console.error(`Failed to reload Elysia API: ${r}`);}}),!d&&o.middlewares.use(async(e,t,a)=>{if(!e.url?.startsWith("/api"))return a();try{let i="http",c=e.headers.host||"localhost:3000",n=`${i}://${c}${e.url}`,r;if(e.method!=="GET"&&e.method!=="HEAD"){let u=[],f=0;for await(let $ of e){if(f+=$.length,f>M){t.statusCode=413,t.end("Payload Too Large");return}u.push($);}r=Buffer.concat(u).toString();}let m=new Request(n,{method:e.method,headers:e.headers,body:r}),y=await S.handle(m);t.statusCode=y.status,y.headers.forEach((u,f)=>{t.setHeader(f,u);});let k=await y.text();t.end(k);}catch(i){console.error(`Elysia error: ${i}`),t.statusCode=500,t.end("Internal Server Error");}});}}}var T=F;
4
+ `;fs.writeFileSync(t,c),s=child_process.spawn("bun",["run",t],{stdio:["ignore","inherit","inherit"],cwd:o.config.root,env:{...process.env}}),s.on("error",n=>{console.error(`Failed to start API server: ${n.message}`);}),s.on("exit",n=>{n!==null&&n!==0&&console.error(`API server process exited with code ${n}`),s=null;});}finally{g=false;}}};d&&(await P(),o.httpServer?.once("close",()=>{s&&(s.kill("SIGTERM"),s=null);})),o.watcher.add(b),o.watcher.on("change",async e=>{let t=await o.moduleGraph.getModuleByUrl(l);if(!t)return;let a=o.moduleGraph.getModulesByFile(e);if(!a||a.size===0)return;let i=false,c=new Set,n=[...a];for(;n.length>0;){let r=n.shift();if(!(!r||!r.id||c.has(r.id))){if(c.add(r.id),r.id===t.id){i=true;break}for(let m of r.importers)n.push(m);}}if(i)try{o.moduleGraph.invalidateModule(t),S=await w(),console.log("Reloaded Elysia API module"),d&&await P();}catch(r){console.error(`Failed to reload Elysia API: ${r}`);}}),!d&&o.middlewares.use(async(e,t,a)=>{if(!e.url?.startsWith("/api"))return a();try{let i="http",c=e.headers.host||"localhost:3000",n=`${i}://${c}${e.url}`,r;if(e.method!=="GET"&&e.method!=="HEAD"){let u=[],f=0;for await(let $ of e){if(f+=$.length,f>M){t.statusCode=413,t.end("Payload Too Large");return}u.push($);}r=Buffer.concat(u);}let m=new Request(n,{method:e.method,headers:e.headers,body:r}),y=await S.handle(m);t.statusCode=y.status,y.headers.forEach((u,f)=>{t.setHeader(f,u);});let k=await y.text();t.end(k);}catch(i){console.error(`Elysia error: ${i}`),t.statusCode=500,t.end("Internal Server Error");}});}}}var T=F;
5
5
  module.exports=T;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import {resolve,relative}from'path';import {spawn}from'child_process';import {existsSync,mkdirSync,writeFileSync}from'fs';function F({serverFile:v="/server/api.ts",ws:d=false,apiPrefix:E="/api",backendPort:h=3001,MAX_BODY_SIZE:M=1024*1024}={}){return {name:"vite-elysia-forge",config:d?()=>({server:{proxy:{[E]:{target:`http://localhost:${h}`,changeOrigin:true,ws:true}}}}):void 0,async configureServer(o){let l=v,b=resolve(o.config.root,l.slice(1)),w=async()=>(await o.ssrLoadModule(l)).api,S=await w(),s=null,g=false,P=async()=>{if(d&&!g){g=true;try{s&&(s.kill("SIGTERM"),s=null);let e=resolve(o.config.root,"node_modules",".vite-elysia-forge"),t=resolve(e,"dev-server.ts"),a=resolve(o.config.root,l.startsWith("/")?l.slice(1):l),i=relative(e,a);i.startsWith(".")||(i="./"+i),existsSync(e)||mkdirSync(e,{recursive:!0});let c=`import { api } from ${JSON.stringify(i)};
2
2
  api.listen(${h});
3
3
  console.log("WebSocket server running at ws://localhost:${h}");
4
- `;writeFileSync(t,c),s=spawn("bun",["run",t],{stdio:["ignore","inherit","inherit"],cwd:o.config.root,env:{...process.env}}),s.on("error",n=>{console.error(`Failed to start API server: ${n.message}`);}),s.on("exit",n=>{n!==null&&n!==0&&console.error(`API server process exited with code ${n}`),s=null;});}finally{g=false;}}};d&&(await P(),o.httpServer?.once("close",()=>{s&&(s.kill("SIGTERM"),s=null);})),o.watcher.add(b),o.watcher.on("change",async e=>{let t=await o.moduleGraph.getModuleByUrl(l);if(!t)return;let a=o.moduleGraph.getModulesByFile(e);if(!a||a.size===0)return;let i=false,c=new Set,n=[...a];for(;n.length>0;){let r=n.shift();if(!(!r||!r.id||c.has(r.id))){if(c.add(r.id),r.id===t.id){i=true;break}for(let m of r.importers)n.push(m);}}if(i)try{o.moduleGraph.invalidateModule(t),S=await w(),console.log("Reloaded Elysia API module"),d&&await P();}catch(r){console.error(`Failed to reload Elysia API: ${r}`);}}),!d&&o.middlewares.use(async(e,t,a)=>{if(!e.url?.startsWith("/api"))return a();try{let i="http",c=e.headers.host||"localhost:3000",n=`${i}://${c}${e.url}`,r;if(e.method!=="GET"&&e.method!=="HEAD"){let u=[],f=0;for await(let $ of e){if(f+=$.length,f>M){t.statusCode=413,t.end("Payload Too Large");return}u.push($);}r=Buffer.concat(u).toString();}let m=new Request(n,{method:e.method,headers:e.headers,body:r}),y=await S.handle(m);t.statusCode=y.status,y.headers.forEach((u,f)=>{t.setHeader(f,u);});let k=await y.text();t.end(k);}catch(i){console.error(`Elysia error: ${i}`),t.statusCode=500,t.end("Internal Server Error");}});}}}var T=F;
4
+ `;writeFileSync(t,c),s=spawn("bun",["run",t],{stdio:["ignore","inherit","inherit"],cwd:o.config.root,env:{...process.env}}),s.on("error",n=>{console.error(`Failed to start API server: ${n.message}`);}),s.on("exit",n=>{n!==null&&n!==0&&console.error(`API server process exited with code ${n}`),s=null;});}finally{g=false;}}};d&&(await P(),o.httpServer?.once("close",()=>{s&&(s.kill("SIGTERM"),s=null);})),o.watcher.add(b),o.watcher.on("change",async e=>{let t=await o.moduleGraph.getModuleByUrl(l);if(!t)return;let a=o.moduleGraph.getModulesByFile(e);if(!a||a.size===0)return;let i=false,c=new Set,n=[...a];for(;n.length>0;){let r=n.shift();if(!(!r||!r.id||c.has(r.id))){if(c.add(r.id),r.id===t.id){i=true;break}for(let m of r.importers)n.push(m);}}if(i)try{o.moduleGraph.invalidateModule(t),S=await w(),console.log("Reloaded Elysia API module"),d&&await P();}catch(r){console.error(`Failed to reload Elysia API: ${r}`);}}),!d&&o.middlewares.use(async(e,t,a)=>{if(!e.url?.startsWith("/api"))return a();try{let i="http",c=e.headers.host||"localhost:3000",n=`${i}://${c}${e.url}`,r;if(e.method!=="GET"&&e.method!=="HEAD"){let u=[],f=0;for await(let $ of e){if(f+=$.length,f>M){t.statusCode=413,t.end("Payload Too Large");return}u.push($);}r=Buffer.concat(u);}let m=new Request(n,{method:e.method,headers:e.headers,body:r}),y=await S.handle(m);t.statusCode=y.status,y.headers.forEach((u,f)=>{t.setHeader(f,u);});let k=await y.text();t.end(k);}catch(i){console.error(`Elysia error: ${i}`),t.statusCode=500,t.end("Internal Server Error");}});}}}var T=F;
5
5
  export{T as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-elysia-forge",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A Vite plugin to seamlessly integrate ElysiaJS for full-stack development with Bun runtime.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",