From 52c882e77f0e8da8ea9b68038e3626cb7b9d33af Mon Sep 17 00:00:00 2001 From: Michael Ciniawsky Date: Wed, 22 Nov 2017 07:04:31 +0100 Subject: [PATCH] test: standardize test configuration (#214) --- package-lock.json | 4155 +++++++++++++---- package.json | 46 +- test/Errors.test.js | 14 +- test/__snapshots__/loader.test.js.snap | 3 + test/cjs.test.js | 10 +- test/emitFile.test.js | 30 - test/fixtures/emitFile/fixture.js | 4 + test/fixtures/file.gif | Bin 0 -> 13359 bytes test/fixtures/file.jpg | Bin 0 -> 12801 bytes test/fixtures/file.png | Bin 0 -> 6777 bytes test/fixtures/file.svg | 48 + test/fixtures/fixture.js | 4 + test/helpers/compiler.js | 68 + test/loader.test.js | 167 +- .../__snapshots__/context.test.js.snap | 3 + .../__snapshots__/emitFile.test.js.snap | 3 + test/options/__snapshots__/name.test.js.snap | 5 + .../__snapshots__/outputPath.test.js.snap | 5 + .../__snapshots__/publicPath.test.js.snap | 5 + .../useRelativePath.test.js.snap | 5 + test/options/context.test.js | 24 + test/options/emitFile.test.js | 42 + test/options/name.test.js | 42 + test/options/outputPath.test.js | 42 + test/options/publicPath.test.js | 42 + test/options/useRelativePath.test.js | 41 + 26 files changed, 3606 insertions(+), 1202 deletions(-) create mode 100644 test/__snapshots__/loader.test.js.snap delete mode 100644 test/emitFile.test.js create mode 100644 test/fixtures/emitFile/fixture.js create mode 100644 test/fixtures/file.gif create mode 100644 test/fixtures/file.jpg create mode 100644 test/fixtures/file.png create mode 100644 test/fixtures/file.svg create mode 100644 test/fixtures/fixture.js create mode 100644 test/helpers/compiler.js create mode 100644 test/options/__snapshots__/context.test.js.snap create mode 100644 test/options/__snapshots__/emitFile.test.js.snap create mode 100644 test/options/__snapshots__/name.test.js.snap create mode 100644 test/options/__snapshots__/outputPath.test.js.snap create mode 100644 test/options/__snapshots__/publicPath.test.js.snap create mode 100644 test/options/__snapshots__/useRelativePath.test.js.snap create mode 100644 test/options/context.test.js create mode 100644 test/options/emitFile.test.js create mode 100644 test/options/name.test.js create mode 100644 test/options/outputPath.test.js create mode 100644 test/options/publicPath.test.js create mode 100644 test/options/useRelativePath.test.js diff --git a/package-lock.json b/package-lock.json index 2f69277..416856c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,16 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, "abab": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", @@ -76,12 +86,6 @@ "json-stable-stringify": "1.0.1" } }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", @@ -126,6 +130,12 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, + "any-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", + "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", + "dev": true + }, "anymatch": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", @@ -252,6 +262,12 @@ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", @@ -500,14 +516,31 @@ } }, "babel-jest": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", - "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", + "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", "dev": true, "requires": { - "babel-core": "6.25.0", "babel-plugin-istanbul": "4.1.4", - "babel-preset-jest": "20.0.3" + "babel-preset-jest": "21.2.0" + }, + "dependencies": { + "babel-plugin-jest-hoist": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", + "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", + "dev": true + }, + "babel-preset-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", + "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "21.2.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0" + } + } } }, "babel-messages": { @@ -539,12 +572,6 @@ "test-exclude": "4.1.1" } }, - "babel-plugin-jest-hoist": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", - "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=", - "dev": true - }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", @@ -903,15 +930,6 @@ "semver": "5.3.0" } }, - "babel-preset-jest": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", - "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "20.0.3" - } - }, "babel-register": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", @@ -1335,6 +1353,12 @@ "supports-color": "2.0.0" } }, + "chardet": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.0.tgz", + "integrity": "sha1-C74TVaxE16PtSpJXB8TvcPgZD2w=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -1343,6 +1367,7 @@ "requires": { "anymatch": "1.3.0", "async-each": "1.0.1", + "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -1731,8 +1756,8 @@ "integrity": "sha1-4ye1MZThp61dxjR57pCZpSsCSGU=", "dev": true, "requires": { - "is-text-path": "1.0.1", "JSONStream": "1.3.1", + "is-text-path": "1.0.1", "lodash": "4.17.4", "meow": "3.7.0", "split2": "2.1.1", @@ -1773,30 +1798,6 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cosmiconfig": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-1.1.0.tgz", - "integrity": "sha1-DeoPmATv37kp+7GxiOJVU+oFPTc=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "js-yaml": "3.8.4", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "require-from-string": "1.2.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "cp-file": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-4.2.0.tgz", @@ -1979,9 +1980,9 @@ } }, "date-fns": { - "version": "1.28.5", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.28.5.tgz", - "integrity": "sha1-JXz8RdMi30XvVlhmWWfuhBzXP68=", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", "dev": true }, "date-now": { @@ -2015,6 +2016,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", @@ -2037,18 +2044,25 @@ } }, "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "dev": true, "requires": { - "globby": "5.0.0", + "globby": "6.1.0", "is-path-cwd": "1.0.0", "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", + "p-map": "1.1.1", + "pify": "3.0.0", "rimraf": "2.6.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "del-cli": { @@ -2060,6 +2074,37 @@ "del": "2.2.2", "meow": "3.7.0", "update-notifier": "2.2.0" + }, + "dependencies": { + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + } } }, "delayed-stream": { @@ -2129,12 +2174,6 @@ "is-obj": "1.0.1" } }, - "double-ended-queue": { - "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=", - "dev": true - }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -2339,61 +2378,288 @@ } }, "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.11.0.tgz", + "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", "dev": true, "requires": { + "ajv": "5.3.0", "babel-code-frame": "6.22.0", - "chalk": "1.1.3", + "chalk": "2.3.0", "concat-stream": "1.6.0", - "debug": "2.6.8", + "cross-spawn": "5.1.0", + "debug": "3.1.0", "doctrine": "2.0.0", - "escope": "3.6.0", - "espree": "3.4.3", + "eslint-scope": "3.7.1", + "espree": "3.5.2", "esquery": "1.0.0", "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", "glob": "7.1.2", "globals": "9.18.0", "ignore": "3.3.3", "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.0", + "inquirer": "3.3.0", "is-resolvable": "1.0.0", - "js-yaml": "3.8.4", - "json-stable-stringify": "1.0.1", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.4", + "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", "optionator": "0.8.2", "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", + "pluralize": "7.0.0", + "progress": "2.0.0", "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", + "semver": "5.3.0", + "strip-ansi": "4.0.0", "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" + "table": "4.0.2", + "text-table": "0.2.0" }, "dependencies": { - "strip-bom": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "ajv": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "ansi-escapes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.1.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, - "user-home": { + "restore-cursor": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "os-homedir": "1.0.2" + "is-fullwidth-code-point": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" } } } @@ -2520,14 +2786,14 @@ } } }, - "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "acorn": "5.0.3", - "acorn-jsx": "3.0.1" + "esrecurse": "4.1.0", + "estraverse": "4.2.0" } }, "esprima": { @@ -2656,49 +2922,181 @@ "fill-range": "2.2.3" } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "expect": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", + "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", "dev": true, "requires": { - "bser": "2.0.0" - } - }, - "figures": { + "ansi-styles": "3.2.0", + "jest-diff": "21.2.1", + "jest-get-type": "21.2.0", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-regex-util": "21.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "diff": "3.2.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-message-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", + "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0" + } + }, + "jest-regex-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", + "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", + "dev": true + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.0", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "2.0.0" + } + }, + "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", @@ -2747,6 +3145,12 @@ "repeat-string": "1.6.1" } }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -2766,6 +3170,37 @@ "del": "2.2.2", "graceful-fs": "4.1.11", "write": "0.2.1" + }, + "dependencies": { + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + } } }, "for-in": { @@ -2821,92 +3256,993 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", - "dev": true - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-pkg-repo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.3.0.tgz", - "integrity": "sha1-Q8a0wEi3XdYE/FOI7ezeVX9jNd8=", - "dev": true, - "requires": { - "hosted-git-info": "2.4.2", - "meow": "3.7.0", - "normalize-package-data": "2.3.8", - "parse-github-repo-url": "1.4.0", - "through2": "2.0.3" - } - }, - "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 - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, + "optional": true, "requires": { - "assert-plus": "1.0.0" + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true - } - } - }, - "git-latest-semver-tag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/git-latest-semver-tag/-/git-latest-semver-tag-1.0.2.tgz", - "integrity": "sha1-BhEwy/QnQRHMa+RhKz/zptk+JmA=", - "dev": true, - "requires": { - "git-semver-tags": "1.2.0", - "meow": "3.7.0" - } - }, - "git-raw-commits": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.2.0.tgz", - "integrity": "sha1-DzqL/ZmuDy2LkiTViJKXXppS0Dw=", - "dev": true, - "requires": { - "dargs": "4.1.0", + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-own-enumerable-property-symbols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", + "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", + "dev": true + }, + "get-pkg-repo": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.3.0.tgz", + "integrity": "sha1-Q8a0wEi3XdYE/FOI7ezeVX9jNd8=", + "dev": true, + "requires": { + "hosted-git-info": "2.4.2", + "meow": "3.7.0", + "normalize-package-data": "2.3.8", + "parse-github-repo-url": "1.4.0", + "through2": "2.0.3" + } + }, + "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 + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "git-latest-semver-tag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/git-latest-semver-tag/-/git-latest-semver-tag-1.0.2.tgz", + "integrity": "sha1-BhEwy/QnQRHMa+RhKz/zptk+JmA=", + "dev": true, + "requires": { + "git-semver-tags": "1.2.0", + "meow": "3.7.0" + } + }, + "git-raw-commits": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.2.0.tgz", + "integrity": "sha1-DzqL/ZmuDy2LkiTViJKXXppS0Dw=", + "dev": true, + "requires": { + "dargs": "4.1.0", "lodash.template": "4.4.0", "meow": "3.7.0", "split2": "2.1.1", @@ -2988,13 +4324,12 @@ "dev": true }, "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { "array-union": "1.0.2", - "arrify": "1.0.1", "glob": "7.1.2", "object-assign": "4.1.1", "pify": "2.3.0", @@ -3264,49 +4599,6 @@ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.1.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - }, - "dependencies": { - "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=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, "interpret": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", @@ -3367,6 +4659,12 @@ "ci-info": "1.0.0" } }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -3418,18 +4716,6 @@ "is-extglob": "1.0.0" } }, - "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -3451,6 +4737,23 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + } + } + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -3493,18 +4796,18 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", @@ -3571,399 +4874,1254 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "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 + }, + "istanbul-api": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.9.tgz", + "integrity": "sha512-zV14oa+hjBNP3gJTM/BzNdJpInHKbZ9cLIEwVasuaTUA1ebF9TBOIfcC5SDAE3C11rXxOw3KSimKGMiFz6PpWQ==", + "dev": true, + "requires": { + "async": "2.4.1", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.0.7", + "istanbul-lib-instrument": "1.7.2", + "istanbul-lib-report": "1.1.1", + "istanbul-lib-source-maps": "1.2.1", + "istanbul-reports": "1.1.1", + "js-yaml": "3.8.4", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz", + "integrity": "sha512-lPgUY+Pa5dlq2/l0qs1PJZ54QPSfo+s4+UZdkb2d0hbOyrEIAbUJphBLFjEyXBdeCONgGRADFzs3ojfFtmuwFA==", + "dev": true, + "requires": { + "babel-generator": "6.25.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.3", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", "dev": true, "requires": { - "isarray": "1.0.0" + "debug": "2.6.8", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "source-map": "0.5.6" } }, - "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 + "istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", + "dev": true, + "requires": { + "handlebars": "4.0.10" + } }, - "istanbul-api": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.9.tgz", - "integrity": "sha512-zV14oa+hjBNP3gJTM/BzNdJpInHKbZ9cLIEwVasuaTUA1ebF9TBOIfcC5SDAE3C11rXxOw3KSimKGMiFz6PpWQ==", + "jest": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", + "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", "dev": true, "requires": { - "async": "2.4.1", - "fileset": "2.0.3", - "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.0.7", - "istanbul-lib-instrument": "1.7.2", - "istanbul-lib-report": "1.1.1", - "istanbul-lib-source-maps": "1.2.1", - "istanbul-reports": "1.1.1", - "js-yaml": "3.8.4", - "mkdirp": "0.5.1", - "once": "1.4.0" + "jest-cli": "21.2.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "jest-changed-files": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", + "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", + "dev": true, + "requires": { + "throat": "4.1.0" + } + }, + "jest-cli": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", + "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.1.9", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.7.2", + "istanbul-lib-source-maps": "1.2.1", + "jest-changed-files": "21.2.0", + "jest-config": "21.2.1", + "jest-environment-jsdom": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-message-util": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve-dependencies": "21.2.0", + "jest-runner": "21.2.1", + "jest-runtime": "21.2.1", + "jest-snapshot": "21.2.1", + "jest-util": "21.2.1", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "pify": "3.0.0", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.2.14", + "worker-farm": "1.3.1", + "yargs": "9.0.1" + } + }, + "jest-config": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", + "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "jest-environment-jsdom": "21.2.1", + "jest-environment-node": "21.2.1", + "jest-get-type": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "jest-validate": "21.2.1", + "pretty-format": "21.2.1" + } + }, + "jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "diff": "3.2.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "jest-environment-jsdom": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", + "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", + "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1" + } + }, + "jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "21.2.0", + "micromatch": "2.3.11", + "sane": "2.2.0", + "worker-farm": "1.3.1" + } + }, + "jest-jasmine2": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", + "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "expect": "21.2.1", + "graceful-fs": "4.1.11", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-snapshot": "21.2.1", + "p-cancelable": "0.3.0" + } + }, + "jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-message-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", + "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0" + } + }, + "jest-mock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", + "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", + "dev": true + }, + "jest-regex-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", + "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", + "dev": true + }, + "jest-resolve": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", + "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.3.0", + "is-builtin-module": "1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", + "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", + "dev": true, + "requires": { + "jest-regex-util": "21.2.0" + } + }, + "jest-runtime": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", + "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-jest": "21.2.0", + "babel-plugin-istanbul": "4.1.4", + "chalk": "2.3.0", + "convert-source-map": "1.5.0", + "graceful-fs": "4.1.11", + "jest-config": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "slash": "1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "2.1.0", + "yargs": "9.0.1" + } + }, + "jest-snapshot": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", + "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "21.2.1" + } + }, + "jest-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", + "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "graceful-fs": "4.1.11", + "jest-message-util": "21.2.1", + "jest-mock": "21.2.0", + "jest-validate": "21.2.1", + "mkdirp": "0.5.1" + } + }, + "jest-validate": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "leven": "2.1.0", + "pretty-format": "21.2.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.3.8", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "sane": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", + "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", + "dev": true, + "requires": { + "anymatch": "1.3.0", + "exec-sh": "0.2.0", + "fb-watchman": "2.0.0", + "fsevents": "1.1.3", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + } + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "0.2.0", + "minimist": "1.2.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.0.0", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } } }, - "istanbul-lib-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "jest-get-type": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", + "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", "dev": true }, - "istanbul-lib-hook": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", - "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", - "dev": true, - "requires": { - "append-transform": "0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz", - "integrity": "sha512-lPgUY+Pa5dlq2/l0qs1PJZ54QPSfo+s4+UZdkb2d0hbOyrEIAbUJphBLFjEyXBdeCONgGRADFzs3ojfFtmuwFA==", - "dev": true, - "requires": { - "babel-generator": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.3", - "istanbul-lib-coverage": "1.1.1", - "semver": "5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "jest-runner": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", + "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", "dev": true, "requires": { - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" + "jest-config": "21.2.1", + "jest-docblock": "21.2.0", + "jest-haste-map": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-message-util": "21.2.1", + "jest-runtime": "21.2.1", + "jest-util": "21.2.1", + "pify": "3.0.0", + "throat": "4.1.0", + "worker-farm": "1.3.1" }, "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "jest-config": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", + "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "jest-environment-jsdom": "21.2.1", + "jest-environment-node": "21.2.1", + "jest-get-type": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "jest-validate": "21.2.1", + "pretty-format": "21.2.1" + } + }, + "jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", "dev": true, "requires": { - "has-flag": "1.0.0" + "chalk": "2.3.0", + "diff": "3.2.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", - "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", - "dev": true, - "requires": { - "debug": "2.6.8", - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "rimraf": "2.6.1", - "source-map": "0.5.6" - } - }, - "istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", - "dev": true, - "requires": { - "handlebars": "4.0.10" - } - }, - "jest": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", - "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", - "dev": true, - "requires": { - "jest-cli": "20.0.4" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", "dev": true }, - "jest-cli": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", - "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", + "jest-environment-jsdom": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", + "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "callsites": "2.0.0", - "chalk": "1.1.3", + "jest-mock": "21.2.0", + "jest-util": "21.2.1", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", + "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1" + } + }, + "jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", "graceful-fs": "4.1.11", - "is-ci": "1.0.10", - "istanbul-api": "1.1.9", - "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-instrument": "1.7.2", - "istanbul-lib-source-maps": "1.2.1", - "jest-changed-files": "20.0.3", - "jest-config": "20.0.4", - "jest-docblock": "20.0.3", - "jest-environment-jsdom": "20.0.3", - "jest-haste-map": "20.0.4", - "jest-jasmine2": "20.0.4", - "jest-message-util": "20.0.3", - "jest-regex-util": "20.0.3", - "jest-resolve-dependencies": "20.0.3", - "jest-runtime": "20.0.4", - "jest-snapshot": "20.0.3", - "jest-util": "20.0.3", + "jest-docblock": "21.2.0", + "micromatch": "2.3.11", + "sane": "2.2.0", + "worker-farm": "1.3.1" + } + }, + "jest-jasmine2": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", + "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "expect": "21.2.1", + "graceful-fs": "4.1.11", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-snapshot": "21.2.1", + "p-cancelable": "0.3.0" + } + }, + "jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-message-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", + "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0" + } + }, + "jest-mock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", + "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", + "dev": true + }, + "jest-regex-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", + "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", + "dev": true + }, + "jest-resolve": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", + "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.3.0", + "is-builtin-module": "1.0.0" + } + }, + "jest-runtime": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", + "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-jest": "21.2.0", + "babel-plugin-istanbul": "4.1.4", + "chalk": "2.3.0", + "convert-source-map": "1.5.0", + "graceful-fs": "4.1.11", + "jest-config": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "json-stable-stringify": "1.0.1", "micromatch": "2.3.11", - "node-notifier": "5.1.2", - "pify": "2.3.0", "slash": "1.0.0", - "string-length": "1.0.1", - "throat": "3.1.0", - "which": "1.2.14", - "worker-farm": "1.3.1", - "yargs": "7.1.0" + "strip-bom": "3.0.0", + "write-file-atomic": "2.1.0", + "yargs": "9.0.1" } - } - } - }, - "jest-changed-files": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", - "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=", - "dev": true - }, - "jest-config": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", - "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "glob": "7.1.2", - "jest-environment-jsdom": "20.0.3", - "jest-environment-node": "20.0.3", - "jest-jasmine2": "20.0.4", - "jest-matcher-utils": "20.0.3", - "jest-regex-util": "20.0.3", - "jest-resolve": "20.0.4", - "jest-validate": "20.0.3", - "pretty-format": "20.0.3" - } - }, - "jest-diff": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", - "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "diff": "3.2.0", - "jest-matcher-utils": "20.0.3", - "pretty-format": "20.0.3" - } - }, - "jest-docblock": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", - "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", - "dev": true - }, - "jest-environment-jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", - "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=", - "dev": true, - "requires": { - "jest-mock": "20.0.3", - "jest-util": "20.0.3", - "jsdom": "9.12.0" - } - }, - "jest-environment-node": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", - "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=", - "dev": true, - "requires": { - "jest-mock": "20.0.3", - "jest-util": "20.0.3" - } - }, - "jest-haste-map": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.4.tgz", - "integrity": "sha1-ZT61XIic48Ah97lGk/IKQVm63wM=", - "dev": true, - "requires": { - "fb-watchman": "2.0.0", - "graceful-fs": "4.1.11", - "jest-docblock": "20.0.3", - "micromatch": "2.3.11", - "sane": "1.6.0", - "worker-farm": "1.3.1" - } - }, - "jest-jasmine2": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", - "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "graceful-fs": "4.1.11", - "jest-diff": "20.0.3", - "jest-matcher-utils": "20.0.3", - "jest-matchers": "20.0.3", - "jest-message-util": "20.0.3", - "jest-snapshot": "20.0.3", - "once": "1.4.0", - "p-map": "1.1.1" - } - }, - "jest-matcher-utils": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", - "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "pretty-format": "20.0.3" - } - }, - "jest-matchers": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", - "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=", - "dev": true, - "requires": { - "jest-diff": "20.0.3", - "jest-matcher-utils": "20.0.3", - "jest-message-util": "20.0.3", - "jest-regex-util": "20.0.3" - } - }, - "jest-message-util": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", - "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "micromatch": "2.3.11", - "slash": "1.0.0" - } - }, - "jest-mock": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", - "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=", - "dev": true - }, - "jest-regex-util": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", - "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=", - "dev": true - }, - "jest-resolve": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", - "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=", - "dev": true, - "requires": { - "browser-resolve": "1.11.2", - "is-builtin-module": "1.0.0", - "resolve": "1.3.3" - } - }, - "jest-resolve-dependencies": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", - "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=", - "dev": true, - "requires": { - "jest-regex-util": "20.0.3" - } - }, - "jest-runtime": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", - "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", - "dev": true, - "requires": { - "babel-core": "6.25.0", - "babel-jest": "20.0.3", - "babel-plugin-istanbul": "4.1.4", - "chalk": "1.1.3", - "convert-source-map": "1.5.0", - "graceful-fs": "4.1.11", - "jest-config": "20.0.4", - "jest-haste-map": "20.0.4", - "jest-regex-util": "20.0.3", - "jest-resolve": "20.0.4", - "jest-util": "20.0.3", - "json-stable-stringify": "1.0.1", - "micromatch": "2.3.11", - "strip-bom": "3.0.0", - "yargs": "7.1.0" - }, - "dependencies": { + }, + "jest-snapshot": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", + "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "21.2.1" + } + }, + "jest-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", + "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "graceful-fs": "4.1.11", + "jest-message-util": "21.2.1", + "jest-mock": "21.2.0", + "jest-validate": "21.2.1", + "mkdirp": "0.5.1" + } + }, + "jest-validate": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "leven": "2.1.0", + "pretty-format": "21.2.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.3.8", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "sane": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", + "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", + "dev": true, + "requires": { + "anymatch": "1.3.0", + "exec-sh": "0.2.0", + "fb-watchman": "2.0.0", + "fsevents": "1.1.3", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "0.2.0", + "minimist": "1.2.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.0.0", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } } } }, - "jest-snapshot": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", - "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "jest-diff": "20.0.3", - "jest-matcher-utils": "20.0.3", - "jest-util": "20.0.3", - "natural-compare": "1.4.0", - "pretty-format": "20.0.3" - } - }, - "jest-util": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", - "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "graceful-fs": "4.1.11", - "jest-message-util": "20.0.3", - "jest-mock": "20.0.3", - "jest-validate": "20.0.3", - "leven": "2.1.0", - "mkdirp": "0.5.1" - } - }, "jest-validate": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", - "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", "dev": true, "requires": { - "chalk": "1.1.3", - "jest-matcher-utils": "20.0.3", + "chalk": "2.3.0", + "jest-get-type": "21.2.0", "leven": "2.1.0", - "pretty-format": "20.0.3" + "pretty-format": "21.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "js-tokens": { @@ -4056,6 +6214,12 @@ "jsonify": "0.0.0" } }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -4078,22 +6242,6 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "JSONStream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", - "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", - "dev": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - } - }, "jsprim": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", @@ -4164,26 +6312,80 @@ } }, "lint-staged": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-3.6.0.tgz", - "integrity": "sha1-zajwvvFueSjMFLc1GGrhLNZiWZw=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-5.0.0.tgz", + "integrity": "sha512-nKwjLlYOd6Eqog3cg3aDulrRfLkR3GPasqTI7+3ZKucLATqay86wOaEM0gtYVmTS0/ihHSARnOWduAqNJZAbeQ==", "dev": true, "requires": { "app-root-path": "2.0.1", - "cosmiconfig": "1.1.0", - "execa": "0.6.3", - "listr": "0.12.0", - "lodash.chunk": "4.2.0", + "chalk": "2.3.0", + "commander": "2.11.0", + "cosmiconfig": "3.1.0", + "dedent": "0.7.0", + "execa": "0.8.0", + "find-parent-dir": "0.3.0", + "is-glob": "4.0.0", + "jest-validate": "21.2.1", + "listr": "0.13.0", + "lodash": "4.17.4", + "log-symbols": "2.1.0", "minimatch": "3.0.4", "npm-which": "3.0.1", "p-map": "1.1.1", - "staged-git-files": "0.0.4" + "path-is-inside": "1.0.2", + "pify": "3.0.0", + "staged-git-files": "0.0.4", + "stringify-object": "3.2.1" }, "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "cosmiconfig": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-3.1.0.tgz", + "integrity": "sha512-zedsBhLSbPBms+kE7AH4vHg6JsKDz6epSv2/+5XHs8ILHlgDciSJfSWf8sX9aQ52Jb7KI7VswUTsLpR/G0cr2Q==", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.10.0", + "parse-json": "3.0.0", + "require-from-string": "2.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, "execa": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.6.3.tgz", - "integrity": "sha1-V7aaWU8IF1nGnlNw8NF7nLEWWP4=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -4195,6 +6397,156 @@ "strip-eof": "1.0.0" } }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "listr": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", + "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.1.1", + "rxjs": "5.5.2", + "stream-to-observable": "0.2.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -4203,78 +6555,69 @@ "requires": { "path-key": "2.0.1" } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + }, + "parse-json": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-3.0.0.tgz", + "integrity": "sha1-+m9HsY4jgm6tMvJj50TQ4ehH+xM=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "require-from-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.1.tgz", + "integrity": "sha1-xUUjPp19pmFunVmt+zn8n1iGdv8=", + "dev": true + }, + "stream-to-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", + "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", + "dev": true, + "requires": { + "any-observable": "0.2.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, - "listr": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", - "integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "figures": "1.7.0", - "indent-string": "2.1.0", - "is-promise": "2.1.0", - "is-stream": "1.1.0", - "listr-silent-renderer": "1.1.1", - "listr-update-renderer": "0.2.0", - "listr-verbose-renderer": "0.4.0", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "ora": "0.2.3", - "p-map": "1.1.1", - "rxjs": "5.4.0", - "stream-to-observable": "0.1.0", - "strip-ansi": "3.0.1" - } - }, "listr-silent-renderer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", "dev": true }, - "listr-update-renderer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", - "integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "elegant-spinner": "1.0.1", - "figures": "1.7.0", - "indent-string": "3.1.0", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "indent-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.1.0.tgz", - "integrity": "sha1-CP9DNGAziDmbMp5rlTjcejz13n0=", - "dev": true - } - } - }, "listr-verbose-renderer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz", - "integrity": "sha1-RNwBuww0oDxXIVTU0Izemx3FYg8=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", "dev": true, "requires": { "chalk": "1.1.3", "cli-cursor": "1.0.2", - "date-fns": "1.28.5", + "date-fns": "1.29.0", "figures": "1.7.0" } }, @@ -4329,12 +6672,6 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, - "lodash.chunk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", - "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=", - "dev": true - }, "lodash.cond": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", @@ -4361,12 +6698,49 @@ } }, "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.1.0.tgz", + "integrity": "sha512-zLeLrzMA1A2vRF1e/0Mo+LNINzi6jzBylHj5WqvQ/WK/5WCZt8si9SyN4p9llr/HRYvVR1AoXHRHl4WTHyQAzQ==", "dev": true, "requires": { - "chalk": "1.1.3" + "chalk": "2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "log-update": { @@ -4646,11 +7020,12 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true }, "natural-compare": { "version": "1.4.0", @@ -5255,6 +7630,12 @@ "object-assign": "4.1.1" } }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -5463,12 +7844,6 @@ } } }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, "pre-commit": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", @@ -5499,19 +7874,25 @@ "dev": true }, "pretty-format": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", - "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", "dev": true, "requires": { - "ansi-regex": "2.1.1", - "ansi-styles": "3.0.0" + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" }, "dependencies": { - "ansi-styles": { + "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.0.0.tgz", - "integrity": "sha1-VATpOlRMT+x/BIJil3vr/jFV4ME=", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "1.9.0" @@ -5537,12 +7918,6 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, "prop-ini": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/prop-ini/-/prop-ini-0.0.2.tgz", @@ -5723,43 +8098,12 @@ "set-immediate-shim": "1.0.1" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - }, - "dependencies": { - "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=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - } - } - }, "readme-badger": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/readme-badger/-/readme-badger-0.1.2.tgz", "integrity": "sha1-gbE435cjxzPfaifHvZyuvTg+CKU=", "dev": true }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.3.3" - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -5919,12 +8263,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -5994,25 +8332,25 @@ "inherits": "2.0.3" } }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, "rx-lite": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", "dev": true }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "3.1.2" + } + }, "rxjs": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.0.tgz", - "integrity": "sha1-p9sUqxV/nXqsalbmVeejhg05vyY=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.2.tgz", + "integrity": "sha512-oRYoIKWBU3Ic37fLA5VJu31VqQO4bWubRntcHSJ+cwaDQBwdnZ9x4zmhJfm/nFQ2E82/I4loSioHnACamrKGgA==", "dev": true, "requires": { "symbol-observable": "1.0.4" @@ -6024,47 +8362,6 @@ "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", "dev": true }, - "sane": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", - "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", - "dev": true, - "requires": { - "anymatch": "1.3.0", - "exec-sh": "0.2.0", - "fb-watchman": "1.9.2", - "minimatch": "3.0.4", - "minimist": "1.2.0", - "walker": "1.0.7", - "watch": "0.10.0" - }, - "dependencies": { - "bser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", - "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", - "dev": true, - "requires": { - "node-int64": "0.4.0" - } - }, - "fb-watchman": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", - "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", - "dev": true, - "requires": { - "bser": "1.0.2" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "sax": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz", @@ -6137,17 +8434,6 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "7.1.2", - "interpret": "1.0.3", - "rechoir": "0.6.2" - } - }, "shellwords": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", @@ -6407,11 +8693,15 @@ "xtend": "4.0.1" } }, - "stream-to-observable": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", - "integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=", - "dev": true + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "3.0.1" + } }, "string_decoder": { "version": "1.0.2", @@ -6422,23 +8712,15 @@ "safe-buffer": "5.0.1" } }, - "string-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", - "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true, - "requires": { - "strip-ansi": "3.0.1" - } - }, - "string-width": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "stringify-object": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.1.tgz", + "integrity": "sha512-jPcQYw/52HUPP8uOE4kkjxl5bB9LfHkKCTptIk3qw7ozP5XMIMlHMLjt00GGSwW6DJAf/njY5EU6Vpwl4LlBKQ==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "3.0.1" + "get-own-enumerable-property-symbols": "2.0.1", + "is-obj": "1.0.1", + "is-regexp": "1.0.0" } }, "stringstream": { @@ -6510,20 +8792,6 @@ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.0.0" - } - }, "tapable": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", @@ -6564,15 +8832,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "throat": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-3.1.0.tgz", - "integrity": "sha512-AvehafrUS8C2PWA4YgPsPV6qrM5e7yU7o7jpuRzXVjRcPrPQgBsL6lVFxHXZEtRjZTdF+J9S2dIUxbheUrxAHA==", - "dev": true, - "requires": { - "double-ended-queue": "2.1.0-0" - } - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -6604,6 +8863,15 @@ "setimmediate": "1.0.5" } }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -6920,12 +9188,6 @@ "makeerror": "1.0.11" } }, - "watch": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", - "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=", - "dev": true - }, "watchpack": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", @@ -7384,83 +9646,6 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "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=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - }, "yarn-install": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-0.2.1.tgz", diff --git a/package.json b/package.json index 46056f1..ab8c6d8 100644 --- a/package.json +++ b/package.json @@ -11,30 +11,29 @@ "files": [ "dist" ], - "directories": { - "test": "test" - }, "dependencies": { "loader-utils": "^1.0.2", "schema-utils": "^0.3.0" }, "devDependencies": { - "babel-cli": "^6.24.1", - "babel-jest": "^20.0.3", - "babel-plugin-transform-object-rest-spread": "^6.23.0", - "babel-polyfill": "^6.23.0", - "babel-preset-env": "^1.5.1", + "babel-cli": "^6.0.0", + "babel-jest": "^21.0.0", + "babel-plugin-transform-object-rest-spread": "^6.0.0", + "babel-polyfill": "^6.0.0", + "babel-preset-env": "^1.0.0", "cross-env": "^5.0.0", + "del": "^3.0.0", "del-cli": "^1.0.0", - "eslint": "^3.19.0", - "eslint-config-webpack": "^1.2.3", - "eslint-plugin-import": "^2.3.0", - "jest": "^20.0.4", - "lint-staged": "^3.6.0", - "nsp": "^2.6.3", - "pre-commit": "^1.2.2", + "eslint": "^4.0.0", + "eslint-config-webpack": "^1.0.0", + "eslint-plugin-import": "^2.0.0", + "jest": "^21.0.0", + "lint-staged": "^5.0.0", + "memory-fs": "^0.4.0", + "nsp": "^2.0.0", + "pre-commit": "^1.0.0", "standard-version": "^4.0.0", - "webpack": "^3.6.0", + "webpack": "^3.0.0", "webpack-defaults": "^1.6.0" }, "peerDependencies": { @@ -54,19 +53,14 @@ "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --collectCoverageFrom='src/**/*.js' --coverage", - "travis:coverage": "npm run test:coverage -- --runInBand", - "travis:test": "npm run test -- --runInBand", "travis:lint": "npm run lint && npm run security", + "travis:test": "npm run test -- --runInBand", + "travis:coverage": "npm run test:coverage -- --runInBand", "webpack-defaults": "webpack-defaults" }, - "repository": { - "type": "git", - "url": "https://github.com/webpack/file-loader.git" - }, - "bugs": { - "url": "https://github.com/webpack/file-loader/issues" - }, - "homepage": "https://github.com/webpack/file-loader", + "repository": "https://github.com/webpack/file-loader.git", + "bugs": "https://github.com/webpack/file-loader/issues", + "homepage": "https://webpack.js.org/loaders/file-loader", "pre-commit": "lint-staged", "lint-staged": { "*.js": [ diff --git a/test/Errors.test.js b/test/Errors.test.js index 507964d..0985b8f 100644 --- a/test/Errors.test.js +++ b/test/Errors.test.js @@ -1,18 +1,18 @@ import loader from '../src'; describe('Errors', () => { - test('Validation Error', () => { - const err = () => loader.call({ - query: { useRelativePath: 1 }, - emitFile: true, - }); + test('Loader Error', () => { + const err = () => loader.call({ emitFile: false }); expect(err).toThrow(); expect(err).toThrowErrorMatchingSnapshot(); }); - test('Loader Error', () => { - const err = () => loader.call({ emitFile: false }); + test('Validation Error', () => { + const err = () => loader.call({ + query: { useRelativePath: 1 }, + emitFile: true, + }); expect(err).toThrow(); expect(err).toThrowErrorMatchingSnapshot(); diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap new file mode 100644 index 0000000..43c518b --- /dev/null +++ b/test/__snapshots__/loader.test.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Loader Defaults 1`] = `"module.exports = __webpack_public_path__ + \\"9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; diff --git a/test/cjs.test.js b/test/cjs.test.js index 1aa2e5d..9e913dd 100644 --- a/test/cjs.test.js +++ b/test/cjs.test.js @@ -1,12 +1,12 @@ -import fileLoader from '../src'; -import cjsFileLoader from '../src/cjs'; +import loader from '../src'; +import CJSLoader from '../src/cjs'; -describe('cjs', () => { +describe('CJS', () => { it('should export loader', () => { - expect(cjsFileLoader).toEqual(fileLoader); + expect(CJSLoader).toEqual(loader); }); it('should export `raw` flag', () => { - expect(cjsFileLoader.raw).toEqual(true); + expect(CJSLoader.raw).toEqual(true); }); }); diff --git a/test/emitFile.test.js b/test/emitFile.test.js deleted file mode 100644 index 741d5cc..0000000 --- a/test/emitFile.test.js +++ /dev/null @@ -1,30 +0,0 @@ -import loader from '../src'; - -const run = function run(resourcePath, query, content = new Buffer('1234')) { - let result = false; - - const context = { - resourcePath, - query: `?${query || ''}`, - options: { - context: '/this/is/the/context', - }, - emitFile() { - result = true; - }, - }; - - loader.call(context, content); - - return result; -}; - -describe('optional-emission', () => { - it('should emit a file by default', () => { - expect(run('whatever.txt', '')).toBe(true); - }); - - it('should not emit a file if disabled', () => { - expect(run('whatever.txt', 'emitFile=false')).toBe(false); - }); -}); diff --git a/test/fixtures/emitFile/fixture.js b/test/fixtures/emitFile/fixture.js new file mode 100644 index 0000000..7f78458 --- /dev/null +++ b/test/fixtures/emitFile/fixture.js @@ -0,0 +1,4 @@ +/* eslint-disable */ +import svg from '../file.svg'; + +export default svg diff --git a/test/fixtures/file.gif b/test/fixtures/file.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c192daba05c01840163ad495336eae10f84a432 GIT binary patch literal 13359 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 BTTcK0 literal 0 HcmV?d00001 diff --git a/test/fixtures/file.jpg b/test/fixtures/file.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8deb3d2a8a6430986241af82816a3dbd71ee35d6 GIT binary patch literal 12801 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 b<-q>~hRJINZ^rzJ00000NkvXXu0mjf%EBh% literal 0 HcmV?d00001 diff --git a/test/fixtures/file.svg b/test/fixtures/file.svg new file mode 100644 index 0000000..f083f3f --- /dev/null +++ b/test/fixtures/file.svg @@ -0,0 +1,48 @@ + + + + mochi + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/fixtures/fixture.js b/test/fixtures/fixture.js new file mode 100644 index 0000000..666d017 --- /dev/null +++ b/test/fixtures/fixture.js @@ -0,0 +1,4 @@ +/* eslint-disable */ +import png from './file.png'; + +export default png; diff --git a/test/helpers/compiler.js b/test/helpers/compiler.js new file mode 100644 index 0000000..011c7e0 --- /dev/null +++ b/test/helpers/compiler.js @@ -0,0 +1,68 @@ +/* eslint-disable + import/order, + multiline-ternary, + no-param-reassign, +*/ +import del from 'del'; +import path from 'path'; +import webpack from 'webpack'; +import MemoryFS from 'memory-fs'; + +const module = (config) => { + return { + rules: config.rules || config.loader + ? [ + { + test: config.loader.test || /\.txt$/, + use: { + loader: path.resolve(__dirname, '../../src'), + options: config.loader.options || {}, + }, + }, + ] + : [], + }; +}; + +const plugins = config => ([ + new webpack.optimize.CommonsChunkPlugin({ + name: ['runtime'], + minChunks: Infinity, + }), +].concat(config.plugins || [])); + +const output = (config) => { + return { + path: path.resolve( + __dirname, + `../outputs/${config.output ? config.output : ''}`, + ), + filename: '[name].bundle.js', + }; +}; + +export default function (fixture, config, options) { + // webpack Config + config = { + devtool: config.devtool || 'sourcemap', + context: path.resolve(__dirname, '..', 'fixtures'), + entry: `./${fixture}`, + output: output(config), + module: module(config), + plugins: plugins(config), + }; + // Compiler Options + options = Object.assign({ output: false }, options); + + if (options.output) del.sync(config.output.path); + + const compiler = webpack(config); + + if (!options.output) compiler.outputFileSystem = new MemoryFS(); + + return new Promise((resolve, reject) => compiler.run((err, stats) => { + if (err) reject(err); + + resolve(stats); + })); +} diff --git a/test/loader.test.js b/test/loader.test.js index 23eea9a..b3a06fb 100644 --- a/test/loader.test.js +++ b/test/loader.test.js @@ -1,151 +1,20 @@ -/* eslint-disable no-useless-escape, no-unused-vars */ -import loader from '../src'; - -const run = function run(resourcePath, query, content = new Buffer('1234')) { - let file = null; - - const context = { - resourcePath, - query: `?${query || ''}`, - options: { - context: '/this/is/the/context', - }, - emitFile(url, content2) { - expect(content2).toEqual(content); - file = url; - }, - }; - - const result = loader.call(context, content); - - return { - file, - result, - }; -}; - -function runWithOptions(resourcePath, options, content = new Buffer('1234')) { - let file = null; - - const context = { - resourcePath, - query: options, - options: { - context: '/this/is/the/context', - }, - emitFile(url, content2) { - expect(content2).toEqual(content); - file = url; - }, - }; - - const result = loader.call(context, content); - - return { - file, - result, - }; -} -const test = function test(excepted, resourcePath, query, content) { - expect(run(resourcePath, query, content).file).toEqual(excepted); -}; - -describe('correct-filename', () => { - it('should process defaults correctly', () => { - test('81dc9bdb52d04dc20036dbd8313ed055.txt', '/file.txt', ''); - test('81dc9bdb52d04dc20036dbd8313ed055.png', '/file.png', ''); - test('81dc9bdb52d04dc20036dbd8313ed055.txt', 'file.txt', ''); - test('81dc9bdb52d04dc20036dbd8313ed055.bin', '', ''); - }); - - it('should process name correctly', () => { - test('file.txt', '/file.txt', 'name=[name].[ext]'); - test('file.png', '/file.png', 'name=[name].[ext]'); - test('file.txt', 'file.txt', 'name=[name].[ext]'); - test('file.bin', '', 'name=[name].[ext]'); - test('file', '/file.txt', 'name=[name]'); - test('81dc9bdb52d04dc20036dbd8313ed055', '/file.txt', 'name=[hash]'); - test('81dc9bdb52d04dc20036dbd8313ed055/file.txt', '/file.txt', 'name=[hash]/[name].[ext]'); - test('file.txt', '/this/is/the/context/file.txt', 'name=[path][name].[ext]'); - test('dir/file.txt', '/this/is/the/context/dir/file.txt', 'name=[path][name].[ext]'); - test('dir/sub/file.txt', '/this/is/the/context/dir/sub/file.txt', 'name=[path][name].[ext]'); - test('_/_/dir/sub/file.txt', '/this/is/dir/sub/file.txt', 'name=[path][name].[ext]'); - test('dir/sub/file.txt', '/this/is/dir/sub/file.txt', 'name=[path][name].[ext]&context=/this/is'); - }); - - it('should process hash correctly', () => { - test('d93591bdf7860e1e4ee2fca799911215.txt', '/file.txt', '', new Buffer('4321')); - }); - - it('should process hash options correctly', () => { - test('81dc9.txt', '/file.txt', 'name=[hash:5].[ext]'); - test('d4045.txt', '/file.txt', 'name=[sha512:hash:5].[ext]'); - test('1lQ3UNSdIS0c9dQ5brCZO1.txt', '/file.txt', 'name=[hash:base64].[ext]'); - test('caYJDUvUOiGAdDsiHKffIEj.txt', '/file.txt', 'name=[hash:base52].[ext]'); - test('sntmopgidsdqrofkjywoyldtiij.txt', '/file.txt', 'name=[hash:base26].[ext]'); - test('sntmopgids.txt', '/file.txt', 'name=[hash:base26:10].[ext]'); - }); -}); - -describe('publicPath option', () => { - it('should be supported', () => { - expect(run('/file.txt', 'publicPath=http://cdn/').result).toEqual( - 'module.exports = "http://cdn/81dc9bdb52d04dc20036dbd8313ed055.txt";', - ); - }); - - it('should override public path when given empty string', () => { - expect(run('/file.txt', 'publicPath=').result).toEqual( - 'module.exports = "81dc9bdb52d04dc20036dbd8313ed055.txt";', - ); - }); - - it('should use webpack public path when not set', () => { - expect(run('/file.txt').result).toEqual( - 'module.exports = __webpack_public_path__ + "81dc9bdb52d04dc20036dbd8313ed055.txt";', - ); - }); -}); - -describe('useRelativePath option', () => { - it('should be supported', () => { - expect(run('/this/is/the/context/file.txt', 'useRelativePath=true').result).toEqual( - 'module.exports = __webpack_public_path__ + \"./81dc9bdb52d04dc20036dbd8313ed055.txt\";', - ); - - expect(run('/this/is/file.txt', 'useRelativePath=true').result).toEqual( - 'module.exports = __webpack_public_path__ + \"../../81dc9bdb52d04dc20036dbd8313ed055.txt\";', - ); - - expect(run('/this/file.txt', 'context=/this/is/the/&useRelativePath=true').result).toEqual( - 'module.exports = __webpack_public_path__ + \"../../81dc9bdb52d04dc20036dbd8313ed055.txt\";', - ); - - expect(run('/this/file.txt', 'context=/&useRelativePath=true').result).toEqual( - 'module.exports = __webpack_public_path__ + \"this/81dc9bdb52d04dc20036dbd8313ed055.txt\";', - ); - }); -}); - -describe('outputPath function', () => { - it('should be supported', () => { - const options = {}; - options.outputPath = value => '/path/set/by/func'; - - expect(runWithOptions('/this/is/the/context/file.txt', options).result) - .toEqual( - 'module.exports = __webpack_public_path__ + \"/path/set/by/func\";', - ); - }); - - it('should be ignored if you set useRelativePath', () => { - const options = {}; - options.outputPath = value => '/path/set/by/func'; - options.useRelativePath = true; - - expect(runWithOptions('/this/is/the/context/file.txt', options).result) - .toEqual( - 'module.exports = __webpack_public_path__ + \"./81dc9bdb52d04dc20036dbd8313ed055.txt\";', - ); +/* eslint-disable + prefer-destructuring, +*/ +import webpack from './helpers/compiler'; + +describe('Loader', () => { + test('Defaults', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: {}, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); }); }); diff --git a/test/options/__snapshots__/context.test.js.snap b/test/options/__snapshots__/context.test.js.snap new file mode 100644 index 0000000..f4c9a32 --- /dev/null +++ b/test/options/__snapshots__/context.test.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Options context {String} 1`] = `"module.exports = __webpack_public_path__ + \\"9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; diff --git a/test/options/__snapshots__/emitFile.test.js.snap b/test/options/__snapshots__/emitFile.test.js.snap new file mode 100644 index 0000000..7fca6ba --- /dev/null +++ b/test/options/__snapshots__/emitFile.test.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Options emitFile {Boolean} True (Default) 1`] = `"64eababb117f90535085779cc0325003.svg"`; diff --git a/test/options/__snapshots__/name.test.js.snap b/test/options/__snapshots__/name.test.js.snap new file mode 100644 index 0000000..f0fdb4a --- /dev/null +++ b/test/options/__snapshots__/name.test.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Options name {Function} 1`] = `"module.exports = __webpack_public_path__ + \\"9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; + +exports[`Options name {String} 1`] = `"module.exports = __webpack_public_path__ + \\"9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; diff --git a/test/options/__snapshots__/outputPath.test.js.snap b/test/options/__snapshots__/outputPath.test.js.snap new file mode 100644 index 0000000..e395855 --- /dev/null +++ b/test/options/__snapshots__/outputPath.test.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Options outputPath {Function} 1`] = `"module.exports = __webpack_public_path__ + \\"test/9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; + +exports[`Options outputPath {String} 1`] = `"module.exports = __webpack_public_path__ + \\"/test/9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; diff --git a/test/options/__snapshots__/publicPath.test.js.snap b/test/options/__snapshots__/publicPath.test.js.snap new file mode 100644 index 0000000..705f5bc --- /dev/null +++ b/test/options/__snapshots__/publicPath.test.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Options publicPath {Function} 1`] = `"module.exports = \\"test/9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; + +exports[`Options publicPath {String} 1`] = `"module.exports = \\"/test/9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; diff --git a/test/options/__snapshots__/useRelativePath.test.js.snap b/test/options/__snapshots__/useRelativePath.test.js.snap new file mode 100644 index 0000000..6dd64c2 --- /dev/null +++ b/test/options/__snapshots__/useRelativePath.test.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Options useRelativePath options.context 1`] = `"module.exports = __webpack_public_path__ + \\"./9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; + +exports[`Options useRelativePath this.options.context 1`] = `"module.exports = __webpack_public_path__ + \\"./9c87cbf3ba33126ffd25ae7f2f6bbafb.png\\";"`; diff --git a/test/options/context.test.js b/test/options/context.test.js new file mode 100644 index 0000000..dede935 --- /dev/null +++ b/test/options/context.test.js @@ -0,0 +1,24 @@ +/* eslint-disable + prefer-destructuring, +*/ +import webpack from '../helpers/compiler'; + +describe('Options', () => { + describe('context', () => { + test('{String}', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + context: `${__dirname}`, + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + }); +}); diff --git a/test/options/emitFile.test.js b/test/options/emitFile.test.js new file mode 100644 index 0000000..2915e85 --- /dev/null +++ b/test/options/emitFile.test.js @@ -0,0 +1,42 @@ +/* eslint-disable + prefer-destructuring, +*/ +import webpack from '../helpers/compiler'; + +describe('Options', () => { + describe('emitFile', () => { + describe('{Boolean}', () => { + test('True (Default)', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + emitFile: true, + }, + }, + }; + + const stats = await webpack('emitFile/fixture.js', config); + const { assets } = stats.toJson().modules[1]; + + expect(assets[0]).toMatchSnapshot(); + }); + + test('False', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + emitFile: false, + }, + }, + }; + + const stats = await webpack('emitFile/fixture.js', config); + const { assets } = stats.toJson().modules[1]; + + expect(assets[0]).toBe(undefined); + }); + }); + }); +}); diff --git a/test/options/name.test.js b/test/options/name.test.js new file mode 100644 index 0000000..89022e0 --- /dev/null +++ b/test/options/name.test.js @@ -0,0 +1,42 @@ +/* eslint-disable + prefer-destructuring, +*/ +import webpack from '../helpers/compiler'; + +describe('Options', () => { + describe('name', () => { + test('{String}', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + name: '[hash].[ext]', + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + + test('{Function}', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + name() { + return '[hash].[ext]'; + }, + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + }); +}); diff --git a/test/options/outputPath.test.js b/test/options/outputPath.test.js new file mode 100644 index 0000000..e58fc83 --- /dev/null +++ b/test/options/outputPath.test.js @@ -0,0 +1,42 @@ +/* eslint-disable + prefer-destructuring, +*/ +import webpack from '../helpers/compiler'; + +describe('Options', () => { + describe('outputPath', () => { + test('{String}', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + outputPath: '/test/', + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + + test('{Function}', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + outputPath(url) { + return `test/${url}`; + }, + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + }); +}); diff --git a/test/options/publicPath.test.js b/test/options/publicPath.test.js new file mode 100644 index 0000000..b11ac83 --- /dev/null +++ b/test/options/publicPath.test.js @@ -0,0 +1,42 @@ +/* eslint-disable + prefer-destructuring, +*/ +import webpack from '../helpers/compiler'; + +describe('Options', () => { + describe('publicPath', () => { + test('{String}', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + publicPath: '/test/', + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + + test('{Function}', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + publicPath(url) { + return `test/${url}`; + }, + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + }); +}); diff --git a/test/options/useRelativePath.test.js b/test/options/useRelativePath.test.js new file mode 100644 index 0000000..7858f29 --- /dev/null +++ b/test/options/useRelativePath.test.js @@ -0,0 +1,41 @@ +/* eslint-disable + prefer-destructuring, +*/ +import webpack from '../helpers/compiler'; + +describe('Options', () => { + describe('useRelativePath', () => { + test('this.options.context', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + useRelativePath: true, + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + + test('options.context', async () => { + const config = { + loader: { + test: /(png|jpg|svg)/, + options: { + context: '/relative/', + useRelativePath: true, + }, + }, + }; + + const stats = await webpack('fixture.js', config); + const { source } = stats.toJson().modules[1]; + + expect(source).toMatchSnapshot(); + }); + }); +});