import express, { Application } from 'express'; import { container, server } from './inversify/inversify.config'; import './gcl/gcl.controller'; import { ConfigService } from './config/config.service'; import { AppLogger } from './app/app.logger'; import { ErrorHandlerMiddleware } from './middleware/errorhandler.middleware'; class App { public app: Application; constructor() { this.app = express(); this.config(); this.setupMiddlewares(); } private config(): void { server.setConfig((app) => { app.use(express.json()); app.use(express.urlencoded({ extended: true })) }); this.app.use(server.build()); } private setupMiddlewares() { const errorHandlerMiddleware = container.get<ErrorHandlerMiddleware>(ErrorHandlerMiddleware); this.app.use(errorHandlerMiddleware.handleError.bind(errorHandlerMiddleware)); } } const configService = container.resolve<ConfigService>(ConfigService); const logger = container.resolve<AppLogger>(AppLogger); const app = new App().app; const port = configService.getAppPort(); app.listen(port, () => { logger.info(`Server is running on http://localhost:${port}`); });