diff --git a/.eslintrc.js b/.eslintrc.js index 02c4bd6..45d1d61 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -3,6 +3,9 @@ module.exports = { "es6": true, "node": true }, + "plugins": [ + "mocha" + ], "extends": "eslint:recommended", "rules": { "indent": [ diff --git a/lib/tmp.js b/lib/tmp.js index de13299..4ce81dd 100644 --- a/lib/tmp.js +++ b/lib/tmp.js @@ -550,10 +550,6 @@ function setGracefulCleanup() { _gracefulCleanup = true; } -const version = process.versions.node.split('.').map(function (value) { - return parseInt(value, 10); -}); - /** * If there are multiple different versions of tmp in place, make sure that * we recognize the old listeners. diff --git a/package-lock.json b/package-lock.json index 8432e64..9a59f65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,47 @@ "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", "dev": true }, + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.0.tgz", + "integrity": "sha1-6yhAdG6dxIvV4GOjbj/UAMXqtak=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", @@ -27,6 +68,12 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -48,6 +95,27 @@ "sprintf-js": "1.0.3" } }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", @@ -78,6 +146,47 @@ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -101,6 +210,28 @@ "dev": true, "requires": { "readable-stream": "2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "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 + } } }, "boom": { @@ -128,6 +259,21 @@ "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", "dev": true }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", @@ -153,26 +299,69 @@ } }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "2.2.1", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "supports-color": "4.5.0" }, "dependencies": { - "supports-color": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "has-flag": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -194,6 +383,12 @@ } } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, "codeclimate-test-reporter": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/codeclimate-test-reporter/-/codeclimate-test-reporter-0.4.1.tgz", @@ -206,6 +401,21 @@ "request": "2.74.0" } }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", @@ -230,12 +440,34 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, "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 }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", @@ -284,6 +516,21 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -296,6 +543,15 @@ "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", "dev": true }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -323,18 +579,156 @@ "esutils": "2.0.2", "optionator": "0.8.2", "source-map": "0.2.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + } + } + }, + "eslint": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.12.1.tgz", + "integrity": "sha512-28hOYej+NZ/R5H1yMvyKa1+bPlu+fnsIAQffK6hxXgvmXnImos2bA5XfCn5dYv2k2mrKj+/U/Z4L5ICWxC7TQw==", + "dev": true, + "requires": { + "ajv": "5.5.0", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.2", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.0.1", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-mocha": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-4.11.0.tgz", + "integrity": "sha1-kRk6L1XiCl41l0BUoAidMBmO5Xg=", + "dev": true, + "requires": { + "ramda": "0.24.1" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" } }, "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, "esutils": { @@ -349,18 +743,72 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -395,6 +843,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "generate-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", @@ -441,6 +895,32 @@ "path-is-absolute": "1.0.1" } }, + "globals": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.0.1.tgz", + "integrity": "sha1-Eqh7sBDlFUOWrMU14eQ/x1Ow5eg=", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.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 + }, "graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", @@ -484,8 +964,38 @@ "requires": { "chalk": "1.1.3", "commander": "2.9.0", - "is-my-json-valid": "2.16.1", + "is-my-json-valid": "2.17.1", "pinkie-promise": "2.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, "has-ansi": { @@ -532,6 +1042,24 @@ "sshpk": "1.13.1" } }, + "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 + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -548,16 +1076,44 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", + "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", "dev": true, "requires": { "generate-function": "2.0.0", @@ -566,12 +1122,51 @@ "xtend": "4.0.1" } }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -618,6 +1213,12 @@ "wordwrap": "1.0.0" }, "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", @@ -633,6 +1234,12 @@ } } }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, "js-yaml": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", @@ -641,14 +1248,6 @@ "requires": { "argparse": "1.0.9", "esprima": "4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - } } }, "jsbn": { @@ -664,6 +1263,18 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -814,6 +1425,16 @@ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, "mime-db": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", @@ -829,6 +1450,12 @@ "mime-db": "1.30.0" } }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -878,6 +1505,18 @@ "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", "dev": true }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "node-uuid": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", @@ -899,6 +1538,12 @@ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -908,6 +1553,15 @@ "wrappy": "1.0.2" } }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -951,6 +1605,18 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -966,6 +1632,12 @@ "pinkie": "2.0.4" } }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -978,6 +1650,18 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -990,17 +1674,24 @@ "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", "dev": true }, + "ramda": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.24.1.tgz", + "integrity": "sha1-w7d1UZfzW43DUCIoJixMkd22uFc=", + "dev": true + }, "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, @@ -1039,12 +1730,38 @@ "tunnel-agent": "0.4.3" } }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -1055,6 +1772,81 @@ "align-text": "0.1.4" } }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", @@ -1104,11 +1896,24 @@ } } }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, "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 + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "stringstream": { "version": "0.0.5", @@ -1117,14 +1922,28 @@ "dev": true }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } } }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", @@ -1134,6 +1953,41 @@ "has-flag": "1.0.0" } }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.0", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "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" + } + }, "tough-cookie": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", @@ -1143,6 +1997,12 @@ "punycode": "1.4.1" } }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, "tunnel-agent": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", @@ -1165,6 +2025,12 @@ "prelude-ls": "1.1.2" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -1246,12 +2112,27 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", diff --git a/package.json b/package.json index 31bb3aa..5dcc1fd 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ "os-tmpdir": "~1.0.2" }, "devDependencies": { + "eslint": "^4.12.1", + "eslint-plugin-mocha": "^4.11.0", "codeclimate-test-reporter": "~0.4.0", "istanbul": "~0.4.5", "mocha": "~3.4.2" @@ -34,6 +36,7 @@ "lib/" ], "scripts": { + "lint": "eslint lib --env mocha test", "clean": "rm -Rf ./coverage", "test": "istanbul cover ./node_modules/mocha/bin/_mocha --report none --print none --dir ./coverage/json -u exports -R test/*-test.js && istanbul report --root ./coverage/json html && istanbul report text-summary", "doc": "jsdoc -c .jsdoc.json" diff --git a/test/child-process.js b/test/child-process.js index 0f8faeb..3dd0dde 100644 --- a/test/child-process.js +++ b/test/child-process.js @@ -3,35 +3,31 @@ var fs = require('fs'), path = require('path'), - existsSync = fs.existsSync || path.existsSync, + exists = fs.exists || path.exists, spawn = require('child_process').spawn; +const ISTANBUL_PATH = path.join(__dirname, '..', 'node_modules', 'istanbul', 'lib', 'cli.js'); -module.exports.genericChildProcess = function spawnGenericChildProcess(configFile, cb) { - var - configFilePath = path.join(__dirname, 'outband', configFile), - command_args = [path.join(__dirname, 'spawn-generic.js'), configFilePath]; - - // make sure that the config file exists - if (!existsSync(configFilePath)) - return cb(new Error('ENOENT: configFile ' + configFilePath + ' does not exist')); +module.exports.genericChildProcess = _spawnProcess('spawn-generic.js'); +module.exports.childProcess = _spawnProcess('spawn-custom.js'); - _do_spawn(command_args, cb); -}; +function _spawnProcess(spawnFile) { + return function (testCase, configFile, cb) { + testCase.timeout(5000); -module.exports.childProcess = function spawnChildProcess(configFile, cb) { - var - configFilePath = path.join(__dirname, 'outband', configFile), - command_args = [path.join(__dirname, 'spawn-custom.js'), configFilePath]; + var + configFilePath = path.join(__dirname, 'outband', configFile), + commandArgs = [path.join(__dirname, spawnFile), configFilePath]; - // make sure that the config file exists - if (!existsSync(configFilePath)) - return cb(new Error('ENOENT: configFile ' + configFilePath + ' does not exist')); + exists(configFilePath, function (configExists) { + if (configExists) return _doSpawn(commandArgs, cb); - _do_spawn(command_args, cb); + cb(new Error('ENOENT: configFile ' + configFilePath + ' does not exist')); + }); + }; } -function _do_spawn(command_args, cb) { +function _doSpawn(commandArgs, cb) { var node_path = process.argv[0], stdoutBufs = [], @@ -42,41 +38,45 @@ function _do_spawn(command_args, cb) { stdoutDone = false; if (process.env.running_under_istanbul) { - var - istanbul_path = path.join(__dirname, '..', 'node_modules', 'istanbul', 'lib', 'cli.js'); - command_args = [ - istanbul_path, 'cover', '--report' , 'none', '--print', 'none', + commandArgs = [ + ISTANBUL_PATH, 'cover', '--report' , 'none', '--print', 'none', '--dir', path.join('coverage', 'json'), '--include-pid', - command_args[0], '--', command_args[1] + commandArgs[0], '--', commandArgs[1] ]; } + // spawn doesn’t have the quoting problems that exec does, // especially when going for Windows portability. - child = spawn(node_path, command_args); + child = spawn(node_path, commandArgs); child.stdin.end(); - // TODO:we no longer support node 0.6 + + // TODO we no longer support node 0.6 // Cannot use 'close' event because not on node-0.6. function _close() { var stderr = _bufferConcat(stderrBufs).toString(), stdout = _bufferConcat(stdoutBufs).toString(); + if (stderrDone && stdoutDone && !done) { done = true; cb(null, stderr, stdout); } } + child.on('error', function _spawnError(err) { if (!done) { done = true; cb(err); } }); + child.stdout.on('data', function _stdoutData(data) { stdoutBufs.push(data); }).on('close', function _stdoutEnd() { stdoutDone = true; _close(); }); + child.stderr.on('data', function _stderrData(data) { stderrBufs.push(data); }).on('close', function _stderrEnd() { @@ -88,13 +88,13 @@ function _do_spawn(command_args, cb) { function _bufferConcat(buffers) { if (Buffer.concat) { return Buffer.concat.apply(this, arguments); - } else { - return new Buffer(buffers.reduce(function (acc, buf) { - for (var i = 0; i < buf.length; i++) { - acc.push(buf[i]); - } - return acc; - }, [])); } + + return new Buffer(buffers.reduce(function (acc, buf) { + for (var i = 0; i < buf.length; i++) { + acc.push(buf[i]); + } + return acc; + }, [])); } diff --git a/test/dir-sync-test.js b/test/dir-sync-test.js index 91e13b1..445ae0d 100644 --- a/test/dir-sync-test.js +++ b/test/dir-sync-test.js @@ -14,18 +14,14 @@ var // make sure that everything gets cleaned up tmp.setGracefulCleanup(); - describe('tmp', function () { describe('#dirSync()', function () { - // API call standard inband tests describe('when running inband standard tests', function () { - inbandStandardTests(false, function before() { this.topic = tmp.dirSync(this.opts); }); describe('with invalid tries', function () { - it('should result in an error on negative tries', function () { try { tmp.dirSync({ tries: -1 }); @@ -34,6 +30,7 @@ describe('tmp', function () { assert.ok(err instanceof Error); } }); + it('should result in an error on non numeric tries', function () { try { tmp.dirSync({ tries: 'nan' }); @@ -46,23 +43,21 @@ describe('tmp', function () { }); }); - // API call issue specific inband tests describe('when running issue specific inband tests', function () { - // add your issue specific tests here }); - // API call standard outband tests describe('when running standard outband tests', function () { it('on graceful cleanup', function (done) { - childProcess('graceful-dir-sync.json', function (err, stderr, stdout) { + childProcess(this, 'graceful-dir-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (!stderr) assert.fail('stderr expected'); else assertions.assertDoesNotExist(stdout); done(); }); }); + it('on non graceful cleanup', function (done) { - childProcess('non-graceful-dir-sync.json', function (err, stderr, stdout) { + childProcess(this, 'non-graceful-dir-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (!stderr) assert.fail('stderr expected'); else { @@ -72,8 +67,9 @@ describe('tmp', function () { done(); }); }); + it('on keep', function (done) { - childProcess('keep-dir-sync.json', function (err, stderr, stdout) { + childProcess(this, 'keep-dir-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else { @@ -83,16 +79,18 @@ describe('tmp', function () { done(); }); }); + it('on unlink (keep == false)', function (done) { - childProcess('unlink-dir-sync.json', function (err, stderr, stdout) { + childProcess(this, 'unlink-dir-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else assertions.assertDoesNotExist(stdout); done(); }); }); + it('on unsafe cleanup', function (done) { - childProcess('unsafe-sync.json', function (err, stderr, stdout) { + childProcess(this, 'unsafe-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else { @@ -104,8 +102,9 @@ describe('tmp', function () { done(); }); }); + it('on non unsafe cleanup', function (done) { - childProcess('non-unsafe-sync.json', function (err, stderr, stdout) { + childProcess(this, 'non-unsafe-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else { @@ -124,11 +123,9 @@ describe('tmp', function () { }); }); - // API call issue specific outband tests describe('when running issue specific outband tests', function () { - // add your issue specific tests here it('on issue #62', function (done) { - childProcess('issue62-sync.json', function (err, stderr, stdout) { + childProcess(this, 'issue62-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else assertions.assertDoesNotExist(stdout); diff --git a/test/dir-test.js b/test/dir-test.js index 74ce178..8d20e3e 100644 --- a/test/dir-test.js +++ b/test/dir-test.js @@ -17,9 +17,7 @@ tmp.setGracefulCleanup(); describe('tmp', function () { describe('#dir()', function () { - // API call standard inband tests describe('when running inband standard tests', function () { - inbandStandardTests(false, function before(done) { var that = this; tmp.dir(this.opts, function (err, name, removeCallback) { @@ -38,6 +36,7 @@ describe('tmp', function () { done(); }); }); + it('should result in an error on non numeric tries', function (done) { tmp.dir({ tries: 'nan' }, function (err) { assert.ok(err instanceof Error, 'should have failed'); @@ -47,23 +46,22 @@ describe('tmp', function () { }); }); - // API call issue specific inband tests describe('when running issue specific inband tests', function () { // add your issue specific tests here }); - // API call standard outband tests describe('when running standard outband tests', function () { it('on graceful cleanup', function (done) { - childProcess('graceful-dir.json', function (err, stderr, stdout) { + childProcess(this, 'graceful-dir.json', function (err, stderr, stdout) { if (err) return done(err); else if (!stderr) assert.fail('stderr expected'); else assertions.assertDoesNotExist(stdout); done(); }); }); + it('on non graceful cleanup', function (done) { - childProcess('non-graceful-dir.json', function (err, stderr, stdout) { + childProcess(this, 'non-graceful-dir.json', function (err, stderr, stdout) { if (err) return done(err); else if (!stderr) assert.fail('stderr expected'); else { @@ -73,8 +71,9 @@ describe('tmp', function () { done(); }); }); + it('on keep', function (done) { - childProcess('keep-dir.json', function (err, stderr, stdout) { + childProcess(this, 'keep-dir.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else { @@ -84,16 +83,18 @@ describe('tmp', function () { done(); }); }); + it('on unlink (keep == false)', function (done) { - childProcess('unlink-dir.json', function (err, stderr, stdout) { + childProcess(this, 'unlink-dir.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else assertions.assertDoesNotExist(stdout); done(); }); }); + it('on unsafe cleanup', function (done) { - childProcess('unsafe.json', function (err, stderr, stdout) { + childProcess(this, 'unsafe.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else { @@ -105,8 +106,9 @@ describe('tmp', function () { done(); }); }); + it('on non unsafe cleanup', function (done) { - childProcess('non-unsafe.json', function (err, stderr, stdout) { + childProcess(this, 'non-unsafe.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else { @@ -125,11 +127,9 @@ describe('tmp', function () { }); }); - // API call issue specific outband tests describe('when running issue specific outband tests', function () { - // add your issue specific tests here it('on issue #62', function (done) { - childProcess('issue62.json', function (err, stderr, stdout) { + childProcess(this, 'issue62.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else assertions.assertDoesNotExist(stdout); diff --git a/test/file-sync-test.js b/test/file-sync-test.js index d418b53..22795fe 100644 --- a/test/file-sync-test.js +++ b/test/file-sync-test.js @@ -16,9 +16,7 @@ tmp.setGracefulCleanup(); describe('tmp', function () { describe('#fileSync()', function () { - // API call standard inband tests describe('when running inband standard tests', function () { - inbandStandardTests(true, function before() { this.topic = tmp.fileSync(this.opts); }); @@ -32,6 +30,7 @@ describe('tmp', function () { assert.ok(err instanceof Error); } }); + it('should result in an error on non numeric tries', function () { try { tmp.fileSync({ tries: 'nan' }); @@ -43,23 +42,21 @@ describe('tmp', function () { }); }); - // API call issue specific inband tests describe('when running issue specific inband tests', function () { - // add your issue specific tests here }); - // API call standard outband tests describe('when running standard outband tests', function () { it('on graceful', function (done) { - childProcess('graceful-file-sync.json', function (err, stderr, stdout) { + childProcess(this, 'graceful-file-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (!stderr) assert.fail('stderr expected'); else assertions.assertDoesNotExist(stdout); done(); }); }); + it('on non graceful', function (done) { - childProcess('non-graceful-file-sync.json', function (err, stderr, stdout) { + childProcess(this, 'non-graceful-file-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (!stderr) assert.fail('stderr expected'); else { @@ -69,8 +66,9 @@ describe('tmp', function () { done(); }); }); + it('on keep', function (done) { - childProcess('keep-file-sync.json', function (err, stderr, stdout) { + childProcess(this, 'keep-file-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else { @@ -80,8 +78,9 @@ describe('tmp', function () { done(); }); }); + it('on unlink (keep == false)', function (done) { - childProcess('unlink-file-sync.json', function (err, stderr, stdout) { + childProcess(this, 'unlink-file-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else assertions.assertDoesNotExist(stdout); @@ -90,11 +89,9 @@ describe('tmp', function () { }); }); - // API call issue specific outband tests describe('when running issue specific outband tests', function () { - // add your issue specific tests here it('on issue #115', function (done) { - childProcess('issue115-sync.json', function (err, stderr, stdout) { + childProcess(this, 'issue115-sync.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else assertions.assertDoesNotExist(stdout); @@ -104,4 +101,3 @@ describe('tmp', function () { }); }); }); - diff --git a/test/file-test.js b/test/file-test.js index a07899c..6597bef 100644 --- a/test/file-test.js +++ b/test/file-test.js @@ -13,14 +13,13 @@ var // make sure that everything gets cleaned up tmp.setGracefulCleanup(); - describe('tmp', function () { describe('#file()', function () { - // API call standard inband tests describe('when running inband standard tests', function () { inbandStandardTests(true, function before(done) { var that = this; + tmp.file(this.opts, function (err, name, fd, removeCallback) { if (err) done(err); else { @@ -37,6 +36,7 @@ describe('tmp', function () { done(); }); }); + it('should result in an error on non numeric tries', function (done) { tmp.file({ tries: 'nan' }, function (err) { assert.ok(err instanceof Error, 'should have failed'); @@ -46,23 +46,21 @@ describe('tmp', function () { }); }); - // API call issue specific inband tests describe('when running issue specific inband tests', function () { - // add your issue specific tests here }); - // API call standard outband tests describe('when running standard outband tests', function () { it('on graceful', function (done) { - childProcess('graceful-file.json', function (err, stderr, stdout) { + childProcess(this, 'graceful-file.json', function (err, stderr, stdout) { if (err) return done(err); else if (!stderr) assert.fail('stderr expected'); else assertions.assertDoesNotExist(stdout); done(); }); }); + it('on non graceful', function (done) { - childProcess('non-graceful-file.json', function (err, stderr, stdout) { + childProcess(this, 'non-graceful-file.json', function (err, stderr, stdout) { if (err) return done(err); else if (!stderr) assert.fail('stderr expected'); else { @@ -72,8 +70,9 @@ describe('tmp', function () { done(); }); }); + it('on keep', function (done) { - childProcess('keep-file.json', function (err, stderr, stdout) { + childProcess(this, 'keep-file.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else { @@ -83,8 +82,9 @@ describe('tmp', function () { done(); }); }); + it('on unlink (keep == false)', function (done) { - childProcess('unlink-file.json', function (err, stderr, stdout) { + childProcess(this, 'unlink-file.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else assertions.assertDoesNotExist(stdout); @@ -93,11 +93,9 @@ describe('tmp', function () { }); }); - // API call issue specific outband tests describe('when running issue specific outband tests', function () { - // add your issue specific tests here it('on issue #115', function (done) { - childProcess('issue115.json', function (err, stderr, stdout) { + childProcess(this, 'issue115.json', function (err, stderr, stdout) { if (err) return done(err); else if (stderr) assert.fail(stderr); else assertions.assertDoesNotExist(stdout); diff --git a/test/inband-standard.js b/test/inband-standard.js index 7a99b80..ef749af 100644 --- a/test/inband-standard.js +++ b/test/inband-standard.js @@ -33,7 +33,7 @@ function inbandStandardTests(testOpts, opts, isFile, beforeHook) { testOpts = testOpts || {}; // topic reference will be created by the beforeHook - topic = { topic: null, opts: opts }; + const topic = { topic: null, opts: opts }; // bind everything to topic so we avoid global before(beforeHook.bind(topic)); @@ -77,5 +77,4 @@ function inbandStandardTests(testOpts, opts, isFile, beforeHook) { assert.ok(!existsSync(this.topic.name)); }.bind(topic)); }; -}; - +} diff --git a/test/issue129-test.js b/test/issue129-test.js index 4380f0f..50af325 100644 --- a/test/issue129-test.js +++ b/test/issue129-test.js @@ -9,7 +9,7 @@ var describe('tmp', function () { describe('issue129: safely install listeners', function () { it('when simulating sandboxed behavior', function (done) { - childProcess('issue129.json', function (err, stderr, stdout) { + childProcess(this, 'issue129.json', function (err, stderr) { if (err) return done(err); else if (stderr) { assertions.assertDoesNotStartWith(stderr, 'EEXISTS:LEGACY:EXIT'); @@ -20,9 +20,9 @@ describe('tmp', function () { assertions.assertDoesNotStartWith(stderr, 'ENOAVAIL:NEWSTYLE'); assert.equal(stderr, 'EOK', 'existing listeners should have been removed and called'); } + done(); }); }); }); }); - diff --git a/test/name-inband-standard.js b/test/name-inband-standard.js index 4445151..4d4cbb3 100644 --- a/test/name-inband-standard.js +++ b/test/name-inband-standard.js @@ -2,10 +2,7 @@ // vim: expandtab:ts=2:sw=2 var - assert = require('assert'), - fs = require('fs'), path = require('path'), - existsSync = fs.existsSync || path.existsSync, assertions = require('./assertions'), tmp = require('../lib/tmp'); @@ -24,7 +21,7 @@ function inbandStandardTests(testOpts, opts, beforeHook) { return function () { opts = opts || {}; testOpts = testOpts || {}; - topic = { topic: null, opts: opts }; + const topic = { topic: null, opts: opts }; // bind everything to topic so we avoid global before(beforeHook.bind(topic)); @@ -51,5 +48,4 @@ function inbandStandardTests(testOpts, opts, beforeHook) { }.bind(topic)); } }; -}; - +} diff --git a/test/name-sync-test.js b/test/name-sync-test.js index 07dcb1b..e784668 100644 --- a/test/name-sync-test.js +++ b/test/name-sync-test.js @@ -9,9 +9,7 @@ var describe('tmp', function () { describe('#tmpNameSync()', function () { - // API call standard inband tests describe('when running inband standard tests', function () { - inbandStandardTests(function before() { this.topic = tmp.tmpNameSync(this.opts); }); @@ -36,18 +34,13 @@ describe('tmp', function () { }); }); - // API call issue specific inband tests describe('when running issue specific inband tests', function () { - // add your issue specific tests here }); - // API call standard outband tests describe('when running standard outband tests', function () { }); - // API call issue specific outband tests describe('when running issue specific outband tests', function () { - // add your issue specific tests here }); }); }); diff --git a/test/name-test.js b/test/name-test.js index e8d680d..098b7b6 100644 --- a/test/name-test.js +++ b/test/name-test.js @@ -9,9 +9,7 @@ var describe('tmp', function () { describe('#tmpName()', function () { - // API call standard inband tests describe('when running inband standard tests', function () { - inbandStandardTests(function before(done) { var that = this; tmp.dir(this.opts, function (err, name) { @@ -30,6 +28,7 @@ describe('tmp', function () { done(); }); }); + it('should result in an error on non numeric tries', function (done) { tmp.tmpName({ tries: 'nan' }, function (err) { assert.ok(err instanceof Error, 'should have failed'); @@ -39,18 +38,13 @@ describe('tmp', function () { }); }); - // API call issue specific inband tests describe('when running issue specific inband tests', function () { - // add your issue specific tests here }); - // API call standard outband tests describe('when running standard outband tests', function () { }); - // API call issue specific outband tests describe('when running issue specific outband tests', function () { - // add your issue specific tests here }); }); }); diff --git a/test/outband/graceful.js b/test/outband/graceful.js index cd34818..f86bfd1 100644 --- a/test/outband/graceful.js +++ b/test/outband/graceful.js @@ -1,4 +1,4 @@ -module.exports = function (result, tmp) { +module.exports = function (result) { this.out(result.name, function () { throw new Error('(non-)graceful cleanup testing'); }); diff --git a/test/outband/issue115.js b/test/outband/issue115.js index f158d38..427f6ad 100644 --- a/test/outband/issue115.js +++ b/test/outband/issue115.js @@ -1,6 +1,6 @@ var fs = require('fs'); -module.exports = function (result, tmp) { +module.exports = function (result) { // creates a tmp file and then closes the file descriptor as per issue 115 // https://github.com/raszi/node-tmp/issues/115 fs.closeSync(result.fd); diff --git a/test/outband/issue129.js b/test/outband/issue129.js index 653e9a1..0d65547 100644 --- a/test/outband/issue129.js +++ b/test/outband/issue129.js @@ -1,18 +1,15 @@ /* eslint-disable no-octal */ // vim: expandtab:ts=2:sw=2 -var fs = require('fs'); - // https://github.com/raszi/node-tmp/issues/129 module.exports = function () { + // dup from lib/tmp.js + function _is_legacy_listener(listener) { + return (listener.name == '_exit' || listener.name == '_uncaughtExceptionThrown') + && listener.toString().indexOf('_garbageCollector();') != -1; + } -// dup from lib/tmp.js -function _is_legacy_listener(listener) { - return (listener.name == '_exit' || listener.name == '_uncaughtExceptionThrown') - && listener.toString().indexOf('_garbageCollector();') != -1; -} - -function _garbageCollector() {} + function _garbageCollector() {} var callState = { newStyleListener : false, @@ -22,7 +19,7 @@ function _garbageCollector() {} // simulate the new exit listener var listener1 = (function (callState) { - return function _tmp$safe_listener(data) { + return function _tmp$safe_listener() { _garbageCollector(); callState.newStyleListener = true; }; @@ -30,7 +27,7 @@ function _garbageCollector() {} // simulate the legacy _exit listener var listener2 = (function (callState) { - return function _exit(code) { + return function _exit() { _garbageCollector(); callState.legacyExitListener = true; }; @@ -38,18 +35,18 @@ function _garbageCollector() {} // simulate the legacy _uncaughtExceptionThrown listener var listener3 = (function (callState) { - return function _uncaughtExceptionThrown(err) { + return function _uncaughtExceptionThrown() { _garbageCollector(); callState.legacyUncaughtListener = true; }; })(callState); - process.addListener('exit', listener1); + process.addListener('exit', listener1); process.addListener('exit', listener2); process.addListener('exit', listener3); // now let tmp install its listener safely - var tmp = require('../../lib/tmp'); + require('../../lib/tmp'); var legacyExitListener = null; var legacyUncaughtListener = null; @@ -77,4 +74,3 @@ function _garbageCollector() {} if (!callState.newStyleListener) this.fail('ENOAVAIL:NEWSTYLE: existing new style listener was not called', this.exit); this.out('EOK', this.exit); }; - diff --git a/test/outband/issue62.js b/test/outband/issue62.js index 54fb944..3dffd60 100644 --- a/test/outband/issue62.js +++ b/test/outband/issue62.js @@ -1,8 +1,7 @@ -var - fs = require('fs'), - join = require('path').join; +var fs = require('fs'); +var join = require('path').join; -module.exports = function (result, tmp) { +module.exports = function (result) { // creates structure from issue 62 // https://github.com/raszi/node-tmp/issues/62 @@ -15,4 +14,3 @@ module.exports = function (result, tmp) { this.out(result.name, this.exit); }; - diff --git a/test/outband/keep.js b/test/outband/keep.js index 861458f..75dccea 100644 --- a/test/outband/keep.js +++ b/test/outband/keep.js @@ -1,3 +1,3 @@ -module.exports = function (result, tmp) { +module.exports = function (result) { this.out(result.name); }; diff --git a/test/outband/unlink.js b/test/outband/unlink.js index bda80d1..83efe58 100644 --- a/test/outband/unlink.js +++ b/test/outband/unlink.js @@ -1,6 +1,6 @@ const fs = require('fs'); -module.exports = function (result, tmp) { +module.exports = function (result) { const stat = fs.statSync(result.name); if (stat.isFile()) { fs.unlinkSync(result.name); diff --git a/test/outband/unsafe.js b/test/outband/unsafe.js index f37c4df..a4ed7e0 100644 --- a/test/outband/unsafe.js +++ b/test/outband/unsafe.js @@ -2,7 +2,7 @@ var fs = require('fs'), join = require('path').join; -module.exports = function (result, tmp) { +module.exports = function (result) { // file that should be removed var fd = fs.openSync(join(result.name, 'should-be-removed.file'), 'w'); fs.closeSync(fd); diff --git a/test/spawn.js b/test/spawn.js index 9635e94..5dfd87e 100644 --- a/test/spawn.js +++ b/test/spawn.js @@ -1,9 +1,5 @@ // vim: expandtab:ts=2:sw=2 -var - fs = require('fs'), - path = require('path'); - function _writeSync(stream, str, cb) { var flushed = stream.write(str); if (flushed) { diff --git a/test/util.js b/test/util.js index 0d399df..478148c 100644 --- a/test/util.js +++ b/test/util.js @@ -6,4 +6,4 @@ var module.exports.readJsonConfig = function readJsonConfig(path) { var contents = fs.readFileSync(path); return JSON.parse(contents); -} +};