57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
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("dev"));
|
|
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;
|