UNPKG

metallic-app

Version:

Koa application for CARTO services

96 lines (58 loc) 6.83 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _metallicInterfaces = require('metallic-interfaces'); var _app = require('./app/app'); var _app2 = _interopRequireDefault(_app); var _koa = require('koa'); var _koa2 = _interopRequireDefault(_koa); var _appMiddlewares = require('./app/middleware/app-middlewares'); var _appMiddlewares2 = _interopRequireDefault(_appMiddlewares); var _catchErrorMiddleware = require('./app/middleware/catch-error-middleware'); var _catchErrorMiddleware2 = _interopRequireDefault(_catchErrorMiddleware); var _errorMiddleware = require('./app/middleware/error-middleware'); var _errorMiddleware2 = _interopRequireDefault(_errorMiddleware); var _requestIdMiddleware = require('./app/middleware/request-id-middleware'); var _requestIdMiddleware2 = _interopRequireDefault(_requestIdMiddleware); var _logMiddleware = require('./app/middleware/log-middleware'); var _logMiddleware2 = _interopRequireDefault(_logMiddleware); var _metricsMiddleware = require('./app/middleware/metrics-middleware'); var _metricsMiddleware2 = _interopRequireDefault(_metricsMiddleware); var _responseTimeMiddleware = require('./app/middleware/response-time-middleware'); var _responseTimeMiddleware2 = _interopRequireDefault(_responseTimeMiddleware); var _httpServerLoggerMixin = require('./http-server-logger-mixin'); var _httpServerLoggerMixin2 = _interopRequireDefault(_httpServerLoggerMixin); var _httpServer = require('./http-server'); var _httpServer2 = _interopRequireDefault(_httpServer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class HttpServerFactory extends _metallicInterfaces.FactoryInterface { static create({ metrics, logger, options } = {}) { options = _extends({ port: 0 }, options); const port = options.port; const koa = new _koa2.default(); // add a reference to metrics from ctx if (metrics) { koa.context.metrics = metrics; } const middlewares = new _appMiddlewares2.default(); middlewares.add(new _catchErrorMiddleware2.default()); middlewares.add(new _requestIdMiddleware2.default()); if (logger) { middlewares.add(new _logMiddleware2.default({ logger })); } if (metrics) { middlewares.add(new _metricsMiddleware2.default({ metrics })); } middlewares.add(new _responseTimeMiddleware2.default()); middlewares.add(new _errorMiddleware2.default()); const app = new _app2.default(koa, middlewares); const LoggedHttpServer = logger ? _httpServerLoggerMixin2.default.mix(_httpServer2.default) : _httpServer2.default; return new LoggedHttpServer({ app, port, logger }); } } exports.default = HttpServerFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odHRwLXNlcnZlci1mYWN0b3J5LmpzIl0sIm5hbWVzIjpbIkh0dHBTZXJ2ZXJGYWN0b3J5IiwiY3JlYXRlIiwibWV0cmljcyIsImxvZ2dlciIsIm9wdGlvbnMiLCJwb3J0Iiwia29hIiwiY29udGV4dCIsIm1pZGRsZXdhcmVzIiwiYWRkIiwiYXBwIiwiTG9nZ2VkSHR0cFNlcnZlciIsIm1peCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFZSxNQUFNQSxpQkFBTiw4Q0FBaUQ7QUFDOUQsU0FBT0MsTUFBUCxDQUFlLEVBQUVDLE9BQUYsRUFBV0MsTUFBWCxFQUFtQkMsT0FBbkIsS0FBK0IsRUFBOUMsRUFBa0Q7QUFDaERBO0FBQ0VDLFlBQU07QUFEUixPQUVLRCxPQUZMOztBQUtBLFVBQU1DLE9BQU9ELFFBQVFDLElBQXJCO0FBQ0EsVUFBTUMsTUFBTSxtQkFBWjs7QUFFQTtBQUNBLFFBQUlKLE9BQUosRUFBYTtBQUNYSSxVQUFJQyxPQUFKLENBQVlMLE9BQVosR0FBc0JBLE9BQXRCO0FBQ0Q7O0FBRUQsVUFBTU0sY0FBYyw4QkFBcEI7O0FBRUFBLGdCQUFZQyxHQUFaLENBQWdCLG9DQUFoQjs7QUFFQUQsZ0JBQVlDLEdBQVosQ0FBZ0IsbUNBQWhCOztBQUVBLFFBQUlOLE1BQUosRUFBWTtBQUNWSyxrQkFBWUMsR0FBWixDQUFnQiw0QkFBa0IsRUFBRU4sTUFBRixFQUFsQixDQUFoQjtBQUNEOztBQUVELFFBQUlELE9BQUosRUFBYTtBQUNYTSxrQkFBWUMsR0FBWixDQUFnQixnQ0FBc0IsRUFBRVAsT0FBRixFQUF0QixDQUFoQjtBQUNEOztBQUVETSxnQkFBWUMsR0FBWixDQUFnQixzQ0FBaEI7QUFDQUQsZ0JBQVlDLEdBQVosQ0FBZ0IsK0JBQWhCOztBQUVBLFVBQU1DLE1BQU0sa0JBQVFKLEdBQVIsRUFBYUUsV0FBYixDQUFaOztBQUVBLFVBQU1HLG1CQUFtQlIsU0FBUyxnQ0FBc0JTLEdBQXRCLHNCQUFULHVCQUF6Qjs7QUFFQSxXQUFPLElBQUlELGdCQUFKLENBQXFCLEVBQUVELEdBQUYsRUFBT0wsSUFBUCxFQUFhRixNQUFiLEVBQXJCLENBQVA7QUFDRDtBQXJDNkQ7a0JBQTNDSCxpQiIsImZpbGUiOiJodHRwLXNlcnZlci1mYWN0b3J5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeUludGVyZmFjZSB9IGZyb20gJ21ldGFsbGljLWludGVyZmFjZXMnXG5pbXBvcnQgQXBwIGZyb20gJy4vYXBwL2FwcCdcbmltcG9ydCBLb2EgZnJvbSAna29hJ1xuaW1wb3J0IEFwcE1pZGRsZXdhcmVzIGZyb20gJy4vYXBwL21pZGRsZXdhcmUvYXBwLW1pZGRsZXdhcmVzJ1xuaW1wb3J0IENhdGNoRXJyb3JNaWRkbGV3YXJlIGZyb20gJy4vYXBwL21pZGRsZXdhcmUvY2F0Y2gtZXJyb3ItbWlkZGxld2FyZSdcbmltcG9ydCBFcnJvck1pZGRsZXdhcmUgZnJvbSAnLi9hcHAvbWlkZGxld2FyZS9lcnJvci1taWRkbGV3YXJlJ1xuaW1wb3J0IFJlcXVlc3RJZE1pZGRsZXdhcmUgZnJvbSAnLi9hcHAvbWlkZGxld2FyZS9yZXF1ZXN0LWlkLW1pZGRsZXdhcmUnXG5pbXBvcnQgTG9nTWlkZGxld2FyZSBmcm9tICcuL2FwcC9taWRkbGV3YXJlL2xvZy1taWRkbGV3YXJlJ1xuaW1wb3J0IE1ldHJpY3NNaWRkbGV3YXJlIGZyb20gJy4vYXBwL21pZGRsZXdhcmUvbWV0cmljcy1taWRkbGV3YXJlJ1xuaW1wb3J0IFJlc3BvbnNlVGltZU1pZGRsZXdhcmUgZnJvbSAnLi9hcHAvbWlkZGxld2FyZS9yZXNwb25zZS10aW1lLW1pZGRsZXdhcmUnXG5pbXBvcnQgSHR0cFNlcnZlckxvZ2dlck1peGluIGZyb20gJy4vaHR0cC1zZXJ2ZXItbG9nZ2VyLW1peGluJ1xuaW1wb3J0IEh0dHBTZXJ2ZXIgZnJvbSAnLi9odHRwLXNlcnZlcidcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHR0cFNlcnZlckZhY3RvcnkgZXh0ZW5kcyBGYWN0b3J5SW50ZXJmYWNlIHtcbiAgc3RhdGljIGNyZWF0ZSAoeyBtZXRyaWNzLCBsb2dnZXIsIG9wdGlvbnMgfSA9IHt9KSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHBvcnQ6IDAsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuXG4gICAgY29uc3QgcG9ydCA9IG9wdGlvbnMucG9ydFxuICAgIGNvbnN0IGtvYSA9IG5ldyBLb2EoKVxuXG4gICAgLy8gYWRkIGEgcmVmZXJlbmNlIHRvIG1ldHJpY3MgZnJvbSBjdHhcbiAgICBpZiAobWV0cmljcykge1xuICAgICAga29hLmNvbnRleHQubWV0cmljcyA9IG1ldHJpY3NcbiAgICB9XG5cbiAgICBjb25zdCBtaWRkbGV3YXJlcyA9IG5ldyBBcHBNaWRkbGV3YXJlcygpXG5cbiAgICBtaWRkbGV3YXJlcy5hZGQobmV3IENhdGNoRXJyb3JNaWRkbGV3YXJlKCkpXG5cbiAgICBtaWRkbGV3YXJlcy5hZGQobmV3IFJlcXVlc3RJZE1pZGRsZXdhcmUoKSlcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgIG1pZGRsZXdhcmVzLmFkZChuZXcgTG9nTWlkZGxld2FyZSh7IGxvZ2dlciB9KSlcbiAgICB9XG5cbiAgICBpZiAobWV0cmljcykge1xuICAgICAgbWlkZGxld2FyZXMuYWRkKG5ldyBNZXRyaWNzTWlkZGxld2FyZSh7IG1ldHJpY3MgfSkpXG4gICAgfVxuXG4gICAgbWlkZGxld2FyZXMuYWRkKG5ldyBSZXNwb25zZVRpbWVNaWRkbGV3YXJlKCkpXG4gICAgbWlkZGxld2FyZXMuYWRkKG5ldyBFcnJvck1pZGRsZXdhcmUoKSlcblxuICAgIGNvbnN0IGFwcCA9IG5ldyBBcHAoa29hLCBtaWRkbGV3YXJlcylcblxuICAgIGNvbnN0IExvZ2dlZEh0dHBTZXJ2ZXIgPSBsb2dnZXIgPyBIdHRwU2VydmVyTG9nZ2VyTWl4aW4ubWl4KEh0dHBTZXJ2ZXIpIDogSHR0cFNlcnZlclxuXG4gICAgcmV0dXJuIG5ldyBMb2dnZWRIdHRwU2VydmVyKHsgYXBwLCBwb3J0LCBsb2dnZXIgfSlcbiAgfVxufVxuIl19