import { logger } from "@common/infrastructure/logger"; import { globalErrorHandler } from "@common/presentation"; import { createAuthProvider } from "@contexts/auth/infraestructure"; import dotenv from "dotenv"; import express, { Application } from "express"; import helmet from "helmet"; import responseTime from "response-time"; import { v1Routes } from "./routes"; dotenv.config(); export function createApp(): Application { const app = express(); app.set("port", process.env.PORT ?? 3002); // secure apps by setting various HTTP headers app.use(helmet()); app.disable("x-powered-by"); // Middlewares app.use(express.json()); app.use(express.text()); app.use(express.urlencoded({ extended: true })); app.use(responseTime()); // set up the response-time middleware // Inicializar Auth Provider app.use((req, res, next) => { createAuthProvider().initialize(); next(); }); app.use((req, _, next) => { logger.info(`▶️ Incoming request ${req.method} to ${req.path}`); next(); }); // Registrar rutas de la API app.use("/api/v1", v1Routes()); // Gestión global de errores app.use(globalErrorHandler); return app; }