From a565a77700b96956f2c8e74c058b01ac5cfb7572 Mon Sep 17 00:00:00 2001 From: Joseph Weissman <61561354+CypressJoseph@users.noreply.github.com> Date: Mon, 9 Mar 2020 00:02:43 -0400 Subject: [PATCH 01/11] =?UTF-8?q?Characterize=20overloaded=20signatures=20?= =?UTF-8?q?of=20cy.clearLocalStorage=20more=E2=80=A6=20(#6652)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Characterize overloaded signatures of cy.clearLocalStorage more carefully * capture clearLocalStorage signatures in kitchen sink tests --- cli/types/index.d.ts | 37 ++++++++++++++++++++++++++++++--- cli/types/tests/kitchen-sink.ts | 6 ++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/cli/types/index.d.ts b/cli/types/index.d.ts index 021d674d4aa7..ac62fc01bfe4 100644 --- a/cli/types/index.d.ts +++ b/cli/types/index.d.ts @@ -622,12 +622,12 @@ declare namespace Cypress { * @param {string} [key] - name of a particular item to remove (optional). * @example ``` - // removes all local storage keys + // Removes all local storage keys cy.clearLocalStorage() .should(ls => { expect(ls.getItem('prop1')).to.be.null }) - // removes item "todos" + // Removes item "todos" cy.clearLocalStorage("todos") ``` */ @@ -639,11 +639,42 @@ declare namespace Cypress { * @param {RegExp} re - regular expression to match. * @example ``` - // Clear all local storage matching /app-/ + // Clears all local storage matching /app-/ cy.clearLocalStorage(/app-/) ``` */ clearLocalStorage(re: RegExp): Chainable + /** + * Clear data in local storage. + * Cypress automatically runs this command before each test to prevent state from being + * shared across tests. You shouldn’t need to use this command unless you’re using it + * to clear localStorage inside a single test. Yields `localStorage` object. + * + * @see https://on.cypress.io/clearlocalstorage + * @param {options} [object] - options object + * @example + ``` + // Removes all local storage items, without logging + cy.clearLocalStorage({ log: false }) + ``` + */ + clearLocalStorage(options: Partial): Chainable + /** + * Clear data in local storage. + * Cypress automatically runs this command before each test to prevent state from being + * shared across tests. You shouldn’t need to use this command unless you’re using it + * to clear localStorage inside a single test. Yields `localStorage` object. + * + * @see https://on.cypress.io/clearlocalstorage + * @param {string} [key] - name of a particular item to remove (optional). + * @param {options} [object] - options object + * @example + ``` + // Removes item "todos" without logging + cy.clearLocalStorage("todos", { log: false }) + ``` + */ + clearLocalStorage(key: string, options: Partial): Chainable /** * Click a DOM element. diff --git a/cli/types/tests/kitchen-sink.ts b/cli/types/tests/kitchen-sink.ts index 63b83adbe3c5..4a2b56dec9c9 100644 --- a/cli/types/tests/kitchen-sink.ts +++ b/cli/types/tests/kitchen-sink.ts @@ -116,3 +116,9 @@ const obj = { foo: () => { } } cy.spy(obj, 'foo').as('my-spy') + +// clearLocalStorage signatures +cy.clearLocalStorage() +cy.clearLocalStorage('todos') +cy.clearLocalStorage('todos', { log: false }) +cy.clearLocalStorage({ log: false }) From 2a0bc3270076c3535730852b13e7dd8e77518d5d Mon Sep 17 00:00:00 2001 From: Gleb Bahmutov Date: Mon, 9 Mar 2020 09:27:54 -0400 Subject: [PATCH 02/11] cypress cache list prints last accessed date (#6627) * get last access timestamps and print with cache versions * remove done TODO * start trying to save HTML but only after snapshot text is confirmed * store cli test output HTML as static pages * set our color for table heading * make code readable * lock file again * update saved HTML file * refactor cache spec * add test with no access time: --- circle.yml | 4 +- cli/__snapshots__/cache_spec.js | 28 ++- cli/lib/tasks/cache.js | 63 +++++- cli/package.json | 1 + cli/test/html/list-of-versions.html | 27 +++ cli/test/html/second-binary-never-used.html | 27 +++ cli/test/lib/tasks/cache_spec.js | 92 +++++++- package.json | 2 +- yarn.lock | 232 ++++++++++---------- 9 files changed, 350 insertions(+), 126 deletions(-) create mode 100644 cli/test/html/list-of-versions.html create mode 100644 cli/test/html/second-binary-never-used.html diff --git a/circle.yml b/circle.yml index a201a95bda8a..1d3e244797f6 100644 --- a/circle.yml +++ b/circle.yml @@ -269,7 +269,6 @@ jobs: at: ~/ - run: mkdir -p cli/visual-snapshots - run: - # TODO sanitize "cypress info" output to be consistent command: node cli/bin/cypress info --dev | yarn --silent term-to-html | node scripts/sanitize --type cli-info > cli/visual-snapshots/cypress-info.html environment: FORCE_COLOR: 2 @@ -305,6 +304,9 @@ jobs: expectedResultCount: 6 - store_test_results: path: /tmp/cypress + # CLI tests generate HTML files with sample CLI command output + - store_artifacts: + path: cli/test/html - store-npm-logs lint-types: diff --git a/cli/__snapshots__/cache_spec.js b/cli/__snapshots__/cache_spec.js index 2811dd1a121a..f4809c8128db 100644 --- a/cli/__snapshots__/cache_spec.js +++ b/cli/__snapshots__/cache_spec.js @@ -3,9 +3,35 @@ exports['lib/tasks/cache .clear deletes cache folder and everything inside it 1' ` exports['lib/tasks/cache .list lists all versions of cached binary 1'] = ` -1.2.3, 2.3.4 +┌─────────┬───────────┐ +│ version │ last used │ +├─────────┼───────────┤ +│ 1.2.3 │ unknown │ +├─────────┼───────────┤ +│ 2.3.4 │ unknown │ +└─────────┴───────────┘ ` exports['lib/tasks/cache .path lists path to cache 1'] = ` /.cache/Cypress ` + +exports['lib/tasks/cache .list lists all versions of cached binary with last access 1'] = ` +┌─────────┬──────────────┐ +│ version │ last used │ +├─────────┼──────────────┤ +│ 1.2.3 │ 3 months ago │ +├─────────┼──────────────┤ +│ 2.3.4 │ 5 days ago │ +└─────────┴──────────────┘ +` + +exports['lib/tasks/cache .list some versions have never been opened 1'] = ` +┌─────────┬──────────────┐ +│ version │ last used │ +├─────────┼──────────────┤ +│ 1.2.3 │ 3 months ago │ +├─────────┼──────────────┤ +│ 2.3.4 │ unknown │ +└─────────┴──────────────┘ +` diff --git a/cli/lib/tasks/cache.js b/cli/lib/tasks/cache.js index 83d3ebd61687..4cd9371ec4d9 100644 --- a/cli/lib/tasks/cache.js +++ b/cli/lib/tasks/cache.js @@ -2,7 +2,20 @@ const state = require('./state') const logger = require('../logger') const fs = require('../fs') const util = require('../util') +const { join } = require('path') +const Table = require('cli-table3') +const moment = require('moment') +const chalk = require('chalk') +const _ = require('lodash') +// output colors for the table +const colors = { + titles: chalk.white, + dates: chalk.cyan, + values: chalk.green, +} + +// TODO: rename this function const path = () => { logger.log(state.getCacheDir()) @@ -15,15 +28,59 @@ const clear = () => { const list = () => { return getCachedVersions() - .then((versions) => { - logger.log(versions.join(', ')) + .then((binaries) => { + const table = new Table({ + head: [colors.titles('version'), colors.titles('last used')], + }) + + binaries.forEach((binary) => { + const versionString = colors.values(binary.version) + const lastUsed = binary.accessed ? colors.dates(binary.accessed) : 'unknown' + + return table.push([versionString, lastUsed]) + }) + + logger.log(table.toString()) }) } const getCachedVersions = () => { + const cacheDir = state.getCacheDir() + return fs - .readdirAsync(state.getCacheDir()) + .readdirAsync(cacheDir) .filter(util.isSemver) + .map((version) => { + return { + version, + folderPath: join(cacheDir, version), + } + }) + .mapSeries((binary) => { + // last access time on the folder is different from last access time + // on the Cypress binary + const binaryDir = state.getBinaryDir(binary.version) + const executable = state.getPathToExecutable(binaryDir) + + return fs.statAsync(executable).then((stat) => { + const lastAccessedTime = _.get(stat, 'atime') + + if (!lastAccessedTime) { + // the test runner has never been opened + // or could be a test simulating missing timestamp + return binary + } + + const accessed = moment(lastAccessedTime).fromNow() + + binary.accessed = accessed + + return binary + }, (e) => { + // could not find the binary or gets its stats + return binary + }) + }) } module.exports = { diff --git a/cli/package.json b/cli/package.json index 21e159d6b55b..0e6a999b5d56 100644 --- a/cli/package.json +++ b/cli/package.json @@ -28,6 +28,7 @@ "cachedir": "2.3.0", "chalk": "2.4.2", "check-more-types": "2.24.0", + "cli-table3": "0.5.1", "commander": "4.1.0", "common-tags": "1.8.0", "debug": "4.1.1", diff --git a/cli/test/html/list-of-versions.html b/cli/test/html/list-of-versions.html new file mode 100644 index 000000000000..f31e4f4c3ebd --- /dev/null +++ b/cli/test/html/list-of-versions.html @@ -0,0 +1,27 @@ + + + + + + +
┌─────────┬──────────────┐
+│ versionlast used    │
+├─────────┼──────────────┤
+│ 1.2.33 months ago │
+├─────────┼──────────────┤
+│ 2.3.45 days ago   │
+└─────────┴──────────────┘
+
\ No newline at end of file diff --git a/cli/test/html/second-binary-never-used.html b/cli/test/html/second-binary-never-used.html new file mode 100644 index 000000000000..705b278e1096 --- /dev/null +++ b/cli/test/html/second-binary-never-used.html @@ -0,0 +1,27 @@ + + + + + + +
┌─────────┬──────────────┐
+│ versionlast used    │
+├─────────┼──────────────┤
+│ 1.2.33 months ago │
+├─────────┼──────────────┤
+│ 2.3.4   │ unknown      │
+└─────────┴──────────────┘
+
\ No newline at end of file diff --git a/cli/test/lib/tasks/cache_spec.js b/cli/test/lib/tasks/cache_spec.js index 7036d12b2871..bfb08406b026 100644 --- a/cli/test/lib/tasks/cache_spec.js +++ b/cli/test/lib/tasks/cache_spec.js @@ -7,6 +7,12 @@ const state = require(`${lib}/tasks/state`) const cache = require(`${lib}/tasks/cache`) const stdout = require('../../support/stdout') const snapshot = require('../../support/snapshot') +const moment = require('moment') +const stripAnsi = require('strip-ansi') +const path = require('path') +const termToHtml = require('term-to-html') + +const outputHtmlFolder = path.join(__dirname, '..', '..', 'html') describe('lib/tasks/cache', () => { beforeEach(() => { @@ -22,20 +28,54 @@ describe('lib/tasks/cache', () => { }) sinon.stub(state, 'getCacheDir').returns('/.cache/Cypress') + sinon.stub(state, 'getBinaryDir').returns('/.cache/Cypress') this.stdout = stdout.capture() }) + const getSnapshotText = () => { + this.stdout = this.stdout.toString().split('\n').slice(0, -1).join('\n') + const stdoutAsString = this.stdout.toString() || '[no output]' + + // first restore the STDOUT, then confirm the value + // otherwise the error might not even appear or appear twice! + stdout.restore() + + return stdoutAsString + } + + const saveHtml = async (filename, html) => { + await fs.ensureDirAsync(outputHtmlFolder) + const htmlFilename = path.join(outputHtmlFolder, filename) + + await fs.writeFileAsync(htmlFilename, html, 'utf8') + } + afterEach(() => { mockfs.restore() - this.stdout = this.stdout.toString().split('\n').slice(0, -2).join('\n') - snapshot(this.stdout.toString() || '[no output]') - stdout.restore() }) + const defaultSnapshot = () => { + const stdoutAsString = getSnapshotText() + + snapshot(stripAnsi(stdoutAsString)) + } + + const snapshotWithHtml = async (htmlFilename) => { + const stdoutAsString = getSnapshotText() + + snapshot(stripAnsi(stdoutAsString)) + + // if the sanitized snapshot matches, let's save the ANSI colors converted into HTML + const html = termToHtml.strings(stdoutAsString, termToHtml.themes.dark.name) + + await saveHtml(htmlFilename, html) + } + describe('.path', () => { it('lists path to cache', () => { cache.path() expect(this.stdout.toString()).to.eql('/.cache/Cypress\n') + defaultSnapshot() }) }) @@ -45,18 +85,54 @@ describe('lib/tasks/cache', () => { .then(() => { return fs.pathExistsAsync('/.cache/Cypress') .then((exists) => { - return expect(exists).to.eql(false) + expect(exists).to.eql(false) + defaultSnapshot() }) }) }) }) describe('.list', () => { - it('lists all versions of cached binary', () => { - return cache.list() - .then(() => { - expect(this.stdout.toString()).to.eql('1.2.3, 2.3.4\n') + it('lists all versions of cached binary', async function () { + // unknown access times + sinon.stub(state, 'getPathToExecutable').returns('/.cache/Cypress/1.2.3/app/cypress') + + await cache.list() + + defaultSnapshot() + }) + + it('lists all versions of cached binary with last access', async function () { + sinon.stub(state, 'getPathToExecutable').returns('/.cache/Cypress/1.2.3/app/cypress') + + const statAsync = sinon.stub(fs, 'statAsync') + + statAsync.onFirstCall().resolves({ + atime: moment().subtract(3, 'month').valueOf(), + }) + + statAsync.onSecondCall().resolves({ + atime: moment().subtract(5, 'day').valueOf(), }) + + await cache.list() + await snapshotWithHtml('list-of-versions.html') + }) + + it('some versions have never been opened', async function () { + sinon.stub(state, 'getPathToExecutable').returns('/.cache/Cypress/1.2.3/app/cypress') + + const statAsync = sinon.stub(fs, 'statAsync') + + statAsync.onFirstCall().resolves({ + atime: moment().subtract(3, 'month').valueOf(), + }) + + // the second binary has never been accessed + statAsync.onSecondCall().resolves() + + await cache.list() + await snapshotWithHtml('second-binary-never-used.html') }) }) }) diff --git a/package.json b/package.json index 85e80c7ff1d2..67496f2e04b7 100644 --- a/package.json +++ b/package.json @@ -176,7 +176,7 @@ "snap-shot-it": "7.9.1", "stop-only": "3.0.1", "strip-ansi": "4.0.0", - "term-to-html": "1.0.0", + "term-to-html": "1.2.0", "terminal-banner": "1.1.0", "through": "2.3.8", "ts-node": "8.3.0", diff --git a/yarn.lock b/yarn.lock index 20993c625fe9..aff90f13bf17 100644 --- a/yarn.lock +++ b/yarn.lock @@ -85,17 +85,17 @@ source-map "^0.5.0" "@babel/core@^7.0.1", "@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.8.0": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.6.tgz#27d7df9258a45c2e686b6f18b6c659e563aa4636" - integrity sha512-Sheg7yEJD51YHAvLEV/7Uvw95AeWqYPL3Vk3zGujJKIhJ+8oLw2ALaf3hbucILhKsgSoADOvtKRJuNVdcJkOrg== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" + integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.6" + "@babel/generator" "^7.8.7" "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.6" + "@babel/parser" "^7.8.7" "@babel/template" "^7.8.6" "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/types" "^7.8.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -105,12 +105,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.4.4", "@babel/generator@^7.8.0", "@babel/generator@^7.8.4", "@babel/generator@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.6.tgz#57adf96d370c9a63c241cd719f9111468578537a" - integrity sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg== +"@babel/generator@^7.4.0", "@babel/generator@^7.4.4", "@babel/generator@^7.8.0", "@babel/generator@^7.8.4", "@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.7.tgz#870b3cf7984f5297998152af625c4f3e341400f7" + integrity sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew== dependencies: - "@babel/types" "^7.8.6" + "@babel/types" "^7.8.7" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -138,22 +138,22 @@ "@babel/types" "^7.8.3" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" - integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== dependencies: "@babel/helper-hoist-variables" "^7.8.3" "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" -"@babel/helper-compilation-targets@^7.8.4", "@babel/helper-compilation-targets@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.6.tgz#015b85db69e3a34240d5c2b761fc53eb9695f09c" - integrity sha512-UrJdk27hKVJSnibFcUWYLkCL0ZywTUoot8yii1lsHJcvwrypagmYKjHLMWivQPm4s6GdyygCL8fiH5EYLxhQwQ== +"@babel/helper-compilation-targets@^7.8.4", "@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== dependencies: "@babel/compat-data" "^7.8.6" - browserslist "^4.8.5" + browserslist "^4.9.1" invariant "^2.2.4" levenary "^1.1.1" semver "^5.5.0" @@ -329,10 +329,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5", "@babel/parser@^7.8.0", "@babel/parser@^7.8.4", "@babel/parser@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.6.tgz#ba5c9910cddb77685a008e3c587af8d27b67962c" - integrity sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5", "@babel/parser@^7.8.0", "@babel/parser@^7.8.4", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.7.tgz#7b8facf95d25fef9534aad51c4ffecde1a61e26a" + integrity sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A== "@babel/plugin-proposal-async-generator-functions@^7.2.0", "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" @@ -710,12 +710,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.4.4", "@babel/plugin-transform-parameters@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" - integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== +"@babel/plugin-transform-parameters@^7.4.4", "@babel/plugin-transform-parameters@^7.8.4", "@babel/plugin-transform-parameters@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.7.tgz#66fa2f1de4129b4e0447509223ac71bda4955395" + integrity sha512-brYWaEPTRimOctz2NDA3jnBbDi7SVN2T4wYuu0aqSzxC3nozFZngGaw29CJ9ZPweB7k+iFmZuoG3IVPIcXmD2g== dependencies: - "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-call-delegate" "^7.8.7" "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -758,12 +758,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.4.4", "@babel/plugin-transform-regenerator@^7.4.5", "@babel/plugin-transform-regenerator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" - integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== +"@babel/plugin-transform-regenerator@^7.4.4", "@babel/plugin-transform-regenerator@^7.4.5", "@babel/plugin-transform-regenerator@^7.8.3", "@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== dependencies: - regenerator-transform "^0.14.0" + regenerator-transform "^0.14.2" "@babel/plugin-transform-reserved-words@^7.2.0", "@babel/plugin-transform-reserved-words@^7.8.3": version "7.8.3" @@ -830,9 +830,9 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-typescript@^7.3.2", "@babel/plugin-transform-typescript@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz#be6f01a7ef423be68e65ace1f04fc407e6d88917" - integrity sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.7.tgz#48bccff331108a7b3a28c3a4adc89e036dc3efda" + integrity sha512-7O0UsPQVNKqpHeHLpfvOG4uXmlw+MOxYvUv6Otc9uH5SYMIxvF6eBdjkWvC3f9G+VXe0RsNExyAQBeTRug/wqQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -1026,12 +1026,12 @@ semver "^5.5.0" "@babel/preset-env@^7.0.0", "@babel/preset-env@^7.1.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.6.tgz#2a0773b08589ecba4995fc71b1965e4f531af40b" - integrity sha512-M5u8llV9DIVXBFB/ArIpqJuvXpO+ymxcJ6e8ZAmzeK3sQeBNOD1y+rHvHCGG4TlEmsNpIrdecsHGHT8ZCoOSJg== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" + integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== dependencies: "@babel/compat-data" "^7.8.6" - "@babel/helper-compilation-targets" "^7.8.6" + "@babel/helper-compilation-targets" "^7.8.7" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-proposal-async-generator-functions" "^7.8.3" @@ -1071,9 +1071,9 @@ "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-parameters" "^7.8.7" "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" "@babel/plugin-transform-reserved-words" "^7.8.3" "@babel/plugin-transform-shorthand-properties" "^7.8.3" "@babel/plugin-transform-spread" "^7.8.3" @@ -1081,7 +1081,7 @@ "@babel/plugin-transform-template-literals" "^7.8.3" "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/types" "^7.8.6" + "@babel/types" "^7.8.7" browserslist "^4.8.5" core-js-compat "^3.6.2" invariant "^2.2.2" @@ -1171,12 +1171,12 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" - integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== dependencies: - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.4" "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": version "7.8.6" @@ -1202,10 +1202,10 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.8.3", "@babel/types@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.6.tgz#629ecc33c2557fcde7126e58053127afdb3e6d01" - integrity sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== dependencies: esutils "^2.0.2" lodash "^4.17.13" @@ -1545,14 +1545,15 @@ lodash.once "^4.1.1" "@electron/get@^1.0.1", "@electron/get@^1.6.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.8.0.tgz#b10320e2b0ec55165e097862695be34b236ef0b5" - integrity sha512-p9q2KNfN12lhLzcSJwjOKbHHZcPCP+DMHXWLE/nFzJfyFDiPFAvOgLdKwz8WvGfzn2Y8YtYk1BhqvaNRow78ag== + version "1.9.0" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.9.0.tgz#7fa6e61d7ff50fb82a8a41f437af7de3b97aa9a5" + integrity sha512-OBIKtF6ttIJotDXe4KJMUyTBO4xMii+mFjlA8R4CORuD4HvCUaCK3lPjhdTRCvuEv6gzWNbAvd9DNBv0v780lw== dependencies: debug "^4.1.1" env-paths "^2.2.0" fs-extra "^8.1.0" got "^9.6.0" + progress "^2.0.3" sanitize-filename "^1.6.2" sumchecker "^3.0.1" optionalDependencies: @@ -4646,7 +4647,7 @@ arg@4.1.2: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.2.tgz#e70c90579e02c63d80e3ad4e31d8bfdb8bd50064" integrity sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg== -arg@^4.1.0: +arg@4.1.3, arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== @@ -5163,9 +5164,9 @@ aws-sdk@2.447.0: xml2js "0.4.19" aws-sdk@^2.389.0: - version "2.632.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.632.0.tgz#d36ac406b3d45dc3cab88c2859b389b822828409" - integrity sha512-8Ewnxpi1jWN/nTc4ngDqeAiReqlib0SfIPQFHNozyJFOdOW6ERKd/hGdrci9qXJIn8NYQj82QsR3JTjjFzG9Zg== + version "2.634.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.634.0.tgz#95077c191107b9cb696e922b06e79949dcd13434" + integrity sha512-cZfRD7bcKBHOLoHUJuqB9xaLs/z1/xsc9zfGLIzyuxKLJa7Z0pxy8Y/0GrhWO98yXLBvLLET7btj2iDI2oWWhQ== dependencies: buffer "4.9.1" events "1.1.1" @@ -6303,12 +6304,12 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bl@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88" - integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A== +bl@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.1.tgz#8c9b4fb754e80cc86463077722be7b88b4af3f42" + integrity sha512-FL/TdvchukRCuWVxT0YMO/7+L5TNeNrVFvRU2IY63aUyv9mpt8splf2NEr6qXtPo5fya5a66YohQKvGNmLrWNA== dependencies: - readable-stream "^3.0.1" + readable-stream "^3.4.0" bl@~1.0.0: version "1.0.3" @@ -6558,8 +6559,8 @@ brorand@^1.0.1: integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= "browser-logos@github:alrra/browser-logos": - version "62.2.18" - resolved "https://codeload.github.com/alrra/browser-logos/tar.gz/b0ae362843747dcfb3cc1922469ba975ec493fd7" + version "62.2.19" + resolved "https://codeload.github.com/alrra/browser-logos/tar.gz/edcfe4dcd6d0cccada291c3550f7032e5c5f6706" browser-pack@^6.0.1: version "6.1.0" @@ -6573,10 +6574,10 @@ browser-pack@^6.0.1: through2 "^2.0.0" umd "^3.0.0" -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browser-resolve@1.11.3, browser-resolve@^1.11.0, browser-resolve@^1.11.3, browser-resolve@^1.7.0: version "1.11.3" @@ -6816,7 +6817,7 @@ browserify@^16.1.0: vm-browserify "^1.0.0" xtend "^4.0.0" -browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.8.3, browserslist@^4.8.5: +browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: version "4.9.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== @@ -7206,9 +7207,9 @@ camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: - version "1.0.30001031" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001031.tgz#76f1bdd39e19567b855302f65102d9a8aaad5930" - integrity sha512-DpAP5a1NGRLgYfaNCaXIRyGARi+3tJA2quZXNNA1Du26VyVkqvy2tznNu5ANyN1Y5aX44QDotZSVSUSi2uMGjg== + version "1.0.30001032" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001032.tgz#b8d224914e2cd7f507085583d4e38144c652bce4" + integrity sha512-8joOm7BwcpEN4BfVHtfh0hBXSAPVYk+eUIcNntGtMkUWy/6AKRCDZINCLe3kB1vHhT2vBxBF85Hh9VlPXi/qjA== capture-exit@^2.0.0: version "2.0.0" @@ -9884,9 +9885,9 @@ electron-publish@20.39.0: mime "^2.4.0" electron-to-chromium@^1.3.363: - version "1.3.367" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.367.tgz#48abffcaa6591051b612ae70ddc657763ede2662" - integrity sha512-GCHQreWs4zhKA48FNXCjvpV4kTnKoLu2PSAfKX394g34NPvTs2pPh1+jzWitNwhmOYI8zIqt36ulRVRZUgqlfA== + version "1.3.370" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.370.tgz#420fba483d30ba3f7965b30ecf850fdb5f08a0bc" + integrity sha512-399cXDE9C7qoVF2CUgCA/MLflfvxbo1F0kB/pkB94426freL/JgZ0HNaloomsOfnE+VC/qgTFZqzmivSdaNfPQ== electron@7.1.13: version "7.1.13" @@ -11451,9 +11452,9 @@ flora-colossus@^1.0.0: fs-extra "^7.0.0" flow-parser@0.*, flow-parser@^0.*: - version "0.119.1" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.119.1.tgz#c120c402e164c7e9379a8d84b2c838adaaa0e610" - integrity sha512-yFd4z6ZBXq//TJo/gtSzGKhz6wEVeI2m+6JB25JzXuRAOhM5Ze4xFkc3FSIStbYjrAx4H1IUiUTI/yy30oKp8A== + version "0.120.1" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.120.1.tgz#26781130575fee4a45ecae0240b9d037e2746b72" + integrity sha512-t5y9QoOegJuY+LCIjh0p6SGF7ItsxG5ycQApTSqWloutUZQ2gC0f6wMu91dab0/SSj2vH41bu5pDTLuvtP49ng== fluent-ffmpeg@2.1.2: version "2.1.2" @@ -13509,9 +13510,9 @@ inquirer@^6.2.0: through "^2.3.6" inquirer@^7.0.0: - version "7.0.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.5.tgz#fb95b238ba19966c1a1f55db53c3f0ce5c9e4275" - integrity sha512-6Z5cP+LAO0rzNE7xWjWtT84jxKa5ScLEGLgegPXeO3dGeU8lNe5Ii7SlXH6KVtLGlDuaEhsvsFjrjWjw8j5lFg== + version "7.0.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.6.tgz#ee4ff0ea7ecda5324656fe665878790f66df7d0c" + integrity sha512-7SVO4h+QIdMq6XcqIqrNte3gS5MzCCKZdsq9DO4PJziBFNYzP3PGFbDjgadDb//MCahzgjCxvQ/O2wa7kx9o4w== dependencies: ansi-escapes "^4.2.1" chalk "^3.0.0" @@ -16057,9 +16058,9 @@ macos-release@^2.2.0: integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== magic-string@^0.25.1, magic-string@^0.25.3: - version "0.25.6" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.6.tgz#5586387d1242f919c6d223579cc938bf1420795e" - integrity sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g== + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: sourcemap-codec "^1.4.4" @@ -17078,9 +17079,9 @@ nanomatch@^1.2.9: to-regex "^3.0.1" napi-build-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508" - integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== native-or-lie@1.0.2: version "1.0.2" @@ -20018,7 +20019,7 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1: +"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -20248,6 +20249,11 @@ regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.2, regenerator-runtime@^0 resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-runtime@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91" + integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g== + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -20257,12 +20263,13 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regenerator-transform@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" - integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== +regenerator-transform@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.2.tgz#949d9d87468ff88d5a7e4734ebb994a892de1ff2" + integrity sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ== dependencies: - private "^0.1.6" + "@babel/runtime" "^7.8.4" + private "^0.1.8" regenerator@0.8.40: version "0.8.40" @@ -22786,11 +22793,11 @@ tar-stream@^1.5.0: xtend "^4.0.0" tar-stream@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" - integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw== + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.1.tgz#e188b1dd74b940b9efc4a832a9a2dc957845937c" + integrity sha512-GZjLk64XcE/58qwIc1ZfXGqTSE4OutPMEkfBE/oh9eJ4x1eMRjYkgrLrav7PzddpvIpSJSGi8FgNNYXdB9Vumg== dependencies: - bl "^3.0.0" + bl "^4.0.1" end-of-stream "^1.4.1" fs-constants "^1.0.0" inherits "^2.0.3" @@ -22888,12 +22895,13 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -term-to-html@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/term-to-html/-/term-to-html-1.0.0.tgz#63f413a743ead18f8acbf74e359cf35b4e250126" - integrity sha512-XiGrBBJa0+EFPF17xI3AZfD0fnRAPBjxLhO067LdwU5masQh51oMxhr6CefgVwnYz8iPfXBJRIbs68SNcdeM8w== +term-to-html@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-to-html/-/term-to-html-1.2.0.tgz#3c4654b50c70399434eb06bdd2fc838b493fe89a" + integrity sha512-SgsOxkGFBC3aXqM//Zdbf++62+11EVLPyLcIvC7SxtNybwhziZXBQeCM/Vd5CR+6shtLJjMsO8iAN5d7Zdf0NQ== dependencies: ansi-to-html "0.6.14" + arg "4.1.3" escape-html "1.0.3" terminal-banner@1.1.0: @@ -23487,9 +23495,9 @@ typescript@^3.0.3, typescript@^3.6.4: integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== typescript@next: - version "3.9.0-dev.20200303" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.0-dev.20200303.tgz#3bd95c71ef25b434659e03046e26573dc45d1851" - integrity sha512-Tw8o7nNMWUI1g6AGJKbpBx2R3jYX6rlpEycRHC+xiBAhPyM3AWldQ5No8VJHzi9zdZnbU4PCURpOAgH9eKICtQ== + version "3.9.0-dev.20200306" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.0-dev.20200306.tgz#b6ad2d66eed60fbf32176c6a2c7d5b175ddb377d" + integrity sha512-JkFUyTm70yUoyJ1uXnIQMp+PL/8D+oHOo9P9ByIknzGERSPNPP08yefNpu8DeleFKhbX3siyIvYLekKS/p2m7g== ua-parser-js@^0.7.18: version "0.7.21" @@ -24137,11 +24145,11 @@ vm-browserify@^1.0.0, vm-browserify@^1.0.1: integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: - browser-process-hrtime "^0.1.2" + browser-process-hrtime "^1.0.0" w3c-xmlserializer@^1.0.1, w3c-xmlserializer@^1.1.2: version "1.1.2" From 0105ca7d80987ded24d8892d51141efffd50397d Mon Sep 17 00:00:00 2001 From: Zach Bloomquist Date: Mon, 9 Mar 2020 13:58:56 -0400 Subject: [PATCH 03/11] Fix taking screenshots in Electron with debug logs enabled (#6684) --- packages/server/lib/browsers/electron.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/server/lib/browsers/electron.js b/packages/server/lib/browsers/electron.js index 6e83d42cefd2..7197873ee17e 100644 --- a/packages/server/lib/browsers/electron.js +++ b/packages/server/lib/browsers/electron.js @@ -231,12 +231,14 @@ module.exports = { return originalSendCommand.call(webContents.debugger, message, data) .then((res) => { - if (debug.enabled && (_.get(res, 'data.length') > 100)) { - res = _.clone(res) - res.data = `${res.data.slice(0, 100)} [truncated]` + let debugRes = res + + if (debug.enabled && (_.get(debugRes, 'data.length') > 100)) { + debugRes = _.clone(debugRes) + debugRes.data = `${debugRes.data.slice(0, 100)} [truncated]` } - debug('debugger: received response to %s: %o', message, res) + debug('debugger: received response to %s: %o', message, debugRes) return res }).catch((err) => { From f06a181caec154445b66045c1baa8c22c4d44a0c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2020 12:22:26 +0630 Subject: [PATCH 04/11] =?UTF-8?q?fix(deps):=20Update=20dependency=20@ffmpe?= =?UTF-8?q?g-installer/ffmpeg=20to=20versio=E2=80=A6=20(#6686)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Renovate Bot --- packages/server/package.json | 2 +- yarn.lock | 89 +++++++++--------------------------- 2 files changed, 22 insertions(+), 69 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index 1cb75000f62e..b5b9ffc92c9a 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -27,7 +27,7 @@ "@cypress/get-windows-proxy": "1.6.0", "@cypress/icons": "0.7.0", "@cypress/mocha-teamcity-reporter": "1.0.0", - "@ffmpeg-installer/ffmpeg": "1.0.19", + "@ffmpeg-installer/ffmpeg": "1.0.20", "ansi_up": "4.0.4", "black-hole-stream": "0.0.1", "bluebird": "3.7.0", diff --git a/yarn.lock b/yarn.lock index aff90f13bf17..650167305139 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1742,23 +1742,23 @@ resolved "https://registry.yarnpkg.com/@ffmpeg-installer/darwin-x64/-/darwin-x64-4.1.0.tgz#48e1706c690e628148482bfb64acb67472089aaa" integrity sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw== -"@ffmpeg-installer/ffmpeg@1.0.19": - version "1.0.19" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/ffmpeg/-/ffmpeg-1.0.19.tgz#2718bf06a7d215acd12fdfd05097f4e55d2d2c7e" - integrity sha512-cIhboAWGJSiQut6kE5DzljN2CO1RzYDaEJIje/RUl43yK1EQUHnpoeS9BLIulqM93o0ga9SRPKTqOgg76KYyfw== +"@ffmpeg-installer/ffmpeg@1.0.20": + version "1.0.20" + resolved "https://registry.yarnpkg.com/@ffmpeg-installer/ffmpeg/-/ffmpeg-1.0.20.tgz#d3c9c2bbcd76149468fb0886c2b3fe9e4795490b" + integrity sha512-wbgd//6OdwbFXYgV68ZyKrIcozEQpUKlvV66XHaqO2h3sFbX0jYLzx62Q0v8UcFWN21LoxT98NU2P+K0OWsKNA== optionalDependencies: "@ffmpeg-installer/darwin-x64" "4.1.0" "@ffmpeg-installer/linux-arm" "4.1.3" - "@ffmpeg-installer/linux-arm64" "4.1.3" + "@ffmpeg-installer/linux-arm64" "4.1.4" "@ffmpeg-installer/linux-ia32" "4.1.0" "@ffmpeg-installer/linux-x64" "4.1.0" "@ffmpeg-installer/win32-ia32" "4.1.0" "@ffmpeg-installer/win32-x64" "4.1.0" -"@ffmpeg-installer/linux-arm64@4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-arm64/-/linux-arm64-4.1.3.tgz#300c19a89de1fdeafb2d0983758419da7dcfa848" - integrity sha512-QBlK7H8H/ypnh619OJBASrikToEUUejGwLbl5H1UPNpZyLtlhhvvafDktISWAtR2qNHTfbi1ckLIgC6FMrE+lQ== +"@ffmpeg-installer/linux-arm64@4.1.4": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-arm64/-/linux-arm64-4.1.4.tgz#7219f3f901bb67f7926cb060b56b6974a6cad29f" + integrity sha512-dljEqAOD0oIM6O6DxBW9US/FkvqvQwgJ2lGHOwHDDwu/pX8+V0YsDL1xqHbj1DMX/+nP9rxw7G7gcUvGspSoKg== "@ffmpeg-installer/linux-arm@4.1.3": version "4.1.3" @@ -8906,7 +8906,7 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@3.2.6, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: +debug@3.2.6, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -8920,7 +8920,7 @@ debug@4.1.0: dependencies: ms "^2.1.1" -debuglog@*, debuglog@^1.0.1: +debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= @@ -9322,7 +9322,7 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== -detect-libc@^1.0.2, detect-libc@^1.0.3: +detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= @@ -13220,7 +13220,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.5, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -13348,7 +13348,7 @@ import-local@2.0.0, import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" -imurmurhash@*, imurmurhash@^0.1.4: +imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= @@ -15616,11 +15616,6 @@ lodash._basecreate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" integrity sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE= -lodash._baseindexof@*: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" - integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw= - lodash._basetostring@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" @@ -15639,29 +15634,12 @@ lodash._basevalues@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= -lodash._bindcallback@*: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= - -lodash._cacheindexof@*: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" - integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI= - -lodash._createcache@*: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" - integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM= - dependencies: - lodash._getnative "^3.0.0" - lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= -lodash._getnative@*, lodash._getnative@^3.0.0: +lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= @@ -15826,7 +15804,7 @@ lodash.reduce@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= -lodash.restparam@*, lodash.restparam@^3.0.0: +lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= @@ -17121,15 +17099,6 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -17400,22 +17369,6 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.50: version "1.1.50" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz#803c40d2c45db172d0410e4efec83aa8c6ad0592" @@ -17657,7 +17610,7 @@ npm-package-arg@^4.1.1, npm-package-arg@~4.2.1: hosted-git-info "^2.1.5" semver "^5.1.0" -npm-packlist@^1.1.6, npm-packlist@^1.4.4: +npm-packlist@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== @@ -17820,7 +17773,7 @@ npm@^4.0.3: wrappy "~1.0.2" write-file-atomic "~1.3.3" -"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: +"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -20073,7 +20026,7 @@ readable-stream@~2.2.9: string_decoder "~1.0.0" util-deprecate "~1.0.1" -readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0: +readdir-scoped-modules@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -22830,7 +22783,7 @@ tar@^2.0.0, tar@~2.2.1: fstream "^1.0.12" inherits "2" -tar@^4.4.10, tar@^4.4.12, tar@^4.4.2, tar@^4.4.8: +tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== @@ -24013,7 +23966,7 @@ v8flags@^3.0.1: dependencies: homedir-polyfill "^1.0.1" -validate-npm-package-license@*, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== From dd51b41ae28d8bdd34a13e48ca505a48a0aedecd Mon Sep 17 00:00:00 2001 From: Ben Kucera <14625260+Bkucera@users.noreply.github.com> Date: Tue, 10 Mar 2020 14:24:11 +0000 Subject: [PATCH 05/11] render ansi colors for file:preprocessor error message (#6535) * show colored spec compile errors in browser reporter --- packages/runner/package.json | 3 ++- packages/runner/src/errors/errors.scss | 4 ++-- packages/runner/src/errors/script-error.jsx | 13 +++++++++++-- packages/runner/src/errors/script-error.spec.jsx | 16 ++++++++++++++-- packages/runner/test/.mocharc.json | 5 +++++ packages/runner/test/mocha.opts | 3 --- packages/server/lib/plugins/preprocessor.coffee | 10 ++-------- .../test/unit/plugins/preprocessor_spec.coffee | 9 +++++---- packages/web-config/node-jsdom-setup.ts | 3 ++- 9 files changed, 43 insertions(+), 23 deletions(-) create mode 100644 packages/runner/test/.mocharc.json delete mode 100644 packages/runner/test/mocha.opts diff --git a/packages/runner/package.json b/packages/runner/package.json index 370e089668c8..ce43cf1ed8c9 100644 --- a/packages/runner/package.json +++ b/packages/runner/package.json @@ -10,7 +10,7 @@ "postinstall": "echo '@packages/runner needs: yarn build'", "test": "yarn test-unit", "test-debug": "yarn test-unit --inspect-brk=5566", - "test-unit": "mocha src/**/*.spec.*", + "test-unit": "mocha --config test/.mocharc.json src/**/*.spec.*", "test-watch": "yarn test-unit --watch", "watch": "webpack --watch --progress" }, @@ -23,6 +23,7 @@ "@packages/web-config": "*", "@types/enzyme": "3.10.4", "@types/react": "16.9.21", + "ansi-to-html": "0.6.14", "bluebird": "3.5.0", "chai": "4.2.0", "chai-enzyme": "1.0.0-beta.1", diff --git a/packages/runner/src/errors/errors.scss b/packages/runner/src/errors/errors.scss index 790e1ca785c1..70872d9af54a 100644 --- a/packages/runner/src/errors/errors.scss +++ b/packages/runner/src/errors/errors.scss @@ -86,10 +86,10 @@ } .script-error { - background-color: #f8f8f8; + color: #d50c26; + background-color: #fff; border: none; border-radius: 0; - color: #ec6573; overflow: auto; margin: 0; padding: 2em; diff --git a/packages/runner/src/errors/script-error.jsx b/packages/runner/src/errors/script-error.jsx index a0a6f4422cee..092881452544 100644 --- a/packages/runner/src/errors/script-error.jsx +++ b/packages/runner/src/errors/script-error.jsx @@ -1,12 +1,21 @@ import { observer } from 'mobx-react' import React from 'react' +const ansiToHtml = require('ansi-to-html') +const convert = new ansiToHtml({ + fg: '#000', + bg: '#fff', + newline: false, + escapeXML: true, + stream: false, +}) const ScriptError = observer(({ error }) => { if (!error) return null + const errorHTML = convert.toHtml(error.error) + return ( -
-      {error.error.replace(/\{newline\}/g, '\n')}
+    
     
) }) diff --git a/packages/runner/src/errors/script-error.spec.jsx b/packages/runner/src/errors/script-error.spec.jsx index 134cfcd1acad..fc72732a316f 100644 --- a/packages/runner/src/errors/script-error.spec.jsx +++ b/packages/runner/src/errors/script-error.spec.jsx @@ -5,9 +5,21 @@ import ScriptError from './script-error' describe('', () => { it('renders nothing when there is no script error', () => { - const state = { scriptError: null } - const component = shallow() + const state = { error: null } + const component = shallow() expect(component).to.be.empty }) + + it('renders ansi as colors', () => { + const state = { error: { error: `Webpack Compilation Error +   11 |  it('is true for actual jquery instances', () =>  + @ multi ./cypress/integration/dom/jquery_spec.js main[0]` } } + const component = shallow() + const { dangerouslySetInnerHTML } = component.props() + + expect(dangerouslySetInnerHTML.__html).eq(`Webpack Compilation Error + 11 | it('is true for actual jquery instances', () => + @ multi ./cypress/integration/dom/jquery_spec.js main[0]`) + }) }) diff --git a/packages/runner/test/.mocharc.json b/packages/runner/test/.mocharc.json new file mode 100644 index 000000000000..10adafe206a8 --- /dev/null +++ b/packages/runner/test/.mocharc.json @@ -0,0 +1,5 @@ +{ + "file": "test/helper.js", + "require": "../web-config/node-register", + "extension": "ts,jsx,tsx,coffee,js" +} diff --git a/packages/runner/test/mocha.opts b/packages/runner/test/mocha.opts deleted file mode 100644 index 64314467da91..000000000000 --- a/packages/runner/test/mocha.opts +++ /dev/null @@ -1,3 +0,0 @@ ---require ../web-config/node-register ---watch-extensions ts,jsx,tsx,coffee,js ---file test/helper diff --git a/packages/server/lib/plugins/preprocessor.coffee b/packages/server/lib/plugins/preprocessor.coffee index 6d07c25a2ae9..4ab1791b9b4d 100644 --- a/packages/server/lib/plugins/preprocessor.coffee +++ b/packages/server/lib/plugins/preprocessor.coffee @@ -16,15 +16,9 @@ errorMessage = (err = {}) -> .replace(/From previous event:\n?/g, "") clientSideError = (err) -> - console.log(err.stack) + console.log(err.message) err = errorMessage(err) - ## \n doesn't come through properly so preserve it so the - ## runner can do the right thing - .replace(/\n/g, '{newline}') - ## babel adds syntax highlighting for the console in the form of - ## [90m that need to be stripped out or they appear in the error message - .replace(/\[\d{1,3}m/g, '') """ (function () { @@ -93,7 +87,7 @@ module.exports = { baseEmitter.once "close", -> debug("base emitter native close event") fileObject.emit("close") -  + if not plugins.has("file:preprocessor") setDefaultPreprocessor(config) diff --git a/packages/server/test/unit/plugins/preprocessor_spec.coffee b/packages/server/test/unit/plugins/preprocessor_spec.coffee index 553a9bef672f..9f875f753e5b 100644 --- a/packages/server/test/unit/plugins/preprocessor_spec.coffee +++ b/packages/server/test/unit/plugins/preprocessor_spec.coffee @@ -125,11 +125,12 @@ describe "lib/plugins/preprocessor", -> }()) """) - it "replaces new lines with {newline} placeholder", -> - expect(preprocessor.clientSideError("with\nnew\nlines")).to.include('error: "with{newline}new{newline}lines"') - it "removes command line syntax highlighting characters", -> - expect(preprocessor.clientSideError("[30mfoo[100mbar[7mbaz")).to.include('error: "foobarbaz"') + it "does not replace new lines with {newline} placeholder", -> + expect(preprocessor.clientSideError("with\nnew\nlines")).to.include('error: "with\\nnew\\nlines"') + + it "does not remove command line syntax highlighting characters", -> + expect(preprocessor.clientSideError("[30mfoo[100mbar[7mbaz")).to.include('error: "[30mfoo[100mbar[7mbaz"') context "#errorMessage", -> it "handles error strings", -> diff --git a/packages/web-config/node-jsdom-setup.ts b/packages/web-config/node-jsdom-setup.ts index 84dd41a6507a..cbe9ae758ca3 100644 --- a/packages/web-config/node-jsdom-setup.ts +++ b/packages/web-config/node-jsdom-setup.ts @@ -75,7 +75,8 @@ export const register = ({ } // Follow browser-field spec for importing modules - if (!['path'].includes(args[0])) { + // except chalk so we dont mess up mocha coloring + if (!['path'].includes(args[0]) && !(args[1] && args[1].id.includes('chalk'))) { try { browserPkg = [bresolve.sync.apply(this, args)] } catch (e) { From c5c484e272f911967fcdce8b6c3ae6d46616189e Mon Sep 17 00:00:00 2001 From: Joseph Weissman <61561354+CypressJoseph@users.noreply.github.com> Date: Wed, 11 Mar 2020 11:00:19 -0400 Subject: [PATCH 06/11] Improve types for cy.its() with property paths (#6667) Improve types for cy.its() with property paths - provides additional signature for `cy.its()` - adds kitchen sink examples for path-based property access - improve typing for its/invoke --- cli/types/index.d.ts | 29 +++++++++++++++++++++-------- cli/types/tests/cypress-tests.ts | 22 +++++++++++++++++++--- cli/types/tests/kitchen-sink.ts | 15 ++++++++++++++- 3 files changed, 54 insertions(+), 12 deletions(-) diff --git a/cli/types/index.d.ts b/cli/types/index.d.ts index ac62fc01bfe4..fe0dfa9c2aad 100644 --- a/cli/types/index.d.ts +++ b/cli/types/index.d.ts @@ -1069,6 +1069,21 @@ declare namespace Cypress { */ hash(options?: Partial): Chainable + /** + * Invoke a function on the previously yielded subject. + * + * @see https://on.cypress.io/invoke + */ + invoke any) & Subject[K], R = ReturnType>( + functionName: K, + ...args: any[] + ): Chainable + invoke any) & Subject[K], R = ReturnType>( + options: Loggable, + functionName: K, + ...args: any[] + ): Chainable + /** * Invoke a function in an array of functions. * @see https://on.cypress.io/invoke @@ -1076,17 +1091,14 @@ declare namespace Cypress { invoke any, Subject extends T[]>(index: number): Chainable> invoke any, Subject extends T[]>(options: Loggable, index: number): Chainable> - /** - * Invoke a function on the previously yielded subject. - * This isn't possible to strongly type without generic override yet. - * If called on an object you can do this instead: `.then(s => s.show())`. - * If called on an array you can do this instead: `.each(s => s.show())`. - * From there the subject will be properly typed. + /** + * Invoke a function on the previously yielded subject by a property path. + * Property path invocation cannot be strongly-typed. + * Invoking by a property path will always result in any. * * @see https://on.cypress.io/invoke */ - invoke(functionName: keyof Subject, ...args: any[]): Chainable // don't have a way to express return types yet - invoke(options: Loggable, functionName: keyof Subject, ...args: any[]): Chainable + invoke(propertyPath: string, ...args: any[]): Chainable /** * Get a property’s value on the previously yielded subject. @@ -1099,6 +1111,7 @@ declare namespace Cypress { * cy.wrap({foo: {bar: {baz: 1}}}).its('foo.bar.baz') */ its(propertyName: K, options?: Loggable): Chainable + its(propertyPath: string, options?: Loggable): Chainable /** * Get a value by index from an array yielded from the previous command. diff --git a/cli/types/tests/cypress-tests.ts b/cli/types/tests/cypress-tests.ts index fcba490ecc49..c76fd45c03d6 100644 --- a/cli/types/tests/cypress-tests.ts +++ b/cli/types/tests/cypress-tests.ts @@ -105,15 +105,31 @@ namespace CypressItsTests { .then((s: string) => { s }) + cy.wrap({baz: { quux: '2' }}).its('baz.quux') // $ExpectType Chainable } namespace CypressInvokeTests { const returnsString = () => 'foo' const returnsNumber = () => 42 - // unfortunately could not define more precise type - // in this case it should have been "number", but so far no luck - cy.wrap([returnsString, returnsNumber]).invoke(1) // $ExpectType Chainable + cy.wrap({ a: returnsString }).invoke('a') // $ExpectType Chainable + cy.wrap({ b: returnsNumber }).invoke('b') // $ExpectType Chainable + cy.wrap({ b: returnsNumber }).invoke({ log: true }, 'b') // $ExpectType Chainable + + // challenging to define a more precise return type than string | number here + cy.wrap([returnsString, returnsNumber]).invoke(1) // $ExpectType Chainable + + // invoke through property path results in any + cy.wrap({ a: { fn: (x: number) => x * x }}).invoke('a.fn', 4) // $ExpectType Chainable + + // examples below are from previous attempt at typing `invoke` + // (see https://github.com/cypress-io/cypress/issues/4022) + + // call methods on arbitrary objects with reasonable return types + cy.wrap({ fn: () => ({a: 1})}).invoke("fn") // $ExpectType Chainable<{ a: number; }> + + // call methods on dom elements with reasonable return types + cy.get('.trigger-input-range').invoke('val', 25) // $ExpectType Chainable } cy.wrap({ foo: ['bar', 'baz'] }) diff --git a/cli/types/tests/kitchen-sink.ts b/cli/types/tests/kitchen-sink.ts index 4a2b56dec9c9..191d1853ce9b 100644 --- a/cli/types/tests/kitchen-sink.ts +++ b/cli/types/tests/kitchen-sink.ts @@ -117,7 +117,20 @@ const obj = { } cy.spy(obj, 'foo').as('my-spy') -// clearLocalStorage signatures +// use path-based access for nested structures +cy.wrap({ + foo: { + bar: 1 + } +}).its('foo.bar') + +cy.wrap({ + foo: { + quux: () => 2 + } +}).invoke('foo.quux') + +// different clearLocalStorage signatures cy.clearLocalStorage() cy.clearLocalStorage('todos') cy.clearLocalStorage('todos', { log: false }) From c650c91ac03fabb1ccddfeddef8960bc20ca70ae Mon Sep 17 00:00:00 2001 From: Jennifer Shehane Date: Wed, 11 Mar 2020 21:42:14 +0630 Subject: [PATCH 07/11] sync all 'request' deps to use the cypress fork (#6694) --- cli/package.json | 2 +- packages/https-proxy/package.json | 2 +- packages/proxy/package.json | 2 +- yarn.lock | 225 ++++++++++++++++-------------- 4 files changed, 122 insertions(+), 109 deletions(-) diff --git a/cli/package.json b/cli/package.json index 0e6a999b5d56..6c4d56c3edca 100644 --- a/cli/package.json +++ b/cli/package.json @@ -49,7 +49,7 @@ "ospath": "1.2.2", "pretty-bytes": "5.3.0", "ramda": "0.26.1", - "request": "2.88.0", + "request": "cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16", "request-progress": "3.0.0", "supports-color": "7.1.0", "tmp": "0.1.0", diff --git a/packages/https-proxy/package.json b/packages/https-proxy/package.json index fb29de9ec856..bf76354a6cb4 100644 --- a/packages/https-proxy/package.json +++ b/packages/https-proxy/package.json @@ -29,7 +29,7 @@ "chai": "3.5.0", "cross-env": "6.0.3", "mocha": "3.5.3", - "request": "2.88.0", + "request": "cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16", "request-promise": "4.2.4", "sinon": "1.17.7", "sinon-as-promised": "4.0.3", diff --git a/packages/proxy/package.json b/packages/proxy/package.json index 3ee6ef31ccdf..6da9f6cdefdb 100644 --- a/packages/proxy/package.json +++ b/packages/proxy/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@cypress/sinon-chai": "2.9.0", "@types/express": "4.17.2", - "request": "2.88.0", + "request": "cypress-io/request#b5af0d1fa47eec97ba980cde90a13e69a2afcd16", "request-promise": "4.2.5", "typescript": "3.5.3" }, diff --git a/yarn.lock b/yarn.lock index 650167305139..866705a02624 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1171,7 +1171,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== @@ -3176,9 +3176,9 @@ universal-user-agent "^4.0.0" "@octokit/types@^2.0.0", "@octokit/types@^2.0.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.3.1.tgz#40cd61c125a6161cfb3bfabc75805ac7a54213b4" - integrity sha512-rvJP1Y9A/+Cky2C3var1vsw3Lf5Rjn/0sojNl2AjCX+WbpIHYccaJ46abrZoIxMYnOToul6S9tPytUVkFI7CXQ== + version "2.3.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.3.2.tgz#63c1a786c65236a8b059024d0343353e260d5215" + integrity sha512-3nyOEch20ISn6MbVt/mBeDOkxO4ljx3oV+CnYNUT8n0JtUuMs0LpewZXpZ4ZWarI72qKc/YkxK9dkfjpncxuvg== dependencies: "@types/node" ">= 8" @@ -3662,9 +3662,9 @@ integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== "@types/node@*", "@types/node@>= 8": - version "13.7.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.7.tgz#1628e6461ba8cc9b53196dfeaeec7b07fa6eea99" - integrity sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg== + version "13.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.0.tgz#5b6ee7a77faacddd7de719017d0bc12f52f81589" + integrity sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ== "@types/node@12.12.21": version "12.12.21" @@ -3916,9 +3916,9 @@ tsutils "^3.17.1" "@typescript-eslint/typescript-estree@^2.4.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.22.0.tgz#a16ed45876abf743e1f5857e2f4a1c3199fd219e" - integrity sha512-2HFZW2FQc4MhIBB8WhDm9lVFaBDy6h9jGrJ4V2Uzxe/ON29HCHBTj3GkgcsgMWfsl2U5as+pTOr30Nibaw7qRQ== + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz#d355960fab96bd550855488dcc34b9a4acac8d36" + integrity sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -4172,14 +4172,14 @@ acorn-walk@^7.0.0: integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== acorn@^5.2.1, acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.0, acorn@^6.2.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== acorn@^7.0.0, acorn@^7.1.0: version "7.1.1" @@ -5164,9 +5164,9 @@ aws-sdk@2.447.0: xml2js "0.4.19" aws-sdk@^2.389.0: - version "2.634.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.634.0.tgz#95077c191107b9cb696e922b06e79949dcd13434" - integrity sha512-cZfRD7bcKBHOLoHUJuqB9xaLs/z1/xsc9zfGLIzyuxKLJa7Z0pxy8Y/0GrhWO98yXLBvLLET7btj2iDI2oWWhQ== + version "2.636.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.636.0.tgz#247124540b5b88a217aa6c282ce662b2f539721f" + integrity sha512-Zd/jed8qSNCm4pT2+8BuFfveouZrqUqmsOdhzpi3ZB3GYqV5eD+dmsl8OY+qvMgIJIFCB34a1SMucsC4zdBokg== dependencies: buffer "4.9.1" events "1.1.1" @@ -6559,8 +6559,8 @@ brorand@^1.0.1: integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= "browser-logos@github:alrra/browser-logos": - version "62.2.19" - resolved "https://codeload.github.com/alrra/browser-logos/tar.gz/edcfe4dcd6d0cccada291c3550f7032e5c5f6706" + version "62.2.20" + resolved "https://codeload.github.com/alrra/browser-logos/tar.gz/48c0b6e0b6fb1ebdef526788265109d8c6c01545" browser-pack@^6.0.1: version "6.1.0" @@ -6905,9 +6905,9 @@ buffer@^4.3.0: isarray "^1.0.0" buffer@^5.0.2, buffer@^5.1.0, buffer@^5.2.0: - version "5.4.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" - integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== + version "5.5.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" + integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -7207,9 +7207,9 @@ camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: - version "1.0.30001032" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001032.tgz#b8d224914e2cd7f507085583d4e38144c652bce4" - integrity sha512-8joOm7BwcpEN4BfVHtfh0hBXSAPVYk+eUIcNntGtMkUWy/6AKRCDZINCLe3kB1vHhT2vBxBF85Hh9VlPXi/qjA== + version "1.0.30001033" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001033.tgz#60c328fb56860de60f9a2cb419c31fb80587cba0" + integrity sha512-8Ibzxee6ibc5q88cM1usPsMpJOG5CTq0s/dKOmlekPbDGKt+UrnOOTPSjQz3kVo6yL7N4SB5xd+FGLHQmbzh6A== capture-exit@^2.0.0: version "2.0.0" @@ -8906,7 +8906,7 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@3.2.6, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1: +debug@3.2.6, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -8920,7 +8920,7 @@ debug@4.1.0: dependencies: ms "^2.1.1" -debuglog@^1.0.1: +debuglog@*, debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= @@ -9322,7 +9322,7 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== -detect-libc@^1.0.3: +detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= @@ -9885,9 +9885,9 @@ electron-publish@20.39.0: mime "^2.4.0" electron-to-chromium@^1.3.363: - version "1.3.370" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.370.tgz#420fba483d30ba3f7965b30ecf850fdb5f08a0bc" - integrity sha512-399cXDE9C7qoVF2CUgCA/MLflfvxbo1F0kB/pkB94426freL/JgZ0HNaloomsOfnE+VC/qgTFZqzmivSdaNfPQ== + version "1.3.374" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.374.tgz#eb539bfcac8ec51de417038548c3bc93745134bb" + integrity sha512-M4Y9onOJ4viRk3A4M/LH+r9+1zQioRZJvGJn/S/o7KaBJQLgFiaHMUlDwM0QMJd5ki6hFxKiWdC6jp5Ub0zMmw== electron@7.1.13: version "7.1.13" @@ -12302,9 +12302,9 @@ globals@^11.1.0, globals@^11.12.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^12.1.0: - version "12.3.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" - integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== dependencies: type-fest "^0.8.1" @@ -12735,7 +12735,7 @@ har-validator@~4.2.1: ajv "^4.9.1" har-schema "^1.0.5" -har-validator@~5.1.0, har-validator@~5.1.3: +har-validator@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -13220,7 +13220,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.5, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -13348,7 +13348,7 @@ import-local@2.0.0, import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" -imurmurhash@^0.1.4: +imurmurhash@*, imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= @@ -13510,9 +13510,9 @@ inquirer@^6.2.0: through "^2.3.6" inquirer@^7.0.0: - version "7.0.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.6.tgz#ee4ff0ea7ecda5324656fe665878790f66df7d0c" - integrity sha512-7SVO4h+QIdMq6XcqIqrNte3gS5MzCCKZdsq9DO4PJziBFNYzP3PGFbDjgadDb//MCahzgjCxvQ/O2wa7kx9o4w== + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== dependencies: ansi-escapes "^4.2.1" chalk "^3.0.0" @@ -15616,6 +15616,11 @@ lodash._basecreate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" integrity sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE= +lodash._baseindexof@*: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" + integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw= + lodash._basetostring@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" @@ -15634,12 +15639,29 @@ lodash._basevalues@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= +lodash._bindcallback@*: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= + +lodash._cacheindexof@*: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" + integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI= + +lodash._createcache@*: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" + integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM= + dependencies: + lodash._getnative "^3.0.0" + lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= -lodash._getnative@^3.0.0: +lodash._getnative@*, lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= @@ -15804,7 +15826,7 @@ lodash.reduce@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= -lodash.restparam@^3.0.0: +lodash.restparam@*, lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= @@ -17099,6 +17121,15 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" +needle@^2.2.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" + integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -17369,10 +17400,26 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4.4.2" + node-releases@^1.1.50: - version "1.1.50" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz#803c40d2c45db172d0410e4efec83aa8c6ad0592" - integrity sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ== + version "1.1.51" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.51.tgz#70d0e054221343d2966006bfbd4d98622cc00bd0" + integrity sha512-1eQEs6HFYY1kMXQPOLzCf7HdjReErmvn85tZESMczdCNVWP3Y7URYLBAyYynuI7yef1zj4HN5q+oB2x67QU0lw== dependencies: semver "^6.3.0" @@ -17449,9 +17496,9 @@ noop-logger@^0.1.1: abbrev "1" nopt@^4.0.1, nopt@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== dependencies: abbrev "1" osenv "^0.1.4" @@ -17610,7 +17657,7 @@ npm-package-arg@^4.1.1, npm-package-arg@~4.2.1: hosted-git-info "^2.1.5" semver "^5.1.0" -npm-packlist@^1.4.4: +npm-packlist@^1.1.6, npm-packlist@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== @@ -17773,7 +17820,7 @@ npm@^4.0.3: wrappy "~1.0.2" write-file-atomic "~1.3.3" -"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.1.2: +"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -19346,7 +19393,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.28: version "1.7.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== @@ -19646,9 +19693,9 @@ rc-collapse@1.11.8: shallowequal "^1.1.0" rc-util@^4.15.3: - version "4.20.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.0.tgz#fb601c59bb48cbee38538e0d5b628addda6a8c30" - integrity sha512-rUqk4RqtDe4OfTsSk2GpbvIQNVtfmmebw4Rn7ZAA1TO1zLMLfyOF78ZyrEKqs8RDwoE3S1aXp0AX0ogLfSxXrQ== + version "4.20.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.1.tgz#a5976eabfc3198ed9b8e79ffb8c53c231db36e77" + integrity sha512-EGlDg9KPN0POzmAR2hk9ZyFc3DmJIrXwlC8NoDxJguX2LTINnVqwadLIVauLfYgYISMiFYFrSHiFW+cqUhZ5dA== dependencies: add-dom-event-listener "^1.1.0" babel-runtime "6.x" @@ -20026,7 +20073,7 @@ readable-stream@~2.2.9: string_decoder "~1.0.0" util-deprecate "~1.0.1" -readdir-scoped-modules@^1.0.0: +readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -20497,32 +20544,6 @@ request-promise@4.2.5, request-promise@^4.2.2: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - "request@>=2.76.0 <3.0.0", request@^2.74.0, request@^2.87.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -22746,9 +22767,9 @@ tar-stream@^1.5.0: xtend "^4.0.0" tar-stream@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.1.tgz#e188b1dd74b940b9efc4a832a9a2dc957845937c" - integrity sha512-GZjLk64XcE/58qwIc1ZfXGqTSE4OutPMEkfBE/oh9eJ4x1eMRjYkgrLrav7PzddpvIpSJSGi8FgNNYXdB9Vumg== + version "2.1.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" + integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== dependencies: bl "^4.0.1" end-of-stream "^1.4.1" @@ -22783,7 +22804,7 @@ tar@^2.0.0, tar@~2.2.1: fstream "^1.0.12" inherits "2" -tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: +tar@^4.4.10, tar@^4.4.12, tar@^4.4.2, tar@^4.4.8: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== @@ -23172,14 +23193,6 @@ tough-cookie@~2.3.0: dependencies: punycode "^1.4.1" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -23448,9 +23461,9 @@ typescript@^3.0.3, typescript@^3.6.4: integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== typescript@next: - version "3.9.0-dev.20200306" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.0-dev.20200306.tgz#b6ad2d66eed60fbf32176c6a2c7d5b175ddb377d" - integrity sha512-JkFUyTm70yUoyJ1uXnIQMp+PL/8D+oHOo9P9ByIknzGERSPNPP08yefNpu8DeleFKhbX3siyIvYLekKS/p2m7g== + version "3.9.0-dev.20200310" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.0-dev.20200310.tgz#c04d143899e5d7d7d67ed354553220502a358080" + integrity sha512-C85KSOKyvEn8xqhFF3/WYH/32NaGfevO3jSd/tc/YaYWsNJb9b78oIRW1v4mwodR1/BbJ9tn7InhH5zAlos+1Q== ua-parser-js@^0.7.18: version "0.7.21" @@ -23966,7 +23979,7 @@ v8flags@^3.0.1: dependencies: homedir-polyfill "^1.0.1" -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: +validate-npm-package-license@*, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -24637,9 +24650,9 @@ ws@^6.1.0, ws@^6.1.2: async-limiter "~1.0.0" ws@^7.1.2, ws@^7.2.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.1.tgz#03ed52423cd744084b2cf42ed197c8b65a936b8e" - integrity sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A== + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== ws@~6.1.0: version "6.1.4" @@ -24793,11 +24806,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" - integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + version "1.8.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.0.tgz#169fbcfa2081302dc9441d02b0b6fe667e4f74c9" + integrity sha512-6qI/tTx7OVtA4qNqD0OyutbM6Z9EKu4rxWm/2Y3FDEBQ4/2X2XAnyuRXMzAE2+1BPyqzksJZtrIwblOHg0IEzA== dependencies: - "@babel/runtime" "^7.6.3" + "@babel/runtime" "^7.8.7" yargs-parser@13.1.1, yargs-parser@^13.1.0, yargs-parser@^13.1.1: version "13.1.1" From ec027e9c3afe1d70ea2deba89d0220e95ce9be1d Mon Sep 17 00:00:00 2001 From: Jennifer Shehane Date: Wed, 11 Mar 2020 22:25:50 +0630 Subject: [PATCH 08/11] Quote strings in DEBUG logs for easier reading (#6700) * Quote strings in DEBUG logs for easier reading * Use object in log instead of static strings --- packages/launcher/lib/linux/index.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/launcher/lib/linux/index.ts b/packages/launcher/lib/linux/index.ts index 03ce717f3fdb..28fd7c24a1a8 100644 --- a/packages/launcher/lib/linux/index.ts +++ b/packages/launcher/lib/linux/index.ts @@ -17,9 +17,10 @@ function getLinuxBrowser ( } log( - 'Could not extract version from %s using regex %s', - stdout, - versionRegex, + 'Could not extract version from stdout using regex: %o', { + stdout, + versionRegex, + }, ) throw notInstalledErr(binary) @@ -53,7 +54,7 @@ export function getVersionString (path: string) { return execa .stdout(path, ['--version']) .then(trim) - .then(tap(partial(log, ['stdout: %s']))) + .then(tap(partial(log, ['stdout: "%s"']))) } export function detect (browser: Browser) { From 53be237d11a415fd799d4e3380b67df3baeb7503 Mon Sep 17 00:00:00 2001 From: Zach Bloomquist Date: Wed, 11 Mar 2020 17:24:48 -0400 Subject: [PATCH 09/11] Fix proxy slowdown with intercepted HTTPS requests (#6705) * use 2x chrome total time as benchmark * set TLS minVersion to v1 only if connection already failed with TLS version mismatch * correct percentile function * assert at least 1000 requests were made * setNoDelay on HTTPS-over-HTTPS requests * allow for tests with HTTPS upstreams to be slightly slower * try 3x * add note for add'l multiplier on httpsUpstreamProxy --- packages/network/lib/agent.ts | 5 +---- packages/server/lib/request.coffee | 11 ++++++++++- .../performance/proxy_performance_spec.js | 19 ++++++++++++++----- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/packages/network/lib/agent.ts b/packages/network/lib/agent.ts index 722667bb5e38..4d9742baf4c5 100644 --- a/packages/network/lib/agent.ts +++ b/packages/network/lib/agent.ts @@ -262,10 +262,6 @@ class HttpsAgent extends https.Agent { } createConnection (options: HttpsRequestOptions, cb: http.SocketCallback) { - // allow requests to use older TLS versions - // https://github.com/cypress-io/cypress/issues/5446 - options.minVersion = 'TLSv1' - if (process.env.HTTPS_PROXY) { const proxy = getProxyForUrl(options.href) @@ -353,6 +349,7 @@ class HttpsAgent extends https.Agent { const connectReq = buildConnectReqHead(hostname, port, proxy) + proxySocket.setNoDelay(true) proxySocket.write(connectReq) }) } diff --git a/packages/server/lib/request.coffee b/packages/server/lib/request.coffee index 40927bff5302..c82e21121a88 100644 --- a/packages/server/lib/request.coffee +++ b/packages/server/lib/request.coffee @@ -15,6 +15,7 @@ SERIALIZABLE_COOKIE_PROPS = ['name', 'value', 'domain', 'expiry', 'path', 'secur NETWORK_ERRORS = "ECONNREFUSED ECONNRESET EPIPE EHOSTUNREACH EAI_AGAIN ENOTFOUND".split(" ") VERBOSE_REQUEST_OPTS = "followRedirect strictSSL".split(" ") HTTP_CLIENT_REQUEST_EVENTS = "abort connect continue information socket timeout upgrade".split(" ") +TLS_VERSION_ERROR_RE = /TLSV1_ALERT_PROTOCOL_VERSION|UNSUPPORTED_PROTOCOL/ process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" @@ -81,7 +82,15 @@ maybeRetryOnNetworkFailure = (err, options = {}) -> debug("received an error making http request %o", merge(opts, { err })) - if not isRetriableError(err, retryOnNetworkFailure) + isTlsVersionError = TLS_VERSION_ERROR_RE.test(err.message) + + if isTlsVersionError + ## because doing every connection via TLSv1 can lead to slowdowns, we set it only on failure + ## https://github.com/cypress-io/cypress/pull/6705 + debug('detected TLS version error, setting min version to TLSv1') + opts.minVersion = 'TLSv1' + + if not isTlsVersionError and not isRetriableError(err, retryOnNetworkFailure) return onElse() ## else see if we have more delays left... diff --git a/packages/server/test/performance/proxy_performance_spec.js b/packages/server/test/performance/proxy_performance_spec.js index 9cdeae85fe93..321d778b0ef9 100644 --- a/packages/server/test/performance/proxy_performance_spec.js +++ b/packages/server/test/performance/proxy_performance_spec.js @@ -109,7 +109,7 @@ const average = (arr) => { } const percentile = (sortedArr, p) => { - const i = Math.floor(p / 100 * sortedArr.length - 1) + const i = Math.floor(p / 100 * (sortedArr.length - 1)) return Math.round(sortedArr[i]) } @@ -167,6 +167,8 @@ const getResultsFromHar = (har) => { results['Min'] = mins.total + expect(timings.total.length).to.be.at.least(1000) + ;[1, 5, 25, 50, 75, 95, 99, 99.7].forEach((p) => { results[`${p}% <=`] = percentile(timings.total, p) }) @@ -356,10 +358,9 @@ describe('Proxy Performance', function () { }) URLS_UNDER_TEST.map((urlUnderTest) => { - const testCases = _.cloneDeep(TEST_CASES) - describe(urlUnderTest, function () { let baseline + const testCases = _.cloneDeep(TEST_CASES) before(function () { // run baseline test @@ -373,12 +374,20 @@ describe('Proxy Performance', function () { // slice(1) since first test is used as baseline above testCases.slice(1).map((testCase) => { - it(`${testCase.name} loads 1000 images, with 75% loading no more than 2x as slow as the slowest baseline request`, function () { + let multiplier = 3 + + if (testCase.httpsUpstreamProxy) { + // there is extra slowdown when the HTTPS upstream is used, so slightly increase the multiplier + // maybe from higher CPU utilization with debugging-proxy and HTTPS + multiplier *= 1.5 + } + + it(`${testCase.name} loads 1000 images less than ${multiplier}x as slowly as Chrome`, function () { debug('Current test: ', testCase.name) return runBrowserTest(urlUnderTest, testCase) .then((results) => { - expect(results['75% <=']).to.be.lessThan(baseline['Max'] * 2) + expect(results['Total']).to.be.lessThan(multiplier * baseline['Total']) }) }) }) From 1d848874b4c7531160f566c8b54362b2a3245a86 Mon Sep 17 00:00:00 2001 From: Chris Breiding Date: Thu, 12 Mar 2020 10:34:09 -0400 Subject: [PATCH 10/11] Skip flaky e2e test for now (#6711) --- packages/server/test/e2e/3_plugins_spec.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/server/test/e2e/3_plugins_spec.js b/packages/server/test/e2e/3_plugins_spec.js index 9628c92e0ea9..9a59035fd117 100644 --- a/packages/server/test/e2e/3_plugins_spec.js +++ b/packages/server/test/e2e/3_plugins_spec.js @@ -29,7 +29,10 @@ describe('e2e plugins', function () { }) }) - it('fails when there is an async error at the root', function () { + // NOTE: skipping this test for now since it's flaky. the fix requires a + // deeper dive into the error handling of run mode, which will take time. + // better to skip this for now so it doesn't hang up other work + it.skip('fails when there is an async error at the root', function () { return e2e.exec(this, { spec: 'app_spec.js', project: pluginsRootAsyncError, From 9caf21a6aa70d5b90321b122a65395e8f0354dd9 Mon Sep 17 00:00:00 2001 From: Zach Bloomquist Date: Thu, 12 Mar 2020 16:44:41 -0400 Subject: [PATCH 11/11] Fix browser detection with multiline `--version`s (#6712) --- packages/launcher/lib/browsers.ts | 20 ++++++++++---------- packages/launcher/test/fixtures.ts | 4 ++-- packages/launcher/test/unit/browsers_spec.ts | 9 +++++++++ packages/launcher/test/unit/linux_spec.ts | 19 +++++++++++++++++++ 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/packages/launcher/lib/browsers.ts b/packages/launcher/lib/browsers.ts index 3e817586d169..1dd9ed07b4b4 100644 --- a/packages/launcher/lib/browsers.ts +++ b/packages/launcher/lib/browsers.ts @@ -11,7 +11,7 @@ export const browsers: Browser[] = [ family: 'chromium', channel: 'stable', displayName: 'Chrome', - versionRegex: /Google Chrome (\S+)/, + versionRegex: /Google Chrome (\S+)/m, profile: true, binary: ['google-chrome', 'chrome', 'google-chrome-stable'], }, @@ -21,7 +21,7 @@ export const browsers: Browser[] = [ // technically Chromium is always in development channel: 'stable', displayName: 'Chromium', - versionRegex: /Chromium (\S+)/, + versionRegex: /Chromium (\S+)/m, profile: true, binary: ['chromium-browser', 'chromium'], }, @@ -30,7 +30,7 @@ export const browsers: Browser[] = [ family: 'chromium', channel: 'canary', displayName: 'Canary', - versionRegex: /Google Chrome Canary (\S+)/, + versionRegex: /Google Chrome Canary (\S+)/m, profile: true, binary: 'google-chrome-canary', }, @@ -41,7 +41,7 @@ export const browsers: Browser[] = [ displayName: 'Firefox', info: firefoxInfo, // Mozilla Firefox 70.0.1 - versionRegex: /^Mozilla Firefox ([^\sab]+)$/, + versionRegex: /^Mozilla Firefox ([^\sab]+)$/m, profile: true, binary: 'firefox', }, @@ -52,7 +52,7 @@ export const browsers: Browser[] = [ displayName: 'Firefox Developer Edition', info: firefoxInfo, // Mozilla Firefox 73.0b12 - versionRegex: /^Mozilla Firefox (\S+b\S*)$/, + versionRegex: /^Mozilla Firefox (\S+b\S*)$/m, profile: true, // ubuntu PPAs install it as firefox binary: ['firefox-developer-edition', 'firefox'], @@ -64,7 +64,7 @@ export const browsers: Browser[] = [ displayName: 'Firefox Nightly', info: firefoxInfo, // Mozilla Firefox 74.0a1 - versionRegex: /^Mozilla Firefox (\S+a\S*)$/, + versionRegex: /^Mozilla Firefox (\S+a\S*)$/m, profile: true, // ubuntu PPAs install it as firefox-trunk binary: ['firefox-nightly', 'firefox-trunk'], @@ -74,7 +74,7 @@ export const browsers: Browser[] = [ family: 'chromium', channel: 'stable', displayName: 'Edge', - versionRegex: /Microsoft Edge (\S+)/, + versionRegex: /Microsoft Edge (\S+)/m, profile: true, binary: 'edge', }, @@ -83,7 +83,7 @@ export const browsers: Browser[] = [ family: 'chromium', channel: 'canary', displayName: 'Edge Canary', - versionRegex: /Microsoft Edge Canary (\S+)/, + versionRegex: /Microsoft Edge Canary (\S+)/m, profile: true, binary: 'edge-canary', }, @@ -92,7 +92,7 @@ export const browsers: Browser[] = [ family: 'chromium', channel: 'beta', displayName: 'Edge Beta', - versionRegex: /Microsoft Edge Beta (\S+)/, + versionRegex: /Microsoft Edge Beta (\S+)/m, profile: true, binary: 'edge-beta', }, @@ -101,7 +101,7 @@ export const browsers: Browser[] = [ family: 'chromium', channel: 'dev', displayName: 'Edge Dev', - versionRegex: /Microsoft Edge Dev (\S+)/, + versionRegex: /Microsoft Edge Dev (\S+)/m, profile: true, binary: 'edge-dev', }, diff --git a/packages/launcher/test/fixtures.ts b/packages/launcher/test/fixtures.ts index aaaa73cfde46..c5abc5f7fbd4 100644 --- a/packages/launcher/test/fixtures.ts +++ b/packages/launcher/test/fixtures.ts @@ -2,14 +2,14 @@ export const goalBrowsers = [ { displayName: 'Test Browser', name: 'test-browser-name', - versionRegex: /test-browser v(\S+)$/, + versionRegex: /test-browser v(\S+)$/m, profile: true, binary: 'test-browser', }, { displayName: 'Foo Browser', name: 'foo-browser', - versionRegex: /foo-browser v(\S+)$/, + versionRegex: /foo-browser v(\S+)$/m, profile: true, binary: ['foo-browser', 'foo-bar-browser'], }, diff --git a/packages/launcher/test/unit/browsers_spec.ts b/packages/launcher/test/unit/browsers_spec.ts index 0eced4af412b..074785eaf5cd 100644 --- a/packages/launcher/test/unit/browsers_spec.ts +++ b/packages/launcher/test/unit/browsers_spec.ts @@ -1,8 +1,17 @@ +import _ from 'lodash' import { browsers } from '../../lib/browsers' +import { expect } from 'chai' const snapshot = require('snap-shot-it') describe('browsers', () => { it('returns the expected list of browsers', () => { snapshot(browsers) }) + + // https://github.com/cypress-io/cypress/issues/6669 + it('exports multiline versionRegexes', () => { + expect(_.every(browsers.map(({ versionRegex }) => { + return versionRegex.multiline + }))).to.be.true + }) }) diff --git a/packages/launcher/test/unit/linux_spec.ts b/packages/launcher/test/unit/linux_spec.ts index da20c13a7691..6889ff070ec8 100644 --- a/packages/launcher/test/unit/linux_spec.ts +++ b/packages/launcher/test/unit/linux_spec.ts @@ -1,5 +1,6 @@ require('../spec_helper') +import _ from 'lodash' import * as linuxHelper from '../../lib/linux' import 'chai-as-promised' import { log } from '../log' @@ -42,6 +43,24 @@ describe('linux browser detection', () => { return linuxHelper.detect(goal).then(checkBrowser) }) + // https://github.com/cypress-io/cypress/issues/6669 + it('detects browser if the --version stdout is multiline', () => { + stdout.withArgs('multiline-foo', ['--version']) + .resolves('Running without a11y support!\nfoo-browser v9001.1.2.3') + + const goal = _.defaults({ binary: 'multiline-foo' }, _.find(goalBrowsers, { name: 'foo-browser' })) + const checkBrowser = (browser) => { + expect(browser).to.deep.equal({ + name: 'foo-browser', + path: 'multiline-foo', + version: '9001.1.2.3', + }) + } + + // @ts-ignore + return linuxHelper.detect(goal).then(checkBrowser) + }) + // despite using detect(), this test is in linux/spec instead of detect_spec because it is // testing side effects that occur within the Linux-specific detect function // https://github.com/cypress-io/cypress/issues/1400