import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; import { toNodeHandler } from "better-auth/node"; import express from "express"; import morgan from "morgan"; import { createLogger } from "./logger/logger.controller.js"; import { setupRoutes } from "./routeHandler.routes.js"; import { auth } from "./utils/auth.utils.js"; import { lstCors } from "./utils/cors.utils.js"; const createApp = async () => { const log = createLogger({ module: "system", subModule: "main start" }); const app = express(); let baseUrl = ""; if (process.env.NODE_ENV?.trim() !== "production") { baseUrl = "/lst"; } // if we are running un docker lets use this. if (process.env.RUNNING_IN_DOCKER) { baseUrl = "/lst"; } const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // well leave this active so we can monitor it to validate app.use(morgan("tiny")); app.set("trust proxy", true); app.use(lstCors()); app.all(`${baseUrl}/api/auth/*splat`, toNodeHandler(auth)); app.use(express.json()); setupRoutes(baseUrl, app); app.use( baseUrl + "/app", express.static(join(__dirname, "../frontend/dist")), ); app.get(baseUrl + "/app/*splat", (_, res) => { res.sendFile(join(__dirname, "../frontend/dist/index.html")); }); app.all("*foo", (_, res) => { res.status(400).json({ message: "You have encountered a route that dose not exist, please check the url and try again", }); }); log.info("Lst app created"); return { app, baseUrl }; }; export default createApp;