From 00c3b3440a5b2ffe11b9c19ae4e08ad2f5b70e33 Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Thu, 11 Jul 2019 20:00:02 -0400 Subject: [PATCH] feat: Drop node.js 6, upgrade dependencies (#1134) BREAKING CHANGE: Node.js 8 is now required to run nyc --- .taprc | 7 + .travis.yml | 1 - bin/wrap.js | 7 +- index.js | 16 +- lib/instrumenters/istanbul.js | 7 +- package-lock.json | 3076 +++++++++++++---- package.json | 51 +- .../test-config-override.js-TAP.test.js | 14 +- .../test-nyc-integration.js-TAP.test.js | 501 +-- test/fixtures/cli/external-instrumenter.js | 2 +- test/helpers/env-check-config.js | 28 +- test/helpers/run-nyc.js | 15 +- test/helpers/temp-dir-setup.js | 12 +- test/helpers/test-failure.js | 14 +- test/helpers/test-success.js | 14 +- test/nyc-index.js | 66 - test/nyc-integration.js | 208 +- test/should-instrument.js | 78 + test/src/nyc-tap.js | 517 --- 19 files changed, 3009 insertions(+), 1625 deletions(-) create mode 100644 .taprc create mode 100644 test/should-instrument.js delete mode 100644 test/src/nyc-tap.js diff --git a/.taprc b/.taprc new file mode 100644 index 000000000..f10d966a9 --- /dev/null +++ b/.taprc @@ -0,0 +1,7 @@ +{ + "test-ignore": "^test/(helpers|src)/", + "coverage": false, + "jobs": 1, + "timeout": 360, + "bail": false +} diff --git a/.travis.yml b/.travis.yml index b360fe833..2164f9841 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,6 @@ node_js: - "node" - 10 - 8 - - 6 matrix: ## An ENOMEM error occurs with 10+ under Travis-CI for Windows. ## Disable until we can determine the cause. diff --git a/bin/wrap.js b/bin/wrap.js index ee2937d97..3aa2a9df1 100644 --- a/bin/wrap.js +++ b/bin/wrap.js @@ -16,8 +16,11 @@ if (process.env.NYC_PROCESSINFO_EXTERNAL_ID) { } if (process.env.NYC_CONFIG_OVERRIDE) { - var override = JSON.parse(process.env.NYC_CONFIG_OVERRIDE) - config = Object.assign(config, override) + const override = JSON.parse(process.env.NYC_CONFIG_OVERRIDE) + config = { + ...config, + ...override + } process.env.NYC_CONFIG = JSON.stringify(config) } diff --git a/index.js b/index.js index a93f9969c..2310f57e5 100755 --- a/index.js +++ b/index.js @@ -393,20 +393,18 @@ class NYC { } report () { - var tree - var map = this.getCoverageMapFromAllCoverageFiles() - var context = libReport.createContext({ + const context = libReport.createContext({ dir: this.reportDirectory(), - watermarks: this.config.watermarks + watermarks: this.config.watermarks, + coverageMap: this.getCoverageMapFromAllCoverageFiles() }) - tree = libReport.summarizers.pkg(map) - this.reporter.forEach((_reporter) => { - tree.visit(reports.create(_reporter, { + reports.create(_reporter, { skipEmpty: this.config.skipEmpty, - skipFull: this.config.skipFull - }), context) + skipFull: this.config.skipFull, + maxCols: process.stdout.columns || 100 + }).execute(context) }) if (this._showProcessTree) { diff --git a/lib/instrumenters/istanbul.js b/lib/instrumenters/istanbul.js index fa95e36b0..a10c7d1ba 100644 --- a/lib/instrumenters/istanbul.js +++ b/lib/instrumenters/istanbul.js @@ -8,7 +8,7 @@ function InstrumenterIstanbul (options) { const { plugins } = options const configPlugins = plugins ? { plugins } : {} - const instrumenter = createInstrumenter(Object.assign({ + const instrumenter = createInstrumenter({ autoWrap: true, coverageVariable: '__coverage__', embedSource: true, @@ -16,8 +16,9 @@ function InstrumenterIstanbul (options) { preserveComments: options.preserveComments, produceSourceMap: options.produceSourceMap, ignoreClassMethods: options.ignoreClassMethods, - esModules: options.esModules - }, configPlugins)) + esModules: options.esModules, + ...configPlugins + }) return { instrumentSync (code, filename, sourceMap) { diff --git a/package-lock.json b/package-lock.json index 41875ddaf..eb10c4aab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,6 +65,15 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==" }, + "@babel/runtime": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, "@babel/template": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", @@ -166,6 +175,16 @@ "integrity": "sha1-nHb+94IunqVs5snZMUX5cxfpvPk=", "dev": true }, + "anymatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.2.tgz", + "integrity": "sha512-rUe9SxpRQlVg4EM8It7JMNWWYHAirTPpbTuvaSKybb5IejNgWB3PGBBX9rrPKDx2pM/p3Wh+7+ASaWRyyAbxmQ==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "append-transform": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", @@ -242,6 +261,21 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-hook-domain": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-1.1.0.tgz", + "integrity": "sha512-NH7V97d1yCbIanu2oDLyPT2GFNct0esPeJyRfkk8J5hTztHVSQp4UiNfL2O42sCA9XZPU8OgHvzOmt9ewBhVqA==", + "dev": true, + "requires": { + "source-map-support": "^0.5.11" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -333,6 +367,12 @@ "tweetnacl": "^0.14.3" } }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, "bind-obj-methods": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz", @@ -348,6 +388,15 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -361,14 +410,14 @@ "dev": true }, "caching-transform": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", - "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "requires": { - "hasha": "^3.0.0", - "make-dir": "^2.0.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.4.2" + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" } }, "caller-path": { @@ -458,18 +507,29 @@ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, + "chokidar": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.1.tgz", + "integrity": "sha512-2ww34sJWehnbpV0Q4k4V5Hh7juo7po6z7LUWkcIQnSGN1lHOL8GGtLtfwabKvLFQw/hbSUQ0u6V7OgGYgBzlkQ==", + "dev": true, + "requires": { + "anymatch": "^3.0.1", + "async-each": "^1.0.3", + "braces": "^3.0.2", + "fsevents": "^2.0.6", + "glob-parent": "^5.0.0", + "is-binary-path": "^2.1.0", + "is-glob": "^4.0.1", + "normalize-path": "^3.0.0", + "readdirp": "^3.0.2" + } + }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true - }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -620,6 +680,12 @@ "q": "^1.5.1" } }, + "conventional-changelog-config-spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-1.0.0.tgz", + "integrity": "sha512-RR3479x5Qw7XWkmNDYx/kOnsQJW+FZBIakURG/Dg7FkTaCrGjAkgfH96pQs9SyOEZI07USEXy7FjUDWYP8bt3Q==", + "dev": true + }, "conventional-changelog-conventionalcommits": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-3.0.2.tgz", @@ -660,6 +726,18 @@ "locate-path": "^2.0.0" } }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -694,6 +772,48 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, "read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", @@ -774,14 +894,6 @@ "semver": "^6.0.0", "split": "^1.0.0", "through2": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", - "dev": true - } } }, "conventional-commits-filter": { @@ -810,9 +922,9 @@ } }, "conventional-recommended-bump": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-4.1.1.tgz", - "integrity": "sha512-JT2vKfSP9kR18RXXf55BRY1O3AHG8FPg5btP3l7LYfcWJsiXI6MCf30DepQ98E8Qhowvgv7a8iev0J1bEDkTFA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.0.tgz", + "integrity": "sha512-CsfdICpbUe0pmM4MTG90GPUqnFgB1SWIR2HAh+vS+JhhJdPWvc0brs8oadWoYGhFOQpQwe57JnvzWEWU0m2OSg==", "dev": true, "requires": { "concat-stream": "^2.0.0", @@ -862,40 +974,14 @@ } }, "cp-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", - "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", + "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", "requires": { "graceful-fs": "^4.1.2", - "make-dir": "^2.0.0", + "make-dir": "^3.0.0", "nested-error-stacks": "^2.0.0", - "pify": "^4.0.1", - "safe-buffer": "^5.0.1" - } - }, - "cross-env": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz", - "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.5", - "is-windows": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } + "p-event": "^4.1.0" } }, "cross-spawn": { @@ -1038,21 +1124,21 @@ "dev": true }, "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", "dev": true }, "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.0.0.tgz", + "integrity": "sha512-JAP22dVPAqvhdRFFxK1G5GViIokyUn0UWXRNW0ztK96fsqi9cuM8w8ESbSk+T2w5OVorcMcL6m7yUg1RrX+2CA==", "dev": true }, "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", + "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", "dev": true }, "doctrine": { @@ -1064,12 +1150,6 @@ "esutils": "^2.0.2" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, "dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", @@ -1087,6 +1167,42 @@ "requires": { "find-up": "^3.0.0", "minimatch": "^3.0.4" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, "ecc-jsbn": { @@ -1108,6 +1224,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -1116,6 +1233,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -1229,6 +1347,12 @@ "ms": "^2.1.1" } }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -1347,6 +1471,12 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -1405,111 +1535,11 @@ "isarray": "^1.0.0" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "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.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "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.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "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.2", - "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.0.0", - "read-pkg": "^2.0.0" - } } } }, @@ -1525,6 +1555,14 @@ "minimatch": "^3.0.4", "resolve": "^1.8.1", "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } } }, "eslint-plugin-promise": { @@ -1635,6 +1673,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -1649,6 +1688,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -1656,6 +1696,12 @@ "shebang-command": "^1.2.0", "which": "^1.2.9" } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true } } }, @@ -1719,14 +1765,23 @@ "object-assign": "^4.0.1" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", + "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", "requires": { "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" } }, "find-root": { @@ -1736,13 +1791,20 @@ "dev": true }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, + "findit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz", + "integrity": "sha1-ZQnwEmr0wXhVHPqZOU4DLhOk1W4=", + "dev": true + }, "flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", @@ -1755,11 +1817,28 @@ "write": "^0.2.1" } }, - "foreground-child": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", - "requires": { + "flow-parser": { + "version": "0.101.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.101.0.tgz", + "integrity": "sha512-Goi71MNzZkL530ZEEpedxLlFFiCA/M4J+nJA8zHSTSpHnDCL3WYpr2NYFHmUczpG80Hq9xTYdQYfGQEk7Dl5Ww==", + "dev": true + }, + "flow-remove-types": { + "version": "2.101.0", + "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.101.0.tgz", + "integrity": "sha512-87C0OgvfgvAWZeA4/0UxmLVbqZUxzntc6knAF2QzwwnUUSQMx7J4UtpCB8COIf9wehkWOEmcIa2XnQdz2lgYyg==", + "dev": true, + "requires": { + "flow-parser": "^0.101.0", + "pirates": "^3.0.2", + "vlq": "^0.2.1" + } + }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "requires": { "cross-spawn": "^4", "signal-exit": "^3.0.0" } @@ -1801,6 +1880,13 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz", + "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1927,15 +2013,6 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -1956,12 +2033,6 @@ "pinkie-promise": "^2.0.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -2063,6 +2134,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -2133,14 +2205,6 @@ "requires": { "gitconfiglocal": "^1.0.0", "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 - } } }, "git-semver-tags": { @@ -2151,6 +2215,14 @@ "requires": { "meow": "^4.0.0", "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } } }, "gitconfiglocal": { @@ -2175,6 +2247,15 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -2263,17 +2344,19 @@ "dev": true }, "hasha": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", - "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.0.0.tgz", + "integrity": "sha512-PqWdhnQhq6tqD32hZv+l1e5mJHNSudjnaAzgAHfkGiU0ABN6lmbZF8abJIulQHbZ7oiHhP8yL6O910ICMc+5pw==", "requires": { - "is-stream": "^1.0.1" + "is-stream": "^1.1.0", + "type-fest": "^0.3.0" } }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true }, "http-signature": { "version": "1.2.0", @@ -2383,12 +2466,23 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } }, "is-callable": { "version": "1.1.4", @@ -2402,6 +2496,12 @@ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "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-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", @@ -2416,6 +2516,21 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -2475,8 +2590,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-utf8": { "version": "0.2.1", @@ -2508,67 +2622,105 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" + "version": "3.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0-alpha.0.tgz", + "integrity": "sha512-7pLWpPpyWvxnzr3wusriL3qmdopuN2f7AElw0bBJ2gjK0X/oJHPBRfhIi5wCSh5JTf+obtw+iRrIEDOyH5gzfQ==" }, "istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "version": "3.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0-alpha.0.tgz", + "integrity": "sha512-H3zNpVJiOt/nNN1XBIsmz/XaArrSNa8WPfRpSktKcxFZUqsOiejkGNDecSOjfuls504H0ggCEf0IUyUPpioPnQ==", "requires": { "append-transform": "^1.0.0" } }, "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "version": "4.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0-alpha.0.tgz", + "integrity": "sha512-yStz3NJNoEDUtIec6pNUGxgFw3BT89U/enrcZmdKy1xvp625x4/338bvxLbZc8jtvOYoZRcH1G6JVC5nYWV+5w==", + "requires": { + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.5", + "@babel/types": "^7.4.4", + "istanbul-lib-coverage": "^3.0.0-alpha.0", + "semver": "^6.1.1" + } + }, + "istanbul-lib-processinfo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-1.0.0.tgz", + "integrity": "sha512-FY0cPmWa4WoQNlvB8VOcafiRoB5nB+l2Pz2xGuXHRSy1KM8QFOYfz/rN+bGMCAeejrY3mrpF5oJHcN0s/garCg==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^6.0.5", + "istanbul-lib-coverage": "^2.0.3", + "rimraf": "^2.6.3", + "uuid": "^3.3.2" }, "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true } } }, "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "version": "3.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0-alpha.0.tgz", + "integrity": "sha512-WF2vFLJ10jeSBpvNOvWcXoZgLxGqHY12ScgRzq0ZiEx7NbbtFIFDgo6JRmhMOXXcgrMvbNp7oERaTGsuzPhtrQ==", "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "^3.0.0-alpha.0", + "make-dir": "^3.0.0", + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.0.0.tgz", + "integrity": "sha512-WRt32iTpYEZWYOpcetGm0NPeSvaebccx7hhS/5M6sAiqnhedtFCHFxkjzZlJvFNCPowiKSFGiZk5USQDFy83vQ==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "version": "4.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0-alpha.0.tgz", + "integrity": "sha512-kSdJnr8fxwAKOf9awN/SB0o5rKc/RI+gdLahWzub0AOu/ScWEgLQ9wFg1PnmlsmoTCZdwkI20V3zD4eRDfUSaA==", "requires": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", + "istanbul-lib-coverage": "^3.0.0-alpha.0", + "make-dir": "^3.0.0", "rimraf": "^2.6.3", "source-map": "^0.6.1" }, @@ -2581,13 +2733,107 @@ } }, "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "version": "3.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0-alpha.1.tgz", + "integrity": "sha512-GOYK4R26EtPuPJ3P+jz812Nx7MqkYwB+cH+I7giDPtYMByxhqgpT9dC33GOh16P0F7nThbxWsT/yelk2DUy96Q==", "requires": { "handlebars": "^4.1.2" } }, + "jackspeak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.0.tgz", + "integrity": "sha512-VDcSunT+wcccoG46FtzuBAyQKlzhHjli4q31e1fIHGOsRspqNUFjVzGb+7eIFDlTvqLygxapDHPHS0ouT2o/tw==", + "dev": true, + "requires": { + "cliui": "^4.1.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 + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^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" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "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 + }, + "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.0" + } + }, + "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.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + } + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2616,7 +2862,8 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "json-schema": { "version": "0.2.3", @@ -2673,6 +2920,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -2694,30 +2942,23 @@ } }, "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "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.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", + "parse-json": "^2.2.0", + "pify": "^2.0.0", "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -2796,12 +3037,11 @@ } }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" } }, "make-error": { @@ -2814,6 +3054,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } @@ -2828,10 +3069,19 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } } }, "meow": { @@ -2860,6 +3110,18 @@ "locate-path": "^2.0.0" } }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -2900,6 +3162,48 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, "read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", @@ -2943,9 +3247,10 @@ } }, "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true }, "minimatch": { "version": "3.0.4", @@ -3036,32 +3341,49 @@ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" }, - "newline-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/newline-regex/-/newline-regex-0.2.1.tgz", - "integrity": "sha1-RpbYaQRe4VCbg6rDpY1Kk7vtkm4=", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, "requires": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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.0" } @@ -3109,6 +3431,313 @@ "uuid": "^3.3.2", "yargs": "^13.2.2", "yargs-parser": "^13.0.0" + }, + "dependencies": { + "caching-transform": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", + "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", + "dev": true, + "requires": { + "hasha": "^3.0.0", + "make-dir": "^2.0.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.4.2" + } + }, + "cp-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", + "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "hasha": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", + "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "dev": true, + "requires": { + "is-stream": "^1.0.1" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", + "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "package-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", + "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } } }, "oauth-sign": { @@ -3144,14 +3773,6 @@ "dev": true, "requires": { "mimic-fn": "^1.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - } } }, "opener": { @@ -3200,6 +3821,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -3230,7 +3852,16 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-event": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.1.0.tgz", + "integrity": "sha512-4vAd06GCsgflX4wHN1JqrMzBh/8QZ4j+rzp0cd2scXRwuBEv+QR3wrVA5aLhWDLw4y2WgDKvzWF3CCLmVM1UgA==", + "requires": { + "p-timeout": "^2.0.1" + } }, "p-finally": { "version": "1.0.0", @@ -3240,7 +3871,8 @@ "p-is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true }, "p-limit": { "version": "2.2.0", @@ -3251,11 +3883,19 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" } }, "p-try": { @@ -3264,12 +3904,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "package-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", - "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "requires": { "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", + "hasha": "^5.0.0", "lodash.flattendeep": "^4.4.0", "release-zalgo": "^1.0.0" } @@ -3281,18 +3921,18 @@ "dev": true }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "error-ex": "^1.2.0" } }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -3308,26 +3948,22 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } + "pify": "^2.0.0" } }, "pathval": { @@ -3342,10 +3978,17 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", + "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "dev": true + }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, "pinkie": { "version": "2.0.4", @@ -3362,6 +4005,15 @@ "pinkie": "^2.0.0" } }, + "pirates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-3.0.2.tgz", + "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, "pkg-conf": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", @@ -3381,6 +4033,18 @@ "locate-path": "^2.0.0" } }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -3414,6 +4078,28 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "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 } } }, @@ -3429,11 +4115,11 @@ } }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } }, "pluralize": { @@ -3449,9 +4135,9 @@ "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { @@ -3477,15 +4163,16 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", - "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==", + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.33.tgz", + "integrity": "sha512-LTDP2uSrsc7XCb5lO7A8BI1qYxRe/8EqlRvMeEl6rsnYAqDOl8xHR+8lSAIVfrNaSAlTPTNOCgNjWcoUL3AZsw==", "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -3522,22 +4209,75 @@ "dev": true }, "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "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": "^4.0.0", + "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "path-type": "^2.0.0" } }, "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "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": "^3.0.0", - "read-pkg": "^3.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, "readable-stream": { @@ -3551,6 +4291,15 @@ "util-deprecate": "^1.0.1" } }, + "readdirp": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.0.2.tgz", + "integrity": "sha512-LbyJYv48eywrhOlScq16H/VkCiGKGPC2TpOdZCJ7QXnYEjn3NN/Oblh8QEU3vqfSRBB7OGvh5x45NKiVeNujIQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, "redent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", @@ -3561,6 +4310,12 @@ "strip-indent": "^2.0.0" } }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", + "dev": true + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", @@ -3650,14 +4405,15 @@ "version": "1.11.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "dev": true, "requires": { "path-parse": "^1.0.6" } }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, "restore-cursor": { "version": "2.0.0", @@ -3712,19 +4468,10 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sanitize-filename": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", - "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", - "dev": true, - "requires": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", + "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==" }, "set-blocking": { "version": "2.0.0", @@ -3735,6 +4482,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -3742,7 +4490,8 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", @@ -3798,6 +4547,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -3806,12 +4556,14 @@ "spdx-exceptions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -3820,7 +4572,8 @@ "spdx-license-ids": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "dev": true }, "split": { "version": "1.0.1", @@ -3942,23 +4695,25 @@ } }, "standard-version": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-5.0.2.tgz", - "integrity": "sha512-vvdWZySinwWU9UZhtgYUGGTkYzqrwYMw3c7CFJ17E7vMbAEqVSui/bm+ZcSukAAU2WmphPTWIKFmn8ni+lk4NA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "conventional-changelog": "^3.0.6", - "conventional-recommended-bump": "^4.0.4", - "detect-indent": "^5.0.0", - "detect-newline": "^2.1.0", - "dotgitignore": "^2.1.0", - "figures": "^2.0.0", - "fs-access": "^1.0.0", - "git-semver-tags": "^2.0.2", - "semver": "^5.2.0", - "stringify-package": "^1.0.0", - "yargs": "^12.0.2" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-6.0.1.tgz", + "integrity": "sha512-+09AwTbyLKyUwefiZSccgarp24okvH9A229NOVSpYTKWcxBxqZqdYmtQaJ8UET9mjPXRxP84vonJU4YMqCyBTQ==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "conventional-changelog": "3.1.8", + "conventional-changelog-config-spec": "1.0.0", + "conventional-recommended-bump": "5.0.0", + "detect-indent": "6.0.0", + "detect-newline": "3.0.0", + "dotgitignore": "2.1.0", + "figures": "3.0.0", + "find-up": "3.0.0", + "fs-access": "1.0.1", + "git-semver-tags": "2.0.2", + "semver": "6.0.0", + "stringify-package": "1.0.0", + "yargs": "13.2.2" }, "dependencies": { "ansi-regex": { @@ -3976,30 +4731,69 @@ "string-width": "^2.1.1", "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "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" + } + } } }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true + "figures": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", + "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -4057,33 +4851,22 @@ } }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", + "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", "dev": true, "requires": { "cliui": "^4.0.0", - "decamelize": "^1.2.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" } } } @@ -4129,7 +4912,8 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-indent": { "version": "2.0.0", @@ -4199,180 +4983,1233 @@ } }, "tap": { - "version": "12.7.0", - "resolved": "https://registry.npmjs.org/tap/-/tap-12.7.0.tgz", - "integrity": "sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==", + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/tap/-/tap-14.2.4.tgz", + "integrity": "sha512-Khe4+Rm0MThQj/t+8p9WwSD9adQDWi8zgry6JJOQrInoQ89lrj5Dgl9XY62/EXhygSeLiSfpj2ZUPGcEuaHdaA==", "dev": true, "requires": { + "async-hook-domain": "^1.1.0", "bind-obj-methods": "^2.0.0", "browser-process-hrtime": "^1.0.0", "capture-stack-trace": "^1.0.0", - "clean-yaml-object": "^0.1.0", + "chokidar": "^3.0.1", "color-support": "^1.1.0", - "coveralls": "^3.0.2", - "domain-browser": "^1.2.0", - "esm": "^3.2.5", + "coveralls": "^3.0.3", + "diff": "^4.0.1", + "esm": "^3.2.25", + "findit": "^2.0.0", + "flow-remove-types": "^2.100.0", "foreground-child": "^1.3.3", "fs-exists-cached": "^1.0.0", - "function-loop": "^1.0.1", - "glob": "^7.1.3", + "function-loop": "^1.0.2", + "glob": "^7.1.4", + "import-jsx": "^2.0.0", + "ink": "*", "isexe": "^2.0.0", - "js-yaml": "^3.13.1", + "istanbul-lib-processinfo": "^1.0.0", + "jackspeak": "^1.4.0", "minipass": "^2.3.5", "mkdirp": "^0.5.1", - "nyc": "^14.0.0", + "nyc": "^14.1.1", "opener": "^1.5.1", - "os-homedir": "^1.0.2", "own-or": "^1.0.0", "own-or-env": "^1.0.1", + "react": "^16.8.6", "rimraf": "^2.6.3", "signal-exit": "^3.0.0", - "source-map-support": "^0.5.10", + "source-map-support": "^0.5.12", "stack-utils": "^1.0.2", - "tap-mocha-reporter": "^3.0.9", - "tap-parser": "^7.0.0", - "tmatch": "^4.0.0", + "tap-mocha-reporter": "^4.0.1", + "tap-parser": "^9.3.2", + "tap-yaml": "^1.0.0", + "tcompare": "^2.3.0", + "treport": "^0.4.0", "trivial-deferred": "^1.0.1", - "ts-node": "^8.0.2", - "tsame": "^2.0.1", - "typescript": "^3.3.3", - "write-file-atomic": "^2.4.2", + "ts-node": "^8.2.0", + "typescript": "^3.5.1", + "which": "^1.3.1", + "write-file-atomic": "^3.0.0", + "yaml": "^1.6.0", "yapool": "^1.0.0" - } - }, - "tap-mocha-reporter": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz", - "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==", - "dev": true, - "requires": { - "color-support": "^1.1.0", - "debug": "^2.1.3", - "diff": "^1.3.2", - "escape-string-regexp": "^1.0.3", - "glob": "^7.0.5", - "js-yaml": "^3.3.1", - "readable-stream": "^2.1.5", - "tap-parser": "^5.1.0", - "unicode-length": "^1.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "@babel/runtime": { + "version": "7.4.5", + "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.2", + "bundled": true, + "dev": true + } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "@types/prop-types": { + "version": "15.7.1", + "bundled": true, "dev": true }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "@types/react": { + "version": "16.8.18", + "bundled": true, "dev": true, - "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@types/prop-types": "*", + "csstype": "^2.2.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "ansi-escapes": { + "version": "3.2.0", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "auto-bind": { + "version": "2.1.0", + "bundled": true, "dev": true, - "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "@types/react": "^16.8.12" } }, - "tap-parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", - "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, "dev": true, "requires": { - "events-to-array": "^1.0.1", - "js-yaml": "^3.2.7", - "readable-stream": "^2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } - } - } - }, - "tap-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz", - "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==", - "dev": true, - "requires": { - "events-to-array": "^1.0.1", - "js-yaml": "^3.2.7", - "minipass": "^2.2.0" - } - }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } - }, - "text-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.0.0.tgz", - "integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", - "dev": true, - "requires": { - "readable-stream": "2 || 3" - } - }, - "tmatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", - "integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" + }, + "babel-core": { + "version": "6.26.3", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + } + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" + } + }, + "babel-helpers": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "bundled": true, + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "bundled": true, + "dev": true + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "caller-callsite": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "cardinal": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "ci-info": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-truncate": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "bundled": true, + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-js": { + "version": "2.6.5", + "bundled": true, + "dev": true + }, + "csstype": { + "version": "2.6.4", + "bundled": true, + "dev": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "bundled": true, + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esprima": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "events-to-array": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "globals": { + "version": "9.18.0", + "bundled": true, + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "import-jsx": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "babel-core": "^6.25.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-plugin-transform-react-jsx": "^6.24.1", + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "ink": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "@types/react": "^16.8.6", + "arrify": "^1.0.1", + "auto-bind": "^2.0.0", + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "cli-truncate": "^1.1.0", + "is-ci": "^2.0.0", + "lodash.throttle": "^4.1.1", + "log-update": "^3.0.0", + "prop-types": "^15.6.2", + "react-reconciler": "^0.20.0", + "scheduler": "^0.13.2", + "signal-exit": "^3.0.2", + "slice-ansi": "^1.0.0", + "string-length": "^2.0.0", + "widest-line": "^2.0.0", + "wrap-ansi": "^5.0.0", + "yoga-layout-prebuilt": "^1.9.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "string-width": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "json5": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "lodash": { + "version": "4.17.11", + "bundled": true, + "dev": true + }, + "lodash.throttle": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "log-update": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "cli-cursor": "^2.1.0", + "wrap-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "string-width": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } + } + }, + "loose-envify": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "onetime": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "private": { + "version": "0.1.8", + "bundled": true, + "dev": true + }, + "prop-types": { + "version": "15.7.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "punycode": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "react": { + "version": "16.8.6", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + } + }, + "react-is": { + "version": "16.8.6", + "bundled": true, + "dev": true + }, + "react-reconciler": { + "version": "0.20.4", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + } + }, + "redeyed": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "esprima": "~4.0.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true, + "dev": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "scheduler": { + "version": "0.13.6", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slash": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-length": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "tap-parser": { + "version": "9.3.2", + "bundled": true, + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "minipass": "^2.2.0", + "tap-yaml": "^1.0.0" + } + }, + "tap-yaml": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "yaml": "^1.5.0" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "treport": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "requires": { + "cardinal": "^2.1.1", + "chalk": "^2.4.2", + "import-jsx": "^2.0.0", + "ink": "^2.1.1", + "ms": "^2.1.1", + "react": "^16.8.6", + "string-length": "^2.0.0", + "tap-parser": "^9.3.2", + "unicode-length": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "unicode-length": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "punycode": "^2.0.0", + "strip-ansi": "^3.0.1" + } + } + } + }, + "trim-right": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "widest-line": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "yaml": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "@babel/runtime": "^7.4.5" + } + }, + "yoga-layout-prebuilt": { + "version": "1.9.3", + "bundled": true, + "dev": true + } + } + }, + "tap-mocha-reporter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-4.0.1.tgz", + "integrity": "sha512-/KfXaaYeSPn8qBi5Be8WSIP3iKV83s2uj2vzImJAXmjNu22kzqZ+1Dv1riYWa53sPCiyo1R1w1jbJrftF8SpcQ==", + "dev": true, + "requires": { + "color-support": "^1.1.0", + "debug": "^2.1.3", + "diff": "^1.3.2", + "escape-string-regexp": "^1.0.3", + "glob": "^7.0.5", + "readable-stream": "^2.1.5", + "tap-parser": "^8.0.0", + "tap-yaml": "0 || 1", + "unicode-length": "^1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "tap-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-8.1.0.tgz", + "integrity": "sha512-GgOzgDwThYLxhVR83RbS1JUR1TxcT+jfZsrETgPAvFdr12lUOnuvrHOBaUQgpkAp6ZyeW6r2Nwd91t88M0ru3w==", + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "minipass": "^2.2.0", + "tap-yaml": "0 || 1" + } + }, + "tap-yaml": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.0.tgz", + "integrity": "sha512-Rxbx4EnrWkYk0/ztcm5u3/VznbyFJpyXO12dDBHKWiDVxy7O2Qw6MRrwO5H6Ww0U5YhRY/4C/VzWmFPhBQc4qQ==", + "dev": true, + "requires": { + "yaml": "^1.5.0" + } + }, + "tcompare": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-2.3.0.tgz", + "integrity": "sha512-fAfA73uFtFGybWGt4+IYT6UPLYVZQ4NfsP+IXEZGY0vh8e2IF7LVKafcQNMRBLqP0wzEA65LM9Tqj+FSmO8GLw==", + "dev": true + }, + "test-exclude": { + "version": "6.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0-alpha.0.tgz", + "integrity": "sha512-FE5W/k1pGBck6UrvxLFAb4/BCqCDaegPnVfzXNf2dfqZcSI9nqRmakF9JXJSLYnvKtJrETL0lygLAlbjOcEzPQ==", + "requires": { + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.0.0.tgz", + "integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + }, + "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" } }, "to-fast-properties": { @@ -4380,6 +6217,15 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -4421,15 +6267,6 @@ "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", "dev": true }, - "truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", - "dev": true, - "requires": { - "utf8-byte-length": "^1.0.1" - } - }, "ts-node": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", @@ -4441,22 +6278,8 @@ "make-error": "^1.1.1", "source-map-support": "^0.5.6", "yn": "^3.0.0" - }, - "dependencies": { - "diff": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", - "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", - "dev": true - } } }, - "tsame": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.1.tgz", - "integrity": "sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -4487,12 +6310,25 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz", @@ -4565,12 +6401,6 @@ "punycode": "^2.1.0" } }, - "utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4586,6 +6416,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -4602,6 +6433,12 @@ "extsprintf": "^1.2.0" } }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -4645,13 +6482,14 @@ } }, "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.0.tgz", + "integrity": "sha512-EIgkf60l2oWsffja2Sf2AL384dx328c0B+cIYPTQq5q2rOYuDV00/iPFBOUiDKKwKMOhkymH8AidPaRvzfxY+Q==", "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "xtend": { @@ -4670,6 +6508,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, + "yaml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.6.0.tgz", + "integrity": "sha512-iZfse3lwrJRoSlfs/9KQ9iIXxs9++RvBFVzAqbbBiFT+giYtyanevreF9r61ZTbGMgWQBxAua3FzJiniiJXWWw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.5" + } + }, "yapool": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", @@ -4677,21 +6524,52 @@ "dev": true }, "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" + "yargs-parser": "^13.1.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } } }, "yargs-parser": { @@ -4708,12 +6586,6 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz", "integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==", "dev": true - }, - "zero-fill": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/zero-fill/-/zero-fill-2.2.3.tgz", - "integrity": "sha1-o97wa6XjmuZEhQu0yirUEStIVek=", - "dev": true } } } diff --git a/package.json b/package.json index 245749a13..694c2a4c5 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "scripts": { "lint": "standard", "pretest": "npm run lint && npm run clean && npm run instrument", - "test": "tap -t360 --no-cov -b test/*.js", - "snap": "cross-env TAP_SNAPSHOT=1 npm test", + "test": "tap", + "snap": "npm test -- --snapshot", "posttest": "npm run report", "clean": "rimraf ./.nyc_output ./node_modules/.cache ./.self_coverage ./test/fixtures/.nyc_output ./test/fixtures/node_modules/.cache ./test/fixtures/cli/foo-cache ./test/temp-dir-* ./self-coverage", "instrument": "node ./build-self-coverage.js", @@ -69,51 +69,46 @@ "license": "ISC", "dependencies": { "archy": "^1.0.0", - "caching-transform": "^3.0.2", + "caching-transform": "^4.0.0", "convert-source-map": "^1.6.0", - "cp-file": "^6.2.0", - "find-cache-dir": "^2.1.0", - "find-up": "^3.0.0", + "cp-file": "^7.0.0", + "find-cache-dir": "^3.0.0", + "find-up": "^4.1.0", "foreground-child": "^1.5.6", - "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", + "glob": "^7.1.4", + "istanbul-lib-coverage": "^3.0.0-alpha.0", + "istanbul-lib-hook": "^3.0.0-alpha.0", + "istanbul-lib-instrument": "^4.0.0-alpha.0", + "istanbul-lib-report": "^3.0.0-alpha.0", + "istanbul-lib-source-maps": "^4.0.0-alpha.0", + "istanbul-reports": "^3.0.0-alpha.1", "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", + "make-dir": "^3.0.0", "merge-source-map": "^1.1.0", - "resolve-from": "^4.0.0", + "resolve-from": "^5.0.0", "rimraf": "^2.6.3", "signal-exit": "^3.0.2", "spawn-wrap": "^1.4.2", - "test-exclude": "^5.2.3", + "test-exclude": "^6.0.0-alpha.0", "uuid": "^3.3.2", - "yargs": "^13.2.2", - "yargs-parser": "^13.0.0" + "yargs": "^13.3.0", + "yargs-parser": "^13.1.1" }, "devDependencies": { "any-path": "^1.3.0", "chai": "^4.2.0", - "coveralls": "^3.0.3", - "cross-env": "^5.2.0", + "coveralls": "^3.0.4", "is-windows": "^1.0.2", "lodash": "^4.17.11", - "newline-regex": "^0.2.1", - "pify": "^4.0.1", "requirejs": "^2.3.6", - "sanitize-filename": "^1.6.1", "source-map-support": "^0.5.12", "standard": "^12.0.1", - "standard-version": "^5.0.2", - "tap": "^12.6.5", - "which": "^1.3.1", - "zero-fill": "^2.2.3" + "standard-version": "^6.0.1", + "tap": "^14.2.4", + "which": "^1.3.1" }, "engines": { - "node": ">=6" + "node": ">=8" }, "repository": { "type": "git", diff --git a/tap-snapshots/test-config-override.js-TAP.test.js b/tap-snapshots/test-config-override.js-TAP.test.js index 63ff6ff35..33564b401 100644 --- a/tap-snapshots/test-config-override.js-TAP.test.js +++ b/tap-snapshots/test-config-override.js-TAP.test.js @@ -9,12 +9,12 @@ exports[`test/config-override.js TAP spawn that does config overriding > stdout in parent { include: 'conf-override-root.js' } in child { include: 'conf-override-module.js' } in module { include: 'conf-override-module.js' } --------------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | --------------------------|----------|----------|----------|----------|-------------------| -All files | 77.78 | 50 | 100 | 77.78 | | - conf-override-module.js | 100 | 100 | 100 | 100 | | - conf-override-root.js | 71.43 | 50 | 100 | 71.43 | 22,23 | --------------------------|----------|----------|----------|----------|-------------------| +-------------------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-------------------------|---------|----------|---------|---------|------------------- +All files | 77.78 | 50 | 100 | 77.78 | + conf-override-module.js | 100 | 100 | 100 | 100 | + conf-override-root.js | 71.43 | 50 | 100 | 71.43 | 22,23 +-------------------------|---------|----------|---------|---------|------------------- ` diff --git a/tap-snapshots/test-nyc-integration.js-TAP.test.js b/tap-snapshots/test-nyc-integration.js-TAP.test.js index 9a88c8159..ffe6bfc8b 100644 --- a/tap-snapshots/test-nyc-integration.js-TAP.test.js +++ b/tap-snapshots/test-nyc-integration.js-TAP.test.js @@ -6,23 +6,23 @@ */ 'use strict' exports[`test/nyc-integration.js TAP --all includes files with both .map files and inline source-maps > stdout 1`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 44.44 | 100 | 33.33 | 44.44 | | - s1.js | 80 | 100 | 50 | 80 | 7 | - s2.js | 0 | 100 | 0 | 0 | 1,2,4,6 | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 44.44 | 100 | 33.33 | 44.44 | + s1.js | 80 | 100 | 50 | 80 | 7 + s2.js | 0 | 100 | 0 | 0 | 1,2,4,6 +----------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP --all uses source-maps to exclude original sources from reports > stdout 1`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 0 | 100 | 0 | 0 | | - s2.js | 0 | 100 | 0 | 0 | 1,2,4,6 | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 0 | 100 | 0 | 0 | + s2.js | 0 | 100 | 0 | 0 | 1,2,4,6 +----------|---------|----------|---------|---------|------------------- ` @@ -32,12 +32,12 @@ ERROR: Coverage for lines (33.33%) does not meet global threshold (49%) ` exports[`test/nyc-integration.js TAP --check-coverage fails in any case when the underlying test failed > stdout 1`] = ` --------------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | --------------------------|----------|----------|----------|----------|-------------------| -All files | 33.33 | 0 | 100 | 33.33 | | - half-covered-failing.js | 33.33 | 0 | 100 | 33.33 | 5,6,7,8 | --------------------------|----------|----------|----------|----------|-------------------| +-------------------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-------------------------|---------|----------|---------|---------|------------------- +All files | 33.33 | 0 | 100 | 33.33 | + half-covered-failing.js | 33.33 | 0 | 100 | 33.33 | 5,6,7,8 +-------------------------|---------|----------|---------|---------|------------------- ` @@ -47,12 +47,12 @@ ERROR: Coverage for lines (50%) does not meet global threshold (51%) ` exports[`test/nyc-integration.js TAP --check-coverage fails when the expected coverage is below a threshold > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` @@ -62,128 +62,128 @@ ERROR: Coverage for lines (50%) does not meet threshold (51%) for ./half-covered ` exports[`test/nyc-integration.js TAP --check-coverage fails when the expected file coverage is below a threshold > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP --check-coverage succeeds when the expected coverage is above a threshold > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP --exclude should allow default exclude rules to be overridden > stdout 1`] = ` ----------------------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------------------------------|----------|----------|----------|----------|-------------------| -All files | 0 | 0 | 0 | 0 | | - cli | 0 | 0 | 0 | 0 | | - args.js | 0 | 100 | 100 | 0 | 1 | - by-arg2.js | 0 | 0 | 100 | 0 | 1,2,3,4,5,7 | - classes.js | 0 | 100 | 0 | 0 | 5,6,11,15 | - conf-override-module.js | 0 | 100 | 100 | 0 | 1,2 | - conf-override-root.js | 0 | 0 | 100 | 0 | 1,2,4,5,6,22,23 | - empty.js | 0 | 0 | 0 | 0 | | - env.js | 0 | 100 | 100 | 0 | 1 | - es6.js | 0 | 100 | 0 | 0 |... 11,16,17,22,23 | - external-instrumenter.js | 0 | 0 | 0 | 0 | 1 | - gc.js | 0 | 100 | 100 | 0 | 2,3 | - half-covered-failing.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 | - selfspawn-fibonacci.js | 0 | 0 | 0 | 0 |... 24,25,26,27,28 | - skip-full.js | 0 | 100 | 100 | 0 | 1,2 | - test.js | 0 | 0 | 0 | 0 | | - cli/fakebin | 0 | 100 | 100 | 0 | | - npm-template.js | 0 | 100 | 100 | 0 | 2,3,4,7,9 | - cli/nyc-config-js | 0 | 0 | 100 | 0 | | - ignore.js | 0 | 100 | 100 | 0 | 1 | - index.js | 0 | 0 | 100 | 0 | 1,3,5,7,8,9,10 | - nyc.config.js | 0 | 100 | 100 | 0 | 1 | - nycrc-config.js | 0 | 100 | 100 | 0 | 1 | - cli/nycrc | 0 | 0 | 100 | 0 | | - ignore.js | 0 | 100 | 100 | 0 | 1 | - index.js | 0 | 0 | 100 | 0 | 1,3,5,7,8,9,10 | - cli/subdir/input-dir | 0 | 100 | 100 | 0 | | - index.js | 0 | 100 | 100 | 0 | 2 | - cli/subdir/input-dir/exclude-me | 0 | 100 | 100 | 0 | | - index.js | 0 | 100 | 100 | 0 | 2 | - cli/subdir/input-dir/include-me | 0 | 100 | 100 | 0 | | - exclude-me.js | 0 | 100 | 100 | 0 | 2 | - include-me.js | 0 | 100 | 100 | 0 | 2 | ----------------------------------|----------|----------|----------|----------|-------------------| +---------------------------------|---------|----------|---------|---------|------------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +---------------------------------|---------|----------|---------|---------|------------------------- +All files | 0 | 0 | 0 | 0 | + cli | 0 | 0 | 0 | 0 | + args.js | 0 | 100 | 100 | 0 | 1 + by-arg2.js | 0 | 0 | 100 | 0 | 1,2,3,4,5,7 + classes.js | 0 | 100 | 0 | 0 | 5,6,11,15 + conf-override-module.js | 0 | 100 | 100 | 0 | 1,2 + conf-override-root.js | 0 | 0 | 100 | 0 | 1,2,4,5,6,22,23 + empty.js | 0 | 0 | 0 | 0 | + env.js | 0 | 100 | 100 | 0 | 1 + es6.js | 0 | 100 | 0 | 0 | 5,9,10,11,16,17,22,23 + external-instrumenter.js | 0 | 0 | 0 | 0 | 1 + gc.js | 0 | 100 | 100 | 0 | 2,3 + half-covered-failing.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 + selfspawn-fibonacci.js | 0 | 0 | 0 | 0 | ...19,21,24,25,26,27,28 + skip-full.js | 0 | 100 | 100 | 0 | 1,2 + test.js | 0 | 0 | 0 | 0 | + cli/fakebin | 0 | 100 | 100 | 0 | + npm-template.js | 0 | 100 | 100 | 0 | 2,3,4,7,9 + cli/nyc-config-js | 0 | 0 | 100 | 0 | + ignore.js | 0 | 100 | 100 | 0 | 1 + index.js | 0 | 0 | 100 | 0 | 1,3,5,7,8,9,10 + nyc.config.js | 0 | 100 | 100 | 0 | 1 + nycrc-config.js | 0 | 100 | 100 | 0 | 1 + cli/nycrc | 0 | 0 | 100 | 0 | + ignore.js | 0 | 100 | 100 | 0 | 1 + index.js | 0 | 0 | 100 | 0 | 1,3,5,7,8,9,10 + cli/subdir/input-dir | 0 | 100 | 100 | 0 | + index.js | 0 | 100 | 100 | 0 | 2 + cli/subdir/input-dir/exclude-me | 0 | 100 | 100 | 0 | + index.js | 0 | 100 | 100 | 0 | 2 + cli/subdir/input-dir/include-me | 0 | 100 | 100 | 0 | + exclude-me.js | 0 | 100 | 100 | 0 | 2 + include-me.js | 0 | 100 | 100 | 0 | 2 +---------------------------------|---------|----------|---------|---------|------------------------- ` exports[`test/nyc-integration.js TAP --ignore-class-method skips methods that match ignored name but still catches those that are not > stdout 1`] = ` ----------------------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------------------------------|----------|----------|----------|----------|-------------------| -All files | 1.5 | 0 | 5.56 | 1.96 | | - cli | 2.11 | 0 | 5.56 | 3.13 | | - args.js | 0 | 100 | 100 | 0 | 1 | - by-arg2.js | 0 | 0 | 100 | 0 | 1,2,3,4,5,7 | - classes.js | 66.67 | 100 | 50 | 66.67 | 6 | - conf-override-module.js | 0 | 100 | 100 | 0 | 1,2 | - conf-override-root.js | 0 | 0 | 100 | 0 | 1,2,4,5,6,22,23 | - empty.js | 0 | 0 | 0 | 0 | | - env.js | 0 | 100 | 100 | 0 | 1 | - es6.js | 0 | 100 | 0 | 0 |... 11,16,17,22,23 | - external-instrumenter.js | 0 | 0 | 0 | 0 | 1 | - gc.js | 0 | 100 | 100 | 0 | 2,3 | - half-covered-failing.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 | - half-covered.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 | - selfspawn-fibonacci.js | 0 | 0 | 0 | 0 |... 24,25,26,27,28 | - skip-full.js | 0 | 100 | 100 | 0 | 1,2 | - cli/fakebin | 0 | 100 | 100 | 0 | | - npm-template.js | 0 | 100 | 100 | 0 | 2,3,4,7,9 | - cli/nyc-config-js | 0 | 0 | 100 | 0 | | - ignore.js | 0 | 100 | 100 | 0 | 1 | - index.js | 0 | 0 | 100 | 0 | 1,3,5,7,8,9,10 | - nycrc-config.js | 0 | 100 | 100 | 0 | 1 | - cli/nycrc | 0 | 0 | 100 | 0 | | - ignore.js | 0 | 100 | 100 | 0 | 1 | - index.js | 0 | 0 | 100 | 0 | 1,3,5,7,8,9,10 | - cli/run-npm-test | 0 | 0 | 100 | 0 | | - half-covered.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 | - cli/run-npm-test-recursive | 0 | 0 | 100 | 0 | | - half-covered.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 | - cli/subdir/input-dir | 0 | 100 | 100 | 0 | | - index.js | 0 | 100 | 100 | 0 | 2 | - cli/subdir/input-dir/exclude-me | 0 | 100 | 100 | 0 | | - index.js | 0 | 100 | 100 | 0 | 2 | - cli/subdir/input-dir/include-me | 0 | 100 | 100 | 0 | | - exclude-me.js | 0 | 100 | 100 | 0 | 2 | - include-me.js | 0 | 100 | 100 | 0 | 2 | ----------------------------------|----------|----------|----------|----------|-------------------| +---------------------------------|---------|----------|---------|---------|------------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +---------------------------------|---------|----------|---------|---------|------------------------- +All files | 1.49 | 0 | 5.56 | 1.96 | + cli | 2.08 | 0 | 5.56 | 3.13 | + args.js | 0 | 100 | 100 | 0 | 1 + by-arg2.js | 0 | 0 | 100 | 0 | 1,2,3,4,5,7 + classes.js | 66.67 | 100 | 50 | 66.67 | 6 + conf-override-module.js | 0 | 100 | 100 | 0 | 1,2 + conf-override-root.js | 0 | 0 | 100 | 0 | 1,2,4,5,6,22,23 + empty.js | 0 | 0 | 0 | 0 | + env.js | 0 | 100 | 100 | 0 | 1 + es6.js | 0 | 100 | 0 | 0 | 5,9,10,11,16,17,22,23 + external-instrumenter.js | 0 | 0 | 0 | 0 | 1 + gc.js | 0 | 100 | 100 | 0 | 2,3 + half-covered-failing.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 + half-covered.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 + selfspawn-fibonacci.js | 0 | 0 | 0 | 0 | ...19,21,24,25,26,27,28 + skip-full.js | 0 | 100 | 100 | 0 | 1,2 + cli/fakebin | 0 | 100 | 100 | 0 | + npm-template.js | 0 | 100 | 100 | 0 | 2,3,4,7,9 + cli/nyc-config-js | 0 | 0 | 100 | 0 | + ignore.js | 0 | 100 | 100 | 0 | 1 + index.js | 0 | 0 | 100 | 0 | 1,3,5,7,8,9,10 + nycrc-config.js | 0 | 100 | 100 | 0 | 1 + cli/nycrc | 0 | 0 | 100 | 0 | + ignore.js | 0 | 100 | 100 | 0 | 1 + index.js | 0 | 0 | 100 | 0 | 1,3,5,7,8,9,10 + cli/run-npm-test | 0 | 0 | 100 | 0 | + half-covered.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 + cli/run-npm-test-recursive | 0 | 0 | 100 | 0 | + half-covered.js | 0 | 0 | 100 | 0 | 1,3,5,6,7,8 + cli/subdir/input-dir | 0 | 100 | 100 | 0 | + index.js | 0 | 100 | 100 | 0 | 2 + cli/subdir/input-dir/exclude-me | 0 | 100 | 100 | 0 | + index.js | 0 | 100 | 100 | 0 | 2 + cli/subdir/input-dir/include-me | 0 | 100 | 100 | 0 | + exclude-me.js | 0 | 100 | 100 | 0 | 2 + include-me.js | 0 | 100 | 100 | 0 | 2 +---------------------------------|---------|----------|---------|---------|------------------------- ` exports[`test/nyc-integration.js TAP --include can be used to limit bin to instrumenting specific files > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP --show-process-tree displays a tree of spawned processes > stdout 1`] = ` 3 -------------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -------------------------|----------|----------|----------|----------|-------------------| -All files | 90.91 | 70 | 100 | 100 | | - selfspawn-fibonacci.js | 90.91 | 70 | 100 | 100 | 4,25,27 | -------------------------|----------|----------|----------|----------|-------------------| +------------------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +------------------------|---------|----------|---------|---------|------------------- +All files | 90.91 | 70 | 100 | 100 | + selfspawn-fibonacci.js | 90.91 | 70 | 100 | 100 | 4,25,27 +------------------------|---------|----------|---------|---------|------------------- nyc └─┬ node ./selfspawn-fibonacci.js 5 │ 100 % Lines @@ -240,22 +240,22 @@ end_of_record ` exports[`test/nyc-integration.js TAP allows alternative high and low watermarks to be configured > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files  | 50 | 50 | 100 | 50 |  | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files  |  50 |  50 |  100 |  50 |   + half-covered.js |  50 |  50 |  100 |  50 | 6,7,8  +-----------------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP allows an alternative cache folder to be specified > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` @@ -333,32 +333,32 @@ end_of_record ` exports[`test/nyc-integration.js TAP allows reserved word when es-modules is disabled > stdout 1`] = ` ----------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------------|----------|----------|----------|----------|-------------------| -All files | 100 | 100 | 100 | 100 | | - not-strict.js | 100 | 100 | 100 | 100 | | ----------------|----------|----------|----------|----------|-------------------| +---------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +---------------|---------|----------|---------|---------|------------------- +All files | 100 | 100 | 100 | 100 | + not-strict.js | 100 | 100 | 100 | 100 | +---------------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP appropriately instruments file with corresponding .map file > stdout 1`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 80 | 100 | 50 | 80 | | - s1.js | 80 | 100 | 50 | 80 | 7 | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 80 | 100 | 50 | 80 | + s1.js | 80 | 100 | 50 | 80 | 7 +----------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP appropriately instruments file with inline source-map > stdout 1`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 100 | 100 | 100 | 100 | | - s2.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 100 | 100 | 100 | 100 | + s2.js | 100 | 100 | 100 | 100 | +----------|---------|----------|---------|---------|------------------- ` @@ -367,12 +367,12 @@ exports[`test/nyc-integration.js TAP can run "npm test" which directly invokes a > @ test . > node ./half-covered.js ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` @@ -389,12 +389,12 @@ exports[`test/nyc-integration.js TAP can run "npm test" which indirectly invokes > @ test:even-deeper . > node ./half-covered.js ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` @@ -404,12 +404,12 @@ ERROR: Coverage for lines (50%) does not meet global threshold (51%) ` exports[`test/nyc-integration.js TAP check-coverage command is equivalent to the flag > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` @@ -418,17 +418,20 @@ exports[`test/nyc-integration.js TAP check-coverage command is equivalent to the ` exports[`test/nyc-integration.js TAP does not create .cache folder if cache is "false" > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` -exports[`test/nyc-integration.js TAP does not interpret args intended for instrumented bin > undefined 1`] = ` -[ '--help', '--version' ] +exports[`test/nyc-integration.js TAP does not interpret args intended for instrumented bin > must match snapshot 1`] = ` +Array [ + "--help", + "--version", +] ` exports[`test/nyc-integration.js TAP execute with exclude-node-modules=false > stderr 1`] = ` @@ -447,22 +450,22 @@ ERROR: Coverage for lines (0%) does not meet threshold (90%) for ./node_modules/ ` exports[`test/nyc-integration.js TAP execute with exclude-node-modules=false > stdout 1`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 0 | 100 | 100 | 0 | | - index.js | 0 | 100 | 100 | 0 | 1 | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 0 | 100 | 100 | 0 | + index.js | 0 | 100 | 100 | 0 | 1 +----------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP execute with exclude-node-modules=false > stdout 2`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 0 | 100 | 100 | 0 | | - index.js | 0 | 100 | 100 | 0 | 1 | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 0 | 100 | 100 | 0 | + index.js | 0 | 100 | 100 | 0 | 1 +----------|---------|----------|---------|---------|------------------- ` @@ -470,7 +473,7 @@ exports[`test/nyc-integration.js TAP execute with exclude-node-modules=false > s ` -exports[`test/nyc-integration.js TAP extracts coverage headers from unexecuted files > undefined 1`] = ` +exports[`test/nyc-integration.js TAP extracts coverage headers from unexecuted files > must match snapshot 1`] = ` [ [ "all", @@ -501,55 +504,55 @@ Failed to instrument ./not-strict.js ` exports[`test/nyc-integration.js TAP forbids reserved word when es-modules is not disabled > stdout 1`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 0 | 0 | 0 | 0 | | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 0 | 0 | 0 | 0 | +----------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP handles --clean / --no-clean properly > stdout 1`] = ` 1 -------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -------------|----------|----------|----------|----------|-------------------| -All files | 50 | 25 | 100 | 50 | | - by-arg2.js | 50 | 25 | 100 | 50 | 4,5,7 | -------------|----------|----------|----------|----------|-------------------| +------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +------------|---------|----------|---------|---------|------------------- +All files | 50 | 25 | 100 | 50 | + by-arg2.js | 50 | 25 | 100 | 50 | 4,5,7 +------------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP handles --clean / --no-clean properly > stdout 2`] = ` 2 -------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -------------|----------|----------|----------|----------|-------------------| -All files | 83.33 | 75 | 100 | 83.33 | | - by-arg2.js | 83.33 | 75 | 100 | 83.33 | 7 | -------------|----------|----------|----------|----------|-------------------| +------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +------------|---------|----------|---------|---------|------------------- +All files | 83.33 | 75 | 100 | 83.33 | + by-arg2.js | 83.33 | 75 | 100 | 83.33 | 7 +------------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP hooks provide coverage for requireJS and AMD modules > stdout 1`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 100 | 100 | 100 | 100 | | - ipsum.js | 100 | 100 | 100 | 100 | | - lorem.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 100 | 100 | 100 | 100 | + ipsum.js | 100 | 100 | 100 | 100 | + lorem.js | 100 | 100 | 100 | 100 | +----------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP interprets first args after -- as Node.js execArgv > stdout 1`] = ` I’m still running -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 100 | 100 | 100 | 100 | | - gc.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 100 | 100 | 100 | 100 | + gc.js | 100 | 100 | 100 | 100 | +----------|---------|----------|---------|---------|------------------- ` @@ -752,7 +755,7 @@ exports[`test/nyc-integration.js TAP nyc instrument fails on file with \`package ` -exports[`test/nyc-integration.js TAP passes configuration via environment variables > undefined 1`] = ` +exports[`test/nyc-integration.js TAP passes configuration via environment variables > must match snapshot 1`] = ` [ [ "cache", @@ -803,28 +806,28 @@ exports[`test/nyc-integration.js TAP report and check should show coverage check ` exports[`test/nyc-integration.js TAP report and check should show coverage check along with report > stdout 2`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 50 | 50 | 100 | 50 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 50 | 50 | 100 | 50 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP reports appropriate coverage information for es6 source files > stdout 1`] = ` sup do not hit -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -All files | 62.5 | 100 | 40 | 62.5 | | - es6.js | 62.5 | 100 | 40 | 62.5 | 11,16,17 | -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 62.5 | 100 | 40 | 62.5 | + es6.js | 62.5 | 100 | 40 | 62.5 | 11,16,17 +----------|---------|----------|---------|---------|------------------- ` -exports[`test/nyc-integration.js TAP setting instrument to "false" configures noop instrumenter > undefined 1`] = ` +exports[`test/nyc-integration.js TAP setting instrument to "false" configures noop instrumenter > must match snapshot 1`] = ` [ [ "instrument", @@ -846,19 +849,19 @@ exports[`test/nyc-integration.js TAP setting instrument to "false" configures no ` exports[`test/nyc-integration.js TAP skip-empty does not display 0-line files > stdout 1`] = ` -----------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| -----------|----------|----------|----------|----------|-------------------| +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +----------|---------|----------|---------|---------|------------------- ` exports[`test/nyc-integration.js TAP skip-full does not display files with 100% statement, branch, and function coverage > stdout 1`] = ` ------------------|----------|----------|----------|----------|-------------------| -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------------|----------|----------|----------|----------|-------------------| -All files | 62.5 | 50 | 100 | 62.5 | | - half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 | ------------------|----------|----------|----------|----------|-------------------| +-----------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|------------------- +All files | 62.5 | 50 | 100 | 62.5 | + half-covered.js | 50 | 50 | 100 | 50 | 6,7,8 +-----------------|---------|----------|---------|---------|------------------- ` diff --git a/test/fixtures/cli/external-instrumenter.js b/test/fixtures/cli/external-instrumenter.js index 9c39db6e3..774472a3d 100644 --- a/test/fixtures/cli/external-instrumenter.js +++ b/test/fixtures/cli/external-instrumenter.js @@ -1 +1 @@ -'use strict';var cov_2lihypprau=function(){var path='./external-instrumenter.js',hash='94882d734989e453feb86be8e04d02c7d53a37db',global=new Function('return this')(),gcv='__coverage__',coverageData={path:'./external-instrumenter.js',statementMap:{'0':{start:{line:5,column:4},end:{line:5,column:22}},'1':{start:{line:9,column:4},end:{line:9,column:29}},'2':{start:{line:10,column:15},end:{line:12,column:5}},'3':{start:{line:11,column:6},end:{line:11,column:31}},'4':{start:{line:16,column:15},end:{line:18,column:5}},'5':{start:{line:17,column:6},end:{line:17,column:31}},'6':{start:{line:22,column:8},end:{line:22,column:20}},'7':{start:{line:23,column:0},end:{line:23,column:7}}},fnMap:{'0':{name:'(anonymous_0)',decl:{start:{line:4,column:2},end:{line:4,column:3}},loc:{start:{line:4,column:16},end:{line:6,column:3}}},'1':{name:'(anonymous_1)',decl:{start:{line:8,column:2},end:{line:8,column:3}},loc:{start:{line:8,column:8},end:{line:13,column:3}}},'2':{name:'(anonymous_2)',decl:{start:{line:10,column:15},end:{line:10,column:16}},loc:{start:{line:10,column:21},end:{line:12,column:5}}},'3':{name:'(anonymous_3)',decl:{start:{line:15,column:2},end:{line:15,column:3}},loc:{start:{line:15,column:9},end:{line:19,column:3}}},'4':{name:'(anonymous_4)',decl:{start:{line:16,column:15},end:{line:16,column:16}},loc:{start:{line:16,column:21},end:{line:18,column:5}}}},branchMap:{},s:{'0':0,'1':0,'2':0,'3':0,'4':0,'5':0,'6':0,'7':0},f:{'0':0,'1':0,'2':0,'3':0,'4':0},b:{},_coverageSchema:'43e27e138ebf9cfc5966b082cf9a028302ed4184'},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();class Yarsay{constructor(){++cov_2lihypprau.f[0];++cov_2lihypprau.s[0];console.log('sup');}hit(){++cov_2lihypprau.f[1];++cov_2lihypprau.s[1];console.log('do not hit');let miss=(++cov_2lihypprau.s[2],()=>{++cov_2lihypprau.f[2];++cov_2lihypprau.s[3];console.log('do not hit');});}miss(){++cov_2lihypprau.f[3];let miss=(++cov_2lihypprau.s[4],()=>{++cov_2lihypprau.f[4];++cov_2lihypprau.s[5];console.log('do not hit');});}}let y=(++cov_2lihypprau.s[6],new Yarsay());++cov_2lihypprau.s[7];y.hit(); +'use strict';var cov_4mo0jj89z=function(){var path="./external-instrumenter.js";var hash="258f33c73dcdfdb232fbc4b001a43ae5dc7da182";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"./external-instrumenter.js",statementMap:{"0":{start:{line:5,column:4},end:{line:5,column:22}},"1":{start:{line:9,column:4},end:{line:9,column:29}},"2":{start:{line:10,column:15},end:{line:12,column:5}},"3":{start:{line:11,column:6},end:{line:11,column:31}},"4":{start:{line:16,column:15},end:{line:18,column:5}},"5":{start:{line:17,column:6},end:{line:17,column:31}},"6":{start:{line:22,column:8},end:{line:22,column:20}},"7":{start:{line:23,column:0},end:{line:23,column:7}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:4,column:2},end:{line:4,column:3}},loc:{start:{line:4,column:16},end:{line:6,column:3}},line:4},"1":{name:"(anonymous_1)",decl:{start:{line:8,column:2},end:{line:8,column:3}},loc:{start:{line:8,column:8},end:{line:13,column:3}},line:8},"2":{name:"(anonymous_2)",decl:{start:{line:10,column:15},end:{line:10,column:16}},loc:{start:{line:10,column:21},end:{line:12,column:5}},line:10},"3":{name:"(anonymous_3)",decl:{start:{line:15,column:2},end:{line:15,column:3}},loc:{start:{line:15,column:9},end:{line:19,column:3}},line:15},"4":{name:"(anonymous_4)",decl:{start:{line:16,column:15},end:{line:16,column:16}},loc:{start:{line:16,column:21},end:{line:18,column:5}},line:16}},branchMap:{},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0},b:{},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"258f33c73dcdfdb232fbc4b001a43ae5dc7da182"};var coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}return coverage[path]=coverageData;}();class Yarsay{constructor(){cov_4mo0jj89z.f[0]++;cov_4mo0jj89z.s[0]++;console.log('sup');}hit(){cov_4mo0jj89z.f[1]++;cov_4mo0jj89z.s[1]++;console.log('do not hit');cov_4mo0jj89z.s[2]++;let miss=()=>{cov_4mo0jj89z.f[2]++;cov_4mo0jj89z.s[3]++;console.log('do not hit');};}miss(){cov_4mo0jj89z.f[3]++;cov_4mo0jj89z.s[4]++;let miss=()=>{cov_4mo0jj89z.f[4]++;cov_4mo0jj89z.s[5]++;console.log('do not hit');};}}let y=(cov_4mo0jj89z.s[6]++,new Yarsay());cov_4mo0jj89z.s[7]++;y.hit(); diff --git a/test/helpers/env-check-config.js b/test/helpers/env-check-config.js index 23d4c4f1a..150dd340e 100644 --- a/test/helpers/env-check-config.js +++ b/test/helpers/env-check-config.js @@ -2,8 +2,8 @@ const runNYC = require('./run-nyc') -module.exports = function envCheckConfig (t, { configArgs, checkOptions }) { - return runNYC({ +async function envCheckConfig (t, { configArgs, checkOptions }) { + const { stdout, stderr, status } = await runNYC({ tempDir: t.tempDir, leavePathSep: true, args: [ @@ -11,17 +11,19 @@ module.exports = function envCheckConfig (t, { configArgs, checkOptions }) { process.execPath, './env.js' ] - }).then(({ stdout, stderr, status }) => { - const config = JSON.parse(JSON.parse(stdout).NYC_CONFIG) + }) + + const config = JSON.parse(JSON.parse(stdout).NYC_CONFIG) - t.is(status, 0) - t.is(stderr, '') - t.matchSnapshot( - JSON.stringify( - checkOptions.sort().map(option => [option, config[option]]), - null, - 2 - ) + t.is(status, 0) + t.is(stderr, '') + t.matchSnapshot( + JSON.stringify( + checkOptions.sort().map(option => [option, config[option]]), + null, + 2 ) - }) + ) } + +module.exports = envCheckConfig diff --git a/test/helpers/run-nyc.js b/test/helpers/run-nyc.js index 716ed3f0e..7cb002b65 100644 --- a/test/helpers/run-nyc.js +++ b/test/helpers/run-nyc.js @@ -25,12 +25,17 @@ function sanitizeString (str, cwd, leavePathSep) { return str } -function runNYC ({ args, tempDir, leavePathSep, cwd = fixturesCLI, env = {} }) { +async function runNYC ({ args, tempDir, leavePathSep, cwd = fixturesCLI, env = {} }) { const runArgs = [nycBin].concat(tempDir ? ['--temp-dir', tempDir] : [], args) - return spawn(process.execPath, runArgs, { + const { status, stderr, stdout } = await spawn(process.execPath, runArgs, { cwd: cwd, - env: Object.assign({}, envPath, env) - }).then(({ status, stderr, stdout }) => ({ + env: { + ...envPath, + ...env + } + }) + + return { status, originalText: { stderr, @@ -38,7 +43,7 @@ function runNYC ({ args, tempDir, leavePathSep, cwd = fixturesCLI, env = {} }) { }, stderr: sanitizeString(stderr, cwd, leavePathSep), stdout: sanitizeString(stdout, cwd, leavePathSep) - })) + } } module.exports = runNYC diff --git a/test/helpers/temp-dir-setup.js b/test/helpers/temp-dir-setup.js index bb9beceb1..df61807e1 100644 --- a/test/helpers/temp-dir-setup.js +++ b/test/helpers/temp-dir-setup.js @@ -4,10 +4,10 @@ const path = require('path') const fs = require('fs') const makeDir = require('make-dir') const _rimraf = require('rimraf') -const pify = require('pify') +const { promisify } = require('util') -const rimraf = pify(_rimraf) -const mkdtemp = pify(fs.mkdtemp) +const rimraf = promisify(_rimraf) +const mkdtemp = promisify(fs.mkdtemp) function tempDirSetup (t, testFile) { const { dir, name } = path.parse(testFile) @@ -17,10 +17,8 @@ function tempDirSetup (t, testFile) { // Do not use arrow function for beforeEach // or afterEach, they need this from tap. - t.beforeEach(function () { - return mkdtemp(tempDirBase + '/').then(tempDir => { - this.tempDir = tempDir - }) + t.beforeEach(async function () { + this.tempDir = await mkdtemp(tempDirBase + '/') }) t.afterEach(function () { diff --git a/test/helpers/test-failure.js b/test/helpers/test-failure.js index 7d891d24c..e99ecc566 100644 --- a/test/helpers/test-failure.js +++ b/test/helpers/test-failure.js @@ -2,13 +2,15 @@ const runNYC = require('./run-nyc') -function testFailure (t, opts) { - opts.tempDir = t.tempDir - return runNYC(opts).then(({ status, stderr, stdout }) => { - t.equal(status, 1) - t.matchSnapshot(stderr, 'stderr') - t.matchSnapshot(stdout, 'stdout') +async function testFailure (t, opts) { + const { status, stderr, stdout } = await runNYC({ + tempDir: t.tempDir, + ...opts }) + + t.equal(status, 1) + t.matchSnapshot(stderr, 'stderr') + t.matchSnapshot(stdout, 'stdout') } module.exports = testFailure diff --git a/test/helpers/test-success.js b/test/helpers/test-success.js index 90abbf724..0841cbc3d 100644 --- a/test/helpers/test-success.js +++ b/test/helpers/test-success.js @@ -2,13 +2,15 @@ const runNYC = require('./run-nyc') -function testSuccess (t, opts) { - opts.tempDir = t.tempDir - return runNYC(opts).then(({ status, stderr, stdout }) => { - t.equal(status, 0) - t.equal(stderr, '') - t.matchSnapshot(stdout, 'stdout') +async function testSuccess (t, opts) { + const { status, stderr, stdout } = await runNYC({ + tempDir: t.tempDir, + ...opts }) + + t.equal(status, 0) + t.equal(stderr, '') + t.matchSnapshot(stdout, 'stdout') } module.exports = testSuccess diff --git a/test/nyc-index.js b/test/nyc-index.js index 2b7fb1805..40fefd096 100644 --- a/test/nyc-index.js +++ b/test/nyc-index.js @@ -88,72 +88,6 @@ describe('nyc', function () { }) }) - describe('shouldInstrumentFile', function () { - it('should exclude appropriately with defaults', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd').parse([ - '--exclude=test/**', - '--exclude=test{,-*}.js', - '--exclude=**/*.test.js', - '--exclude=**/__tests__/**' - ])) - - // nyc always excludes "node_modules/**" - nyc.exclude.shouldInstrument('/cwd/foo.js', 'foo.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/node_modules/bar.js', 'node_modules/bar.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/node_modules/bar.js', 'foo/node_modules/bar.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/test.js', 'test.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/testfoo.js', 'testfoo.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/test-foo.js', 'test-foo.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/lib/test.js', 'lib/test.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/foo/bar/test.js', './test.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/bar/test.js', '.\\test.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/bar/foo.test.js', './foo.test.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/bar/__tests__/foo.js', './__tests__/foo.js').should.equal(false) - }) - - it('should exclude appropriately with config.exclude', function () { - var nyc = new NYC(configUtil.buildYargs(fixtures).parse()) - - // fixtures/package.json configures excludes: "blarg", "blerg" - nyc.exclude.shouldInstrument('blarg.js', 'blarg.js').should.equal(false) - nyc.exclude.shouldInstrument('blarg/foo.js', 'blarg/foo.js').should.equal(false) - nyc.exclude.shouldInstrument('blerg.js', 'blerg.js').should.equal(false) - nyc.exclude.shouldInstrument('./blerg.js', './blerg.js').should.equal(false) - nyc.exclude.shouldInstrument('./blerg.js', '.\\blerg.js').should.equal(false) - }) - - it('should exclude outside of the current working directory', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd/foo/').parse()) - nyc.exclude.shouldInstrument('/cwd/bar.js', '../bar.js').should.equal(false) - }) - - it('should not exclude if the current working directory is inside node_modules', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd/node_modules/foo/').parse()) - nyc.exclude.shouldInstrument('/cwd/node_modules/foo/bar.js', './bar.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/node_modules/foo/bar.js', '.\\bar.js').should.equal(true) - }) - - it('allows files to be explicitly included, rather than excluded', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd/').parse(['--include=foo.js'])) - - nyc.exclude.shouldInstrument('/cwd/foo.js', 'foo.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/index.js', 'index.js').should.equal(false) - }) - - it('exclude overrides include', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd/').parse([ - '--include=foo.js', - '--include=test.js', - '--exclude=**/node_modules/**', - '--exclude=test/**', - '--exclude=test{,-*}.js' - ])) - - nyc.exclude.shouldInstrument('/cwd/foo.js', 'foo.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/test.js', 'test.js').should.equal(false) - }) - }) - describe('wrap', function () { it('wraps modules with coverage counters when they are required', function () { var nyc = new NYC(configUtil.buildYargs().parse()) diff --git a/test/nyc-integration.js b/test/nyc-integration.js index e09408315..b44ca9bce 100644 --- a/test/nyc-integration.js +++ b/test/nyc-integration.js @@ -3,9 +3,10 @@ const path = require('path') const fs = require('fs') const os = require('os') +const { promisify } = require('util') const t = require('tap') -const glob = require('glob') +const glob = promisify(require('glob')) const rimraf = require('rimraf') const { fixturesCLI, runNYC, tempDirSetup, testSuccess, testFailure, envCheckConfig } = require('./helpers') @@ -41,12 +42,13 @@ t.test('--exclude should allow default exclude rules to be overridden', t => tes ] })) -t.test('report and check should show coverage check along with report', t => { - return testSuccess(t, { +t.test('report and check should show coverage check along with report', async t => { + await testSuccess(t, { args: ['--silent', process.execPath, './half-covered.js'] - }).then(() => testFailure(t, { + }) + await testFailure(t, { args: ['report', '--check-coverage', '--lines=100'] - })) + }) }) t.test('--ignore-class-method skips methods that match ignored name but still catches those that are not', t => testSuccess(t, { @@ -58,12 +60,14 @@ t.test('--check-coverage fails when the expected coverage is below a threshold', })) // https://github.com/istanbuljs/nyc/issues/384 -t.test('check-coverage command is equivalent to the flag', t => { - return testSuccess(t, { +t.test('check-coverage command is equivalent to the flag', async t => { + await testSuccess(t, { args: [process.execPath, './half-covered.js'] - }).then(() => testFailure(t, { + }) + + await testFailure(t, { args: ['check-coverage', '--lines', '51'] - })) + }) }) t.test('--check-coverage succeeds when the expected coverage is above a threshold', t => testSuccess(t, { @@ -163,16 +167,15 @@ t.test('hooks provide coverage for requireJS and AMD modules', t => testSuccess( cwd: path.resolve(__dirname, './fixtures/hooks') })) -t.test('does not interpret args intended for instrumented bin', t => { - return runNYC({ +t.test('does not interpret args intended for instrumented bin', async t => { + const { status, stderr, stdout } = await runNYC({ tempDir: t.tempDir, args: ['--silent', process.execPath, 'args.js', '--help', '--version'], leavePathSep: true - }).then(({ status, stderr, stdout }) => { - t.is(status, 0) - t.is(stderr, '') - t.matchSnapshot(JSON.parse(stdout).slice(2)) }) + t.is(status, 0) + t.is(stderr, '') + t.matchSnapshot(JSON.parse(stdout).slice(2)) }) t.test('interprets first args after -- as Node.js execArgv', t => testSuccess(t, { @@ -193,93 +196,95 @@ t.test('can run "npm test" which indirectly invokes a test file', t => testSucce cwd: path.resolve(fixturesCLI, 'run-npm-test-recursive') })) -t.test('nyc instrument single file to console', t => { - return runNYC({ +t.test('nyc instrument single file to console', async t => { + const { status, stderr, originalText } = await runNYC({ tempDir: t.tempDir, args: ['instrument', './half-covered.js'] - }).then(({ status, stderr, originalText }) => { - t.is(status, 0) - t.is(stderr, '') - t.match(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'half-covered.js'))}`) }) + + t.is(status, 0) + t.is(stderr, '') + t.match(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'half-covered.js'))}`) }) -t.test('nyc instrument a directory of files', t => { - return runNYC({ +t.test('nyc instrument a directory of files', async t => { + const { status, stderr, originalText } = await runNYC({ tempDir: t.tempDir, args: ['instrument', './'] - }).then(({ status, stderr, originalText }) => { - t.is(status, 0) - t.is(stderr, '') - t.match(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'half-covered.js'))}`) - t.match(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'half-covered-failing.js'))}`) - t.notMatch(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'test.js'))}`) }) + + t.is(status, 0) + t.is(stderr, '') + t.match(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'half-covered.js'))}`) + t.match(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'half-covered-failing.js'))}`) + t.notMatch(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'test.js'))}`) }) -t.test('nyc instrument returns unmodified source if there is no transform', t => { - return runNYC({ +t.test('nyc instrument returns unmodified source if there is no transform', async t => { + const { status, stderr, stdout } = await runNYC({ tempDir: t.tempDir, args: ['instrument', './no-transform/half-covered.xjs'] - }).then(({ status, stderr, stdout }) => { - t.is(status, 0) - t.is(stderr, '') - t.match(stdout, 'var a = 0') - t.notMatch(stdout, 'cov_') }) + + t.is(status, 0) + t.is(stderr, '') + t.match(stdout, 'var a = 0') + t.notMatch(stdout, 'cov_') }) -t.test('nyc instrument on file with `package` keyword when es-modules is disabled', t => { - return runNYC({ +t.test('nyc instrument on file with `package` keyword when es-modules is disabled', async t => { + const { status, stderr, originalText } = await runNYC({ tempDir: t.tempDir, args: ['instrument', '--no-es-modules', './not-strict.js'] - }).then(({ status, stderr, originalText }) => { - t.is(status, 0) - t.is(stderr, '') - t.match(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'not-strict.js'))}`) }) + + t.is(status, 0) + t.is(stderr, '') + t.match(originalText.stdout, `path:${JSON.stringify(path.resolve(fixturesCLI, 'not-strict.js'))}`) }) t.test('nyc instrument fails on file with `package` keyword when es-modules is enabled', t => testFailure(t, { args: ['instrument', '--exit-on-error', './not-strict.js'] })) -t.test('nyc displays help to stderr when it doesn\'t know what to do', t => { - let helpmsg - - return runNYC({ +t.test('nyc displays help to stderr when it doesn\'t know what to do', async t => { + const help = await runNYC({ tempDir: t.tempDir, args: ['--help'] - }).then(({ status, stderr, stdout }) => { - t.is(status, 0) - t.is(stderr, '') - helpmsg = stdout - }).then(() => runNYC({ + }) + + t.is(help.status, 0) + t.is(help.stderr, '') + t.isNot(help.stdout, '') + + const { status, stderr, stdout } = await runNYC({ tempDir: t.tempDir, args: [] - })).then(({ status, stderr, stdout }) => { - t.equal(status, 1) - t.equal(stdout, '') - t.equal(stderr, helpmsg) }) + + t.equal(status, 1) + t.equal(stdout, '') + t.equal(stderr, help.stdout) }) -t.test('handles --clean / --no-clean properly', t => { - return testSuccess(t, { +t.test('handles --clean / --no-clean properly', async t => { + await testSuccess(t, { args: [ '--clean', process.execPath, './by-arg2.js', '1' ] - }).then(() => testSuccess(t, { + }) + + await testSuccess(t, { args: [ '--no-clean', process.execPath, './by-arg2.js', '2' ] - })) + }) }) t.test('setting instrument to "false" configures noop instrumenter', t => envCheckConfig(t, { @@ -296,8 +301,8 @@ t.test('setting instrument to "false" configures noop instrumenter', t => envChe ] })) -t.test('extracts coverage headers from unexecuted files', t => { - return envCheckConfig(t, { +t.test('extracts coverage headers from unexecuted files', async t => { + await envCheckConfig(t, { configArgs: [ '--all', '--silent', @@ -311,61 +316,54 @@ t.test('extracts coverage headers from unexecuted files', t => { 'sourceMap', 'instrumenter' ] - }).then(() => new Promise((resolve, reject) => { - glob(path.join(t.tempDir, '*.json'), (err, files) => { - if (err) { - return reject(err) - } - - resolve(files) - }) - })).then(files => { - const coverage = files.reduce( - (obj, file) => Object.assign(obj, JSON.parse(fs.readFileSync(file, 'utf-8'))), - {} - ) - - // we should not have executed file, so all counts sould be 0. - const data = coverage['./external-instrumenter.js'] - t.type(data, 'object') - - t.false(Object.keys(data.s).some(k => data.s[k] !== 0)) }) + + const files = await glob(path.join(t.tempDir, '*.json')) + const coverage = files.reduce( + (obj, file) => Object.assign(obj, JSON.parse(fs.readFileSync(file, 'utf-8'))), + {} + ) + + // we should not have executed file, so all counts sould be 0. + const data = coverage['./external-instrumenter.js'] + t.type(data, 'object') + + t.false(Object.values(data.s).some(s => s !== 0)) }) -t.test('allows an alternative cache folder to be specified', t => { +t.test('allows an alternative cache folder to be specified', async t => { const cacheDir = path.resolve(fixturesCLI, 'foo-cache') - return testSuccess(t, { + await testSuccess(t, { args: [ `--cache-dir=${cacheDir}`, '--cache=true', process.execPath, './half-covered.js' ] - }).then(() => { - // we should have created foo-cache rather - // than the default ./node_modules/.cache. - t.is(1, fs.readdirSync(cacheDir).length) - - rimraf.sync(cacheDir) }) + + // we should have created foo-cache rather + // than the default ./node_modules/.cache. + t.is(1, fs.readdirSync(cacheDir).length) + + rimraf.sync(cacheDir) }) // see: https://github.com/istanbuljs/nyc/issues/563 -t.test('does not create .cache folder if cache is "false"', t => { +t.test('does not create .cache folder if cache is "false"', async t => { const cacheDir = path.resolve(fixturesCLI, './disabled-cache') - return testSuccess(t, { + await testSuccess(t, { args: [ `--cache-dir=${cacheDir}`, '--cache=false', process.execPath, './half-covered.js' ] - }).then(() => { - t.false(fs.existsSync(cacheDir)) }) + + t.false(fs.existsSync(cacheDir)) }) t.test('allows alternative high and low watermarks to be configured', t => testSuccess(t, { @@ -463,8 +461,8 @@ t.test('forbids reserved word when es-modules is not disabled', t => testFailure ] })) -t.test('execute with exclude-node-modules=false', t => { - return testFailure(t, { +t.test('execute with exclude-node-modules=false', async t => { + await testFailure(t, { args: [ ...executeNodeModulesArgs, '--check-coverage=true', @@ -472,24 +470,28 @@ t.test('execute with exclude-node-modules=false', t => { './bin/do-nothing.js' ], cwd: fixturesENM - }).then(() => testFailure(t, { + }) + + await testFailure(t, { args: [ ...executeNodeModulesArgs, '--check-coverage=true', 'report' ], cwd: fixturesENM - })).then(() => testFailure(t, { + }) + + await testFailure(t, { args: [ ...executeNodeModulesArgs, 'check-coverage' ], cwd: fixturesENM - })) + }) }) -t.test('instrument with exclude-node-modules=false', t => { - return runNYC({ +t.test('instrument with exclude-node-modules=false', async t => { + const { status, stderr, stdout } = await runNYC({ tempDir: t.tempDir, args: [ ...executeNodeModulesArgs, @@ -497,9 +499,9 @@ t.test('instrument with exclude-node-modules=false', t => { 'node_modules' ], cwd: fixturesENM - }).then(({ status, stderr, stdout }) => { - t.is(status, 0) - t.is(stderr, '') - t.match(stdout, 'fake-module-1') }) + + t.is(status, 0) + t.is(stderr, '') + t.match(stdout, 'fake-module-1') }) diff --git a/test/should-instrument.js b/test/should-instrument.js new file mode 100644 index 000000000..81b612914 --- /dev/null +++ b/test/should-instrument.js @@ -0,0 +1,78 @@ +const path = require('path') +const NYC = require('../self-coverage') +const configUtil = require('../self-coverage/lib/config-util') +const fixtures = path.resolve(__dirname, './fixtures') + +const t = require('tap') + +const rootDir = path.resolve('/') +t.test('should exclude appropriately with defaults', t => { + const nyc = new NYC(configUtil.buildYargs(rootDir).parse([ + '--exclude=test/**', + '--exclude=test{,-*}.js', + '--exclude=**/*.test.js', + '--exclude=**/__tests__/**' + ])) + + // nyc always excludes "node_modules/**" + t.true(nyc.exclude.shouldInstrument(path.join(rootDir, 'foo.js'), 'foo.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'node_modules/bar.js'), 'node_modules/bar.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'foo/node_modules/bar.js'), 'foo/node_modules/bar.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'test.js'), 'test.js')) + t.true(nyc.exclude.shouldInstrument(path.join(rootDir, 'testfoo.js'), 'testfoo.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'test-foo.js'), 'test-foo.js')) + t.true(nyc.exclude.shouldInstrument(path.join(rootDir, 'lib/test.js'), 'lib/test.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'foo/bar/test.js'), './test.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'foo/bar/test.js'), '.\\test.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'foo/bar/foo.test.js'), './foo.test.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'foo/bar/__tests__/foo.js'), './__tests__/foo.js')) + t.done() +}) + +t.test('should exclude appropriately with config.exclude', t => { + const nyc = new NYC(configUtil.buildYargs(fixtures).parse()) + + // fixtures/package.json configures excludes: "blarg", "blerg" + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'blarg.js'), 'blarg.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'blarg/foo.js'), 'blarg/foo.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'blerg.js'), 'blerg.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'blerg.js'), './blerg.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'blerg.js'), '.\\blerg.js')) + t.done() +}) + +t.test('should exclude outside of the current working directory', t => { + const nyc = new NYC(configUtil.buildYargs(path.join(rootDir, 'foo')).parse()) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'bar.js'), '../bar.js')) + t.done() +}) + +t.test('should not exclude if the current working directory is inside node_modules', t => { + const cwd = path.join(rootDir, 'node_modules', 'foo') + const nyc = new NYC(configUtil.buildYargs(cwd).parse()) + t.true(nyc.exclude.shouldInstrument(path.join(cwd, 'bar.js'), './bar.js')) + t.true(nyc.exclude.shouldInstrument(path.join(cwd, 'bar.js'), '.\\bar.js')) + t.done() +}) + +t.test('allows files to be explicitly included, rather than excluded', t => { + const nyc = new NYC(configUtil.buildYargs(rootDir).parse(['--include=foo.js'])) + + t.true(nyc.exclude.shouldInstrument(path.join(rootDir, 'foo.js'), 'foo.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'index.js'), 'index.js')) + t.done() +}) + +t.test('exclude overrides include', t => { + const nyc = new NYC(configUtil.buildYargs(rootDir).parse([ + '--include=foo.js', + '--include=test.js', + '--exclude=**/node_modules/**', + '--exclude=test/**', + '--exclude=test{,-*}.js' + ])) + + t.true(nyc.exclude.shouldInstrument(path.join(rootDir, 'foo.js'), 'foo.js')) + t.false(nyc.exclude.shouldInstrument(path.join(rootDir, 'test.js'), 'test.js')) + t.done() +}) diff --git a/test/src/nyc-tap.js b/test/src/nyc-tap.js deleted file mode 100644 index 3e60a12fb..000000000 --- a/test/src/nyc-tap.js +++ /dev/null @@ -1,517 +0,0 @@ -/* global describe, it */ - -require('source-map-support').install({ hookRequire: true }) - -const fs = require('fs') -const _ = require('lodash') -const ap = require('any-path') -const enableCache = false - -const configUtil = require('../../self-coverage/lib/config-util') -const _NYC = require('../../self-coverage') - -function NYC (opts) { - opts = opts || {} - if (!opts.hasOwnProperty('enableCache')) { - opts.enableCache = enableCache - } - return new _NYC(opts) -} - -var path = require('path') -var glob = require('glob') -var rimraf = require('rimraf') -var isWindows = require('is-windows')() -var spawn = require('child_process').spawn -var fixtures = path.resolve(__dirname, '../fixtures') -var bin = path.resolve(__dirname, '../../self-coverage/bin/nyc') - -// beforeEach -glob.sync('**/*/{.nyc_output,.cache}').forEach(function (path) { - rimraf.sync(path) -}) - -delete process.env.NYC_CWD - -require('chai').should() -require('tap').mochaGlobals() - -const transpileHook = path.resolve(process.cwd(), './test/fixtures/transpile-hook') - -describe('nyc', function () { - describe('cwd', function () { - it('sets cwd to process.cwd() if no environment variable is set', function () { - var nyc = new NYC(configUtil.buildYargs().parse()) - - nyc.cwd.should.eql(process.cwd()) - }) - - it('uses NYC_CWD environment variable for cwd if it is set', function () { - process.env.NYC_CWD = path.resolve(__dirname, '../fixtures') - var nyc = new NYC(configUtil.buildYargs().parse()) - - nyc.cwd.should.equal(path.resolve(__dirname, '../fixtures')) - }) - - it('will look upwards for package.json from cwd', function () { - var nyc = new NYC(configUtil.buildYargs(__dirname).parse()) - nyc.cwd.should.eql(path.join(__dirname, '../..')) - }) - - it('uses --cwd for cwd if it is set (highest priority and does not look upwards for package.json) ', function () { - var nyc = new NYC(configUtil.buildYargs(__dirname).parse(['--cwd', __dirname])) - nyc.cwd.should.eql(__dirname) - }) - }) - - describe('config', function () { - it("loads 'exclude' patterns from package.json#nyc", function () { - var nyc = new NYC(configUtil.buildYargs(path.resolve(__dirname, '../fixtures')).parse()) - nyc.exclude.exclude.length.should.eql(8) - }) - - it("loads 'extension' patterns from package.json#nyc", function () { - var nyc = new NYC(configUtil.buildYargs(path.resolve(__dirname, '../fixtures/conf-multiple-extensions')).parse()) - nyc.extensions.length.should.eql(3) - }) - - it("ignores 'include' option if it's falsy or []", function () { - var nyc1 = new NYC(configUtil.buildYargs(path.resolve(__dirname, '../fixtures/conf-empty')).parse()) - - nyc1.exclude.include.should.equal(false) - - var nyc2 = new NYC({ - include: [] - }) - - nyc2.exclude.include.should.equal(false) - }) - - it("ignores 'exclude' option if it's falsy", function () { - var nyc1 = new NYC(configUtil.buildYargs(path.resolve(__dirname, '../fixtures/conf-empty')).parse()) - nyc1.exclude.exclude.length.should.eql(15) - }) - - it("allows for empty 'exclude'", function () { - var nyc2 = new NYC({ exclude: [] }) - - // an empty exclude still has **/node_modules/**, node_modules/** and added. - nyc2.exclude.exclude.length.should.eql(2) - }) - }) - - describe('shouldInstrumentFile', function () { - it('should exclude appropriately with defaults', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd').parse([ - '--exclude=test/**', - '--exclude=test{,-*}.js', - '--exclude=**/*.test.js', - '--exclude=**/__tests__/**' - ])) - - // nyc always excludes "node_modules/**" - nyc.exclude.shouldInstrument('/cwd/foo', 'foo').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/node_modules/bar', 'node_modules/bar').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/node_modules/bar', 'foo/node_modules/bar').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/test.js', 'test.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/testfoo.js', 'testfoo.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/test-foo.js', 'test-foo.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/lib/test.js', 'lib/test.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/foo/bar/test.js', './test.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/bar/test.js', '.\\test.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/bar/foo.test.js', './foo.test.js').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/bar/__tests__/foo.js', './__tests__/foo.js').should.equal(false) - }) - - it('should allow turning off default node_modules exclude', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd').parse([ - '--exclude-node-modules', 'false', - '--exclude=**/__tests__/**', - '--exclude=node_modules/**' - ])) - // For this test, only excluding root node_modules. Local node_modules are allowed, but we - // still exclude matching items inside of local node_modules. - nyc.exclude.shouldInstrument('/cwd/foo', 'foo').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/node_modules/bar', 'node_modules/bar').should.equal(false) - nyc.exclude.shouldInstrument('/cwd/foo/node_modules/bar', 'foo/node_modules/bar').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/foo/node_modules/bar/__tests__/baz.js', 'foo/node_modules/bar/__tests__/baz.js').should.equal(false) - }) - - it('should exclude appropriately with config.exclude', function () { - var nyc = new NYC(configUtil.buildYargs(fixtures).parse()) - - // fixtures/package.json configures excludes: "blarg", "blerg" - nyc.exclude.shouldInstrument('blarg', 'blarg').should.equal(false) - nyc.exclude.shouldInstrument('blarg/foo.js', 'blarg/foo.js').should.equal(false) - nyc.exclude.shouldInstrument('blerg', 'blerg').should.equal(false) - nyc.exclude.shouldInstrument('./blerg', './blerg').should.equal(false) - nyc.exclude.shouldInstrument('./blerg', '.\\blerg').should.equal(false) - }) - - it('should exclude outside of the current working directory', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd/foo/').parse()) - nyc.exclude.shouldInstrument('/cwd/bar', '../bar').should.equal(false) - }) - - it('should not exclude if the current working directory is inside node_modules', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd/node_modules/foo/').parse()) - nyc.exclude.shouldInstrument('/cwd/node_modules/foo/bar', './bar').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/node_modules/foo/bar', '.\\bar').should.equal(true) - }) - - it('allows files to be explicitly included, rather than excluded', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd/').parse(['--include=foo.js'])) - - nyc.exclude.shouldInstrument('/cwd/foo.js', 'foo.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/index.js', 'index.js').should.equal(false) - }) - - it('exclude overrides include', function () { - var nyc = new NYC(configUtil.buildYargs('/cwd/').parse([ - '--include=foo.js', - '--include=test.js', - '--exclude=**/node_modules/**', - '--exclude=test/**', - '--exclude=test{,-*}.js' - ])) - - nyc.exclude.shouldInstrument('/cwd/foo.js', 'foo.js').should.equal(true) - nyc.exclude.shouldInstrument('/cwd/test.js', 'test.js').should.equal(false) - }) - }) - - describe('wrap', function () { - it('wraps modules with coverage counters when they are required', function () { - var nyc = new NYC(configUtil.buildYargs().parse()) - nyc.reset() - nyc.wrap() - - var check = require('../fixtures/check-instrumented') - check().should.equal(true) - }) - - describe('custom require hooks are installed', function () { - it('wraps modules with coverage counters when the custom require hook compiles them', function () { - let required = false - const hook = function (module, filename) { - if (filename.indexOf('check-instrumented.js') !== -1) required = true - module._compile(fs.readFileSync(filename, 'utf8'), filename) - } - - var nyc = new NYC(configUtil.buildYargs().parse()) - nyc.reset() - nyc.wrap() - - // install the custom require hook - require.extensions['.js'] = hook // eslint-disable-line - - const check = require('../fixtures/check-instrumented') - check().should.equal(true) - - // and the hook should have been called - required.should.equal(true) - }) - }) - - describe('produce source map', function () { - it('handles stack traces', function () { - var nyc = new NYC(configUtil.buildYargs().parse('--produce-source-map')) - nyc.reset() - nyc.wrap() - - var check = require('../fixtures/stack-trace') - check().should.match(/stack-trace.js:4:/) - }) - - it('does not handle stack traces when disabled', function () { - var nyc = new NYC(configUtil.buildYargs().parse()) - nyc.reset() - nyc.wrap() - - var check = require('../fixtures/stack-trace') - check().should.match(/stack-trace.js:1:/) - }) - }) - - describe('compile handlers for custom extensions are assigned', function () { - it('assigns a function to custom extensions', function () { - var nyc = new NYC(configUtil.buildYargs( - path.resolve(__dirname, '../fixtures/conf-multiple-extensions') - ).parse()) - nyc.reset() - nyc.wrap() - - require.extensions['.es6'].should.be.a('function') // eslint-disable-line - require.extensions['.foo.bar'].should.be.a('function') // eslint-disable-line - - // default should still exist - require.extensions['.js'].should.be.a('function') // eslint-disable-line - }) - - it('calls the `_handleJs` function for custom file extensions', function () { - const required = { - es6: false, - custom: false - } - var nyc = new NYC(configUtil.buildYargs( - path.resolve(__dirname, '../fixtures/conf-multiple-extensions') - ).parse()) - - nyc['_handleJs'] = (code, options) => { - if (options.filename.indexOf('check-instrumented.es6') !== -1) { - required.es6 = true - } - if (options.filename.indexOf('check-instrumented.foo.bar') !== -1) { - required.custom = true - } - return code - } - - nyc.reset() - nyc.wrap() - - require('../fixtures/conf-multiple-extensions/check-instrumented.es6') - require('../fixtures/conf-multiple-extensions/check-instrumented.foo.bar') - required.custom.should.equal(true) - required.es6.should.equal(true) - }) - }) - - function testSignal (signal, done) { - var nyc = (new NYC(configUtil.buildYargs(fixtures).parse())) - - var proc = spawn(process.execPath, [bin, './' + signal + '.js'], { - cwd: fixtures, - env: {}, - stdio: 'ignore' - }) - - proc.on('close', function () { - var reports = _.filter(nyc.loadReports(), function (report) { - return report[path.join(fixtures, signal + '.js')] - }) - reports.length.should.equal(1) - return done() - }) - } - - it('writes coverage report when process is killed with SIGTERM', function (done) { - if (isWindows) return done() - testSignal('sigterm', done) - }) - - it('writes coverage report when process is killed with SIGINT', function (done) { - if (isWindows) return done() - testSignal('sigint', done) - }) - - it('does not output coverage for files that have not been included, by default', function (done) { - var nyc = (new NYC(configUtil.buildYargs(process.cwd()).parse())) - nyc.wrap() - nyc.reset() - - var reports = _.filter(nyc.loadReports(), function (report) { - return report['./test/fixtures/not-loaded.js'] - }) - reports.length.should.equal(0) - return done() - }) - }) - - describe('report', function () { - it('allows coverage report to be output in an alternative directory', function (done) { - var nyc = new NYC(configUtil.buildYargs().parse( - ['--report-dir=./alternative-report', '--reporter=lcov'] - )) - nyc.reset() - - var proc = spawn(process.execPath, ['./test/fixtures/child-1.js'], { - cwd: process.cwd(), - env: process.env, - stdio: 'inherit' - }) - - proc.on('close', function () { - nyc.report() - fs.existsSync('./alternative-report/lcov.info').should.equal(true) - rimraf.sync('./alternative-report') - return done() - }) - }) - }) - - describe('addAllFiles', function () { - it('outputs an empty coverage report for all files that are not excluded', function (done) { - var nyc = new NYC(configUtil.buildYargs(fixtures).parse()) - nyc.reset() - nyc.addAllFiles() - - var notLoadedPath = path.join(fixtures, './not-loaded.js') - var reports = _.filter(nyc.loadReports(), function (report) { - return ap(report)[notLoadedPath] - }) - var report = reports[0][notLoadedPath] - - reports.length.should.equal(1) - report.s['0'].should.equal(0) - report.s['1'].should.equal(0) - return done() - }) - - it('outputs an empty coverage report for multiple configured extensions', function (done) { - var cwd = path.resolve(fixtures, './conf-multiple-extensions') - var nyc = new NYC(configUtil.buildYargs(cwd).parse()) - nyc.reset() - nyc.addAllFiles() - - var notLoadedPath1 = path.join(cwd, './not-loaded.es6') - var notLoadedPath2 = path.join(cwd, './not-loaded.js') - var reports = _.filter(nyc.loadReports(), function (report) { - var apr = ap(report) - return apr[notLoadedPath1] || apr[notLoadedPath2] - }) - - reports.length.should.equal(1) - - var report1 = reports[0][notLoadedPath1] - report1.s['0'].should.equal(0) - report1.s['1'].should.equal(0) - - var report2 = reports[0][notLoadedPath2] - report2.s['0'].should.equal(0) - report2.s['1'].should.equal(0) - - return done() - }) - - it('tracks coverage appropriately once the file is required', function (done) { - var nyc = (new NYC(configUtil.buildYargs(fixtures).parse())) - nyc.reset() - nyc.wrap() - - require('../fixtures/not-loaded') - - nyc.writeCoverageFile() - - var notLoadedPath = path.join(fixtures, './not-loaded.js') - var reports = _.filter(nyc.loadReports(), function (report) { - return report[notLoadedPath] - }) - var report = reports[0][notLoadedPath] - - reports.length.should.equal(1) - report.s['0'].should.equal(1) - report.s['1'].should.equal(1) - - return done() - }) - - it('transpiles .js files added via addAllFiles', function (done) { - fs.writeFileSync( - './test/fixtures/needs-transpile.js', - '--> pork chop sandwiches <--\nvar a = 99', - 'utf-8' - ) - - var nyc = (new NYC(configUtil.buildYargs(fixtures).parse(['--require', transpileHook]))) - nyc.reset() - nyc.addAllFiles() - - var needsTranspilePath = path.join(fixtures, './needs-transpile.js') - var reports = _.filter(nyc.loadReports(), function (report) { - return ap(report)[needsTranspilePath] - }) - var report = reports[0][needsTranspilePath] - - reports.length.should.equal(1) - report.s['0'].should.equal(0) - - fs.unlinkSync(needsTranspilePath) - return done() - }) - - it('does not attempt to transpile files when they are excluded', function (done) { - var notNeedTranspilePath = path.join(fixtures, './do-not-need-transpile.do-not-transpile') - fs.writeFileSync( - notNeedTranspilePath, - '--> pork chop sandwiches <--\nvar a = 99', - 'utf-8' - ) - - var nyc = (new NYC(configUtil.buildYargs(fixtures).parse([ - `--require=${transpileHook}`, - '--extension=.do-not-transpile', - '--include=needs-transpile.do-not-transpile' - ]))) - - nyc.reset() - nyc.addAllFiles() - fs.unlinkSync(notNeedTranspilePath) - return done() - }) - }) - - it('transpiles non-.js files added via addAllFiles', function (done) { - fs.writeFileSync( - './test/fixtures/needs-transpile.whatever', - '--> pork chop sandwiches <--\nvar a = 99', - 'utf-8' - ) - - var nyc = (new NYC(configUtil.buildYargs(fixtures).parse([ - `--require=${transpileHook}`, - '--extension=.whatever' - ]))) - - nyc.reset() - nyc.addAllFiles() - - var needsTranspilePath = path.join(fixtures, './needs-transpile.whatever') - var reports = _.filter(nyc.loadReports(), function (report) { - return ap(report)[needsTranspilePath] - }) - var report = reports[0][needsTranspilePath] - - reports.length.should.equal(1) - report.s['0'].should.equal(0) - - fs.unlinkSync(needsTranspilePath) - return done() - }) - - describe('cache', function () { - it('handles collisions', function (done) { - var nyc = new NYC(configUtil.buildYargs(fixtures).parse()) - nyc.clearCache() - - var args = [bin, process.execPath, './cache-collision-runner.js'] - - var proc = spawn(process.execPath, args, { - cwd: fixtures, - env: {} - }) - - proc.on('close', function (code) { - code.should.equal(0) - done() - }) - }) - - it('handles identical files', function (done) { - var nyc = new NYC(configUtil.buildYargs(fixtures).parse()) - nyc.clearCache() - - var args = [bin, process.execPath, './identical-file-runner.js'] - - var proc = spawn(process.execPath, args, { - cwd: fixtures, - env: {} - }) - - proc.on('close', function (code) { - code.should.equal(0) - done() - }) - }) - }) -})