diff --git a/.gitignore b/.gitignore index 8afe6f6..73c95cb 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ build/Release # Dependency directory # https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git node_modules -.npmignore ## Directory-based project format: .idea/ @@ -72,3 +71,4 @@ atlassian-ide-plugin.xml com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties +.DS_Store diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..e810eec --- /dev/null +++ b/.npmignore @@ -0,0 +1,7 @@ +tests/ +.gitignore +.npmignore +.travis.yml +LICENSE +tslint.json +package-lock.json diff --git a/es5/index.js b/es5/index.js index 7030564..20f2729 100644 --- a/es5/index.js +++ b/es5/index.js @@ -1,173 +1,135 @@ // +----------------------------------------------------------------------+ -// | 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() { // options this.exitOnDouble = true; this.timeout = 30000; - // constants - this.DEADLY_SIGNALS = ["SIGTERM", "SIGINT", "SIGBREAK", "SIGHUP"]; - + this.DEADLY_SIGNALS = ['SIGTERM', 'SIGINT', 'SIGBREAK', 'SIGHUP']; // state this._listeners = Object.create(null); this.isExiting = false; } - -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 if (deadly && this.DEADLY_SIGNALS.indexOf(signal) === -1) { this.DEADLY_SIGNALS.push(signal); } - - 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 if (!this._listeners[signal].length) { this._unregisterSignal(signal); } }; - -Graceful.prototype.clear = function (signal) { +Graceful.prototype.clear = function clear(signal) { var _this = this; if (signal) { delete this._listeners[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 if (deadly && exitListeners) { targetCount += exitListeners.length; } - // this should never happen if (!targetCount) { - return process.nextTick(function () { - return _this._killProcess(); - }); + return process.nextTick(function () { return _this._killProcess(); }); } - var quit = (function () { var count = 0; return function () { count++; 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; // listener specific callback var done = function () { @@ -176,14 +138,11 @@ Graceful.prototype._invokeListener = function (listener, quit, event, signal) { quit(); } }; - 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; - diff --git a/graceful.d.ts b/index.d.ts similarity index 97% rename from graceful.d.ts rename to index.d.ts index 1f13834..fa06df0 100644 --- a/graceful.d.ts +++ b/index.d.ts @@ -19,3 +19,5 @@ export declare module Graceful { function exit(code?: number | string, signal?: string): void; } + +export default Graceful diff --git a/graceful.js b/index.js similarity index 80% rename from graceful.js rename to index.js index 3bca936..bb5aaaa 100644 --- a/graceful.js +++ b/index.js @@ -1,5 +1,5 @@ // +----------------------------------------------------------------------+ -// | 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'; @@ -17,7 +17,7 @@ function Graceful() { this.isExiting = false; } -Graceful.prototype.on = function (signal, listener, deadly) { +Graceful.prototype.on = function on(signal, listener, deadly) { this._registerSignal(signal); this._listeners[signal].push(listener); @@ -30,7 +30,7 @@ Graceful.prototype.on = function (signal, listener, deadly) { return () => this.off(signal, listener); }; -Graceful.prototype.off = function (signal, listener) { +Graceful.prototype.off = function off(signal, listener) { if (!this._listeners[signal]) return; // remove listener if exists @@ -43,7 +43,7 @@ Graceful.prototype.off = function (signal, listener) { } }; -Graceful.prototype.clear = function (signal) { +Graceful.prototype.clear = function clear(signal) { if (signal) { delete this._listeners[signal]; this._unregisterSignal(signal); @@ -51,12 +51,12 @@ Graceful.prototype.clear = function (signal) { else { Object .keys(this._listeners) - .forEach(sig => this.clear(signal)); + .forEach(sig => 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; } @@ -65,7 +65,7 @@ Graceful.prototype.exit = function (code, signal) { this._processSignal(simulatedSignal); }; -Graceful.prototype._registerSignal = function (signal) { +Graceful.prototype._registerSignal = function _registerSignal(signal) { if (this._listeners[signal]) return; this._listeners[signal] = []; @@ -73,7 +73,7 @@ Graceful.prototype._registerSignal = function (signal) { let handler = event => this._processSignal(signal, event); // handle special 'exit' event case - if (signal == 'exit') { + if (signal === 'exit') { this.DEADLY_SIGNALS.forEach(deadlySignal => process.on(deadlySignal, handler)); } else { @@ -84,13 +84,13 @@ Graceful.prototype._registerSignal = function (signal) { this._listeners[signal].__handler__ = handler; }; -Graceful.prototype._unregisterSignal = function (signal) { +Graceful.prototype._unregisterSignal = function _unregisterSignal(signal) { if (!this._listeners[signal]) return; let handler = this._listeners[signal].__handler__; // handle special 'exit' event case - if (signal == 'exit') { + if (signal === 'exit') { this.DEADLY_SIGNALS.forEach(deadlySignal => process.removeListener(deadlySignal, handler)); } else { @@ -100,8 +100,8 @@ Graceful.prototype._unregisterSignal = function (signal) { delete this._listeners[signal]; }; -Graceful.prototype._processSignal = function (signal, event) { - let deadly = this.DEADLY_SIGNALS.indexOf(signal) != -1; +Graceful.prototype._processSignal = function _processSignal(signal, event) { + let deadly = this.DEADLY_SIGNALS.indexOf(signal) !== -1; let listeners = this._listeners[signal] && this._listeners[signal].slice(); let exitListeners = this._listeners['exit'] && this._listeners['exit'].slice(); let targetCount = listeners && listeners.length || 0; @@ -116,14 +116,14 @@ Graceful.prototype._processSignal = function (signal, event) { return process.nextTick(() => this._killProcess()); } - let quit = (()=> { + let quit = (() => { let count = 0; return () => { count++; if (count >= targetCount) { if (deadly) this._killProcess(); } - } + }; })(); // exec signal specific listeners @@ -139,7 +139,7 @@ Graceful.prototype._processSignal = function (signal, event) { } else { this.isExiting = true; - if (parseInt(this.timeout)) { + if (Number(this.timeout)) { setTimeout(() => this._killProcess(true), this.timeout); } exitListeners.forEach(listener => this._invokeListener(listener, quit, event, signal)); @@ -147,11 +147,11 @@ Graceful.prototype._processSignal = function (signal, event) { } }; -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) { let invoked = false; // listener specific callback let done = () => { diff --git a/package-lock.json b/package-lock.json index 9fdf747..1a95f45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,129 +1,9 @@ { "name": "node-graceful", - "version": "0.2.3", + "version": "0.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { - "6to5": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/6to5/-/6to5-3.6.5.tgz", - "integrity": "sha1-WeSfprhPiwW19f14tuIo9xtvd0M=", - "dev": true, - "requires": { - "acorn-6to5": "0.11.1-31", - "ast-types": "0.6.16", - "chalk": "0.5.1", - "chokidar": "0.12.6", - "commander": "2.6.0", - "core-js": "0.5.4", - "debug": "2.6.9", - "detect-indent": "3.0.0", - "estraverse": "1.9.1", - "esutils": "1.1.6", - "fs-readdir-recursive": "0.1.0", - "globals": "5.1.0", - "js-tokenizer": "1.3.3", - "lodash": "3.0.0", - "output-file-sync": "1.1.0", - "private": "0.1.6", - "regenerator-6to5": "0.8.10-1", - "regexpu": "1.1.0", - "roadrunner": "1.0.4", - "source-map": "0.1.43", - "source-map-support": "0.2.9", - "supports-color": "1.2.0", - "useragent": "2.2.1" - }, - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", - "dev": true - }, - "ansi-styles": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", - "dev": true - }, - "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", - "dev": true, - "requires": { - "ansi-styles": "1.1.0", - "escape-string-regexp": "1.0.5", - "has-ansi": "0.1.0", - "strip-ansi": "0.3.0", - "supports-color": "0.2.0" - }, - "dependencies": { - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", - "dev": true - } - } - }, - "commander": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", - "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", - "dev": true - }, - "esutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", - "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=", - "dev": true - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", - "dev": true, - "requires": { - "ansi-regex": "0.2.1" - } - }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", - "dev": true, - "requires": { - "ansi-regex": "0.2.1" - } - }, - "supports-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", - "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", - "dev": true - } - } - }, - "acorn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", - "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", - "dev": true - }, - "acorn-6to5": { - "version": "0.11.1-31", - "resolved": "https://registry.npmjs.org/acorn-6to5/-/acorn-6to5-0.11.1-31.tgz", - "integrity": "sha1-JoZKcB03UAebYlnaXfFgNvu0ZPs=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -145,18 +25,6 @@ "sprintf-js": "1.0.3" } }, - "ast-types": { - "version": "0.6.16", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.6.16.tgz", - "integrity": "sha1-BCBbcu3dGVqP6qCB8R0ClKJN7ZM=", - "dev": true - }, - "async-each": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz", - "integrity": "sha1-tn6Z7c3fllQeRK9WKQzX1cbnBDk=", - "dev": true - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -236,17 +104,6 @@ } } }, - "chokidar": { - "version": "0.12.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-0.12.6.tgz", - "integrity": "sha1-viBPW5Y04AkxElbl1ujg5QgoTS8=", - "dev": true, - "requires": { - "async-each": "0.1.6", - "fsevents": "0.3.8", - "readdirp": "1.3.0" - } - }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -268,98 +125,12 @@ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, - "commoner": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", - "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", - "dev": true, - "requires": { - "commander": "2.13.0", - "detective": "4.7.1", - "glob": "5.0.15", - "graceful-fs": "4.1.11", - "iconv-lite": "0.4.19", - "mkdirp": "0.5.1", - "private": "0.1.6", - "q": "1.5.1", - "recast": "0.11.23" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - } - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "core-js": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.5.4.tgz", - "integrity": "sha1-BKnyoLshlG2YFkY0tKe5kKOIEpY=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "detect-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.0.tgz", - "integrity": "sha1-ehLEthvk68FwzW1BbOQ3VBJGN9g=", - "dev": true, - "requires": { - "get-stdin": "3.0.2", - "minimist": "1.2.0", - "repeating": "1.1.3" - } - }, - "detective": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", - "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", - "dev": true, - "requires": { - "acorn": "5.3.0", - "defined": "1.0.0" - } - }, "diff": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", @@ -378,46 +149,18 @@ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, - "estraverse": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.1.tgz", - "integrity": "sha1-VTp0gp73Y+phU4B/hrkMzeXjIjE=", - "dev": true - }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "fs-readdir-recursive": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.0.tgz", - "integrity": "sha1-QrIwNHUxdK5Xu4EfMsOld3OjLj8=", - "dev": true - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", - "integrity": "sha1-mZLxAyySXIKVVNDVmAHcoDE6U1Y=", - "dev": true, - "optional": true, - "requires": { - "nan": "2.8.0" - } - }, - "get-stdin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz", - "integrity": "sha1-wc7SS5A5s43thb3xYeV3E7bdSr4=", - "dev": true - }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -432,18 +175,6 @@ "path-is-absolute": "1.0.1" } }, - "globals": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-5.1.0.tgz", - "integrity": "sha1-Tcr+TpCNZmuuCGI0vLNKtVPlUk4=", - "dev": true - }, - "graceful-fs": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=", - "dev": true - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -459,12 +190,6 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -481,27 +206,6 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "js-tokenizer": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/js-tokenizer/-/js-tokenizer-1.3.3.tgz", - "integrity": "sha1-N7kl7w0D3xsf/CBc9e43xjKE9Iw=", - "dev": true - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -518,24 +222,6 @@ "esprima": "4.0.0" } }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "lodash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.0.0.tgz", - "integrity": "sha1-STNktxg6NxBNZSVfOLD+WGnL4P0=", - "dev": true - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -545,48 +231,6 @@ "brace-expansion": "1.1.8" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", - "dev": true, - "optional": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -596,22 +240,6 @@ "wrappy": "1.0.2" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "output-file-sync": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.0.tgz", - "integrity": "sha1-sQ3GCJP4PeheXVU6djJwWSlf+NY=", - "dev": true, - "requires": { - "mkdirp": "0.5.1", - "xtend": "4.0.1" - } - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -624,159 +252,6 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, - "private": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz", - "integrity": "sha1-VcapdtD5uvuZJIUTUP5HubX7t8E=", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "readdirp": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.3.0.tgz", - "integrity": "sha1-6vGptGO+moGQ/JrhY6oayTSqNAs=", - "dev": true, - "requires": { - "graceful-fs": "2.0.3", - "minimatch": "0.2.14", - "readable-stream": "1.0.34" - }, - "dependencies": { - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - } - } - }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "dev": true, - "requires": { - "ast-types": "0.9.6", - "esprima": "3.1.3", - "private": "0.1.6", - "source-map": "0.5.7" - }, - "dependencies": { - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", - "dev": true - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", - "dev": true - }, - "regenerator-6to5": { - "version": "0.8.10-1", - "resolved": "https://registry.npmjs.org/regenerator-6to5/-/regenerator-6to5-0.8.10-1.tgz", - "integrity": "sha1-RvdkcGUYFyiXxN6OlhB8j79+tFI=", - "dev": true, - "requires": { - "ast-types": "0.6.16", - "commoner": "0.10.8", - "private": "0.1.6", - "through": "2.3.8" - } - }, - "regexpu": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.1.0.tgz", - "integrity": "sha1-+vzfNKWb6xc99tmX0I0D0F3avo0=", - "dev": true, - "requires": { - "recast": "0.9.18", - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - }, - "dependencies": { - "esprima-fb": { - "version": "10001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-10001.1.0-dev-harmony-fb.tgz", - "integrity": "sha1-9++0UtPIAG3eazxZZ4YE9xFKiCw=", - "dev": true - }, - "recast": { - "version": "0.9.18", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.9.18.tgz", - "integrity": "sha1-9wkhu59zfY4fsGpEAxW9fsFFh8k=", - "dev": true, - "requires": { - "ast-types": "0.6.16", - "esprima-fb": "10001.1.0-dev-harmony-fb", - "private": "0.1.6", - "source-map": "0.1.43" - } - } - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "0.5.0" - } - }, - "repeating": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", @@ -786,65 +261,18 @@ "path-parse": "1.0.5" } }, - "roadrunner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/roadrunner/-/roadrunner-1.0.4.tgz", - "integrity": "sha1-pp5dkssQZ+koGiECp23TcUC87S4=", - "dev": true - }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "source-map-support": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.9.tgz", - "integrity": "sha1-C/s72uaA82tRgVFgu5UNCxf0okg=", - "dev": true, - "requires": { - "source-map": "0.1.32" - }, - "dependencies": { - "source-map": { - "version": "0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -860,21 +288,6 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, "tslib": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", @@ -916,35 +329,11 @@ "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", "dev": true }, - "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", - "dev": true, - "requires": { - "lru-cache": "2.2.4", - "tmp": "0.0.33" - }, - "dependencies": { - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true } } } diff --git a/package.json b/package.json index bbb7323..2bd59b2 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "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": { "type": "git", "url": "https://github.com/mrbar42/node-graceful.git" @@ -20,13 +20,12 @@ "test:unit": "node tests/runner", "test:lint": "tslint -c tslint.json --fix tests/*.ts", "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" }, "author": "mrbar42", "license": "WTFPL", "devDependencies": { - "6to5": "3.6.5", "tslint": "5.9.1", "typescript": "2.6.2" } diff --git a/tests/TypeScript.ts b/tests/TypeScript.ts index 5344ca8..37b3fa1 100644 --- a/tests/TypeScript.ts +++ b/tests/TypeScript.ts @@ -1,4 +1,4 @@ -import {Graceful} from "../graceful"; +import {Graceful} from "../"; const listener = (done, event, signal) => { done(); diff --git a/tests/async-exit.js b/tests/async-exit.js index 87a9cc5..31b093e 100644 --- a/tests/async-exit.js +++ b/tests/async-exit.js @@ -1,6 +1,6 @@ 'use strict'; -const Graceful = require('../graceful'); +const Graceful = require('../'); Graceful.on('exit', done => { setTimeout(() => { @@ -9,4 +9,4 @@ Graceful.on('exit', done => { }, 100) }); -Graceful.exit(); \ No newline at end of file +Graceful.exit(); diff --git a/tests/clear-listeners.js b/tests/clear-listeners.js index 180c618..a501904 100644 --- a/tests/clear-listeners.js +++ b/tests/clear-listeners.js @@ -1,6 +1,6 @@ 'use strict'; -const Graceful = require('../graceful'); +const Graceful = require('../'); let handler = done => { process.stdout.write('should-not-run'); @@ -13,4 +13,4 @@ Graceful.off('exit', handler); let removeListener = Graceful.on('exit', handler.bind(null)); removeListener(); -Graceful.exit(); \ No newline at end of file +Graceful.exit(); diff --git a/tests/exit-on-double.js b/tests/exit-on-double.js index 91e1008..481d2be 100644 --- a/tests/exit-on-double.js +++ b/tests/exit-on-double.js @@ -1,6 +1,6 @@ 'use strict'; -const Graceful = require('../graceful'); +const Graceful = require('../'); Graceful.on('exit', done => { setTimeout(() => { diff --git a/tests/forced-exit.js b/tests/forced-exit.js index 00d7578..cb52baf 100644 --- a/tests/forced-exit.js +++ b/tests/forced-exit.js @@ -1,6 +1,6 @@ 'use strict'; -const Graceful = require('../graceful'); +const Graceful = require('../'); Graceful.timeout = 1000; @@ -11,4 +11,4 @@ Graceful.on('exit', done => { }, 2000); }); -Graceful.exit(); \ No newline at end of file +Graceful.exit(); diff --git a/tests/multiple-listeners.js b/tests/multiple-listeners.js index b1f9a7b..582b39b 100644 --- a/tests/multiple-listeners.js +++ b/tests/multiple-listeners.js @@ -1,6 +1,6 @@ 'use strict'; -const Graceful = require('../graceful'); +const Graceful = require('../'); let count = 0; Graceful.on('exit', done => { @@ -20,4 +20,4 @@ Graceful.on('exit', done => { }, 200) }); -Graceful.exit('SIGINT'); \ No newline at end of file +Graceful.exit('SIGINT'); diff --git a/tests/self-triggered.js b/tests/self-triggered.js index 1395ea2..f26ff6d 100644 --- a/tests/self-triggered.js +++ b/tests/self-triggered.js @@ -1,6 +1,6 @@ 'use strict'; -const Graceful = require('../graceful'); +const Graceful = require('../'); Graceful.on('exit', done => { setTimeout(() => { diff --git a/tests/wait-for-promise.js b/tests/wait-for-promise.js index 4f15014..67b3f39 100644 --- a/tests/wait-for-promise.js +++ b/tests/wait-for-promise.js @@ -1,6 +1,6 @@ 'use strict'; -const Graceful = require('../graceful'); +const Graceful = require('../'); let handlerSuccess = () => { return new Promise(function (resolve) { @@ -23,4 +23,4 @@ let handlerReject = () => { Graceful.on('exit', handlerSuccess); Graceful.on('exit', handlerReject); -Graceful.exit(); \ No newline at end of file +Graceful.exit();