diff --git a/.azure-pipelines-steps.yml b/.azure-pipelines-steps.yml index 5c170b1a2412..e2b59742d827 100644 --- a/.azure-pipelines-steps.yml +++ b/.azure-pipelines-steps.yml @@ -1,45 +1,45 @@ # # Steps for building and testing Jest. See jobs defined in .azure-pipelines.yml -# +# # Clones the repo steps: -- checkout: self + - checkout: self -# Ensure Node.js 10 is active -- task: NodeTool@0 - inputs: - versionSpec: '10.x' - displayName: 'Use Node.js 10' + # Ensure Node.js 10 is active + - task: NodeTool@0 + inputs: + versionSpec: '10.x' + displayName: 'Use Node.js 10' -# Ensure Python 2.7 is active -- task: UsePythonVersion@0 - inputs: - versionSpec: '2.7' - displayName: 'Use Python 2.7' + # Ensure Python 2.7 is active + - task: UsePythonVersion@0 + inputs: + versionSpec: '2.7' + displayName: 'Use Python 2.7' -# Workaround to move source files under a "jest" folder (see .azure-pipelines.yml for details) -- script: | - cd / - mv $(Build.Repository.LocalPath) $(JEST_DIR) - mkdir $(Build.Repository.LocalPath) - displayName: 'Move source into jest folder' + # Workaround to move source files under a "jest" folder (see .azure-pipelines.yml for details) + - script: | + cd / + mv $(Build.Repository.LocalPath) $(JEST_DIR) + mkdir $(Build.Repository.LocalPath) + displayName: 'Move source into jest folder' -# Run yarn to install dependencies and build -- script: yarn - workingDirectory: $(JEST_DIR) - displayName: 'Install dependencies and build' + # Run yarn to install dependencies and build + - script: yarn + workingDirectory: $(JEST_DIR) + displayName: 'Install dependencies and build' -# Run test-ci-partial -- script: yarn run test-ci-partial - workingDirectory: $(JEST_DIR) - displayName: 'Run tests' + # Run test-ci-partial + - script: yarn run test-ci-partial + workingDirectory: $(JEST_DIR) + displayName: 'Run tests' -# Publish CI test results -- task: PublishTestResults@2 - inputs: - testResultsFiles: '**/reports/junit/*.xml' - searchFolder: $(JEST_DIR) - testRunTitle: 'CI Tests $(Agent.OS)' - displayName: 'Publish test results' - condition: succeededOrFailed() + # Publish CI test results + - task: PublishTestResults@2 + inputs: + testResultsFiles: '**/reports/junit/*.xml' + searchFolder: $(JEST_DIR) + testRunTitle: 'CI Tests $(Agent.OS)' + displayName: 'Publish test results' + condition: succeededOrFailed() diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 75a8d7b00508..e28f5b54627b 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -3,30 +3,30 @@ # jobs: -- job: Linux - pool: - vmImage: ubuntu-16.04 - steps: - - template: .azure-pipelines-steps.yml + - job: Linux + pool: + vmImage: ubuntu-16.04 + steps: + - template: .azure-pipelines-steps.yml -- job: Windows - pool: - vmImage: vs2017-win2016 - steps: - - script: | - git config --global core.autocrlf false - git config --global core.symlinks true - displayName: 'Preserve LF endings and symbolic links on check out' - - template: .azure-pipelines-steps.yml + - job: Windows + pool: + vmImage: vs2017-win2016 + steps: + - script: | + git config --global core.autocrlf false + git config --global core.symlinks true + displayName: 'Preserve LF endings and symbolic links on check out' + - template: .azure-pipelines-steps.yml -- job: macOS - pool: - vmImage: macos-10.13 - steps: - # This step can be removed once Mercurial gets installed on the macOS image. See https://github.com/Microsoft/azure-pipelines-image-generation/issues/604 - - script: HOMEBREW_NO_AUTO_UPDATE=1 brew install mercurial - displayName: 'Install Mercurial' - - template: .azure-pipelines-steps.yml + - job: macOS + pool: + vmImage: macos-10.13 + steps: + # This step can be removed once Mercurial gets installed on the macOS image. See https://github.com/Microsoft/azure-pipelines-image-generation/issues/604 + - script: HOMEBREW_NO_AUTO_UPDATE=1 brew install mercurial + displayName: 'Install Mercurial' + - template: .azure-pipelines-steps.yml variables: # Used by chalk. Ensures output from Jest includes ANSI escape characters that are needed to match test snapshots. @@ -35,6 +35,6 @@ variables: # By default, Azure Pipelines clones to an "s" directory, which causes tests to fail due to assumption of Jest being run from a "jest" directory. # See packages/jest-message-util/src/index.js PATH_JEST_PACKAGES for more details. JEST_DIR: $(Agent.BuildDirectory)/jest - + # Ensures the handful of tests that should be skipped during CI are CI: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 55ecda8ccbfc..fbb4c7c15881 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Features - `[jest-runtime]` Add `jest.isolateModules` for scoped module initialization ([#6701](https://github.com/facebook/jest/pull/6701)) +- `[jest-diff]` [**BREAKING**] Support diffing numbers and booleans instead of returning null for different ones ([#7605](https://github.com/facebook/jest/pull/7605)) - `[jest-diff]` [**BREAKING**] Replace `diff` with `diff-sequences` package ([#6961](https://github.com/facebook/jest/pull/6961)) - `[jest-cli]` [**BREAKING**] Only set error process error codes when they are non-zero ([#7363](https://github.com/facebook/jest/pull/7363)) - `[jest-config]` [**BREAKING**] Deprecate `setupTestFrameworkScriptFile` in favor of new `setupFilesAfterEnv` ([#7119](https://github.com/facebook/jest/pull/7119)) @@ -50,9 +51,12 @@ - `[jest-config]` Allow % based configuration of `--max-workers` ([#7494](https://github.com/facebook/jest/pull/7494)) - `[jest-runner]` Instantiate the test environment class with the current `testPath` ([#7442](https://github.com/facebook/jest/pull/7442)) - `[jest-config]` Always resolve jest-environment-jsdom from jest-config ([#7476](https://github.com/facebook/jest/pull/7476)) +- `[expect]` Improve report when assertion fails, part 6 ([#7621](https://github.com/facebook/jest/pull/7621)) ### Fixes +- `[jest-diff]` Do not claim that `-0` and `0` have no visual difference ([#7605](https://github.com/facebook/jest/pull/7605)) +- `[jest-mock]` Fix automock for numeric function names ([#7653](https://github.com/facebook/jest/pull/7653)) - `[jest-config]` Ensure `existsSync` is only called with a string parameter ([#7607](https://github.com/facebook/jest/pull/7607)) - `[expect]` `toStrictEqual` considers sparseness of arrays. ([#7591](https://github.com/facebook/jest/pull/7591)) - `[jest-cli]` Fix empty coverage data for untested files ([#7388](https://github.com/facebook/jest/pull/7388)) @@ -117,11 +121,15 @@ - `[jest-environment-node]` Fix buffer property is not ArrayBuffer issue. ([#7626](https://github.com/facebook/jest/pull/7626)) - `[babel-plugin-jest-hoist]` Ignore TS type annotations when looking for out-of-scope references ([#7641](https://github.com/facebook/jest/pull/7641)) - `[expect]` Fix custom async matcher stack trace ([#7652](https://github.com/facebook/jest/pull/7652)) +- `[jest-config]` Add name to project if one does not exist to pick correct resolver ([#5862](https://github.com/facebook/jest/pull/5862)) +- `[jest-runtime]` Pass `watchPathIgnorePatterns` to Haste instance ([#7585](https://github.com/facebook/jest/pull/7585)) ### Chore & Maintenance - `[*]` [**BREAKING**] Require Node.js 6+ for all packages ([#7258](https://github.com/facebook/jest/pull/7258)) - `[jest-util]` [**BREAKING**] Remove long-deprecated globals for fake timers ([#7285](https://github.com/facebook/jest/pull/7285)) +- `[*]` [**BREAKING**] Upgrade to Micromatch 3 ([#6650](https://github.com/facebook/jest/pull/6650)) +- `[*]` [**BREAKING**] Remove regenerator-runtime injection ([#7595](https://github.com/facebook/jest/pull/7595)) - `[docs]` Fix message property in custom matcher example to return a function instead of a constant. ([#7426](https://github.com/facebook/jest/pull/7426)) - `[jest-circus]` Standardize file naming in `jest-circus` ([#7301](https://github.com/facebook/jest/pull/7301)) - `[docs]` Add synchronous test.each setup ([#7150](https://github.com/facebook/jest/pull/7150)) @@ -157,7 +165,8 @@ - `[*]` Standardize file names ([#7316](https://github.com/facebook/jest/pull/7316), [#7266](https://github.com/facebook/jest/pull/7266), [#7238](https://github.com/facebook/jest/pull/7238), [#7314](https://github.com/facebook/jest/pull/7314), [#7467](https://github.com/facebook/jest/pull/7467), [#7464](https://github.com/facebook/jest/pull/7464)), [#7471](https://github.com/facebook/jest/pull/7471)) - `[docs]` Add `testPathIgnorePatterns` in CLI documentation ([#7440](https://github.com/facebook/jest/pull/7440)) - `[docs]` Removed misleading text about `describe()` grouping together tests into a test suite ([#7434](https://github.com/facebook/jest/pull/7434)) -- `[*]` Replace as many `Object.assign` with object spread as possible +- `[diff-sequences]` Add performance benchmark to package ([#7603](https://github.com/facebook/jest/pull/7603)) +- `[*]` Replace as many `Object.assign` with object spread as possible ([#7627](https://github.com/facebook/jest/pull/7627)) - `[ci]` Initial support for Azure Pipelines ([#7556](https://github.com/facebook/jest/pull/7556)) ### Performance diff --git a/docs/Configuration.md b/docs/Configuration.md index b3ca7a44928e..25106a9a3546 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -373,6 +373,8 @@ _Note: A global setup module configured in a project (using multi-project runner _Note: Any global variables that are defined through `globalSetup` can only be read in `globalTeardown`. You cannot retrieve globals defined here in your test suites._ +_Note: While code transformation is applied to the linked setup-file, Jest will **not** transform any code in `node_modules`. This is due to the need to load the actual transformers (e.g. `babel` or `typescript`) to perform transformation._ + Example: ```js @@ -399,6 +401,8 @@ This option allows the use of a custom global teardown module which exports an a _Note: A global teardown module configured in a project (using multi-project runner) will be triggered only when you run at least one test from this project._ +_Node: The same caveat concerning transformation of `node_modules_ as for `globalSetup` applies to `globalTeardown`. + ### `moduleDirectories` [array] Default: `["node_modules"]` @@ -409,7 +413,9 @@ An array of directory names to be searched recursively up from the requiring mod Default: `["js", "json", "jsx", "ts", "tsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. + +We recommend placing the extensions most commonly used in your project on the left, so if you are using TypeScript, you may want to consider moving "ts" and/or "tsx" to the beginning of the array. ### `moduleNameMapper` [object] @@ -865,6 +871,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/docs/ExpectAPI.md b/docs/ExpectAPI.md index f9c9278be63f..81c79eae95d1 100644 --- a/docs/ExpectAPI.md +++ b/docs/ExpectAPI.md @@ -1168,7 +1168,14 @@ test('throws on octopus', () => { }); ``` -If you want to test that a specific error gets thrown, you can provide an argument to `toThrow`. The argument can be a string that should be contained in the error message, a class for the error, or a regex that should match the error message. For example, let's say that `drinkFlavor` is coded like this: +To test that a specific error is thrown, you can provide an argument: + +- regular expression: error message **matches** the pattern +- string: error message **includes** the substring +- error object: error message is **equal to** the message property of the object +- error class: error object is **instance of** class + +For example, let's say that `drinkFlavor` is coded like this: ```js function drinkFlavor(flavor) { @@ -1193,6 +1200,7 @@ test('throws on octopus', () => { // Test the exact error message expect(drinkOctopus).toThrowError(/^yuck, octopus flavor$/); + expect(drinkOctopus).toThrowError(new Error('yuck, octopus flavor')); // Test that we get a DisgustingFlavorError expect(drinkOctopus).toThrowError(DisgustingFlavorError); diff --git a/docs/SnapshotTesting.md b/docs/SnapshotTesting.md index 279e7059eb1c..c31926c68dd3 100644 --- a/docs/SnapshotTesting.md +++ b/docs/SnapshotTesting.md @@ -5,7 +5,7 @@ title: Snapshot Testing Snapshot tests are a very useful tool whenever you want to make sure your UI does not change unexpectedly. -A typical snapshot test case for a mobile app renders a UI component, takes a screenshot, then compares it to a reference image stored alongside the test. The test will fail if the two images do not match: either the change is unexpected, or the screenshot needs to be updated to the new version of the UI component. +A typical snapshot test case for a mobile app renders a UI component, takes a snapshot, then compares it to a reference snapshot file stored alongside the test. The test will fail if the two snapshots do not match: either the change is unexpected, or the reference snapshot needs to be updated to the new version of the UI component. ## Snapshot Testing with Jest diff --git a/e2e/Utils.js b/e2e/Utils.js index afc4d872c889..57e80a2fcd0f 100644 --- a/e2e/Utils.js +++ b/e2e/Utils.js @@ -159,7 +159,10 @@ export const extractSummary = (stdout: string) => { // remove all timestamps .replace(/\s*\(\d*\.?\d+m?s\)$/gm, ''); - return {rest, summary}; + return { + rest: rest.trim(), + summary: summary.trim(), + }; }; const sortTests = (stdout: string) => diff --git a/e2e/__tests__/__snapshots__/beforeAllFiltered.js.snap b/e2e/__tests__/__snapshots__/beforeAllFiltered.js.snap index 3ee05080e1b2..45020a37634b 100644 --- a/e2e/__tests__/__snapshots__/beforeAllFiltered.js.snap +++ b/e2e/__tests__/__snapshots__/beforeAllFiltered.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Correct BeforeAll run ensures the BeforeAll of ignored suite is not run 1`] = ` -" console.log __tests__/beforeAllFiltered.test.js:5 + console.log __tests__/beforeAllFiltered.test.js:5 beforeAll 1 console.log __tests__/beforeAllFiltered.test.js:8 @@ -15,5 +15,5 @@ exports[`Correct BeforeAll run ensures the BeforeAll of ignored suite is not run console.log __tests__/beforeAllFiltered.test.js:14 afterAll 1 -" + `; diff --git a/e2e/__tests__/__snapshots__/beforeEachQueue.js.snap b/e2e/__tests__/__snapshots__/beforeEachQueue.js.snap index 3e6c6f91d79d..98ede3375283 100644 --- a/e2e/__tests__/__snapshots__/beforeEachQueue.js.snap +++ b/e2e/__tests__/__snapshots__/beforeEachQueue.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Correct beforeEach order ensures the correct order for beforeEach 1`] = ` -" console.log __tests__/beforeEachQueue.test.js:5 + console.log __tests__/beforeEachQueue.test.js:5 BeforeEach console.log __tests__/beforeEachQueue.test.js:9 @@ -15,5 +15,5 @@ exports[`Correct beforeEach order ensures the correct order for beforeEach 1`] = console.log __tests__/beforeEachQueue.test.js:17 It Bar -" + `; diff --git a/e2e/__tests__/__snapshots__/cliHandlesExactFilenames.test.js.snap b/e2e/__tests__/__snapshots__/cliHandlesExactFilenames.test.js.snap index f450eea10d7e..e63fb4b64c14 100644 --- a/e2e/__tests__/__snapshots__/cliHandlesExactFilenames.test.js.snap +++ b/e2e/__tests__/__snapshots__/cliHandlesExactFilenames.test.js.snap @@ -1,21 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CLI accepts exact file names if matchers matched 1`] = ` -"PASS foo/bar.spec.js +PASS foo/bar.spec.js ✓ foo Force exiting Jest -Have you considered using \`--detectOpenHandles\` to detect async operations that kept running after all tests finished?" +Have you considered using \`--detectOpenHandles\` to detect async operations that kept running after all tests finished? `; exports[`CLI accepts exact file names if matchers matched 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites matching /.\\\\/foo\\\\/bar.spec.js/i." +Ran all test suites matching /.\\/foo\\/bar.spec.js/i. `; - -exports[`CLI accepts exact file names if matchers matched 3`] = `""`; diff --git a/e2e/__tests__/__snapshots__/console.test.js.snap b/e2e/__tests__/__snapshots__/console.test.js.snap index 88c6ec76d882..e67f28aa3c2f 100644 --- a/e2e/__tests__/__snapshots__/console.test.js.snap +++ b/e2e/__tests__/__snapshots__/console.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`console printing 1`] = ` -"PASS __tests__/console.test.js +PASS __tests__/console.test.js ● Console console.log __tests__/console.test.js:10 @@ -12,21 +12,18 @@ exports[`console printing 1`] = ` This is a warning message. console.error __tests__/console.test.js:16 This is an error message. - - -" `; exports[`console printing 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`console printing with --verbose 1`] = ` -" console.log __tests__/console.test.js:10 + console.log __tests__/console.test.js:10 This is a log message. console.info __tests__/console.test.js:12 @@ -37,52 +34,44 @@ exports[`console printing with --verbose 1`] = ` console.error __tests__/console.test.js:16 This is an error message. -" + `; exports[`console printing with --verbose 2`] = ` -"PASS __tests__/console.test.js +PASS __tests__/console.test.js ✓ works just fine - -" `; exports[`console printing with --verbose 3`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; -exports[`does not print to console with --silent 1`] = `""`; +exports[`does not print to console with --silent 1`] = ``; -exports[`does not print to console with --silent 2`] = ` -"PASS __tests__/console.test.js - -" -`; +exports[`does not print to console with --silent 2`] = `PASS __tests__/console.test.js`; exports[`does not print to console with --silent 3`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total -Time: <>" +Time: <> `; -exports[`the jsdom console is the same as the test console 1`] = `""`; +exports[`the jsdom console is the same as the test console 1`] = ``; exports[`the jsdom console is the same as the test console 2`] = ` -"PASS __tests__/console.test.js +PASS __tests__/console.test.js ✓ can mock console.error calls from jsdom - -" `; exports[`the jsdom console is the same as the test console 3`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; diff --git a/e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.js.snap b/e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.js.snap index 128a56ecb5a4..f8623ba1fdf0 100644 --- a/e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.js.snap +++ b/e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.js.snap @@ -1,25 +1,25 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`prints console.logs when run with forceExit 1`] = ` -"PASS __tests__/a-banana.js +PASS __tests__/a-banana.js ✓ banana Force exiting Jest -Have you considered using \`--detectOpenHandles\` to detect async operations that kept running after all tests finished?" +Have you considered using \`--detectOpenHandles\` to detect async operations that kept running after all tests finished? `; exports[`prints console.logs when run with forceExit 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`prints console.logs when run with forceExit 3`] = ` -" console.log __tests__/a-banana.js:2 + console.log __tests__/a-banana.js:2 Hey -" + `; diff --git a/e2e/__tests__/__snapshots__/coverageReport.test.js.snap b/e2e/__tests__/__snapshots__/coverageReport.test.js.snap index aaf5bd50d645..ad619cfc44f1 100644 --- a/e2e/__tests__/__snapshots__/coverageReport.test.js.snap +++ b/e2e/__tests__/__snapshots__/coverageReport.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`collects coverage from duplicate files avoiding shared cache 1`] = ` -"---------------|----------|----------|----------|----------|-------------------| +---------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ---------------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | @@ -9,41 +9,41 @@ All files | 100 | 100 | 100 | 100 | | identical.js | 100 | 100 | 100 | 100 | | b | 100 | 100 | 100 | 100 | | identical.js | 100 | 100 | 100 | 100 | | ----------------|----------|----------|----------|----------|-------------------|" +---------------|----------|----------|----------|----------|-------------------| `; exports[`collects coverage only from multiple specified files 1`] = ` -"--------------|----------|----------|----------|----------|-------------------| +--------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | --------------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | otherFile.js | 100 | 100 | 100 | 100 | | setup.js | 100 | 100 | 100 | 100 | | ---------------|----------|----------|----------|----------|-------------------|" +--------------|----------|----------|----------|----------|-------------------| `; exports[`collects coverage only from specified file 1`] = ` -"----------|----------|----------|----------|----------|-------------------| +----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | setup.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------|" +----------|----------|----------|----------|----------|-------------------| `; exports[`collects coverage only from specified files avoiding dependencies 1`] = ` -"----------|----------|----------|----------|----------|-------------------| +----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------|----------|----------|----------|----------|-------------------| All files | 85.71 | 100 | 50 | 100 | | sum.js | 85.71 | 100 | 50 | 100 | | -----------|----------|----------|----------|----------|-------------------|" +----------|----------|----------|----------|----------|-------------------| `; -exports[`does not output coverage report when html is requested 1`] = `""`; +exports[`does not output coverage report when html is requested 1`] = ``; exports[`generates coverage when using the testRegex config param 1`] = ` -"-------------------------------------|----------|----------|----------|----------|-------------------| +-------------------------------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -------------------------------------|----------|----------|----------|----------|-------------------| All files | 56.52 | 0 | 50 | 55.56 | | @@ -56,20 +56,19 @@ All files | 56.52 | 0 | 50 | 55.56 identical.js | 100 | 100 | 100 | 100 | | coverage-report/cached-duplicates/b | 100 | 100 | 100 | 100 | | identical.js | 100 | 100 | 100 | 100 | | --------------------------------------|----------|----------|----------|----------|-------------------|" +-------------------------------------|----------|----------|----------|----------|-------------------| `; exports[`json reporter printing with --coverage 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 1 failed, 2 passed, 3 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`outputs coverage report 1`] = ` -"-------------------------------------|----------|----------|----------|----------|-------------------| +-------------------------------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -------------------------------------|----------|----------|----------|----------|-------------------| All files | 56.52 | 0 | 50 | 55.56 | | @@ -82,11 +81,11 @@ All files | 56.52 | 0 | 50 | 55.56 identical.js | 100 | 100 | 100 | 100 | | coverage-report/cached-duplicates/b | 100 | 100 | 100 | 100 | | identical.js | 100 | 100 | 100 | 100 | | --------------------------------------|----------|----------|----------|----------|-------------------|" +-------------------------------------|----------|----------|----------|----------|-------------------| `; exports[`outputs coverage report when text and text-summary is requested 1`] = ` -" + =============================== Coverage summary =============================== Statements : 56.52% ( 13/23 ) Branches : 0% ( 0/4 ) @@ -106,11 +105,11 @@ All files | 56.52 | 0 | 50 | 55.56 identical.js | 100 | 100 | 100 | 100 | | coverage-report/cached-duplicates/b | 100 | 100 | 100 | 100 | | identical.js | 100 | 100 | 100 | 100 | | --------------------------------------|----------|----------|----------|----------|-------------------|" +-------------------------------------|----------|----------|----------|----------|-------------------| `; exports[`outputs coverage report when text is requested 1`] = ` -"-------------------------------------|----------|----------|----------|----------|-------------------| +-------------------------------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -------------------------------------|----------|----------|----------|----------|-------------------| All files | 56.52 | 0 | 50 | 55.56 | | @@ -123,15 +122,15 @@ All files | 56.52 | 0 | 50 | 55.56 identical.js | 100 | 100 | 100 | 100 | | coverage-report/cached-duplicates/b | 100 | 100 | 100 | 100 | | identical.js | 100 | 100 | 100 | 100 | | --------------------------------------|----------|----------|----------|----------|-------------------|" +-------------------------------------|----------|----------|----------|----------|-------------------| `; exports[`outputs coverage report when text-summary is requested 1`] = ` -" + =============================== Coverage summary =============================== Statements : 56.52% ( 13/23 ) Branches : 0% ( 0/4 ) Functions : 50% ( 3/6 ) Lines : 55.56% ( 10/18 ) -================================================================================" +================================================================================ `; diff --git a/e2e/__tests__/__snapshots__/coverageThreshold.test.js.snap b/e2e/__tests__/__snapshots__/coverageThreshold.test.js.snap index eb85e0a51a21..d5b0d7314d48 100644 --- a/e2e/__tests__/__snapshots__/coverageThreshold.test.js.snap +++ b/e2e/__tests__/__snapshots__/coverageThreshold.test.js.snap @@ -1,121 +1,113 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`excludes tests matched by path threshold groups from global group 1`] = ` -"PASS __tests__/banana.test.js +PASS __tests__/banana.test.js ✓ banana -Jest: \\"global\\" coverage threshold for lines (100%) not met: 0% -" +Jest: "global" coverage threshold for lines (100%) not met: 0% `; exports[`excludes tests matched by path threshold groups from global group 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`excludes tests matched by path threshold groups from global group: stdout 1`] = ` -"-----------|----------|----------|----------|----------|-------------------| +-----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| All files | 50 | 100 | 50 | 50 | | apple.js | 0 | 100 | 0 | 0 | 2,3 | banana.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------| -" + `; exports[`exits with 0 if global threshold group is not found in coverage data: stdout 1`] = ` -"-----------|----------|----------|----------|----------|-------------------| +-----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | banana.js | 100 | 100 | 100 | 100 | | ------------|----------|----------|----------|----------|-------------------|" +-----------|----------|----------|----------|----------|-------------------| `; exports[`exits with 1 if coverage threshold is not met 1`] = ` -"PASS __tests__/a-banana.js +PASS __tests__/a-banana.js ✓ banana -Jest: \\"global\\" coverage threshold for lines (90%) not met: 50% -" +Jest: "global" coverage threshold for lines (90%) not met: 50% `; exports[`exits with 1 if coverage threshold is not met 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`exits with 1 if coverage threshold is not met: stdout 1`] = ` -"----------------|----------|----------|----------|----------|-------------------| +----------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------------|----------|----------|----------|----------|-------------------| All files | 50 | 100 | 0 | 50 | | not-covered.js | 50 | 100 | 0 | 50 | 3 | ----------------|----------|----------|----------|----------|-------------------| -" + `; exports[`exits with 1 if path threshold group is not found in coverage data 1`] = ` -"PASS __tests__/banana.test.js +PASS __tests__/banana.test.js ✓ banana Jest: Coverage data for apple.js was not found. -" `; exports[`exits with 1 if path threshold group is not found in coverage data 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`exits with 1 if path threshold group is not found in coverage data: stdout 1`] = ` -"-----------|----------|----------|----------|----------|-------------------| +-----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | banana.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------| -" + `; exports[`file is matched by all path and glob threshold groups 1`] = ` -"PASS __tests__/banana.test.js +PASS __tests__/banana.test.js ✓ banana -Jest: \\"./\\" coverage threshold for lines (100%) not met: 50% -Jest: \\"<>\\" coverage threshold for lines (100%) not met: 50% -Jest: \\"./banana.js\\" coverage threshold for lines (100%) not met: 50% -" +Jest: "./" coverage threshold for lines (100%) not met: 50% +Jest: "<>" coverage threshold for lines (100%) not met: 50% +Jest: "./banana.js" coverage threshold for lines (100%) not met: 50% `; exports[`file is matched by all path and glob threshold groups 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`file is matched by all path and glob threshold groups: stdout 1`] = ` -"-----------|----------|----------|----------|----------|-------------------| +-----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | -----------|----------|----------|----------|----------|-------------------| All files | 50 | 100 | 0 | 50 | | banana.js | 50 | 100 | 0 | 50 | 3 | -----------|----------|----------|----------|----------|-------------------| -" + `; diff --git a/e2e/__tests__/__snapshots__/customReporters.test.js.snap b/e2e/__tests__/__snapshots__/customReporters.test.js.snap index c1832808c3f4..9f95581d3873 100644 --- a/e2e/__tests__/__snapshots__/customReporters.test.js.snap +++ b/e2e/__tests__/__snapshots__/customReporters.test.js.snap @@ -1,10 +1,10 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Custom Reporters Integration IncompleteReporter for flexibility 1`] = ` -"onRunComplete is called +onRunComplete is called Passed Tests: 1 Failed Tests: 0 -Total Tests: 1" +Total Tests: 1 `; exports[`Custom Reporters Integration TestReporter with all tests failing 1`] = ` @@ -64,19 +64,17 @@ Object { `; exports[`Custom Reporters Integration default reporters enabled 1`] = ` -"PASS __tests__/add.test.js +PASS __tests__/add.test.js Custom Reporters ✓ adds ok - -" `; exports[`Custom Reporters Integration default reporters enabled 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites matching /add.test.js/i." +Ran all test suites matching /add.test.js/i. `; exports[`Custom Reporters Integration default reporters enabled 3`] = ` @@ -104,7 +102,7 @@ Object { `; exports[`Custom Reporters Integration invalid format for adding reporters 1`] = ` -"● Reporter Validation Error: +● Reporter Validation Error: Unexpected value for Path at index 0 of reporter at index 0 Expected: @@ -119,31 +117,31 @@ exports[`Custom Reporters Integration invalid format for adding reporters 1`] = Configuration Documentation: https://jestjs.io/docs/configuration.html -" + `; exports[`Custom Reporters Integration valid array format for adding reporters 1`] = ` -"{ - \\"onRunComplete\\": { - \\"called\\": true, - \\"numPassedTests\\": 1, - \\"numFailedTests\\": 0, - \\"numTotalTests\\": 1 +{ + "onRunComplete": { + "called": true, + "numPassedTests": 1, + "numFailedTests": 0, + "numTotalTests": 1 }, - \\"onRunStart\\": { - \\"called\\": true, - \\"options\\": \\"object\\" + "onRunStart": { + "called": true, + "options": "object" }, - \\"onTestResult\\": { - \\"times\\": 1, - \\"called\\": true + "onTestResult": { + "times": 1, + "called": true }, - \\"onTestStart\\": { - \\"called\\": true, - \\"path\\": false + "onTestStart": { + "called": true, + "path": false }, - \\"options\\": { - \\"Dmitrii Abramov\\": \\"Awesome\\" + "options": { + "Aaron Abramov": "Awesome" } -}" +} `; diff --git a/e2e/__tests__/__snapshots__/detectOpenHandles.js.snap b/e2e/__tests__/__snapshots__/detectOpenHandles.js.snap index 3d78afc98b08..bf7c5f83b396 100644 --- a/e2e/__tests__/__snapshots__/detectOpenHandles.js.snap +++ b/e2e/__tests__/__snapshots__/detectOpenHandles.js.snap @@ -1,19 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`prints message about flag on forceExit 1`] = ` -"Force exiting Jest +Force exiting Jest -Have you considered using \`--detectOpenHandles\` to detect async operations that kept running after all tests finished?" +Have you considered using \`--detectOpenHandles\` to detect async operations that kept running after all tests finished? `; exports[`prints message about flag on slow tests 1`] = ` -"Jest did not exit one second after the test run has completed. +Jest did not exit one second after the test run has completed. -This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with \`--detectOpenHandles\` to troubleshoot this issue." +This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with \`--detectOpenHandles\` to troubleshoot this issue. `; exports[`prints out info about open handlers 1`] = ` -"Jest has detected the following 1 open handle potentially keeping Jest from exiting: +Jest has detected the following 1 open handle potentially keeping Jest from exiting: ● GETADDRINFOREQWRAP @@ -24,11 +24,11 @@ exports[`prints out info about open handlers 1`] = ` 10 | at Object.listen (server.js:9:5) - at Object.require (__tests__/outside.js:3:1)" + at Object.require (__tests__/outside.js:3:1) `; exports[`prints out info about open handlers from inside tests 1`] = ` -"Jest has detected the following 1 open handle potentially keeping Jest from exiting: +Jest has detected the following 1 open handle potentially keeping Jest from exiting: ● Timeout @@ -40,5 +40,5 @@ exports[`prints out info about open handlers from inside tests 1`] = ` 6 | }); 7 | - at Object.setTimeout (__tests__/inside.js:4:3)" + at Object.setTimeout (__tests__/inside.js:4:3) `; diff --git a/e2e/__tests__/__snapshots__/each.test.js.snap b/e2e/__tests__/__snapshots__/each.test.js.snap index 662a0870b471..75220531c419 100644 --- a/e2e/__tests__/__snapshots__/each.test.js.snap +++ b/e2e/__tests__/__snapshots__/each.test.js.snap @@ -1,15 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`formats args with pretty format when given %p 1`] = ` -"PASS __tests__/pretty.test.js +PASS __tests__/pretty.test.js array - ✓ \\"hello\\" == \\"hello\\" + ✓ "hello" == "hello" ✓ 1 == 1 ✓ null == null ✓ undefined == undefined ✓ 1.2 == 1.2 - ✓ {\\"foo\\": \\"bar\\"} == {\\"foo\\": \\"bar\\"} - ✓ {\\"foo\\": [Object]} == {\\"foo\\": [Object]} + ✓ {"foo": "bar"} == {"foo": "bar"} + ✓ {"foo": [Object]} == {"foo": [Object]} ✓ [Function noop] == [Function noop] ✓ [] == [] ✓ [[Object]] == [[Object]] @@ -17,36 +17,32 @@ exports[`formats args with pretty format when given %p 1`] = ` ✓ -Infinity == -Infinity ✓ NaN == NaN template - ✓ \\"hello\\" == \\"hello\\" + ✓ "hello" == "hello" ✓ 1 == 1 ✓ null == null ✓ undefined == undefined ✓ 1.2 == 1.2 - ✓ {\\"foo\\": \\"bar\\"} == {\\"foo\\": \\"bar\\"} - ✓ {\\"foo\\": [Object]} == {\\"foo\\": [Object]} + ✓ {"foo": "bar"} == {"foo": "bar"} + ✓ {"foo": [Object]} == {"foo": [Object]} ✓ [Function noop] == [Function noop] ✓ [] == [] ✓ [[Object]] == [[Object]] ✓ Infinity == Infinity ✓ -Infinity == -Infinity ✓ NaN == NaN - -" `; exports[`runs only the describe.only.each tests 1`] = ` -"PASS __tests__/describeOnly.test.js +PASS __tests__/describeOnly.test.js passes all rows expected true == true ✓ passes ✓ passes fails all rows expected false == true ○ skipped 1 test - -" `; exports[`shows error message when not enough arguments are supplied to tests 1`] = ` -"FAIL __tests__/eachException.test.js +FAIL __tests__/eachException.test.js ✕ throws exception when one argument too few are supplied $left == $right ✕ throws exception when not enough arguments are supplied $left == $right @@ -96,23 +92,19 @@ exports[`shows error message when not enough arguments are supplied to tests 1`] 22 | \`( at Object. (__tests__/eachException.test.js:19:1) - -" `; exports[`shows only the tests with .only as being ran 1`] = ` -"PASS __tests__/eachOnly.test.js +PASS __tests__/eachOnly.test.js ✓ passes one row expected true == true ✓ passes one row expected true == true ✓ passes one row expected true == true ✓ passes one row expected true == true ○ skipped 4 tests - -" `; exports[`shows only the tests without .skip as being ran 1`] = ` -"PASS __tests__/eachSkip.test.js +PASS __tests__/eachSkip.test.js ✓ passes one row expected true == true ✓ passes one row expected true == true ✓ passes one row expected true == true @@ -120,12 +112,10 @@ exports[`shows only the tests without .skip as being ran 1`] = ` ○ skipped 4 tests passes all rows expected true == true ○ skipped 2 tests - -" `; exports[`shows the correct errors in stderr when failing tests 1`] = ` -"FAIL __tests__/failure.test.js +FAIL __tests__/failure.test.js ✓ array table fails on one row: expected true == true ✕ array table fails on one row: expected true == false ✕ array table fails on all rows expected 1 == 2 @@ -137,9 +127,9 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` ✕ The word red contains the letter 'z' ✕ The word green contains the letter 'z' ✕ The word bean contains the letter 'z' - template table describe fails on all rows expected \\"a\\" == \\"b\\" + template table describe fails on all rows expected "a" == "b" ✕ fails - template table describe fails on all rows expected \\"c\\" == \\"d\\" + template table describe fails on all rows expected "c" == "d" ✕ fails array table describe fails on all rows expected a == b ✕ fails @@ -255,7 +245,7 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` Expected: true Received: false - 45 | \\"The word %s contains the letter 'z'\\", + 45 | "The word %s contains the letter 'z'", 46 | word => { > 47 | expect(/z/.test(word)).toBe(true); | ^ @@ -272,7 +262,7 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` Expected: true Received: false - 45 | \\"The word %s contains the letter 'z'\\", + 45 | "The word %s contains the letter 'z'", 46 | word => { > 47 | expect(/z/.test(word)).toBe(true); | ^ @@ -289,7 +279,7 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` Expected: true Received: false - 45 | \\"The word %s contains the letter 'z'\\", + 45 | "The word %s contains the letter 'z'", 46 | word => { > 47 | expect(/z/.test(word)).toBe(true); | ^ @@ -299,12 +289,12 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` at toBe (__tests__/failure.test.js:47:28) - ● template table describe fails on all rows expected \\"a\\" == \\"b\\" › fails + ● template table describe fails on all rows expected "a" == "b" › fails expect(received).toBe(expected) // Object.is equality - Expected: \\"b\\" - Received: \\"a\\" + Expected: "b" + Received: "a" 57 | ({left, right}) => { 58 | it('fails ', () => { @@ -316,12 +306,12 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` at Object.toBe (__tests__/failure.test.js:59:20) - ● template table describe fails on all rows expected \\"c\\" == \\"d\\" › fails + ● template table describe fails on all rows expected "c" == "d" › fails expect(received).toBe(expected) // Object.is equality - Expected: \\"d\\" - Received: \\"c\\" + Expected: "d" + Received: "c" 57 | ({left, right}) => { 58 | it('fails ', () => { @@ -337,8 +327,8 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` expect(received).toBe(expected) // Object.is equality - Expected: \\"b\\" - Received: \\"a\\" + Expected: "b" + Received: "a" 66 | (left, right) => { 67 | it('fails', () => { @@ -354,8 +344,8 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` expect(received).toBe(expected) // Object.is equality - Expected: \\"d\\" - Received: \\"c\\" + Expected: "d" + Received: "c" 66 | (left, right) => { 67 | it('fails', () => { @@ -366,6 +356,4 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` 71 | ); at Object.toBe (__tests__/failure.test.js:68:20) - -" `; diff --git a/e2e/__tests__/__snapshots__/emptyDescribeWithHooks.test.js.snap b/e2e/__tests__/__snapshots__/emptyDescribeWithHooks.test.js.snap index 4c8744c30973..af198cb7e29a 100644 --- a/e2e/__tests__/__snapshots__/emptyDescribeWithHooks.test.js.snap +++ b/e2e/__tests__/__snapshots__/emptyDescribeWithHooks.test.js.snap @@ -29,15 +29,12 @@ Object { 12 | describe('another block with tests', () => { at beforeEach (__tests__/hookInEmptyDescribe.test.js:9:3) - at Object.describe (__tests__/hookInEmptyDescribe.test.js:8:1) - -", + at Object.describe (__tests__/hookInEmptyDescribe.test.js:8:1)", "summary": "Test Suites: 1 failed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites matching /hookInEmptyDescribe.test.js/i. -", +Ran all test suites matching /hookInEmptyDescribe.test.js/i.", } `; @@ -59,15 +56,12 @@ Object { 12 | at beforeEach (__tests__/hookInEmptyNestedDescribe.test.js:9:3) - at Object.describe (__tests__/hookInEmptyNestedDescribe.test.js:8:1) - -", + at Object.describe (__tests__/hookInEmptyNestedDescribe.test.js:8:1)", "summary": "Test Suites: 1 failed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites matching /hookInEmptyNestedDescribe.test.js/i. -", +Ran all test suites matching /hookInEmptyNestedDescribe.test.js/i.", } `; @@ -134,14 +128,11 @@ Object { 15 | describe('another block with tests', () => { at beforeAll (__tests__/multipleHooksInEmptyDescribe.test.js:12:3) - at Object.describe (__tests__/multipleHooksInEmptyDescribe.test.js:8:1) - -", + at Object.describe (__tests__/multipleHooksInEmptyDescribe.test.js:8:1)", "summary": "Test Suites: 1 failed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites matching /multipleHooksInEmptyDescribe.test.js/i. -", +Ran all test suites matching /multipleHooksInEmptyDescribe.test.js/i.", } `; diff --git a/e2e/__tests__/__snapshots__/errorOnDeprecated.test.js.snap b/e2e/__tests__/__snapshots__/errorOnDeprecated.test.js.snap index e2857a9525b7..9ca3c1100c97 100644 --- a/e2e/__tests__/__snapshots__/errorOnDeprecated.test.js.snap +++ b/e2e/__tests__/__snapshots__/errorOnDeprecated.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`defaultTimeoutInterval.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/defaultTimeoutInterval.test.js +FAIL __tests__/defaultTimeoutInterval.test.js ✕ Default Timeout Interval ● Default Timeout Interval @@ -17,12 +17,10 @@ exports[`defaultTimeoutInterval.test.js errors in errorOnDeprecated mode 1`] = ` 13 | at Object..test (__tests__/defaultTimeoutInterval.test.js:10:3) - -" `; exports[`fail.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/fail.test.js +FAIL __tests__/fail.test.js ✕ fail ● fail @@ -38,12 +36,10 @@ exports[`fail.test.js errors in errorOnDeprecated mode 1`] = ` 16 | at Object.fail (__tests__/fail.test.js:13:5) - -" `; exports[`jasmine.addMatchers.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/jasmine.addMatchers.test.js +FAIL __tests__/jasmine.addMatchers.test.js ● Test suite failed to run Illegal usage of \`jasmine.addMatchers\`, prefer \`expect.extends\`. @@ -57,12 +53,10 @@ exports[`jasmine.addMatchers.test.js errors in errorOnDeprecated mode 1`] = ` 12 | message: 'Nobdy expects the Spanish Inquisition!', at Object.addMatchers (__tests__/jasmine.addMatchers.test.js:9:9) - -" `; exports[`jasmine.any.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/jasmine.any.test.js +FAIL __tests__/jasmine.any.test.js ✕ jasmine.any ● jasmine.any @@ -77,12 +71,10 @@ exports[`jasmine.any.test.js errors in errorOnDeprecated mode 1`] = ` 12 | at Object.any (__tests__/jasmine.any.test.js:10:51) - -" `; exports[`jasmine.anything.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/jasmine.anything.test.js +FAIL __tests__/jasmine.anything.test.js ✕ jasmine.anything ● jasmine.anything @@ -97,12 +89,10 @@ exports[`jasmine.anything.test.js errors in errorOnDeprecated mode 1`] = ` 12 | at Object.anything (__tests__/jasmine.anything.test.js:10:62) - -" `; exports[`jasmine.arrayContaining.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/jasmine.arrayContaining.test.js +FAIL __tests__/jasmine.arrayContaining.test.js ✕ jasmine.arrayContaining ● jasmine.arrayContaining @@ -117,12 +107,10 @@ exports[`jasmine.arrayContaining.test.js errors in errorOnDeprecated mode 1`] = 12 | at Object.arrayContaining (__tests__/jasmine.arrayContaining.test.js:10:45) - -" `; exports[`jasmine.createSpy.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/jasmine.createSpy.test.js +FAIL __tests__/jasmine.createSpy.test.js ✕ jasmine.createSpy ● jasmine.createSpy @@ -138,12 +126,10 @@ exports[`jasmine.createSpy.test.js errors in errorOnDeprecated mode 1`] = ` 13 | }); at Object.createSpy (__tests__/jasmine.createSpy.test.js:10:25) - -" `; exports[`jasmine.objectContaining.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/jasmine.objectContaining.test.js +FAIL __tests__/jasmine.objectContaining.test.js ✕ jasmine.objectContaining ● jasmine.objectContaining @@ -159,12 +145,10 @@ exports[`jasmine.objectContaining.test.js errors in errorOnDeprecated mode 1`] = 14 | at Object.objectContaining (__tests__/jasmine.objectContaining.test.js:11:13) - -" `; exports[`jasmine.stringMatching.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/jasmine.stringMatching.test.js +FAIL __tests__/jasmine.stringMatching.test.js ✕ jasmine.stringMatching ● jasmine.stringMatching @@ -179,12 +163,10 @@ exports[`jasmine.stringMatching.test.js errors in errorOnDeprecated mode 1`] = ` 12 | at Object.stringMatching (__tests__/jasmine.stringMatching.test.js:10:50) - -" `; exports[`pending.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/pending.test.js +FAIL __tests__/pending.test.js ✕ pending ● pending @@ -200,12 +182,10 @@ exports[`pending.test.js errors in errorOnDeprecated mode 1`] = ` 14 | }); at Object.pending (__tests__/pending.test.js:11:5) - -" `; exports[`spyOn.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/spyOn.test.js +FAIL __tests__/spyOn.test.js ✕ spyOn ● spyOn @@ -221,12 +201,10 @@ exports[`spyOn.test.js errors in errorOnDeprecated mode 1`] = ` 18 | at Object.spyOn (__tests__/spyOn.test.js:15:3) - -" `; exports[`spyOnProperty.test.js errors in errorOnDeprecated mode 1`] = ` -"FAIL __tests__/spyOnProperty.test.js +FAIL __tests__/spyOnProperty.test.js ✕ spyOnProperty ● spyOnProperty @@ -242,6 +220,4 @@ exports[`spyOnProperty.test.js errors in errorOnDeprecated mode 1`] = ` 27 | at Object.spyOnProperty (__tests__/spyOnProperty.test.js:24:15) - -" `; diff --git a/e2e/__tests__/__snapshots__/executeTestsOnceInMpr.js.snap b/e2e/__tests__/__snapshots__/executeTestsOnceInMpr.js.snap index 90f90fe3c30b..39ebcb0c37c3 100644 --- a/e2e/__tests__/__snapshots__/executeTestsOnceInMpr.js.snap +++ b/e2e/__tests__/__snapshots__/executeTestsOnceInMpr.js.snap @@ -1,8 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Tests are executed only once even in an MPR 1`] = ` -"PASS foo/folder/my-test-bar.js +PASS foo/folder/my-test-bar.js ✓ bar - -" `; diff --git a/e2e/__tests__/__snapshots__/expectAsyncMatcher.test.js.snap b/e2e/__tests__/__snapshots__/expectAsyncMatcher.test.js.snap index c1e0cd858c93..6ef5f68f3fca 100644 --- a/e2e/__tests__/__snapshots__/expectAsyncMatcher.test.js.snap +++ b/e2e/__tests__/__snapshots__/expectAsyncMatcher.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`shows the correct errors in stderr when failing tests 1`] = ` -"FAIL __tests__/failure.test.js +FAIL __tests__/failure.test.js ✕ fail with expected non promise values ✕ fail with expected non promise values and not ✕ fail with expected promise values @@ -72,6 +72,4 @@ exports[`shows the correct errors in stderr when failing tests 1`] = ` at _next (__tests__/failure.test.js:13:194) at __tests__/failure.test.js:13:364 at Object. (__tests__/failure.test.js:13:97) - -" `; diff --git a/e2e/__tests__/__snapshots__/failures.test.js.snap b/e2e/__tests__/__snapshots__/failures.test.js.snap index 4955ba573aae..d6cdac0e6940 100644 --- a/e2e/__tests__/__snapshots__/failures.test.js.snap +++ b/e2e/__tests__/__snapshots__/failures.test.js.snap @@ -1,34 +1,28 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`not throwing Error objects 1`] = ` -"FAIL __tests__/throwNumber.test.js +FAIL __tests__/throwNumber.test.js ● Test suite failed to run - Expected an Error, but \\"1\\" was thrown - -" + Expected an Error, but "1" was thrown `; exports[`not throwing Error objects 2`] = ` -"FAIL __tests__/throwString.test.js +FAIL __tests__/throwString.test.js ● Test suite failed to run banana - -" `; exports[`not throwing Error objects 3`] = ` -"FAIL __tests__/throwObject.test.js +FAIL __tests__/throwObject.test.js ● Test suite failed to run Error: No message was provided - -" `; exports[`not throwing Error objects 4`] = ` -"FAIL __tests__/assertionCount.test.js +FAIL __tests__/assertionCount.test.js .assertions() ✕ throws ✕ throws on redeclare of assertion count @@ -115,12 +109,10 @@ exports[`not throwing Error objects 4`] = ` 30 | describe('.assertions()', () => { at Object.hasAssertions (__tests__/assertionCount.test.js:27:10) - -" `; exports[`not throwing Error objects 5`] = ` -"FAIL __tests__/duringTests.test.js +FAIL __tests__/duringTests.test.js ✕ Promise thrown during test ✕ Boolean thrown during test ✕ undefined thrown during test @@ -175,10 +167,10 @@ exports[`not throwing Error objects 5`] = ` ● Object thrown during test thrown: Object { - \\"notAnError\\": Array [ + "notAnError": Array [ Object { - \\"hello\\": true, - \\"tooDeep\\": [Object], + "hello": true, + "tooDeep": [Object], }, ], } @@ -224,10 +216,10 @@ exports[`not throwing Error objects 5`] = ` ● done(non-error) thrown: Object { - \\"notAnError\\": Array [ + "notAnError": Array [ Object { - \\"hello\\": true, - \\"tooDeep\\": [Object], + "hello": true, + "tooDeep": [Object], }, ], } @@ -245,10 +237,10 @@ exports[`not throwing Error objects 5`] = ` ● returned promise rejection thrown: Object { - \\"notAnError\\": Array [ + "notAnError": Array [ Object { - \\"hello\\": true, - \\"tooDeep\\": [Object], + "hello": true, + "tooDeep": [Object], }, ], } @@ -260,12 +252,10 @@ exports[`not throwing Error objects 5`] = ` 41 | at Object.test (__tests__/duringTests.test.js:40:1) - -" `; exports[`works with assertions in separate files 1`] = ` -"FAIL __tests__/testMacro.test.js +FAIL __tests__/testMacro.test.js ✕ use some imported macro to make assertion ● use some imported macro to make assertion @@ -284,12 +274,10 @@ exports[`works with assertions in separate files 1`] = ` at toEqual (macros.js:12:15) at Object.shouldEqual (__tests__/testMacro.test.js:14:3) - -" `; exports[`works with async failures 1`] = ` -"FAIL __tests__/asyncFailures.test.js +FAIL __tests__/asyncFailures.test.js ✕ resolve, but fail ✕ reject, but fail ✕ expect reject @@ -306,8 +294,8 @@ exports[`works with async failures 1`] = ` + Received Object { - - \\"baz\\": \\"bar\\", - + \\"foo\\": \\"bar\\", + - "baz": "bar", + + "foo": "bar", } 10 | @@ -330,8 +318,8 @@ exports[`works with async failures 1`] = ` + Received Object { - - \\"baz\\": \\"bar\\", - + \\"foo\\": \\"bar\\", + - "baz": "bar", + + "foo": "bar", } 13 | @@ -349,7 +337,7 @@ exports[`works with async failures 1`] = ` expect(received).rejects.toEqual() Received promise resolved instead of rejected - Resolved to value: {\\"foo\\": \\"bar\\"} + Resolved to value: {"foo": "bar"} 16 | 17 | test('expect reject', () => @@ -366,7 +354,7 @@ exports[`works with async failures 1`] = ` expect(received).resolves.toEqual() Received promise rejected instead of resolved - Rejected to value: {\\"foo\\": \\"bar\\"} + Rejected to value: {"foo": "bar"} 19 | 20 | test('expect resolve', () => @@ -391,25 +379,23 @@ exports[`works with async failures 1`] = ` 26 | at Object.test (__tests__/asyncFailures.test.js:23:1) - -" `; exports[`works with named snapshot failures 1`] = ` -"FAIL __tests__/snapshotNamed.test.js +FAIL __tests__/snapshotNamed.test.js ✕ failing named snapshot ● failing named snapshot expect(value).toMatchSnapshot() - Received value does not match stored snapshot \\"failing named snapshot: snapname 1\\". + Received value does not match stored snapshot "failing named snapshot: snapname 1". - Snapshot + Received - - \\"bar\\" - + \\"foo\\" + - "bar" + + "foo" 10 | 11 | test('failing named snapshot', () => { @@ -421,11 +407,11 @@ exports[`works with named snapshot failures 1`] = ` at Object.toMatchSnapshot (__tests__/snapshotNamed.test.js:12:17) › 1 snapshot failed. -" + `; exports[`works with node assert 1`] = ` -"FAIL __tests__/assertionError.test.js +FAIL __tests__/assertionError.test.js ✕ assert ✕ assert with a message ✕ assert.ok @@ -554,10 +540,6 @@ exports[`works with node assert 1`] = ` Received: 1 - Difference: - - Compared values have no visual difference. - 33 | 34 | test('assert.notEqual', () => { > 35 | assert.notEqual(1, 1); @@ -573,9 +555,9 @@ exports[`works with node assert 1`] = ` assert.deepEqual(received, expected) Expected value to deeply equal to: - {\\"a\\": {\\"b\\": {\\"c\\": 6}}} + {"a": {"b": {"c": 6}}} Received: - {\\"a\\": {\\"b\\": {\\"c\\": 5}}} + {"a": {"b": {"c": 5}}} Difference: @@ -583,10 +565,10 @@ exports[`works with node assert 1`] = ` + Received Object { - \\"a\\": Object { - \\"b\\": Object { - - \\"c\\": 6, - + \\"c\\": 5, + "a": Object { + "b": Object { + - "c": 6, + + "c": 5, }, }, } @@ -606,9 +588,9 @@ exports[`works with node assert 1`] = ` assert.deepEqual(received, expected) Expected value to deeply equal to: - {\\"a\\": {\\"b\\": {\\"c\\": 7}}} + {"a": {"b": {"c": 7}}} Received: - {\\"a\\": {\\"b\\": {\\"c\\": 5}}} + {"a": {"b": {"c": 5}}} Message: this is a message @@ -619,10 +601,10 @@ exports[`works with node assert 1`] = ` + Received Object { - \\"a\\": Object { - \\"b\\": Object { - - \\"c\\": 7, - + \\"c\\": 5, + "a": Object { + "b": Object { + - "c": 7, + + "c": 5, }, }, } @@ -642,9 +624,9 @@ exports[`works with node assert 1`] = ` assert.notDeepEqual(received, expected) Expected value not to deeply equal to: - {\\"a\\": 1} + {"a": 1} Received: - {\\"a\\": 1} + {"a": 1} Difference: @@ -691,10 +673,6 @@ exports[`works with node assert 1`] = ` Message: My custom error message - Difference: - - Compared values have no visual difference. - 53 | 54 | test('assert.notStrictEqual', () => { > 55 | assert.notStrictEqual(1, 1, 'My custom error message'); @@ -710,9 +688,9 @@ exports[`works with node assert 1`] = ` assert.deepStrictEqual(received, expected) Expected value to deeply and strictly equal to: - {\\"a\\": 2} + {"a": 2} Received: - {\\"a\\": 1} + {"a": 1} Difference: @@ -720,8 +698,8 @@ exports[`works with node assert 1`] = ` + Received Object { - - \\"a\\": 2, - + \\"a\\": 1, + - "a": 2, + + "a": 1, } 57 | @@ -739,9 +717,9 @@ exports[`works with node assert 1`] = ` assert.notDeepStrictEqual(received, expected) Expected value not to deeply and strictly equal to: - {\\"a\\": 1} + {"a": 1} Received: - {\\"a\\": 1} + {"a": 1} Difference: @@ -805,10 +783,10 @@ exports[`works with node assert 1`] = ` assert.equal(received, expected) or assert(received) Expected value to be equal to: - \\"hello\\" + "hello" Received: - \\"hello - goodbye\\" + "hello + goodbye" Message: hmmm @@ -823,7 +801,7 @@ exports[`works with node assert 1`] = ` 79 | 80 | test('async', async () => { - > 81 | assert.equal('hello\\\\ngoodbye', 'hello', 'hmmm'); + > 81 | assert.equal('hello\\ngoodbye', 'hello', 'hmmm'); | ^ 82 | }); 83 | @@ -833,25 +811,23 @@ exports[`works with node assert 1`] = ` at _next (__tests__/assertionError.test.js:13:194) at __tests__/assertionError.test.js:13:364 at Object. (__tests__/assertionError.test.js:13:97) - -" `; exports[`works with snapshot failures 1`] = ` -"FAIL __tests__/snapshot.test.js +FAIL __tests__/snapshot.test.js ✕ failing snapshot ● failing snapshot expect(value).toMatchSnapshot() - Received value does not match stored snapshot \\"failing snapshot 1\\". + Received value does not match stored snapshot "failing snapshot 1". - Snapshot + Received - - \\"bar\\" - + \\"foo\\" + - "bar" + + "foo" 10 | 11 | test('failing snapshot', () => { @@ -863,5 +839,5 @@ exports[`works with snapshot failures 1`] = ` at Object.toMatchSnapshot (__tests__/snapshot.test.js:12:17) › 1 snapshot failed. -" + `; diff --git a/e2e/__tests__/__snapshots__/findRelatedFiles.test.js.snap b/e2e/__tests__/__snapshots__/findRelatedFiles.test.js.snap index bde29e5dd035..d0183e881440 100644 --- a/e2e/__tests__/__snapshots__/findRelatedFiles.test.js.snap +++ b/e2e/__tests__/__snapshots__/findRelatedFiles.test.js.snap @@ -1,74 +1,68 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`--findRelatedTests flag coverage configuration is applied correctly 1`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites related to files matching /a.js|b.js/i." +Ran all test suites related to files matching /a.js|b.js/i. `; exports[`--findRelatedTests flag coverage configuration is applied correctly 2`] = ` -" - PASS __tests__/a.test.js -✓ a" +✓ a `; exports[`--findRelatedTests flag coverage configuration is applied correctly 3`] = ` -"----------|----------|----------|----------|----------|-------------------| +----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | a.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------|" +----------|----------|----------|----------|----------|-------------------| `; exports[`--findRelatedTests flag generates coverage report for filename 1`] = ` -"Test Suites: 2 passed, 2 total +Test Suites: 2 passed, 2 total Tests: 2 passed, 2 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`--findRelatedTests flag generates coverage report for filename 2`] = ` -" - PASS __tests__/a.test.js -PASS __tests__/b.test.js" +PASS __tests__/b.test.js `; exports[`--findRelatedTests flag generates coverage report for filename 3`] = ` -"----------|----------|----------|----------|----------|-------------------| +----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | a.js | 100 | 100 | 100 | 100 | | b.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------|" +----------|----------|----------|----------|----------|-------------------| `; exports[`--findRelatedTests flag generates coverage report for filename 4`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites related to files matching /a.js/i." +Ran all test suites related to files matching /a.js/i. `; exports[`--findRelatedTests flag generates coverage report for filename 5`] = ` -"PASS __tests__/a.test.js +PASS __tests__/a.test.js ✓ a - -" `; exports[`--findRelatedTests flag generates coverage report for filename 6`] = ` -"----------|----------|----------|----------|----------|-------------------| +----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | a.js | 100 | 100 | 100 | 100 | | -----------|----------|----------|----------|----------|-------------------|" +----------|----------|----------|----------|----------|-------------------| `; diff --git a/e2e/__tests__/__snapshots__/globals.test.js.snap b/e2e/__tests__/__snapshots__/globals.test.js.snap index be32c136475a..e284281a7e69 100644 --- a/e2e/__tests__/__snapshots__/globals.test.js.snap +++ b/e2e/__tests__/__snapshots__/globals.test.js.snap @@ -1,26 +1,24 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`basic test constructs 1`] = ` -"PASS __tests__/basic.testConstructs.test.js +PASS __tests__/basic.testConstructs.test.js ✓ it ✓ test describe ✓ it ✓ test - -" `; exports[`basic test constructs 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 4 passed, 4 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`cannot have describe with no implementation 1`] = ` -"FAIL __tests__/onlyConstructs.test.js +FAIL __tests__/onlyConstructs.test.js ● Test suite failed to run Missing second argument. It must be a callback function. @@ -31,21 +29,18 @@ exports[`cannot have describe with no implementation 1`] = ` 3 | at Object. (__tests__/onlyConstructs.test.js:2:14) - -" `; exports[`cannot have describe with no implementation 2`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 0 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`cannot test with no implementation 1`] = ` -"FAIL __tests__/onlyConstructs.test.js +FAIL __tests__/onlyConstructs.test.js ● Test suite failed to run Missing second argument. It must be a callback function. Perhaps you want to use \`test.todo\` for a test placeholder. @@ -58,21 +53,18 @@ exports[`cannot test with no implementation 1`] = ` 5 | at Object.it (__tests__/onlyConstructs.test.js:3:5) - -" `; exports[`cannot test with no implementation 2`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 0 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`cannot test with no implementation with expand arg 1`] = ` -"FAIL __tests__/onlyConstructs.test.js +FAIL __tests__/onlyConstructs.test.js ● Test suite failed to run Missing second argument. It must be a callback function. Perhaps you want to use \`test.todo\` for a test placeholder. @@ -85,37 +77,32 @@ exports[`cannot test with no implementation with expand arg 1`] = ` 5 | at Object.it (__tests__/onlyConstructs.test.js:3:5) - -" `; exports[`cannot test with no implementation with expand arg 2`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 0 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`function as descriptor 1`] = ` -"PASS __tests__/functionAsDescriptor.test.js +PASS __tests__/functionAsDescriptor.test.js Foo ✓ it - -" `; exports[`function as descriptor 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`only 1`] = ` -"PASS __tests__/onlyConstructs.test.js +PASS __tests__/onlyConstructs.test.js ✓ test.only ✓ it.only ✓ fit @@ -127,20 +114,18 @@ exports[`only 1`] = ` ✓ test describe ✓ test - -" `; exports[`only 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 skipped, 7 passed, 8 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`only with expand arg 1`] = ` -"PASS __tests__/onlyConstructs.test.js +PASS __tests__/onlyConstructs.test.js ○ it ✓ test.only ✓ it.only @@ -152,20 +137,18 @@ exports[`only with expand arg 1`] = ` ✓ test describe ✓ test - -" `; exports[`only with expand arg 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 skipped, 7 passed, 8 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`skips 1`] = ` -"PASS __tests__/skipsConstructs.test.js +PASS __tests__/skipsConstructs.test.js ✓ it ○ skipped 4 tests xdescribe @@ -174,20 +157,18 @@ exports[`skips 1`] = ` ○ skipped 1 test describe ○ skipped 1 test - -" `; exports[`skips 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 8 skipped, 1 passed, 9 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`skips with expand arg 1`] = ` -"PASS __tests__/skipsConstructs.test.js +PASS __tests__/skipsConstructs.test.js ✓ it ○ xtest ○ xit @@ -200,14 +181,12 @@ exports[`skips with expand arg 1`] = ` ○ test describe ○ test - -" `; exports[`skips with expand arg 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 8 skipped, 1 passed, 9 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; diff --git a/e2e/__tests__/__snapshots__/jest.config.js.test.js.snap b/e2e/__tests__/__snapshots__/jest.config.js.test.js.snap index d7080456d7bc..a49fd8ccbbc3 100644 --- a/e2e/__tests__/__snapshots__/jest.config.js.test.js.snap +++ b/e2e/__tests__/__snapshots__/jest.config.js.test.js.snap @@ -1,38 +1,34 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`traverses directory tree up until it finds jest.config 1`] = ` -" console.log ../../../__tests__/a-banana.js:4 + console.log ../../../__tests__/a-banana.js:4 <>/jest.config.js/some/nested/directory -" + `; exports[`traverses directory tree up until it finds jest.config 2`] = ` -"PASS ../../../__tests__/a-banana.js +PASS ../../../__tests__/a-banana.js ✓ banana ✓ abc - -" `; exports[`traverses directory tree up until it finds jest.config 3`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 2 passed, 2 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`works with jest.config.js 1`] = ` -"PASS __tests__/a-banana.js +PASS __tests__/a-banana.js ✓ banana - -" `; exports[`works with jest.config.js 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; diff --git a/e2e/__tests__/__snapshots__/jestChangedFiles.test.js.snap b/e2e/__tests__/__snapshots__/jestChangedFiles.test.js.snap index 61d5013154f9..52436014c7ec 100644 --- a/e2e/__tests__/__snapshots__/jestChangedFiles.test.js.snap +++ b/e2e/__tests__/__snapshots__/jestChangedFiles.test.js.snap @@ -1,21 +1,21 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`handles a bad revision for "changedSince", for git 1`] = ` -" + ● Test suite failed to run fatal: bad revision '^blablabla' -" + `; exports[`handles a bad revision for "changedSince", for hg 1`] = ` -" + ● Test suite failed to run abort: unknown revision 'blablabla'! -" + `; diff --git a/e2e/__tests__/__snapshots__/listTests.test.js.snap b/e2e/__tests__/__snapshots__/listTests.test.js.snap index b1d8584f771e..3c12f33eab07 100644 --- a/e2e/__tests__/__snapshots__/listTests.test.js.snap +++ b/e2e/__tests__/__snapshots__/listTests.test.js.snap @@ -1,8 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`--listTests flag causes tests to be printed in different lines 1`] = ` -"/MOCK_ABOLUTE_PATH/e2e/list-tests/__tests__/dummy.test.js -/MOCK_ABOLUTE_PATH/e2e/list-tests/__tests__/other.test.js" +/MOCK_ABOLUTE_PATH/e2e/list-tests/__tests__/dummy.test.js +/MOCK_ABOLUTE_PATH/e2e/list-tests/__tests__/other.test.js `; -exports[`--listTests flag causes tests to be printed out as JSON when using the --json flag 1`] = `"[\\"/MOCK_ABOLUTE_PATH/e2e/list-tests/__tests__/dummy.test.js\\",\\"/MOCK_ABOLUTE_PATH/e2e/list-tests/__tests__/other.test.js\\"]"`; +exports[`--listTests flag causes tests to be printed out as JSON when using the --json flag 1`] = `["/MOCK_ABOLUTE_PATH/e2e/list-tests/__tests__/dummy.test.js","/MOCK_ABOLUTE_PATH/e2e/list-tests/__tests__/other.test.js"]`; diff --git a/e2e/__tests__/__snapshots__/moduleNameMapper.test.js.snap b/e2e/__tests__/__snapshots__/moduleNameMapper.test.js.snap index 7f5aba3ac6de..812baf215ae5 100644 --- a/e2e/__tests__/__snapshots__/moduleNameMapper.test.js.snap +++ b/e2e/__tests__/__snapshots__/moduleNameMapper.test.js.snap @@ -1,14 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`moduleNameMapper correct configuration 1`] = ` -"PASS __tests__/index.js +PASS __tests__/index.js ✓ moduleNameMapping correct configuration - -" `; exports[`moduleNameMapper wrong configuration 1`] = ` -"FAIL __tests__/index.js +FAIL __tests__/index.js ● Test suite failed to run Configuration error: @@ -18,10 +16,10 @@ exports[`moduleNameMapper wrong configuration 1`] = ` Please check your configuration for these entries: { - \\"moduleNameMapper\\": { - \\"/\\\\.(css|less)$/\\": \\"no-such-module\\" + "moduleNameMapper": { + "/\\.(css|less)$/": "no-such-module" }, - \\"resolver\\": null + "resolver": null } 8 | 'use strict'; @@ -34,6 +32,4 @@ exports[`moduleNameMapper wrong configuration 1`] = ` at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:433:17) at Object.require (index.js:10:1) - -" `; diff --git a/e2e/__tests__/__snapshots__/multiProjectRunner.test.js.snap b/e2e/__tests__/__snapshots__/multiProjectRunner.test.js.snap index 98000bd2b809..43dc5c28220a 100644 --- a/e2e/__tests__/__snapshots__/multiProjectRunner.test.js.snap +++ b/e2e/__tests__/__snapshots__/multiProjectRunner.test.js.snap @@ -1,38 +1,37 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`can pass projects or global config 1`] = ` -"Test Suites: 3 failed, 3 total +Test Suites: 3 failed, 3 total Tests: 0 total Snapshots: 0 total Time: <> Ran all test suites. -" `; exports[`can pass projects or global config 2`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 3 passed, 3 total Snapshots: 0 total Time: <> -Ran all test suites in 3 projects." +Ran all test suites in 3 projects. `; exports[`can pass projects or global config 3`] = ` -"PASS BACKEND project1/__tests__/file1.test.js +PASS BACKEND project1/__tests__/file1.test.js PASS UI project3/__tests__/file1.test.js -PASS project2/__tests__/file1.test.js" +PASS project2/__tests__/file1.test.js `; exports[`can pass projects or global config 4`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 3 passed, 3 total Snapshots: 0 total Time: <> -Ran all test suites in 3 projects." +Ran all test suites in 3 projects. `; exports[`can pass projects or global config 5`] = ` -"PASS BACKEND project1/__tests__/file1.test.js +PASS BACKEND project1/__tests__/file1.test.js PASS UI project3/__tests__/file1.test.js -PASS project2/__tests__/file1.test.js" +PASS project2/__tests__/file1.test.js `; diff --git a/e2e/__tests__/__snapshots__/processExit.test.js.snap b/e2e/__tests__/__snapshots__/processExit.test.js.snap index fbf88d8a68c4..13915892b8dc 100644 --- a/e2e/__tests__/__snapshots__/processExit.test.js.snap +++ b/e2e/__tests__/__snapshots__/processExit.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`prints stack trace pointing to process.exit call 1`] = ` -" ● process.exit called with \\"1\\" + ● process.exit called with "1" 1 | // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. 2 | @@ -12,5 +12,5 @@ exports[`prints stack trace pointing to process.exit call 1`] = ` 6 | expect(true).toBe(true); at Object.exit (__tests__/test.js:3:9) -" + `; diff --git a/e2e/__tests__/__snapshots__/requireAfterTeardown.test.js.snap b/e2e/__tests__/__snapshots__/requireAfterTeardown.test.js.snap index 9817dc2361e1..31790c844a8d 100644 --- a/e2e/__tests__/__snapshots__/requireAfterTeardown.test.js.snap +++ b/e2e/__tests__/__snapshots__/requireAfterTeardown.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`prints useful error for requires after test is done 1`] = ` -"ReferenceError: You are trying to \`import\` a file after the Jest environment has been torn down. +ReferenceError: You are trying to \`import\` a file after the Jest environment has been torn down. 9 | test('require after done', () => { 10 | setTimeout(() => { @@ -9,5 +9,5 @@ exports[`prints useful error for requires after test is done 1`] = ` | ^ 12 | 13 | expect(double(5)).toBe(10); - 14 | }, 0);" + 14 | }, 0); `; diff --git a/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.js.snap b/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.js.snap index 17b7fc306b26..b05ff4df33c5 100644 --- a/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.js.snap +++ b/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.js.snap @@ -1,21 +1,21 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`show error message when no js moduleFileExtensions 1`] = ` -"● Validation Error: +● Validation Error: moduleFileExtensions must include 'js': but instead received: - [\\"jsx\\"] + ["jsx"] Please change your configuration to include 'js'. Configuration Documentation: https://jestjs.io/docs/configuration.html -" + `; exports[`show error message with matching files 1`] = ` -"FAIL __tests__/test.js +FAIL __tests__/test.js ● Test suite failed to run Cannot find module './some-json-file' from 'index.js' @@ -35,6 +35,4 @@ exports[`show error message with matching files 1`] = ` at Resolver.resolveModule (../../packages/jest-resolve/build/index.js:200:17) at Object.require (index.js:3:18) - -" `; diff --git a/e2e/__tests__/__snapshots__/showConfig.test.js.snap b/e2e/__tests__/__snapshots__/showConfig.test.js.snap index b7b8f2690bce..3814b86cfbc4 100644 --- a/e2e/__tests__/__snapshots__/showConfig.test.js.snap +++ b/e2e/__tests__/__snapshots__/showConfig.test.js.snap @@ -1,125 +1,125 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`--showConfig outputs config info and exits 1`] = ` -"{ - \\"configs\\": [ +{ + "configs": [ { - \\"automock\\": false, - \\"browser\\": false, - \\"cache\\": false, - \\"cacheDirectory\\": \\"/tmp/jest\\", - \\"clearMocks\\": false, - \\"coveragePathIgnorePatterns\\": [ - \\"/node_modules/\\" + "automock": false, + "browser": false, + "cache": false, + "cacheDirectory": "/tmp/jest", + "clearMocks": false, + "coveragePathIgnorePatterns": [ + "/node_modules/" ], - \\"cwd\\": \\"<>\\", - \\"dependencyExtractor\\": null, - \\"detectLeaks\\": false, - \\"detectOpenHandles\\": false, - \\"errorOnDeprecated\\": false, - \\"filter\\": null, - \\"forceCoverageMatch\\": [], - \\"globalSetup\\": null, - \\"globalTeardown\\": null, - \\"globals\\": {}, - \\"haste\\": { - \\"computeSha1\\": false, - \\"providesModuleNodeModules\\": [] + "cwd": "<>", + "dependencyExtractor": null, + "detectLeaks": false, + "detectOpenHandles": false, + "errorOnDeprecated": false, + "filter": null, + "forceCoverageMatch": [], + "globalSetup": null, + "globalTeardown": null, + "globals": {}, + "haste": { + "computeSha1": false, + "providesModuleNodeModules": [] }, - \\"moduleDirectories\\": [ - \\"node_modules\\" + "moduleDirectories": [ + "node_modules" ], - \\"moduleFileExtensions\\": [ - \\"js\\", - \\"json\\", - \\"jsx\\", - \\"ts\\", - \\"tsx\\", - \\"node\\" + "moduleFileExtensions": [ + "js", + "json", + "jsx", + "ts", + "tsx", + "node" ], - \\"moduleNameMapper\\": {}, - \\"modulePathIgnorePatterns\\": [], - \\"name\\": \\"[md5 hash]\\", - \\"prettierPath\\": \\"prettier\\", - \\"resetMocks\\": false, - \\"resetModules\\": false, - \\"resolver\\": null, - \\"restoreMocks\\": false, - \\"rootDir\\": \\"<>\\", - \\"roots\\": [ - \\"<>\\" + "moduleNameMapper": {}, + "modulePathIgnorePatterns": [], + "name": "[md5 hash]", + "prettierPath": "prettier", + "resetMocks": false, + "resetModules": false, + "resolver": null, + "restoreMocks": false, + "rootDir": "<>", + "roots": [ + "<>" ], - \\"runner\\": \\"jest-runner\\", - \\"setupFiles\\": [], - \\"setupFilesAfterEnv\\": [], - \\"skipFilter\\": false, - \\"snapshotSerializers\\": [], - \\"testEnvironment\\": \\"<>/jest-environment-jsdom/build/index.js\\", - \\"testEnvironmentOptions\\": {}, - \\"testLocationInResults\\": false, - \\"testMatch\\": [ - \\"**/__tests__/**/*.[jt]s?(x)\\", - \\"**/?(*.)+(spec|test).[tj]s?(x)\\" + "runner": "jest-runner", + "setupFiles": [], + "setupFilesAfterEnv": [], + "skipFilter": false, + "snapshotSerializers": [], + "testEnvironment": "<>/jest-environment-jsdom/build/index.js", + "testEnvironmentOptions": {}, + "testLocationInResults": false, + "testMatch": [ + "**/__tests__/**/*.[jt]s?(x)", + "**/?(*.)+(spec|test).[tj]s?(x)" ], - \\"testPathIgnorePatterns\\": [ - \\"/node_modules/\\" + "testPathIgnorePatterns": [ + "/node_modules/" ], - \\"testRegex\\": [], - \\"testRunner\\": \\"<>/jest-jasmine2/build/index.js\\", - \\"testURL\\": \\"http://localhost\\", - \\"timers\\": \\"real\\", - \\"transform\\": [ + "testRegex": [], + "testRunner": "<>/jest-jasmine2/build/index.js", + "testURL": "http://localhost", + "timers": "real", + "transform": [ [ - \\"^.+\\\\\\\\.[jt]sx?$\\", - \\"<>/babel-jest/build/index.js\\" + "^.+\\\\.[jt]sx?$", + "<>/babel-jest/build/index.js" ] ], - \\"transformIgnorePatterns\\": [ - \\"/node_modules/\\" + "transformIgnorePatterns": [ + "/node_modules/" ], - \\"watchPathIgnorePatterns\\": [] + "watchPathIgnorePatterns": [] } ], - \\"globalConfig\\": { - \\"bail\\": 0, - \\"changedFilesWithAncestor\\": false, - \\"collectCoverage\\": false, - \\"collectCoverageFrom\\": null, - \\"coverageDirectory\\": \\"<>/coverage\\", - \\"coverageReporters\\": [ - \\"json\\", - \\"text\\", - \\"lcov\\", - \\"clover\\" + "globalConfig": { + "bail": 0, + "changedFilesWithAncestor": false, + "collectCoverage": false, + "collectCoverageFrom": null, + "coverageDirectory": "<>/coverage", + "coverageReporters": [ + "json", + "text", + "lcov", + "clover" ], - \\"coverageThreshold\\": null, - \\"detectLeaks\\": false, - \\"detectOpenHandles\\": false, - \\"errorOnDeprecated\\": false, - \\"expand\\": false, - \\"filter\\": null, - \\"globalSetup\\": null, - \\"globalTeardown\\": null, - \\"listTests\\": false, - \\"maxWorkers\\": \\"[maxWorkers]\\", - \\"noStackTrace\\": false, - \\"nonFlagArgs\\": [], - \\"notify\\": false, - \\"notifyMode\\": \\"failure-change\\", - \\"passWithNoTests\\": false, - \\"projects\\": null, - \\"rootDir\\": \\"<>\\", - \\"runTestsByPath\\": false, - \\"skipFilter\\": false, - \\"testFailureExitCode\\": 1, - \\"testPathPattern\\": \\"\\", - \\"testResultsProcessor\\": null, - \\"updateSnapshot\\": \\"all\\", - \\"useStderr\\": false, - \\"verbose\\": null, - \\"watch\\": false, - \\"watchman\\": true + "coverageThreshold": null, + "detectLeaks": false, + "detectOpenHandles": false, + "errorOnDeprecated": false, + "expand": false, + "filter": null, + "globalSetup": null, + "globalTeardown": null, + "listTests": false, + "maxWorkers": "[maxWorkers]", + "noStackTrace": false, + "nonFlagArgs": [], + "notify": false, + "notifyMode": "failure-change", + "passWithNoTests": false, + "projects": null, + "rootDir": "<>", + "runTestsByPath": false, + "skipFilter": false, + "testFailureExitCode": 1, + "testPathPattern": "", + "testResultsProcessor": null, + "updateSnapshot": "all", + "useStderr": false, + "verbose": null, + "watch": false, + "watchman": true }, - \\"version\\": \\"[version]\\" -}" + "version": "[version]" +} `; diff --git a/e2e/__tests__/__snapshots__/snapshot.test.js.snap b/e2e/__tests__/__snapshots__/snapshot.test.js.snap index 4affd8faa05e..cf4fb4518a1a 100644 --- a/e2e/__tests__/__snapshots__/snapshot.test.js.snap +++ b/e2e/__tests__/__snapshots__/snapshot.test.js.snap @@ -1,138 +1,137 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Snapshot Validation deletes a snapshot when a test does removes all the snapshots 1`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 9 passed, 9 total Snapshots: 9 written, 9 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot Validation deletes a snapshot when a test does removes all the snapshots 2`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 6 passed, 6 total Snapshots: 1 file removed, 5 passed, 5 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot Validation deletes the snapshot if the test suite has been removed 1`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 9 passed, 9 total Snapshots: 9 written, 9 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot Validation deletes the snapshot if the test suite has been removed 2`] = ` -"Test Suites: 2 passed, 2 total +Test Suites: 2 passed, 2 total Tests: 5 passed, 5 total Snapshots: 1 file removed, 5 passed, 5 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot Validation does not save snapshots in CI mode by default 1`] = ` -"Test Suites: 3 failed, 3 total +Test Suites: 3 failed, 3 total Tests: 7 failed, 2 passed, 9 total Snapshots: 9 failed, 9 total Time: <> Ran all test suites. -" `; exports[`Snapshot Validation updates the snapshot when a test removes some snapshots 1`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 9 passed, 9 total Snapshots: 9 written, 9 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot Validation updates the snapshot when a test removes some snapshots 2`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 9 passed, 9 total Snapshots: 1 removed, 1 updated, 7 passed, 8 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot Validation works on subsequent runs without \`-u\` 1`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 9 passed, 9 total Snapshots: 9 written, 9 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot Validation works on subsequent runs without \`-u\` 2`] = ` -"Test Suites: 3 passed, 3 total +Test Suites: 3 passed, 3 total Tests: 9 passed, 9 total Snapshots: 9 passed, 9 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot stores new snapshots on the first run 1`] = ` -"Test Suites: 2 passed, 2 total +Test Suites: 2 passed, 2 total Tests: 5 passed, 5 total Snapshots: 5 written, 5 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`Snapshot works with escaped characters 1`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 1 written, 1 total Time: <> -Ran all test suites matching /snapshot.test.js/i." +Ran all test suites matching /snapshot.test.js/i. `; exports[`Snapshot works with escaped characters 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 2 passed, 2 total Snapshots: 1 written, 1 passed, 2 total Time: <> -Ran all test suites matching /snapshot.test.js/i." +Ran all test suites matching /snapshot.test.js/i. `; exports[`Snapshot works with escaped characters 3`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 2 passed, 2 total Snapshots: 2 passed, 2 total Time: <> -Ran all test suites matching /snapshot.test.js/i." +Ran all test suites matching /snapshot.test.js/i. `; exports[`Snapshot works with escaped regex 1`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 2 passed, 2 total Snapshots: 2 written, 2 total Time: <> -Ran all test suites matching /snapshotEscapeRegex.js/i." +Ran all test suites matching /snapshotEscapeRegex.js/i. `; exports[`Snapshot works with escaped regex 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 2 passed, 2 total Snapshots: 2 passed, 2 total Time: <> -Ran all test suites matching /snapshotEscapeRegex.js/i." +Ran all test suites matching /snapshotEscapeRegex.js/i. `; exports[`Snapshot works with template literal substitutions 1`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 1 written, 1 total Time: <> -Ran all test suites matching /snapshotEscapeSubstitution.test.js/i." +Ran all test suites matching /snapshotEscapeSubstitution.test.js/i. `; exports[`Snapshot works with template literal substitutions 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 1 passed, 1 total Time: <> -Ran all test suites matching /snapshotEscapeSubstitution.test.js/i." +Ran all test suites matching /snapshotEscapeSubstitution.test.js/i. `; diff --git a/e2e/__tests__/__snapshots__/snapshotMockFs.test.js.snap b/e2e/__tests__/__snapshots__/snapshotMockFs.test.js.snap index 0b187ca45889..b179fed14a23 100644 --- a/e2e/__tests__/__snapshots__/snapshotMockFs.test.js.snap +++ b/e2e/__tests__/__snapshots__/snapshotMockFs.test.js.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`store snapshot even if fs is mocked 1`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 1 written, 1 total Time: <> -Ran all test suites." +Ran all test suites. `; diff --git a/e2e/__tests__/__snapshots__/stackTrace.test.js.snap b/e2e/__tests__/__snapshots__/stackTrace.test.js.snap index c6f41c5d4735..5727411db190 100644 --- a/e2e/__tests__/__snapshots__/stackTrace.test.js.snap +++ b/e2e/__tests__/__snapshots__/stackTrace.test.js.snap @@ -1,64 +1,57 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Stack Trace does not print a stack trace for errors when --noStackTrace is given 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 3 failed, 3 total Snapshots: 0 total Time: <> Ran all test suites matching /testError.test.js/i. -" `; exports[`Stack Trace does not print a stack trace for matching errors when --noStackTrace is given 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: <> Ran all test suites matching /stackTrace.test.js/i. -" `; exports[`Stack Trace does not print a stack trace for runtime errors when --noStackTrace is given 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 0 total Snapshots: 0 total Time: <> Ran all test suites matching /runtimeError.test.js/i. -" `; exports[`Stack Trace prints a stack trace for errors 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 3 failed, 3 total Snapshots: 0 total Time: <> Ran all test suites matching /testError.test.js/i. -" `; exports[`Stack Trace prints a stack trace for errors without message in stack trace 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: <> Ran all test suites matching /stackTraceWithoutMessage.test.js/i. -" `; exports[`Stack Trace prints a stack trace for matching errors 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: <> Ran all test suites matching /stackTrace.test.js/i. -" `; exports[`Stack Trace prints a stack trace for runtime errors 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 0 total Snapshots: 0 total Time: <> Ran all test suites matching /runtimeError.test.js/i. -" `; diff --git a/e2e/__tests__/__snapshots__/testNamePattern.test.js.snap b/e2e/__tests__/__snapshots__/testNamePattern.test.js.snap index c82117066040..ecd6203ccb9c 100644 --- a/e2e/__tests__/__snapshots__/testNamePattern.test.js.snap +++ b/e2e/__tests__/__snapshots__/testNamePattern.test.js.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`testNamePattern 1`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 3 skipped, 2 passed, 5 total Snapshots: 0 total Time: <> -Ran all test suites with tests matching \\"should match\\"." +Ran all test suites with tests matching "should match". `; diff --git a/e2e/__tests__/__snapshots__/testNamePatternSkipped.test.js.snap b/e2e/__tests__/__snapshots__/testNamePatternSkipped.test.js.snap index 27d85d22ccb6..6e7747e519cb 100644 --- a/e2e/__tests__/__snapshots__/testNamePatternSkipped.test.js.snap +++ b/e2e/__tests__/__snapshots__/testNamePatternSkipped.test.js.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`testNamePattern skipped 1`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 skipped, 1 passed, 2 total Snapshots: 0 total Time: <> -Ran all test suites with tests matching \\"false\\"." +Ran all test suites with tests matching "false". `; diff --git a/e2e/__tests__/__snapshots__/testTodo.test.js.snap b/e2e/__tests__/__snapshots__/testTodo.test.js.snap index 504ca6f1b5f8..29e820705f40 100644 --- a/e2e/__tests__/__snapshots__/testTodo.test.js.snap +++ b/e2e/__tests__/__snapshots__/testTodo.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`shows error messages when called with invalid argument 1`] = ` -"FAIL __tests__/todoNonString.test.js +FAIL __tests__/todoNonString.test.js ● Test suite failed to run Todo must be called with only a description. @@ -13,12 +13,10 @@ exports[`shows error messages when called with invalid argument 1`] = ` 9 | at Object.todo (__tests__/todoNonString.test.js:8:4) - -" `; exports[`shows error messages when called with multiple arguments 1`] = ` -"FAIL __tests__/todoMultipleArgs.test.js +FAIL __tests__/todoMultipleArgs.test.js ● Test suite failed to run Todo must be called with only a description. @@ -30,12 +28,10 @@ exports[`shows error messages when called with multiple arguments 1`] = ` 9 | at Object.todo (__tests__/todoMultipleArgs.test.js:8:4) - -" `; exports[`shows error messages when called with no arguments 1`] = ` -"FAIL __tests__/todoNoArgs.test.js +FAIL __tests__/todoNoArgs.test.js ● Test suite failed to run Todo must be called with only a description. @@ -47,12 +43,10 @@ exports[`shows error messages when called with no arguments 1`] = ` 9 | at Object.todo (__tests__/todoNoArgs.test.js:8:4) - -" `; exports[`works with all statuses 1`] = ` -"FAIL __tests__/statuses.test.js +FAIL __tests__/statuses.test.js ✓ passes ✕ fails ○ skipped 1 test @@ -74,6 +68,4 @@ exports[`works with all statuses 1`] = ` 16 | it.skip('skips', () => { at Object.toBe (__tests__/statuses.test.js:13:14) - -" `; diff --git a/e2e/__tests__/__snapshots__/timeouts.test.js.snap b/e2e/__tests__/__snapshots__/timeouts.test.js.snap index a74c620e52db..19ed2b0400be 100644 --- a/e2e/__tests__/__snapshots__/timeouts.test.js.snap +++ b/e2e/__tests__/__snapshots__/timeouts.test.js.snap @@ -1,25 +1,22 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`does not exceed the timeout 1`] = ` -"PASS __tests__/a-banana.js +PASS __tests__/a-banana.js ✓ banana - -" `; exports[`does not exceed the timeout 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`exceeds the timeout 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: <> Ran all test suites. -" `; diff --git a/e2e/__tests__/__snapshots__/timeoutsLegacy.test.js.snap b/e2e/__tests__/__snapshots__/timeoutsLegacy.test.js.snap index 93626023f7a5..e6434396d6f1 100644 --- a/e2e/__tests__/__snapshots__/timeoutsLegacy.test.js.snap +++ b/e2e/__tests__/__snapshots__/timeoutsLegacy.test.js.snap @@ -1,33 +1,30 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`can read and write jasmine.DEFAULT_TIMEOUT_INTERVAL 1`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`does not exceed the timeout using jasmine.DEFAULT_TIMEOUT_INTERVAL 1`] = ` -"PASS __tests__/a-banana.js +PASS __tests__/a-banana.js ✓ banana - -" `; exports[`does not exceed the timeout using jasmine.DEFAULT_TIMEOUT_INTERVAL 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`exceeds the timeout set using jasmine.DEFAULT_TIMEOUT_INTERVAL 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: <> Ran all test suites. -" `; diff --git a/e2e/__tests__/__snapshots__/toMatchInlineSnapshot.test.js.snap b/e2e/__tests__/__snapshots__/toMatchInlineSnapshot.test.js.snap index 83ea8f0c8ded..d1d8ef47911c 100644 --- a/e2e/__tests__/__snapshots__/toMatchInlineSnapshot.test.js.snap +++ b/e2e/__tests__/__snapshots__/toMatchInlineSnapshot.test.js.snap @@ -1,148 +1,148 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`basic support: initial write 1`] = ` -"test('inline snapshots', () => +test('inline snapshots', () => expect({apple: 'original value'}).toMatchInlineSnapshot(\` Object { - \\"apple\\": \\"original value\\", + "apple": "original value", } \`)); -" + `; exports[`basic support: snapshot mismatch 1`] = ` -"test('inline snapshots', () => +test('inline snapshots', () => expect({apple: 'updated value'}).toMatchInlineSnapshot(\` Object { - \\"apple\\": \\"original value\\", + "apple": "original value", } \`)); -" + `; exports[`basic support: snapshot passed 1`] = ` -"test('inline snapshots', () => +test('inline snapshots', () => expect({apple: 'original value'}).toMatchInlineSnapshot(\` Object { - \\"apple\\": \\"original value\\", + "apple": "original value", } \`)); -" + `; exports[`basic support: snapshot updated 1`] = ` -"test('inline snapshots', () => +test('inline snapshots', () => expect({apple: 'updated value'}).toMatchInlineSnapshot(\` Object { - \\"apple\\": \\"updated value\\", + "apple": "updated value", } \`)); -" + `; exports[`handles property matchers: initial write 1`] = ` -"test('handles property matchers', () => { +test('handles property matchers', () => { expect({createdAt: new Date()}).toMatchInlineSnapshot( {createdAt: expect.any(Date)}, \` Object { - \\"createdAt\\": Any, + "createdAt": Any, } \` ); }); -" + `; exports[`handles property matchers: snapshot failed 1`] = ` -"test('handles property matchers', () => { - expect({createdAt: \\"string\\"}).toMatchInlineSnapshot( +test('handles property matchers', () => { + expect({createdAt: "string"}).toMatchInlineSnapshot( {createdAt: expect.any(Date)}, \` Object { - \\"createdAt\\": Any, + "createdAt": Any, } \` ); }); -" + `; exports[`handles property matchers: snapshot passed 1`] = ` -"test('handles property matchers', () => { +test('handles property matchers', () => { expect({createdAt: new Date()}).toMatchInlineSnapshot( {createdAt: expect.any(Date)}, \` Object { - \\"createdAt\\": Any, + "createdAt": Any, } \` ); }); -" + `; exports[`handles property matchers: snapshot updated 1`] = ` -"test('handles property matchers', () => { +test('handles property matchers', () => { expect({createdAt: 'string'}).toMatchInlineSnapshot( {createdAt: expect.any(String)}, \` Object { - \\"createdAt\\": Any, + "createdAt": Any, } \` ); }); -" + `; exports[`removes obsolete external snapshots: external snapshot cleaned 1`] = ` -"test('removes obsolete external snapshots', () => { - expect('1').toMatchInlineSnapshot(\`\\"1\\"\`); +test('removes obsolete external snapshots', () => { + expect('1').toMatchInlineSnapshot(\`"1"\`); }); -" + `; exports[`removes obsolete external snapshots: initial write 1`] = ` -" + test('removes obsolete external snapshots', () => { expect('1').toMatchSnapshot(); }); - " + `; exports[`removes obsolete external snapshots: inline snapshot written 1`] = ` -"test('removes obsolete external snapshots', () => { - expect('1').toMatchInlineSnapshot(\`\\"1\\"\`); +test('removes obsolete external snapshots', () => { + expect('1').toMatchInlineSnapshot(\`"1"\`); }); -" + `; exports[`supports async matchers 1`] = ` -"test('inline snapshots', async () => { +test('inline snapshots', async () => { expect(Promise.resolve('success')).resolves.toMatchInlineSnapshot( - \`\\"success\\"\` + \`"success"\` ); - expect(Promise.reject('fail')).rejects.toMatchInlineSnapshot(\`\\"fail\\"\`); + expect(Promise.reject('fail')).rejects.toMatchInlineSnapshot(\`"fail"\`); }); -" + `; exports[`supports async tests 1`] = ` -"test('inline snapshots', async () => { +test('inline snapshots', async () => { await 'next tick'; expect(42).toMatchInlineSnapshot(\`42\`); }); -" + `; exports[`writes snapshots with non-literals in expect(...) 1`] = ` -"it('works with inline snapshots', () => { +it('works with inline snapshots', () => { expect({a: 1}).toMatchInlineSnapshot(\` Object { - \\"a\\": 1, + "a": 1, } \`); }); -" + `; diff --git a/e2e/__tests__/__snapshots__/toThrowErrorMatchingInlineSnapshot.test.js.snap b/e2e/__tests__/__snapshots__/toThrowErrorMatchingInlineSnapshot.test.js.snap index 7bc6cb8fcb4b..eb1a037f29aa 100644 --- a/e2e/__tests__/__snapshots__/toThrowErrorMatchingInlineSnapshot.test.js.snap +++ b/e2e/__tests__/__snapshots__/toThrowErrorMatchingInlineSnapshot.test.js.snap @@ -1,28 +1,28 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`should support rejecting promises 1`] = ` -"test('should support rejecting promises', async () => { +test('should support rejecting promises', async () => { await expect( Promise.reject(new Error('octopus')) - ).rejects.toThrowErrorMatchingInlineSnapshot(\`\\"octopus\\"\`); + ).rejects.toThrowErrorMatchingInlineSnapshot(\`"octopus"\`); }); -" + `; exports[`updates existing snapshot: updated snapshot 1`] = ` -"test('updates existing snapshot', () => { +test('updates existing snapshot', () => { expect(() => { throw new Error('apple'); - }).toThrowErrorMatchingInlineSnapshot(\`\\"apple\\"\`); + }).toThrowErrorMatchingInlineSnapshot(\`"apple"\`); }); -" + `; exports[`works fine when function throws error: initial write 1`] = ` -"test('works fine when function throws error', () => { +test('works fine when function throws error', () => { expect(() => { throw new Error('apple'); - }).toThrowErrorMatchingInlineSnapshot(\`\\"apple\\"\`); + }).toThrowErrorMatchingInlineSnapshot(\`"apple"\`); }); -" + `; diff --git a/e2e/__tests__/__snapshots__/toThrowErrorMatchingSnapshot.test.js.snap b/e2e/__tests__/__snapshots__/toThrowErrorMatchingSnapshot.test.js.snap index 826e88eaf160..5cab09df743f 100644 --- a/e2e/__tests__/__snapshots__/toThrowErrorMatchingSnapshot.test.js.snap +++ b/e2e/__tests__/__snapshots__/toThrowErrorMatchingSnapshot.test.js.snap @@ -1,8 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`should support rejecting promises 1`] = ` -"// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[\`should support rejecting promises 1\`] = \`"octopus"\`; -exports[\`should support rejecting promises 1\`] = \`\\"octopus\\"\`; -" `; diff --git a/e2e/__tests__/__snapshots__/transform.test.js.snap b/e2e/__tests__/__snapshots__/transform.test.js.snap index b6a57fc88c48..aad749c2f0ad 100644 --- a/e2e/__tests__/__snapshots__/transform.test.js.snap +++ b/e2e/__tests__/__snapshots__/transform.test.js.snap @@ -1,28 +1,28 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`babel-jest instruments only specific files and collects coverage 1`] = ` -"------------|----------|----------|----------|----------|-------------------| +------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------|----------|----------|----------|----------|-------------------| All files | 83.33 | 100 | 50 | 80 | | covered.js | 83.33 | 100 | 50 | 80 | 13 | -------------|----------|----------|----------|----------|-------------------|" +------------|----------|----------|----------|----------|-------------------| `; exports[`custom transformer instruments files 1`] = ` -"----------|----------|----------|----------|----------|-------------------| +----------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ----------|----------|----------|----------|----------|-------------------| All files | 0 | 0 | 0 | 0 | | -----------|----------|----------|----------|----------|-------------------|" +----------|----------|----------|----------|----------|-------------------| `; exports[`no babel-jest instrumentation with no babel-jest 1`] = ` -"------------|----------|----------|----------|----------|-------------------| +------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------|----------|----------|----------|----------|-------------------| All files | 83.33 | 100 | 50 | 80 | | covered.js | 83.33 | 100 | 50 | 80 | 13 | ------------|----------|----------|----------|----------|-------------------| -" + `; diff --git a/e2e/__tests__/__snapshots__/typescriptCoverage.test.js.snap b/e2e/__tests__/__snapshots__/typescriptCoverage.test.js.snap index 3f12fd48d96c..e3f422c49a17 100644 --- a/e2e/__tests__/__snapshots__/typescriptCoverage.test.js.snap +++ b/e2e/__tests__/__snapshots__/typescriptCoverage.test.js.snap @@ -1,10 +1,10 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`instruments and collects coverage for typescript files 1`] = ` -"------------|----------|----------|----------|----------|-------------------| +------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ------------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | covered.ts | 100 | 100 | 100 | 100 | | -------------|----------|----------|----------|----------|-------------------|" +------------|----------|----------|----------|----------|-------------------| `; diff --git a/e2e/__tests__/__snapshots__/watchModeOnlyFailed.test.js.snap b/e2e/__tests__/__snapshots__/watchModeOnlyFailed.test.js.snap index 7043b221965f..6d8293f99e62 100644 --- a/e2e/__tests__/__snapshots__/watchModeOnlyFailed.test.js.snap +++ b/e2e/__tests__/__snapshots__/watchModeOnlyFailed.test.js.snap @@ -1,47 +1,47 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`can press "f" to run only failed tests: test results 1`] = ` -"FAIL __tests__/bar.spec.js +FAIL __tests__/bar.spec.js ● bar 1 expect(received).toBe(expected) // Object.is equality - Expected: \\"foo\\" - Received: \\"bar\\" + Expected: "foo" + Received: "bar" 1 | > 2 | test('bar 1', () => { expect('bar').toBe('foo'); }); | ^ 3 | at Object.toBe (__tests__/bar.spec.js:2:43) -PASS __tests__/foo.spec.js" +PASS __tests__/foo.spec.js `; exports[`can press "f" to run only failed tests: test results 2`] = ` -"FAIL __tests__/bar.spec.js +FAIL __tests__/bar.spec.js ✕ bar 1 ● bar 1 expect(received).toBe(expected) // Object.is equality - Expected: \\"foo\\" - Received: \\"bar\\" + Expected: "foo" + Received: "bar" 1 | > 2 | test('bar 1', () => { expect('bar').toBe('foo'); }); | ^ 3 | at Object.toBe (__tests__/bar.spec.js:2:43) -" + `; exports[`can press "f" to run only failed tests: test summary 1`] = ` -"Test Suites: 1 failed, 1 passed, 2 total +Test Suites: 1 failed, 1 passed, 2 total Tests: 1 failed, 1 passed, 2 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`can press "f" to run only failed tests: test summary 2`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; diff --git a/e2e/__tests__/__snapshots__/watchModePatterns.test.js.snap b/e2e/__tests__/__snapshots__/watchModePatterns.test.js.snap index 1377c1d3890b..f6764504118d 100644 --- a/e2e/__tests__/__snapshots__/watchModePatterns.test.js.snap +++ b/e2e/__tests__/__snapshots__/watchModePatterns.test.js.snap @@ -16,31 +16,31 @@ Pattern Mode Usage `; exports[`can press "p" to filter by file name: test results 1`] = ` -"PASS __tests__/bar.spec.js -PASS __tests__/foo.spec.js" +PASS __tests__/bar.spec.js +PASS __tests__/foo.spec.js `; exports[`can press "p" to filter by file name: test results 2`] = ` -"PASS __tests__/bar.spec.js +PASS __tests__/bar.spec.js ✓ bar 1 ✓ bar 2 -" + `; exports[`can press "p" to filter by file name: test summary 1`] = ` -"Test Suites: 2 passed, 2 total +Test Suites: 2 passed, 2 total Tests: 4 passed, 4 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`can press "p" to filter by file name: test summary 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 2 passed, 2 total Snapshots: 0 total Time: <> -Ran all test suites matching /bar/i." +Ran all test suites matching /bar/i. `; exports[`can press "t" to filter by test name 1`] = ` @@ -57,27 +57,27 @@ Pattern Mode Usage `; exports[`can press "t" to filter by test name: test results 1`] = ` -"PASS __tests__/bar.spec.js -PASS __tests__/foo.spec.js" +PASS __tests__/bar.spec.js +PASS __tests__/foo.spec.js `; exports[`can press "t" to filter by test name: test results 2`] = ` -"PASS __tests__/bar.spec.js -PASS __tests__/foo.spec.js" +PASS __tests__/bar.spec.js +PASS __tests__/foo.spec.js `; exports[`can press "t" to filter by test name: test summary 1`] = ` -"Test Suites: 2 passed, 2 total +Test Suites: 2 passed, 2 total Tests: 4 passed, 4 total Snapshots: 0 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`can press "t" to filter by test name: test summary 2`] = ` -"Test Suites: 2 passed, 2 total +Test Suites: 2 passed, 2 total Tests: 2 skipped, 2 passed, 4 total Snapshots: 0 total Time: <> -Ran all test suites with tests matching \\"2\\"." +Ran all test suites with tests matching "2". `; diff --git a/e2e/__tests__/__snapshots__/watchModeUpdateSnapshot.test.js.snap b/e2e/__tests__/__snapshots__/watchModeUpdateSnapshot.test.js.snap index 1638a29e5a4e..7023c87719c2 100644 --- a/e2e/__tests__/__snapshots__/watchModeUpdateSnapshot.test.js.snap +++ b/e2e/__tests__/__snapshots__/watchModeUpdateSnapshot.test.js.snap @@ -1,15 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`can press "u" to update snapshots: test results 1`] = ` -"FAIL __tests__/bar.spec.js +FAIL __tests__/bar.spec.js ✕ bar ● bar expect(value).toMatchSnapshot() - Received value does not match stored snapshot \\"bar 1\\". + Received value does not match stored snapshot "bar 1". - Snapshot + Received - - \\"foo\\" - + \\"bar\\" + - "foo" + + "bar" 1 | > 2 | test('bar', () => { expect('bar').toMatchSnapshot(); }); | ^ @@ -18,30 +18,30 @@ exports[`can press "u" to update snapshots: test results 1`] = ` › 1 snapshot failed. Snapshot Summary › 1 snapshot failed from 1 test suite. Inspect your code changes or press \`u\` to update them. -" + `; exports[`can press "u" to update snapshots: test results 2`] = ` -"PASS __tests__/bar.spec.js +PASS __tests__/bar.spec.js ✓ bar › 1 snapshot updated. Snapshot Summary › 1 snapshot updated from 1 test suite. -" + `; exports[`can press "u" to update snapshots: test summary 1`] = ` -"Test Suites: 1 failed, 1 total +Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 1 failed, 1 total Time: <> -Ran all test suites." +Ran all test suites. `; exports[`can press "u" to update snapshots: test summary 2`] = ` -"Test Suites: 1 passed, 1 total +Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 1 updated, 1 total Time: <> -Ran all test suites." +Ran all test suites. `; diff --git a/e2e/__tests__/asyncRegenerator.test.js b/e2e/__tests__/asyncRegenerator.test.js new file mode 100644 index 000000000000..34466352e3d6 --- /dev/null +++ b/e2e/__tests__/asyncRegenerator.test.js @@ -0,0 +1,25 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +import path from 'path'; +import {run} from '../Utils'; +import {json as runWithJson} from '../runJest'; + +const dir = path.resolve(__dirname, '../async-regenerator'); + +beforeEach(() => { + run('yarn', dir); +}); + +test('successfully transpiles async', () => { + // --no-cache because babel can cache stuff and result in false green + const {json} = runWithJson(dir, ['--no-cache']); + expect(json.success).toBe(true); + expect(json.numTotalTests).toBe(1); +}); diff --git a/e2e/__tests__/autoClearMocks.test.js b/e2e/__tests__/autoClearMocks.test.js index 0a8d690855dd..1b352e1d1943 100644 --- a/e2e/__tests__/autoClearMocks.test.js +++ b/e2e/__tests__/autoClearMocks.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/autoResetMocks.test.js b/e2e/__tests__/autoResetMocks.test.js index b54acf7259ec..01346d698908 100644 --- a/e2e/__tests__/autoResetMocks.test.js +++ b/e2e/__tests__/autoResetMocks.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/autoRestoreMocks.test.js b/e2e/__tests__/autoRestoreMocks.test.js index aaea26cde250..7f2366d5282a 100644 --- a/e2e/__tests__/autoRestoreMocks.test.js +++ b/e2e/__tests__/autoRestoreMocks.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/babelPluginJestHoist.test.js b/e2e/__tests__/babelPluginJestHoist.test.js index 70062d2eb6c5..6820262f5960 100644 --- a/e2e/__tests__/babelPluginJestHoist.test.js +++ b/e2e/__tests__/babelPluginJestHoist.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import path from 'path'; import {json as runWithJson} from '../runJest'; diff --git a/e2e/__tests__/badSourceMap.test.js b/e2e/__tests__/badSourceMap.test.js index d6a02abfc187..471703726e60 100644 --- a/e2e/__tests__/badSourceMap.test.js +++ b/e2e/__tests__/badSourceMap.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/beforeAllFiltered.js b/e2e/__tests__/beforeAllFiltered.js index 4c1746e53fe0..a930d148ecfd 100644 --- a/e2e/__tests__/beforeAllFiltered.js +++ b/e2e/__tests__/beforeAllFiltered.js @@ -6,13 +6,13 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; describe('Correct BeforeAll run', () => { it('ensures the BeforeAll of ignored suite is not run', () => { const result = runJest('before-all-filtered'); - expect(result.stdout.replace(/\\/g, '/')).toMatchSnapshot(); + expect(wrap(result.stdout.replace(/\\/g, '/'))).toMatchSnapshot(); }); }); diff --git a/e2e/__tests__/beforeEachQueue.js b/e2e/__tests__/beforeEachQueue.js index dc2104968f20..24ff77c3459f 100644 --- a/e2e/__tests__/beforeEachQueue.js +++ b/e2e/__tests__/beforeEachQueue.js @@ -6,13 +6,13 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; describe('Correct beforeEach order', () => { it('ensures the correct order for beforeEach', () => { const result = runJest('before-each-queue'); - expect(result.stdout.replace(/\\/g, '/')).toMatchSnapshot(); + expect(wrap(result.stdout.replace(/\\/g, '/'))).toMatchSnapshot(); }); }); diff --git a/e2e/__tests__/clearCache.test.js b/e2e/__tests__/clearCache.test.js index 27e10dff4ac8..96e6d3207aa1 100644 --- a/e2e/__tests__/clearCache.test.js +++ b/e2e/__tests__/clearCache.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import fs from 'fs'; import os from 'os'; diff --git a/e2e/__tests__/cliHandlesExactFilenames.test.js b/e2e/__tests__/cliHandlesExactFilenames.test.js index 407dcbe57ffe..263a012eec9e 100644 --- a/e2e/__tests__/cliHandlesExactFilenames.test.js +++ b/e2e/__tests__/cliHandlesExactFilenames.test.js @@ -7,12 +7,11 @@ * @flow */ -'use strict'; - import path from 'path'; import {skipSuiteOnWindows} from '../../scripts/ConditionalTest'; import {cleanup, extractSummary, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../cli_accepts_exact_filenames'); @@ -35,9 +34,9 @@ test('CLI accepts exact file names if matchers matched', () => { const {rest, summary} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); - expect(result.stdout).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); + expect(result.stdout).toBe(''); }); test('CLI skips exact file names if no matchers matched', () => { diff --git a/e2e/__tests__/compareDomNodes.test.js b/e2e/__tests__/compareDomNodes.test.js index e17e0d0d578f..91bde64e2b2e 100644 --- a/e2e/__tests__/compareDomNodes.test.js +++ b/e2e/__tests__/compareDomNodes.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/config.test.js b/e2e/__tests__/config.test.js index 33d37caa4f32..f0be7331981a 100644 --- a/e2e/__tests__/config.test.js +++ b/e2e/__tests__/config.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/console.test.js b/e2e/__tests__/console.test.js index b3a1b02138b3..214566f9c894 100644 --- a/e2e/__tests__/console.test.js +++ b/e2e/__tests__/console.test.js @@ -7,18 +7,17 @@ * @flow */ -'use strict'; - import {extractSummary} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; test('console printing', () => { const {stderr, status} = runJest('console'); const {summary, rest} = extractSummary(stderr); expect(status).toBe(0); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('console printing with --verbose', () => { @@ -29,9 +28,9 @@ test('console printing with --verbose', () => { const {summary, rest} = extractSummary(stderr); expect(status).toBe(0); - expect(stdout).toMatchSnapshot(); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('does not print to console with --silent', () => { @@ -47,9 +46,9 @@ test('does not print to console with --silent', () => { const {summary, rest} = extractSummary(stderr); expect(status).toBe(0); - expect(stdout).toMatchSnapshot(); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); // issue: https://github.com/facebook/jest/issues/5223 @@ -58,7 +57,7 @@ test('the jsdom console is the same as the test console', () => { const {summary, rest} = extractSummary(stderr); expect(status).toBe(0); - expect(stdout).toMatchSnapshot(); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/consoleLogOutputWhenRunInBand.test.js b/e2e/__tests__/consoleLogOutputWhenRunInBand.test.js index 5f4412f68bbf..3e2c04233607 100644 --- a/e2e/__tests__/consoleLogOutputWhenRunInBand.test.js +++ b/e2e/__tests__/consoleLogOutputWhenRunInBand.test.js @@ -7,11 +7,10 @@ * @flow */ -'use strict'; - import path from 'path'; import {cleanup, extractSummary, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../console-log-output-when-run-in-band'); @@ -33,7 +32,7 @@ test('prints console.logs when run with forceExit', () => { ]); const {rest, summary} = extractSummary(stderr); expect(status).toBe(0); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); - expect(stdout).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/coverageRemapping.test.js b/e2e/__tests__/coverageRemapping.test.js index 5f1986890553..12d83544ff72 100644 --- a/e2e/__tests__/coverageRemapping.test.js +++ b/e2e/__tests__/coverageRemapping.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import {readFileSync} from 'fs'; import path from 'path'; import {cleanup, run} from '../Utils'; diff --git a/e2e/__tests__/coverageReport.test.js b/e2e/__tests__/coverageReport.test.js index 9fab19fb0670..b17fd88e85e4 100644 --- a/e2e/__tests__/coverageReport.test.js +++ b/e2e/__tests__/coverageReport.test.js @@ -6,12 +6,12 @@ * * @flow */ -'use strict'; import fs from 'fs'; import path from 'path'; import {extractSummary} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../coverage-report'); @@ -26,7 +26,7 @@ test('outputs coverage report', () => { // is listed with 0 % coverage. // - `notRequiredInTestSuite.js` is not required but it is listed // with 0 % coverage. - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); expect(() => fs.accessSync(coverageDir, fs.F_OK)).not.toThrow(); expect(status).toBe(0); @@ -45,7 +45,7 @@ test('collects coverage only from specified file', () => { ); // Coverage report should only have `setup.js` coverage info - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('collects coverage only from multiple specified files', () => { @@ -62,7 +62,7 @@ test('collects coverage only from multiple specified files', () => { {stripAnsi: true}, ); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('collects coverage only from specified files avoiding dependencies', () => { @@ -80,7 +80,7 @@ test('collects coverage only from specified files avoiding dependencies', () => ); // Coverage report should only have `sum.js` coverage info - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('json reporter printing with --coverage', () => { @@ -89,7 +89,7 @@ test('json reporter printing with --coverage', () => { }); const {summary} = extractSummary(stderr); expect(status).toBe(1); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('outputs coverage report as json', () => { @@ -115,7 +115,7 @@ test('outputs coverage report when text is requested', () => { ); expect(status).toBe(0); expect(stdout).toMatch(/Stmts | . Branch/); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('outputs coverage report when text-summary is requested', () => { @@ -126,7 +126,7 @@ test('outputs coverage report when text-summary is requested', () => { ); expect(status).toBe(0); expect(stdout).toMatch(/Coverage summary/); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('outputs coverage report when text and text-summary is requested', () => { @@ -143,7 +143,7 @@ test('outputs coverage report when text and text-summary is requested', () => { expect(status).toBe(0); expect(stdout).toMatch(/Stmts | . Branch/); expect(stdout).toMatch(/Coverage summary/); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('does not output coverage report when html is requested', () => { @@ -154,7 +154,7 @@ test('does not output coverage report when html is requested', () => { ); expect(status).toBe(0); expect(stdout).toMatch(/^$/); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('collects coverage from duplicate files avoiding shared cache', () => { @@ -175,7 +175,7 @@ test('collects coverage from duplicate files avoiding shared cache', () => { // Run for the second time const {stdout, status} = runJest(DIR, args, {stripAnsi: true}); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); expect(status).toBe(0); }); @@ -185,6 +185,6 @@ test('generates coverage when using the testRegex config param ', () => { '--testRegex=__tests__', '--coverage', ]); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); expect(status).toBe(0); }); diff --git a/e2e/__tests__/coverageThreshold.test.js b/e2e/__tests__/coverageThreshold.test.js index d655c88be4b0..d86abc100554 100644 --- a/e2e/__tests__/coverageThreshold.test.js +++ b/e2e/__tests__/coverageThreshold.test.js @@ -7,11 +7,10 @@ * @flow */ -'use strict'; - import path from 'path'; import {cleanup, extractSummary, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../coverage-threshold'); @@ -50,9 +49,9 @@ test('exits with 1 if coverage threshold is not met', () => { const {rest, summary} = extractSummary(stderr); expect(status).toBe(1); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); - expect(stdout).toMatchSnapshot('stdout'); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot('stdout'); }); test('exits with 1 if path threshold group is not found in coverage data', () => { @@ -87,9 +86,9 @@ test('exits with 1 if path threshold group is not found in coverage data', () => const {rest, summary} = extractSummary(stderr); expect(status).toBe(1); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); - expect(stdout).toMatchSnapshot('stdout'); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot('stdout'); }); test('exits with 0 if global threshold group is not found in coverage data', () => { @@ -126,7 +125,7 @@ test('exits with 0 if global threshold group is not found in coverage data', () }); expect(status).toBe(0); - expect(stdout).toMatchSnapshot('stdout'); + expect(wrap(stdout)).toMatchSnapshot('stdout'); }); test('excludes tests matched by path threshold groups from global group', () => { @@ -169,9 +168,9 @@ test('excludes tests matched by path threshold groups from global group', () => const {rest, summary} = extractSummary(stderr); expect(status).toBe(1); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); - expect(stdout).toMatchSnapshot('stdout'); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot('stdout'); }); test('file is matched by all path and glob threshold groups', () => { @@ -219,7 +218,7 @@ test('file is matched by all path and glob threshold groups', () => { ); expect(status).toBe(1); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); - expect(stdout).toMatchSnapshot('stdout'); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot('stdout'); }); diff --git a/e2e/__tests__/coverageTransformInstrumented.test.js b/e2e/__tests__/coverageTransformInstrumented.test.js index da8700e2a27d..0f7227ea7f4c 100644 --- a/e2e/__tests__/coverageTransformInstrumented.test.js +++ b/e2e/__tests__/coverageTransformInstrumented.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import {readFileSync} from 'fs'; import path from 'path'; import {cleanup, run} from '../Utils'; diff --git a/e2e/__tests__/customMatcherStackTrace.test.js b/e2e/__tests__/customMatcherStackTrace.test.js index 36a2075758f4..a4a8971d72b4 100644 --- a/e2e/__tests__/customMatcherStackTrace.test.js +++ b/e2e/__tests__/customMatcherStackTrace.test.js @@ -6,10 +6,10 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; import {extractSummary} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; test('works with custom matchers', () => { const {stderr} = runJest('custom-matcher-stack-trace', ['sync.test.js']); @@ -21,7 +21,7 @@ test('works with custom matchers', () => { .filter(line => line.indexOf('at Error (native)') < 0) .join('\n'); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); test('custom async matchers', () => { diff --git a/e2e/__tests__/customReporters.test.js b/e2e/__tests__/customReporters.test.js index 0fba6b615965..9b29a2c1bd61 100644 --- a/e2e/__tests__/customReporters.test.js +++ b/e2e/__tests__/customReporters.test.js @@ -6,12 +6,12 @@ * * @flow */ -'use strict'; import {cleanup, extractSummary, writeFiles} from '../Utils'; import runJest from '../runJest'; import os from 'os'; import path from 'path'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(os.tmpdir(), 'custom-reporters-test-dir'); @@ -36,7 +36,7 @@ describe('Custom Reporters Integration', () => { test('valid array format for adding reporters', () => { const reporterConfig = { reporters: [ - ['/reporters/TestReporter.js', {'Dmitrii Abramov': 'Awesome'}], + ['/reporters/TestReporter.js', {'Aaron Abramov': 'Awesome'}], ], }; @@ -46,7 +46,7 @@ describe('Custom Reporters Integration', () => { 'add.test.js', ]); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); expect(status).toBe(0); }); @@ -62,7 +62,7 @@ describe('Custom Reporters Integration', () => { ]); expect(status).toBe(1); - expect(stderr).toMatchSnapshot(); + expect(wrap(stderr)).toMatchSnapshot(); }); test('default reporters enabled', () => { @@ -78,8 +78,8 @@ describe('Custom Reporters Integration', () => { const parsedJSON = JSON.parse(stdout); expect(status).toBe(0); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect(parsedJSON).toMatchSnapshot(); }); @@ -120,7 +120,7 @@ describe('Custom Reporters Integration', () => { expect(status).toBe(0); expect(stderr).toBe(''); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('prints reporter errors', () => { diff --git a/e2e/__tests__/customResolver.test.js b/e2e/__tests__/customResolver.test.js index 895f259f0fa9..f0dac2f418a4 100644 --- a/e2e/__tests__/customResolver.test.js +++ b/e2e/__tests__/customResolver.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/deprecatedCliOptions.test.js b/e2e/__tests__/deprecatedCliOptions.test.js index 6f06b542c338..4c305750bf88 100644 --- a/e2e/__tests__/deprecatedCliOptions.test.js +++ b/e2e/__tests__/deprecatedCliOptions.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; diff --git a/e2e/__tests__/detectOpenHandles.js b/e2e/__tests__/detectOpenHandles.js index 2aa76243bca8..71e8a09bba99 100644 --- a/e2e/__tests__/detectOpenHandles.js +++ b/e2e/__tests__/detectOpenHandles.js @@ -6,9 +6,9 @@ * * @flow */ -'use strict'; import runJest, {until} from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; try { // $FlowFixMe: Node core @@ -36,7 +36,7 @@ it('prints message about flag on slow tests', async () => { ); const textAfterTest = getTextAfterTest(stderr); - expect(textAfterTest).toMatchSnapshot(); + expect(wrap(textAfterTest)).toMatchSnapshot(); }); it('prints message about flag on forceExit', async () => { @@ -47,7 +47,7 @@ it('prints message about flag on forceExit', async () => { ); const textAfterTest = getTextAfterTest(stderr); - expect(textAfterTest).toMatchSnapshot(); + expect(wrap(textAfterTest)).toMatchSnapshot(); }); it('prints out info about open handlers', async () => { @@ -58,7 +58,7 @@ it('prints out info about open handlers', async () => { ); const textAfterTest = getTextAfterTest(stderr); - expect(textAfterTest).toMatchSnapshot(); + expect(wrap(textAfterTest)).toMatchSnapshot(); }); it('does not report promises', () => { @@ -80,5 +80,5 @@ it('prints out info about open handlers from inside tests', async () => { ); const textAfterTest = getTextAfterTest(stderr); - expect(textAfterTest).toMatchSnapshot(); + expect(wrap(textAfterTest)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/each.test.js b/e2e/__tests__/each.test.js index f6ddda5d9ecd..27103512d246 100644 --- a/e2e/__tests__/each.test.js +++ b/e2e/__tests__/each.test.js @@ -7,11 +7,10 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; import {extractSummary} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; const dir = path.resolve(__dirname, '../each'); @@ -24,7 +23,7 @@ test('shows error message when not enough arguments are supplied to tests', () = const result = runJest(dir, ['eachException.test.js']); expect(result.status).toBe(1); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); test('shows the correct errors in stderr when failing tests', () => { @@ -34,33 +33,33 @@ test('shows the correct errors in stderr when failing tests', () => { .rest.split('\n') .map(line => line.trimRight()) .join('\n'); - expect(output).toMatchSnapshot(); + expect(wrap(output)).toMatchSnapshot(); }); test('shows only the tests with .only as being ran', () => { const result = runJest(dir, ['eachOnly.test.js']); expect(result.status).toBe(0); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); test('shows only the tests without .skip as being ran', () => { const result = runJest(dir, ['eachSkip.test.js']); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); expect(result.status).toBe(0); }); test('runs only the describe.only.each tests', () => { const result = runJest(dir, ['describeOnly.test.js']); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); expect(result.status).toBe(0); }); test('formats args with pretty format when given %p', () => { const result = runJest(dir, ['pretty.test.js']); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); expect(result.status).toBe(0); }); diff --git a/e2e/__tests__/emptyDescribeWithHooks.test.js b/e2e/__tests__/emptyDescribeWithHooks.test.js index a20c8e8c8a0e..a9620ecd7d36 100644 --- a/e2e/__tests__/emptyDescribeWithHooks.test.js +++ b/e2e/__tests__/emptyDescribeWithHooks.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; import {extractSummary} from '../Utils'; diff --git a/e2e/__tests__/env.test.js b/e2e/__tests__/env.test.js index 5a1f8f8835a0..2c2a36527c64 100644 --- a/e2e/__tests__/env.test.js +++ b/e2e/__tests__/env.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/errorOnDeprecated.test.js b/e2e/__tests__/errorOnDeprecated.test.js index b341dea25140..77807210b6e8 100644 --- a/e2e/__tests__/errorOnDeprecated.test.js +++ b/e2e/__tests__/errorOnDeprecated.test.js @@ -6,11 +6,11 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; import {extractSummary} from '../Utils'; import {skipSuiteOnJestCircus} from '../../scripts/ConditionalTest'; +import {wrap} from 'jest-snapshot-serializer-raw'; skipSuiteOnJestCircus(); @@ -42,7 +42,7 @@ testFiles.forEach(testFile => { ]); expect(result.status).toBe(1); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); }); diff --git a/e2e/__tests__/executeTestsOnceInMpr.js b/e2e/__tests__/executeTestsOnceInMpr.js index 23f5e07a4396..1ee70319b9fb 100644 --- a/e2e/__tests__/executeTestsOnceInMpr.js +++ b/e2e/__tests__/executeTestsOnceInMpr.js @@ -7,11 +7,10 @@ * @flow */ -'use strict'; - import path from 'path'; import {cleanup, extractSummary, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../execute-tests-once-in-mpr'); @@ -58,6 +57,6 @@ test('Tests are executed only once even in an MPR', () => { // We have only one test passed, so total should equal to one, despite we have // three projects. - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); expect(summary).toMatch(/1 total/); }); diff --git a/e2e/__tests__/expectAsyncMatcher.test.js b/e2e/__tests__/expectAsyncMatcher.test.js index e4e78b82d67b..f6e91e911e42 100644 --- a/e2e/__tests__/expectAsyncMatcher.test.js +++ b/e2e/__tests__/expectAsyncMatcher.test.js @@ -7,11 +7,10 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; import {extractSummary} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; const dir = path.resolve(__dirname, '../expect-async-matcher'); test('works with passing tests', () => { @@ -29,5 +28,5 @@ test('shows the correct errors in stderr when failing tests', () => { .filter(line => line.indexOf('packages/expect/build/index.js') === -1) .join('\n'); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/expectInVm.test.js b/e2e/__tests__/expectInVm.test.js index 7e27314a2320..380b9ac5d868 100644 --- a/e2e/__tests__/expectInVm.test.js +++ b/e2e/__tests__/expectInVm.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; test('expect works correctly with RegExps created inside a VM', () => { diff --git a/e2e/__tests__/failures.test.js b/e2e/__tests__/failures.test.js index 088248ca76fb..a47e42452539 100644 --- a/e2e/__tests__/failures.test.js +++ b/e2e/__tests__/failures.test.js @@ -10,6 +10,7 @@ import path from 'path'; import {extractSummary} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const dir = path.resolve(__dirname, '../failures'); @@ -25,15 +26,15 @@ function cleanStderr(stderr) { test('not throwing Error objects', () => { let stderr; stderr = runJest(dir, ['throwNumber.test.js']).stderr; - expect(cleanStderr(stderr)).toMatchSnapshot(); + expect(wrap(cleanStderr(stderr))).toMatchSnapshot(); stderr = runJest(dir, ['throwString.test.js']).stderr; - expect(cleanStderr(stderr)).toMatchSnapshot(); + expect(wrap(cleanStderr(stderr))).toMatchSnapshot(); stderr = runJest(dir, ['throwObject.test.js']).stderr; - expect(cleanStderr(stderr)).toMatchSnapshot(); + expect(wrap(cleanStderr(stderr))).toMatchSnapshot(); stderr = runJest(dir, ['assertionCount.test.js']).stderr; - expect(cleanStderr(stderr)).toMatchSnapshot(); + expect(wrap(cleanStderr(stderr))).toMatchSnapshot(); stderr = runJest(dir, ['duringTests.test.js']).stderr; - expect(cleanStderr(stderr)).toMatchSnapshot(); + expect(wrap(cleanStderr(stderr))).toMatchSnapshot(); }); test('works with node assert', () => { @@ -138,13 +139,13 @@ test('works with node assert', () => { summary = summary.replace(ifErrorMessage, ''); } - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('works with assertions in separate files', () => { const {stderr} = runJest(dir, ['testMacro.test.js']); - expect(normalizeDots(cleanStderr(stderr))).toMatchSnapshot(); + expect(wrap(normalizeDots(cleanStderr(stderr)))).toMatchSnapshot(); }); test('works with async failures', () => { @@ -161,7 +162,7 @@ test('works with async failures', () => { .replace(/.*Use jest\.setTimeout\(newTimeout\).*/, '') .replace(/.*Timeout - Async callback was not.*/, ''); - expect(result).toMatchSnapshot(); + expect(wrap(result)).toMatchSnapshot(); }); test('works with snapshot failures', () => { @@ -170,7 +171,7 @@ test('works with snapshot failures', () => { const result = normalizeDots(cleanStderr(stderr)); expect( - result.substring(0, result.indexOf('Snapshot Summary')), + wrap(result.substring(0, result.indexOf('Snapshot Summary'))), ).toMatchSnapshot(); }); @@ -180,6 +181,6 @@ test('works with named snapshot failures', () => { const result = normalizeDots(cleanStderr(stderr)); expect( - result.substring(0, result.indexOf('Snapshot Summary')), + wrap(result.substring(0, result.indexOf('Snapshot Summary'))), ).toMatchSnapshot(); }); diff --git a/e2e/__tests__/fakePromises.test.js b/e2e/__tests__/fakePromises.test.js index d946dff7202c..5533b87c7b90 100644 --- a/e2e/__tests__/fakePromises.test.js +++ b/e2e/__tests__/fakePromises.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/filter.test.js b/e2e/__tests__/filter.test.js index ab51ea2edf1d..54fe03bb8a2a 100644 --- a/e2e/__tests__/filter.test.js +++ b/e2e/__tests__/filter.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/findRelatedFiles.test.js b/e2e/__tests__/findRelatedFiles.test.js index e11fd98b984b..3017a3fa8e35 100644 --- a/e2e/__tests__/findRelatedFiles.test.js +++ b/e2e/__tests__/findRelatedFiles.test.js @@ -7,12 +7,11 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; import os from 'os'; import path from 'path'; import {cleanup, extractSummary, writeFiles} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(os.tmpdir(), 'find-related-tests-test'); @@ -120,17 +119,19 @@ describe('--findRelatedTests flag', () => { let summary; let rest; ({summary, rest} = extractSummary(stderr)); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect( - rest - .split('\n') - .map(s => s.trim()) - .sort() - .join('\n'), + wrap( + rest + .split('\n') + .map(s => s.trim()) + .sort() + .join('\n'), + ), ).toMatchSnapshot(); // both a.js and b.js should be in the coverage - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); ({stdout, stderr} = runJest(DIR, ['--findRelatedTests', 'a.js'], { stripAnsi: true, @@ -138,11 +139,11 @@ describe('--findRelatedTests flag', () => { ({summary, rest} = extractSummary(stderr)); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); // should only run a.js - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); // coverage should be collected only for a.js - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); test('coverage configuration is applied correctly', () => { @@ -170,17 +171,19 @@ describe('--findRelatedTests flag', () => { })); const {summary, rest} = extractSummary(stderr); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect( - rest - .split('\n') - .map(s => s.trim()) - .sort() - .join('\n'), + wrap( + rest + .split('\n') + .map(s => s.trim()) + .sort() + .join('\n'), + ), ).toMatchSnapshot(); // Only a.js should be in the report - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); expect(stdout).toMatch('a.js'); expect(stdout).not.toMatch('b.js'); diff --git a/e2e/__tests__/forceExit.test.js b/e2e/__tests__/forceExit.test.js index 11179a316c5e..34cb1f03682d 100644 --- a/e2e/__tests__/forceExit.test.js +++ b/e2e/__tests__/forceExit.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; import os from 'os'; import path from 'path'; diff --git a/e2e/__tests__/generatorMock.test.js b/e2e/__tests__/generatorMock.test.js index 310f655a1467..2d41feb01991 100644 --- a/e2e/__tests__/generatorMock.test.js +++ b/e2e/__tests__/generatorMock.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/global.test.js b/e2e/__tests__/global.test.js index 8702e60e2843..b0c1ef4f4069 100644 --- a/e2e/__tests__/global.test.js +++ b/e2e/__tests__/global.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; test('globals are properly defined', () => { expect(global.Object).toBe(Object); diff --git a/e2e/__tests__/globals.test.js b/e2e/__tests__/globals.test.js index 0a60e99d6b8d..63a8566267c8 100644 --- a/e2e/__tests__/globals.test.js +++ b/e2e/__tests__/globals.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import os from 'os'; import runJest from '../runJest'; @@ -18,6 +16,7 @@ import { extractSummary, writeFiles, } from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(os.tmpdir(), 'globalVariables.test'); const TEST_DIR = path.resolve(DIR, '__tests__'); @@ -51,8 +50,8 @@ test('basic test constructs', () => { expect(status).toBe(0); const {summary, rest} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('skips', () => { @@ -81,8 +80,8 @@ test('skips', () => { const {stderr, status} = runJest(DIR); const {summary, rest} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect(status).toBe(0); }); @@ -112,8 +111,8 @@ test('only', () => { expect(status).toBe(0); const {summary, rest} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('cannot have describe with no implementation', () => { @@ -128,8 +127,8 @@ test('cannot have describe with no implementation', () => { const rest = cleanStderr(stderr); const {summary} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('cannot test with no implementation', () => { @@ -145,8 +144,8 @@ test('cannot test with no implementation', () => { expect(status).toBe(1); const {summary} = extractSummary(stderr); - expect(cleanStderr(stderr)).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(cleanStderr(stderr))).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('skips with expand arg', () => { @@ -176,8 +175,8 @@ test('skips with expand arg', () => { expect(status).toBe(0); const {summary, rest} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('only with expand arg', () => { @@ -206,8 +205,8 @@ test('only with expand arg', () => { expect(status).toBe(0); const {summary, rest} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('cannot test with no implementation with expand arg', () => { @@ -223,8 +222,8 @@ test('cannot test with no implementation with expand arg', () => { expect(status).toBe(1); const {summary} = extractSummary(stderr); - expect(cleanStderr(stderr)).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(cleanStderr(stderr))).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('function as descriptor', () => { @@ -241,6 +240,6 @@ test('function as descriptor', () => { expect(status).toBe(0); const {summary, rest} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/hasteMapSha1.test.js b/e2e/__tests__/hasteMapSha1.test.js index 9a9fa2b28ae4..b7713d10b6a9 100644 --- a/e2e/__tests__/hasteMapSha1.test.js +++ b/e2e/__tests__/hasteMapSha1.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import os from 'os'; import path from 'path'; import JestHasteMap from 'jest-haste-map'; diff --git a/e2e/__tests__/hasteMapSize.test.js b/e2e/__tests__/hasteMapSize.test.js index 160bf08e0db6..32c3ff98dd7c 100644 --- a/e2e/__tests__/hasteMapSize.test.js +++ b/e2e/__tests__/hasteMapSize.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import os from 'os'; import path from 'path'; import HasteMap from 'jest-haste-map'; diff --git a/e2e/__tests__/jasmineAsync.test.js b/e2e/__tests__/jasmineAsync.test.js index f86aad6ecfca..f344e28a3bba 100644 --- a/e2e/__tests__/jasmineAsync.test.js +++ b/e2e/__tests__/jasmineAsync.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest, {json as runWithJson} from '../runJest'; describe('async jasmine', () => { diff --git a/e2e/__tests__/jasmineAsyncWithPendingDuringTest.js b/e2e/__tests__/jasmineAsyncWithPendingDuringTest.js index cfb24c9adc30..512935abe4cc 100644 --- a/e2e/__tests__/jasmineAsyncWithPendingDuringTest.js +++ b/e2e/__tests__/jasmineAsyncWithPendingDuringTest.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import {json as runWithJson} from '../runJest'; import {skipSuiteOnJestCircus} from '../../scripts/ConditionalTest'; diff --git a/e2e/__tests__/jest.config.js.test.js b/e2e/__tests__/jest.config.js.test.js index 3d11b56a7c88..ccf758c7a79a 100644 --- a/e2e/__tests__/jest.config.js.test.js +++ b/e2e/__tests__/jest.config.js.test.js @@ -7,11 +7,10 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; import {cleanup, extractSummary, writeFiles} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../jest.config.js'); @@ -28,8 +27,8 @@ test('works with jest.config.js', () => { const {stderr, status} = runJest(DIR, ['-w=1', '--ci=false']); const {rest, summary} = extractSummary(stderr); expect(status).toBe(0); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('traverses directory tree up until it finds jest.config', () => { @@ -51,12 +50,14 @@ test('traverses directory tree up until it finds jest.config', () => { ); // Snapshot the console.loged `process.cwd()` and make sure it stays the same - expect(stdout.replace(/^\W+(.*)e2e/gm, '<>')).toMatchSnapshot(); + expect( + wrap(stdout.replace(/^\W+(.*)e2e/gm, '<>')), + ).toMatchSnapshot(); const {rest, summary} = extractSummary(stderr); expect(status).toBe(0); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); test('invalid JS in jest.config.js', () => { diff --git a/e2e/__tests__/jestChangedFiles.test.js b/e2e/__tests__/jestChangedFiles.test.js index cdbbe646b706..6020514f44f3 100644 --- a/e2e/__tests__/jestChangedFiles.test.js +++ b/e2e/__tests__/jestChangedFiles.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import os from 'os'; import path from 'path'; import { @@ -18,6 +16,7 @@ import { import {skipSuiteOnWindows} from '../../scripts/ConditionalTest'; import {cleanup, run, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; skipSuiteOnWindows(); @@ -259,7 +258,7 @@ test('handles a bad revision for "changedSince", for git', async () => { const {status, stderr} = runJest(DIR, ['--changedSince=blablabla']); expect(status).toBe(1); - expect(stderr).toMatchSnapshot(); + expect(wrap(stderr)).toMatchSnapshot(); }); test('gets changed files for hg', async () => { @@ -406,5 +405,5 @@ test('handles a bad revision for "changedSince", for hg', async () => { const {status, stderr} = runJest(DIR, ['--changedSince=blablabla']); expect(status).toBe(1); - expect(stderr).toMatchSnapshot(); + expect(wrap(stderr)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/jestRequireActual.test.js b/e2e/__tests__/jestRequireActual.test.js index ad7e2ae975e3..411dced01860 100644 --- a/e2e/__tests__/jestRequireActual.test.js +++ b/e2e/__tests__/jestRequireActual.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import os from 'os'; import {cleanup, writeFiles} from '../Utils'; diff --git a/e2e/__tests__/jestRequireMock.test.js b/e2e/__tests__/jestRequireMock.test.js index eefe8c0bc577..d00058e97a78 100644 --- a/e2e/__tests__/jestRequireMock.test.js +++ b/e2e/__tests__/jestRequireMock.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import os from 'os'; import {cleanup, writeFiles} from '../Utils'; diff --git a/e2e/__tests__/json.test.js b/e2e/__tests__/json.test.js index 658057ec4217..df3e875203d2 100644 --- a/e2e/__tests__/json.test.js +++ b/e2e/__tests__/json.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; test('JSON is available in the global scope', () => { expect(JSON).toBe(global.JSON); diff --git a/e2e/__tests__/jsonReporter.test.js b/e2e/__tests__/jsonReporter.test.js index d7ae1a623f6e..7fe638ca623a 100644 --- a/e2e/__tests__/jsonReporter.test.js +++ b/e2e/__tests__/jsonReporter.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import fs from 'fs'; import path from 'path'; diff --git a/e2e/__tests__/lifecycles.js b/e2e/__tests__/lifecycles.js index 2d36b32ec5d4..ea9977021725 100644 --- a/e2e/__tests__/lifecycles.js +++ b/e2e/__tests__/lifecycles.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/listTests.test.js b/e2e/__tests__/listTests.test.js index 641d3ed5bc9f..f7c4ad6cb7af 100644 --- a/e2e/__tests__/listTests.test.js +++ b/e2e/__tests__/listTests.test.js @@ -6,10 +6,10 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; import path from 'path'; +import {wrap} from 'jest-snapshot-serializer-raw'; const testRootDir = path.resolve(__dirname, '..', '..'); @@ -26,10 +26,12 @@ describe('--listTests flag', () => { expect(status).toBe(0); expect( - normalizePaths(stdout) - .split('\n') - .sort() - .join('\n'), + wrap( + normalizePaths(stdout) + .split('\n') + .sort() + .join('\n'), + ), ).toMatchSnapshot(); }); @@ -39,10 +41,12 @@ describe('--listTests flag', () => { expect(status).toBe(0); expect(() => JSON.parse(stdout)).not.toThrow(); expect( - JSON.stringify( - JSON.parse(stdout) - .map(normalizePaths) - .sort(), + wrap( + JSON.stringify( + JSON.parse(stdout) + .map(normalizePaths) + .sort(), + ), ), ).toMatchSnapshot(); }); diff --git a/e2e/__tests__/locationInResults.test.js b/e2e/__tests__/locationInResults.test.js index 43ef16b6e666..3773f056c520 100644 --- a/e2e/__tests__/locationInResults.test.js +++ b/e2e/__tests__/locationInResults.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import {json as runWithJson} from '../runJest'; import {isJestCircusRun} from '../../scripts/ConditionalTest'; diff --git a/e2e/__tests__/logHeapUsage.test.js b/e2e/__tests__/logHeapUsage.test.js index 0ce1d4c9563b..2367d65ac8e2 100644 --- a/e2e/__tests__/logHeapUsage.test.js +++ b/e2e/__tests__/logHeapUsage.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import os from 'os'; import {cleanup, writeFiles} from '../Utils'; diff --git a/e2e/__tests__/mockNames.test.js b/e2e/__tests__/mockNames.test.js index dc76ad163ff5..40448c16e215 100644 --- a/e2e/__tests__/mockNames.test.js +++ b/e2e/__tests__/mockNames.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/moduleNameMapper.test.js b/e2e/__tests__/moduleNameMapper.test.js index 91d1809c1a5b..969b387372ed 100644 --- a/e2e/__tests__/moduleNameMapper.test.js +++ b/e2e/__tests__/moduleNameMapper.test.js @@ -6,17 +6,17 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; import {extractSummary} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; test('moduleNameMapper wrong configuration', () => { const {stderr, status} = runJest('module-name-mapper-wrong-config'); const {rest} = extractSummary(stderr); expect(status).toBe(1); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); test('moduleNameMapper correct configuration', () => { @@ -26,5 +26,5 @@ test('moduleNameMapper correct configuration', () => { const {rest} = extractSummary(stderr); expect(status).toBe(0); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/moduleParentNullInTest.js b/e2e/__tests__/moduleParentNullInTest.js index 127a2d2a0e1e..0add10013a19 100644 --- a/e2e/__tests__/moduleParentNullInTest.js +++ b/e2e/__tests__/moduleParentNullInTest.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/multiProjectRunner.test.js b/e2e/__tests__/multiProjectRunner.test.js index 38d99dc29d9a..b3438cb90905 100644 --- a/e2e/__tests__/multiProjectRunner.test.js +++ b/e2e/__tests__/multiProjectRunner.test.js @@ -7,13 +7,12 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; import os from 'os'; import path from 'path'; import stripAnsi from 'strip-ansi'; import {cleanup, extractSummary, sortLines, writeFiles} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(os.tmpdir(), 'multi-project-runner-test'); @@ -91,7 +90,7 @@ test('can pass projects or global config', () => { 'The name `file1` was looked up in the Haste module map. It cannot be resolved, because there exists several different files', ); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); writeFiles(DIR, { 'global_config.js': ` @@ -116,8 +115,8 @@ test('can pass projects or global config', () => { ])); const result1 = extractSummary(stderr); - expect(result1.summary).toMatchSnapshot(); - expect(sortLines(result1.rest)).toMatchSnapshot(); + expect(wrap(result1.summary)).toMatchSnapshot(); + expect(wrap(sortLines(result1.rest))).toMatchSnapshot(); ({stderr} = runJest(DIR, [ '--no-watchman', @@ -127,8 +126,8 @@ test('can pass projects or global config', () => { ])); const result2 = extractSummary(stderr); - expect(result2.summary).toMatchSnapshot(); - expect(sortLines(result2.rest)).toMatchSnapshot(); + expect(wrap(result2.summary)).toMatchSnapshot(); + expect(wrap(sortLines(result2.rest))).toMatchSnapshot(); // make sure different ways of passing projects work exactly the same expect(result1.summary).toBe(result2.summary); @@ -400,3 +399,41 @@ test('Does transform files with the corresponding project transformer', () => { expect(stderr).toMatch('PASS project1/__tests__/project1.test.js'); expect(stderr).toMatch('PASS project2/__tests__/project2.test.js'); }); + +test("doesn't bleed module file extensions resolution with multiple workers", () => { + writeFiles(DIR, { + '.watchmanconfig': '', + 'file.js': 'module.exports = "file1"', + 'file.p2.js': 'module.exports = "file2"', + 'package.json': '{}', + 'project1/__tests__/project1.test.js': ` + const file = require('../../file'); + test('file 1', () => expect(file).toBe('file1')); + `, + 'project1/jest.config.js': ` + module.exports = { + rootDir: '..', + };`, + 'project2/__tests__/project2.test.js': ` + const file = require('../../file'); + test('file 2', () => expect(file).toBe('file2')); + `, + 'project2/jest.config.js': ` + module.exports = { + rootDir: '..', + moduleFileExtensions: ['p2.js', 'js'] + };`, + }); + + const {stderr} = runJest(DIR, [ + '--no-watchman', + '-w=2', + '--projects', + 'project1', + 'project2', + ]); + + expect(stderr).toMatch('Ran all test suites in 2 projects.'); + expect(stderr).toMatch('PASS project1/__tests__/project1.test.js'); + expect(stderr).toMatch('PASS project2/__tests__/project2.test.js'); +}); diff --git a/e2e/__tests__/nativeAsyncMock.test.js b/e2e/__tests__/nativeAsyncMock.test.js index 994ac76b7754..2dde843752cd 100644 --- a/e2e/__tests__/nativeAsyncMock.test.js +++ b/e2e/__tests__/nativeAsyncMock.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import {extractSummary, run} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/nestedEventLoop.test.js b/e2e/__tests__/nestedEventLoop.test.js index 6629a8682b04..25731f2e108a 100644 --- a/e2e/__tests__/nestedEventLoop.test.js +++ b/e2e/__tests__/nestedEventLoop.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/noTestFound.test.js b/e2e/__tests__/noTestFound.test.js index c692f1a949c5..3d4e0a0bb6e3 100644 --- a/e2e/__tests__/noTestFound.test.js +++ b/e2e/__tests__/noTestFound.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/noTestsFound.test.js b/e2e/__tests__/noTestsFound.test.js index 6332dfa88a6b..360886aea33d 100644 --- a/e2e/__tests__/noTestsFound.test.js +++ b/e2e/__tests__/noTestsFound.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; diff --git a/e2e/__tests__/nodePath.test.js b/e2e/__tests__/nodePath.test.js index 2581c36a2acf..ee059732a931 100644 --- a/e2e/__tests__/nodePath.test.js +++ b/e2e/__tests__/nodePath.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/onlyChanged.test.js b/e2e/__tests__/onlyChanged.test.js index 1e0c36834b15..82282142fb8a 100644 --- a/e2e/__tests__/onlyChanged.test.js +++ b/e2e/__tests__/onlyChanged.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; import os from 'os'; import path from 'path'; diff --git a/e2e/__tests__/overrideGlobals.test.js b/e2e/__tests__/overrideGlobals.test.js index 6ca91e76fb43..32ee2177c7f7 100644 --- a/e2e/__tests__/overrideGlobals.test.js +++ b/e2e/__tests__/overrideGlobals.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; test('overriding native promise does not freeze Jest', () => { diff --git a/e2e/__tests__/presets.test.js b/e2e/__tests__/presets.test.js index 1c964f2ceb61..59ddb80556be 100644 --- a/e2e/__tests__/presets.test.js +++ b/e2e/__tests__/presets.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/processExit.test.js b/e2e/__tests__/processExit.test.js index 4375a3091c4d..1290e1b42aa1 100644 --- a/e2e/__tests__/processExit.test.js +++ b/e2e/__tests__/processExit.test.js @@ -6,12 +6,12 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; it('prints stack trace pointing to process.exit call', async () => { const {stderr} = await runJest('process-exit'); - expect(stderr).toMatchSnapshot(); + expect(wrap(stderr)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/promiseReject.test.js b/e2e/__tests__/promiseReject.test.js index 38620a5da78f..1b1b75dce106 100644 --- a/e2e/__tests__/promiseReject.test.js +++ b/e2e/__tests__/promiseReject.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; import path from 'path'; diff --git a/e2e/__tests__/regexCharInPath.test.js b/e2e/__tests__/regexCharInPath.test.js index 2740d212af58..cfae71161bca 100644 --- a/e2e/__tests__/regexCharInPath.test.js +++ b/e2e/__tests__/regexCharInPath.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import {json as runWithJson} from '../runJest'; diff --git a/e2e/__tests__/requireAfterTeardown.test.js b/e2e/__tests__/requireAfterTeardown.test.js index ed868db4b7df..d47ed9a898bd 100644 --- a/e2e/__tests__/requireAfterTeardown.test.js +++ b/e2e/__tests__/requireAfterTeardown.test.js @@ -7,9 +7,8 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; test('prints useful error for requires after test is done', () => { const {stderr} = runJest('require-after-teardown'); @@ -19,7 +18,7 @@ test('prints useful error for requires after test is done', () => { .slice(9, 18) .join('\n'); - expect(interestingLines).toMatchSnapshot(); + expect(wrap(interestingLines)).toMatchSnapshot(); expect(stderr.split('\n')[19]).toMatch( new RegExp('(__tests__/lateRequire.test.js:11:20)'), ); diff --git a/e2e/__tests__/requireMain.test.js b/e2e/__tests__/requireMain.test.js index 5f466b486245..34a95324d07c 100644 --- a/e2e/__tests__/requireMain.test.js +++ b/e2e/__tests__/requireMain.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; test('provides `require.main` set to test suite module', () => { diff --git a/e2e/__tests__/resetModules.test.js b/e2e/__tests__/resetModules.test.js index b2a7fef3548c..a87314b3e885 100644 --- a/e2e/__tests__/resetModules.test.js +++ b/e2e/__tests__/resetModules.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/resolve.test.js b/e2e/__tests__/resolve.test.js index 8979de96001d..a455c02e7045 100644 --- a/e2e/__tests__/resolve.test.js +++ b/e2e/__tests__/resolve.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/resolveGetPaths.test.js b/e2e/__tests__/resolveGetPaths.test.js index 4a455594f22d..8afd511abc01 100644 --- a/e2e/__tests__/resolveGetPaths.test.js +++ b/e2e/__tests__/resolveGetPaths.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/resolveNoFileExtensions.test.js b/e2e/__tests__/resolveNoFileExtensions.test.js index 1354556e047f..535cbb8af7c4 100644 --- a/e2e/__tests__/resolveNoFileExtensions.test.js +++ b/e2e/__tests__/resolveNoFileExtensions.test.js @@ -6,11 +6,11 @@ * * @flow */ -'use strict'; import path from 'path'; import runJest from '../runJest'; import {cleanup, extractSummary, writeFiles} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../resolve-no-extensions-no-js'); @@ -22,7 +22,7 @@ test('show error message with matching files', () => { const {rest} = extractSummary(stderr); expect(status).toBe(1); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); test('show error message when no js moduleFileExtensions', () => { @@ -49,5 +49,5 @@ test('show error message when no js moduleFileExtensions', () => { const {status, stderr} = runJest('resolve-no-extensions-no-js'); expect(status).toBe(1); - expect(stderr).toMatchSnapshot(); + expect(wrap(stderr)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/resolveNodeModule.test.js b/e2e/__tests__/resolveNodeModule.test.js index 8300aa01293e..e5949480c346 100644 --- a/e2e/__tests__/resolveNodeModule.test.js +++ b/e2e/__tests__/resolveNodeModule.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/resolveWithPaths.test.js b/e2e/__tests__/resolveWithPaths.test.js index 7e679918f6e0..ce60bc6b3290 100644 --- a/e2e/__tests__/resolveWithPaths.test.js +++ b/e2e/__tests__/resolveWithPaths.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import {resolve} from 'path'; import runJest from '../runJest'; diff --git a/e2e/__tests__/runTestsByPath.test.js b/e2e/__tests__/runTestsByPath.test.js index 14d29b9d5dd5..0d487e7e70bf 100644 --- a/e2e/__tests__/runTestsByPath.test.js +++ b/e2e/__tests__/runTestsByPath.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; import os from 'os'; import path from 'path'; diff --git a/e2e/__tests__/runtimeInternalModuleRegistry.test.js b/e2e/__tests__/runtimeInternalModuleRegistry.test.js index 9a2e302e6e74..91ee8c41ede1 100644 --- a/e2e/__tests__/runtimeInternalModuleRegistry.test.js +++ b/e2e/__tests__/runtimeInternalModuleRegistry.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import {json as runWithJson} from '../runJest'; diff --git a/e2e/__tests__/setImmediate.test.js b/e2e/__tests__/setImmediate.test.js index c7c4588cb560..134b886181c1 100644 --- a/e2e/__tests__/setImmediate.test.js +++ b/e2e/__tests__/setImmediate.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/setupFilesAfterEnvConfig.test.js b/e2e/__tests__/setupFilesAfterEnvConfig.test.js index a2ec3b6a3f38..24f18cbf499d 100644 --- a/e2e/__tests__/setupFilesAfterEnvConfig.test.js +++ b/e2e/__tests__/setupFilesAfterEnvConfig.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import fs from 'fs'; import path from 'path'; diff --git a/e2e/__tests__/showConfig.test.js b/e2e/__tests__/showConfig.test.js index 013ae8f7ad24..5b67d26761d0 100644 --- a/e2e/__tests__/showConfig.test.js +++ b/e2e/__tests__/showConfig.test.js @@ -7,13 +7,12 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; import os from 'os'; import {skipSuiteOnWindows} from '../../scripts/ConditionalTest'; import {cleanup, writeFiles} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; skipSuiteOnWindows(); @@ -43,5 +42,5 @@ test('--showConfig outputs config info and exits', () => { .replace(/\"\S*show-config-test/gm, '"<>') .replace(/\"\S*\/jest\/packages/gm, '"<>'); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/snapshot.test.js b/e2e/__tests__/snapshot.test.js index 8153bab57fe9..561916e63faf 100644 --- a/e2e/__tests__/snapshot.test.js +++ b/e2e/__tests__/snapshot.test.js @@ -6,12 +6,12 @@ * * @flow */ -'use strict'; import fs from 'fs'; import path from 'path'; import {extractSummary} from '../Utils'; import runJest, {json as runWithJson} from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const emptyTest = 'describe("", () => {it("", () => {})})'; const snapshotDir = path.resolve( @@ -116,7 +116,7 @@ describe('Snapshot', () => { ).not.toBeUndefined(); expect(result.stderr).toMatch('5 snapshots written from 2 test suites'); - expect(extractSummary(result.stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(result.stderr).summary)).toMatchSnapshot(); }); it('works with escaped characters', () => { @@ -130,7 +130,7 @@ describe('Snapshot', () => { expect(stderr).toMatch('1 snapshot written'); expect(result.status).toBe(0); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); // Write the second snapshot const testData = @@ -148,7 +148,7 @@ describe('Snapshot', () => { stderr = result.stderr; expect(stderr).toMatch('1 snapshot written'); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(result.status).toBe(0); // Now let's check again if everything still passes. @@ -161,7 +161,7 @@ describe('Snapshot', () => { stderr = result.stderr; expect(stderr).not.toMatch('Snapshot Summary'); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(result.status).toBe(0); }); @@ -176,7 +176,7 @@ describe('Snapshot', () => { expect(stderr).toMatch('2 snapshots written from 1 test suite.'); expect(result.status).toBe(0); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); result = runJest('snapshot-escape', [ '-w=1', @@ -188,7 +188,7 @@ describe('Snapshot', () => { // Make sure we aren't writing a snapshot this time which would // indicate that the snapshot couldn't be loaded properly. expect(stderr).not.toMatch('Snapshot Summary'); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(result.status).toBe(0); }); @@ -203,7 +203,7 @@ describe('Snapshot', () => { expect(stderr).toMatch('1 snapshot written'); expect(result.status).toBe(0); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); result = runJest('snapshot-escape', [ '-w=1', @@ -215,7 +215,7 @@ describe('Snapshot', () => { // Make sure we aren't writing a snapshot this time which would // indicate that the snapshot couldn't be loaded properly. expect(stderr).not.toMatch('1 snapshot written'); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(result.status).toBe(0); }); @@ -234,7 +234,7 @@ describe('Snapshot', () => { const {rest, summary} = extractSummary(result.stderr); expect(rest).toMatch('New snapshot was not written'); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); it('works on subsequent runs without `-u`', () => { @@ -251,8 +251,8 @@ describe('Snapshot', () => { expect(firstRun.stderr).toMatch('9 snapshots written from 3 test suites'); expect(secondRun.stderr).toMatch('9 passed, 9 total'); - expect(extractSummary(firstRun.stderr).summary).toMatchSnapshot(); - expect(extractSummary(secondRun.stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(firstRun.stderr).summary)).toMatchSnapshot(); + expect(wrap(extractSummary(secondRun.stderr).summary)).toMatchSnapshot(); }); it('deletes the snapshot if the test suite has been removed', () => { @@ -272,8 +272,8 @@ describe('Snapshot', () => { expect(secondRun.stderr).toMatch( '1 snapshot file removed from 1 test suite', ); - expect(extractSummary(firstRun.stderr).summary).toMatchSnapshot(); - expect(extractSummary(secondRun.stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(firstRun.stderr).summary)).toMatchSnapshot(); + expect(wrap(extractSummary(secondRun.stderr).summary)).toMatchSnapshot(); }); it('deletes a snapshot when a test does removes all the snapshots', () => { @@ -291,8 +291,8 @@ describe('Snapshot', () => { expect(secondRun.stderr).toMatch( '1 snapshot file removed from 1 test suite', ); - expect(extractSummary(firstRun.stderr).summary).toMatchSnapshot(); - expect(extractSummary(secondRun.stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(firstRun.stderr).summary)).toMatchSnapshot(); + expect(wrap(extractSummary(secondRun.stderr).summary)).toMatchSnapshot(); }); it('updates the snapshot when a test removes some snapshots', () => { @@ -324,10 +324,10 @@ describe('Snapshot', () => { expect(beforeRemovingSnapshot[keyToCheck]).not.toBe(undefined); expect(afterRemovingSnapshot[keyToCheck]).toBe(undefined); - expect(extractSummary(firstRun.stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(firstRun.stderr).summary)).toMatchSnapshot(); expect(firstRun.stderr).toMatch('9 snapshots written from 3 test suites'); - expect(extractSummary(secondRun.stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(secondRun.stderr).summary)).toMatchSnapshot(); expect(secondRun.stderr).toMatch('1 snapshot updated from 1 test suite'); expect(secondRun.stderr).toMatch('1 snapshot removed from 1 test suite'); }); diff --git a/e2e/__tests__/snapshotMockFs.test.js b/e2e/__tests__/snapshotMockFs.test.js index 6e9af87bdc0b..65bc709b75e1 100644 --- a/e2e/__tests__/snapshotMockFs.test.js +++ b/e2e/__tests__/snapshotMockFs.test.js @@ -6,12 +6,12 @@ * * @flow */ -'use strict'; -const rimraf = require('rimraf'); -const path = require('path'); -const {extractSummary} = require('../Utils'); -const runJest = require('../runJest'); +import path from 'path'; +import rimraf from 'rimraf'; +import {wrap} from 'jest-snapshot-serializer-raw'; +import {extractSummary} from '../Utils'; +import {json as runJestJson} from '../runJest'; const DIR = path.resolve(__dirname, '../snapshot-mock-fs'); const snapshotDir = path.resolve(DIR, '__tests__/__snapshots__'); @@ -21,14 +21,14 @@ beforeEach(() => rimraf.sync(snapshotDir)); afterAll(() => rimraf.sync(snapshotDir)); test('store snapshot even if fs is mocked', () => { - const {json, status, stderr} = runJest.json(DIR, ['--ci=false']); + const {json, status, stderr} = runJestJson(DIR, ['--ci=false']); expect(status).toBe(0); expect(json.numTotalTests).toBe(1); expect(json.numPassedTests).toBe(1); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); // $FlowFixMe dynamic require const content = require(snapshotFile); diff --git a/e2e/__tests__/snapshotResolver.test.js b/e2e/__tests__/snapshotResolver.test.js index e21d7f52cd64..cd5fbaaa4cc2 100644 --- a/e2e/__tests__/snapshotResolver.test.js +++ b/e2e/__tests__/snapshotResolver.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import fs from 'fs'; import path from 'path'; import runJest from '../runJest'; diff --git a/e2e/__tests__/snapshotSerializers.test.js b/e2e/__tests__/snapshotSerializers.test.js index 2871db40b688..7991000917b3 100644 --- a/e2e/__tests__/snapshotSerializers.test.js +++ b/e2e/__tests__/snapshotSerializers.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import path from 'path'; import {cleanup} from '../Utils'; diff --git a/e2e/__tests__/stackTrace.test.js b/e2e/__tests__/stackTrace.test.js index f0a88a613371..68a06d982101 100644 --- a/e2e/__tests__/stackTrace.test.js +++ b/e2e/__tests__/stackTrace.test.js @@ -6,16 +6,16 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; import {extractSummary} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; describe('Stack Trace', () => { it('prints a stack trace for runtime errors', () => { const {status, stderr} = runJest('stack-trace', ['runtimeError.test.js']); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(status).toBe(1); expect(stderr).toMatch( @@ -33,7 +33,7 @@ describe('Stack Trace', () => { '--noStackTrace', ]); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(status).toBe(1); expect(stderr).toMatch( @@ -47,7 +47,7 @@ describe('Stack Trace', () => { it('prints a stack trace for matching errors', () => { const {status, stderr} = runJest('stack-trace', ['stackTrace.test.js']); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(status).toBe(1); expect(stderr).toMatch(/\s+at\s(?:.+?)\s\(__tests__\/stackTrace.test\.js/); @@ -59,7 +59,7 @@ describe('Stack Trace', () => { '--noStackTrace', ]); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(status).toBe(1); expect(stderr).not.toMatch( @@ -70,7 +70,7 @@ describe('Stack Trace', () => { it('prints a stack trace for errors', () => { const {status, stderr} = runJest('stack-trace', ['testError.test.js']); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(status).toBe(1); expect(stderr).toMatch(/this is unexpected\./); @@ -93,7 +93,7 @@ describe('Stack Trace', () => { 'stackTraceWithoutMessage.test.js', ]); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(status).toBe(1); expect(stderr).toMatch(/important message/); @@ -108,7 +108,7 @@ describe('Stack Trace', () => { '--noStackTrace', ]); - expect(extractSummary(stderr).summary).toMatchSnapshot(); + expect(wrap(extractSummary(stderr).summary)).toMatchSnapshot(); expect(status).toBe(1); expect(stderr).not.toMatch( diff --git a/e2e/__tests__/stackTraceNoCaptureStackTrace.test.js b/e2e/__tests__/stackTraceNoCaptureStackTrace.test.js index 26ee4498b646..39de7122b30a 100644 --- a/e2e/__tests__/stackTraceNoCaptureStackTrace.test.js +++ b/e2e/__tests__/stackTraceNoCaptureStackTrace.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/stackTraceSourceMaps.test.js b/e2e/__tests__/stackTraceSourceMaps.test.js index 02fddcfd0660..162cabc65085 100644 --- a/e2e/__tests__/stackTraceSourceMaps.test.js +++ b/e2e/__tests__/stackTraceSourceMaps.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import {run} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/supportsDashedArgs.js b/e2e/__tests__/supportsDashedArgs.js index 240b1486fcf9..101d156bbfd0 100644 --- a/e2e/__tests__/supportsDashedArgs.js +++ b/e2e/__tests__/supportsDashedArgs.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; diff --git a/e2e/__tests__/symbol.test.js b/e2e/__tests__/symbol.test.js index 4ae1dbd53c1f..56629c1d89ff 100644 --- a/e2e/__tests__/symbol.test.js +++ b/e2e/__tests__/symbol.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - test('Symbol deletion', () => { global.Symbol = undefined; diff --git a/e2e/__tests__/testEnvironment.test.js b/e2e/__tests__/testEnvironment.test.js index 337ddaab79ba..239b60efe742 100644 --- a/e2e/__tests__/testEnvironment.test.js +++ b/e2e/__tests__/testEnvironment.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import {json as runWithJson} from '../runJest'; diff --git a/e2e/__tests__/testEnvironmentAsync.test.js b/e2e/__tests__/testEnvironmentAsync.test.js index 29b447f7f534..d866e519d96e 100644 --- a/e2e/__tests__/testEnvironmentAsync.test.js +++ b/e2e/__tests__/testEnvironmentAsync.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import fs from 'fs'; import path from 'path'; diff --git a/e2e/__tests__/testFailureExitCode.test.js b/e2e/__tests__/testFailureExitCode.test.js index 2fd1e4ad171b..c22ad3061897 100644 --- a/e2e/__tests__/testFailureExitCode.test.js +++ b/e2e/__tests__/testFailureExitCode.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import os from 'os'; import {cleanup, writeFiles} from '../Utils'; diff --git a/e2e/__tests__/testInRoot.test.js b/e2e/__tests__/testInRoot.test.js index 625cbbd0d22f..1dc86f6e2f4d 100644 --- a/e2e/__tests__/testInRoot.test.js +++ b/e2e/__tests__/testInRoot.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import path from 'path'; import {json as runWithJson} from '../runJest'; diff --git a/e2e/__tests__/testNamePattern.test.js b/e2e/__tests__/testNamePattern.test.js index 6c47547cf66f..bb89cc5a1c13 100644 --- a/e2e/__tests__/testNamePattern.test.js +++ b/e2e/__tests__/testNamePattern.test.js @@ -6,10 +6,10 @@ * * @flow */ -'use strict'; import {extractSummary} from '../Utils'; import {json as runWithJson} from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; test('testNamePattern', () => { const {stderr, status} = runWithJson('test-name-pattern', [ @@ -19,5 +19,5 @@ test('testNamePattern', () => { const {summary} = extractSummary(stderr); expect(status).toBe(0); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/testNamePatternSkipped.test.js b/e2e/__tests__/testNamePatternSkipped.test.js index 5bb7fbe23701..7dceeede0c81 100644 --- a/e2e/__tests__/testNamePatternSkipped.test.js +++ b/e2e/__tests__/testNamePatternSkipped.test.js @@ -6,10 +6,10 @@ * * @flow */ -'use strict'; import {extractSummary} from '../Utils'; import {json as runWithJson} from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; test('testNamePattern skipped', () => { const {stderr, status} = runWithJson('test-name-pattern-skipped', [ @@ -19,5 +19,5 @@ test('testNamePattern skipped', () => { const {summary} = extractSummary(stderr); expect(status).toBe(0); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/testRetries.test.js b/e2e/__tests__/testRetries.test.js index ed5f7504db89..0a726f5df8f1 100644 --- a/e2e/__tests__/testRetries.test.js +++ b/e2e/__tests__/testRetries.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import fs from 'fs'; import path from 'path'; diff --git a/e2e/__tests__/testTodo.test.js b/e2e/__tests__/testTodo.test.js index d6c24febbbee..aaedf2b9be23 100644 --- a/e2e/__tests__/testTodo.test.js +++ b/e2e/__tests__/testTodo.test.js @@ -7,37 +7,36 @@ * @flow */ -'use strict'; - import path from 'path'; import runJest from '../runJest'; import {extractSummary} from '../Utils'; +import {wrap} from 'jest-snapshot-serializer-raw'; const dir = path.resolve(__dirname, '../test-todo'); test('works with all statuses', () => { const result = runJest(dir, ['statuses.test.js']); expect(result.status).toBe(1); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); test('shows error messages when called with no arguments', () => { const result = runJest(dir, ['todoNoArgs.test.js']); expect(result.status).toBe(1); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); test('shows error messages when called with multiple arguments', () => { const result = runJest(dir, ['todoMultipleArgs.test.js']); expect(result.status).toBe(1); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); test('shows error messages when called with invalid argument', () => { const result = runJest(dir, ['todoNonString.test.js']); expect(result.status).toBe(1); const {rest} = extractSummary(result.stderr); - expect(rest).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/timeouts.test.js b/e2e/__tests__/timeouts.test.js index 9e75a41749ef..14a8f609d759 100644 --- a/e2e/__tests__/timeouts.test.js +++ b/e2e/__tests__/timeouts.test.js @@ -11,6 +11,7 @@ import path from 'path'; import {cleanup, extractSummary, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../timeouts'); @@ -36,7 +37,7 @@ test('exceeds the timeout', () => { expect(rest).toMatch( /(jest\.setTimeout|jasmine\.DEFAULT_TIMEOUT_INTERVAL|Exceeded timeout)/, ); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect(status).toBe(1); }); @@ -56,7 +57,7 @@ test('does not exceed the timeout', () => { const {stderr, status} = runJest(DIR, ['-w=1', '--ci=false']); const {rest, summary} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect(status).toBe(0); }); diff --git a/e2e/__tests__/timeoutsLegacy.test.js b/e2e/__tests__/timeoutsLegacy.test.js index f268d4838e5b..d5fe3e816f0f 100644 --- a/e2e/__tests__/timeoutsLegacy.test.js +++ b/e2e/__tests__/timeoutsLegacy.test.js @@ -12,6 +12,7 @@ import path from 'path'; import {cleanup, extractSummary, writeFiles} from '../Utils'; import runJest from '../runJest'; import {skipSuiteOnJestCircus} from '../../scripts/ConditionalTest'; +import {wrap} from 'jest-snapshot-serializer-raw'; /** * NOTE: This test should be removed once jest-circus is rolled out as a breaking change. @@ -43,7 +44,7 @@ test('exceeds the timeout set using jasmine.DEFAULT_TIMEOUT_INTERVAL', () => { expect(rest).toMatch( /(jest\.setTimeout|jasmine\.DEFAULT_TIMEOUT_INTERVAL|Exceeded timeout)/, ); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect(status).toBe(1); }); @@ -63,8 +64,8 @@ test('does not exceed the timeout using jasmine.DEFAULT_TIMEOUT_INTERVAL', () => const {stderr, status} = runJest(DIR, ['-w=1', '--ci=false']); const {rest, summary} = extractSummary(stderr); - expect(rest).toMatchSnapshot(); - expect(summary).toMatchSnapshot(); + expect(wrap(rest)).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect(status).toBe(0); }); @@ -85,6 +86,6 @@ test('can read and write jasmine.DEFAULT_TIMEOUT_INTERVAL', () => { const {stderr, status} = runJest(DIR, ['-w=1', '--ci=false']); const {summary} = extractSummary(stderr); - expect(summary).toMatchSnapshot(); + expect(wrap(summary)).toMatchSnapshot(); expect(status).toBe(0); }); diff --git a/e2e/__tests__/timerResetMocks.test.js b/e2e/__tests__/timerResetMocks.test.js index 8bda44603ce5..8b0a0ec4608d 100644 --- a/e2e/__tests__/timerResetMocks.test.js +++ b/e2e/__tests__/timerResetMocks.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/timerUseRealTimers.test.js b/e2e/__tests__/timerUseRealTimers.test.js index 0bf091b2bbb4..b1fe0f7bbe2d 100644 --- a/e2e/__tests__/timerUseRealTimers.test.js +++ b/e2e/__tests__/timerUseRealTimers.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/toMatchInlineSnapshot.test.js b/e2e/__tests__/toMatchInlineSnapshot.test.js index 3bd85ffedd34..41c7e42bc283 100644 --- a/e2e/__tests__/toMatchInlineSnapshot.test.js +++ b/e2e/__tests__/toMatchInlineSnapshot.test.js @@ -11,6 +11,7 @@ import fs from 'fs'; import path from 'path'; import {cleanup, makeTemplate, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../to-match-inline-snapshot'); const TESTS_DIR = path.resolve(DIR, '__tests__'); @@ -35,7 +36,7 @@ test('basic support', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot('initial write'); + expect(wrap(fileAfter)).toMatchSnapshot('initial write'); } { @@ -44,7 +45,7 @@ test('basic support', () => { expect(stderr).toMatch('Snapshots: 1 passed, 1 total'); expect(stderr).not.toMatch('1 snapshot written from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot('snapshot passed'); + expect(wrap(fileAfter)).toMatchSnapshot('snapshot passed'); } { @@ -55,7 +56,7 @@ test('basic support', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('Received value does not match stored snapshot'); expect(status).toBe(1); - expect(fileAfter).toMatchSnapshot('snapshot mismatch'); + expect(wrap(fileAfter)).toMatchSnapshot('snapshot mismatch'); } { @@ -68,7 +69,7 @@ test('basic support', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot updated from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot('snapshot updated'); + expect(wrap(fileAfter)).toMatchSnapshot('snapshot updated'); } }); @@ -85,7 +86,7 @@ test('handles property matchers', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot('initial write'); + expect(wrap(fileAfter)).toMatchSnapshot('initial write'); } { @@ -93,7 +94,7 @@ test('handles property matchers', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('Snapshots: 1 passed, 1 total'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot('snapshot passed'); + expect(wrap(fileAfter)).toMatchSnapshot('snapshot passed'); } { @@ -107,7 +108,7 @@ test('handles property matchers', () => { ); expect(stderr).toMatch('Snapshots: 1 failed, 1 total'); expect(status).toBe(1); - expect(fileAfter).toMatchSnapshot('snapshot failed'); + expect(wrap(fileAfter)).toMatchSnapshot('snapshot failed'); } { @@ -123,7 +124,7 @@ test('handles property matchers', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot updated from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot('snapshot updated'); + expect(wrap(fileAfter)).toMatchSnapshot('snapshot updated'); } }); @@ -146,7 +147,7 @@ test('removes obsolete external snapshots', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot('initial write'); + expect(wrap(fileAfter)).toMatchSnapshot('initial write'); expect(fs.existsSync(snapshotPath)).toEqual(true); } @@ -156,7 +157,7 @@ test('removes obsolete external snapshots', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('Snapshots: 1 obsolete, 1 written, 1 total'); expect(status).toBe(1); - expect(fileAfter).toMatchSnapshot('inline snapshot written'); + expect(wrap(fileAfter)).toMatchSnapshot('inline snapshot written'); expect(fs.existsSync(snapshotPath)).toEqual(true); } @@ -170,7 +171,7 @@ test('removes obsolete external snapshots', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('Snapshots: 1 file removed, 1 passed, 1 total'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot('external snapshot cleaned'); + expect(wrap(fileAfter)).toMatchSnapshot('external snapshot cleaned'); expect(fs.existsSync(snapshotPath)).toEqual(false); } }); @@ -189,7 +190,7 @@ test('supports async matchers', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('2 snapshots written from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot(); + expect(wrap(fileAfter)).toMatchSnapshot(); }); test('supports async tests', () => { @@ -206,7 +207,7 @@ test('supports async tests', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot(); + expect(wrap(fileAfter)).toMatchSnapshot(); }); test('writes snapshots with non-literals in expect(...)', () => { @@ -223,7 +224,7 @@ test('writes snapshots with non-literals in expect(...)', () => { const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); expect(status).toBe(0); - expect(fileAfter).toMatchSnapshot(); + expect(wrap(fileAfter)).toMatchSnapshot(); }); // issue: https://github.com/facebook/jest/issues/6702 diff --git a/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.js b/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.js index e2bb075cd961..75013e055a00 100644 --- a/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.js +++ b/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.js @@ -11,6 +11,7 @@ import path from 'path'; import fs from 'fs'; import {cleanup, makeTemplate, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve( __dirname, @@ -40,7 +41,7 @@ test('works fine when function throws error', () => { const {stderr, status} = runJest(DIR, ['-w=1', '--ci=false', filename]); const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); - expect(fileAfter).toMatchSnapshot('initial write'); + expect(wrap(fileAfter)).toMatchSnapshot('initial write'); expect(status).toBe(0); } }); @@ -66,7 +67,7 @@ test('updates existing snapshot', () => { ]); const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot updated from 1 test suite.'); - expect(fileAfter).toMatchSnapshot('updated snapshot'); + expect(wrap(fileAfter)).toMatchSnapshot('updated snapshot'); expect(status).toBe(0); } }); @@ -102,6 +103,6 @@ test('should support rejecting promises', () => { const {stderr, status} = runJest(DIR, ['-w=1', '--ci=false', filename]); const fileAfter = readFile(filename); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); - expect(fileAfter).toMatchSnapshot(); + expect(wrap(fileAfter)).toMatchSnapshot(); expect(status).toBe(0); }); diff --git a/e2e/__tests__/toThrowErrorMatchingSnapshot.test.js b/e2e/__tests__/toThrowErrorMatchingSnapshot.test.js index bfcebc9c20c3..626069f54857 100644 --- a/e2e/__tests__/toThrowErrorMatchingSnapshot.test.js +++ b/e2e/__tests__/toThrowErrorMatchingSnapshot.test.js @@ -11,6 +11,7 @@ import path from 'path'; import fs from 'fs'; import {cleanup, makeTemplate, writeFiles} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(__dirname, '../to-throw-error-matching-snapshot'); const TESTS_DIR = path.resolve(DIR, '__tests__'); @@ -99,7 +100,7 @@ test('should support rejecting promises', () => { ); expect(stderr).toMatch('1 snapshot written from 1 test suite.'); - expect(snapshot).toMatchSnapshot(); + expect(wrap(snapshot)).toMatchSnapshot(); expect(status).toBe(0); } }); diff --git a/e2e/__tests__/transform.test.js b/e2e/__tests__/transform.test.js index 56792bb98557..50dba3b10f26 100644 --- a/e2e/__tests__/transform.test.js +++ b/e2e/__tests__/transform.test.js @@ -17,6 +17,7 @@ import { } from '../Utils'; import runJest, {json as runWithJson} from '../runJest'; import os from 'os'; +import {wrap} from 'jest-snapshot-serializer-raw'; describe('babel-jest', () => { const dir = path.resolve(__dirname, '..', 'transform/babel-jest'); @@ -40,7 +41,7 @@ describe('babel-jest', () => { expect(stdout).not.toMatch('notCovered.js'); expect(stdout).not.toMatch('excludedFromCoverage.js'); // coverage result should not change - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); }); @@ -73,7 +74,7 @@ describe('no babel-jest', () => { expect(stdout).toMatch('covered.js'); expect(stdout).not.toMatch('excludedFromCoverage.js'); // coverage result should not change - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); }); @@ -98,7 +99,7 @@ describe('custom transformer', () => { stripAnsi: true, }); // coverage should be empty because there's no real instrumentation - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); expect(status).toBe(0); }); }); diff --git a/e2e/__tests__/transformLinkedModules.test.js b/e2e/__tests__/transformLinkedModules.test.js index 5444d507c8f0..3866b1411c35 100644 --- a/e2e/__tests__/transformLinkedModules.test.js +++ b/e2e/__tests__/transformLinkedModules.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import {json as runWithJson} from '../runJest'; it('should transform linked modules', () => { diff --git a/e2e/__tests__/typescriptCoverage.test.js b/e2e/__tests__/typescriptCoverage.test.js index d7f31e2d66d4..5c13681302fe 100644 --- a/e2e/__tests__/typescriptCoverage.test.js +++ b/e2e/__tests__/typescriptCoverage.test.js @@ -10,6 +10,7 @@ import path from 'path'; import {run} from '../Utils'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; it('instruments and collects coverage for typescript files', () => { const dir = path.resolve(__dirname, '../typescript-coverage'); @@ -17,5 +18,5 @@ it('instruments and collects coverage for typescript files', () => { const {stdout} = runJest(dir, ['--coverage', '--no-cache'], { stripAnsi: true, }); - expect(stdout).toMatchSnapshot(); + expect(wrap(stdout)).toMatchSnapshot(); }); diff --git a/e2e/__tests__/unexpectedToken.test.js b/e2e/__tests__/unexpectedToken.test.js index 38980ab94358..7bf053296c97 100644 --- a/e2e/__tests__/unexpectedToken.test.js +++ b/e2e/__tests__/unexpectedToken.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; import os from 'os'; import path from 'path'; diff --git a/e2e/__tests__/useStderr.test.js b/e2e/__tests__/useStderr.test.js index e7e217c7f027..d741fe5317da 100644 --- a/e2e/__tests__/useStderr.test.js +++ b/e2e/__tests__/useStderr.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import runJest from '../runJest'; import os from 'os'; import path from 'path'; diff --git a/e2e/__tests__/verbose.test.js b/e2e/__tests__/verbose.test.js index a1b37733beeb..5ad4d428b312 100644 --- a/e2e/__tests__/verbose.test.js +++ b/e2e/__tests__/verbose.test.js @@ -6,7 +6,6 @@ * * @flow */ -'use strict'; import runJest from '../runJest'; diff --git a/e2e/__tests__/version.test.js b/e2e/__tests__/version.test.js index 9150d2a9425b..5fbe936a7464 100644 --- a/e2e/__tests__/version.test.js +++ b/e2e/__tests__/version.test.js @@ -7,8 +7,6 @@ * @flow */ -'use strict'; - import path from 'path'; import os from 'os'; import {cleanup, writeFiles} from '../Utils'; diff --git a/e2e/__tests__/watchModeOnlyFailed.test.js b/e2e/__tests__/watchModeOnlyFailed.test.js index 09e50945c8ad..fea5a4165872 100644 --- a/e2e/__tests__/watchModeOnlyFailed.test.js +++ b/e2e/__tests__/watchModeOnlyFailed.test.js @@ -6,12 +6,12 @@ * * @flow */ -'use strict'; import path from 'path'; import {cleanup, extractSummaries, writeFiles} from '../Utils'; import os from 'os'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(os.tmpdir(), 'watch-mode-only-failed'); const pluginPath = path.resolve(__dirname, '../MockStdinWatchPlugin'); @@ -50,8 +50,8 @@ test('can press "f" to run only failed tests', () => { expect(results).toHaveLength(2); results.forEach(({rest, summary}) => { - expect(rest).toMatchSnapshot('test results'); - expect(summary).toMatchSnapshot('test summary'); + expect(wrap(rest)).toMatchSnapshot('test results'); + expect(wrap(summary)).toMatchSnapshot('test summary'); }); expect(status).toBe(0); }); diff --git a/e2e/__tests__/watchModePatterns.test.js b/e2e/__tests__/watchModePatterns.test.js index 66a3cfb1442a..d21e26cda6e6 100644 --- a/e2e/__tests__/watchModePatterns.test.js +++ b/e2e/__tests__/watchModePatterns.test.js @@ -6,12 +6,12 @@ * * @flow */ -'use strict'; import path from 'path'; import {cleanup, extractSummaries, writeFiles} from '../Utils'; import os from 'os'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(os.tmpdir(), 'watch-mode-patterns'); const pluginPath = path.resolve(__dirname, '../MockStdinWatchPlugin'); @@ -53,11 +53,12 @@ test('can press "p" to filter by file name', () => { ]); const results = extractSummaries(stderr); + // contains ansi characters, should not use `wrap` expect(stdout).toMatchSnapshot(); expect(results).toHaveLength(2); results.forEach(({rest, summary}) => { - expect(rest).toMatchSnapshot('test results'); - expect(summary).toMatchSnapshot('test summary'); + expect(wrap(rest)).toMatchSnapshot('test results'); + expect(wrap(summary)).toMatchSnapshot('test summary'); }); expect(status).toBe(0); }); @@ -72,11 +73,12 @@ test('can press "t" to filter by test name', () => { ]); const results = extractSummaries(stderr); + // contains ansi characters, should not use `wrap` expect(stdout).toMatchSnapshot(); expect(results).toHaveLength(2); results.forEach(({rest, summary}) => { - expect(rest).toMatchSnapshot('test results'); - expect(summary).toMatchSnapshot('test summary'); + expect(wrap(rest)).toMatchSnapshot('test results'); + expect(wrap(summary)).toMatchSnapshot('test summary'); }); expect(status).toBe(0); }); diff --git a/e2e/__tests__/watchModeUpdateSnapshot.test.js b/e2e/__tests__/watchModeUpdateSnapshot.test.js index 872a9e2c13a7..21bd3ba32b27 100644 --- a/e2e/__tests__/watchModeUpdateSnapshot.test.js +++ b/e2e/__tests__/watchModeUpdateSnapshot.test.js @@ -6,12 +6,12 @@ * * @flow */ -'use strict'; import path from 'path'; import {cleanup, extractSummaries, writeFiles} from '../Utils'; import os from 'os'; import runJest from '../runJest'; +import {wrap} from 'jest-snapshot-serializer-raw'; const DIR = path.resolve(os.tmpdir(), 'watch-mode-update-snapshot'); const pluginPath = path.resolve(__dirname, '../MockStdinWatchPlugin'); @@ -50,8 +50,8 @@ test('can press "u" to update snapshots', () => { const results = extractSummaries(stderr); expect(results).toHaveLength(2); results.forEach(({rest, summary}) => { - expect(rest).toMatchSnapshot('test results'); - expect(summary).toMatchSnapshot('test summary'); + expect(wrap(rest)).toMatchSnapshot('test results'); + expect(wrap(summary)).toMatchSnapshot('test summary'); }); expect(status).toBe(0); }); diff --git a/e2e/async-regenerator/__tests__/test.js b/e2e/async-regenerator/__tests__/test.js new file mode 100644 index 000000000000..16444c6fc0b5 --- /dev/null +++ b/e2e/async-regenerator/__tests__/test.js @@ -0,0 +1,6 @@ +// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + +test('dummy test', async () => { + const value = await Promise.resolve(1); + expect(value).toBe(1); +}); diff --git a/e2e/async-regenerator/babel.config.js b/e2e/async-regenerator/babel.config.js new file mode 100644 index 000000000000..756b4d62f681 --- /dev/null +++ b/e2e/async-regenerator/babel.config.js @@ -0,0 +1,9 @@ +// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + +module.exports = { + plugins: [ + '@babel/plugin-transform-regenerator', + '@babel/plugin-transform-runtime', + ], + sourceType: 'script', +}; diff --git a/e2e/async-regenerator/package.json b/e2e/async-regenerator/package.json new file mode 100644 index 000000000000..5b23322e8e49 --- /dev/null +++ b/e2e/async-regenerator/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "@babel/core": "^7.2.2", + "@babel/polyfill": "^7.2.5", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.2.0" + }, + "jest": { + "testEnvironment": "node" + } +} diff --git a/e2e/async-regenerator/yarn.lock b/e2e/async-regenerator/yarn.lock new file mode 100644 index 000000000000..3d98378fa068 --- /dev/null +++ b/e2e/async-regenerator/yarn.lock @@ -0,0 +1,317 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" + integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.2" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.2.2" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" + integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== + dependencies: + "@babel/types" "^7.2.2" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" + integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.2.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.2.2", "@babel/parser@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" + integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-runtime@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" + integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/polyfill@^7.2.5": + version "7.2.5" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d" + integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug== + dependencies: + core-js "^2.5.7" + regenerator-runtime "^0.12.0" + +"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + +"@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" + integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +core-js@^2.5.7: + version "2.6.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.2.tgz#267988d7268323b349e20b4588211655f0e83944" + integrity sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g== + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +globals@^11.1.0: + version "11.10.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" + integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + +lodash@^4.17.10: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== + dependencies: + private "^0.1.6" + +resolve@^1.3.2, resolve@^1.8.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" + integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ== + dependencies: + path-parse "^1.0.6" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +semver@^5.4.1, semver@^5.5.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= diff --git a/e2e/custom-resolver/__tests__/customResolver.test.js b/e2e/custom-resolver/__tests__/customResolver.test.js index 9e6911f35f62..12e829730062 100644 --- a/e2e/custom-resolver/__tests__/customResolver.test.js +++ b/e2e/custom-resolver/__tests__/customResolver.test.js @@ -10,10 +10,6 @@ test('should use the custom resolver', () => { require('foo'); }); -test('should have regenerator injected', () => { - expect(global.fakeRegeneratorInjected).toEqual(true); -}); - test('should work with automock', () => { jest.mock('foo'); diff --git a/e2e/custom-resolver/fakeRegenerator.js b/e2e/custom-resolver/fakeRegenerator.js deleted file mode 100644 index 50aa61798eeb..000000000000 --- a/e2e/custom-resolver/fakeRegenerator.js +++ /dev/null @@ -1,3 +0,0 @@ -// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - -global.fakeRegeneratorInjected = true; diff --git a/e2e/custom-resolver/resolver.js b/e2e/custom-resolver/resolver.js index f854ce959e6b..4db6cbf41c39 100644 --- a/e2e/custom-resolver/resolver.js +++ b/e2e/custom-resolver/resolver.js @@ -4,11 +4,7 @@ const { default: defaultResolver, } = require('jest-resolve/build/defaultResolver'); -const exportedModules = new Map([ - ['foo', 'foo'], - ['bar', 'bar'], - ['regenerator-runtime/runtime', 'fakeRegenerator'], -]); +const exportedModules = new Map([['foo', 'foo'], ['bar', 'bar']]); module.exports = (name, options) => { const resolution = exportedModules.get(name); diff --git a/e2e/native-async-mock/babel.config.js b/e2e/native-async-mock/babel.config.js deleted file mode 100644 index f3e889651b5f..000000000000 --- a/e2e/native-async-mock/babel.config.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - -module.exports = { - plugins: ['@babel/plugin-transform-async-to-generator'], - presets: ['@babel/preset-env'], -}; diff --git a/e2e/native-async-mock/package.json b/e2e/native-async-mock/package.json index d64a72503dd3..148788b25446 100644 --- a/e2e/native-async-mock/package.json +++ b/e2e/native-async-mock/package.json @@ -1,10 +1,5 @@ { "jest": { "testEnvironment": "node" - }, - "dependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.0.0", - "@babel/preset-env": "^7.0.0" } } diff --git a/e2e/native-async-mock/yarn.lock b/e2e/native-async-mock/yarn.lock index 6c1c2e1b8cc8..fb57ccd13afb 100644 --- a/e2e/native-async-mock/yarn.lock +++ b/e2e/native-async-mock/yarn.lock @@ -2,835 +2,3 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/core@^7.0.0": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.2.tgz#f8d2a9ceb6832887329a7b60f9d035791400ba4e" - integrity sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.1.2" - "@babel/helpers" "^7.1.2" - "@babel/parser" "^7.1.2" - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.1.2" - convert-source-map "^1.1.0" - debug "^3.1.0" - json5 "^0.5.0" - lodash "^4.17.10" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.1.2", "@babel/generator@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.3.tgz#2103ec9c42d9bdad9190a6ad5ff2d456fd7b8673" - integrity sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ== - dependencies: - "@babel/types" "^7.1.3" - jsesc "^2.5.1" - lodash "^4.17.10" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-call-delegate@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" - integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== - dependencies: - "@babel/helper-hoist-variables" "^7.0.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-define-map@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" - integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.0.0" - lodash "^4.17.10" - -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== - dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-hoist-variables@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" - integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-module-transforms@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" - integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - lodash "^4.17.10" - -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== - -"@babel/helper-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" - integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== - dependencies: - lodash "^4.17.10" - -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-replace-supers@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" - integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== - dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-split-export-declaration@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" - integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-wrap-function@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" - integrity sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helpers@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.2.tgz#ab752e8c35ef7d39987df4e8586c63b8846234b5" - integrity sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA== - dependencies: - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.1.2" - -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.2", "@babel/parser@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77" - integrity sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w== - -"@babel/plugin-proposal-async-generator-functions@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce" - integrity sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.0.0" - -"@babel/plugin-proposal-json-strings@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" - integrity sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.0.0" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" - integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" - integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" - integrity sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.2.0" - -"@babel/plugin-syntax-async-generators@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" - integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-json-strings@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" - integrity sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" - integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" - integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-arrow-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" - integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811" - integrity sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - -"@babel/plugin-transform-block-scoped-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" - integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-block-scoping@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" - integrity sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.10" - -"@babel/plugin-transform-classes@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249" - integrity sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.1.0" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" - integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-destructuring@^7.0.0": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz#e69ff50ca01fac6cb72863c544e516c2b193012f" - integrity sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-dotall-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" - integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.1.3" - -"@babel/plugin-transform-duplicate-keys@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" - integrity sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-exponentiation-operator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73" - integrity sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-for-of@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" - integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz#29c5550d5c46208e7f730516d41eeddd4affadbb" - integrity sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" - integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-amd@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz#f9e0a7072c12e296079b5a59f408ff5b97bf86a8" - integrity sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-commonjs@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c" - integrity sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - -"@babel/plugin-transform-modules-systemjs@^7.0.0": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz#2119a3e3db612fd74a19d88652efbfe9613a5db0" - integrity sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw== - dependencies: - "@babel/helper-hoist-variables" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-umd@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz#a29a7d85d6f28c3561c33964442257cc6a21f2a8" - integrity sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-new-target@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" - integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-object-super@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz#b1ae194a054b826d8d4ba7ca91486d4ada0f91bb" - integrity sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - -"@babel/plugin-transform-parameters@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz#44f492f9d618c9124026e62301c296bf606a7aed" - integrity sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw== - dependencies: - "@babel/helper-call-delegate" "^7.1.0" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-regenerator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" - integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== - dependencies: - regenerator-transform "^0.13.3" - -"@babel/plugin-transform-shorthand-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" - integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" - integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-sticky-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" - integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - -"@babel/plugin-transform-template-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" - integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typeof-symbol@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" - integrity sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-unicode-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" - integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.1.3" - -"@babel/preset-env@^7.0.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.0.tgz#e67ea5b0441cfeab1d6f41e9b5c79798800e8d11" - integrity sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.1.0" - "@babel/plugin-proposal-json-strings" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" - "@babel/plugin-syntax-async-generators" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.1.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.1.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-dotall-regex" "^7.0.0" - "@babel/plugin-transform-duplicate-keys" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.1.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.1.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-amd" "^7.1.0" - "@babel/plugin-transform-modules-commonjs" "^7.1.0" - "@babel/plugin-transform-modules-systemjs" "^7.0.0" - "@babel/plugin-transform-modules-umd" "^7.1.0" - "@babel/plugin-transform-new-target" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.1.0" - "@babel/plugin-transform-parameters" "^7.1.0" - "@babel/plugin-transform-regenerator" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typeof-symbol" "^7.0.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - browserslist "^4.1.0" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.3.0" - -"@babel/template@^7.1.0", "@babel/template@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" - integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.1.2" - "@babel/types" "^7.1.2" - -"@babel/traverse@^7.1.0": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.4.tgz#f4f83b93d649b4b2c91121a9087fa2fa949ec2b4" - integrity sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.1.3" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.1.3" - "@babel/types" "^7.1.3" - debug "^3.1.0" - globals "^11.1.0" - lodash "^4.17.10" - -"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d" - integrity sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA== - dependencies: - esutils "^2.0.2" - lodash "^4.17.10" - to-fast-properties "^2.0.0" - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -browserslist@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.2.1.tgz#257a24c879d1cd4016348eee5c25de683260b21d" - integrity sha512-1oO0c7Zhejwd+LXihS89WqtKionSbz298rJZKJgfrHIZhrV8AC15gw553VcB0lcEugja7IhWD7iAlrsamfYVPA== - dependencies: - caniuse-lite "^1.0.30000890" - electron-to-chromium "^1.3.79" - node-releases "^1.0.0-alpha.14" - -caniuse-lite@^1.0.30000890: - version "1.0.30000892" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000892.tgz#344d2b51ee3ff5977537da4aa449c90eec40b759" - integrity sha512-X9rxMaWZNbJB5qjkDqPtNv/yfViTeUL6ILk0QJNxLV3OhKC5Acn5vxsuUvllR6B48mog8lmS+whwHq/QIYSL9w== - -chalk@^2.0.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -convert-source-map@^1.1.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== - dependencies: - safe-buffer "~5.1.1" - -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -electron-to-chromium@^1.3.79: - version "1.3.79" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.79.tgz#774718f06284a4bf8f578ac67e74508fe659f13a" - integrity sha512-LQdY3j4PxuUl6xfxiFruTSlCniTrTrzAd8/HfsLEMi0PUpaQ0Iy+Pr4N4VllDYjs0Hyu2lkTbvzqlG+PX9NsNw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - -globals@^11.1.0: - version "11.8.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d" - integrity sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -js-levenshtein@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" - integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" - integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -lodash@^4.17.10: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -node-releases@^1.0.0-alpha.14: - version "1.0.0-alpha.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.0-alpha.14.tgz#da9e2780add4bbb59ad890af9e2018a1d9c0034b" - integrity sha512-G8nnF9cP9QPP/jUmYWw/uUUhumHmkm+X/EarCugYFjYm2uXRMFeOD6CVT3RLdoyCvDUNy51nirGfUItKWs/S1g== - dependencies: - semver "^5.3.0" - -path-parse@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -private@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -regenerate-unicode-properties@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" - integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-transform@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" - integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== - dependencies: - private "^0.1.6" - -regexpu-core@^4.1.3, regexpu-core@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" - integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^7.0.0" - regjsgen "^0.4.0" - regjsparser "^0.3.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.0.2" - -regjsgen@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" - integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== - -regjsparser@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" - integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== - dependencies: - jsesc "~0.5.0" - -resolve@^1.3.2: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== - dependencies: - path-parse "^1.0.5" - -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -semver@^5.3.0, semver@^5.4.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" - integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" - integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== diff --git a/e2e/runJest.js b/e2e/runJest.js index 3c49bfc8b383..d1765d1b140d 100644 --- a/e2e/runJest.js +++ b/e2e/runJest.js @@ -12,7 +12,7 @@ import path from 'path'; import fs from 'fs'; import execa, {sync as spawnSync} from 'execa'; import {Writable} from 'readable-stream'; -const stripAnsi = require('strip-ansi'); +import stripAnsi from 'strip-ansi'; import {normalizeIcons} from './Utils'; const JEST_PATH = path.resolve(__dirname, '../packages/jest-cli/bin/jest.js'); diff --git a/examples/async/.babelrc.js b/examples/async/.babelrc.js index 0cf578eefca3..ca27cf6fd2e1 100644 --- a/examples/async/.babelrc.js +++ b/examples/async/.babelrc.js @@ -1,11 +1,4 @@ module.exports = { - plugins: [ - [ - '@babel/plugin-transform-runtime', - { - regenerator: true, - }, - ], - ], - presets: ['@babel/preset-env'], + // See https://babeljs.io/docs/en/babel-preset-env#targets + presets: [['@babel/preset-env', {targets: {node: 'current'}}]], }; diff --git a/examples/async/package.json b/examples/async/package.json index a5c9c486884c..9a4169870dea 100644 --- a/examples/async/package.json +++ b/examples/async/package.json @@ -3,9 +3,8 @@ "version": "0.0.0", "name": "example-async", "devDependencies": { - "@babel/plugin-transform-runtime": "*", + "@babel/core": "*", "@babel/preset-env": "*", - "@babel/runtime": "*", "babel-jest": "*", "jest": "*" }, diff --git a/examples/automatic-mocks/package.json b/examples/automatic-mocks/package.json index 8f09dd25bbc9..aefcce3021ea 100644 --- a/examples/automatic-mocks/package.json +++ b/examples/automatic-mocks/package.json @@ -3,7 +3,9 @@ "version": "0.0.0", "name": "example-automatic-mocks", "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", + "babel-jest": "*", "jest": "*" }, "scripts": { diff --git a/examples/enzyme/package.json b/examples/enzyme/package.json index 1725803b4cb5..ca722a03a6ec 100644 --- a/examples/enzyme/package.json +++ b/examples/enzyme/package.json @@ -7,6 +7,7 @@ "react-dom": "^16.4.0" }, "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", "@babel/preset-react": "*", "babel-jest": "*", diff --git a/examples/getting-started/package.json b/examples/getting-started/package.json index 7a7d599387f7..2c430deeb0d3 100644 --- a/examples/getting-started/package.json +++ b/examples/getting-started/package.json @@ -3,7 +3,9 @@ "version": "0.0.0", "name": "example-getting-started", "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", + "babel-jest": "*", "jest": "*" }, "scripts": { diff --git a/examples/jquery/package.json b/examples/jquery/package.json index 3ba56993288b..ed417ac49138 100644 --- a/examples/jquery/package.json +++ b/examples/jquery/package.json @@ -3,7 +3,9 @@ "version": "0.0.0", "name": "example-jquery", "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", + "babel-jest": "*", "jest": "*" }, "dependencies": { diff --git a/examples/manual-mocks/package.json b/examples/manual-mocks/package.json index 10c6f124d330..940a3c4117f7 100644 --- a/examples/manual-mocks/package.json +++ b/examples/manual-mocks/package.json @@ -3,7 +3,9 @@ "version": "0.0.0", "name": "example-manual-mocks", "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", + "babel-jest": "*", "jest": "*" }, "scripts": { diff --git a/examples/module-mock/package.json b/examples/module-mock/package.json index e923c6598aec..fa5b980256af 100644 --- a/examples/module-mock/package.json +++ b/examples/module-mock/package.json @@ -3,7 +3,9 @@ "version": "0.0.0", "name": "example-manual-mock", "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", + "babel-jest": "*", "jest": "*" }, "scripts": { diff --git a/examples/react-native/package.json b/examples/react-native/package.json index 61181b572085..eaecaeb3f8ea 100644 --- a/examples/react-native/package.json +++ b/examples/react-native/package.json @@ -11,6 +11,7 @@ "react-native": "0.57.8" }, "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", "babel-jest": "*", "jest": "*", diff --git a/examples/react-testing-library/package.json b/examples/react-testing-library/package.json index a94c15b03fa8..8c2863e25e64 100644 --- a/examples/react-testing-library/package.json +++ b/examples/react-testing-library/package.json @@ -7,6 +7,7 @@ "react-dom": "^16.7.0" }, "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", "@babel/preset-react": "*", "babel-jest": "*", diff --git a/examples/react/package.json b/examples/react/package.json index 294ad5ca864a..d0a951ffaf21 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -7,6 +7,7 @@ "react-dom": "^16.4.0" }, "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", "@babel/preset-react": "*", "babel-jest": "*", diff --git a/examples/snapshot/package.json b/examples/snapshot/package.json index 88af079bfe9d..62c3620fc6ba 100644 --- a/examples/snapshot/package.json +++ b/examples/snapshot/package.json @@ -6,12 +6,12 @@ "react": "^16.4.0" }, "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", "@babel/preset-react": "*", "babel-jest": "*", "jest": "*", - "react-test-renderer": "*", - "regenerator-runtime": "*" + "react-test-renderer": "*" }, "scripts": { "test": "jest" diff --git a/examples/timer/package.json b/examples/timer/package.json index 4e7050be2daf..cf1b13617e94 100644 --- a/examples/timer/package.json +++ b/examples/timer/package.json @@ -3,7 +3,9 @@ "version": "0.0.0", "name": "example-timer", "devDependencies": { + "@babel/core": "*", "@babel/preset-env": "*", + "babel-jest": "*", "jest": "*" }, "scripts": { diff --git a/examples/typescript/package.json b/examples/typescript/package.json index 8f1e3978696a..35fe2cdffbfa 100644 --- a/examples/typescript/package.json +++ b/examples/typescript/package.json @@ -8,9 +8,11 @@ "typescript": "^3.0.0" }, "devDependencies": { + "@babel/core": "*", "@babel/preset-typescript": "*", "@babel/preset-react": "*", "@types/jest": "^23.1.1", + "babel-jest": "*", "jest": "*" }, "scripts": { diff --git a/jest.config.js b/jest.config.js index e1f673d6c471..60282c23ef0a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -26,6 +26,7 @@ module.exports = { setupFilesAfterEnv: ['/testSetupFile.js'], snapshotSerializers: [ '/packages/pretty-format/build/plugins/ConvertAnsi.js', + 'jest-snapshot-serializer-raw', ], testEnvironment: './packages/jest-environment-node', testPathIgnorePatterns: [ diff --git a/karma.conf.js b/karma.conf.js index d0cde3e7c381..61e032d44fa7 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -9,9 +9,17 @@ module.exports = config => { config.set({ browsers: ['ChromeHeadless'], files: ['e2e/browser-support/browserTest.js'], - frameworks: ['mocha', 'browserify'], + frameworks: ['mocha'], preprocessors: { - 'e2e/browser-support/browserTest.js': ['browserify'], + 'e2e/browser-support/browserTest.js': ['webpack'], + }, + webpack: { + mode: 'development', + }, + webpackMiddleware: { + // webpack-dev-middleware configuration + // i. e. + stats: 'errors-only', }, }); }; diff --git a/package.json b/package.json index fb99a422887b..f9786c6a29d2 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "ansi-regex": "^4.0.0", "ansi-styles": "^3.2.0", "babel-eslint": "^9.0.0", - "browserify": "^16.1.0", + "babel-loader": "^8.0.5", + "camelcase": "^5.0.0", "chalk": "^2.0.1", "codecov": "^3.0.0", "debug": "^4.0.1", @@ -35,14 +36,15 @@ "jasmine-reporters": "^2.2.0", "jest-junit": "^6.0.1", "jest-silent-reporter": "^0.1.1", + "jest-snapshot-serializer-raw": "^1.1.0", "jquery": "^3.2.1", "karma": "^3.1.4", - "karma-browserify": "^6.0.0", "karma-chrome-launcher": "^2.1.1", "karma-mocha": "^1.3.0", + "karma-webpack": "4.0.0-rc.5", "left-pad": "^1.1.1", "lerna": "3.10.5", - "micromatch": "^2.3.11", + "micromatch": "^3.1.10", "mkdirp": "^0.5.1", "mocha": "^5.0.1", "mock-fs": "^4.4.1", @@ -51,22 +53,13 @@ "progress": "^2.0.0", "promise": "^8.0.2", "readable-stream": "^3.0.3", - "regenerator-runtime": "^0.12.1", "resolve": "^1.4.0", "rimraf": "^2.6.2", - "rollup": "^1.1.0", - "rollup-plugin-babel": "^4.3.0", - "rollup-plugin-commonjs": "^9.1.8", - "rollup-plugin-flow": "^1.1.1", - "rollup-plugin-json": "^3.1.0", - "rollup-plugin-node-builtins": "^2.1.1", - "rollup-plugin-node-globals": "^1.4.0", - "rollup-plugin-node-resolve": "^4.0.0", "slash": "^2.0.0", "string-length": "^2.0.0", "strip-ansi": "^5.0.0", "typescript": "^3.0.3", - "watchify": "^3.9.0" + "webpack": "^4.28.4" }, "scripts": { "build-clean": "rm -rf ./packages/*/build ./packages/*/build-es5", @@ -79,7 +72,7 @@ "lint": "eslint . --cache --report-unused-disable-directives --ext js,md", "lint-es5-build": "eslint --no-eslintrc --no-ignore --env=browser packages/*/build-es5", "lint:md": "yarn --silent lint:md:ci --fix", - "lint:md:ci": "prettylint '**/*.md' --ignore-path .gitignore", + "lint:md:ci": "prettylint '**/*.{md,yml,yaml}' --ignore-path .gitignore", "postinstall": "opencollective postinstall && yarn build", "publish": "yarn build-clean && yarn build && lerna publish --silent", "test-ci-es5-build-in-browser": "karma start --single-run", diff --git a/packages/diff-sequences/package.json b/packages/diff-sequences/package.json index d499f0de5684..19370970cb78 100644 --- a/packages/diff-sequences/package.json +++ b/packages/diff-sequences/package.json @@ -18,5 +18,12 @@ "engines": { "node": ">= 6" }, - "main": "build/index.js" + "main": "build/index.js", + "scripts": { + "perf": "node --expose-gc perf/index.js" + }, + "devDependencies": { + "benchmark": "^2.1.4", + "diff": "^4.0.1" + } } diff --git a/packages/diff-sequences/perf/example.md b/packages/diff-sequences/perf/example.md new file mode 100644 index 000000000000..663f25de078f --- /dev/null +++ b/packages/diff-sequences/perf/example.md @@ -0,0 +1,48 @@ +## Benchmark time for `diff-sequences` versus `diff` + +A ratio less than 1.0 means `diff-sequences` is faster. + +### n = 20 + +| name | % | ratio | improved | rme | baseline | rme | +| :----- | ---: | :----- | :-------- | ----: | :-------- | ----: | +| delete | 20% | 0.1824 | 3.0639e-6 | 1.11% | 1.6795e-5 | 0.78% | +| insert | 20% | 0.1367 | 2.5786e-6 | 0.75% | 1.8866e-5 | 0.85% | +| delete | 40% | 0.1015 | 3.0534e-6 | 1.00% | 3.0090e-5 | 0.70% | +| insert | 40% | 0.0791 | 2.6722e-6 | 0.61% | 3.3791e-5 | 0.56% | +| delete | 80% | 0.0410 | 2.8870e-6 | 0.93% | 7.0411e-5 | 0.72% | +| insert | 80% | 0.0371 | 2.5786e-6 | 0.83% | 6.9431e-5 | 0.62% | +| change | 10% | 0.1504 | 2.8703e-6 | 0.71% | 1.9087e-5 | 0.83% | +| change | 20% | 0.1706 | 3.2637e-6 | 0.78% | 1.9127e-5 | 0.62% | +| change | 50% | 0.0944 | 1.2012e-5 | 0.55% | 1.2724e-4 | 0.76% | +| change | 100% | 0.0522 | 1.5422e-5 | 0.61% | 2.9566e-4 | 0.66% | + +### n = 200 + +| name | % | ratio | improved | rme | baseline | rme | +| :----- | ---: | :----- | :-------- | ----: | :-------- | ----: | +| delete | 20% | 0.1524 | 7.2866e-5 | 0.75% | 4.7797e-4 | 0.80% | +| insert | 20% | 0.1226 | 6.1561e-5 | 0.58% | 5.0198e-4 | 0.66% | +| delete | 40% | 0.1118 | 1.5674e-4 | 0.67% | 1.4020e-3 | 0.58% | +| insert | 40% | 0.0894 | 1.2906e-4 | 0.64% | 1.4435e-3 | 0.53% | +| delete | 80% | 0.0796 | 3.0119e-4 | 0.58% | 3.7852e-3 | 0.52% | +| insert | 80% | 0.0734 | 2.4713e-4 | 0.67% | 3.3653e-3 | 0.54% | +| change | 10% | 0.1572 | 7.2965e-5 | 0.48% | 4.6426e-4 | 0.73% | +| change | 20% | 0.1446 | 7.0056e-5 | 0.69% | 4.8456e-4 | 0.53% | +| change | 50% | 0.0764 | 6.5638e-4 | 0.67% | 8.5946e-3 | 0.70% | +| change | 100% | 0.0525 | 1.1160e-3 | 0.51% | 2.1249e-2 | 0.63% | + +### n = 2000 + +| name | % | ratio | improved | rme | baseline | rme | +| :----- | ---: | :----- | :-------- | ----: | :-------- | ----: | +| delete | 20% | 0.0669 | 3.4073e-3 | 0.54% | 5.0922e-2 | 0.54% | +| insert | 20% | 0.0588 | 2.8273e-3 | 0.51% | 4.8111e-2 | 0.46% | +| delete | 40% | 0.0517 | 1.1048e-2 | 0.52% | 2.1367e-1 | 0.47% | +| insert | 40% | 0.0460 | 9.1469e-3 | 0.37% | 1.9878e-1 | 0.26% | +| delete | 80% | 0.0563 | 2.7426e-2 | 0.56% | 4.8674e-1 | 0.36% | +| insert | 80% | 0.0506 | 2.2208e-2 | 0.35% | 4.3888e-1 | 0.47% | +| change | 10% | 0.0716 | 3.1267e-3 | 1.21% | 4.3652e-2 | 0.56% | +| change | 20% | 0.0621 | 3.0197e-3 | 0.72% | 4.8652e-2 | 0.45% | +| change | 50% | 0.0083 | 5.4250e-2 | 0.62% | 6.5595e+0 | 3.60% | +| change | 100% | 0.0493 | 1.0534e-1 | 0.71% | 2.1362e+0 | 0.21% | diff --git a/packages/diff-sequences/perf/index.js b/packages/diff-sequences/perf/index.js new file mode 100644 index 000000000000..bd0af5584b46 --- /dev/null +++ b/packages/diff-sequences/perf/index.js @@ -0,0 +1,155 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// Make sure to run node with --expose-gc option! + +// The times are reliable if about 1% relative mean error if you run it: + +// * immediately after restart +// * with 100% battery charge +// * not connected to network + +/* eslint import/no-extraneous-dependencies: "off" */ + +const Benchmark = require('benchmark'); + +const diffBaseline = require('diff').diffLines; +const diffImproved = require('../build/index.js').default; + +const testBaseline = (a, b) => { + const benchmark = new Benchmark({ + fn() { + diffBaseline(a, b); + }, + name: 'baseline', + onCycle() { + global.gc(); // after run cycle + }, + onStart() { + global.gc(); // when benchmark starts + }, + }); + + benchmark.run({async: false}); + + return benchmark.stats; +}; + +const testImproved = function(a, b) { + const benchmark = new Benchmark({ + fn() { + // Split string arguments to make fair comparison with baseline. + const aItems = a.split('\n'); + const bItems = b.split('\n'); + + const isCommon = (aIndex, bIndex) => aItems[aIndex] === bItems[bIndex]; + + // This callback obviously does less than baseline `diff` package, + // but avoiding double work and memory churn is the goal. + // For example, `jest-diff` has had to split strings that `diff` joins. + const foundSubsequence = () => {}; + + diffImproved(aItems.length, bItems.length, isCommon, foundSubsequence); + }, + name: 'improved', + onCycle() { + global.gc(); // after run cycle + }, + onStart() { + global.gc(); // when benchmark starts + }, + }); + + benchmark.run({async: false}); + + return benchmark.stats; +}; + +const writeHeading2 = () => { + console.log('## Benchmark time for `diff-sequences` versus `diff`\n'); + console.log('A ratio less than 1.0 means `diff-sequences` is faster.'); +}; + +const writeHeading3 = n => { + console.log(`\n### n = ${n}\n`); + console.log('| name | % | ratio | improved | rme | baseline | rme |'); + console.log('| :--- | ---: | :--- | :--- | ---: | :--- | ---: |'); +}; + +const writeRow = (name, percent, statsImproved, statsBaseline) => { + const {mean: meanImproved, rme: rmeImproved} = statsImproved; + const {mean: meanBaseline, rme: rmeBaseline} = statsBaseline; + const ratio = meanImproved / meanBaseline; + + console.log( + `| ${name} | ${percent}% | ${ratio.toFixed( + 4, + )} | ${meanImproved.toExponential(4)} | ${rmeImproved.toFixed( + 2, + )}% | ${meanBaseline.toExponential(4)} | ${rmeBaseline.toFixed(2)}% |`, + ); +}; + +const testDeleteInsert = (tenths, more, less) => { + // For improved `diff-sequences` package, delete is often slower than insert. + const statsDeleteImproved = testImproved(more, less); + const statsDeleteBaseline = testBaseline(more, less); + writeRow('delete', tenths * 10, statsDeleteImproved, statsDeleteBaseline); + + // For baseline `diff` package, many insertions is serious perf problem. + // However, the benchmark package cannot accurately measure for large n. + const statsInsertBaseline = testBaseline(less, more); + const statsInsertImproved = testImproved(less, more); + writeRow('insert', tenths * 10, statsInsertImproved, statsInsertBaseline); +}; + +const testChange = (tenths, expected, received) => { + const statsImproved = testImproved(expected, received); + const statsBaseline = testBaseline(expected, received); + writeRow('change', tenths * 10, statsImproved, statsBaseline); +}; + +const getItems = (n, callback) => { + const items = []; + + for (let i = 0; i !== n; i += 1) { + const item = callback(i); + if (typeof item === 'string') { + items.push(item); + } + } + + return items.join('\n'); +}; + +// Simulate change of property name which is usually not same line. +// Expected: 0 1 2 3 4 5 6 7 8 9 and so on +// Received: 1 2 3 4 x0 5 6 7 8 9 and so on +const change2 = i => { + const j = i % 10; + return j === 4 ? `x${i - 4}` : j < 4 ? `${i + 1}` : `${i}`; +}; + +const testLength = n => { + const all = getItems(n, i => `${i}`); + + writeHeading3(n); + + [2, 4, 8].forEach(tenth => { + testDeleteInsert(tenth, all, getItems(n, i => i % 10 >= tenth && `${i}`)); + }); + testChange(1, all, getItems(n, i => (i % 10 === 0 ? `x${i}` : `${i}`))); + testChange(2, all, getItems(n, change2)); + testChange(5, all, getItems(n, i => (i % 2 === 0 ? `x${i}` : `${i}`))); + testChange(10, all, getItems(n, i => `x${i}`)); // simulate TDD +}; + +writeHeading2(); + +testLength(20); +testLength(200); +testLength(2000); diff --git a/packages/expect/package.json b/packages/expect/package.json index 0a6b1c3c28c3..f357e11b07a6 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -11,7 +11,6 @@ "browser": "build-es5/index.js", "dependencies": { "ansi-styles": "^3.2.0", - "jest-diff": "^23.6.0", "jest-get-type": "^22.1.0", "jest-matcher-utils": "^23.6.0", "jest-message-util": "^23.4.0", diff --git a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap index f8e39e5fc99a..1debb403a675 100644 --- a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap +++ b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap @@ -360,11 +360,7 @@ exports[`.toBe() fails for: -0 and 0 1`] = ` "expect(received).toBe(expected) // Object.is equality Expected: 0 -Received: -0 - -Difference: - -Compared values have no visual difference." +Received: -0" `; exports[`.toBe() fails for: 1 and 2 1`] = ` diff --git a/packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.js.snap b/packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.js.snap index f02f4d14a79c..2d2df6b246e0 100644 --- a/packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.js.snap +++ b/packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.js.snap @@ -1,35 +1,53 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`.toThrow() error class did not throw at all 1`] = ` -"expect(function).toThrow(type) +"expect(received).toThrow(expected) -Expected the function to throw an error of type: - \\"Err\\" -But it didn't throw anything." +Expected name: \\"Err\\" + +Received function did not throw" `; -exports[`.toThrow() error class threw, but class did not match 1`] = ` -"expect(function).toThrow(type) +exports[`.toThrow() error class threw, but class did not match (error) 1`] = ` +"expect(received).toThrow(expected) + +Expected name: \\"Err2\\" +Received name: \\"Error\\" + +Received message: \\"apple\\" -Expected the function to throw an error of type: - \\"Err2\\" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; -exports[`.toThrow() error class threw, but should not have 1`] = ` -"expect(function).not.toThrow(type) +exports[`.toThrow() error class threw, but class did not match (non-error falsey) 1`] = ` +"expect(received).toThrow(expected) + +Expected name: \\"Err2\\" + +Received value: undefined +" +`; + +exports[`.toThrow() error class threw, but class should not match (error) 1`] = ` +"expect(received).not.toThrow(expected) + +Expected name: \\"Err\\" +Received name: \\"Error\\" + +Received message: \\"apple\\" -Expected the function not to throw an error of type: - \\"Err\\" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +`; + +exports[`.toThrow() expected is undefined threw, but should not have (non-error falsey) 1`] = ` +"expect(received).not.toThrow() + +Thrown value: null +" `; exports[`.toThrow() invalid actual 1`] = ` -"expect(received)[.not].toThrow(expected) +"expect(received).toThrow() Matcher error: received value must be a function @@ -38,126 +56,172 @@ Received has value: \\"a string\\"" `; exports[`.toThrow() invalid arguments 1`] = ` -"expect(received)[.not].toThrow(expected) +"expect(received).not.toThrow(expected) -Matcher error: expected value must be a string or regular expression or Error +Matcher error: expected value must be a string or regular expression or class or error Expected has type: number Expected has value: 111" `; exports[`.toThrow() promise/async throws if Error-like object is returned did not throw at all 1`] = ` -[Error: expect(function).toThrow(undefined) +"expect(received).rejects.toThrow() -Expected the function to throw an error. -But it didn't throw anything.] +Received function did not throw" `; exports[`.toThrow() promise/async throws if Error-like object is returned threw, but class did not match 1`] = ` -[Error: expect(function).toThrow(type) +"expect(received).rejects.toThrow(expected) + +Expected name: \\"Err2\\" +Received name: \\"Error\\" -Expected the function to throw an error of type: - "Err2" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)] +Received message: \\"async apple\\" + + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; exports[`.toThrow() promise/async throws if Error-like object is returned threw, but should not have 1`] = ` -[Error: expect(function).not.toThrow() +"expect(received).rejects.not.toThrow() + +Error name: \\"Error\\" +Error message: \\"async apple\\" -Expected the function not to throw an error. -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)] + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; exports[`.toThrow() regexp did not throw at all 1`] = ` -"expect(function).toThrow(regexp) +"expect(received).toThrow(expected) -Expected the function to throw an error matching: - /apple/ -But it didn't throw anything." +Expected pattern: /apple/ + +Received function did not throw" `; -exports[`.toThrow() regexp threw, but message did not match 1`] = ` -"expect(function).toThrow(regexp) +exports[`.toThrow() regexp threw, but message did not match (error) 1`] = ` +"expect(received).toThrow(expected) + +Expected pattern: /banana/ +Received message: \\"apple\\" -Expected the function to throw an error matching: - /banana/ -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; -exports[`.toThrow() regexp threw, but should not have 1`] = ` -"expect(function).not.toThrow(regexp) +exports[`.toThrow() regexp threw, but message did not match (non-error falsey) 1`] = ` +"expect(received).toThrow(expected) -Expected the function not to throw an error matching: - /apple/ -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +Expected pattern: /^[123456789]\\\\d*/ +Received value: 0 +" +`; + +exports[`.toThrow() regexp threw, but message should not match (error) 1`] = ` +"expect(received).not.toThrow(expected) + +Expected pattern: /apple/ +Received message: \\"apple\\" + + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +`; + +exports[`.toThrow() regexp threw, but message should not match (non-error truthy) 1`] = ` +"expect(received).not.toThrow(expected) + +Expected pattern: /^[123456789]\\\\d*/ +Received value: 404 +" `; exports[`.toThrow() strings did not throw at all 1`] = ` -"expect(function).toThrow(string) +"expect(received).toThrow(expected) + +Expected substring: \\"apple\\" -Expected the function to throw an error matching: - \\"apple\\" -But it didn't throw anything." +Received function did not throw" `; -exports[`.toThrow() strings threw, but message did not match 1`] = ` -"expect(function).toThrow(string) +exports[`.toThrow() strings threw, but message did not match (error) 1`] = ` +"expect(received).toThrow(expected) + +Expected substring: \\"banana\\" +Received message: \\"apple\\" + + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +`; + +exports[`.toThrow() strings threw, but message did not match (non-error falsey) 1`] = ` +"expect(received).toThrow(expected) + +Expected substring: \\"Server Error\\" +Received value: \\"\\" +" +`; + +exports[`.toThrow() strings threw, but message should not match (error) 1`] = ` +"expect(received).not.toThrow(expected) + +Expected substring: \\"apple\\" +Received message: \\"apple\\" -Expected the function to throw an error matching: - \\"banana\\" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; -exports[`.toThrow() strings threw, but should not have 1`] = ` -"expect(function).not.toThrow(string) +exports[`.toThrow() strings threw, but message should not match (non-error truthy) 1`] = ` +"expect(received).not.toThrow(expected) -Expected the function not to throw an error matching: - \\"apple\\" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +Expected substring: \\"Server Error\\" +Received value: \\"Internal Server Error\\" +" `; exports[`.toThrowError() error class did not throw at all 1`] = ` -"expect(function).toThrowError(type) +"expect(received).toThrowError(expected) -Expected the function to throw an error of type: - \\"Err\\" -But it didn't throw anything." +Expected name: \\"Err\\" + +Received function did not throw" `; -exports[`.toThrowError() error class threw, but class did not match 1`] = ` -"expect(function).toThrowError(type) +exports[`.toThrowError() error class threw, but class did not match (error) 1`] = ` +"expect(received).toThrowError(expected) + +Expected name: \\"Err2\\" +Received name: \\"Error\\" + +Received message: \\"apple\\" -Expected the function to throw an error of type: - \\"Err2\\" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; -exports[`.toThrowError() error class threw, but should not have 1`] = ` -"expect(function).not.toThrowError(type) +exports[`.toThrowError() error class threw, but class did not match (non-error falsey) 1`] = ` +"expect(received).toThrowError(expected) + +Expected name: \\"Err2\\" + +Received value: undefined +" +`; + +exports[`.toThrowError() error class threw, but class should not match (error) 1`] = ` +"expect(received).not.toThrowError(expected) + +Expected name: \\"Err\\" +Received name: \\"Error\\" + +Received message: \\"apple\\" -Expected the function not to throw an error of type: - \\"Err\\" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +`; + +exports[`.toThrowError() expected is undefined threw, but should not have (non-error falsey) 1`] = ` +"expect(received).not.toThrowError() + +Thrown value: null +" `; exports[`.toThrowError() invalid actual 1`] = ` -"expect(received)[.not].toThrowError(expected) +"expect(received).toThrowError() Matcher error: received value must be a function @@ -166,92 +230,120 @@ Received has value: \\"a string\\"" `; exports[`.toThrowError() invalid arguments 1`] = ` -"expect(received)[.not].toThrowError(expected) +"expect(received).not.toThrowError(expected) -Matcher error: expected value must be a string or regular expression or Error +Matcher error: expected value must be a string or regular expression or class or error Expected has type: number Expected has value: 111" `; exports[`.toThrowError() promise/async throws if Error-like object is returned did not throw at all 1`] = ` -[Error: expect(function).toThrow(undefined) +"expect(received).rejects.toThrowError() -Expected the function to throw an error. -But it didn't throw anything.] +Received function did not throw" `; exports[`.toThrowError() promise/async throws if Error-like object is returned threw, but class did not match 1`] = ` -[Error: expect(function).toThrow(type) +"expect(received).rejects.toThrowError(expected) + +Expected name: \\"Err2\\" +Received name: \\"Error\\" -Expected the function to throw an error of type: - "Err2" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)] +Received message: \\"async apple\\" + + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; exports[`.toThrowError() promise/async throws if Error-like object is returned threw, but should not have 1`] = ` -[Error: expect(function).not.toThrow() +"expect(received).rejects.not.toThrowError() + +Error name: \\"Error\\" +Error message: \\"async apple\\" -Expected the function not to throw an error. -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)] + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; exports[`.toThrowError() regexp did not throw at all 1`] = ` -"expect(function).toThrowError(regexp) +"expect(received).toThrowError(expected) -Expected the function to throw an error matching: - /apple/ -But it didn't throw anything." +Expected pattern: /apple/ + +Received function did not throw" `; -exports[`.toThrowError() regexp threw, but message did not match 1`] = ` -"expect(function).toThrowError(regexp) +exports[`.toThrowError() regexp threw, but message did not match (error) 1`] = ` +"expect(received).toThrowError(expected) + +Expected pattern: /banana/ +Received message: \\"apple\\" -Expected the function to throw an error matching: - /banana/ -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; -exports[`.toThrowError() regexp threw, but should not have 1`] = ` -"expect(function).not.toThrowError(regexp) +exports[`.toThrowError() regexp threw, but message did not match (non-error falsey) 1`] = ` +"expect(received).toThrowError(expected) -Expected the function not to throw an error matching: - /apple/ -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +Expected pattern: /^[123456789]\\\\d*/ +Received value: 0 +" +`; + +exports[`.toThrowError() regexp threw, but message should not match (error) 1`] = ` +"expect(received).not.toThrowError(expected) + +Expected pattern: /apple/ +Received message: \\"apple\\" + + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +`; + +exports[`.toThrowError() regexp threw, but message should not match (non-error truthy) 1`] = ` +"expect(received).not.toThrowError(expected) + +Expected pattern: /^[123456789]\\\\d*/ +Received value: 404 +" `; exports[`.toThrowError() strings did not throw at all 1`] = ` -"expect(function).toThrowError(string) +"expect(received).toThrowError(expected) + +Expected substring: \\"apple\\" -Expected the function to throw an error matching: - \\"apple\\" -But it didn't throw anything." +Received function did not throw" `; -exports[`.toThrowError() strings threw, but message did not match 1`] = ` -"expect(function).toThrowError(string) +exports[`.toThrowError() strings threw, but message did not match (error) 1`] = ` +"expect(received).toThrowError(expected) + +Expected substring: \\"banana\\" +Received message: \\"apple\\" + + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +`; + +exports[`.toThrowError() strings threw, but message did not match (non-error falsey) 1`] = ` +"expect(received).toThrowError(expected) + +Expected substring: \\"Server Error\\" +Received value: \\"\\" +" +`; + +exports[`.toThrowError() strings threw, but message should not match (error) 1`] = ` +"expect(received).not.toThrowError(expected) + +Expected substring: \\"apple\\" +Received message: \\"apple\\" -Expected the function to throw an error matching: - \\"banana\\" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" + at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" `; -exports[`.toThrowError() strings threw, but should not have 1`] = ` -"expect(function).not.toThrowError(string) +exports[`.toThrowError() strings threw, but message should not match (non-error truthy) 1`] = ` +"expect(received).not.toThrowError(expected) -Expected the function not to throw an error matching: - \\"apple\\" -Instead, it threw: - Error - at jestExpect (packages/expect/src/__tests__/toThrowMatchers-test.js:24:74)" +Expected substring: \\"Server Error\\" +Received value: \\"Internal Server Error\\" +" `; diff --git a/packages/expect/src/__tests__/toThrowMatchers.test.js b/packages/expect/src/__tests__/toThrowMatchers.test.js index 1aa0efbb7e72..251cdcd44c81 100644 --- a/packages/expect/src/__tests__/toThrowMatchers.test.js +++ b/packages/expect/src/__tests__/toThrowMatchers.test.js @@ -52,7 +52,7 @@ class customError extends Error { ).toThrowErrorMatchingSnapshot(); }); - test('threw, but message did not match', () => { + test('threw, but message did not match (error)', () => { expect(() => { jestExpect(() => { throw new customError('apple'); @@ -60,19 +60,37 @@ class customError extends Error { }).toThrowErrorMatchingSnapshot(); }); + test('threw, but message did not match (non-error falsey)', () => { + expect(() => { + jestExpect(() => { + // eslint-disable-next-line no-throw-literal + throw ''; + })[toThrow]('Server Error'); + }).toThrowErrorMatchingSnapshot(); + }); + it('properly escapes strings when matching against errors', () => { jestExpect(() => { throw new TypeError('"this"? throws.'); })[toThrow]('"this"? throws.'); }); - test('threw, but should not have', () => { + test('threw, but message should not match (error)', () => { expect(() => { jestExpect(() => { throw new customError('apple'); }).not[toThrow]('apple'); }).toThrowErrorMatchingSnapshot(); }); + + test('threw, but message should not match (non-error truthy)', () => { + expect(() => { + jestExpect(() => { + // eslint-disable-next-line no-throw-literal + throw 'Internal Server Error'; + }).not[toThrow]('Server Error'); + }).toThrowErrorMatchingSnapshot(); + }); }); describe('regexp', () => { @@ -92,7 +110,7 @@ class customError extends Error { ).toThrowErrorMatchingSnapshot(); }); - test('threw, but message did not match', () => { + test('threw, but message did not match (error)', () => { expect(() => { jestExpect(() => { throw new customError('apple'); @@ -100,13 +118,31 @@ class customError extends Error { }).toThrowErrorMatchingSnapshot(); }); - test('threw, but should not have', () => { + test('threw, but message did not match (non-error falsey)', () => { + expect(() => { + jestExpect(() => { + // eslint-disable-next-line no-throw-literal + throw 0; + })[toThrow](/^[123456789]\d*/); + }).toThrowErrorMatchingSnapshot(); + }); + + test('threw, but message should not match (error)', () => { expect(() => { jestExpect(() => { throw new customError('apple'); }).not[toThrow](/apple/); }).toThrowErrorMatchingSnapshot(); }); + + test('threw, but message should not match (non-error truthy)', () => { + expect(() => { + jestExpect(() => { + // eslint-disable-next-line no-throw-literal + throw 404; + }).not[toThrow](/^[123456789]\d*/); + }).toThrowErrorMatchingSnapshot(); + }); }); describe('error class', () => { @@ -129,7 +165,7 @@ class customError extends Error { ).toThrowErrorMatchingSnapshot(); }); - test('threw, but class did not match', () => { + test('threw, but class did not match (error)', () => { expect(() => { jestExpect(() => { throw new Err('apple'); @@ -137,7 +173,16 @@ class customError extends Error { }).toThrowErrorMatchingSnapshot(); }); - test('threw, but should not have', () => { + test('threw, but class did not match (non-error falsey)', () => { + expect(() => { + jestExpect(() => { + // eslint-disable-next-line no-throw-literal + throw undefined; + })[toThrow](Err2); + }).toThrowErrorMatchingSnapshot(); + }); + + test('threw, but class should not match (error)', () => { expect(() => { jestExpect(() => { throw new Err('apple'); @@ -199,39 +244,38 @@ class customError extends Error { }); test('did not throw at all', async () => { - let err; - try { - await jestExpect(asyncFn()).rejects.toThrow(); - } catch (error) { - err = error; - } - expect(err).toMatchSnapshot(); + await expect( + jestExpect(asyncFn()).rejects[toThrow](), + ).rejects.toThrowErrorMatchingSnapshot(); }); test('threw, but class did not match', async () => { - let err; - try { - await jestExpect(asyncFn(true)).rejects.toThrow(Err2); - } catch (error) { - err = error; - } - expect(err).toMatchSnapshot(); + await expect( + jestExpect(asyncFn(true)).rejects[toThrow](Err2), + ).rejects.toThrowErrorMatchingSnapshot(); }); test('threw, but should not have', async () => { - let err; - try { - await jestExpect(asyncFn(true)).rejects.not.toThrow(); - } catch (error) { - err = error; - } - expect(err).toMatchSnapshot(); + await expect( + jestExpect(asyncFn(true)).rejects.not[toThrow](), + ).rejects.toThrowErrorMatchingSnapshot(); + }); + }); + + describe('expected is undefined', () => { + test('threw, but should not have (non-error falsey)', () => { + expect(() => { + jestExpect(() => { + // eslint-disable-next-line no-throw-literal + throw null; + }).not[toThrow](); + }).toThrowErrorMatchingSnapshot(); }); }); test('invalid arguments', () => { expect(() => - jestExpect(() => {})[toThrow](111), + jestExpect(() => {}).not[toThrow](111), ).toThrowErrorMatchingSnapshot(); }); diff --git a/packages/expect/src/index.js b/packages/expect/src/index.js index eaa52035242d..1f50866a4e67 100644 --- a/packages/expect/src/index.js +++ b/packages/expect/src/index.js @@ -66,7 +66,7 @@ const createToThrowErrorMatchingSnapshotMatcher = function(matcher) { const getPromiseMatcher = (name, matcher) => { if (name === 'toThrow' || name === 'toThrowError') { - return createThrowMatcher('.' + name, true); + return createThrowMatcher(name, true); } else if ( name === 'toThrowErrorMatchingSnapshot' || name === 'toThrowErrorMatchingInlineSnapshot' diff --git a/packages/expect/src/matchers.js b/packages/expect/src/matchers.js index 345f40341f87..298f1d1cb681 100644 --- a/packages/expect/src/matchers.js +++ b/packages/expect/src/matchers.js @@ -9,7 +9,6 @@ import type {MatchersObject} from 'types/Matchers'; -import diff from 'jest-diff'; import getType from 'jest-get-type'; import {escapeStrForRegex} from 'jest-regex-util'; import { @@ -17,6 +16,7 @@ import { RECEIVED_COLOR, SUGGEST_TO_EQUAL, SUGGEST_TO_CONTAIN_EQUAL, + diff, ensureNoExpected, ensureNumbers, getLabelPrinter, diff --git a/packages/expect/src/spyMatchers.js b/packages/expect/src/spyMatchers.js index 0d7016a2d37b..50f623d9c770 100644 --- a/packages/expect/src/spyMatchers.js +++ b/packages/expect/src/spyMatchers.js @@ -13,6 +13,7 @@ const CALL_PRINT_LIMIT = 3; const RETURN_PRINT_LIMIT = 5; const LAST_CALL_PRINT_LIMIT = 1; import { + diff, ensureExpectedIsNumber, ensureNoExpected, EXPECTED_COLOR, @@ -26,7 +27,6 @@ import { } from 'jest-matcher-utils'; import {equals} from './jasmineUtils'; import {iterableEquality, partition, isOneline} from './utils'; -import diff from 'jest-diff'; const createToBeCalledMatcher = matcherName => (received, expected) => { ensureNoExpected(expected, matcherName); diff --git a/packages/expect/src/toThrowMatchers.js b/packages/expect/src/toThrowMatchers.js index af2ae6c01275..1dfd4f27fdf6 100644 --- a/packages/expect/src/toThrowMatchers.js +++ b/packages/expect/src/toThrowMatchers.js @@ -7,203 +7,305 @@ * @flow */ -import type {MatchersObject} from 'types/Matchers'; +import type {MatcherHintOptions, MatchersObject} from 'types/Matchers'; -import getType from 'jest-get-type'; -import {escapeStrForRegex} from 'jest-regex-util'; import {formatStackTrace, separateMessageFromStack} from 'jest-message-util'; import { EXPECTED_COLOR, RECEIVED_COLOR, - highlightTrailingWhitespace, matcherErrorMessage, matcherHint, printExpected, printReceived, printWithType, } from 'jest-matcher-utils'; -import {equals} from './jasmineUtils'; import {isError} from './utils'; -export const createMatcher = (matcherName: string, fromPromise?: boolean) => ( - actual: Function, - expected: string | Error | RegExp, -) => { - const value = expected; - let error; - - if (fromPromise && isError(actual)) { - error = actual; - } else { - if (typeof actual !== 'function') { - if (!fromPromise) { - throw new Error( - matcherErrorMessage( - matcherHint('[.not]' + matcherName, undefined, undefined), - `${RECEIVED_COLOR('received')} value must be a function`, - printWithType('Received', actual, printReceived), - ), - ); +const DID_NOT_THROW = 'Received function did not throw'; + +type Thrown = + | { + isError: true, + message: string, + value: Error, + } + | { + isError: false, + message: string, + value: any, + }; + +const getThrown = (e: any): Thrown => + e !== null && + e !== undefined && + typeof e.message === 'string' && + typeof e.name === 'string' && + typeof e.stack === 'string' + ? { + isError: true, + message: e.message, + value: e, } + : { + isError: false, + message: typeof e === 'string' ? e : String(e), + value: e, + }; + +export const createMatcher = (matcherName: string, fromPromise?: boolean) => + function(received: Function, expected: any) { + const options = { + isNot: this.isNot, + promise: this.promise, + }; + + let thrown = null; + + if (fromPromise && isError(received)) { + thrown = getThrown(received); } else { - try { - actual(); - } catch (e) { - error = e; + if (typeof received !== 'function') { + if (!fromPromise) { + const placeholder = expected === undefined ? '' : 'expected'; + throw new Error( + matcherErrorMessage( + matcherHint(matcherName, undefined, placeholder, options), + `${RECEIVED_COLOR('received')} value must be a function`, + printWithType('Received', received, printReceived), + ), + ); + } + } else { + try { + received(); + } catch (e) { + thrown = getThrown(e); + } } } - } - if (typeof expected === 'string') { - expected = new RegExp(escapeStrForRegex(expected)); - } + if (expected === undefined) { + return toThrow(matcherName, options, thrown); + } else if (typeof expected === 'function') { + return toThrowExpectedClass(matcherName, options, thrown, expected); + } else if (typeof expected === 'string') { + return toThrowExpectedString(matcherName, options, thrown, expected); + } else if (expected !== null && typeof expected.test === 'function') { + return toThrowExpectedRegExp(matcherName, options, thrown, expected); + } else if (expected !== null && typeof expected === 'object') { + return toThrowExpectedObject(matcherName, options, thrown, expected); + } else { + throw new Error( + matcherErrorMessage( + matcherHint(matcherName, undefined, undefined, options), + `${EXPECTED_COLOR( + 'expected', + )} value must be a string or regular expression or class or error`, + printWithType('Expected', expected, printExpected), + ), + ); + } + }; - if (typeof expected === 'function') { - return toThrowMatchingError(matcherName, error, expected); - } else if (expected && typeof expected.test === 'function') { - return toThrowMatchingStringOrRegexp( - matcherName, - error, - (expected: any), - value, - ); - } else if (expected && typeof expected === 'object') { - return toThrowMatchingErrorInstance(matcherName, error, (expected: any)); - } else if (expected === undefined) { - const pass = error !== undefined; - return { - message: pass - ? () => - matcherHint('.not' + matcherName, 'function', '') + - '\n\n' + - 'Expected the function not to throw an error.\n' + - printActualErrorMessage(error) - : () => - matcherHint(matcherName, 'function', getType(value)) + - '\n\n' + - 'Expected the function to throw an error.\n' + - printActualErrorMessage(error), - pass, - }; - } else { - throw new Error( - matcherErrorMessage( - matcherHint('[.not]' + matcherName, undefined, undefined), - `${EXPECTED_COLOR( - 'expected', - )} value must be a string or regular expression or Error`, - printWithType('Expected', expected, printExpected), - ), - ); - } +const matchers: MatchersObject = { + toThrow: createMatcher('toThrow'), + toThrowError: createMatcher('toThrowError'), }; -const matchers: MatchersObject = { - toThrow: createMatcher('.toThrow'), - toThrowError: createMatcher('.toThrowError'), +const toThrowExpectedRegExp = ( + matcherName: string, + options: MatcherHintOptions, + thrown: Thrown | null, + expected: RegExp, +) => { + const pass = thrown !== null && expected.test(thrown.message); + const isNotError = thrown !== null && !thrown.isError; + + const message = pass + ? () => + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected pattern: ', expected) + + (isNotError + ? formatReceived('Received value: ', thrown, 'value') + : formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown)) + : () => + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected pattern: ', expected) + + (thrown === null + ? '\n' + DID_NOT_THROW + : isNotError + ? formatReceived('Received value: ', thrown, 'value') + : formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown)); + + return {message, pass}; }; -const toThrowMatchingStringOrRegexp = ( - name: string, - error: ?Error, - pattern: RegExp, - value: RegExp | string | Error, +const toThrowExpectedObject = ( + matcherName: string, + options: MatcherHintOptions, + thrown: Thrown | null, + expected: Object, ) => { - if (error && !error.message && !error.name) { - error = new Error(error); - } + const pass = thrown !== null && thrown.message === expected.message; + const isNotError = thrown !== null && !thrown.isError; - const pass = !!(error && error.message.match(pattern)); const message = pass ? () => - matcherHint('.not' + name, 'function', getType(value)) + + matcherHint(matcherName, undefined, undefined, options) + '\n\n' + - `Expected the function not to throw an error matching:\n` + - ` ${printExpected(value)}\n` + - printActualErrorMessage(error) + formatExpected('Expected message: ', expected.message) + + (isNotError + ? formatReceived('Received value: ', thrown, 'value') + : formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown)) : () => - matcherHint(name, 'function', getType(value)) + + matcherHint(matcherName, undefined, undefined, options) + '\n\n' + - `Expected the function to throw an error matching:\n` + - ` ${printExpected(value)}\n` + - printActualErrorMessage(error); + formatExpected('Expected message: ', expected.message) + + (thrown === null + ? '\n' + DID_NOT_THROW + : isNotError + ? formatReceived('Received value: ', thrown, 'value') + : formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown)); return {message, pass}; }; -const toThrowMatchingErrorInstance = ( - name: string, - error: ?Error, - expectedError: Error, +const toThrowExpectedClass = ( + matcherName: string, + options: MatcherHintOptions, + thrown: Thrown | null, + expected: Function, ) => { - if (error && !error.message && !error.name) { - error = new Error(error); - } + const pass = thrown !== null && thrown.value instanceof expected; + const isNotError = thrown !== null && !thrown.isError; + + const message = pass + ? () => + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected name: ', expected.name) + + formatReceived('Received name: ', thrown, 'name') + + '\n' + + (isNotError + ? formatReceived('Received value: ', thrown, 'value') + : formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown)) + : () => + matcherHint(matcherName, undefined, undefined, options) + + '\n\n' + + formatExpected('Expected name: ', expected.name) + + (thrown === null + ? '\n' + DID_NOT_THROW + : isNotError + ? '\n' + formatReceived('Received value: ', thrown, 'value') + : formatReceived('Received name: ', thrown, 'name') + + '\n' + + formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown)); + + return {message, pass}; +}; + +const toThrowExpectedString = ( + matcherName: string, + options: MatcherHintOptions, + thrown: Thrown | null, + expected: string, +) => { + const pass = thrown !== null && thrown.message.includes(expected); + const isNotError = thrown !== null && !thrown.isError; - const pass = equals(error, expectedError); const message = pass ? () => - matcherHint('.not' + name, 'function', 'error') + + matcherHint(matcherName, undefined, undefined, options) + '\n\n' + - `Expected the function not to throw an error matching:\n` + - ` ${printExpected(expectedError)}\n` + - printActualErrorMessage(error) + formatExpected('Expected substring: ', expected) + + (isNotError + ? formatReceived('Received value: ', thrown, 'value') + : formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown)) : () => - matcherHint(name, 'function', 'error') + + matcherHint(matcherName, undefined, undefined, options) + '\n\n' + - `Expected the function to throw an error matching:\n` + - ` ${printExpected(expectedError)}\n` + - printActualErrorMessage(error); + formatExpected('Expected substring: ', expected) + + (thrown === null + ? '\n' + DID_NOT_THROW + : isNotError + ? formatReceived('Received value: ', thrown, 'value') + : formatReceived('Received message: ', thrown, 'message') + + formatStack(thrown)); return {message, pass}; }; -const toThrowMatchingError = ( - name: string, - error: ?Error, - ErrorClass: typeof Error, +const toThrow = ( + matcherName: string, + options: MatcherHintOptions, + thrown: Thrown | null, ) => { - const pass = !!(error && error instanceof ErrorClass); + const pass = thrown !== null; + const isNotError = thrown !== null && !thrown.isError; + const message = pass ? () => - matcherHint('.not' + name, 'function', 'type') + + matcherHint(matcherName, undefined, '', options) + '\n\n' + - `Expected the function not to throw an error of type:\n` + - ` ${printExpected(ErrorClass.name)}\n` + - printActualErrorMessage(error) + (isNotError + ? formatReceived('Thrown value: ', thrown, 'value') + : formatReceived('Error name: ', thrown, 'name') + + formatReceived('Error message: ', thrown, 'message') + + formatStack(thrown)) : () => - matcherHint(name, 'function', 'type') + + matcherHint(matcherName, undefined, '', options) + '\n\n' + - `Expected the function to throw an error of type:\n` + - ` ${printExpected(ErrorClass.name)}\n` + - printActualErrorMessage(error); + DID_NOT_THROW; return {message, pass}; }; -const printActualErrorMessage = error => { - if (error) { - const {message, stack} = separateMessageFromStack(error.stack); - return ( - `Instead, it threw:\n` + - RECEIVED_COLOR( - ' ' + - highlightTrailingWhitespace(message) + - formatStackTrace( - stack, - { - rootDir: process.cwd(), - testMatch: [], - }, - { - noStackTrace: false, - }, - ), - ) - ); +const formatExpected = (label: string, expected: any) => + label + printExpected(expected) + '\n'; + +const formatReceived = (label: string, thrown: Thrown | null, key: string) => { + if (thrown === null) { + return ''; + } + + if (key === 'message') { + return label + printReceived(thrown.message) + '\n'; + } + + if (key === 'name') { + return thrown.isError + ? label + printReceived(thrown.value.name) + '\n' + : ''; } - return `But it didn't throw anything.`; + if (key === 'value') { + return thrown.isError ? '' : label + printReceived(thrown.value) + '\n'; + } + + return ''; }; +const formatStack = (thrown: Thrown | null) => + thrown === null || !thrown.isError + ? '' + : formatStackTrace( + separateMessageFromStack(thrown.value.stack).stack, + { + rootDir: process.cwd(), + testMatch: [], + }, + { + noStackTrace: false, + }, + ); + export default matchers; diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index 7778c15cdd52..f3b4ede5d59f 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -14,7 +14,6 @@ "co": "^4.6.0", "expect": "^23.6.0", "is-generator-fn": "^2.0.0", - "jest-diff": "^23.6.0", "jest-each": "^23.6.0", "jest-matcher-utils": "^23.6.0", "jest-message-util": "^23.4.0", @@ -25,6 +24,7 @@ }, "devDependencies": { "execa": "^1.0.0", + "jest-diff": "^23.6.0", "jest-runtime": "^23.6.0" }, "engines": { diff --git a/packages/jest-circus/src/formatNodeAssertErrors.js b/packages/jest-circus/src/formatNodeAssertErrors.js index 792ef5ad0641..a13caf678687 100644 --- a/packages/jest-circus/src/formatNodeAssertErrors.js +++ b/packages/jest-circus/src/formatNodeAssertErrors.js @@ -10,9 +10,8 @@ import type {DiffOptions} from 'jest-diff/src/diffStrings'; import type {Event, State} from 'types/Circus'; -import {printExpected, printReceived} from 'jest-matcher-utils'; +import {diff, printExpected, printReceived} from 'jest-matcher-utils'; import chalk from 'chalk'; -import diff from 'jest-diff'; import prettyFormat from 'pretty-format'; type AssertionError = {| diff --git a/packages/jest-circus/src/run.js b/packages/jest-circus/src/run.js index 373512271d8e..27cadf1420bf 100644 --- a/packages/jest-circus/src/run.js +++ b/packages/jest-circus/src/run.js @@ -118,7 +118,7 @@ const _runTest = async (test: TestEntry): Promise => { // `afterAll` hooks should not affect test status (pass or fail), because if // we had a global `afterAll` hook it would block all existing tests until - // this hook is executed. So we dispatche `test_done` right away. + // this hook is executed. So we dispatch `test_done` right away. dispatch({name: 'test_done', test}); }; diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index de4c76d0e097..c84b1f30021a 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -30,7 +30,7 @@ "jest-validate": "^23.6.0", "jest-watcher": "^23.4.0", "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", + "micromatch": "^3.1.10", "node-notifier": "^5.2.1", "p-each-series": "^1.0.0", "pirates": "^4.0.0", diff --git a/packages/jest-cli/src/SearchSource.js b/packages/jest-cli/src/SearchSource.js index 1744ef00bb2a..3d004d8ef140 100644 --- a/packages/jest-cli/src/SearchSource.js +++ b/packages/jest-cli/src/SearchSource.js @@ -19,6 +19,7 @@ import testPathPatternToRegExp from './testPathPatternToRegexp'; import {escapePathForRegex} from 'jest-regex-util'; import {replaceRootDirInPath} from 'jest-config'; import {buildSnapshotResolver} from 'jest-snapshot'; +import {replacePathSepForGlob} from 'jest-util'; type SearchResult = {| noSCM?: boolean, @@ -48,7 +49,8 @@ const globsToMatcher = (globs: ?Array) => { return () => true; } - return path => micromatch([path], globs, {dot: true}).length > 0; + return path => + micromatch.some(replacePathSepForGlob(path), globs, {dot: true}); }; const regexToMatcher = (testRegex: Array) => { diff --git a/packages/jest-cli/src/__tests__/SearchSource.test.js b/packages/jest-cli/src/__tests__/SearchSource.test.js index 53d979ec0d56..0a5ddef370dc 100644 --- a/packages/jest-cli/src/__tests__/SearchSource.test.js +++ b/packages/jest-cli/src/__tests__/SearchSource.test.js @@ -9,9 +9,9 @@ 'use strict'; import path from 'path'; -import {skipSuiteOnWindows} from '../../../../scripts/ConditionalTest'; jest.setTimeout(15000); + const rootDir = path.resolve(__dirname, 'test_root'); const testRegex = path.sep + '__testtests__' + path.sep; const testMatch = ['**/__testtests__/**/*']; @@ -23,8 +23,6 @@ let findMatchingTests; let normalize; describe('SearchSource', () => { - skipSuiteOnWindows(); - const name = 'SearchSource'; let Runtime; let SearchSource; @@ -481,22 +479,24 @@ describe('SearchSource', () => { }); it('does not mistake roots folders with prefix names', async () => { - const config = normalize( - { - name, - rootDir: '.', - roots: ['/foo/bar/prefix'], - }, - {}, - ).options; + if (process.platform !== 'win32') { + const config = normalize( + { + name, + rootDir: '.', + roots: ['/foo/bar/prefix'], + }, + {}, + ).options; - searchSource = new SearchSource( - await Runtime.createContext(config, {maxWorkers}), - ); + searchSource = new SearchSource( + await Runtime.createContext(config, {maxWorkers}), + ); - const input = ['/foo/bar/prefix-suffix/__tests__/my-test.test.js']; - const data = searchSource.findTestsByPaths(input); - expect(data.tests).toEqual([]); + const input = ['/foo/bar/prefix-suffix/__tests__/my-test.test.js']; + const data = searchSource.findTestsByPaths(input); + expect(data.tests).toEqual([]); + } }); }); }); diff --git a/packages/jest-cli/src/__tests__/runJestWithCoverage.test.js b/packages/jest-cli/src/__tests__/runJestWithCoverage.test.js index 21a9d76c0c40..e0ceb5266755 100644 --- a/packages/jest-cli/src/__tests__/runJestWithCoverage.test.js +++ b/packages/jest-cli/src/__tests__/runJestWithCoverage.test.js @@ -2,7 +2,13 @@ import runJest from '../runJest'; -jest.mock('jest-util'); +jest.mock('jest-util', () => { + const util = jest.requireActual('jest-util'); + return { + ...jest.genMockFromModule('jest-util'), + replacePathSepForGlob: util.replacePathSepForGlob, + }; +}); jest.mock( '../TestScheduler', diff --git a/packages/jest-cli/src/lib/__tests__/is_valid_path.test.js b/packages/jest-cli/src/lib/__tests__/is_valid_path.test.js index 6a51280f796d..2dbf4aaade1a 100644 --- a/packages/jest-cli/src/lib/__tests__/is_valid_path.test.js +++ b/packages/jest-cli/src/lib/__tests__/is_valid_path.test.js @@ -8,40 +8,24 @@ */ import isValidPath from '../is_valid_path'; - -const path = require('path'); -const { - makeGlobalConfig, - makeProjectConfig, -} = require('../../../../../TestUtils'); +import path from 'path'; +import {makeGlobalConfig} from '../../../../../TestUtils'; const rootDir = path.resolve(path.sep, 'root'); -const config = makeProjectConfig({ - rootDir, - roots: [path.resolve(rootDir, 'src'), path.resolve(rootDir, 'lib')], - watchPathIgnorePatterns: ['pacts'], -}); - it('is valid when it is a file inside roots', () => { expect( - isValidPath( - makeGlobalConfig(), - config, - path.resolve(rootDir, 'src', 'index.js'), - ), + isValidPath(makeGlobalConfig(), path.resolve(rootDir, 'src', 'index.js')), ).toBe(true); expect( isValidPath( makeGlobalConfig(), - config, path.resolve(rootDir, 'src', 'components', 'Link.js'), ), ).toBe(true); expect( isValidPath( makeGlobalConfig(), - config, path.resolve(rootDir, 'src', 'lib', 'something.js'), ), ).toBe(true); @@ -51,21 +35,18 @@ it('is not valid when it is a snapshot file', () => { expect( isValidPath( makeGlobalConfig(), - config, path.resolve(rootDir, 'src', 'index.js.snap'), ), ).toBe(false); expect( isValidPath( makeGlobalConfig(), - config, path.resolve(rootDir, 'src', 'components', 'Link.js.snap'), ), ).toBe(false); expect( isValidPath( makeGlobalConfig(), - config, path.resolve(rootDir, 'src', 'lib', 'something.js.snap'), ), ).toBe(false); @@ -75,7 +56,6 @@ it('is not valid when it is a file in the coverage dir', () => { expect( isValidPath( makeGlobalConfig({rootDir}), - config, path.resolve(rootDir, 'coverage', 'lib', 'index.js'), ), ).toBe(false); @@ -83,18 +63,7 @@ it('is not valid when it is a file in the coverage dir', () => { expect( isValidPath( makeGlobalConfig({coverageDirectory: 'cov-dir'}), - config, path.resolve(rootDir, 'src', 'cov-dir', 'lib', 'index.js'), ), ).toBe(false); }); - -it('is not valid when it is a file match one of the watchPathIgnorePatterns', () => { - expect( - isValidPath( - makeGlobalConfig({rootDir}), - config, - path.resolve(rootDir, 'pacts', 'todoapp-todoservice.json'), - ), - ).toBe(false); -}); diff --git a/packages/jest-cli/src/lib/init/questions.js b/packages/jest-cli/src/lib/init/questions.js index 4dfb51be7477..5e7c829b7f10 100644 --- a/packages/jest-cli/src/lib/init/questions.js +++ b/packages/jest-cli/src/lib/init/questions.js @@ -7,13 +7,13 @@ * @flow */ -type Question = { - intial?: boolean | number, +type Question = {| + initial?: boolean | number, message: string, name: string, type: string, choices?: Array<{title: string, value: string}>, -}; +|}; const defaultQuestions: Array = [ { diff --git a/packages/jest-cli/src/lib/is_valid_path.js b/packages/jest-cli/src/lib/is_valid_path.js index 1d2620b674d5..ffd14efb8fff 100644 --- a/packages/jest-cli/src/lib/is_valid_path.js +++ b/packages/jest-cli/src/lib/is_valid_path.js @@ -7,17 +7,15 @@ * @flow */ -import type {GlobalConfig, ProjectConfig} from 'types/Config'; +import type {GlobalConfig} from 'types/Config'; import {isSnapshotPath} from 'jest-snapshot'; export default function isValidPath( globalConfig: GlobalConfig, - config: ProjectConfig, filePath: string, ) { return ( !filePath.includes(globalConfig.coverageDirectory) && - !config.watchPathIgnorePatterns.some(pattern => filePath.match(pattern)) && !isSnapshotPath(filePath) ); } diff --git a/packages/jest-cli/src/runJest.js b/packages/jest-cli/src/runJest.js index 8e3a6dcb1785..121cb201c72e 100644 --- a/packages/jest-cli/src/runJest.js +++ b/packages/jest-cli/src/runJest.js @@ -19,7 +19,7 @@ import micromatch from 'micromatch'; import chalk from 'chalk'; import path from 'path'; import {sync as realpath} from 'realpath-native'; -import {Console, formatTestResults} from 'jest-util'; +import {Console, formatTestResults, replacePathSepForGlob} from 'jest-util'; import exit from 'exit'; import fs from 'graceful-fs'; import getNoTestsFoundMessage from './getNoTestsFoundMessage'; @@ -165,10 +165,12 @@ export default (async function runJest({ matches.collectCoverageFrom.filter(filename => { if ( globalConfig.collectCoverageFrom && - !micromatch( - [path.relative(globalConfig.rootDir, filename)], + !micromatch.some( + replacePathSepForGlob( + path.relative(globalConfig.rootDir, filename), + ), globalConfig.collectCoverageFrom, - ).length + ) ) { return false; } diff --git a/packages/jest-cli/src/watch.js b/packages/jest-cli/src/watch.js index 412279a40a9a..2ea55110d318 100644 --- a/packages/jest-cli/src/watch.js +++ b/packages/jest-cli/src/watch.js @@ -194,7 +194,7 @@ export default function watch( hasteMapInstances.forEach((hasteMapInstance, index) => { hasteMapInstance.on('change', ({eventsQueue, hasteFS, moduleMap}) => { const validPaths = eventsQueue.filter(({filePath}) => - isValidPath(globalConfig, contexts[index].config, filePath), + isValidPath(globalConfig, filePath), ); if (validPaths.length) { diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index eb9aeb85a2ab..63d03d525a13 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -21,9 +21,10 @@ "jest-resolve": "^23.6.0", "jest-util": "^23.4.0", "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", + "micromatch": "^3.1.10", "pretty-format": "^23.6.0", - "realpath-native": "^1.0.2" + "realpath-native": "^1.0.2", + "uuid": "^3.3.2" }, "engines": { "node": ">= 6" diff --git a/packages/jest-config/src/__tests__/normalize.test.js b/packages/jest-config/src/__tests__/normalize.test.js index eb0a05ab3411..ffebc661caa9 100644 --- a/packages/jest-config/src/__tests__/normalize.test.js +++ b/packages/jest-config/src/__tests__/normalize.test.js @@ -12,7 +12,6 @@ import normalize from '../normalize'; jest.mock('jest-resolve'); jest.mock('path', () => jest.requireActual('path').posix); -const crypto = require('crypto'); const path = require('path'); const DEFAULT_JS_PATTERN = require('../constants').DEFAULT_JS_PATTERN; const DEFAULT_CSS_PATTERN = '^.+\\.(css)$'; @@ -47,20 +46,16 @@ beforeEach(() => { require('jest-resolve').findNodeModule = findNodeModule; }); -it('picks a name based on the rootDir', () => { +it('assigns a random 32-byte hash as a name to avoid clashes', () => { const rootDir = '/root/path/foo'; - const expected = crypto - .createHash('md5') - .update('/root/path/foo') - .digest('hex'); - expect( - normalize( - { - rootDir, - }, - {}, - ).options.name, - ).toBe(expected); + const {name: name1} = normalize({rootDir}, {}).options; + const {name: name2} = normalize({rootDir}, {}).options; + + expect(name1).toEqual(expect.any(String)); + expect(name1).toHaveLength(32); + expect(name2).toEqual(expect.any(String)); + expect(name2).toHaveLength(32); + expect(name1).not.toBe(name2); }); it('keeps custom names based on the rootDir', () => { @@ -738,14 +733,6 @@ describe('babel-jest', () => { expect(options.transform[0][0]).toBe(DEFAULT_JS_PATTERN); expect(options.transform[0][1]).toEqual(require.resolve('babel-jest')); - expect(options.setupFiles).toEqual([ - path.sep + - 'node_modules' + - path.sep + - 'regenerator-runtime' + - path.sep + - 'runtime', - ]); }); it('uses babel-jest if babel-jest is explicitly specified in a custom transform options', () => { @@ -762,38 +749,6 @@ describe('babel-jest', () => { expect(options.transform[0][0]).toBe(customJSPattern); expect(options.transform[0][1]).toEqual(require.resolve('babel-jest')); - expect(options.setupFiles).toEqual([ - path.sep + - 'node_modules' + - path.sep + - 'regenerator-runtime' + - path.sep + - 'runtime', - ]); - }); - - it('uses regenerator if babel-jest is explicitly specified', () => { - const ROOT_DIR = '' + path.sep; - - const {options} = normalize( - { - rootDir: '/root', - transform: { - [DEFAULT_JS_PATTERN]: - ROOT_DIR + Resolver.findNodeModule('babel-jest'), - }, - }, - {}, - ); - - expect(options.setupFiles).toEqual([ - path.sep + - 'node_modules' + - path.sep + - 'regenerator-runtime' + - path.sep + - 'runtime', - ]); }); }); @@ -1188,12 +1143,7 @@ describe('preset without setupFiles', () => { ); expect(options).toEqual( - expect.objectContaining({ - setupFiles: [ - '/node_modules/regenerator-runtime/runtime', - '/node_modules/a', - ], - }), + expect.objectContaining({setupFiles: ['/node_modules/a']}), ); }); }); diff --git a/packages/jest-config/src/normalize.js b/packages/jest-config/src/normalize.js index 7c08a098c013..f63714494aca 100644 --- a/packages/jest-config/src/normalize.js +++ b/packages/jest-config/src/normalize.js @@ -17,11 +17,12 @@ import type { } from 'types/Config'; import crypto from 'crypto'; +import uuid from 'uuid/v4'; import glob from 'glob'; import path from 'path'; import {ValidationError, validate} from 'jest-validate'; import validatePattern from './validatePattern'; -import {clearLine} from 'jest-util'; +import {clearLine, replacePathSepForGlob} from 'jest-util'; import chalk from 'chalk'; import getMaxWorkers from './getMaxWorkers'; import micromatch from 'micromatch'; @@ -169,8 +170,6 @@ const setupBabelJest = (options: InitialOptions) => { [DEFAULT_JS_PATTERN]: babelJest, }; } - - return babelJest; }; const normalizeCollectCoverageOnlyFrom = ( @@ -270,6 +269,7 @@ const normalizeMissingOptions = (options: InitialOptions): InitialOptions => { options.name = crypto .createHash('md5') .update(options.rootDir) + .update(uuid()) .digest('hex'); } @@ -445,7 +445,8 @@ export default function normalize(options: InitialOptions, argv: Argv) { options.coverageDirectory = path.resolve(options.rootDir, 'coverage'); } - const babelJest = setupBabelJest(options); + setupBabelJest(options); + const newOptions: $Shape = { ...DEFAULT_CONFIG, }; @@ -609,10 +610,20 @@ export default function normalize(options: InitialOptions, argv: Argv) { break; case 'moduleDirectories': case 'testMatch': - value = _replaceRootDirTags( - escapeGlobCharacters(options.rootDir), - options[key], - ); + { + const replacedRootDirTags = _replaceRootDirTags( + escapeGlobCharacters(options.rootDir), + options[key], + ); + + if (replacedRootDirTags) { + value = Array.isArray(replacedRootDirTags) + ? replacedRootDirTags.map(replacePathSepForGlob) + : replacePathSepForGlob(replacedRootDirTags); + } else { + value = replacedRootDirTags; + } + } break; case 'testRegex': value = options[key] @@ -773,17 +784,6 @@ export default function normalize(options: InitialOptions, argv: Argv) { newOptions.maxWorkers = getMaxWorkers(argv); - if (babelJest) { - const regeneratorRuntimePath = Resolver.findNodeModule( - 'regenerator-runtime/runtime', - {basedir: options.rootDir, resolver: newOptions.resolver}, - ); - - if (regeneratorRuntimePath) { - newOptions.setupFiles.unshift(regeneratorRuntimePath); - } - } - if (newOptions.testRegex.length && options.testMatch) { throw createConfigError( ` Configuration options ${chalk.bold('testMatch')} and` + @@ -822,10 +822,10 @@ export default function normalize(options: InitialOptions, argv: Argv) { if (newOptions.collectCoverageFrom) { collectCoverageFrom = collectCoverageFrom.reduce((patterns, filename) => { if ( - !micromatch( - [path.relative(options.rootDir, filename)], + !micromatch.some( + replacePathSepForGlob(path.relative(options.rootDir, filename)), newOptions.collectCoverageFrom, - ).length + ) ) { return patterns; } diff --git a/packages/jest-diff/src/__tests__/diff.test.js b/packages/jest-diff/src/__tests__/diff.test.js index 58a622b89c18..50df67c274f7 100644 --- a/packages/jest-diff/src/__tests__/diff.test.js +++ b/packages/jest-diff/src/__tests__/diff.test.js @@ -48,9 +48,12 @@ describe('no visual difference', () => { [[], []], [[1, 2], [1, 2]], [11, 11], + [NaN, NaN], + [Number.NaN, NaN], [() => {}, () => {}], [null, null], [undefined, undefined], + [false, false], [{a: 1}, {a: 1}], [{a: {b: 5}}, {a: {b: 5}}], ].forEach(values => { @@ -178,13 +181,17 @@ describe('objects', () => { }); test('numbers', () => { - const result = diff(123, 234); - expect(result).toBe(null); + expect(stripped(1, 2)).toEqual(expect.stringContaining('- 1\n+ 2')); +}); + +test('-0 and 0', () => { + expect(stripped(-0, 0)).toEqual(expect.stringContaining('- -0\n+ 0')); }); test('booleans', () => { - const result = diff(true, false); - expect(result).toBe(null); + expect(stripped(false, true)).toEqual( + expect.stringContaining('- false\n+ true'), + ); }); describe('multiline string non-snapshot', () => { diff --git a/packages/jest-diff/src/index.js b/packages/jest-diff/src/index.js index 716e863fb1c4..a52fa1c1b524 100644 --- a/packages/jest-diff/src/index.js +++ b/packages/jest-diff/src/index.js @@ -46,7 +46,7 @@ const FALLBACK_FORMAT_OPTIONS_0 = {...FALLBACK_FORMAT_OPTIONS, indent: 0}; // Generate a string that will highlight the difference between two values // with green and red. (similar to how github does code diffing) function diff(a: any, b: any, options: ?DiffOptions): ?string { - if (a === b) { + if (Object.is(a, b)) { return NO_DIFF_MESSAGE; } @@ -83,9 +83,9 @@ function diff(a: any, b: any, options: ?DiffOptions): ?string { switch (aType) { case 'string': return diffStrings(a, b, options); - case 'number': case 'boolean': - return null; + case 'number': + return comparePrimitive(a, b, options); case 'map': return compareObjects(sortMap(a), sortMap(b), options); case 'set': @@ -95,6 +95,18 @@ function diff(a: any, b: any, options: ?DiffOptions): ?string { } } +function comparePrimitive( + a: number | boolean, + b: number | boolean, + options: ?DiffOptions, +) { + return diffStrings( + prettyFormat(a, FORMAT_OPTIONS), + prettyFormat(b, FORMAT_OPTIONS), + options, + ); +} + function sortMap(map) { return new Map(Array.from(map.entries()).sort()); } diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index 95aaa8d0544a..c3ef408ebf02 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -13,8 +13,9 @@ "graceful-fs": "^4.1.15", "invariant": "^2.2.4", "jest-serializer": "^23.0.1", + "jest-util": "^23.4.0", "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", + "micromatch": "^3.1.10", "sane": "^3.0.0" }, "engines": { diff --git a/packages/jest-haste-map/src/HasteFS.js b/packages/jest-haste-map/src/HasteFS.js index 617ef744850e..c703376accde 100644 --- a/packages/jest-haste-map/src/HasteFS.js +++ b/packages/jest-haste-map/src/HasteFS.js @@ -10,6 +10,7 @@ import type {Glob, Path} from 'types/Config'; import type {FileData} from 'types/HasteMap'; +import {replacePathSepForGlob} from 'jest-util'; import * as fastPath from './lib/fast_path'; import micromatch from 'micromatch'; import H from './constants'; @@ -78,7 +79,7 @@ export default class HasteFS { const files = new Set(); for (const file of this.getAbsoluteFileIterator()) { const filePath = root ? fastPath.relative(root, file) : file; - if (micromatch([filePath], globs).length) { + if (micromatch.some(replacePathSepForGlob(filePath), globs)) { files.add(file); } } diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index 454a2e9e0d3f..e67ff83d48b4 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -14,7 +14,6 @@ "co": "^4.6.0", "expect": "^23.6.0", "is-generator-fn": "^2.0.0", - "jest-diff": "^23.6.0", "jest-each": "^23.6.0", "jest-matcher-utils": "^23.6.0", "jest-message-util": "^23.4.0", @@ -23,6 +22,7 @@ "pretty-format": "^23.6.0" }, "devDependencies": { + "jest-diff": "^23.6.0", "jest-runtime": "^23.6.0" }, "engines": { diff --git a/packages/jest-jasmine2/src/assertionErrorMessage.js b/packages/jest-jasmine2/src/assertionErrorMessage.js index 5051c8d1c250..3e066ae8377d 100644 --- a/packages/jest-jasmine2/src/assertionErrorMessage.js +++ b/packages/jest-jasmine2/src/assertionErrorMessage.js @@ -9,9 +9,8 @@ import type {DiffOptions} from 'jest-diff/src/diffStrings'; -import {printReceived, printExpected} from 'jest-matcher-utils'; +import {diff, printReceived, printExpected} from 'jest-matcher-utils'; import chalk from 'chalk'; -import diff from 'jest-diff'; type AssertionError = {| actual: ?string, diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json index 15f3019ef755..beaeacc8b9dc 100644 --- a/packages/jest-matcher-utils/package.json +++ b/packages/jest-matcher-utils/package.json @@ -14,6 +14,7 @@ "main": "build/index.js", "dependencies": { "chalk": "^2.0.1", + "jest-diff": "^23.6.0", "jest-get-type": "^22.1.0", "pretty-format": "^23.6.0" } diff --git a/packages/jest-matcher-utils/src/__tests__/index.test.js b/packages/jest-matcher-utils/src/__tests__/index.test.js index 229e8f5b8a72..703ab50fa0d0 100644 --- a/packages/jest-matcher-utils/src/__tests__/index.test.js +++ b/packages/jest-matcher-utils/src/__tests__/index.test.js @@ -7,6 +7,7 @@ */ import { + diff, ensureNumbers, ensureNoExpected, getLabelPrinter, @@ -129,6 +130,31 @@ describe('.ensureNoExpected()', () => { }); }); +jest.mock('jest-diff', () => () => 'diff output'); +describe('diff', () => { + test('forwards to jest-diff', () => { + [ + ['a', 'b'], + ['a', {}], + ['a', null], + ['a', undefined], + ['a', 1], + ['a', true], + [1, true], + ].forEach(([actual, expected]) => + expect(diff(actual, expected)).toBe('diff output'), + ); + }); + + test('two booleans', () => { + expect(diff(false, true)).toBe(null); + }); + + test('two numbers', () => { + expect(diff(1, 2)).toBe(null); + }); +}); + describe('.pluralize()', () => { test('one', () => expect(pluralize('apple', 1)).toEqual('one apple')); test('two', () => expect(pluralize('apple', 2)).toEqual('two apples')); diff --git a/packages/jest-matcher-utils/src/index.js b/packages/jest-matcher-utils/src/index.js index f969e9363b9b..a7b040e867a5 100644 --- a/packages/jest-matcher-utils/src/index.js +++ b/packages/jest-matcher-utils/src/index.js @@ -10,6 +10,7 @@ import type {MatcherHintOptions} from 'types/Matchers'; import chalk from 'chalk'; +import jestDiff from 'jest-diff'; import getType from 'jest-get-type'; import prettyFormat from 'pretty-format'; const { @@ -160,6 +161,21 @@ export const ensureNumbers = ( ensureExpectedIsNumber(expected, matcherName); }; +// Sometimes, e.g. when comparing two numbers, the output from jest-diff +// does not contain more information than the `Expected:` / `Received:` already gives. +// In those cases, we do not print a diff to make the output shorter and not redundant. +const shouldPrintDiff = (actual: any, expected: any) => { + if (typeof actual === 'number' && typeof expected === 'number') { + return false; + } + if (typeof actual === 'boolean' && typeof expected === 'boolean') { + return false; + } + return true; +}; +export const diff: typeof jestDiff = (a, b, options) => + shouldPrintDiff(a, b) ? jestDiff(a, b, options) : null; + export const pluralize = (word: string, count: number) => (NUMBERS[count] || count) + ' ' + word + (count === 1 ? '' : 's'); diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index 72a1c4116161..fcf8b4858fc1 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -14,7 +14,7 @@ "dependencies": { "@babel/code-frame": "^7.0.0", "chalk": "^2.0.1", - "micromatch": "^2.3.11", + "micromatch": "^3.1.10", "slash": "^2.0.0", "stack-utils": "^1.0.1" } diff --git a/packages/jest-message-util/src/index.js b/packages/jest-message-util/src/index.js index 87c95800454a..48afb9ec2a31 100644 --- a/packages/jest-message-util/src/index.js +++ b/packages/jest-message-util/src/index.js @@ -210,7 +210,7 @@ const formatPaths = (config: StackTraceConfig, relativeTestPath, line) => { if ( (config.testMatch && config.testMatch.length && - micromatch(filePath, config.testMatch)) || + micromatch.some(filePath, config.testMatch)) || filePath === relativeTestPath ) { filePath = chalk.reset.cyan(filePath); diff --git a/packages/jest-mock/src/__tests__/jest_mock.test.js b/packages/jest-mock/src/__tests__/jest_mock.test.js index 432023561f83..bd38cb281806 100644 --- a/packages/jest-mock/src/__tests__/jest_mock.test.js +++ b/packages/jest-mock/src/__tests__/jest_mock.test.js @@ -70,7 +70,7 @@ describe('moduleMocker', () => { expect(mock.name).toBe('foo'); }); - it('escapes illegal characters in function name property', () => { + it('fixes illegal function name properties', () => { function getMockFnWithOriginalName(name) { const fn = () => {}; Object.defineProperty(fn, 'name', {value: name}); @@ -78,21 +78,12 @@ describe('moduleMocker', () => { return moduleMocker.generateFromMetadata(moduleMocker.getMetadata(fn)); } - expect( - getMockFnWithOriginalName('foo-bar').name === 'foo$bar', - ).toBeTruthy(); - expect( - getMockFnWithOriginalName('foo-bar-2').name === 'foo$bar$2', - ).toBeTruthy(); - expect( - getMockFnWithOriginalName('foo-bar-3').name === 'foo$bar$3', - ).toBeTruthy(); - expect( - getMockFnWithOriginalName('foo/bar').name === 'foo$bar', - ).toBeTruthy(); - expect( - getMockFnWithOriginalName('foo𠮷bar').name === 'foo𠮷bar', - ).toBeTruthy(); + expect(getMockFnWithOriginalName('1').name).toBe('$1'); + expect(getMockFnWithOriginalName('foo-bar').name).toBe('foo$bar'); + expect(getMockFnWithOriginalName('foo-bar-2').name).toBe('foo$bar$2'); + expect(getMockFnWithOriginalName('foo-bar-3').name).toBe('foo$bar$3'); + expect(getMockFnWithOriginalName('foo/bar').name).toBe('foo$bar'); + expect(getMockFnWithOriginalName('foo𠮷bar').name).toBe('foo𠮷bar'); }); it('special cases the mockConstructor name', () => { @@ -348,6 +339,18 @@ describe('moduleMocker', () => { ).not.toThrow(); }); + it('mocks functions with numeric names', () => { + const obj = { + 1: () => {}, + }; + + const objMock = moduleMocker.generateFromMetadata( + moduleMocker.getMetadata(obj), + ); + + expect(typeof objMock[1]).toBe('function'); + }); + describe('mocked functions', () => { it('tracks calls to mocks', () => { const fn = moduleMocker.fn(); diff --git a/packages/jest-mock/src/index.js b/packages/jest-mock/src/index.js index de67933b542f..9a95f5d9f2e1 100644 --- a/packages/jest-mock/src/index.js +++ b/packages/jest-mock/src/index.js @@ -73,56 +73,56 @@ const FUNCTION_NAME_RESERVED_REPLACE = new RegExp( 'g', ); -const RESERVED_KEYWORDS = Object.assign(Object.create(null), { - arguments: true, - await: true, - break: true, - case: true, - catch: true, - class: true, - const: true, - continue: true, - debugger: true, - default: true, - delete: true, - do: true, - else: true, - enum: true, - eval: true, - export: true, - extends: true, - false: true, - finally: true, - for: true, - function: true, - if: true, - implements: true, - import: true, - in: true, - instanceof: true, - interface: true, - let: true, - new: true, - null: true, - package: true, - private: true, - protected: true, - public: true, - return: true, - static: true, - super: true, - switch: true, - this: true, - throw: true, - true: true, - try: true, - typeof: true, - var: true, - void: true, - while: true, - with: true, - yield: true, -}); +const RESERVED_KEYWORDS = new Set([ + 'arguments', + 'await', + 'break', + 'case', + 'catch', + 'class', + 'const', + 'continue', + 'debugger', + 'default', + 'delete', + 'do', + 'else', + 'enum', + 'eval', + 'export', + 'extends', + 'false', + 'finally', + 'for', + 'function', + 'if', + 'implements', + 'import', + 'in', + 'instanceof', + 'interface', + 'let', + 'new', + 'null', + 'package', + 'private', + 'protected', + 'public', + 'return', + 'static', + 'super', + 'switch', + 'this', + 'throw', + 'true', + 'try', + 'typeof', + 'var', + 'void', + 'while', + 'with', + 'yield', +]); function matchArity(fn: any, length: number): any { let mockConstructor; @@ -623,9 +623,13 @@ class ModuleMockerClass { return mockConstructor; } - // It's a syntax error to define functions with a reserved keyword - // as name. - if (RESERVED_KEYWORDS[name]) { + if ( + // It's a syntax error to define functions with a reserved keyword + // as name. + RESERVED_KEYWORDS.has(name) || + // It's also a syntax error to define functions with a name that starts with a number + /^\d/.test(name) + ) { name = '$' + name; } @@ -684,7 +688,7 @@ class ModuleMockerClass { /** * @see README.md - * @param metadata Metadata for the mock in the schema returned by the + * @param _metadata Metadata for the mock in the schema returned by the * getMetadata method of this module. */ generateFromMetadata(_metadata: MockFunctionMetadata): Mock { diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index 41f4c6c2978c..5e74ff84ef95 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -25,7 +25,7 @@ "jest-snapshot": "^23.6.0", "jest-util": "^23.4.0", "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", + "micromatch": "^3.1.10", "realpath-native": "^1.0.0", "slash": "^2.0.0", "strip-bom": "3.0.0", diff --git a/packages/jest-runtime/src/__tests__/Runtime-statics.test.js b/packages/jest-runtime/src/__tests__/Runtime-statics.test.js new file mode 100644 index 000000000000..a4fc811dbeb1 --- /dev/null +++ b/packages/jest-runtime/src/__tests__/Runtime-statics.test.js @@ -0,0 +1,45 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import HasteMap from 'jest-haste-map'; +const Runtime = require('../'); + +jest.mock('jest-haste-map'); + +describe('Runtime statics', () => { + const projectConfig = { + cacheDirectory: '/tmp', + haste: {}, + modulePathIgnorePatterns: ['/root/ignore-1', '/root/ignore-2'], + watchPathIgnorePatterns: ['/watch-root/ignore-1'], + }; + const options = {}; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('Runtime.createHasteMap passes correct ignore files to HasteMap', () => { + Runtime.createHasteMap(projectConfig, options); + expect(HasteMap).toBeCalledWith( + expect.objectContaining({ + ignorePattern: /\/root\/ignore-1|\/root\/ignore-2/, + }), + ); + }); + + test('Runtime.createHasteMap passes correct ignore files to HasteMap in watch mode', () => { + Runtime.createHasteMap(projectConfig, {...options, watch: true}); + expect(HasteMap).toBeCalledWith( + expect.objectContaining({ + ignorePattern: /\/root\/ignore-1|\/root\/ignore-2|\/watch-root\/ignore-1/, + watch: true, + }), + ); + }); +}); diff --git a/packages/jest-runtime/src/__tests__/should_instrument.test.js b/packages/jest-runtime/src/__tests__/should_instrument.test.js index 3601007aec57..376e8e7d0b4f 100644 --- a/packages/jest-runtime/src/__tests__/should_instrument.test.js +++ b/packages/jest-runtime/src/__tests__/should_instrument.test.js @@ -93,22 +93,6 @@ describe('shouldInstrument', () => { ); }); - it('should should match invalid globs, to be removed in the next major', () => { - const testSingleCollectCoverageFrom = pattern => - testShouldInstrument( - 'do/collect/coverage.js', - { - collectCoverage: true, - collectCoverageFrom: [pattern], - }, - defaultConfig, - ); - - testSingleCollectCoverageFrom('**/do/**/*.{js}'); - testSingleCollectCoverageFrom('**/do/**/*.{js|ts}'); - testSingleCollectCoverageFrom('**/do/**.js'); - }); - it('should return true if the file is not in coveragePathIgnorePatterns', () => { testShouldInstrument('do/collect/coverage.js', defaultOptions, { coveragePathIgnorePatterns: ['dont'], diff --git a/packages/jest-runtime/src/index.js b/packages/jest-runtime/src/index.js index 05dc03a7a35b..e09902fb1a67 100644 --- a/packages/jest-runtime/src/index.js +++ b/packages/jest-runtime/src/index.js @@ -229,6 +229,7 @@ class Runtime { ): HasteMap { const ignorePatternParts = [ ...config.modulePathIgnorePatterns, + ...(options && options.watch ? config.watchPathIgnorePatterns : []), config.cacheDirectory.startsWith(config.rootDir + path.sep) && config.cacheDirectory, ].filter(Boolean); diff --git a/packages/jest-runtime/src/shouldInstrument.js b/packages/jest-runtime/src/shouldInstrument.js index 769105a30e86..6717fbea3e52 100644 --- a/packages/jest-runtime/src/shouldInstrument.js +++ b/packages/jest-runtime/src/shouldInstrument.js @@ -12,6 +12,7 @@ import type {Options} from './ScriptTransformer'; import path from 'path'; import {escapePathForRegex} from 'jest-regex-util'; +import {replacePathSepForGlob} from 'jest-util'; import micromatch from 'micromatch'; const MOCKS_PATTERN = new RegExp( @@ -49,7 +50,7 @@ export default function shouldInstrument( if ( config.testMatch && config.testMatch.length && - micromatch([filename], config.testMatch).length + micromatch.some(replacePathSepForGlob(filename), config.testMatch) ) { return false; } @@ -68,10 +69,10 @@ export default function shouldInstrument( // still cover if `only` is specified !options.collectCoverageOnlyFrom && options.collectCoverageFrom && - !micromatch( - [path.relative(config.rootDir, filename)], + !micromatch.some( + replacePathSepForGlob(path.relative(config.rootDir, filename)), options.collectCoverageFrom, - ).length + ) ) { return false; } diff --git a/packages/jest-util/src/index.js b/packages/jest-util/src/index.js index 7c978c666010..04aed91a67bb 100644 --- a/packages/jest-util/src/index.js +++ b/packages/jest-util/src/index.js @@ -24,6 +24,7 @@ import setGlobal from './setGlobal'; import deepCyclicCopy from './deepCyclicCopy'; import convertDescriptorToString from './convertDescriptorToString'; import * as specialChars from './specialChars'; +import replacePathSepForGlob from './replacePathSepForGlob'; module.exports = { BufferedConsole, @@ -41,6 +42,7 @@ module.exports = { getFailedSnapshotTests, installCommonGlobals, isInteractive, + replacePathSepForGlob, setGlobal, specialChars, }; diff --git a/packages/jest-util/src/replacePathSepForGlob.js b/packages/jest-util/src/replacePathSepForGlob.js new file mode 100644 index 000000000000..1c4362b02d81 --- /dev/null +++ b/packages/jest-util/src/replacePathSepForGlob.js @@ -0,0 +1,14 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +import type {Path, Glob} from 'types/Config'; + +export default function replacePathSepForGlob(path: Path): Glob { + return path.replace(/\\(?![{}()+?.^$])/g, '/'); +} diff --git a/scripts/browserBuild.js b/scripts/browserBuild.js index 045135e33b7a..60f9c75c65d4 100644 --- a/scripts/browserBuild.js +++ b/scripts/browserBuild.js @@ -7,14 +7,9 @@ 'use strict'; const path = require('path'); -const rollup = require('rollup').rollup; -const rollupResolve = require('rollup-plugin-node-resolve'); -const rollupCommonjs = require('rollup-plugin-commonjs'); -const rollupBuiltins = require('rollup-plugin-node-builtins'); -const rollupGlobals = require('rollup-plugin-node-globals'); -const rollupJson = require('rollup-plugin-json'); -const rollupBabel = require('rollup-plugin-babel'); -const rollupFlow = require('rollup-plugin-flow'); +const webpack = require('webpack'); +const camelCase = require('camelcase'); +const rimraf = require('rimraf'); const babelEs5Options = { // Dont load other config files @@ -25,8 +20,8 @@ const babelEs5Options = { [ '@babel/preset-env', { - // Required for Rollup - modules: false, + // Required for Webpack + modules: 'cjs', shippedProposals: true, // Target ES5 targets: 'IE 11', @@ -34,35 +29,55 @@ const babelEs5Options = { ], '@babel/preset-flow', ], - runtimeHelpers: true, }; function browserBuild(pkgName, entryPath, destination) { - return rollup({ - input: entryPath, - plugins: [ + rimraf.sync(destination); + + return new Promise((resolve, reject) => { + webpack( + /* eslint-disable sort-keys */ { - resolveId(id) { - return id === 'chalk' - ? path.resolve(__dirname, '../packages/expect/build/fakeChalk.js') - : undefined; + mode: 'development', + devtool: 'source-map', + entry: entryPath, + output: { + path: path.dirname(destination), + library: camelCase(pkgName), + libraryTarget: 'umd', + filename: path.basename(destination), + }, + module: { + rules: [ + { + test: /\.[jt]sx?$/, + loader: 'babel-loader', + options: babelEs5Options, + }, + ], + }, + resolve: { + alias: { + chalk: path.resolve( + __dirname, + '../packages/expect/build/fakeChalk.js' + ), + }, + }, + node: { + fs: 'empty', }, }, - rollupFlow(), - rollupJson(), - rollupCommonjs(), - rollupBabel(babelEs5Options), - rollupGlobals(), - rollupBuiltins(), - rollupResolve(), - ], - }).then(bundle => - bundle.write({ - file: destination, - format: 'umd', - name: pkgName, - }) - ); + /* eslint-enable */ + (err, stats) => { + if (err || stats.hasErrors()) { + reject(err || stats.toString()); + return; + } + resolve(stats); + } + ); + }); } module.exports = browserBuild; diff --git a/website/blog/2017-12-18-jest-22.md b/website/blog/2017-12-18-jest-22.md index b7b11813e4cc..cb50df774577 100644 --- a/website/blog/2017-12-18-jest-22.md +++ b/website/blog/2017-12-18-jest-22.md @@ -7,6 +7,8 @@ authorFBID: 100003004880942 Today we are announcing a new major version of Jest which refines almost all parts of Jest to provide a more solid testing foundation. Together with the Jest community we made a number of changes across the board that will help you get more out of Jest. We are also graduating the custom runners feature out of the experimental stage and added a new package, `jest-worker`, for parallelizing work across multiple processes. We have compiled a list of highlights below but make sure to check out the (as always) [massive changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md). + + ## Good bye Node 4 & welcome JSDOM 11 With this release we are dropping support for Node 4, mainly because one of our main dependencies, JSDOM, ended their support. Jest now comes out of the box with JSDOM 11 which features better support for SVGs, `requestAnimationFrame`, `URL` and `URLSearchParams` built in, and [much more](https://github.com/tmpvar/jsdom/blob/master/Changelog.md). diff --git a/website/blog/2018-05-29-jest-23-blazing-fast-delightful-testing.md b/website/blog/2018-05-29-jest-23-blazing-fast-delightful-testing.md index db924df35359..dfdccca2f7b6 100644 --- a/website/blog/2018-05-29-jest-23-blazing-fast-delightful-testing.md +++ b/website/blog/2018-05-29-jest-23-blazing-fast-delightful-testing.md @@ -11,6 +11,8 @@ We would also like to welcome both [Babel](https://babeljs.io/) and [Webpack](ht Here's are some of the Jest 23 highlights and breaking changes. + + For a full list see the [changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md). ## Interactive Snapshot Mode @@ -117,7 +119,7 @@ As with every major release, we are making a few breaking changes to make larger Last week, the Jest Core Team met for the Jest Summit at Facebook London where worked on and released Jest 23, announced the Jest Open Collective, and gave a number of talks: - **Christoph Nakazawa** – [Intro](https://www.youtube.com/watch?v=cAKYQpTC7MA) -- **Aaaron Abramov** – [Writing Meaningful Tests](https://youtu.be/cAKYQpTC7MA?t=440) +- **Aaron Abramov** – [Writing Meaningful Tests](https://youtu.be/cAKYQpTC7MA?t=440) - **Rick Hanlon II** – [Blazing Fast Snapshot Testing in Jest 23](https://youtu.be/cAKYQpTC7MA?t=1881) - **Simen Bekkhus** – [Jest's Delightful Error Messages](https://youtu.be/cAKYQpTC7MA?t=2990) - **Matt Phillips** – [Level up your Jest experience with community packages](https://youtu.be/cAKYQpTC7MA?t=3852) diff --git a/website/blog/2018-06-27-supporting-jest-open-source.md b/website/blog/2018-06-27-supporting-jest-open-source.md index efb7b4bb4128..2935b0f55f52 100644 --- a/website/blog/2018-06-27-supporting-jest-open-source.md +++ b/website/blog/2018-06-27-supporting-jest-open-source.md @@ -15,6 +15,8 @@ At the Jest Summit we announced the Jest Open Collective. This is our way to hel In this post we'll outline what the Jest Open Collective is, the structure, and the goals we have. + + # The Jest Open Collective ![Banner image for Jest Open Collective](/img/blog/collective.png) diff --git a/website/siteConfig.js b/website/siteConfig.js index d8104a4bc49e..bf9aa6270247 100644 --- a/website/siteConfig.js +++ b/website/siteConfig.js @@ -128,6 +128,9 @@ const siteConfig = { siteConfigUrl: 'https://github.com/facebook/jest/edit/master/website/siteConfig.js', cleanUrl: true, + twitter: true, + twitterUsername: 'fbjest', + twitterImage: 'img/jest.png', }; module.exports = siteConfig; diff --git a/website/static/css/jest.css b/website/static/css/jest.css index 2ba161a758f7..7da722ede050 100644 --- a/website/static/css/jest.css +++ b/website/static/css/jest.css @@ -11,6 +11,7 @@ border-radius: 50%; border: 1px solid white; overflow: hidden; + object-fit: contain; } .backer-item { @@ -24,6 +25,7 @@ border-radius: 50%; border: 1px solid white; overflow: hidden; + object-fit: contain; } .support-button { diff --git a/website/versioned_docs/version-22.0/Configuration.md b/website/versioned_docs/version-22.0/Configuration.md index aad44be11883..982b79c80c08 100644 --- a/website/versioned_docs/version-22.0/Configuration.md +++ b/website/versioned_docs/version-22.0/Configuration.md @@ -276,9 +276,9 @@ return { Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleDirectories` [array] @@ -675,6 +675,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] ##### available in Jest **22.0.0+** diff --git a/website/versioned_docs/version-22.1/Configuration.md b/website/versioned_docs/version-22.1/Configuration.md index ce6b83b56c99..e80812f01606 100644 --- a/website/versioned_docs/version-22.1/Configuration.md +++ b/website/versioned_docs/version-22.1/Configuration.md @@ -274,9 +274,9 @@ return { Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleDirectories` [array] @@ -669,6 +669,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-22.2/Configuration.md b/website/versioned_docs/version-22.2/Configuration.md index 77c9dc204d80..b3c83d776f9d 100644 --- a/website/versioned_docs/version-22.2/Configuration.md +++ b/website/versioned_docs/version-22.2/Configuration.md @@ -274,9 +274,9 @@ return { Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleDirectories` [array] @@ -684,6 +684,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-22.3/Configuration.md b/website/versioned_docs/version-22.3/Configuration.md index 0a05221fa957..e8e58a30e95a 100644 --- a/website/versioned_docs/version-22.3/Configuration.md +++ b/website/versioned_docs/version-22.3/Configuration.md @@ -259,9 +259,9 @@ This option allows the use of a custom global teardown module which exports an a Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleDirectories` [array] @@ -669,6 +669,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-22.4/Configuration.md b/website/versioned_docs/version-22.4/Configuration.md index 85eed4fa1add..1d300834c1f5 100644 --- a/website/versioned_docs/version-22.4/Configuration.md +++ b/website/versioned_docs/version-22.4/Configuration.md @@ -290,9 +290,9 @@ This option allows the use of a custom global teardown module which exports an a Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleDirectories` [array] @@ -702,6 +702,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-23.0/Configuration.md b/website/versioned_docs/version-23.0/Configuration.md index 25da9f689a8a..b29d3977abd7 100644 --- a/website/versioned_docs/version-23.0/Configuration.md +++ b/website/versioned_docs/version-23.0/Configuration.md @@ -310,9 +310,9 @@ This option allows the use of a custom global teardown module which exports an a Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleDirectories` [array] @@ -728,6 +728,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-23.1/Configuration.md b/website/versioned_docs/version-23.1/Configuration.md index 7b21588fc390..4f34e12f79c9 100644 --- a/website/versioned_docs/version-23.1/Configuration.md +++ b/website/versioned_docs/version-23.1/Configuration.md @@ -310,9 +310,9 @@ This option allows the use of a custom global teardown module which exports an a Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleDirectories` [array] @@ -732,6 +732,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-23.2/Configuration.md b/website/versioned_docs/version-23.2/Configuration.md index 6e04c635ce57..a7c8d67e1fa6 100644 --- a/website/versioned_docs/version-23.2/Configuration.md +++ b/website/versioned_docs/version-23.2/Configuration.md @@ -322,9 +322,9 @@ An array of directory names to be searched recursively up from the requiring mod Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleNameMapper` [object] @@ -732,6 +732,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-23.3/Configuration.md b/website/versioned_docs/version-23.3/Configuration.md index edaa23b9adbc..2724b7991a46 100644 --- a/website/versioned_docs/version-23.3/Configuration.md +++ b/website/versioned_docs/version-23.3/Configuration.md @@ -322,9 +322,9 @@ An array of directory names to be searched recursively up from the requiring mod Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleNameMapper` [object] @@ -738,6 +738,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-23.4/Configuration.md b/website/versioned_docs/version-23.4/Configuration.md index c7e7a0557e73..b70c68f3f970 100644 --- a/website/versioned_docs/version-23.4/Configuration.md +++ b/website/versioned_docs/version-23.4/Configuration.md @@ -322,9 +322,9 @@ An array of directory names to be searched recursively up from the requiring mod Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleNameMapper` [object] @@ -740,6 +740,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-23.5/Configuration.md b/website/versioned_docs/version-23.5/Configuration.md index ce8bb1ae41ae..2564d170cea5 100644 --- a/website/versioned_docs/version-23.5/Configuration.md +++ b/website/versioned_docs/version-23.5/Configuration.md @@ -340,9 +340,9 @@ An array of directory names to be searched recursively up from the requiring mod Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleNameMapper` [object] @@ -758,6 +758,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/website/versioned_docs/version-23.6/Configuration.md b/website/versioned_docs/version-23.6/Configuration.md index a687b04524e4..35cedeb2226f 100644 --- a/website/versioned_docs/version-23.6/Configuration.md +++ b/website/versioned_docs/version-23.6/Configuration.md @@ -340,9 +340,9 @@ An array of directory names to be searched recursively up from the requiring mod Default: `["js", "json", "jsx", "node"]` -An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for. +An array of file extensions your modules use. If you require modules without specifying a file extension, these are the extensions Jest will look for, in left-to-right order. -If you are using TypeScript this should be `["js", "jsx", "json", "ts", "tsx"]`, check [ts-jest's documentation](https://github.com/kulshekhar/ts-jest). +If you are using TypeScript, you will want to add `"ts"` and/or `"tsx"` to the above default. Where you place these is up to you - we recommend placing the extensions most commonly used in your project on the left. ### `moduleNameMapper` [object] @@ -768,6 +768,8 @@ beforeAll(() => { }); ``` +_Note: Jest comes with JSDOM@11 by default. Due to JSDOM 12 and newer dropping support for Node 6, Jest is unable to upgrade for the time being. However, you can install a custom `testEnvironment` with whichever version of JSDOM you want. E.g. [jest-environment-jsdom-thirteen](https://www.npmjs.com/package/jest-environment-jsdom-thirteen), which has JSDOM@13._ + ### `testEnvironmentOptions` [Object] Default: `{}` diff --git a/yarn.lock b/yarn.lock index ee6616cdedca..d5befc55ad07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,7 +9,7 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.0.0", "@babel/core@^7.1.0": +"@babel/core@*", "@babel/core@^7.0.0", "@babel/core@^7.1.0": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== @@ -632,7 +632,7 @@ dependencies: regenerator-transform "^0.13.3" -"@babel/plugin-transform-runtime@*", "@babel/plugin-transform-runtime@^7.0.0": +"@babel/plugin-transform-runtime@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== @@ -798,7 +798,7 @@ pirates "^4.0.0" source-map-support "^0.5.9" -"@babel/runtime@*", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.5": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.5": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg== @@ -1453,11 +1453,6 @@ resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.10.tgz#780d552467824be4a241b29510a7873a7432c4a6" integrity sha512-fOM/Jhv51iyugY7KOBZz2ThfT1gwvsGCfWxpLpZDgkGjpEO4Le9cld07OdskikLjDUQJ43dzDaVRSFwQlpdqVg== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/jest@^23.1.1": version "23.3.12" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.12.tgz#7e0ced251fa94c3bc2d1023d4b84b2992fa06376" @@ -1473,7 +1468,160 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18" integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA== -JSONStream@^1.0.3, JSONStream@^1.0.4, JSONStream@^1.3.4: +"@webassemblyjs/ast@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" + integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA== + dependencies: + "@webassemblyjs/helper-module-context" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/wast-parser" "1.7.11" + +"@webassemblyjs/floating-point-hex-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" + integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== + +"@webassemblyjs/helper-api-error@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" + integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== + +"@webassemblyjs/helper-buffer@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" + integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== + +"@webassemblyjs/helper-code-frame@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" + integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw== + dependencies: + "@webassemblyjs/wast-printer" "1.7.11" + +"@webassemblyjs/helper-fsm@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" + integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== + +"@webassemblyjs/helper-module-context@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" + integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== + +"@webassemblyjs/helper-wasm-bytecode@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" + integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== + +"@webassemblyjs/helper-wasm-section@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" + integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" + +"@webassemblyjs/ieee754@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" + integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" + integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw== + dependencies: + "@xtuc/long" "4.2.1" + +"@webassemblyjs/utf8@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" + integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== + +"@webassemblyjs/wasm-edit@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" + integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/helper-wasm-section" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" + "@webassemblyjs/wasm-opt" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" + "@webassemblyjs/wast-printer" "1.7.11" + +"@webassemblyjs/wasm-gen@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" + integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/ieee754" "1.7.11" + "@webassemblyjs/leb128" "1.7.11" + "@webassemblyjs/utf8" "1.7.11" + +"@webassemblyjs/wasm-opt@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" + integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" + +"@webassemblyjs/wasm-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" + integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-api-error" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/ieee754" "1.7.11" + "@webassemblyjs/leb128" "1.7.11" + "@webassemblyjs/utf8" "1.7.11" + +"@webassemblyjs/wast-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" + integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/floating-point-hex-parser" "1.7.11" + "@webassemblyjs/helper-api-error" "1.7.11" + "@webassemblyjs/helper-code-frame" "1.7.11" + "@webassemblyjs/helper-fsm" "1.7.11" + "@xtuc/long" "4.2.1" + +"@webassemblyjs/wast-printer@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" + integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/wast-parser" "1.7.11" + "@xtuc/long" "4.2.1" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" + integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== + +JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -1496,13 +1644,6 @@ absolute-path@^0.0.0: resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" integrity sha1-p4di+9rftSl76ZsV01p4Wy8JW/c= -abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: - version "0.12.4" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz#29e18e632e60e4e221d5810247852a63d7b2e410" - integrity sha1-KeGOYy5g5OIh1YECR4UqY9ey5BA= - dependencies: - xtend "~3.0.0" - accepts@~1.3.3, accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" @@ -1511,10 +1652,12 @@ accepts@~1.3.3, accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== + dependencies: + acorn "^5.0.0" acorn-globals@^4.1.0: version "4.3.0" @@ -1529,27 +1672,17 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== -acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.6.2.tgz#b7d7ceca6f22e6417af933a62cad4de01048d5d2" - integrity sha512-rIhNEZuNI8ibQcL7ANm/mGyPukIaZsRNX9psFNQURyJW0nu6k8wjSDld20z6v2mDBWqX13pIEnk9gGZJHIlEXg== - dependencies: - acorn "^6.0.2" - acorn-dynamic-import "^4.0.0" - acorn-walk "^6.1.0" - xtend "^4.0.1" - -acorn-walk@^6.0.1, acorn-walk@^6.1.0: +acorn-walk@^6.0.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== -acorn@^5.5.3, acorn@^5.7.3: +acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.2, acorn@^6.0.5: +acorn@^6.0.1, acorn@^6.0.2: version "6.0.5" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a" integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg== @@ -1578,10 +1711,20 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1: - version "6.6.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" - integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g== +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= + +ajv@^6.1.0, ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1: + version "6.7.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96" + integrity sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -1600,6 +1743,11 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" +ansi-colors@^3.0.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + ansi-cyan@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" @@ -1673,14 +1821,6 @@ ansi@^0.3.0, ansi@~0.3.1: resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" integrity sha1-DELU+xcWDVqa8eSEus4cZpIsGyE= -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1909,7 +2049,7 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.4.0: +assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= @@ -1951,7 +2091,7 @@ async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.4.0, async@^2.5.0, async@^2.6.1: +async@^2.0.0, async@^2.4.0, async@^2.5.0, async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== @@ -2035,6 +2175,16 @@ babel-eslint@^9.0.0: eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" +babel-loader@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" + integrity sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw== + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + util.promisify "^1.0.0" + babel-plugin-istanbul@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.0.tgz#6892f529eff65a3e2d33d87dc5888ffa2ecd4a30" @@ -2099,7 +2249,7 @@ babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babylon@^6.15.0, babylon@^6.17.4: +babylon@^6.17.4: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== @@ -2176,6 +2326,14 @@ beeper@^1.0.0: resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak= +benchmark@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-2.1.4.tgz#09f3de31c916425d498cc2ee565a0ebf3c2a5629" + integrity sha1-CfPeMckWQl1JjMLuVloOvzwqVik= + dependencies: + lodash "^4.17.4" + platform "^1.3.3" + better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -2188,6 +2346,11 @@ big-integer@^1.6.7: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.40.tgz#02e4cd4d6e266c4d9ece2469c05cb6439149fc78" integrity sha512-CjhtJp0BViLzP1ZkEnoywjgtFQXS2pomKjAJtIISTCnuHILkLcAXLdFLG/nxsHc4s9kJfc+82Xpg8WNyhfACzQ== +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + bin-build@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc" @@ -2266,13 +2429,6 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bl@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e" - integrity sha1-yba8oI0bwuoA/Ir7Txpf0eHGbk4= - dependencies: - readable-stream "~1.0.26" - blob@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" @@ -2385,24 +2541,12 @@ brorand@^1.0.1: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -browser-pack@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" - integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.8.0" - defined "^1.0.0" - safe-buffer "^5.1.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-resolve@^1.11.0, browser-resolve@^1.11.3, browser-resolve@^1.7.0: +browser-resolve@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== @@ -2445,15 +2589,6 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-fs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-fs/-/browserify-fs-1.0.0.tgz#f075aa8a729d4d1716d066620e386fcc1311a96f" - integrity sha1-8HWqinKdTRcW0GZiDjhvzBMRqW8= - dependencies: - level-filesystem "^1.0.1" - level-js "^2.1.3" - levelup "^0.18.2" - browserify-rsa@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" @@ -2475,67 +2610,13 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@~0.2.0: +browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" -browserify@^16.1.0: - version "16.2.3" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.3.tgz#7ee6e654ba4f92bce6ab3599c3485b1cc7a0ad0b" - integrity sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ== - dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.2.0" - buffer "^5.0.2" - cached-path-relative "^1.0.0" - concat-stream "^1.6.0" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "^1.2.0" - duplexer2 "~0.1.2" - events "^2.0.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "^1.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - mkdirp "^0.5.0" - module-deps "^6.0.0" - os-browserify "~0.3.0" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "^1.1.1" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "0.0.1" - url "~0.11.0" - util "~0.10.1" - vm-browserify "^1.0.0" - xtend "^4.0.0" - browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -2578,11 +2659,6 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= -buffer-es6@^4.9.2, buffer-es6@^4.9.3: - version "4.9.3" - resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404" - integrity sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ= - buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -2613,24 +2689,20 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@^5.0.2: - version "5.2.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" - integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" + isarray "^1.0.0" builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -builtin-modules@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.0.0.tgz#1e587d44b006620d90286cc7a9238bbc6129cab1" - integrity sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg== - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -2661,7 +2733,7 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -cacache@^11.0.1, cacache@^11.3.2: +cacache@^11.0.1, cacache@^11.0.2, cacache@^11.3.2: version "11.3.2" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== @@ -2696,11 +2768,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cached-path-relative@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" - integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== - call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -2893,23 +2960,7 @@ cheerio@^1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chokidar@^2.0.3: +chokidar@^2.0.2, chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== @@ -2934,6 +2985,13 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +chrome-trace-event@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== + dependencies: + tslib "^1.9.0" + ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -3038,11 +3096,6 @@ clone@^1.0.0, clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -clone@~0.1.9: - version "0.1.19" - resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" - integrity sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU= - cmd-shim@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" @@ -3189,16 +3242,6 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combine-source-map@^0.8.0, combine-source-map@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" - integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= - dependencies: - convert-source-map "~1.1.0" - inline-source-map "~0.6.0" - lodash.memoize "~3.0.3" - source-map "~0.5.3" - combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" @@ -3291,7 +3334,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.4.4, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: +concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3336,7 +3379,7 @@ console-stream@^0.1.1: resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ= -constants-browserify@~1.0.0: +constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= @@ -3444,18 +3487,13 @@ conventional-recommended-bump@^4.0.4: meow "^4.0.0" q "^1.5.1" -convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.1.3, convert-source-map@^1.4.0: +convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" -convert-source-map@~1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" - integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -3584,7 +3622,7 @@ crowdin-cli@^0.3.0: yamljs "^0.2.1" yargs "^2.3.0" -crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: +crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== @@ -3947,13 +3985,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -deferred-leveldown@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" - integrity sha1-LO8fER4cV4cNi7uK8mUOWHzS9bQ= - dependencies: - abstract-leveldown "~0.12.1" - define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -4013,16 +4044,6 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -deps-sort@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" - integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U= - dependencies: - JSONStream "^1.0.3" - shasum "^1.0.0" - subarg "^1.0.0" - through2 "^2.0.0" - des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -4059,15 +4080,6 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" -detective@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.1.0.tgz#7a20d89236d7b331ccea65832e7123b5551bb7cb" - integrity sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ== - dependencies: - acorn-node "^1.3.0" - defined "^1.0.0" - minimist "^1.1.1" - dezalgo@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" @@ -4091,6 +4103,11 @@ diff@3.5.0: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" + integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -4215,7 +4232,7 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= -domain-browser@^1.2.0: +domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== @@ -4302,7 +4319,7 @@ duplexer2@0.0.2: dependencies: readable-stream "~1.1.9" -duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2: +duplexer2@^0.1.4, duplexer2@~0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= @@ -4368,6 +4385,11 @@ emoji-regex@^6.5.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ== +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4427,6 +4449,15 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" @@ -4495,7 +4526,7 @@ err-code@^1.0.0: resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= -errno@^0.1.1, errno@~0.1.1, errno@~0.1.7: +errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== @@ -4829,16 +4860,6 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= -estree-walker@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" - integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4= - -estree-walker@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" - integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== - esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -4859,10 +4880,10 @@ eventemitter3@^3.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== -events@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" - integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== eventsource@0.1.6: version "0.1.6" @@ -5352,6 +5373,15 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" +find-cache-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^3.0.0" + find-npm-prefix@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" @@ -5419,14 +5449,6 @@ flow-bin@^0.90.0: resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.90.0.tgz#733b6d29a8c8a22b9a5d273611d9a8402faf3445" integrity sha512-/syDchjhLLL7nELK1ggyWJifGXuMCTz74kvkjR1t9DcmasMrilLl9qAAotsACcNb98etEEJpsCrvP7WL64kadw== -flow-remove-types@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-1.2.3.tgz#6131aefc7da43364bb8b479758c9dec7735d1a18" - integrity sha512-ypq/U3V+t9atYiOuSJd40tekCra03EHKoRsiK/wXGrsZimuum0kdwVY7Yv0HTaoXgHW1WiayomYd+Q3kkvPl9Q== - dependencies: - babylon "^6.15.0" - vlq "^0.2.1" - flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" @@ -5454,11 +5476,6 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -foreach@~2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -5568,7 +5585,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0, fsevents@^1.2.2, fsevents@^1.2.3: +fsevents@^1.2.2, fsevents@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== @@ -5605,13 +5622,6 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -fwd-stream@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa" - integrity sha1-7Sgcq+1G/uz5Ie4y3ExQs3KsfPo= - dependencies: - readable-stream "~1.0.26-4" - gauge@~1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" @@ -5663,11 +5673,6 @@ gentle-fs@^2.0.0: read-cmd-shim "^1.0.1" slide "^1.1.6" -get-assigned-identifiers@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" - integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== - get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -5838,7 +5843,7 @@ glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -6154,7 +6159,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.1, has@^1.0.3: +has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -6177,11 +6182,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hat@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/hat/-/hat-0.0.3.tgz#bb014a9e64b3788aed8005917413d4ff3d502d8a" - integrity sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo= - he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -6230,11 +6230,6 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -htmlescape@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" - integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= - htmlparser2@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" @@ -6327,11 +6322,6 @@ iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, ic dependencies: safer-buffer ">= 2.1.2 < 3" -idb-wrapper@^1.5.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" - integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== - ieee754@^1.1.4: version "1.1.12" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" @@ -6471,7 +6461,7 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -indexof@0.0.1, indexof@~0.0.1: +indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= @@ -6513,13 +6503,6 @@ init-package-json@^1.10.3: validate-npm-package-license "^3.0.1" validate-npm-package-name "^3.0.0" -inline-source-map@~0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= - dependencies: - source-map "~0.5.3" - inquirer@3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347" @@ -6578,22 +6561,6 @@ inquirer@^6.1.0, inquirer@^6.2.0: strip-ansi "^5.0.0" through "^2.3.6" -insert-module-globals@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" - integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== - dependencies: - JSONStream "^1.0.3" - acorn-node "^1.5.2" - combine-source-map "^0.8.0" - concat-stream "^1.6.1" - is-buffer "^1.1.0" - path-is-absolute "^1.0.1" - process "~0.11.0" - through2 "^2.0.0" - undeclared-identifiers "^1.1.2" - xtend "^4.0.0" - interpret@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -6697,7 +6664,7 @@ is-boolean-object@^1.0.0: resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93" integrity sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M= -is-buffer@^1.1.0, is-buffer@^1.1.4, is-buffer@^1.1.5: +is-buffer@^1.1.4, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -6879,11 +6846,6 @@ is-jpg@^1.0.0: resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-1.0.1.tgz#296d57fdd99ce010434a7283e346ab9a1035e975" integrity sha1-KW1X/dmc4BBDSnKD40armhA16XU= -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - is-natural-number@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" @@ -6923,11 +6885,6 @@ is-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-object@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" - integrity sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc= - is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -7080,11 +7037,6 @@ is2@0.0.9: dependencies: deep-is "0.1.2" -is@~0.2.6: - version "0.2.7" - resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" - integrity sha1-OzSixI81mXLzUEKEkZOucmS2NWI= - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -7100,11 +7052,6 @@ isarray@2.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= -isarray@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" - integrity sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA== - isbinaryfile@^3.0.0, isbinaryfile@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" @@ -7112,11 +7059,6 @@ isbinaryfile@^3.0.0, isbinaryfile@^3.0.3: dependencies: buffer-alloc "^1.2.0" -isbuffer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b" - integrity sha1-OMFG2d9Si4v5sHAcPUPPEt8/w5s= - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -7268,6 +7210,11 @@ jest-silent-reporter@^0.1.1: chalk "^2.3.1" jest-util "^23.0.0" +jest-snapshot-serializer-raw@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jest-snapshot-serializer-raw/-/jest-snapshot-serializer-raw-1.1.0.tgz#1d7f09c02f3dbbc3ae70b5b7598fb2f45e37d6c8" + integrity sha512-OL3bXRCnSn7Kur3YTGYj+A3Hwh2eyb5QL5VLQ9OSsPBOva7r3sCB0Jf1rOT/KN3ypzH42hrkDz96lpbiMo+AlQ== + jpegtran-bin@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz#f60ecf4ae999c0bdad2e9fbcdf2b6f0981e7a29b" @@ -7292,11 +7239,6 @@ js-levenshtein@^1.1.3: resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== -js-string-escape@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -7370,7 +7312,7 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -7397,13 +7339,6 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stable-stringify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" - integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= - dependencies: - jsonify "~0.0.0" - json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -7414,6 +7349,13 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" @@ -7462,18 +7404,6 @@ jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" -karma-browserify@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/karma-browserify/-/karma-browserify-6.0.0.tgz#423b719fe80d064ad5ec36f8eb15c399305b9aba" - integrity sha512-G3dGjoy1/6P8I6qTp799fbcAxs4P+1JcyEKUzy9g1/xMakqf9FFPwW2T9iEtCbWoH5WIKD3z+YwGL5ysBhzrsg== - dependencies: - convert-source-map "^1.1.3" - hat "^0.0.3" - js-string-escape "^1.0.0" - lodash "^4.17.10" - minimatch "^3.0.0" - os-shim "^0.1.3" - karma-chrome-launcher@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" @@ -7489,6 +7419,16 @@ karma-mocha@^1.3.0: dependencies: minimist "1.2.0" +karma-webpack@4.0.0-rc.5: + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-4.0.0-rc.5.tgz#7282945c9af56d9fc6e0bb053df9afc73dae1b15" + integrity sha512-JCFLWIpX1Yx/pX086/2K+c1QdsPQI3K4HVcCo4QzYPWvu7rHOHMV2d3YYVMqL1mZd7iqFlcU8vBO8xKH4CpTyg== + dependencies: + async "^2.0.0" + loader-utils "^1.1.0" + source-map "^0.5.6" + webpack-dev-middleware "^3.2.0" + karma@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/karma/-/karma-3.1.4.tgz#3890ca9722b10d1d14b726e1335931455788499e" @@ -7564,15 +7504,6 @@ kleur@^3.0.0: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.1.tgz#4f5b313f5fa315432a400f19a24db78d451ede62" integrity sha512-P3kRv+B+Ra070ng2VKQqW4qW7gd/v3iD8sy/zOdcYRsfiD+QBokQNOps/AfP6Hr48cBhIIBFWckB9aO+IZhrWg== -labeled-stream-splicer@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926" - integrity sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg== - dependencies: - inherits "^2.0.1" - isarray "^2.0.4" - stream-splicer "^2.0.0" - lazy-cache@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" @@ -7634,91 +7565,6 @@ lerna@3.10.5: import-local "^1.0.0" libnpm "^2.0.1" -level-blobs@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" - integrity sha1-mrm5e7mfHtv594o0M+Ie1WOGva8= - dependencies: - level-peek "1.0.6" - once "^1.3.0" - readable-stream "^1.0.26-4" - -level-filesystem@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3" - integrity sha1-oArKmRnEpN+v3KaoEI0iWq3/Y7M= - dependencies: - concat-stream "^1.4.4" - errno "^0.1.1" - fwd-stream "^1.0.4" - level-blobs "^0.1.7" - level-peek "^1.0.6" - level-sublevel "^5.2.0" - octal "^1.0.0" - once "^1.3.0" - xtend "^2.2.0" - -level-fix-range@2.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548" - integrity sha1-xBfWIVlEIVGhnZojZ4aPFyTC1Ug= - dependencies: - clone "~0.1.9" - -level-fix-range@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828" - integrity sha1-vxW5Fa422EcMgh6IPd95zRZCCCg= - -"level-hooks@>=4.4.0 <5": - version "4.5.0" - resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93" - integrity sha1-G5rmGSKTDzMF0aYfxNg8gQLA3ZM= - dependencies: - string-range "~1.2" - -level-js@^2.1.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/level-js/-/level-js-2.2.4.tgz#bc055f4180635d4489b561c9486fa370e8c11697" - integrity sha1-vAVfQYBjXUSJtWHJSG+jcOjBFpc= - dependencies: - abstract-leveldown "~0.12.0" - idb-wrapper "^1.5.0" - isbuffer "~0.0.0" - ltgt "^2.1.2" - typedarray-to-buffer "~1.0.0" - xtend "~2.1.2" - -level-peek@1.0.6, level-peek@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f" - integrity sha1-vsUccqgu5GTTNkNMfIdsP8vM538= - dependencies: - level-fix-range "~1.0.2" - -level-sublevel@^5.2.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a" - integrity sha1-dEwSxy0ucr543eO5tc2E1iGRQTo= - dependencies: - level-fix-range "2.0" - level-hooks ">=4.4.0 <5" - string-range "~1.2.1" - xtend "~2.0.4" - -levelup@^0.18.2: - version "0.18.6" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-0.18.6.tgz#e6a01cb089616c8ecc0291c2a9bd3f0c44e3e5eb" - integrity sha1-5qAcsIlhbI7MApHCqb0/DETj5es= - dependencies: - bl "~0.8.1" - deferred-leveldown "~0.2.0" - errno "~0.1.1" - prr "~0.0.0" - readable-stream "~1.0.26" - semver "~2.3.1" - xtend "~3.0.0" - leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -7882,6 +7728,20 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +loader-runner@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -8042,11 +7902,6 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.memoize@~3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" - integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= - lodash.merge@^4.4.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" @@ -8226,25 +8081,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -ltgt@^2.1.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= - -magic-string@^0.22.5: - version "0.22.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" - integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== - dependencies: - vlq "^0.2.2" - -magic-string@^0.25.1: - version "0.25.1" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e" - integrity sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg== - dependencies: - sourcemap-codec "^1.4.1" - make-dir@^1.0.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -8378,6 +8214,14 @@ mem@^4.0.0: mimic-fn "^1.0.0" p-is-promise "^1.1.0" +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -8614,7 +8458,7 @@ metro@0.48.5, metro@^0.48.1: xpipe "^1.0.5" yargs "^9.0.0" -micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: +micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= @@ -8633,7 +8477,7 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -8831,27 +8675,6 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -module-deps@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.0.tgz#d41a2e790245ce319171e4e7c4d8c73993ba3cd5" - integrity sha512-hKPmO06so6bL/ZvqVNVqdTVO8UAYsi3tQWlCa+z9KuWhoN4KDQtb5hcqQQv58qYiDE21wIvnttZEPiDgEbpwbA== - dependencies: - JSONStream "^1.0.3" - browser-resolve "^1.7.0" - cached-path-relative "^1.0.0" - concat-stream "~1.6.0" - defined "^1.0.0" - detective "^5.0.2" - duplexer2 "^0.1.2" - inherits "^2.0.1" - parents "^1.0.0" - readable-stream "^2.0.2" - resolve "^1.4.0" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" - moo@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e" @@ -8964,6 +8787,11 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +neo-async@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" + integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -9022,6 +8850,35 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= +node-libs-browser@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" + integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "0.0.4" + node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" @@ -9090,7 +8947,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -9291,20 +9148,6 @@ object-keys@^1.0.11, object-keys@^1.0.12: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== -object-keys@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" - integrity sha1-zd7AKZiwkb5CvxA1rjLknxy26mc= - dependencies: - foreach "~2.0.1" - indexof "~0.0.1" - is "~0.2.6" - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -9375,11 +9218,6 @@ object.values@^1.0.4: function-bind "^1.1.1" has "^1.0.3" -octal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" - integrity sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws= - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -9494,7 +9332,7 @@ original@>=0.0.5: dependencies: url-parse "^1.4.3" -os-browserify@~0.3.0: +os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= @@ -9527,11 +9365,6 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" -os-shim@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" - integrity sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc= - os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -9545,13 +9378,6 @@ osenv@0, osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -outpipe@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/outpipe/-/outpipe-1.1.1.tgz#50cf8616365e87e031e29a5ec9339a3da4725fa2" - integrity sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I= - dependencies: - shell-quote "^1.4.2" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -9695,13 +9521,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parents@^1.0.0, parents@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" - integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= - dependencies: - path-platform "~0.11.15" - parse-asn1@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" @@ -9801,10 +9620,10 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= path-dirname@^1.0.0: version "1.0.2" @@ -9823,7 +9642,7 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -9843,11 +9662,6 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-platform@~0.11.15: - version "0.11.15" - resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -9947,6 +9761,11 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +platform@^1.3.3: + version "1.3.5" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" + integrity sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q== + plist@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/plist/-/plist-2.0.1.tgz#0a32ca9481b1c364e92e18dc55c876de9d01da8b" @@ -10312,17 +10131,12 @@ private@^0.1.6: resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-es6@^0.11.2, process-es6@^0.11.6: - version "0.11.6" - resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778" - integrity sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g= - process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== -process@~0.11.0: +process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -10407,11 +10221,6 @@ proxy-addr@~2.0.4: forwarded "~0.1.2" ipaddr.js "1.8.0" -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo= - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -10469,7 +10278,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.3.2, punycode@^1.4.1: +punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -10507,7 +10316,7 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -querystring-es3@~0.2.0: +querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= @@ -10571,7 +10380,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.2.0, range-parser@~1.2.0: +range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= @@ -10797,13 +10606,6 @@ read-cmd-shim@^1.0.1: dependencies: graceful-fs "^4.1.2" -read-only-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" - integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= - dependencies: - readable-stream "^2.0.2" - "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" @@ -10893,7 +10695,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -10906,7 +10708,7 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.26, readable-stream@~1.0.26-4: +"readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= @@ -10916,16 +10718,6 @@ read@1, read@~1.0.1: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^1.0.26-4, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@^3.0.3, readable-stream@^3.0.6: version "3.1.1" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" @@ -10935,6 +10727,16 @@ readable-stream@^3.0.3, readable-stream@^3.0.6: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdir-scoped-modules@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" @@ -11019,11 +10821,6 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@*: - version "0.13.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.1.tgz#522ea2aafd9200a00eee143dc14219a35a0f3991" - integrity sha512-5KzMIyPLvfdPmvsdlYsHqITrDfK9k7bmvf97HvHSN4810i254ponbxCQ1NukpRWlu6en2MBWzAlhDExEKISwAA== - regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" @@ -11034,7 +10831,7 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.12.0, regenerator-runtime@^0.12.1: +regenerator-runtime@^0.12.0: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== @@ -11253,7 +11050,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.4, resolve@^1.1.6, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1, resolve@^1.9.0: +resolve@^1.1.6, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1, resolve@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ== @@ -11303,95 +11100,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-babel@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.0.tgz#1900e66af70c3975fef26a54111b87ee22a50974" - integrity sha512-HoNMaLA56MPZ9XCeG+RD2QzTySVe168R/k6bPEm8noB9PSK8wBnY4matFluwmH2Bj3PQdqYAknV1jDqw8GAc8g== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.3.0" - -rollup-plugin-commonjs@^9.1.8: - version "9.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz#4604e25069e0c78a09e08faa95dc32dec27f7c89" - integrity sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA== - dependencies: - estree-walker "^0.5.2" - magic-string "^0.25.1" - resolve "^1.8.1" - rollup-pluginutils "^2.3.3" - -rollup-plugin-flow@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-flow/-/rollup-plugin-flow-1.1.1.tgz#6ce568f1dd559666b77ab76b4bae251407528db6" - integrity sha1-bOVo8d1Vlma3erdrS64lFAdSjbY= - dependencies: - flow-remove-types "^1.1.0" - rollup-pluginutils "^1.5.1" - -rollup-plugin-json@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-3.1.0.tgz#7c1daf60c46bc21021ea016bd00863561a03321b" - integrity sha512-BlYk5VspvGpjz7lAwArVzBXR60JK+4EKtPkCHouAWg39obk9S61hZYJDBfMK+oitPdoe11i69TlxKlMQNFC/Uw== - dependencies: - rollup-pluginutils "^2.3.1" - -rollup-plugin-node-builtins@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz#24a1fed4a43257b6b64371d8abc6ce1ab14597e9" - integrity sha1-JKH+1KQyV7a2Q3HYq8bOGrFFl+k= - dependencies: - browserify-fs "^1.0.0" - buffer-es6 "^4.9.2" - crypto-browserify "^3.11.0" - process-es6 "^0.11.2" - -rollup-plugin-node-globals@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz#5e1f24a9bb97c0ef51249f625e16c7e61b7c020b" - integrity sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== - dependencies: - acorn "^5.7.3" - buffer-es6 "^4.9.3" - estree-walker "^0.5.2" - magic-string "^0.22.5" - process-es6 "^0.11.6" - rollup-pluginutils "^2.3.1" - -rollup-plugin-node-resolve@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.0.tgz#9bc6b8205e9936cc0e26bba2415f1ecf1e64d9b2" - integrity sha512-7Ni+/M5RPSUBfUaP9alwYQiIKnKeXCOHiqBpKUl9kwp3jX5ZJtgXAait1cne6pGEVUUztPD6skIKH9Kq9sNtfw== - dependencies: - builtin-modules "^3.0.0" - is-module "^1.0.0" - resolve "^1.8.1" - -rollup-pluginutils@^1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" - integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg= - dependencies: - estree-walker "^0.2.1" - minimatch "^3.0.2" - -rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.1, rollup-pluginutils@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" - integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA== - dependencies: - estree-walker "^0.5.2" - micromatch "^2.3.11" - -rollup@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.1.0.tgz#461a7534b55be48aa4a6e6810a1543a5769e75d1" - integrity sha512-NK03gkkOz0CchHBMGomcNqa6U3jLNzHuWK9SI0+1FV475JA6cQxVtjlDcQoKKDNIQ3IwYumIlgoKYDEWUyFBwQ== - dependencies: - "@types/estree" "0.0.39" - "@types/node" "*" - acorn "^6.0.5" - rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" @@ -11524,6 +11232,23 @@ scheduler@^0.12.0: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@^0.4.4: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + seek-bzip@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" @@ -11558,11 +11283,6 @@ semver@^4.0.3: resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" integrity sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto= -semver@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" - integrity sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI= - semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -11592,6 +11312,11 @@ serialize-error@^2.1.0: resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= +serialize-javascript@^1.4.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" + integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw== + serve-static@1.13.2, serve-static@^1.13.1: version "1.13.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" @@ -11639,7 +11364,7 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.5: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -11649,7 +11374,7 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: +sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== @@ -11657,14 +11382,6 @@ sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: inherits "^2.0.1" safe-buffer "^5.0.1" -shasum@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" - integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= - dependencies: - json-stable-stringify "~0.0.0" - sha.js "~2.4.4" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -11677,7 +11394,7 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -shell-quote@1.6.1, shell-quote@^1.4.2, shell-quote@^1.6.1: +shell-quote@1.6.1, shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= @@ -11706,11 +11423,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -simple-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" - integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= - simple-plist@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-0.2.1.tgz#71766db352326928cf3a807242ba762322636723" @@ -11887,6 +11599,11 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" @@ -11898,7 +11615,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@^0.5.9: +source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.6: version "0.5.10" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== @@ -11911,7 +11628,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -11921,11 +11638,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sourcemap-codec@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" - integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== - sparkles@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" @@ -12067,7 +11779,7 @@ stealthy-require@^1.1.0: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-browserify@^2.0.0: +stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= @@ -12096,7 +11808,7 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-http@^2.0.0: +stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== @@ -12112,14 +11824,6 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= -stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" - integrity sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.2" - streamroller@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" @@ -12143,11 +11847,6 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" -string-range@~1.2, string-range@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" - integrity sha1-qJPtNH5yKZvIO++78qaSqNI51d0= - string-template@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" @@ -12184,7 +11883,7 @@ string_decoder@0.10, string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== @@ -12299,13 +11998,6 @@ strong-log-transformer@^2.0.0: minimist "^1.2.0" through "^2.3.4" -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= - dependencies: - minimist "^1.1.0" - sum-up@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" @@ -12384,13 +12076,6 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= -syntax-error@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" - integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== - dependencies: - acorn-node "^1.2.0" - table@^5.0.2: version "5.2.0" resolved "https://registry.yarnpkg.com/table/-/table-5.2.0.tgz#2e38bd1f16dd3f97085ac80cdc574ad9198af04d" @@ -12401,6 +12086,11 @@ table@^5.0.2: slice-ansi "2.0.0" string-width "^2.1.1" +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" + integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== + tar-stream@^1.1.1: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" @@ -12486,6 +12176,29 @@ tempfile@^2.0.0: temp-dir "^1.0.0" uuid "^3.0.1" +terser-webpack-plugin@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz#7545da9ae5f4f9ae6a0ac961eb46f5e7c845cc26" + integrity sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw== + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.8.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser@^3.8.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.1.tgz#cc4764014af570bc79c79742358bd46926018a32" + integrity sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + source-map-support "~0.5.6" + test-exclude@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.0.0.tgz#cdce7cece785e0e829cd5c2b27baf18bc583cfb7" @@ -12558,12 +12271,12 @@ timed-out@^3.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" integrity sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc= -timers-browserify@^1.0.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" - integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== dependencies: - process "~0.11.0" + setimmediate "^1.0.4" tiny-emitter@^2.0.0: version "2.0.2" @@ -12728,10 +12441,10 @@ tslib@^1.8.0, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== -tty-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" - integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= tunnel-agent@^0.4.0: version "0.4.3" @@ -12765,11 +12478,6 @@ type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.18" -typedarray-to-buffer@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz#9bb8ba0e841fb3f4cf1fe7c245e9f3fa8a5fe99c" - integrity sha1-m7i6DoQfs/TPH+fCRenz+opf6Zw= - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -12821,21 +12529,6 @@ umask@^1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -umd@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" - integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== - -undeclared-identifiers@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.2.tgz#7d850a98887cff4bd0bf64999c014d08ed6d1acc" - integrity sha512-13EaeocO4edF/3JKime9rD7oB6QI8llAGhgn5fKOPyfkJbRb6NFv9pYV6dFEmpa4uRjKeBqLZP8GpuzqHlKDMQ== - dependencies: - acorn-node "^1.3.0" - get-assigned-identifiers "^1.2.0" - simple-concat "^1.0.0" - xtend "^4.0.1" - underscore.string@~2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" @@ -13034,7 +12727,7 @@ url-regex@^3.0.0: dependencies: ip-regex "^1.0.1" -url@~0.11.0: +url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= @@ -13073,13 +12766,20 @@ util.promisify@^1.0.0, util.promisify@~1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util@0.10.3, util@~0.10.1: +util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= dependencies: inherits "2.0.1" +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -13213,15 +12913,12 @@ vinyl@^1.0.0: clone-stats "^0.0.1" replace-ext "0.0.1" -vlq@^0.2.1, vlq@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== - -vm-browserify@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" - integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= + dependencies: + indexof "0.0.1" void-elements@^2.0.0: version "2.0.1" @@ -13262,18 +12959,14 @@ watch@~0.18.0: exec-sh "^0.2.0" minimist "^1.2.0" -watchify@^3.9.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.11.0.tgz#03f1355c643955e7ab8dcbf399f624644221330f" - integrity sha512-7jWG0c3cKKm2hKScnSAMUEUjRJKXUShwMPk0ASVhICycQhwND3IMAdhJYmc1mxxKzBUJTSF5HZizfrKrS6BzkA== +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== dependencies: - anymatch "^1.3.0" - browserify "^16.1.0" - chokidar "^1.0.0" - defined "^1.0.0" - outpipe "^1.1.0" - through2 "^2.0.0" - xtend "^4.0.0" + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" wcwidth@^1.0.0: version "1.0.1" @@ -13295,6 +12988,62 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webpack-dev-middleware@^3.2.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.5.1.tgz#9265b7742ef50f54f54c1d9af022fc17c1be9b88" + integrity sha512-4dwCh/AyMOYAybggUr8fiCkRnjVDp+Cqlr9c+aaNB3GJYgRGYQWJ1YX/WAKUNA9dPNHZ6QSN2lYDKqjKSI8Vqw== + dependencies: + memory-fs "~0.4.1" + mime "^2.3.1" + range-parser "^1.0.3" + webpack-log "^2.0.0" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-sources@^1.1.0, webpack-sources@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.28.4: + version "4.28.4" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.28.4.tgz#1ddae6c89887d7efb752adf0c3cd32b9b07eacd0" + integrity sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-module-context" "1.7.11" + "@webassemblyjs/wasm-edit" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" + acorn "^5.6.2" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.4" + tapable "^1.1.0" + terser-webpack-plugin "^1.1.0" + watchpack "^1.5.0" + webpack-sources "^1.3.0" + websocket-driver@>=0.5.1: version "0.7.0" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" @@ -13382,7 +13131,7 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -worker-farm@^1.6.0: +worker-farm@^1.5.2, worker-farm@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== @@ -13538,31 +13287,6 @@ xpipe@^1.0.5: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= -xtend@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" - integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak= - -xtend@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee" - integrity sha1-XqZXptukRwacLlnFihE4ywxebO4= - dependencies: - is-object "~0.1.2" - object-keys "~0.2.0" - -xtend@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= - dependencies: - object-keys "~0.4.0" - -xtend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" - integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo= - y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"