UNPKG

express-typeorm-rest-boilerplate

Version:

Boilerplate code to get started with building RESTful API Services

66 lines 2.59 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const body_parser_1 = __importDefault(require("body-parser")); const celebrate_1 = require("celebrate"); const class_validator_1 = require("class-validator"); const cors_1 = __importDefault(require("cors")); const helmet_1 = __importDefault(require("helmet")); const routes_1 = __importDefault(require("../api/routes")); const config_1 = __importDefault(require("../config")); const ErrorHandler_1 = require("../helpers/ErrorHandler"); const logger_1 = __importDefault(require("../logger")); exports.default = (app) => { // Health Check endpoints app.get('/status', (req, res) => { res.status(200).end(); }); app.head('/status', (req, res) => { res.status(200).end(); }); app.enable('trust proxy'); // Enable Cross Origin Resource Sharing to all origins by default app.use(cors_1.default()); // Use Helmet to secure the app by setting various HTTP headers app.use(helmet_1.default()); // Middleware that transforms the raw string of req.body into json app.use(body_parser_1.default.json()); // Load API routes app.use(`/${config_1.default.endpointPrefix}`, routes_1.default); /// Error handlers app.use((err, req, res, next) => { if (celebrate_1.isCelebrateError(err)) { logger_1.default.error('Error: %o', err); res.status(400).json({ error: 'Invalid data' }).end(); } else if (err instanceof Array && err[0] instanceof class_validator_1.ValidationError) { const messageArr = []; let e; for (e of err) { Object.values(e.constraints).forEach((msg) => { messageArr.push(msg); }); } logger_1.default.error('Error: %o', messageArr); res.status(400).json({ errors: messageArr }).end(); } else if (err.name === 'UnauthorizedError') { /** * Handle 401 thrown by express-jwt library */ return res.status(401).json({ error: err.message }); } else { next(err); } }); app.use( // eslint-disable-next-line @typescript-eslint/no-unused-vars (err, _req, res, _next) => { logger_1.default.error('Error: %o', err.message); ErrorHandler_1.handleError(err, res); }); }; //# sourceMappingURL=express.js.map