import { Elysia } from "elysia"; import { swagger } from "@elysiajs/swagger" Bun.eval = (code: string) => { const transpiler = new Bun.Transpiler({ loader: "ts" }); return eval(transpiler.transformSync(`eval((${code}))`)); } const app = new Elysia() .use(swagger({ path : "/docs", documentation: { info: { title : 'Pluvi API Documentation', version: '1.0.0' } } })) .get("/", () => "Hello, Elysia!") .get("/items/:id", ({ params }) => `Item ID: ${params.id}`) .get("/eval", async ({ query, error }) => { const { code } = query if (!code) return error(400, "missing code") const returned = await Bun.eval(`(async () => { ${code} }) `) return returned() }) .get('/exec', async function* ({ query, error }) { if (!query.cmd) return error(400, "required query 'cmd'") const proc = Bun.spawn({ cmd: ["bash", "-c", query.cmd], stderr: "pipe", }); const err = await new Response(proc.stderr).text(); if (err) yield err const out = await new Response(proc.stdout).text(); if (out) yield out yield `\n\n\`process exited with code ${proc.signalCode}\`` }) .ws('/realtime', { message(ws, message) { console.log(message) ws.send('got:' + message) } }) .listen(process.env.PORT); console.log(`🦊 Elysia is running at http://localhost:7680`);