Socket
Socket
Sign inDemoInstall

node-graceful

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-graceful - npm Package Compare versions

Comparing version 0.2.4 to 0.3.0

.idea/dictionaries/dev.xml

141

es5/index.js
// +----------------------------------------------------------------------+
// | node-graceful v0.2.2 (https://github.com/mrbar42/node-graceful) |
// | node-graceful v0.3.0 (https://github.com/mrbar42/node-graceful) |
// | Graceful process exit manager. |
// |----------------------------------------------------------------------|
"use strict";
'use strict';
function Graceful() {

@@ -11,6 +10,4 @@ // options

this.timeout = 30000;
// constants
this.DEADLY_SIGNALS = ["SIGTERM", "SIGINT", "SIGBREAK", "SIGHUP"];
this.DEADLY_SIGNALS = ['SIGTERM', 'SIGINT', 'SIGBREAK', 'SIGHUP'];
// state

@@ -20,9 +17,6 @@ this._listeners = Object.create(null);

}
Graceful.prototype.on = function (signal, listener, deadly) {
Graceful.prototype.on = function on(signal, listener, deadly) {
var _this = this;
this._registerSignal(signal);
this._listeners[signal].push(listener);
// add signal to deadly list

@@ -32,15 +26,11 @@ if (deadly && this.DEADLY_SIGNALS.indexOf(signal) === -1) {

}
return function () {
return _this.off(signal, listener);
};
return function () { return _this.off(signal, listener); };
};
Graceful.prototype.off = function (signal, listener) {
if (!this._listeners[signal]) return;
Graceful.prototype.off = function off(signal, listener) {
if (!this._listeners[signal])
return;
// remove listener if exists
var index = this._listeners[signal].indexOf(listener);
if (index !== -1) this._listeners[signal].splice(index, 1);
if (index !== -1)
this._listeners[signal].splice(index, 1);
// clear master listener if no listeners left

@@ -51,4 +41,3 @@ if (!this._listeners[signal].length) {

};
Graceful.prototype.clear = function (signal) {
Graceful.prototype.clear = function clear(signal) {
var _this = this;

@@ -58,66 +47,51 @@ if (signal) {

this._unregisterSignal(signal);
} else {
Object.keys(this._listeners).forEach(function (sig) {
return _this.clear(signal);
});
}
else {
Object
.keys(this._listeners)
.forEach(function (sig) { return _this.clear(sig); });
}
};
Graceful.prototype.exit = function (code, signal) {
if (typeof code == "number") {
Graceful.prototype.exit = function exit(code, signal) {
if (typeof code === 'number') {
process.exitCode = code;
}
var simulatedSignal = signal || this.DEADLY_SIGNALS[0];
this._processSignal(simulatedSignal);
};
Graceful.prototype._registerSignal = function (signal) {
Graceful.prototype._registerSignal = function _registerSignal(signal) {
var _this = this;
if (this._listeners[signal]) return;
if (this._listeners[signal])
return;
this._listeners[signal] = [];
var handler = function (event) {
return _this._processSignal(signal, event);
};
var handler = function (event) { return _this._processSignal(signal, event); };
// handle special 'exit' event case
if (signal == "exit") {
this.DEADLY_SIGNALS.forEach(function (deadlySignal) {
return process.on(deadlySignal, handler);
});
} else {
if (signal === 'exit') {
this.DEADLY_SIGNALS.forEach(function (deadlySignal) { return process.on(deadlySignal, handler); });
}
else {
process.on(signal, handler);
}
// store handler on listeners array for future ref
this._listeners[signal].__handler__ = handler;
};
Graceful.prototype._unregisterSignal = function (signal) {
if (!this._listeners[signal]) return;
Graceful.prototype._unregisterSignal = function _unregisterSignal(signal) {
if (!this._listeners[signal])
return;
var handler = this._listeners[signal].__handler__;
// handle special 'exit' event case
if (signal == "exit") {
this.DEADLY_SIGNALS.forEach(function (deadlySignal) {
return process.removeListener(deadlySignal, handler);
});
} else {
if (signal === 'exit') {
this.DEADLY_SIGNALS.forEach(function (deadlySignal) { return process.removeListener(deadlySignal, handler); });
}
else {
process.removeListener(signal, handler);
}
delete this._listeners[signal];
};
Graceful.prototype._processSignal = function (signal, event) {
Graceful.prototype._processSignal = function _processSignal(signal, event) {
var _this = this;
var deadly = this.DEADLY_SIGNALS.indexOf(signal) != -1;
var deadly = this.DEADLY_SIGNALS.indexOf(signal) !== -1;
var listeners = this._listeners[signal] && this._listeners[signal].slice();
var exitListeners = this._listeners.exit && this._listeners.exit.slice();
var exitListeners = this._listeners['exit'] && this._listeners['exit'].slice();
var targetCount = listeners && listeners.length || 0;
// also include exit listeners if deadly

@@ -127,10 +101,6 @@ if (deadly && exitListeners) {

}
// this should never happen
if (!targetCount) {
return process.nextTick(function () {
return _this._killProcess();
});
return process.nextTick(function () { return _this._killProcess(); });
}
var quit = (function () {

@@ -141,38 +111,30 @@ var count = 0;

if (count >= targetCount) {
if (deadly) _this._killProcess();
if (deadly)
_this._killProcess();
}
};
})();
// exec signal specific listeners
if (listeners) {
listeners.forEach(function (listener) {
return _this._invokeListener(listener, quit, event, signal);
});
listeners.forEach(function (listener) { return _this._invokeListener(listener, quit, event, signal); });
}
// also invoke exit listeners
if (deadly && exitListeners) {
if (this.isExiting) {
if (this.exitOnDouble) this._killProcess(true);
} else {
if (this.exitOnDouble)
this._killProcess(true);
}
else {
this.isExiting = true;
if (parseInt(this.timeout)) {
setTimeout(function () {
return _this._killProcess(true);
}, this.timeout);
if (Number(this.timeout)) {
setTimeout(function () { return _this._killProcess(true); }, this.timeout);
}
exitListeners.forEach(function (listener) {
return _this._invokeListener(listener, quit, event, signal);
});
exitListeners.forEach(function (listener) { return _this._invokeListener(listener, quit, event, signal); });
}
}
};
Graceful.prototype._killProcess = function (force) {
Graceful.prototype._killProcess = function _killProcess(force) {
process.exit(process.exitCode || (force ? 1 : 0));
};
Graceful.prototype._invokeListener = function (listener, quit, event, signal) {
Graceful.prototype._invokeListener = function _invokeListener(listener, quit, event, signal) {
var invoked = false;

@@ -186,12 +148,9 @@ // listener specific callback

};
var retVal = listener(done, event, signal);
// allow returning a promise
if (retVal && typeof retVal.then === "function" && typeof retVal["catch"] === "function") {
if (retVal && typeof retVal.then === 'function' && typeof retVal["catch"] === 'function') {
retVal.then(done)["catch"](done);
}
};
var graceful = new Graceful();
module.exports = graceful;
{
"name": "node-graceful",
"version": "0.2.4",
"version": "0.3.0",
"description": "Graceful process exit manager. allows waiting on multiple async services.",
"main": "graceful.js",
"main": "index",
"repository": {

@@ -23,3 +23,3 @@ "type": "git",

"test": "npm run test:unit && npm run test:lint",
"transpile": "cat graceful.js | 6to5 > es5/index.js",
"transpile": "tsc --allowJs --outFile es5/index.js --pretty index.js ",
"prepublish": "npm run test && npm run transpile"

@@ -30,3 +30,2 @@ },

"devDependencies": {
"6to5": "3.6.5",
"tslint": "5.9.1",

@@ -33,0 +32,0 @@ "typescript": "2.6.2"

# node-graceful
[![Build Status](https://travis-ci.org/mrbar42/node-graceful.svg?branch=master)](https://travis-ci.org/mrbar42/node-graceful)
node-graceful is a small helper module without dependencies that aims to ease graceful exit

@@ -4,0 +6,0 @@ of a complex node program including async waiting of multiple independent modules.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc