metallic-launcher
Version:
Service launcher for metallic
40 lines (36 loc) • 3.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
class LauncherUnhandledRejectionListenerMixin {
static mix(superclass) {
return class extends superclass {
constructor({ unhandledRejectionListeners }) {
super(...arguments);
this.unhandledRejectionListeners = unhandledRejectionListeners;
}
async run() {
this.unhandledRejectionListeners.listen((reason, promise) => {
promise.catch(err => {
if (this.logger) {
this.logger.error('Unhandled promise rejection:', err);
}
this.exit(1);
});
});
const httpServer = await super.run();
return httpServer;
}
async close() {
this.unhandledRejectionListeners.remove();
await super.close();
}
async exit(failure = 0) {
this.unhandledRejectionListeners.remove();
await super.exit(failure);
}
};
}
}
exports.default = LauncherUnhandledRejectionListenerMixin;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXVuY2hlci11bmhhbmRsZWQtcmVqZWN0aW9uLWxpc3RlbmVyLW1peGluLmpzIl0sIm5hbWVzIjpbIkxhdW5jaGVyVW5oYW5kbGVkUmVqZWN0aW9uTGlzdGVuZXJNaXhpbiIsIm1peCIsInN1cGVyY2xhc3MiLCJjb25zdHJ1Y3RvciIsInVuaGFuZGxlZFJlamVjdGlvbkxpc3RlbmVycyIsImFyZ3VtZW50cyIsInJ1biIsImxpc3RlbiIsInJlYXNvbiIsInByb21pc2UiLCJjYXRjaCIsImVyciIsImxvZ2dlciIsImVycm9yIiwiZXhpdCIsImh0dHBTZXJ2ZXIiLCJjbG9zZSIsInJlbW92ZSIsImZhaWx1cmUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQWUsTUFBTUEsdUNBQU4sQ0FBOEM7QUFDM0QsU0FBT0MsR0FBUCxDQUFZQyxVQUFaLEVBQXdCO0FBQ3RCLFdBQU8sY0FBY0EsVUFBZCxDQUF5QjtBQUM5QkMsa0JBQWEsRUFBRUMsMkJBQUYsRUFBYixFQUE4QztBQUM1QyxjQUFNLEdBQUdDLFNBQVQ7QUFDQSxhQUFLRCwyQkFBTCxHQUFtQ0EsMkJBQW5DO0FBQ0Q7O0FBRUQsWUFBTUUsR0FBTixHQUFhO0FBQ1gsYUFBS0YsMkJBQUwsQ0FBaUNHLE1BQWpDLENBQXdDLENBQUNDLE1BQUQsRUFBU0MsT0FBVCxLQUFxQjtBQUMzREEsa0JBQVFDLEtBQVIsQ0FBY0MsT0FBTztBQUNuQixnQkFBSSxLQUFLQyxNQUFULEVBQWlCO0FBQ2YsbUJBQUtBLE1BQUwsQ0FBWUMsS0FBWixDQUFrQiw4QkFBbEIsRUFBa0RGLEdBQWxEO0FBQ0Q7QUFDRCxpQkFBS0csSUFBTCxDQUFVLENBQVY7QUFDRCxXQUxEO0FBTUQsU0FQRDtBQVFBLGNBQU1DLGFBQWEsTUFBTSxNQUFNVCxHQUFOLEVBQXpCO0FBQ0EsZUFBT1MsVUFBUDtBQUNEOztBQUVELFlBQU1DLEtBQU4sR0FBZTtBQUNiLGFBQUtaLDJCQUFMLENBQWlDYSxNQUFqQztBQUNBLGNBQU0sTUFBTUQsS0FBTixFQUFOO0FBQ0Q7O0FBRUQsWUFBTUYsSUFBTixDQUFZSSxVQUFVLENBQXRCLEVBQXlCO0FBQ3ZCLGFBQUtkLDJCQUFMLENBQWlDYSxNQUFqQztBQUNBLGNBQU0sTUFBTUgsSUFBTixDQUFXSSxPQUFYLENBQU47QUFDRDtBQTNCNkIsS0FBaEM7QUE2QkQ7QUEvQjBEO2tCQUF4Q2xCLHVDIiwiZmlsZSI6ImxhdW5jaGVyLXVuaGFuZGxlZC1yZWplY3Rpb24tbGlzdGVuZXItbWl4aW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBMYXVuY2hlclVuaGFuZGxlZFJlamVjdGlvbkxpc3RlbmVyTWl4aW4ge1xuICBzdGF0aWMgbWl4IChzdXBlcmNsYXNzKSB7XG4gICAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgc3VwZXJjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvciAoeyB1bmhhbmRsZWRSZWplY3Rpb25MaXN0ZW5lcnMgfSkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpXG4gICAgICAgIHRoaXMudW5oYW5kbGVkUmVqZWN0aW9uTGlzdGVuZXJzID0gdW5oYW5kbGVkUmVqZWN0aW9uTGlzdGVuZXJzXG4gICAgICB9XG5cbiAgICAgIGFzeW5jIHJ1biAoKSB7XG4gICAgICAgIHRoaXMudW5oYW5kbGVkUmVqZWN0aW9uTGlzdGVuZXJzLmxpc3RlbigocmVhc29uLCBwcm9taXNlKSA9PiB7XG4gICAgICAgICAgcHJvbWlzZS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb246JywgZXJyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leGl0KDEpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgaHR0cFNlcnZlciA9IGF3YWl0IHN1cGVyLnJ1bigpXG4gICAgICAgIHJldHVybiBodHRwU2VydmVyXG4gICAgICB9XG5cbiAgICAgIGFzeW5jIGNsb3NlICgpIHtcbiAgICAgICAgdGhpcy51bmhhbmRsZWRSZWplY3Rpb25MaXN0ZW5lcnMucmVtb3ZlKClcbiAgICAgICAgYXdhaXQgc3VwZXIuY2xvc2UoKVxuICAgICAgfVxuXG4gICAgICBhc3luYyBleGl0IChmYWlsdXJlID0gMCkge1xuICAgICAgICB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbkxpc3RlbmVycy5yZW1vdmUoKVxuICAgICAgICBhd2FpdCBzdXBlci5leGl0KGZhaWx1cmUpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=