/* eslint-disable import/first */ /* eslint-disable no-console */ require('dotenv').config(); import { ValidationError } from 'express-json-validator-middleware'; import express, { Application, NextFunction, Request, Response, } from 'express'; import cors from 'cors'; import swaggerUi from 'swagger-ui-express'; import helmet from 'helmet'; import YAML from 'yamljs'; import Routes from './routes'; import logger from './Logger/logger'; import ParameterDataBaseLoader from './Loaders/ParameterDataBaseLoader'; const app: Application = express(); const PORT = process.env.PORT || 8000; app.use(helmet.hidePoweredBy()); // swagger init const swaggerDocument = YAML.load('./swagger.yaml'); // middlewares app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument)); app.use(express.json({ limit: '50mb', })); app.use(express.urlencoded({ extended: false })); app.use(cors({ origin: '*', methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', preflightContinue: false, optionsSuccessStatus: 204, })); app.use(express.raw({ limit: '50mb', })); app.use(Routes); app.use((error: Error, request: Request, response: Response, next: NextFunction) => { // Check the error is a validation error if (error instanceof ValidationError) { // TODO: Handle error message accordingly let msg: string | undefined; if (error.validationErrors.body && error.validationErrors.body[0]) { msg = error.validationErrors.body[0].message; } if (msg) { response.status(400).send(msg); } next(); } else { // Pass error on if not a validation error next(error); } }); ParameterDataBaseLoader.initParameterDataBase(); app.listen(PORT, (): void => { console.log(`REPP Backend running here 👉 http://localhost:${PORT}`); logger.info('Server initiated'); });