Files
lstV2/server/index.ts

71 lines
1.7 KiB
TypeScript

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";
// 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) => {
console.log(`Server is running on http://localhost:${info.port}`);
}
);
export type AppRoutes = typeof appRoutes;