import path from "node:path"; import { staticPlugin } from "@elysiajs/static"; import { Elysia } from "elysia"; import config from "./config.ts"; import { authRoutes } from "./routes/auth.tsx"; import { avatarRoutes } from "./routes/avatars.ts"; import { ciRoutes } from "./routes/ci.tsx"; import { gitRoutes } from "./routes/git.ts"; import { issueRoutes } from "./routes/issues.tsx"; import { patchRoutes } from "./routes/patches.tsx"; import { releasesRoutes } from "./routes/releases.tsx"; import { repoRoutes } from "./routes/repos.tsx"; import { settingsRoutes } from "./routes/settings.tsx"; import { cancelStaleRuns } from "./services/ci.ts"; import { syncStartup } from "./services/repoSync.ts"; export async function createApp(port: number) { await syncStartup(); await cancelStaleRuns(); return new Elysia({ serve: { maxRequestBodySize: config.MAX_UPLOAD_BYTES }, }) .use( staticPlugin({ assets: path.resolve("./public"), prefix: "/", }), ) .use(gitRoutes) .use(settingsRoutes) .use(authRoutes) .use(repoRoutes) .use(issueRoutes) .use(patchRoutes) .use(releasesRoutes) .use(ciRoutes) .use(avatarRoutes) .listen(port); }