app.ts
Raw
1import path from "node:path";
2import { staticPlugin } from "@elysiajs/static";
3import { Elysia } from "elysia";
4import config from "./config.ts";
5import { authRoutes } from "./routes/auth.tsx";
6import { avatarRoutes } from "./routes/avatars.ts";
7import { ciRoutes } from "./routes/ci.tsx";
8import { gitRoutes } from "./routes/git.ts";
9import { issueRoutes } from "./routes/issues.tsx";
10import { patchRoutes } from "./routes/patches.tsx";
11import { releasesRoutes } from "./routes/releases.tsx";
12import { repoRoutes } from "./routes/repos.tsx";
13import { settingsRoutes } from "./routes/settings.tsx";
14import { cancelStaleRuns } from "./services/ci.ts";
15import { syncStartup } from "./services/repoSync.ts";
16
17export async function createApp(port: number) {
18 await syncStartup();
19 await cancelStaleRuns();
20 return new Elysia({
21 serve: { maxRequestBodySize: config.MAX_UPLOAD_BYTES },
22 })
23 .use(
24 staticPlugin({
25 assets: path.resolve("./public"),
26 prefix: "/",
27 }),
28 )
29 .use(gitRoutes)
30 .use(settingsRoutes)
31 .use(authRoutes)
32 .use(repoRoutes)
33 .use(issueRoutes)
34 .use(patchRoutes)
35 .use(releasesRoutes)
36 .use(ciRoutes)
37 .use(avatarRoutes)
38 .listen(port);
39}
40