diff --git a/.travis.yml b/.travis.yml index f6ac089a..e986fe07 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,8 +7,6 @@ os: env: matrix: - - TRAVIS_NODE_VERSION="0.10" - - TRAVIS_NODE_VERSION="0.12" - TRAVIS_NODE_VERSION="4" - TRAVIS_NODE_VERSION="5" - TRAVIS_NODE_VERSION="6" @@ -51,6 +49,9 @@ install: script: - npm test +after_success: + - if [ $TRAVIS_BRANCH == "master" ]; then npm run prebuild -- -u $GITHUB_TOKEN; fi + notifications: webhooks: urls: diff --git a/appveyor.yml b/appveyor.yml index 23bec830..6e62a659 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,13 +4,15 @@ environment: matrix: # node.js - - nodejs_version: "0.10" - - nodejs_version: "0.12" - nodejs_version: "4" - nodejs_version: "5" - nodejs_version: "6" - nodejs_version: "Stable" +platform: + - x86 + - x64 + # Install scripts. (runs after repo cloning) install: # Get the latest stable version of Node 0.STABLE.latest @@ -29,6 +31,8 @@ test_script: # run tests - npm test -build: off +on_success: + - IF "%APPVEYOR_PULL_REQUEST_NUMBER%" EQU "" npm run prebuild -- -u %GITHUB_TOKEN% -version: "{build}" \ No newline at end of file +build: off +version: "{build}" diff --git a/package-lock.json b/package-lock.json index bbc30df6..0e157b1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/node": { + "version": "8.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.4.tgz", + "integrity": "sha512-dSvD36qnQs78G1BPsrZFdPpvLgMW/dnvr5+nTW2csMs5TiP9MOXrjUbnMZOEwnIuBklXtn7b6TPA2Cuq07bDHA==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -50,9 +56,44 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.3" + "readable-stream": "2.3.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "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==", + "requires": { + "safe-buffer": "5.1.1" + } + } } }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-index": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz", @@ -81,7 +122,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "asynckit": { @@ -90,6 +131,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "attempt-x": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/attempt-x/-/attempt-x-1.1.3.tgz", + "integrity": "sha512-y/+ek8IjxVpTbj/phC87jK5YRhlP5Uu7FlQdCmYuut1DTjNruyrGqUWi5bcX1VKsQX1B0FX16A1hqHomKpHv3A==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -123,7 +170,36 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "requires": { - "readable-stream": "2.3.3" + "readable-stream": "2.3.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "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==", + "requires": { + "safe-buffer": "5.1.1" + } + } } }, "block-stream": { @@ -141,19 +217,56 @@ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, + "buffer-from": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.1.tgz", + "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=", + "dev": true, + "requires": { + "is-array-buffer-x": "1.7.0" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cached-constructors-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-constructors-x/-/cached-constructors-x-1.0.2.tgz", + "integrity": "sha512-7lKwmwXweW6E/31RHAJemLtZPfb2xvcABXknFF4b/dNYv4DbSGTgQHckXLQkNw6BB4HKFYW6mJgsNjADAy1ehw==", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -177,9 +290,9 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -191,6 +304,49 @@ "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.4", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "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" + } + } + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -216,18 +372,27 @@ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } } } }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.37" + "es5-ext": "0.10.39" } }, "dashdash": { @@ -248,23 +413,25 @@ "ms": "2.0.0" } }, - "deep-equal": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", - "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "1.0.0" + } + }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" }, - "defined": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", - "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=", - "dev": true - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -276,6 +443,11 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, "duplexer2": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", @@ -283,32 +455,6 @@ "dev": true, "requires": { "readable-stream": "1.1.14" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "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 - } } }, "ecc-jsbn": { @@ -321,6 +467,34 @@ "jsbn": "0.1.1" } }, + "electron": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-1.8.2.tgz", + "integrity": "sha512-0TV5Hy92g8ACnPn+PVol6a/2uk+khzmRtWxhah/FcKs6StCytm5hD14QqOdZxEdJN8HljXIVCayN/wJX+0wDiQ==", + "dev": true, + "requires": { + "@types/node": "8.9.4", + "electron-download": "3.3.0", + "extract-zip": "1.6.6" + } + }, + "electron-download": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz", + "integrity": "sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg=", + "dev": true, + "requires": { + "debug": "2.6.9", + "fs-extra": "0.30.0", + "home-path": "1.0.5", + "minimist": "1.2.0", + "nugget": "2.0.1", + "path-exists": "2.1.0", + "rc": "1.2.5", + "semver": "5.5.0", + "sumchecker": "1.3.1" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -329,10 +503,19 @@ "once": "1.4.0" } }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, "es5-ext": { - "version": "0.10.37", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", - "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "version": "0.10.39", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.39.tgz", + "integrity": "sha512-AlaXZhPHl0po/uxMx1tyrlt1O86M6D5iVaDH8UgLfgek4kXTX6vzsRfJQWC2Ku+aG8pkw1XWzh9eTkwfVrsD5g==", "dev": true, "requires": { "es6-iterator": "2.0.3", @@ -346,10 +529,16 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.37", + "es5-ext": "0.10.39", "es6-symbol": "3.1.1" } }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true + }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -357,7 +546,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.37" + "es5-ext": "0.10.39" } }, "execspawn": { @@ -369,6 +558,12 @@ "util-extend": "1.0.3" } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, "expand-template": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.0.tgz", @@ -380,6 +575,18 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -398,6 +605,25 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -405,14 +631,27 @@ "dev": true }, "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" } }, "fs.realpath": { @@ -429,7 +668,7 @@ "requires": { "graceful-fs": "4.1.11", "inherits": "2.0.3", - "mkdirp": "0.5.1", + "mkdirp": "0.5.0", "rimraf": "2.6.2" } }, @@ -448,6 +687,12 @@ "wide-align": "1.1.2" } }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -465,10 +710,18 @@ "requires": { "after": "0.8.2", "ghrepos": "2.1.0", - "ghutils": "3.2.1", + "ghutils": "3.2.2", "simple-mime": "0.1.0", "url-template": "2.0.8", "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } } }, "ghrepos": { @@ -477,17 +730,25 @@ "integrity": "sha512-6GM0ohSDTAv7xD6GsKfxJiV/CajoofRyUwu0E8l29d1o6lFAUxmmyMP/FH33afA20ZrXzxxcTtN6TsYvudMoAg==", "dev": true, "requires": { - "ghutils": "3.2.1" + "ghutils": "3.2.2" } }, "ghutils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ghutils/-/ghutils-3.2.1.tgz", - "integrity": "sha1-T87f+sk1/KzgbhKhfGF04sKf/k8=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/ghutils/-/ghutils-3.2.2.tgz", + "integrity": "sha512-6SqTlzs89EtYRlafY8oavTnn/vEErgRSnMsuFDwOzNgK34mpHXTBinh6rTx6xwqei3d3BWyrSTQ8uN9kPpEQtg==", "dev": true, "requires": { - "jsonist": "1.3.0", + "jsonist": "2.1.0", "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } } }, "github-from-package": { @@ -531,6 +792,32 @@ "har-schema": "2.0.0" } }, + "has-own-property-x": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/has-own-property-x/-/has-own-property-x-3.2.0.tgz", + "integrity": "sha512-HtRQTYpRFz/YVaQ7jh2mU5iorMAxFcML9FNOLMI1f8VNJ2K0hpOlXoi1a+nmVl6oUcGnhd6zYOFAVe7NUFStyQ==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + } + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -544,14 +831,26 @@ "requires": { "boom": "4.3.1", "cryptiles": "3.1.2", - "hoek": "4.2.0", + "hoek": "4.2.1", "sntp": "2.1.0" } }, "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-path": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.5.tgz", + "integrity": "sha1-eIspgVsS1Tus9XVkhHbm+QQdEz8=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "http-signature": { @@ -566,15 +865,61 @@ } }, "hyperquest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperquest/-/hyperquest-1.2.0.tgz", - "integrity": "sha1-OeH+9miI3Hzg3sbA3YFPb8iUStU=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/hyperquest/-/hyperquest-2.1.3.tgz", + "integrity": "sha512-fUuDOrB47PqNK/BAMOS13v41UoaqIxqSLHX6CAbOD7OfT+/GCWO1/vPLfTNutOeXrv1ikuaZ3yux+33Z9vh+rw==", "dev": true, "requires": { + "buffer-from": "0.1.1", "duplexer2": "0.0.2", "through2": "0.6.5" + }, + "dependencies": { + "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" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } } }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "infinity-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/infinity-x/-/infinity-x-1.0.2.tgz", + "integrity": "sha512-2Ioz+exrAwlHxFBaDHQIbvUyjKFt0YjIal34/agfzx738aT1zBQwSU5A8Zgb1IQ2r24BtXrkeZZusxE40MyZaQ==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -595,47 +940,222 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "is-array-buffer-x": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/is-array-buffer-x/-/is-array-buffer-x-1.7.0.tgz", + "integrity": "sha512-ufSZRMY2WZX5xyNvk0NOZAG7cgi35B/sGQDGqv8w0X7MoQ2GC9vedanJhuYTPaC4PUCqLQsda1w7NF+dPZmAJw==", + "dev": true, "requires": { - "number-is-nan": "1.0.1" + "attempt-x": "1.1.3", + "has-to-string-tag-x": "1.4.1", + "is-object-like-x": "1.7.1", + "object-get-own-property-descriptor-x": "3.2.0", + "to-string-tag-x": "1.4.3" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "isarray": { + "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "is-falsey-x": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-falsey-x/-/is-falsey-x-1.0.3.tgz", + "integrity": "sha512-RWjusR6LXAhGa0Vus7aD1rwJuJwdJsvG3daAVMDvOAgvGuGm4eilNgoSuXhpv2/2qpLDvioAKTNb3t3XYidCNg==", + "dev": true, + "requires": { + "to-boolean-x": "1.0.3" + } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, - "optional": true + "requires": { + "number-is-nan": "1.0.1" + } }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "is-finite-x": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-finite-x/-/is-finite-x-3.0.4.tgz", + "integrity": "sha512-wdSI5zk/Pl21HzGcLWFoFzuDa8gsgcqhwZGAZryL2eU7RKf7+g+q4jL2gGItrBs/YtspkjOrJ4JxXNZqquoAWA==", + "dev": true, + "requires": { + "infinity-x": "1.0.2", + "is-nan-x": "1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-function-x": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/is-function-x/-/is-function-x-3.3.0.tgz", + "integrity": "sha512-SreSSU1dlgYaXR5c0mm4qJHKYHIiGiEY+7Cd8/aRLLoMP/VvofD2XcWgBnP833ajpU5XzXbUSpfysnfKZLJFlg==", + "dev": true, + "requires": { + "attempt-x": "1.1.3", + "has-to-string-tag-x": "1.4.1", + "is-falsey-x": "1.0.3", + "is-primitive": "2.0.0", + "normalize-space-x": "3.0.0", + "replace-comments-x": "2.0.0", + "to-boolean-x": "1.0.3", + "to-string-tag-x": "1.4.3" + }, + "dependencies": { + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + } + } + }, + "is-index-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-index-x/-/is-index-x-1.1.0.tgz", + "integrity": "sha512-qULKLMepQLGC8rSVdi8uF2vI4LiDrU9XSDg1D+Aa657GIB7GV1jHpga7uXgQvkt/cpQ5mVBHUFTpSehYSqT6+A==", + "dev": true, + "requires": { + "math-clamp-x": "1.2.0", + "max-safe-integer": "1.0.1", + "to-integer-x": "3.0.0", + "to-number-x": "2.0.0", + "to-string-symbols-supported-x": "1.0.2" + } + }, + "is-nan-x": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-nan-x/-/is-nan-x-1.0.3.tgz", + "integrity": "sha512-WenNBLVGSZID8shogsB++42vF7gvotCfneXM9KMCAKwNPXa8VfAu/RWwpqvnK7dLOP4Z7uitocb0TZ6rAiOccA==", + "dev": true + }, + "is-nil-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/is-nil-x/-/is-nil-x-1.4.2.tgz", + "integrity": "sha512-9aDY7ir7IGb5HlgqL+b38v2YMxf8S7MEHHxjHGzUhijg2crq47RKdxL37bS6dU0VN87wy2IBZP4akgQtIXmyvg==", + "dev": true, + "requires": { + "lodash.isnull": "3.0.0", + "validate.io-undefined": "1.0.3" + } + }, + "is-object-like-x": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/is-object-like-x/-/is-object-like-x-1.7.1.tgz", + "integrity": "sha512-89nz+kESAW2Y7udq+PdRX/dZnRN2WP1b19Gdv4OYE1Xjoekn1xf31l0ZPzT40qdPD7I2nveNFm9rxxI0vmnGHA==", + "dev": true, + "requires": { + "is-function-x": "3.3.0", + "is-primitive": "3.0.0" + } + }, + "is-primitive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.0.tgz", + "integrity": "sha512-Qch+MMfMdu7DMY6XElM7LUJKPmkbXdTqNhqyehVflzis2a8Zd9V6U8qZybb32uUSmlO/dNmg3fsA5t0Q9TC0mA==", + "dev": true + }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jasmine": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", + "integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "7.1.2", + "jasmine-core": "2.99.1" + }, + "dependencies": { + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + } + } + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, @@ -651,45 +1171,31 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, "jsonist": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsonist/-/jsonist-1.3.0.tgz", - "integrity": "sha1-wMdLle8clSA4YZsp76UgscyYdVY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jsonist/-/jsonist-2.1.0.tgz", + "integrity": "sha1-RHek0WzTd/rsWNjPhwt+OS9tf+k=", "dev": true, "requires": { - "bl": "1.0.3", - "hyperquest": "1.2.0", + "bl": "1.2.1", + "hyperquest": "2.1.3", "json-stringify-safe": "5.0.1", "xtend": "4.0.1" }, "dependencies": { - "bl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", - "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", - "dev": true, - "requires": { - "readable-stream": "2.0.6" - } - }, - "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=", + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true } } @@ -706,10 +1212,38 @@ "verror": "1.10.0" } }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash.isnull": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnull/-/lodash.isnull-3.0.0.tgz", + "integrity": "sha1-+vvlnqHcon7teGU0A53YTC4HxW4=", "dev": true }, "lodash.pad": { @@ -730,34 +1264,92 @@ "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", "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=", + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, + "math-clamp-x": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/math-clamp-x/-/math-clamp-x-1.2.0.tgz", + "integrity": "sha512-tqpjpBcIf9UulApz3EjWXqTZpMlr2vLN9PryC9ghoyCuRmqZaf3JJhPddzgQpJnKLi2QhoFnvKBFtJekAIBSYg==", + "dev": true, + "requires": { + "to-number-x": "2.0.0" + } + }, + "math-sign-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/math-sign-x/-/math-sign-x-3.0.0.tgz", + "integrity": "sha512-OzPas41Pn4d16KHnaXmGxxY3/l3zK4OIXtmIwdhgZsxz4FDDcNnbrABYPg2vGfxIkaT9ezGnzDviRH7RfF44jQ==", + "dev": true, + "requires": { + "is-nan-x": "1.0.3", + "to-number-x": "2.0.0" + } + }, + "max-safe-integer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/max-safe-integer/-/max-safe-integer-1.0.1.tgz", + "integrity": "sha1-84BgvixWPYwC5tSK85Ei/YO29BA=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -766,9 +1358,10 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, "requires": { "minimist": "0.0.8" }, @@ -776,7 +1369,8 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true } } }, @@ -787,16 +1381,22 @@ "dev": true }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==" + }, + "nan-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nan-x/-/nan-x-1.0.2.tgz", + "integrity": "sha512-dndRmy03JQEN+Nh6WjQl7/OstIozeEmrtWe4TE7mEqJ8W8oMD8m2tHjsLPWt//e3hLAeRSbs4pxMyc5pk/nCkQ==", + "dev": true }, "node-abi": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.2.tgz", - "integrity": "sha512-hmUtb8m75RSi7N+zZLYqe75XDvZB+6LyTBPkj2DConvNgQet2e3BIqEwe1LLvqMrfyjabuT5ZOrTioLCH1HTdA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.2.0.tgz", + "integrity": "sha512-FqVC0WNNL8fQWQK3GYTESfwZXZKDbSIiEEIvufq7HV6Lj0IDDZRVa4CU/KTA0JVlqY9eTDSuPiC8FS9UfGVuzA==", "requires": { - "semver": "5.4.1" + "semver": "5.5.0" } }, "node-gyp": { @@ -809,10 +1409,10 @@ "glob": "7.1.2", "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "mkdirp": "0.5.1", + "mkdirp": "0.5.0", "nopt": "3.0.6", "npmlog": "4.1.2", - "osenv": "0.1.4", + "osenv": "0.1.5", "request": "2.83.0", "rimraf": "2.6.2", "semver": "5.3.0", @@ -838,14 +1438,14 @@ "glob": "7.1.2", "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "mkdirp": "0.5.1", + "mkdirp": "0.5.0", "nopt": "3.0.6", "npmlog": "2.0.4", - "osenv": "0.1.4", + "osenv": "0.1.5", "path-array": "1.0.1", "request": "2.83.0", "rimraf": "2.6.2", - "semver": "5.4.1", + "semver": "5.5.0", "tar": "2.2.1", "which": "1.3.0" }, @@ -890,6 +1490,29 @@ "abbrev": "1.1.1" } }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-space-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-space-x/-/normalize-space-x-3.0.0.tgz", + "integrity": "sha512-tbCJerqZCCHPst4rRKgsTanLf45fjOyeAU5zE3mhDxJtFJKt66q39g2XArWhXelgTFVib8mNBUm6Wrd0LxYcfQ==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "trim-x": "3.0.0", + "white-space-x": "3.0.1" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -901,11 +1524,55 @@ "set-blocking": "2.0.0" } }, + "nugget": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", + "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", + "dev": true, + "requires": { + "debug": "2.6.9", + "minimist": "1.2.0", + "pretty-bytes": "1.0.4", + "progress-stream": "1.2.0", + "request": "2.83.0", + "single-line-log": "1.1.2", + "throttleit": "0.0.2" + } + }, "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=" }, + "nw-gyp": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/nw-gyp/-/nw-gyp-3.6.3.tgz", + "integrity": "sha512-EpzoqMs7ZnRpjzNMGozuQT+1lp+mUNg5nkPlTelo+LXUyqAMnPJ48kNy3KNpaTMmI9G+9XrOCEEaRDGlIsDq7Q==", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.0", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", @@ -917,10 +1584,36 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-inspect": { + "object-get-own-property-descriptor-x": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/object-get-own-property-descriptor-x/-/object-get-own-property-descriptor-x-3.2.0.tgz", + "integrity": "sha512-Z/0fIrptD9YuzN+SNK/1kxAEaBcPQM4gSrtOSMSi9eplnL/AbyQcAyAlreAoAzmBon+DQ1Z+AdhxyQSvav5Fyg==", + "dev": true, + "requires": { + "attempt-x": "1.1.3", + "has-own-property-x": "3.2.0", + "has-symbol-support-x": "1.4.2", + "is-falsey-x": "1.0.3", + "is-index-x": "1.1.0", + "is-primitive": "2.0.0", + "is-string": "1.0.4", + "property-is-enumerable-x": "1.1.0", + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + }, + "dependencies": { + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + } + } + }, + "object-keys": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz", - "integrity": "sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w=", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", "dev": true }, "once": { @@ -943,15 +1636,36 @@ "dev": true }, "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" } }, + "parse-int-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-int-x/-/parse-int-x-2.0.0.tgz", + "integrity": "sha512-NIMm52gmd1+0qxJK8lV3OZ4zzWpRH1xcz9xCHXl+DNzddwUdS4NEtd7BmTeK7iCIXoaK5e6BoDMHgieH2eNIhg==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "nan-x": "1.0.2", + "to-string-x": "1.4.5", + "trim-left-x": "3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, "path-array": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz", @@ -961,70 +1675,193 @@ "array-index": "1.0.0" } }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "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", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, "prebuild": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/prebuild/-/prebuild-6.1.0.tgz", - "integrity": "sha1-KlulMTPP1BwIU464YIrZ1iXUHao=", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/prebuild/-/prebuild-7.4.0.tgz", + "integrity": "sha512-nvT1CrVcCOAlrUEr6GdpsNt4hjXVSTXf0EMkiCMaDBP87eJzP0q4Hf7TkpBfwSWCPlVOGpssI+WDJ823zYepFw==", "dev": true, "requires": { "async": "2.6.0", + "detect-libc": "1.0.3", "execspawn": "1.0.1", "ghreleases": "1.0.7", "github-from-package": "0.0.0", "minimist": "1.2.0", "mkdirp": "0.5.1", - "node-abi": "2.1.2", + "node-abi": "2.2.0", "node-gyp": "3.6.2", "node-ninja": "1.0.2", "noop-logger": "0.1.1", "npmlog": "4.1.2", - "rc": "1.2.3", + "nw-gyp": "3.6.3", + "osenv": "0.1.5", + "rc": "1.2.5", "tar-stream": "1.5.5", "xtend": "4.0.1" + }, + "dependencies": { + "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 + } + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } } }, "prebuild-install": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.4.1.tgz", - "integrity": "sha512-99TyEFYTTkBWANT+mwSptmLb9ZCLQ6qKIUE36fXSIOtShB0JNprL2hzBD8F1yIuT9btjFrFEwbRHXhqDi1HmRA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.1.tgz", + "integrity": "sha512-3DX9L6pzwc1m1ksMkW3Ky2WLgPQUBiySOfXVl3WZyAeJSyJb4wtoH9OmeRGcubAWsMlLiL8BTHbwfm/jPQE9Ag==", "requires": { + "detect-libc": "1.0.3", "expand-template": "1.1.0", "github-from-package": "0.0.0", "minimist": "1.2.0", "mkdirp": "0.5.1", - "node-abi": "2.1.2", + "node-abi": "2.2.0", "noop-logger": "0.1.1", "npmlog": "4.1.2", "os-homedir": "1.0.2", - "pump": "1.0.3", - "rc": "1.2.3", - "simple-get": "1.4.3", + "pump": "2.0.1", + "rc": "1.2.5", + "simple-get": "2.7.0", "tar-fs": "1.16.0", "tunnel-agent": "0.6.0", - "xtend": "4.0.1" + "which-pm-runs": "1.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "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=" + } + } + } + } + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" } }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "progress-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", + "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, + "requires": { + "speedometer": "0.1.4", + "through2": "0.2.3" + } + }, + "property-is-enumerable-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/property-is-enumerable-x/-/property-is-enumerable-x-1.1.0.tgz", + "integrity": "sha512-22cKy3w3OpRswU6to9iKWDDlg+F9vF2REcwGlGW23jyLjHb1U/jJEWA44sWupOnkhGfDgotU6Lw+N2oyhNi+5A==", + "dev": true, + "requires": { + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + } }, "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { "end-of-stream": "1.4.1", "once": "1.4.0" @@ -1043,9 +1880,9 @@ "dev": true }, "rc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.3.tgz", - "integrity": "sha1-UVdakA+N1oOBxxC0cSwhVMPiA1s=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", + "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", "requires": { "deep-extend": "0.4.2", "ini": "1.3.5", @@ -1053,18 +1890,66 @@ "strip-json-comments": "2.0.1" } }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-comments-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-comments-x/-/replace-comments-x-2.0.0.tgz", + "integrity": "sha512-+vMP4jqU+8HboLWms6YMNEiaZG5hh1oR6ENCnGYDF/UQ7aYiJUK/8tcl3+KZAHRCKKa3gqzrfiarlUBHQSgRlg==", + "dev": true, + "requires": { + "require-coercible-to-string-x": "1.0.2", + "to-string-x": "1.4.5" } }, "request": { @@ -1076,17 +1961,17 @@ "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.3.1", + "form-data": "2.3.2", "har-validator": "5.0.3", "hawk": "6.0.2", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", "qs": "6.5.1", @@ -1094,16 +1979,26 @@ "stringstream": "0.0.5", "tough-cookie": "2.3.3", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "require-coercible-to-string-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/require-coercible-to-string-x/-/require-coercible-to-string-x-1.0.2.tgz", + "integrity": "sha512-GZ3BSCL0n/zhho8ITganW9FGPh0Kxhq71nCjck8Qau/30Wf4Po8a3XpQdzEMFiXCwZ/0m0E3lKSdSG8gkcIofQ==", "dev": true, "requires": { - "through": "2.3.8" + "require-object-coercible-x": "1.4.3", + "to-string-x": "1.4.5" + } + }, + "require-object-coercible-x": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/require-object-coercible-x/-/require-object-coercible-x-1.4.3.tgz", + "integrity": "sha512-5wEaS+NIiU5HLJQTqBQ+6XHtX7yplUS374j/H/nRDlc7rMWfENqp026jnUHWAOCZ+ekixkXuFHEnTF28oqqVLA==", + "dev": true, + "requires": { + "is-nil-x": "1.4.2" } }, "rimraf": { @@ -1115,40 +2010,45 @@ "glob": "7.1.2" } }, + "run-script-os": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.0.3.tgz", + "integrity": "sha512-CRZRyBfQBh+kHq32rZ6A6zxq6Hx3LzgwgcJ8crozey4Va4IMGsTo+agfmlx3/q2As7egn+Jo9w2T6P0//BJg3A==", + "dev": true + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, "simple-get": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", - "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.7.0.tgz", + "integrity": "sha512-RkE9rGPHcxYZ/baYmgJtOSM63vH0Vyq+ma5TijBcLla41SWlh8t6XYIGMR/oeZcmr+/G8k+zrClkkVrtnQ0esg==", "requires": { + "decompress-response": "3.3.0", "once": "1.4.0", - "unzip-response": "1.0.2", - "xtend": "4.0.1" + "simple-concat": "1.0.0" } }, "simple-mime": { @@ -1157,15 +2057,51 @@ "integrity": "sha1-lfUXxPRm18/1YacfydqyWW6p7y4=", "dev": true }, + "single-line-log": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", + "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, "sntp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "speedometer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true + }, "sshpk": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", @@ -1193,12 +2129,10 @@ } }, "string_decoder": { - "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==", - "requires": { - "safe-buffer": "5.1.1" - } + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true }, "stringstream": { "version": "0.0.5", @@ -1214,46 +2148,37 @@ "ansi-regex": "2.1.1" } }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, "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=" }, - "tape": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/tape/-/tape-3.6.1.tgz", - "integrity": "sha1-SJPdU+KApfWMDOswwsDrs7zVHh8=", + "sumchecker": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz", + "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=", "dev": true, "requires": { - "deep-equal": "0.2.2", - "defined": "0.0.0", - "glob": "3.2.11", - "inherits": "2.0.3", - "object-inspect": "0.4.0", - "resumer": "0.0.0", - "through": "2.3.8" - }, - "dependencies": { - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - } + "debug": "2.6.9", + "es6-promise": "4.2.4" } }, "tar": { @@ -1276,6 +2201,30 @@ "mkdirp": "0.5.1", "pump": "1.0.3", "tar-stream": "1.5.5" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } } }, "tar-stream": { @@ -1285,52 +2234,177 @@ "requires": { "bl": "1.2.1", "end-of-stream": "1.4.1", - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", + "readable-stream": "2.3.4", "xtend": "4.0.1" }, "dependencies": { "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "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, + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "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=", + "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==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + } + } + }, + "targetpractice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/targetpractice/-/targetpractice-0.0.7.tgz", + "integrity": "sha512-txs9wJiv9X61uKFxIk6id6WOj82cLccg7Ww+RqExRsftEpZOw8doRrogjinfx7oXTzzySPMK/sG0PKrP903/cQ==", + "dev": true, + "requires": { + "electron": "1.8.2", + "jquery": "3.3.1" + } + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + }, + "through2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "1.1.14", + "xtend": "2.1.2" + } + }, + "to-boolean-x": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-boolean-x/-/to-boolean-x-1.0.3.tgz", + "integrity": "sha512-kQiMyJUgFprL8J+0CfgJuaSFKJMs3EvFe27/6aj/hVzVZT0HY4aA1QjPldLNxzBmjhLcapp7CctYHuD8QqtS3g==", + "dev": true + }, + "to-integer-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-integer-x/-/to-integer-x-3.0.0.tgz", + "integrity": "sha512-794L2Lpwjtynm7RxahJi2YdbRY75gTxUW27TMuN26UgwPkmJb/+HPhkFEFbz+E4vNoiP0dxq5tq5fkXoXLaK/w==", + "dev": true, + "requires": { + "is-finite-x": "3.0.4", + "is-nan-x": "1.0.3", + "math-sign-x": "3.0.0", + "to-number-x": "2.0.0" + } + }, + "to-number-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-number-x/-/to-number-x-2.0.0.tgz", + "integrity": "sha512-lGOnCoccUoSzjZ/9Uen8TC4+VFaQcFGhTroWTv2tYWxXgyJV1zqAZ8hEIMkez/Eo790fBMOjidTnQ/OJSCvAoQ==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "nan-x": "1.0.2", + "parse-int-x": "2.0.0", + "to-primitive-x": "1.1.0", + "trim-x": "3.0.0" + } + }, + "to-object-x": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/to-object-x/-/to-object-x-1.5.0.tgz", + "integrity": "sha512-AKn5GQcdWky+s20vjWkt+Wa6y3dxQH3yQyMBhOfBOPldUwqwhgvlqcIg5H092ntNc+TX8/Cxzs1kMHH19pyCnA==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "require-object-coercible-x": "1.4.3" + } + }, + "to-primitive-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-primitive-x/-/to-primitive-x-1.1.0.tgz", + "integrity": "sha512-gyMY0gi3wjK3e4MUBKqv9Zl8QGcWguIkaUr2VJmoBEsOpDcpDZSEyljR773eVG4maS48uX7muLkoQoh/BA82OQ==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2", + "is-date-object": "1.0.1", + "is-function-x": "3.3.0", + "is-nil-x": "1.4.2", + "is-primitive": "2.0.0", + "is-symbol": "1.0.1", + "require-object-coercible-x": "1.4.3", + "validate.io-undefined": "1.0.3" + }, + "dependencies": { + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true } } }, + "to-property-key-x": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-property-key-x/-/to-property-key-x-2.0.2.tgz", + "integrity": "sha512-YISLpZFYIazNm0P8hLsKEEUEZ3m8U3+eDysJZqTu3+B9tQp+2TrMpaEGT8Agh4fZ5LSoums60/glNEzk5ozqrg==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2", + "to-primitive-x": "1.1.0", + "to-string-x": "1.4.5" + } + }, + "to-string-symbols-supported-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-string-symbols-supported-x/-/to-string-symbols-supported-x-1.0.2.tgz", + "integrity": "sha512-3MRqhIhSNVDsVAk4M6WNcuBZrAQe54W13xrXX6RzxXS+pA4nj6DQ96RegQS5z9BSNyYbFsBsPvMVDIpP+a/5RA==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "has-symbol-support-x": "1.4.2", + "is-symbol": "1.0.1" + } + }, + "to-string-tag-x": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/to-string-tag-x/-/to-string-tag-x-1.4.3.tgz", + "integrity": "sha512-5+0EZ6dOVt/XArXmkooxPzWxmOR081HM/uXitUow7h11WYg5pPo15uYqDWuqO7ZY+O3Atn/dG26wcJCK+mFevg==", + "dev": true, + "requires": { + "lodash.isnull": "3.0.0", + "validate.io-undefined": "1.0.3" + } + }, + "to-string-x": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/to-string-x/-/to-string-x-1.4.5.tgz", + "integrity": "sha512-5xzlZDyDa9BUWNjNzZzHgKQ95PnV7qjvEhbqpFaj1ixaHgfJXOFaa3xdMJ+WLYd4hhaMJaxt8Pt5uKaWXfruXA==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "is-symbol": "1.0.1" + } + }, "tough-cookie": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", @@ -1340,6 +2414,44 @@ "punycode": "1.4.1" } }, + "trim-left-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-left-x/-/trim-left-x-3.0.0.tgz", + "integrity": "sha512-+m6cqkppI+CxQBTwWEZliOHpOBnCArGyMnS1WCLb6IRgukhTkiQu/TNEN5Lj2eM9jk8ewJsc7WxFZfmwNpRXWQ==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "require-coercible-to-string-x": "1.0.2", + "white-space-x": "3.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-right-x/-/trim-right-x-3.0.0.tgz", + "integrity": "sha512-iIqEsWEbWVodqdixJHi4FoayJkUxhoL4AvSNGp4FF4FfQKRPGizt8++/RnyC9od75y7P/S6EfONoVqP+NddiKA==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "require-coercible-to-string-x": "1.0.2", + "white-space-x": "3.0.1" + } + }, + "trim-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-x/-/trim-x-3.0.0.tgz", + "integrity": "sha512-w8s38RAUScQ6t3XqMkS75iz5ZkIYLQpVnv2lp3IuTS36JdlVzC54oe6okOf4Wz3UH4rr3XAb2xR3kR5Xei82fw==", + "dev": true, + "requires": { + "trim-left-x": "3.0.0", + "trim-right-x": "3.0.0" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -1355,10 +2467,11 @@ "dev": true, "optional": true }, - "unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=" + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, "url-template": { "version": "2.0.8", @@ -1378,9 +2491,25 @@ "dev": true }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "validate.io-undefined": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/validate.io-undefined/-/validate.io-undefined-1.0.3.tgz", + "integrity": "sha1-fif8uzFbhB54JDQxiXZxkp4gt/Q=", "dev": true }, "verror": { @@ -1403,6 +2532,17 @@ "isexe": "2.0.0" } }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + }, + "white-space-x": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/white-space-x/-/white-space-x-3.0.1.tgz", + "integrity": "sha512-BwMFXQNPna/4RsNPOgldVYn+FkEv+lc3wUiFzuaW6Z2DH/oSk1UrRD6SBqDgWQO4JU+aBq3PVuPD9Vz0j7mh0w==", + "dev": true + }, "wide-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", @@ -1417,9 +2557,22 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "0.4.0" + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } } } } diff --git a/package.json b/package.json index 60d7ca77..fbdd359b 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,15 @@ { "name": "robotjs", - "version": "0.4.7", + "version": "0.4.8", "description": "Node.js Desktop Automation.", "main": "index.js", "typings": "index.d.ts", "scripts": { - "test": "node test/all.js", - "install": "prebuild-install || node-gyp rebuild" + "test": "run-script-os", + "test:darwin:linux": "jasmine 'test/**/*.js'", + "test:win32": "jasmine test/**/*.js", + "install": "prebuild-install || node-gyp rebuild", + "prebuild": "prebuild --all" }, "repository": { "type": "git", @@ -41,7 +44,9 @@ "prebuild-install": "^2.1.1" }, "devDependencies": { - "tape": "^3.5.0", - "prebuild": "v6.1.0" + "jasmine": "^2.99.0", + "prebuild": "^7.4.0", + "run-script-os": "^1.0.3", + "targetpractice": "0.0.7" } } diff --git a/src/mouse.c b/src/mouse.c index 94743655..4f1a2979 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -256,8 +256,20 @@ void scrollMouse(int x, int y) #elif defined(USE_X11) - int ydir = 4; /* Button 4 is up, 5 is down. */ - int xdir = 6; + /* + X11 Mouse Button Numbering + 1 = left button + 2 = middle button (pressing the scroll wheel) + 3 = right button + 4 = turn scroll wheel up + 5 = turn scroll wheel down + 6 = push scroll wheel left + 7 = push scroll wheel right + 8 = 4th button (aka browser backward button) + 9 = 5th button (aka browser forward button) + */ + int ydir = 4; // Button 4 is up, 5 is down. + int xdir = 6; // Button 6 is left, 7 is right. Display *display = XGetMainDisplay(); if (y < 0){ @@ -274,8 +286,8 @@ void scrollMouse(int x, int y) XTestFakeButtonEvent(display, xdir, 0, CurrentTime); } for (yi = 0; yi < abs(y); yi++) { - YTestFakeButtonEvent(display, ydir, 1, CurrentTime); - YTestFakeButtonEvent(display, ydir, 0, CurrentTime); + XTestFakeButtonEvent(display, ydir, 1, CurrentTime); + XTestFakeButtonEvent(display, ydir, 0, CurrentTime); } XSync(display, false); @@ -285,18 +297,19 @@ void scrollMouse(int x, int y) mouseScrollInputH.type = INPUT_MOUSE; mouseScrollInputH.mi.dx = 0; mouseScrollInputH.mi.dy = 0; - mouseScrollInputH.mi.dwFlags = MOUSEEVENTF_WHEEL; + mouseScrollInputH.mi.dwFlags = MOUSEEVENTF_HWHEEL; mouseScrollInputH.mi.time = 0; mouseScrollInputH.mi.dwExtraInfo = 0; - mouseScrollInputH.mi.mouseData = WHEEL_DELTA * x; + // Flip x to match other platforms. + mouseScrollInputH.mi.mouseData = -x; mouseScrollInputV.type = INPUT_MOUSE; mouseScrollInputV.mi.dx = 0; mouseScrollInputV.mi.dy = 0; - mouseScrollInputV.mi.dwFlags = MOUSEEVENTF_HWHEEL; + mouseScrollInputV.mi.dwFlags = MOUSEEVENTF_WHEEL; mouseScrollInputV.mi.time = 0; mouseScrollInputV.mi.dwExtraInfo = 0; - mouseScrollInputV.mi.mouseData = WHEEL_DELTA * y; + mouseScrollInputV.mi.mouseData = y; SendInput(1, &mouseScrollInputH, sizeof(mouseScrollInputH)); SendInput(1, &mouseScrollInputV, sizeof(mouseScrollInputV)); diff --git a/src/robotjs.cc b/src/robotjs.cc index 1076e3f6..9038161f 100644 --- a/src/robotjs.cc +++ b/src/robotjs.cc @@ -247,7 +247,7 @@ NAN_METHOD(scrollMouse) { return Nan::ThrowError("Invalid number of arguments."); } - + int x = info[0]->Int32Value(); int y = info[1]->Int32Value(); diff --git a/test/all.js b/test/all.js deleted file mode 100644 index 77ce1ad6..00000000 --- a/test/all.js +++ /dev/null @@ -1,5 +0,0 @@ -//Run all tests. -require('./mouse'); -require('./keyboard'); -require('./screen'); -require('./bitmap'); diff --git a/test/bitmap.js b/test/bitmap.js index 78df85b6..cf04f8fd 100644 --- a/test/bitmap.js +++ b/test/bitmap.js @@ -1,91 +1,56 @@ -var test = require('tape'); var robot = require('..'); -var params = -{ - 'width': 'number', - 'height': 'number', - 'byteWidth': 'number', - 'bitsPerPixel': 'number', - 'bytesPerPixel': 'number', - 'image': 'object' -}; - -test('Get a bitmap.', function(t) -{ - t.plan(1); - t.ok(robot.screen.capture(), 'got a bitmap.'); -}); - -test('Get a bitmap and check the parameters.', function(t) -{ - t.plan(6); - var img = robot.screen.capture(); - - for (var x in params) - { - t.equal(typeof img[x], params[x], 'make sure ' + x + ' is a ' + params[x] + '.'); - } -}); - -test('Get a bitmap of a specific size.', function(t) -{ - var size = 10; - t.plan(2); - var img = robot.screen.capture(0, 0, size, size); - - // Support for higher density screens. - var multi = img.width / size; - var size = size * multi; - t.equals(img.height, size, 'make sure image is expected height.'); - t.equals(img.width, size, 'make sure image is expected width.'); -}); - -test('Get a bitmap and make sure the colorAt works as expected.', function(t) -{ - t.plan(7); - var img = robot.screen.capture(); - var hex = img.colorAt(0, 0); - - t.ok(/^[0-9A-F]{6}$/i.test(hex), "colorAt returned valid hex."); - - var screenSize = robot.getScreenSize(); - var width = screenSize.width; - var height = screenSize.height; - - // Support for higher density screens. - var multi = img.width / width; - width = width * multi; - height = height * multi; - - t.throws(function() +describe('Bitmap', () => { + var params = { + 'width': 'number', + 'height': 'number', + 'byteWidth': 'number', + 'bitsPerPixel': 'number', + 'bytesPerPixel': 'number', + 'image': 'object' + }; + + it('Get a bitmap and check the parameters.', function() { + var img = robot.screen.capture(); + + for (var x in params) + { + expect(typeof img[x]).toEqual(params[x]); + } + }); + + it('Get a bitmap of a specific size.', function() { - img.colorAt(0, height); - }, /are outside the bitmap/, 'colorAt (0, screen.height) threw an error.'); + var size = 10; + var img = robot.screen.capture(0, 0, size, size); - t.doesNotThrow(function() - { - img.colorAt(0, height-1); - }, /are outside the bitmap/, 'colorAt (0, screen.height-1) did not throw an error.'); - - t.throws(function() - { - img.colorAt(width, 0); - }, /are outside the bitmap/, 'colorAt (screen.width, 0) threw an error.'); - - t.doesNotThrow(function() - { - img.colorAt(width-1, 0); - }, /are outside the bitmap/, 'colorAt (screen.width-1, 0) did not throw an error.'); - - t.throws(function() - { - img.colorAt(9999999999999, 0); - }, /are outside the bitmap/, 'colorAt (9999999999999, 0) threw an error.'); + // Support for higher density screens. + var multi = img.width / size; + var size = size * multi; + expect(img.height).toEqual(size); + expect(img.width).toEqual(size); + }); - // Regression test for https://github.com/octalmage/robotjs/commit/c41f38217fd73f59e6ca63015b51565cd1e7cfb7 - t.throws(function() + it('Get a bitmap and make sure the colorAt works as expected.', function() { - img.colorAt(0, 9999999999999); - }, /are outside the bitmap/, 'colorAt (0, 9999999999999) threw an error.'); + var img = robot.screen.capture(); + var hex = img.colorAt(0, 0); + + // t.ok(.it(hex), "colorAt returned valid hex."); + expect(hex).toMatch(/^[0-9A-F]{6}$/i); + + var screenSize = robot.getScreenSize(); + var width = screenSize.width; + var height = screenSize.height; + + // Support for higher density screens. + var multi = img.width / width; + width = width * multi; + height = height * multi; + expect(() => img.colorAt(0, height)).toThrowError(/are outside the bitmap/); + expect(() => img.colorAt(0, height-1)).not.toThrow(); + expect(() => img.colorAt(width, 0)).toThrowError(/are outside the bitmap/); + expect(() => img.colorAt(9999999999999, 0)).toThrowError(/are outside the bitmap/); + expect(() => img.colorAt(0, 9999999999999)).toThrowError(/are outside the bitmap/); + }); }); diff --git a/test/integration/keyboard.js b/test/integration/keyboard.js new file mode 100644 index 00000000..47b17d67 --- /dev/null +++ b/test/integration/keyboard.js @@ -0,0 +1,38 @@ +/* jshint esversion: 6 */ +var robot = require('../..'); +var targetpractice = require('targetpractice/index.js'); +var os = require('os'); + +robot.setMouseDelay(100); + +var target, elements; + +describe('Integration/Keyboard', () => { + beforeEach(done => { + target = targetpractice.start(); + target.once('elements', message => { + elements = message; + done(); + }); + }); + + afterEach(() => { + targetpractice.stop(); + target = null; + }); + + it('types', done => { + const stringToType = 'hello world'; + // Currently Target Practice waits for the "user" to finish typing before sending the event. + target.once('type', element => { + expect(element.id).toEqual('input_1'); + expect(element.text).toEqual(stringToType); + done(); + }); + + const input_1 = elements.input_1; + robot.moveMouse(input_1.x, input_1.y); + robot.mouseClick(); + robot.typeString(stringToType); + }); +}); diff --git a/test/integration/mouse.js b/test/integration/mouse.js new file mode 100644 index 00000000..a536ca09 --- /dev/null +++ b/test/integration/mouse.js @@ -0,0 +1,95 @@ +/* jshint esversion: 6 */ +var robot = require('../..'); +var targetpractice = require('targetpractice/index.js'); +var os = require('os'); + +robot.setMouseDelay(100); + +var target, elements; + +describe('Integration/Mouse', () => { + beforeEach(done => { + target = targetpractice.start(); + target.once('elements', message => { + elements = message; + done(); + }); + }); + + afterEach(() => { + targetpractice.stop(); + target = null; + }); + + it('clicks', done => { + // Alright we got a click event, did we click the button we wanted? + target.once('click', function(e) + { + expect(e.id).toEqual('button_1'); + expect(e.type).toEqual('click'); + done(); + }); + + // For this test we want a button. + var button_1 = elements.button_1; + // Click it! + robot.moveMouse(button_1.x, button_1.y); + robot.mouseClick(); + }); + + it('scrolls vertically', done => { + target.once('scroll', element => { + /** + * TODO: This is gross! The scroll distance is different for each OS. I want + * to look into this further, but at least these numbers are consistent. + */ + var expectedScroll; + switch(os.platform()) { + case 'linux': + expectedScroll = 180; + break; + case 'win32': + expectedScroll = 8; + break; + default: + expectedScroll = 10; + } + expect(element.id).toEqual('textarea_1'); + expect(element.scroll_y).toEqual(expectedScroll); + done(); + }); + + var textarea_1 = elements.textarea_1; + robot.moveMouse(textarea_1.x, textarea_1.y); + robot.mouseClick(); + robot.scrollMouse(0, -10); + }); + + it('scrolls horizontally', done => { + target.once('scroll', element => { + /** + * TODO: This is gross! The scroll distance is different for each OS. I want + * to look into this further, but at least these numbers are consistent. + */ + var expectedScroll; + switch(os.platform()) { + case 'linux': + expectedScroll = 530; + break; + case 'win32': + expectedScroll = 8; + break; + default: + expectedScroll = 10; + } + expect(element.id).toEqual('textarea_1'); + expect(element.scroll_x).toEqual(expectedScroll); + done(); + }); + + var textarea_1 = elements.textarea_1; + robot.moveMouse(textarea_1.x, textarea_1.y); + robot.mouseClick(); + robot.scrollMouse(-10, 0); + }); +}); diff --git a/test/integration/screen.js b/test/integration/screen.js new file mode 100644 index 00000000..2de08301 --- /dev/null +++ b/test/integration/screen.js @@ -0,0 +1,25 @@ +/* jshint esversion: 6 */ +var robot = require('../..'); +var targetpractice = require('targetpractice/index.js'); +var elements, target; + +describe('Integration/Screen', () => { + beforeEach(done => { + target = targetpractice.start(); + target.once('elements', message => { + elements = message; + done(); + }); + }); + + afterEach(() => { + targetpractice.stop(); + target = null; + }); + + it('reads a pixel color', () => { + var color_1 = elements.color_1; + const color = robot.getPixelColor(color_1.x, color_1.y); + expect(color).toEqual('c0ff33'); + }); +}); diff --git a/test/keyboard.js b/test/keyboard.js index cb36c080..cc1140eb 100644 --- a/test/keyboard.js +++ b/test/keyboard.js @@ -1,59 +1,41 @@ -var test = require('tape'); var robot = require('..'); var os = require('os'); -//TODO: Need tests for keyToggle, typeString, typeStringDelayed, and setKeyboardDelay. - -test('Tap a key.', function(t) -{ - t.plan(4); - t.ok(robot.keyTap("a") === 1, 'successfully tapped "a".'); - t.ok(robot.keyTap("a", "control") === 1, 'successfully tapped "ctrl+a".'); - - t.throws(function() - { - robot.keyTap(); - }, /Invalid number/, 'tap nothing.'); - - t.throws(function() - { - robot.keyTap(); - }, /Invalid number/, 'tap "ctrl+a" with an extra argument.'); -}); - -// This test won't fail if there's an issue, but it will help you identify an issue if ran locally. -test('Tap all keys.', function(t) -{ - var chars = 'abcdefghijklmnopqrstuvwxyz1234567890,./;\'[]\\'.split(''); - - for (var x in chars) - { - t.ok(robot.keyTap(chars[x]), 'tap ' + chars[x] + '.'); - } - - t.end(); -}); - -// This test won't fail if there's an issue, but it will help you identify an issue if ran locally. -test('Tap all numpad keys.', function(t) -{ - var nums = '0123456789'.split(''); - - for (var x in nums) - { - if (os.platform() === 'linux') - { - /* jshint loopfunc:true */ - t.throws(function() - { - robot.keyTap('numpad_' + nums[x]); - }, /Invalid key code/, 'tap ' + 'numpad_' + nums[x] + ' threw an error.'); - } - else - { - t.ok(robot.keyTap('numpad_' + nums[x]), 'tap ' + 'numpad_' + nums[x] + '.'); - } - } - - t.end(); +// TODO: Need tests for keyToggle, typeString, typeStringDelayed, and setKeyboardDelay. + +describe('Keyboard', () => { + it('Tap a key.', function() { + expect(() => robot.keyTap('a')).not.toThrow(); + expect(() => robot.keyTap('a', 'control')).not.toThrow(); + expect(() => robot.keyTap()).toThrowError(/Invalid number/); + }); + + // This it won't fail if there's an issue, but it will help you identify an issue if ran locally. + it('Tap all keys.', function() + { + var chars = 'abcdefghijklmnopqrstuvwxyz1234567890,./;\'[]\\'.split(''); + + for (var x in chars) + { + expect(() => robot.keyTap(chars[x])).not.toThrow(); + } + }); + + // This it won't fail if there's an issue, but it will help you identify an issue if ran locally. + it('Tap all numpad keys.', function() + { + var nums = '0123456789'.split(''); + + for (var x in nums) + { + if (os.platform() === 'linux') + { + expect(() => robot.keyTap('numpad_' + nums[x])).toThrowError(/Invalid key code/); + } + else + { + expect(() => robot.keyTap('numpad_' + nums[x])).not.toThrow(); + } + } + }); }); diff --git a/test/mouse.js b/test/mouse.js index af156892..b8d4555a 100644 --- a/test/mouse.js +++ b/test/mouse.js @@ -1,113 +1,125 @@ -var test = require('tape'); var robot = require('..'); var lastKnownPos, currentPos; -//Increase delay to help test reliability. +//Increase delay to help it reliability. robot.setMouseDelay(100); -test('Get the initial mouse position.', function(t) -{ - t.plan(3); - t.ok(lastKnownPos = robot.getMousePos(), 'successfully retrieved mouse position.'); - t.ok(lastKnownPos.x !== undefined, 'mousepos.x is a valid value.'); - t.ok(lastKnownPos.y !== undefined, 'mousepos.y is a valid value.'); -}); +describe('Mouse', () => { + it('Get the initial mouse position.', function() + { + expect(lastKnownPos = robot.getMousePos()).toBeTruthy(); + expect(lastKnownPos.x !== undefined).toBeTruthy(); + expect(lastKnownPos.y !== undefined).toBeTruthy(); + }); -test('Move the mouse.', function(t) -{ - t.plan(6); - lastKnownPos = robot.moveMouse(0, 0); - t.ok(robot.moveMouse(100, 100) === 1, 'successfully moved the mouse.'); - currentPos = robot.getMousePos(); - t.ok(currentPos.x === 100, 'mousepos.x is correct.'); - t.ok(currentPos.y === 100, 'mousepos.y is correct.'); - - t.throws(function() - { - robot.moveMouse(0, 1, 2, 3); - }, /Invalid number/, 'move mouse to (0, 1, 2, 3).'); - - t.throws(function() - { - robot.moveMouse(0); - }, /Invalid number/, 'move mouse to (0).'); - - t.ok(robot.moveMouse("0", "0") === 1, 'move mouse to ("0", "0").'); + it('Move the mouse.', function() + { + lastKnownPos = robot.moveMouse(0, 0); + expect(robot.moveMouse(100, 100) === 1).toBeTruthy(); + currentPos = robot.getMousePos(); + expect(currentPos.x === 100).toBeTruthy(); + expect(currentPos.y === 100).toBeTruthy(); -}); + expect(function() + { + robot.moveMouse(0, 1, 2, 3); + }).toThrowError(/Invalid number/); -test('Move the mouse smoothly.', function(t) -{ - t.plan(6); - lastKnownPos = robot.moveMouseSmooth(0, 0); - t.ok(robot.moveMouseSmooth(100, 100) === 1, 'successfully moved the mouse.'); - currentPos = robot.getMousePos(); - t.ok(currentPos.x === 100, 'mousepos.x is correct.'); - t.ok(currentPos.y === 100, 'mousepos.y is correct.'); - - t.throws(function() - { - robot.moveMouseSmooth(0, 1, 2, 3); - }, /Invalid number/, 'move mouse to (0, 1, 2, 3).'); - - t.throws(function() - { - robot.moveMouseSmooth(0); - }, /Invalid number/, 'move mouse to (0).'); - - t.ok(robot.moveMouseSmooth("0", "0") === 1, 'move mouse to ("0", "0").'); + expect(function() + { + robot.moveMouse(0); + }).toThrowError(/Invalid number/); -}); + expect(robot.moveMouse("0", "0") === 1).toBeTruthy(); -test('Click the mouse.', function(t) -{ - t.plan(8); - t.ok(robot.mouseClick(), 'click the mouse (no button specified).'); - t.ok(robot.mouseClick("left") === 1, 'click the left mouse button.'); - t.ok(robot.mouseClick("middle") === 1, 'click the middle mouse button.'); - t.ok(robot.mouseClick("right") === 1, 'click the right mouse button.'); - - t.ok(robot.mouseClick("left", 1), 'double click the left mouse button.'); - - t.throws(function() - { - robot.mouseClick("party"); - }, /Invalid mouse/, 'click an incorrect mouse button (party).'); - - t.throws(function() - { - robot.mouseClick("0"); - }, /Invalid mouse/, 'click an incorrect mouse button (0).'); - - t.throws(function() - { - robot.mouseClick("left", 0, "test"); - }, /Invalid number/, 'click the mouse with an extra argument.'); - -}); + }); -test('Drag the mouse.', function(t) -{ - t.plan(4); - - t.ok(robot.dragMouse(5, 5) === 1, 'successfully dragged the mouse.'); - - t.throws(function() - { - robot.dragMouse(0); - }, /Invalid number/, 'drag mouse to (0).'); - - t.throws(function() - { - robot.dragMouse(1, 1, "left", 5); - }, /Invalid number/, 'drag mouse with extra argument.'); - - t.throws(function() - { - robot.dragMouse(2, 2, "party"); - }, /Invalid mouse/, 'drag an incorrect mouse button (party).'); - -}); + it('Move the mouse smoothly.', function() + { + lastKnownPos = robot.moveMouseSmooth(0, 0); + expect(robot.moveMouseSmooth(100, 100) === 1).toBeTruthy(); + currentPos = robot.getMousePos(); + expect(currentPos.x).toEqual(100); + expect(currentPos.y).toEqual(100); + + expect(function() + { + robot.moveMouseSmooth(0, 1, 2, 3); + }).toThrowError(/Invalid number/); + + expect(function() + { + robot.moveMouseSmooth(0); + }).toThrowError(/Invalid number/); + + expect(robot.moveMouseSmooth("0", "0") === 1).toBeTruthy(); + + }); + + it('Click the mouse.', function() + { + expect(robot.mouseClick()).toBeTruthy(); + expect(robot.mouseClick("left") === 1).toBeTruthy(); + expect(robot.mouseClick("middle") === 1).toBeTruthy(); + expect(robot.mouseClick("right") === 1).toBeTruthy(); + + expect(robot.mouseClick("left", 1)).toBeTruthy(); -//TODO: Need tests for mouseToggle, and scrollMouse. + expect(function() + { + robot.mouseClick("party"); + }).toThrowError(/Invalid mouse/); + expect(function() + { + robot.mouseClick("0"); + }).toThrowError(/Invalid mouse/); + + expect(function() + { + robot.mouseClick("left", 0, "it"); + }).toThrowError(/Invalid number/); + + }); + + it('Drag the mouse.', function() + { + + expect(robot.dragMouse(5, 5) === 1).toBeTruthy(); + + expect(function() + { + robot.dragMouse(0); + }).toThrowError(/Invalid number/); + + expect(function() + { + robot.dragMouse(1, 1, "left", 5); + }).toThrowError(/Invalid number/); + + expect(function() + { + robot.dragMouse(2, 2, "party"); + }).toThrowError(/Invalid mouse/); + + }); + + it('Mouse scroll.', function() + { + expect(lastKnownPos = robot.getMousePos()).toBeTruthy(); + expect(robot.mouseClick() === 1).toBeTruthy(); + expect(robot.scrollMouse(0, 1 * 120) === 1).toBeTruthy(); + expect(robot.scrollMouse(0, 20 * 120) === 1).toBeTruthy(); + expect(robot.scrollMouse(0, -5 * 120) === 1).toBeTruthy(); + expect(robot.scrollMouse(1 * 120, 0) === 1).toBeTruthy(); + expect(robot.scrollMouse(20 * 120, 0) === 1).toBeTruthy(); + expect(robot.scrollMouse(-5 * 120, 0) === 1).toBeTruthy(); + expect(robot.scrollMouse(-5 * 120, -5 * 120) === 1).toBeTruthy(); + }); + + it('Mouse Toggle', function() + { + expect(lastKnownPos = robot.getMousePos()).toBeTruthy(); + expect(robot.mouseToggle('up', 'right') === 1).toBeTruthy(); + }); +}); diff --git a/test/screen.js b/test/screen.js index 48fb7f9e..c16e33b6 100644 --- a/test/screen.js +++ b/test/screen.js @@ -1,40 +1,39 @@ -var test = require('tape'); var robot = require('..'); var pixelColor, screenSize; -test('Get pixel color.', function(t) -{ - t.plan(8); - t.ok(pixelColor = robot.getPixelColor(5, 5), 'successfully got pixel color.'); - t.ok(pixelColor !== undefined, 'pixelColor is a valid value.'); - t.ok(pixelColor.length === 6, 'pixelColor is the correct length.'); - t.ok(/^[0-9A-F]{6}$/i.test(pixelColor), "pixelColor is valid hex."); - - t.throws(function() - { - robot.getPixelColor(9999999999999, 9999999999999); - }, /outside the main screen/, 'get color of pixel (9999999999999, 9999999999999).'); - - t.throws(function() - { - robot.getPixelColor(-1, -1); - }, /outside the main screen/, 'get color of pixel (-1, -1).'); - - t.throws(function() - { - robot.getPixelColor(0); - }, /Invalid number/, 'get color of pixel (0).'); - - t.throws(function() - { - robot.getPixelColor(1, 2, 3); - }, /Invalid number/, 'get color of pixel (1, 2, 3).'); -}); +describe('Screen', () => { + it('Get pixel color.', function() + { + expect(pixelColor = robot.getPixelColor(5, 5)).toBeTruthy(); + expect(pixelColor !== undefined).toBeTruthy(); + expect(pixelColor.length === 6).toBeTruthy(); + expect(/^[0-9A-F]{6}$/i.test(pixelColor)).toBeTruthy(); + + expect(function() + { + robot.getPixelColor(9999999999999, 9999999999999); + }).toThrowError(/outside the main screen/); + + expect(function() + { + robot.getPixelColor(-1, -1); + }).toThrowError(/outside the main screen/); + + expect(function() + { + robot.getPixelColor(0); + }).toThrowError(/Invalid number/); + + expect(function() + { + robot.getPixelColor(1, 2, 3); + }).toThrowError(/Invalid number/); + }); -test('Get screen size.', function(t) -{ - t.plan(3); - t.ok(screenSize = robot.getScreenSize(), 'successfully got the screen size.'); - t.ok(screenSize.width !== undefined, 'screenSize.width is a valid value.'); - t.ok(screenSize.height !== undefined, 'screenSize.height is a valid value.'); + it('Get screen size.', function() + { + expect(screenSize = robot.getScreenSize()).toBeTruthy(); + expect(screenSize.width !== undefined).toBeTruthy(); + expect(screenSize.height !== undefined).toBeTruthy(); + }); });