/** * @file Entry point for the Elysium API server. * @copyright nhcarrigan * @license Naomi's Public License * @author Naomi Carrigan */ import { serve } from "@hono/node-server"; import { Hono } from "hono"; import { cors } from "hono/cors"; import { logger } from "hono/logger"; import { aboutRouter } from "./routes/about.js"; import { apotheosisRouter } from "./routes/apotheosis.js"; import { authRouter } from "./routes/auth.js"; import { bossRouter } from "./routes/boss.js"; import { craftRouter } from "./routes/craft.js"; import { exploreRouter } from "./routes/explore.js"; import { gameRouter } from "./routes/game.js"; import { leaderboardRouter } from "./routes/leaderboards.js"; import { prestigeRouter } from "./routes/prestige.js"; import { profileRouter } from "./routes/profile.js"; import { transcendenceRouter } from "./routes/transcendence.js"; const app = new Hono(); app.use("*", logger()); app.use( "*", cors({ allowHeaders: [ "Authorization", "Content-Type" ], allowMethods: [ "GET", "POST", "PUT", "DELETE", "OPTIONS" ], origin: process.env.CORS_ORIGIN ?? "http://localhost:5173", }), ); app.route("/about", aboutRouter); app.route("/auth", authRouter); app.route("/game", gameRouter); app.route("/boss", bossRouter); app.route("/explore", exploreRouter); app.route("/craft", craftRouter); app.route("/prestige", prestigeRouter); app.route("/transcendence", transcendenceRouter); app.route("/apotheosis", apotheosisRouter); app.route("/leaderboards", leaderboardRouter); app.route("/profile", profileRouter); app.get("/health", (context) => { return context.json({ status: "ok" }); }); const port = Number(process.env.PORT ?? 3001); serve({ fetch: app.fetch, port: port }, () => { process.stdout.write(`Elysium API running on port ${String(port)}\n`); });