import {serve} from "@hono/node-server"; import {OpenAPIHono} from "@hono/zod-openapi"; import {serveStatic} from "@hono/node-server/serve-static"; import {logger} from "hono/logger"; import {cors} from "hono/cors"; import {log} from "./services/logger/logger.js"; // custom routes import scalar from "./services/general/route/scalar.js"; import system from "./services/server/systemServer.js"; import auth from "./services/auth/authService.js"; const allowedOrigins = ["http://localhost:3000", "http://localhost:4000", "http://localhost:5173"]; const app = new OpenAPIHono(); // middle ware app.use("*", logger()); app.use( "*", cors({ origin: allowedOrigins, allowHeaders: ["X-Custom-Header", "Upgrade-Insecure-Requests"], allowMethods: ["POST", "GET", "OPTIONS"], exposeHeaders: ["Content-Length", "X-Kuma-Revision"], maxAge: 600, credentials: true, }) ); app.doc("/api/ref", { openapi: "3.0.0", info: { version: "1.0.0", title: "LST API", }, }); const routes = [ scalar, auth, // apiHits, system, ] as const; const appRoutes = routes.forEach((route) => { app.route("/api/", route); }); // the catch all api route app.all("/api/*", (c) => c.json({error: "API route not found"}, 404)); app.all("/ocme/*", async (c) => { //return ocmeService(c); c.json({error: "Ocme route not found"}, 404); }); // front end static files app.use("/*", serveStatic({root: "./frontend/dist"})); app.use("*", serveStatic({path: "./frontend/dist/index.html"})); serve( { fetch: app.fetch, port: Number(process.env.VITE_SERVER_PORT), }, (info) => { log.info({username: "LST-SYSTEM"}, `Server is running on http://localhost:${info.port}`); } ); export type AppRoutes = typeof appRoutes;