tailwind
Version:
tailwind is a base module for streaming and evented CQS applications.
134 lines (110 loc) • 3.77 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var http = require('http');
var cors = require('cors'),
express = require('express'),
flaschenpost = require('flaschenpost'),
flatten = require('lodash/flatten'),
lusca = require('lusca'),
morgan = require('morgan'),
nocache = require('nocache');
var v1 = require('./v1');
var Server =
/*#__PURE__*/
function () {
function Server(_ref) {
var port = _ref.port,
corsOrigin = _ref.corsOrigin;
(0, _classCallCheck2.default)(this, Server);
if (!port) {
throw new Error('Port is missing.');
}
if (!corsOrigin) {
throw new Error('CORS origin is missing.');
}
if (corsOrigin === '*') {
this.corsOrigin = corsOrigin;
} else {
this.corsOrigin = flatten([corsOrigin]);
}
this.port = port;
}
(0, _createClass2.default)(Server, [{
key: "link",
value: function () {
var _link = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(app, incoming, outgoing) {
var port, logger, api, server;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (app) {
_context.next = 2;
break;
}
throw new Error('App is missing.');
case 2:
if (incoming) {
_context.next = 4;
break;
}
throw new Error('Incoming is missing.');
case 4:
if (outgoing) {
_context.next = 6;
break;
}
throw new Error('Outgoing is missing.');
case 6:
port = this.port;
logger = app.services.getLogger();
api = express();
api.use(morgan('tiny', {
stream: new flaschenpost.Middleware('debug')
}));
api.use(lusca.xframe('DENY'));
api.use(lusca.xssProtection());
api.options('*', cors({
methods: ['GET', 'POST'],
origin: this.corsOrigin,
optionsSuccessStatus: 200
}));
api.use(cors({
methods: ['GET', 'POST'],
origin: this.corsOrigin,
optionsSuccessStatus: 200
}));
api.use(nocache());
api.use('/v1', v1());
server = http.createServer(api);
_context.next = 19;
return new Promise(function (resolve) {
server.listen(port, function () {
logger.debug('Started status endpoint.', {
port: port
});
resolve();
});
});
case 19:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function link(_x, _x2, _x3) {
return _link.apply(this, arguments);
}
return link;
}()
}]);
return Server;
}();
module.exports = Server;
;