curated-node
Version:
Not a framework. Not a module. Just a bunch of Node.js packages you most likely familiar with and probably already use, bundled together in a modular fashion.
34 lines • 4.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GracefulSignalExit = void 0;
var GracefulSignalExit = (function () {
function GracefulSignalExit(signals, promiseFns, logger) {
var _this = this;
if (promiseFns === void 0) { promiseFns = []; }
this._shuttingDown = false;
var handler = function (signal) {
if (_this._shuttingDown)
return;
else
_this._shuttingDown = true;
logger === null || logger === void 0 ? void 0 : logger.newLine();
logger === null || logger === void 0 ? void 0 : logger.warn("Received " + signal + ". Shutting down...");
Promise.all(promiseFns.map(function (fn) { return fn(); }))
.then(function (exitStatuses) {
if (exitStatuses.some(function (eS) { return !eS; })) {
throw new Error("Process exited with errors!");
}
logger === null || logger === void 0 ? void 0 : logger.quiet("Process exited with no errors.");
process.exit(0);
})
.catch(function (err) {
logger === null || logger === void 0 ? void 0 : logger.error(err.message);
process.exit(1);
});
};
signals.forEach(function (signal) { return process.on(signal, handler); });
}
return GracefulSignalExit;
}());
exports.GracefulSignalExit = GracefulSignalExit;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhY2VmdWxTaWduYWxFeGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvR3JhY2VmdWxTaWduYWxFeGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBO0lBR0UsNEJBQ0UsT0FBb0MsRUFDcEMsVUFBMEMsRUFDMUMsTUFBa0I7UUFIcEIsaUJBNEJDO1FBMUJDLDJCQUFBLEVBQUEsZUFBMEM7UUFKcEMsa0JBQWEsR0FBWSxLQUFLLENBQUE7UUFPcEMsSUFBTSxPQUFPLEdBQUcsVUFBQyxNQUFjO1lBQzdCLElBQUksS0FBSSxDQUFDLGFBQWE7Z0JBQUUsT0FBTTs7Z0JBQ3pCLEtBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRTlCLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLEdBQUU7WUFDakIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLElBQUksQ0FBQyxjQUFZLE1BQU0sdUJBQW9CLEVBQUM7WUFFcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQUMsRUFBRSxJQUFLLE9BQUEsRUFBRSxFQUFFLEVBQUosQ0FBSSxDQUFDLENBQUM7aUJBQ3RDLElBQUksQ0FBQyxVQUFDLFlBQVk7Z0JBQ2pCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFDLEVBQUUsSUFBSyxPQUFBLENBQUMsRUFBRSxFQUFILENBQUcsQ0FBQyxFQUFFO29CQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUE7aUJBQy9DO2dCQUVELE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUMsZ0NBQWdDLEVBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDakIsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxVQUFDLEdBQUc7Z0JBQ1QsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFDO2dCQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFBO1FBRUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFDLE1BQU0sSUFBSyxPQUFBLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUEzQixDQUEyQixDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUNILHlCQUFDO0FBQUQsQ0FBQyxBQWhDRCxJQWdDQztBQWhDWSxnREFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dNb2R1bGUgfSBmcm9tIFwiLi4vbW9kdWxlcy9Mb2dcIlxuXG5leHBvcnQgY2xhc3MgR3JhY2VmdWxTaWduYWxFeGl0IHtcbiAgcHJpdmF0ZSBfc2h1dHRpbmdEb3duOiBib29sZWFuID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzaWduYWxzOiBBcnJheTxcIlNJR0lOVFwiIHwgXCJTSUdURVJNXCI+LFxuICAgIHByb21pc2VGbnM6IEFycmF5PCgpID0+IFByb21pc2U8YW55Pj4gPSBbXSxcbiAgICBsb2dnZXI/OiBMb2dNb2R1bGVcbiAgKSB7XG4gICAgY29uc3QgaGFuZGxlciA9IChzaWduYWw6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHRoaXMuX3NodXR0aW5nRG93bikgcmV0dXJuXG4gICAgICBlbHNlIHRoaXMuX3NodXR0aW5nRG93biA9IHRydWVcblxuICAgICAgbG9nZ2VyPy5uZXdMaW5lKClcbiAgICAgIGxvZ2dlcj8ud2FybihgUmVjZWl2ZWQgJHtzaWduYWx9LiBTaHV0dGluZyBkb3duLi4uYClcblxuICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZUZucy5tYXAoKGZuKSA9PiBmbigpKSlcbiAgICAgICAgLnRoZW4oKGV4aXRTdGF0dXNlcykgPT4ge1xuICAgICAgICAgIGlmIChleGl0U3RhdHVzZXMuc29tZSgoZVMpID0+ICFlUykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb2Nlc3MgZXhpdGVkIHdpdGggZXJyb3JzIVwiKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxvZ2dlcj8ucXVpZXQoXCJQcm9jZXNzIGV4aXRlZCB3aXRoIG5vIGVycm9ycy5cIilcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMClcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBsb2dnZXI/LmVycm9yKGVyci5tZXNzYWdlKVxuICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHNpZ25hbHMuZm9yRWFjaCgoc2lnbmFsKSA9PiBwcm9jZXNzLm9uKHNpZ25hbCwgaGFuZGxlcikpXG4gIH1cbn1cbiJdfQ==