UNPKG

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
"use strict"; 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==