import config from "@stealth-developers/config"; import { getUser } from "@stealth-developers/db"; import { Elysia } from "elysia"; import { authPlugin } from "./lib/auth"; import { getLinkedActors } from "./lib/db"; import * as routes from "./routes"; const app = new Elysia() .use(authPlugin) .onError(({ error, set, request }) => { set.status = 500; console.error(request.url, error); if (error instanceof Error) return { message: error.message ?? "Internal Server Error" }; return { message: "Unknown Error" }; }) .use(routes.authRoutes) .group("/api", (app) => app .resolve(({ session, status }) => { if (!session) return status(401, { message: "unauthorized" }); return { session }; }) .get("/me", async ({ session }) => { const [user, actors] = await Promise.all([ getUser(session.userId), getLinkedActors(session.userId), ]); return { user, actors }; }) .use(routes.guildRoutes), ) .listen(config.api.port); console.log(`🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`);