File size: 1,565 Bytes
fa8c6e6 93db1e3 42cedcf e39190c f32db6c fa8c6e6 34a79b6 fa8c6e6 2989aa8 fa8c6e6 f32db6c e60f600 fb2bfb5 814e02b e39190c 814e02b e60f600 e620dbd f3a31b3 e620dbd f3a31b3 b9a1c37 e620dbd 90e16c2 d9f570b b49dc83 d9f570b f32db6c 42cedcf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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`);
|