feat: set up basic express server configuration
This commit adds different middlewares to the express server such as cors, helmet for security, json and url-encoded body parsers, and gzip compression. Additionally, server start logic including router configuration and MongoDB service instantiation are also handled.
This commit is contained in:
parent
f711dd5d49
commit
2b53168dd9
66
src/app.ts
66
src/app.ts
@ -0,0 +1,66 @@
|
|||||||
|
import * as process from "node:process";
|
||||||
|
import { MongodbService } from "@services/databases/mongodb.service";
|
||||||
|
import { EnvUtils } from "@utils/env.util";
|
||||||
|
import { LogsUtils } from "@utils/logs.util";
|
||||||
|
import compression from "compression";
|
||||||
|
import cors from "cors";
|
||||||
|
import express, { type Express } from "express";
|
||||||
|
import helmet from "helmet";
|
||||||
|
|
||||||
|
console.log("\n\n> Starting...\n\n\n\n");
|
||||||
|
|
||||||
|
const logger = new LogsUtils("App");
|
||||||
|
const envs = new EnvUtils("App");
|
||||||
|
|
||||||
|
const app: Express = express();
|
||||||
|
|
||||||
|
// enable cors
|
||||||
|
app.use(cors());
|
||||||
|
app.options("*", cors());
|
||||||
|
|
||||||
|
// enable xss sanitizer
|
||||||
|
app.use(
|
||||||
|
helmet({
|
||||||
|
xXssProtection: true,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
app.use(helmet.xXssProtection());
|
||||||
|
|
||||||
|
// parse json request body
|
||||||
|
app.use(express.json());
|
||||||
|
|
||||||
|
// parse urlencoded request body
|
||||||
|
app.use(
|
||||||
|
express.urlencoded({
|
||||||
|
extended: true,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// gzip compression
|
||||||
|
app.use(compression());
|
||||||
|
|
||||||
|
try {
|
||||||
|
//app.use("/auth", AuthRouter);
|
||||||
|
logger.info("Routers loaded !");
|
||||||
|
} catch (err) {
|
||||||
|
logger.error(err);
|
||||||
|
throw null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const port = envs.get("APP_PORT") || "3000";
|
||||||
|
app.listen(Number.parseInt(port));
|
||||||
|
logger.info(
|
||||||
|
`Server is running ! (port:${port})`,
|
||||||
|
`Memory total: ${Math.round(
|
||||||
|
process.memoryUsage().rss / 1_000_000,
|
||||||
|
)} Mio\n - Memory used by V8: ${Math.round(
|
||||||
|
process.memoryUsage().heapUsed / 1_000_000,
|
||||||
|
)} Mio`,
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(`Server failed to start: ${error}`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const mongo = new MongodbService("App");
|
Loading…
x
Reference in New Issue
Block a user