UNPKG

inceptum

Version:

hipages take on the foundational library for enterprise-grade apps written in NodeJS

70 lines 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const e = require("express"); const BaseSingletonDefinition_1 = require("../ioc/objectdefinition/BaseSingletonDefinition"); const NewrelicUtil_1 = require("../newrelic/NewrelicUtil"); const LogManager_1 = require("../log/LogManager"); const WebRoutingInspector_1 = require("./WebRoutingInspector"); const logger = LogManager_1.LogManager.getLogger(__filename); class RouteRegisterUtil { constructor() { this.routesToRegister = []; } doRegister() { this.routesToRegister.forEach((route) => { logger.info(`Registering route from ${route.objectName}: ${route.verb.toUpperCase()} ${route.path} -> ${route.methodName}`); this.express[route.verb](route.path, (req, res) => { return this[route.instanceProperty][route.methodName](req, res); }); }); } } exports.RouteRegisterUtil = RouteRegisterUtil; exports.errorMiddleware = (err, req, res, next) => { if (NewrelicUtil_1.NewrelicUtil.isNewrelicAvailable()) { const nr = NewrelicUtil_1.NewrelicUtil.getNewrelicIfAvailable(); nr.noticeError(nr); } logger.error(err); if (res.headersSent) { return next(err); // Give back to express to handle } res.status(500).end(); }; class WebPlugin { constructor() { this.name = 'WebPlugin'; this.expressProvider = () => new e(); } willStart(app, pluginContext) { const express = this.expressProvider(); pluginContext.set(WebPlugin.CONTEXT_APP_KEY, express); const context = app.getContext(); const definition = new BaseSingletonDefinition_1.BaseSingletonDefinition(RouteRegisterUtil); definition.withLazyLoading(false); definition.startFunction('doRegister'); definition.setPropertyByValue('express', express); context.registerDefinition(definition); context.addObjectDefinitionInspector(new WebRoutingInspector_1.WebRoutingInspector(definition)); } didStart(app, pluginContext) { const express = pluginContext.get(WebPlugin.CONTEXT_APP_KEY); const port = app.getConfig('app.server.port', 10010); // Add error handling middleware as the final middleware. express.use(exports.errorMiddleware); // Start the server const server = express.listen(port, () => { app.logger.info(`Server started at http://localhost:${port}`); }); pluginContext.set(WebPlugin.CONTEXT_SERVER_KEY, server); } willStop(app, pluginContext) { const express = pluginContext.get(WebPlugin.CONTEXT_SERVER_KEY); app.logger.info('Shutting down server'); express.close(); } } WebPlugin.CONTEXT_APP_KEY = 'WebPlugin/APP'; WebPlugin.CONTEXT_SERVER_KEY = 'WebPlugin/SERVER'; exports.default = WebPlugin; //# sourceMappingURL=WebPlugin.js.map