From 8411a26c9e520c66251cc8044cde2c81f33f1c5f Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Fri, 1 Nov 2019 17:06:13 -0400 Subject: [PATCH] fix: Correct handling of source-maps for pre-instrumented files (#1216) Fixes #1208 --- index.js | 11 +- lib/instrumenters/istanbul.js | 17 +- lib/source-maps.js | 25 +- package-lock.json | 638 ++++++++++--------- package.json | 5 +- tap-snapshots/test-instrument.js-TAP.test.js | 17 + test/instrument.js | 7 +- 7 files changed, 399 insertions(+), 321 deletions(-) create mode 100644 tap-snapshots/test-instrument.js-TAP.test.js diff --git a/index.js b/index.js index 7193ba5cc..d5f4b46c3 100755 --- a/index.js +++ b/index.js @@ -269,9 +269,14 @@ class NYC { return (code, metadata, hash) => { const filename = metadata.filename - let sourceMap = null + const sourceMap = {} - if (this._sourceMap) sourceMap = this.sourceMaps.extractAndRegister(code, filename, hash) + if (this._sourceMap) { + sourceMap.sourceMap = this.sourceMaps.extract(code, filename) + sourceMap.registerMap = () => this.sourceMaps.registerMap(filename, hash, sourceMap.sourceMap) + } else { + sourceMap.registerMap = () => {} + } try { instrumented = instrumenter.instrumentSync(code, filename, sourceMap) @@ -378,8 +383,6 @@ class NYC { coverage[absFile].contentHash = this.hashCache[absFile] } }, this) - } else { - this.sourceMaps.addSourceMaps(coverage) } var id = this.processInfo.uuid diff --git a/lib/instrumenters/istanbul.js b/lib/instrumenters/istanbul.js index 1793f0c79..299f9bfea 100644 --- a/lib/instrumenters/istanbul.js +++ b/lib/instrumenters/istanbul.js @@ -3,7 +3,6 @@ function InstrumenterIstanbul (options) { const { createInstrumenter } = require('istanbul-lib-instrument') const convertSourceMap = require('convert-source-map') - const mergeSourceMap = require('merge-source-map') const instrumenter = createInstrumenter({ autoWrap: true, @@ -18,24 +17,22 @@ function InstrumenterIstanbul (options) { }) return { - instrumentSync (code, filename, sourceMap) { - var instrumented = instrumenter.instrumentSync(code, filename) + instrumentSync (code, filename, { sourceMap, registerMap }) { + var instrumented = instrumenter.instrumentSync(code, filename, sourceMap) + if (instrumented !== code) { + registerMap() + } + // the instrumenter can optionally produce source maps, // this is useful for features like remapping stack-traces. - // TODO: test source-map merging logic. if (options.produceSourceMap) { var lastSourceMap = instrumenter.lastSourceMap() /* istanbul ignore else */ if (lastSourceMap) { - if (sourceMap) { - lastSourceMap = mergeSourceMap( - sourceMap.toObject(), - lastSourceMap - ) - } instrumented += '\n' + convertSourceMap.fromObject(lastSourceMap).toComment() } } + return instrumented }, lastFileCoverage () { diff --git a/lib/source-maps.js b/lib/source-maps.js index 1de8bd6ea..c0feeb21f 100644 --- a/lib/source-maps.js +++ b/lib/source-maps.js @@ -28,21 +28,22 @@ class SourceMaps { this.loadedMaps = {} } - extractAndRegister (code, filename, hash) { + extract (code, filename) { const sourceMap = convertSourceMap.fromSource(code) || convertSourceMap.fromMapFileSource(code, path.dirname(filename)) - if (sourceMap) { - if (this.cache && hash) { - const mapPath = this.cachedPath(filename, hash) - fs.writeFileSync(mapPath, sourceMap.toJSON()) - } else { - this._sourceMapCache.registerMap(filename, sourceMap.sourcemap) - } - } - return sourceMap + return sourceMap ? sourceMap.toObject() : undefined } - addSourceMaps (coverage) { - this._sourceMapCache.addInputSourceMapsSync(coverage) + registerMap (filename, hash, sourceMap) { + if (!sourceMap) { + return + } + + if (this.cache && hash) { + const mapPath = this.cachedPath(filename, hash) + fs.writeFileSync(mapPath, JSON.stringify(sourceMap)) + } else { + this._sourceMapCache.registerMap(filename, sourceMap) + } } async remapCoverage (obj) { diff --git a/package-lock.json b/package-lock.json index 37c0d77de..17c99317e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,15 +12,43 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/core": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", + "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.4", + "@babel/helpers": "^7.6.2", + "@babel/parser": "^7.6.4", + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.3", + "@babel/types": "^7.6.3", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, "@babel/generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.3.tgz", - "integrity": "sha512-hLhYbAb3pHwxjlijC4AQ7mqZdcoujiNaW7izCT04CIowHK8psN0IN8QjDv0iyFtycF5FowUOTwDloIheI25aMw==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", + "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", "requires": { "@babel/types": "^7.6.3", "jsesc": "^2.5.1", "lodash": "^4.17.13", - "source-map": "^0.6.1" + "source-map": "^0.5.0" } }, "@babel/helper-function-name": { @@ -49,6 +77,16 @@ "@babel/types": "^7.4.4" } }, + "@babel/helpers": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", + "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", + "requires": { + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.2", + "@babel/types": "^7.6.0" + } + }, "@babel/highlight": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", @@ -60,9 +98,9 @@ } }, "@babel/parser": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.3.tgz", - "integrity": "sha512-sUZdXlva1dt2Vw2RqbMkmfoImubO0D0gaCrNngV6Hi0DA4x3o4mlrq0tbfY0dZEUIccH8I6wQ4qgEtwcpOR6Qg==" + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", + "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==" }, "@babel/runtime": { "version": "7.6.3", @@ -142,9 +180,9 @@ "dev": true }, "acorn-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", "dev": true }, "aggregate-error": { @@ -280,9 +318,9 @@ "dev": true }, "async-hook-domain": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-1.1.1.tgz", - "integrity": "sha512-nHfgkoCbzXqCPEFshW5/LROfUqKcZdOW4mfvR66V7bdSuvvvt+s2CuHVBmJxHfOVFhCJ29xlRqEJxyNQKQsqBg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-1.1.3.tgz", + "integrity": "sha512-ZovMxSbADV3+biB7oR1GL5lGyptI24alp0LWHlmz1OFc5oL47pz3EiIF6nXOkDW7yLqih4NtsiYduzdDW0i+Wg==", "dev": true, "requires": { "source-map-support": "^0.5.11" @@ -471,12 +509,6 @@ } } }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -500,19 +532,19 @@ "dev": true }, "chokidar": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.2.1.tgz", - "integrity": "sha512-/j5PPkb5Feyps9e+jo07jUZGvkB5Aj953NrI4s8xSVScrAo/RHeILrtdb4uzR7N6aaFFxxJ+gt8mA8HfNpw76w==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.2.3.tgz", + "integrity": "sha512-GtrxGuRf6bzHQmXWRepvsGnXpkQkVU+D2/9a7dAe4a7v1NhrfZOZ2oKf76M3nOs46fFYL8D+Q8JYA4GYeJ8Cjw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.0", + "fsevents": "~2.1.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.1.3" + "readdirp": "~3.2.0" } }, "circular-json": { @@ -586,9 +618,9 @@ } }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "optional": true }, "commondir": { @@ -649,9 +681,9 @@ } }, "conventional-changelog-angular": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz", - "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.5.tgz", + "integrity": "sha512-RrkdWnL/TVyWV1ayWmSsrWorsTDqjL/VwG5ZSEneBQrd65ONcfeA1cW7FLtNweQyMiKOyriCMTKRSlk18DjTrw==", "dev": true, "requires": { "compare-func": "^1.3.1", @@ -659,18 +691,18 @@ } }, "conventional-changelog-atom": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.1.tgz", - "integrity": "sha512-9BniJa4gLwL20Sm7HWSNXd0gd9c5qo49gCi8nylLFpqAHhkFTj7NQfROq3f1VpffRtzfTQp4VKU5nxbe2v+eZQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.3.tgz", + "integrity": "sha512-szZe2ut97qNO6vCCMkm1I/tWu6ol4Rr8a9Lx0y/VlpDnpY0PNp+oGpFgU55lplhx+I3Lro9Iv4/gRj0knfgjzg==", "dev": true, "requires": { "q": "^1.5.1" } }, "conventional-changelog-codemirror": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.1.tgz", - "integrity": "sha512-23kT5IZWa+oNoUaDUzVXMYn60MCdOygTA2I+UjnOMiYVhZgmVwNd6ri/yDlmQGXHqbKhNR5NoXdBzSOSGxsgIQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.3.tgz", + "integrity": "sha512-t2afackdgFV2yBdHhWPqrKbpaQeVnz2hSJKdWqjasPo5EpIB6TBL0er3cOP1mnGQmuzk9JSvimNSuqjWGDtU5Q==", "dev": true, "requires": { "q": "^1.5.1" @@ -683,12 +715,13 @@ "dev": true }, "conventional-changelog-conventionalcommits": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.1.0.tgz", - "integrity": "sha512-J3xolGrH8PTxpCqueHOuZtv3Cp73SQOWiBQzlsaugZAZ+hZgcJBonmC+1bQbfGs2neC2S18p2L1Gx+nTEglJTQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.2.1.tgz", + "integrity": "sha512-vC02KucnkNNap+foDKFm7BVUSDAXktXrUJqGszUuYnt6T0J2azsbYz/w9TDc3VsrW2v6JOtiQWVcgZnporHr4Q==", "dev": true, "requires": { "compare-func": "^1.3.1", + "lodash": "^4.2.1", "q": "^1.5.1" } }, @@ -839,9 +872,9 @@ } }, "conventional-changelog-ember": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.2.tgz", - "integrity": "sha512-qtZbA3XefO/n6DDmkYywDYi6wDKNNc98MMl2F9PKSaheJ25Trpi3336W8fDlBhq0X+EJRuseceAdKLEMmuX2tg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.4.tgz", + "integrity": "sha512-q1u73sO9uCnxN4TSw8xu6MRU8Y1h9kpwtcdJuNRwu/LSKI1IE/iuNSH5eQ6aLlQ3HTyrIpTfUuVybW4W0F17rA==", "dev": true, "requires": { "q": "^1.5.1" @@ -866,18 +899,18 @@ } }, "conventional-changelog-jquery": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.4.tgz", - "integrity": "sha512-IVJGI3MseYoY6eybknnTf9WzeQIKZv7aNTm2KQsiFVJH21bfP2q7XVjfoMibdCg95GmgeFlaygMdeoDDa+ZbEQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.6.tgz", + "integrity": "sha512-gHAABCXUNA/HjnZEm+vxAfFPJkgtrZvCDIlCKfdPVXtCIo/Q0lN5VKpx8aR5p8KdVRQFF3OuTlvv5kv6iPuRqA==", "dev": true, "requires": { "q": "^1.5.1" } }, "conventional-changelog-jshint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.1.tgz", - "integrity": "sha512-kRFJsCOZzPFm2tzRHULWP4tauGMvccOlXYf3zGeuSW4U0mZhk5NsjnRZ7xFWrTFPlCLV+PNmHMuXp5atdoZmEg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.3.tgz", + "integrity": "sha512-Pc2PnMPcez634ckzr4EOWviwRSpZcURaK7bjyD9oK6N5fsC/a+3G7LW5m/JpcHPhA9ZxsfIbm7uqZ3ZDGsQ/sw==", "dev": true, "requires": { "compare-func": "^1.3.1", @@ -891,15 +924,15 @@ "dev": true }, "conventional-changelog-writer": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.7.tgz", - "integrity": "sha512-p/wzs9eYaxhFbrmX/mCJNwJuvvHR+j4Fd0SQa2xyAhYed6KBiZ780LvoqUUvsayP4R1DtC27czalGUhKV2oabw==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.9.tgz", + "integrity": "sha512-2Y3QfiAM37WvDMjkVNaRtZgxVzWKj73HE61YQ/95T53yle+CRwTVSl6Gbv/lWVKXeZcM5af9n9TDVf0k7Xh+cw==", "dev": true, "requires": { "compare-func": "^1.3.1", "conventional-commits-filter": "^2.0.2", "dateformat": "^3.0.0", - "handlebars": "^4.1.2", + "handlebars": "^4.4.0", "json-stringify-safe": "^5.0.1", "lodash": "^4.2.1", "meow": "^4.0.0", @@ -964,9 +997,9 @@ "dev": true }, "coveralls": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.6.tgz", - "integrity": "sha512-Pgh4v3gCI4T/9VijVrm8Ym5v0OgjvGLKj3zTUwkvsCiwqae/p6VLzpsFNjQS2i6ewV7ef+DjFJ5TSKxYt/mCrA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.7.tgz", + "integrity": "sha512-mUuH2MFOYB2oBaA4D4Ykqi9LaEYpMMlsiOMJOrv358yAjP6enPIk55fod2fNJ8AvwoYXStWQls37rA+s5e7boA==", "dev": true, "requires": { "growl": "~> 1.10.0", @@ -975,14 +1008,6 @@ "log-driver": "^1.2.7", "minimist": "^1.2.0", "request": "^2.86.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, "cp-file": { @@ -1234,9 +1259,9 @@ } }, "es-abstract": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", - "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", "dev": true, "requires": { "es-to-primitive": "^1.2.0", @@ -1630,12 +1655,12 @@ } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { @@ -1825,18 +1850,18 @@ } }, "flow-parser": { - "version": "0.109.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.109.0.tgz", - "integrity": "sha512-e8Z1n0QvXAjpFcTqLBBM5hVKoJuR8CLNy5WlhRYIqcSH3ClYvZNSi38ZZN9wnQSoNoH12vnvMVeMHUCfYyVNhQ==", + "version": "0.111.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.111.1.tgz", + "integrity": "sha512-yo+C0a/fMsGwooxA2xd4kK/kuzSnFC8JZLsIB68mkTllLrF/nSQ8llwD82o8Vxwvisw9IPC/ZC8zqrWmkir9jQ==", "dev": true }, "flow-remove-types": { - "version": "2.109.0", - "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.109.0.tgz", - "integrity": "sha512-IN0t0foOC0ZZc05mS3Kfv7tgbdH9v/Zi0hia9pDjBmAZFld2h19JtesMLpC/57tqZiWAYNQBUV5dqE/BZ1flgQ==", + "version": "2.111.1", + "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.111.1.tgz", + "integrity": "sha512-wyabTnqjiy+tTCw5wUFhy5Eue/UehqVVCiJNzfoW3JtE/M+pstcFUFmjdrGrvOV7f0Iz7xzF71scBxH3bCVlfQ==", "dev": true, "requires": { - "flow-parser": "^0.109.0", + "flow-parser": "^0.111.1", "pirates": "^3.0.2", "vlq": "^0.2.1" } @@ -1888,9 +1913,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.0.tgz", - "integrity": "sha512-+iXhW3LuDQsno8dOIrCIT/CBjeBWuP7PXe8w9shnj9Lebny/Gx1ZjVBYwexLz36Ri2jKuXMNpV6CYNh8lHHgrQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.1.tgz", + "integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==", "dev": true, "optional": true }, @@ -2008,12 +2033,6 @@ "trim-newlines": "^1.0.0" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -2219,9 +2238,9 @@ } }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", + "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2246,9 +2265,9 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "growl": { "version": "1.10.5", @@ -2257,14 +2276,21 @@ "dev": true }, "handlebars": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.3.tgz", - "integrity": "sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", + "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", "source-map": "^0.6.1", "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "har-schema": { @@ -2604,15 +2630,14 @@ } }, "istanbul-lib-instrument": { - "version": "4.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0-alpha.1.tgz", - "integrity": "sha512-w/SgxDNsdwsD1jL1vefUzKv3drmOKWg9AFzsXdoSIS61s4zXy/O5yCWeZRePnL/a5J2/wps9nDS1g0lya1NSeQ==", + "version": "4.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0-alpha.2.tgz", + "integrity": "sha512-0zSGZ1Xxb2EQOoCW+i/fzaLUissLndYr9njE2V7ZrYHJTsKL/BkDW1byFLUM/VqTkoosERqX3e7/AbtdH16awQ==", "requires": { - "@babel/generator": "^7.6.2", + "@babel/core": "^7.6.2", "@babel/parser": "^7.6.2", "@babel/template": "^7.6.0", "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.1", "@istanbuljs/schema": "^0.1.0", "istanbul-lib-coverage": "^3.0.0-alpha.1", "semver": "^6.3.0" @@ -2665,14 +2690,22 @@ "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0-alpha.1", "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "istanbul-reports": { - "version": "3.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0-alpha.2.tgz", - "integrity": "sha512-eLug1s/pXGi+WWD3raBorQENqJWnttnlUPLlt9pCXC7Nn3yXKkGHHzvJToIxTzwVzdZkDdjAgnsdi+1P+43zHQ==", + "version": "3.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0-alpha.3.tgz", + "integrity": "sha512-rZVjflOwhnHDS9Ch8aCP71yzr9BpKKGyptl1CvXYgIM6WA6glg+yDv7hblAoG0jWOzfsC1NiGG9Wy7fue2l5KA==", "requires": { - "handlebars": "^4.4.2" + "handlebars": "^4.4.2", + "istanbul-lib-report": "^3.0.0-alpha.1" } }, "jackspeak": { @@ -2824,6 +2857,14 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "requires": { + "minimist": "^1.2.0" + } + }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -2843,9 +2884,9 @@ } }, "jsx-ast-utils": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz", - "integrity": "sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -3040,12 +3081,6 @@ "path-exists": "^3.0.0" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -3134,8 +3169,17 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, "requires": { "source-map": "^0.6.1" + }, + "dependencies": { + "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 + } } }, "mime-db": { @@ -3168,9 +3212,9 @@ } }, "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minimist-options": { "version": "3.0.2", @@ -3183,9 +3227,9 @@ } }, "minipass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.0.1.tgz", - "integrity": "sha512-2y5okJ4uBsjoD2vAbLKL9EUQPPkC0YMIp+2mZOXG3nBba++pdfJWRxx2Ewirc0pwAJYu4XtWg2EkVo1nRXuO/w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -3262,9 +3306,9 @@ "dev": true }, "node-preload": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.1.3.tgz", - "integrity": "sha512-qQs73Og6bHOCY3Bk/tq/j61dOsBgIPK30n+EF907qBJIeTf8igW/N9XcIjYu869QhtsVOCDWLEG+xliCyJyeig==" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.1.4.tgz", + "integrity": "sha512-WD9y/KDu1evYjIFDfk90OOdy0xrYp4S283aZPgoKYaiHVNwknCIGbKqG+4HMzzCy9KmllQbrefKC7meqgrw6CA==" }, "normalize-package-data": { "version": "2.5.0", @@ -3657,6 +3701,12 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "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 + }, "spawn-wrap": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz", @@ -3814,6 +3864,13 @@ "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + } } }, "optionator": { @@ -3965,8 +4022,7 @@ "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==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-type": { "version": "2.0.0", @@ -3984,9 +4040,9 @@ "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==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.0.tgz", + "integrity": "sha512-uhnEDzAbrcJ8R3g2fANnSuXZMBtkpSjxTTgn2LeSiQlfmq72enQJWdQllXW24MBLYnA1SBD2vfvx2o0Zw3Ielw==", "dev": true }, "pify": { @@ -4205,9 +4261,9 @@ "dev": true }, "react-is": { - "version": "16.10.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz", - "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", + "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==", "dev": true }, "read-pkg": { @@ -4294,9 +4350,9 @@ } }, "readdirp": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.3.tgz", - "integrity": "sha512-ZOsfTGkjO2kqeR5Mzr5RYDbTGYneSkdNKX2fOX2P5jF7vMrd/GNnIAUtDldeHHumHUCQ3V05YfWUdxMPAsRu9Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", "dev": true, "requires": { "picomatch": "^2.0.4" @@ -4415,7 +4471,6 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -4516,18 +4571,26 @@ } }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" + }, + "dependencies": { + "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 + } } }, "spawn-wrap": { @@ -4684,14 +4747,6 @@ "get-stdin": "^6.0.0", "minimist": "^1.1.0", "pkg-conf": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, "standard-version": { @@ -4925,15 +4980,14 @@ } }, "tap": { - "version": "14.6.9", - "resolved": "https://registry.npmjs.org/tap/-/tap-14.6.9.tgz", - "integrity": "sha512-impxvxJo49knWdQNctdY+hAyQGbLjGR9foNkX4B9NnotgV5tfmJNqLrFu+YluHSNhIjfqF6Ea+Pj08xPAHxfSQ==", + "version": "14.9.1", + "resolved": "https://registry.npmjs.org/tap/-/tap-14.9.1.tgz", + "integrity": "sha512-QIN6WPtrBcMf9k5U/rl1WTaclN4TY/YZnCIjsF9u6KEVwYQ6BNBs6Rkxb6Z9p3bl2lPYFKu5qHdTnwqaZKIwLQ==", "dev": true, "requires": { - "async-hook-domain": "^1.1.1", + "async-hook-domain": "^1.1.2", "bind-obj-methods": "^2.0.0", "browser-process-hrtime": "^1.0.0", - "capture-stack-trace": "^1.0.0", "chokidar": "^3.0.2", "color-support": "^1.1.0", "coveralls": "^3.0.6", @@ -4959,24 +5013,24 @@ "react": "^16.9.0", "rimraf": "^2.7.1", "signal-exit": "^3.0.0", - "source-map-support": "^0.5.13", + "source-map-support": "^0.5.16", "stack-utils": "^1.0.2", "tap-mocha-reporter": "^5.0.0", - "tap-parser": "^10.0.0", + "tap-parser": "^10.0.1", "tap-yaml": "^1.0.0", "tcompare": "^2.3.0", - "treport": "^0.4.1", + "treport": "^0.4.2", "trivial-deferred": "^1.0.1", "ts-node": "^8.3.0", "typescript": "^3.6.3", - "which": "^1.3.1", + "which": "^2.0.1", "write-file-atomic": "^3.0.0", "yaml": "^1.6.0", "yapool": "^1.0.0" }, "dependencies": { "@babel/runtime": { - "version": "7.4.5", + "version": "7.6.3", "bundled": true, "dev": true, "requires": { @@ -4984,19 +5038,19 @@ }, "dependencies": { "regenerator-runtime": { - "version": "0.13.2", + "version": "0.13.3", "bundled": true, "dev": true } } }, "@types/prop-types": { - "version": "15.7.1", + "version": "15.7.3", "bundled": true, "dev": true }, "@types/react": { - "version": "16.8.22", + "version": "16.9.5", "bundled": true, "dev": true, "requires": { @@ -5005,9 +5059,12 @@ } }, "ansi-escapes": { - "version": "3.2.0", + "version": "4.2.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "type-fest": "^0.5.2" + } }, "ansi-regex": { "version": "2.1.1", @@ -5035,7 +5092,7 @@ "dev": true }, "auto-bind": { - "version": "2.1.0", + "version": "2.1.1", "bundled": true, "dev": true, "requires": { @@ -5355,10 +5412,17 @@ "dev": true, "requires": { "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + } } }, "core-js": { - "version": "2.6.5", + "version": "2.6.10", "bundled": true, "dev": true }, @@ -5370,10 +5434,21 @@ "requires": { "lru-cache": "^4.0.1", "which": "^1.2.9" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "csstype": { - "version": "2.6.5", + "version": "2.6.7", "bundled": true, "dev": true }, @@ -5409,7 +5484,7 @@ "dev": true }, "esutils": { - "version": "2.0.2", + "version": "2.0.3", "bundled": true, "dev": true }, @@ -5469,11 +5544,12 @@ } }, "ink": { - "version": "2.3.0", + "version": "2.5.0", "bundled": true, "dev": true, "requires": { "@types/react": "^16.8.6", + "ansi-escapes": "^4.2.1", "arrify": "^1.0.1", "auto-bind": "^2.0.0", "chalk": "^2.4.1", @@ -5483,8 +5559,8 @@ "lodash.throttle": "^4.1.1", "log-update": "^3.0.0", "prop-types": "^15.6.2", - "react-reconciler": "^0.20.0", - "scheduler": "^0.13.2", + "react-reconciler": "^0.21.0", + "scheduler": "^0.15.0", "signal-exit": "^3.0.2", "slice-ansi": "^1.0.0", "string-length": "^2.0.0", @@ -5493,11 +5569,6 @@ "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, @@ -5516,24 +5587,6 @@ "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, @@ -5541,16 +5594,6 @@ "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" - } } } }, @@ -5614,6 +5657,15 @@ "shebang-command": "^1.2.0", "which": "^1.2.9" } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -5633,7 +5685,7 @@ "dev": true }, "lodash": { - "version": "4.17.14", + "version": "4.17.15", "bundled": true, "dev": true }, @@ -5643,7 +5695,7 @@ "dev": true }, "log-update": { - "version": "3.2.0", + "version": "3.3.0", "bundled": true, "dev": true, "requires": { @@ -5652,46 +5704,10 @@ "wrap-ansi": "^5.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", + "ansi-escapes": { + "version": "3.2.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" - } } } }, @@ -5703,6 +5719,11 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, "minimatch": { "version": "3.0.4", "bundled": true, @@ -5712,7 +5733,7 @@ } }, "minipass": { - "version": "3.0.0", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { @@ -5762,13 +5783,6 @@ "dev": true, "requires": { "mimic-fn": "^1.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - } } }, "os-homedir": { @@ -5813,7 +5827,7 @@ "dev": true }, "react": { - "version": "16.9.0", + "version": "16.10.2", "bundled": true, "dev": true, "requires": { @@ -5823,19 +5837,19 @@ } }, "react-is": { - "version": "16.8.6", + "version": "16.10.2", "bundled": true, "dev": true }, "react-reconciler": { - "version": "0.20.4", + "version": "0.21.0", "bundled": true, "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.6" + "scheduler": "^0.15.0" } }, "redeyed": { @@ -5882,13 +5896,8 @@ "glob": "^7.1.3" } }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true - }, "scheduler": { - "version": "0.13.6", + "version": "0.15.0", "bundled": true, "dev": true, "requires": { @@ -5997,7 +6006,7 @@ "dev": true }, "tap-parser": { - "version": "10.0.0", + "version": "10.0.1", "bundled": true, "dev": true, "requires": { @@ -6020,7 +6029,7 @@ "dev": true }, "treport": { - "version": "0.4.1", + "version": "0.4.2", "bundled": true, "dev": true, "requires": { @@ -6031,7 +6040,7 @@ "ms": "^2.1.1", "react": "^16.8.6", "string-length": "^2.0.0", - "tap-parser": "^10.0.0", + "tap-parser": "^10.0.1", "unicode-length": "^2.0.1" }, "dependencies": { @@ -6082,14 +6091,10 @@ "bundled": true, "dev": true }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } + "type-fest": { + "version": "0.5.2", + "bundled": true, + "dev": true }, "widest-line": { "version": "2.0.1", @@ -6099,12 +6104,55 @@ "string-width": "^2.1.1" } }, + "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" + }, + "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" + } + } + } + }, "yaml": { - "version": "1.6.0", + "version": "1.7.1", "bundled": true, "dev": true, "requires": { - "@babel/runtime": "^7.4.5" + "@babel/runtime": "^7.5.5" } }, "yoga-layout-prebuilt": { @@ -6181,9 +6229,9 @@ } }, "tap-parser": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-10.0.0.tgz", - "integrity": "sha512-kzeUPvVoSyovAlYvN8m8eajjh1LAJpGn8C3hVIbq7TDW6FDzuH09egdJZMczG4bDdc7+uQSqOlin+XKRLtHbeA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-10.0.1.tgz", + "integrity": "sha512-qdT15H0DoJIi7zOqVXDn9X0gSM68JjNy1w3VemwTJlDnETjbi6SutnqmBfjDJAwkFS79NJ97gZKqie00ZCGmzg==", "dev": true, "requires": { "events-to-array": "^1.0.1", @@ -6358,19 +6406,27 @@ } }, "typescript": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz", - "integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==", + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", + "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==", "dev": true }, "uglify-js": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz", - "integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==", + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.6.tgz", + "integrity": "sha512-q3Zusqd028P8MdbarqL0I1snTZ7+IbIWiKUXVZyXMVdOSxOG2FFqLXyGlgYSqYu46SR7tR3Sk0xqN1VtvxGWnQ==", "optional": true, "requires": { - "commander": "2.20.0", + "commander": "~2.20.3", "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } } }, "unicode-length": { @@ -6502,9 +6558,9 @@ } }, "write-file-atomic": { - "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==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", + "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -6530,12 +6586,12 @@ "dev": true }, "yaml": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.1.tgz", - "integrity": "sha512-sR0mJ2C3LVBgMST+0zrrrsKSijbw64bfHmTt4nEXLZTZFyIAuUVARqA/LO5kaZav2OVQMaZ+5WRrZv7QjxG3uQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", + "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", "dev": true, "requires": { - "@babel/runtime": "^7.5.5" + "@babel/runtime": "^7.6.3" } }, "yapool": { diff --git a/package.json b/package.json index 75d6344c4..df4aee29f 100644 --- a/package.json +++ b/package.json @@ -67,14 +67,13 @@ "glob": "^7.1.4", "istanbul-lib-coverage": "^3.0.0-alpha.1", "istanbul-lib-hook": "^3.0.0-alpha.1", - "istanbul-lib-instrument": "^4.0.0-alpha.1", + "istanbul-lib-instrument": "^4.0.0-alpha.2", "istanbul-lib-processinfo": "^2.0.2", "istanbul-lib-report": "^3.0.0-alpha.1", "istanbul-lib-source-maps": "^4.0.0-alpha.2", - "istanbul-reports": "^3.0.0-alpha.2", + "istanbul-reports": "^3.0.0-alpha.3", "js-yaml": "^3.13.1", "make-dir": "^3.0.0", - "merge-source-map": "^1.1.0", "p-map": "^3.0.0", "node-preload": "^0.1.3", "resolve-from": "^5.0.0", diff --git a/tap-snapshots/test-instrument.js-TAP.test.js b/tap-snapshots/test-instrument.js-TAP.test.js new file mode 100644 index 000000000..f1638f0e9 --- /dev/null +++ b/tap-snapshots/test-instrument.js-TAP.test.js @@ -0,0 +1,17 @@ +/* IMPORTANT + * This snapshot file is auto-generated, but designed for humans. + * It should be checked into source control and tracked carefully. + * Re-generate by setting TAP_SNAPSHOT=1 and running tests. + * Make sure to inspect the output below. Do not ignore changes! + */ +'use strict' +exports[`test/instrument.js TAP can write files in place with --in-place switch > stdout 1`] = ` +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 0 | 100 | 0 | 0 | + file1.js | 0 | 100 | 0 | 0 | 2,5 + file2.js | 0 | 100 | 0 | 0 | 2,5 +----------|---------|----------|---------|---------|------------------- + +` diff --git a/test/instrument.js b/test/instrument.js index b8127ed2c..6614d49fd 100644 --- a/test/instrument.js +++ b/test/instrument.js @@ -10,7 +10,7 @@ const cpFile = require('cp-file') const isWindows = require('is-windows')() const rimraf = promisify(require('rimraf')) -const { runNYC, fixturesCLI } = require('./helpers') +const { runNYC, testSuccess, fixturesCLI } = require('./helpers') const subdir = path.resolve(fixturesCLI, 'subdir') const outputDir = path.resolve(subdir, './output-dir') @@ -264,6 +264,11 @@ t.test('can write files in place with --in-place switch', async t => { const file2 = path.resolve(outputDir, 'file2.js') t.notMatch(await fs.readFile(file2, 'utf8'), /function cov_/) + + await testSuccess(t, { + args: ['--all', process.execPath, '-e', ''], + cwd: outputDir + }) }) t.test('aborts if trying to delete while writing files in place', async t => {