hapi-bouncer
Version:
hapi bouncer proxy
96 lines (71 loc) • 2.81 kB
JavaScript
;
exports.__esModule = true;
exports.default = bouncerServer;
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _nodeConfigLoader = require('node-config-loader');
var _createServer = require('./createServer');
var _createServer2 = _interopRequireDefault(_createServer);
var _normalizeConnections = require('./utils/normalizeConnections');
var _normalizeConnections2 = _interopRequireDefault(_normalizeConnections);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var debug = (0, _debug2.default)('hapi-bouncer:debug');
function normalizeMask(configsGlob) {
var result = void 0;
var isDir = false;
try {
isDir = _fs2.default.lstatSync(configsGlob).isDirectory();
} catch (e) {}
if (isDir) {
result = configsGlob + '/**/*.{json,yml,yaml,toml}';
}
return result;
}
var ConfigRoots = function () {
function ConfigRoots() {
var roots = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
_classCallCheck(this, ConfigRoots);
this.roots = roots;
}
ConfigRoots.prototype.add = function add(dir) {
var mask = normalizeMask(dir);
if (mask) {
this.roots.push(mask);
}
};
return ConfigRoots;
}();
function bouncerServer(args) {
var configRoots = new ConfigRoots();
var config = args.config || [];
process.env.HOME && configRoots.add(_path2.default.join(process.env.HOME, '.config', 'hapi-bouncer'));
config.forEach(function (conf) {
return configRoots.add(conf);
});
debug('config dirs: %o', configRoots.roots);
return (0, _nodeConfigLoader.loadConfig)({
mask: configRoots.roots,
env: process.env.NODE_ENV || 'development',
instance: 'server'
}).then(function (conf) {
// debug('raw config: %s', JSON.stringify(conf, null, ' '))
var config = (0, _normalizeConnections2.default)(args.certs, conf);
// debug('normalized config: %s', JSON.stringify(config, null, ' '))
var server = (0, _createServer2.default)(config);
server.start(function (err) {
if (err) {
throw err;
}
server.connections.forEach(function (connection) {
console.log('Server is listening ' + connection.info.uri.toLowerCase());
});
});
return server;
});
}
//# sourceMappingURL=bouncerServer.js.map