From a3bb9220255169dca6474f164555c0b07d7957fa Mon Sep 17 00:00:00 2001 From: Tim Seckinger Date: Sat, 15 May 2021 11:42:39 +0100 Subject: [PATCH 01/65] fix(jest-snapshot): @babel/core peer dependency warnings (#10946) --- packages/jest-snapshot/package.json | 11 +---- yarn.lock | 73 ++++++++++++++++++++++++++--- 2 files changed, 67 insertions(+), 17 deletions(-) diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json index 1c630cfe4905..56a3c05ce3a2 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -14,6 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { + "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", "@babel/parser": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", @@ -39,10 +40,8 @@ "semver": "^7.3.2" }, "devDependencies": { - "@babel/core": "^7.7.2", "@babel/preset-flow": "^7.7.2", "@babel/preset-react": "^7.7.2", - "@babel/traverse": "^7.3.4", "@jest/test-utils": "^27.0.0-next.9", "@types/graceful-fs": "^4.1.3", "@types/natural-compare": "^1.4.0", @@ -51,14 +50,6 @@ "ansi-styles": "^5.0.0", "prettier": "^2.0.0" }, - "peerDependencies": { - "@babel/core": "^7.7.2" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - } - }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, diff --git a/yarn.lock b/yarn.lock index 59642888f96d..d5571f7a19df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -335,6 +335,17 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/generator@npm:7.14.2" + dependencies: + "@babel/types": ^7.14.2 + jsesc: ^2.5.1 + source-map: ^0.5.0 + checksum: eacc93d3446dec6fac064cd884ac6e2ecbcfed65f8de069da72855a8124d33004a9dc9f06833e18fae2e352929c493b46035785f948549d2e9d503af0bef8a79 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.10.4, @babel/helper-annotate-as-pure@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-annotate-as-pure@npm:7.12.13" @@ -433,6 +444,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/helper-function-name@npm:7.14.2" + dependencies: + "@babel/helper-get-function-arity": ^7.12.13 + "@babel/template": ^7.12.13 + "@babel/types": ^7.14.2 + checksum: 36bf5e4126b5bdf7c7e686ca487f9a91857d723d457a2608645d10ed7b0ba3da0c0e0cd0b31efe71091ea80656bf98578e3bad50c6c7fab771fd5de439aeebad + languageName: node + linkType: hard + "@babel/helper-get-function-arity@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-get-function-arity@npm:7.12.13" @@ -567,6 +589,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/helper-validator-identifier@npm:7.14.0" + checksum: bd67b4a1a49eba151aa0fe95508579638287fee0a3e7a3bf8c5ab480de8eaad4b4231c523d7db401eb0cecc7cf03b76ee72453fab53bab8cb8ccd154bb67feb7 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.12.17": version: 7.12.17 resolution: "@babel/helper-validator-option@npm:7.12.17" @@ -617,6 +646,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/parser@npm:7.14.2" + bin: + parser: ./bin/babel-parser.js + checksum: 18dffc18a2c15f8877988c9b5a46c87f1763e8a383c3210c9b5b651955b1ac46dc54da27acc09acd7fb917f37e0bd92b8985dc4c9d7f1e750dfccbcea730aa0e + languageName: node + linkType: hard + "@babel/plugin-proposal-async-generator-functions@npm:^7.13.8": version: 7.13.8 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.13.8" @@ -1724,7 +1762,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.13, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.3.4": +"@babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.13, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0": version: 7.13.0 resolution: "@babel/traverse@npm:7.13.0" dependencies: @@ -1741,6 +1779,22 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.7.2": + version: 7.14.2 + resolution: "@babel/traverse@npm:7.14.2" + dependencies: + "@babel/code-frame": ^7.12.13 + "@babel/generator": ^7.14.2 + "@babel/helper-function-name": ^7.14.2 + "@babel/helper-split-export-declaration": ^7.12.13 + "@babel/parser": ^7.14.2 + "@babel/types": ^7.14.2 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 76f57f7a718c5ac17f72eb729e68d6135e37ee6201642d25c92d8add7b87eb492c7af40bd5193c27cca83cb60a649c9ccbe0f500e37569609e044b0560602cb7 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.17, @babel/types@npm:^7.12.6, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.13.0 resolution: "@babel/types@npm:7.13.0" @@ -1752,6 +1806,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/types@npm:7.14.2" + dependencies: + "@babel/helper-validator-identifier": ^7.14.0 + to-fast-properties: ^2.0.0 + checksum: 34893ac415826cd2ddead0511be9c3cb876bf626148b00b0a471c4630b193939ba46a9bf9d8b2be88e46fceb3ae9204ed7488ceb6a08a67550211d40df65a7c7 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -13280,7 +13344,7 @@ fsevents@^1.2.7: "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/preset-flow": ^7.7.2 "@babel/preset-react": ^7.7.2 - "@babel/traverse": ^7.3.4 + "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 "@jest/test-utils": ^27.0.0-next.9 "@jest/transform": ^27.0.0-next.9 @@ -13307,11 +13371,6 @@ fsevents@^1.2.7: prettier: ^2.0.0 pretty-format: ^27.0.0-next.9 semver: ^7.3.2 - peerDependencies: - "@babel/core": ^7.7.2 - peerDependenciesMeta: - "@babel/core": - optional: true languageName: unknown linkType: soft From 04b75978178ccb31bccb9f9b2f8a0db2fecc271e Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sat, 15 May 2021 12:54:35 +0200 Subject: [PATCH 02/65] chore: run lock workflow every day instead of every hour (#11396) --- .github/workflows/lock.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index 1944b949bca9..9ecdfbd67b18 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -2,7 +2,7 @@ name: 'Lock Threads' on: schedule: - - cron: '0 * * * *' + - cron: '0 0 * * *' jobs: lock: From ecb0a9b89ace05187b8110ed3653bb570107340b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adem=C3=ADlson=20F=2E=20Tonato?= <5417662+ftonato@users.noreply.github.com> Date: Sun, 16 May 2021 07:39:26 +0100 Subject: [PATCH 03/65] refactor: use nullish coalescing operator on getProjectDisplayName (#11410) --- packages/expect/src/utils.ts | 2 -- packages/jest-core/src/getProjectDisplayName.ts | 6 +----- packages/jest-fake-timers/src/legacyFakeTimers.ts | 3 +-- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/packages/expect/src/utils.ts b/packages/expect/src/utils.ts index d59efca71fd3..858f7a7d03cb 100644 --- a/packages/expect/src/utils.ts +++ b/packages/expect/src/utils.ts @@ -350,9 +350,7 @@ export const partition = ( export const isError = (value: unknown): value is Error => { switch (Object.prototype.toString.call(value)) { case '[object Error]': - return true; case '[object Exception]': - return true; case '[object DOMException]': return true; default: diff --git a/packages/jest-core/src/getProjectDisplayName.ts b/packages/jest-core/src/getProjectDisplayName.ts index d9e8271c622a..b903c6e35ee8 100644 --- a/packages/jest-core/src/getProjectDisplayName.ts +++ b/packages/jest-core/src/getProjectDisplayName.ts @@ -10,9 +10,5 @@ import type {Config} from '@jest/types'; export default function getProjectDisplayName( projectConfig: Config.ProjectConfig, ): string | undefined { - const {displayName} = projectConfig; - if (!displayName) { - return undefined; - } - return displayName.name; + return projectConfig.displayName?.name || undefined; } diff --git a/packages/jest-fake-timers/src/legacyFakeTimers.ts b/packages/jest-fake-timers/src/legacyFakeTimers.ts index ab918f89b3c9..55d9121ed405 100644 --- a/packages/jest-fake-timers/src/legacyFakeTimers.ts +++ b/packages/jest-fake-timers/src/legacyFakeTimers.ts @@ -526,9 +526,8 @@ export default class FakeTimers { switch (timer.type) { case 'timeout': - const callback = timer.callback; this._timers.delete(timerHandle); - callback(); + timer.callback(); break; case 'interval': From b16082c82ae8a7a00b76c33c6177af6d64a47198 Mon Sep 17 00:00:00 2001 From: volkan Date: Sun, 16 May 2021 10:01:33 +0300 Subject: [PATCH 04/65] Fix locale issue #10014 (#11412) --- CHANGELOG.md | 1 + package.json | 2 +- packages/jest-validate/package.json | 2 +- packages/jest-validate/src/validateCLIOptions.ts | 2 +- yarn.lock | 4 ++-- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e38d4a8e26a..4dfc574b9fdc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,7 @@ - `[jest-transform]` [**BREAKING**] Refactor API of transformers to pass an options bag rather than separate `config` and other options ([#10834](https://github.com/facebook/jest/pull/10834)) - `[jest-types]` Fix `Config.ts` `projects` types ([#11285](https://github.com/facebook/jest/pull/11285)) - `[jest-util]` Replace micromatch with picomatch to fix issues with negated globs ([#11287](https://github.com/facebook/jest/pull/11287)) +- `[jest-validate]` Use `en-US` locale to avoid case conversion problems while validating CLI options on machines with some certain locales(e.g. Turkish) set as default locale. ([#11412](https://github.com/facebook/jest/pull/11412)) - `[jest-worker]` [**BREAKING**] Use named exports ([#10623](https://github.com/facebook/jest/pull/10623)) - `[jest-worker]` Do not swallow errors during serialization ([#10984](https://github.com/facebook/jest/pull/10984)) - `[jest-worker]` Handle `ERR_IPC_CHANNEL_CLOSED` errors properly ([#11143](https://github.com/facebook/jest/pull/11143)) diff --git a/package.json b/package.json index 9199313338af..f8531e6ba0d1 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", "babel-plugin-replace-ts-export-assignment": "^0.0.2", - "camelcase": "^6.0.0", + "camelcase": "^6.2.0", "chalk": "^4.0.0", "chokidar": "^3.3.0", "codecov": "^3.0.0", diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json index e0770b3dfd98..58694e2f73b9 100644 --- a/packages/jest-validate/package.json +++ b/packages/jest-validate/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@jest/types": "^27.0.0-next.8", - "camelcase": "^6.0.0", + "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^27.0.0-next.9", "leven": "^3.1.0", diff --git a/packages/jest-validate/src/validateCLIOptions.ts b/packages/jest-validate/src/validateCLIOptions.ts index ea445fc932b8..ae71952eeefa 100644 --- a/packages/jest-validate/src/validateCLIOptions.ts +++ b/packages/jest-validate/src/validateCLIOptions.ts @@ -78,7 +78,7 @@ export default function validateCLIOptions( ); const unrecognizedOptions = Object.keys(argv).filter( arg => - !allowedOptions.has(camelcase(arg)) && + !allowedOptions.has(camelcase(arg, {locale: 'en-US'})) && !allowedOptions.has(arg) && (!rawArgv.length || rawArgv.includes(arg)), [], diff --git a/yarn.lock b/yarn.lock index d5571f7a19df..a53c8341c1e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2594,7 +2594,7 @@ __metadata: ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 babel-plugin-replace-ts-export-assignment: ^0.0.2 - camelcase: ^6.0.0 + camelcase: ^6.2.0 chalk: ^4.0.0 chokidar: ^3.3.0 codecov: ^3.0.0 @@ -13411,7 +13411,7 @@ fsevents@^1.2.7: dependencies: "@jest/types": ^27.0.0-next.8 "@types/yargs": ^16.0.0 - camelcase: ^6.0.0 + camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^27.0.0-next.9 leven: ^3.1.0 From db643a1cc8b8ff02b524ff258074ea8c92012af6 Mon Sep 17 00:00:00 2001 From: Sam Pierce Lolla Date: Sun, 16 May 2021 03:53:50 -0400 Subject: [PATCH 05/65] Link to Jest config (#11106) --- docs/Puppeteer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Puppeteer.md b/docs/Puppeteer.md index 504056c75992..237d7dcce664 100644 --- a/docs/Puppeteer.md +++ b/docs/Puppeteer.md @@ -17,7 +17,7 @@ With the [Global Setup/Teardown](Configuration.md#globalsetup-string) and [Async yarn add --dev jest-puppeteer ``` -2. Specify preset in your Jest configuration: +2. Specify preset in your [Jest configuration](Configuration.md): ```json { From bdd6282c288e58a16f6d2c79b0d2dec80e07f1de Mon Sep 17 00:00:00 2001 From: Vincent Ricard Date: Mon, 17 May 2021 00:33:49 +0200 Subject: [PATCH 06/65] Move all default values into `jest-config` (#9924) --- CHANGELOG.md | 1 + packages/jest-cli/package.json | 2 - packages/jest-cli/src/cli/args.ts | 51 +------------------------ packages/jest-config/package.json | 2 + packages/jest-config/src/Defaults.ts | 6 +++ packages/jest-config/src/ValidConfig.ts | 5 +++ packages/jest-types/src/Config.ts | 6 +++ packages/jest-util/package.json | 2 +- yarn.lock | 25 +++++------- 9 files changed, 31 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4dfc574b9fdc..1fcaf6e96db8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ - `[jest-cli]` Print custom error if error thrown from global hooks is not an error already ([#11003](https://github.com/facebook/jest/pull/11003)) - `[jest-cli]` Allow running multiple "projects" from programmatic API ([#11307](https://github.com/facebook/jest/pull/11307)) - `[jest-cli]` Fix missing collectCoverage after init ([#11353](https://github.com/facebook/jest/pull/11353)) +- `[jest-cli, jest-config, jest-types]` Move all default values into `jest-config` ([#9924](https://github.com/facebook/jest/pull/9924)) - `[jest-config]` [**BREAKING**] Change default file extension order by moving json behind ts and tsx ([10572](https://github.com/facebook/jest/pull/10572)) - `[jest-console]` `console.dir` now respects the second argument correctly ([#10638](https://github.com/facebook/jest/pull/10638)) - `[jest-core]` Don't report PerformanceObserver as open handle ([#11123](https://github.com/facebook/jest/pull/11123)) diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index c17aa298c841..aee8867ddd8e 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -17,7 +17,6 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "is-ci": "^3.0.0", "jest-config": "^27.0.0-next.9", "jest-util": "^27.0.0-next.9", "jest-validate": "^27.0.0-next.9", @@ -28,7 +27,6 @@ "@jest/test-utils": "^27.0.0-next.9", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.3", - "@types/is-ci": "^2.0.0", "@types/prompts": "^2.0.1", "@types/yargs": "^16.0.0" }, diff --git a/packages/jest-cli/src/cli/args.ts b/packages/jest-cli/src/cli/args.ts index 60384b41fe1c..3e378b31d15c 100644 --- a/packages/jest-cli/src/cli/args.ts +++ b/packages/jest-cli/src/cli/args.ts @@ -5,7 +5,6 @@ * LICENSE file in the root directory of this source tree. */ -import isCI = require('is-ci'); import type {Config} from '@jest/types'; import {constants, isJSONString} from 'jest-config'; @@ -89,9 +88,9 @@ export const usage = 'Usage: $0 [--config=] [TestPathPattern]'; export const docs = 'Documentation: https://jestjs.io/'; +// The default values are all set in jest-config export const options = { all: { - default: undefined, description: 'The opposite of `onlyChanged`. If `onlyChanged` is set by ' + 'default, running jest with `--all` will force Jest to run all tests ' + @@ -99,19 +98,16 @@ export const options = { type: 'boolean', }, automock: { - default: undefined, description: 'Automock all files by default.', type: 'boolean', }, bail: { alias: 'b', - default: undefined, description: 'Exit the test suite immediately after `n` number of failing tests.', type: 'boolean', }, browser: { - default: undefined, description: 'Respect the "browser" field in package.json ' + 'when resolving modules. Some packages export different versions ' + @@ -119,7 +115,6 @@ export const options = { type: 'boolean', }, cache: { - default: undefined, description: 'Whether to use the transform cache. Disable the cache ' + 'using --no-cache.', @@ -132,7 +127,6 @@ export const options = { type: 'string', }, changedFilesWithAncestor: { - default: undefined, description: 'Runs tests related to the current changes and the changes made in the ' + 'last commit. Behaves similarly to `--onlyChanged`.', @@ -147,7 +141,6 @@ export const options = { type: 'string', }, ci: { - default: isCI, description: 'Whether to run Jest in continuous integration (CI) mode. ' + 'This option is on by default in most popular CI environments. It will ' + @@ -155,21 +148,18 @@ export const options = { type: 'boolean', }, clearCache: { - default: undefined, description: 'Clears the configured Jest cache directory and then exits. ' + 'Default directory can be found by calling jest --showConfig', type: 'boolean', }, clearMocks: { - default: undefined, description: 'Automatically clear mock calls and instances between every ' + 'test. Equivalent to calling jest.clearAllMocks() between each test.', type: 'boolean', }, collectCoverage: { - default: undefined, description: 'Alias for --coverage.', type: 'boolean', }, @@ -185,14 +175,12 @@ export const options = { type: 'array', }, color: { - default: undefined, description: 'Forces test results output color highlighting (even if ' + 'stdout is not a TTY). Set to false if you would like to have no colors.', type: 'boolean', }, colors: { - default: undefined, description: 'Alias for `--color`.', type: 'boolean', }, @@ -206,7 +194,6 @@ export const options = { type: 'string', }, coverage: { - default: undefined, description: 'Indicates that test coverage information should be ' + 'collected and reported in the output.', @@ -242,12 +229,10 @@ export const options = { type: 'string', }, debug: { - default: undefined, description: 'Print debugging info about your jest config.', type: 'boolean', }, detectLeaks: { - default: false, description: '**EXPERIMENTAL**: Detect memory leaks in tests. After executing a ' + 'test, it will try to garbage collect the global object used, and fail ' + @@ -255,7 +240,6 @@ export const options = { type: 'boolean', }, detectOpenHandles: { - default: false, description: 'Print out remaining open handles preventing Jest from exiting at the ' + 'end of a test run. Implies `runInBand`.', @@ -269,18 +253,15 @@ export const options = { type: 'string', }, errorOnDeprecated: { - default: false, description: 'Make calling deprecated APIs throw helpful error messages.', type: 'boolean', }, expand: { alias: 'e', - default: undefined, description: 'Use this flag to show full diffs instead of a patch.', type: 'boolean', }, filter: { - default: undefined, description: 'Path to a module exporting a filtering function. This method receives ' + 'a list of tests which can be manipulated to exclude tests from ' + @@ -289,7 +270,6 @@ export const options = { type: 'string', }, findRelatedTests: { - default: undefined, description: 'Find related tests for a list of source files that were ' + 'passed in as arguments. Useful for pre-commit hook integration to run ' + @@ -297,7 +277,6 @@ export const options = { type: 'boolean', }, forceExit: { - default: undefined, description: 'Force Jest to exit after all tests have completed running. ' + 'This is useful when resources set up by test code cannot be ' + @@ -332,21 +311,18 @@ export const options = { type: 'boolean', }, json: { - default: undefined, description: 'Prints the test results in JSON. This mode will send all ' + 'other test output and user messages to stderr.', type: 'boolean', }, lastCommit: { - default: undefined, description: 'Run all tests affected by file changes in the last commit made. ' + 'Behaves similarly to `--onlyChanged`.', type: 'boolean', }, listTests: { - default: false, description: 'Lists all tests Jest will run given the arguments and ' + 'exits. Most useful in a CI system together with `--findRelatedTests` ' + @@ -354,7 +330,6 @@ export const options = { type: 'boolean', }, logHeapUsage: { - default: undefined, description: 'Logs the heap usage after every test. Useful to debug ' + 'memory leaks. Use together with `--runInBand` and `--expose-gc` in ' + @@ -362,7 +337,6 @@ export const options = { type: 'boolean', }, maxConcurrency: { - default: 5, description: 'Specifies the maximum number of tests that are allowed to run' + 'concurrently. This only affects tests using `test.concurrent`.', @@ -416,23 +390,19 @@ export const options = { type: 'array', }, noStackTrace: { - default: undefined, description: 'Disables stack trace in test results output', type: 'boolean', }, notify: { - default: undefined, description: 'Activates notifications for test results.', type: 'boolean', }, notifyMode: { - default: 'failure-change', description: 'Specifies when notifications will appear for test results.', type: 'string', }, onlyChanged: { alias: 'o', - default: undefined, description: 'Attempts to identify which tests to run based on which ' + "files have changed in the current repository. Only works if you're " + @@ -441,7 +411,6 @@ export const options = { }, onlyFailures: { alias: 'f', - default: undefined, description: 'Run tests that failed in the previous execution.', type: 'boolean', }, @@ -452,7 +421,6 @@ export const options = { type: 'string', }, passWithNoTests: { - default: false, description: 'Will not fail if no tests are found (for example while using `--testPathPattern`.)', type: 'boolean', @@ -462,7 +430,6 @@ export const options = { type: 'string', }, prettierPath: { - default: undefined, description: 'The path to the "prettier" module used for inline snapshots.', type: 'string', }, @@ -479,14 +446,12 @@ export const options = { type: 'array', }, resetMocks: { - default: undefined, description: 'Automatically reset mock state between every test. ' + 'Equivalent to calling jest.resetAllMocks() between each test.', type: 'boolean', }, resetModules: { - default: undefined, description: 'If enabled, the module registry for every test file will ' + 'be reset before running each individual test.', @@ -497,7 +462,6 @@ export const options = { type: 'string', }, restoreMocks: { - default: undefined, description: 'Automatically restore mock state and implementation between every test. ' + 'Equivalent to calling jest.restoreAllMocks() between each test.', @@ -518,7 +482,6 @@ export const options = { }, runInBand: { alias: 'i', - default: undefined, description: 'Run all tests serially in the current process (rather than ' + 'creating a worker pool of child processes that run tests). This ' + @@ -527,7 +490,6 @@ export const options = { type: 'boolean', }, runTestsByPath: { - default: false, description: 'Used when provided patterns are exact file paths. This avoids ' + 'converting them into a regular expression and matching it against ' + @@ -561,17 +523,14 @@ export const options = { type: 'array', }, showConfig: { - default: undefined, description: 'Print your jest config and then exits.', type: 'boolean', }, silent: { - default: undefined, description: 'Prevent tests from printing messages through the console.', type: 'boolean', }, skipFilter: { - default: undefined, description: 'Disables the filter provided by --filter. Useful for CI jobs, or ' + 'local enforcement when fixing tests.', @@ -599,7 +558,6 @@ export const options = { type: 'string', // number }, testLocationInResults: { - default: false, description: 'Add `location` information to the test results', type: 'boolean', }, @@ -692,7 +650,6 @@ export const options = { }, updateSnapshot: { alias: 'u', - default: undefined, description: 'Use this flag to re-record snapshots. ' + 'Can be used together with a test suite pattern or with ' + @@ -701,24 +658,20 @@ export const options = { type: 'boolean', }, useStderr: { - default: undefined, description: 'Divert all output to stderr.', type: 'boolean', }, verbose: { - default: undefined, description: 'Display individual test results with the test suite hierarchy.', type: 'boolean', }, version: { alias: 'v', - default: undefined, description: 'Print the version and exit', type: 'boolean', }, watch: { - default: undefined, description: 'Watch files for changes and rerun tests related to ' + 'changed files. If you want to re-run all tests when a file has ' + @@ -726,7 +679,6 @@ export const options = { type: 'boolean', }, watchAll: { - default: undefined, description: 'Watch files for changes and rerun all tests. If you want ' + 'to re-run only the tests related to the changed files, use the ' + @@ -742,7 +694,6 @@ export const options = { type: 'array', }, watchman: { - default: undefined, description: 'Whether to use watchman for file crawling. Disable using ' + '--no-watchman.', diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index 0b1f97ca8dd7..48a9ce63672f 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -30,6 +30,7 @@ "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", "jest-circus": "^27.0.0-next.9", "jest-environment-jsdom": "^27.0.0-next.9", "jest-environment-node": "^27.0.0-next.9", @@ -46,6 +47,7 @@ "@types/babel__core": "^7.0.4", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.3", + "@types/is-ci": "^3.0.0", "@types/micromatch": "^4.0.1", "jest-snapshot-serializer-raw": "^1.1.0", "strip-ansi": "^6.0.0", diff --git a/packages/jest-config/src/Defaults.ts b/packages/jest-config/src/Defaults.ts index 7522da678ee3..d8a31dc02df3 100644 --- a/packages/jest-config/src/Defaults.ts +++ b/packages/jest-config/src/Defaults.ts @@ -6,6 +6,7 @@ */ import {sep} from 'path'; +import isCI = require('is-ci'); import type {Config} from '@jest/types'; import {replacePathSepForRegex} from 'jest-regex-util'; import {NODE_MODULES} from './constants'; @@ -19,11 +20,14 @@ const defaultOptions: Config.DefaultOptions = { cache: true, cacheDirectory: getCacheDirectory(), changedFilesWithAncestor: false, + ci: isCI, clearMocks: false, collectCoverage: false, coveragePathIgnorePatterns: [NODE_MODULES_REGEXP], coverageProvider: 'babel', coverageReporters: ['json', 'text', 'lcov', 'clover'], + detectLeaks: false, + detectOpenHandles: false, errorOnDeprecated: false, expand: false, extensionsToTreatAsEsm: [], @@ -36,6 +40,7 @@ const defaultOptions: Config.DefaultOptions = { throwOnModuleCollision: false, }, injectGlobals: true, + listTests: false, maxConcurrency: 5, maxWorkers: '50%', moduleDirectories: ['node_modules'], @@ -45,6 +50,7 @@ const defaultOptions: Config.DefaultOptions = { noStackTrace: false, notify: false, notifyMode: 'failure-change', + passWithNoTests: false, prettierPath: 'prettier', resetMocks: false, resetModules: false, diff --git a/packages/jest-config/src/ValidConfig.ts b/packages/jest-config/src/ValidConfig.ts index d655914a100e..9fc46708c47e 100644 --- a/packages/jest-config/src/ValidConfig.ts +++ b/packages/jest-config/src/ValidConfig.ts @@ -19,6 +19,7 @@ const initialOptions: Config.InitialOptions = { cacheDirectory: '/tmp/user/jest', changedFilesWithAncestor: false, changedSince: 'master', + ci: false, clearMocks: false, collectCoverage: true, collectCoverageFrom: ['src', '!public'], @@ -38,6 +39,8 @@ const initialOptions: Config.InitialOptions = { }, }, dependencyExtractor: '/dependencyExtractor.js', + detectLeaks: false, + detectOpenHandles: false, displayName: multipleValidOptions('test-config', { color: 'blue', name: 'test-config', @@ -64,6 +67,7 @@ const initialOptions: Config.InitialOptions = { injectGlobals: true, json: false, lastCommit: false, + listTests: false, logHeapUsage: true, maxConcurrency: 5, maxWorkers: '50%', @@ -81,6 +85,7 @@ const initialOptions: Config.InitialOptions = { notifyMode: 'failure-change', onlyChanged: false, onlyFailures: false, + passWithNoTests: false, preset: 'react-native', prettierPath: '/node_modules/prettier', projects: ['project-a', 'project-b/'], diff --git a/packages/jest-types/src/Config.ts b/packages/jest-types/src/Config.ts index 5b53f4b637c7..756fc26e7f67 100644 --- a/packages/jest-types/src/Config.ts +++ b/packages/jest-types/src/Config.ts @@ -64,11 +64,14 @@ export type DefaultOptions = { cache: boolean; cacheDirectory: Path; changedFilesWithAncestor: boolean; + ci: boolean; clearMocks: boolean; collectCoverage: boolean; coveragePathIgnorePatterns: Array; coverageReporters: Array; coverageProvider: CoverageProvider; + detectLeaks: boolean; + detectOpenHandles: boolean; errorOnDeprecated: boolean; expand: boolean; extensionsToTreatAsEsm: Array; @@ -76,6 +79,7 @@ export type DefaultOptions = { globals: ConfigGlobals; haste: HasteConfig; injectGlobals: boolean; + listTests: boolean; maxConcurrency: number; maxWorkers: number | string; moduleDirectories: Array; @@ -85,6 +89,7 @@ export type DefaultOptions = { noStackTrace: boolean; notify: boolean; notifyMode: NotifyMode; + passWithNoTests: boolean; prettierPath: string; resetMocks: boolean; resetModules: boolean; @@ -133,6 +138,7 @@ export type InitialOptions = Partial<{ bail: boolean | number; cache: boolean; cacheDirectory: Path; + ci: boolean; clearMocks: boolean; changedFilesWithAncestor: boolean; changedSince: string; diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json index 0c30fba0e5a3..1aec93dd0ec6 100644 --- a/packages/jest-util/package.json +++ b/packages/jest-util/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@types/graceful-fs": "^4.1.2", - "@types/is-ci": "^2.0.0", + "@types/is-ci": "^3.0.0", "@types/micromatch": "^4.0.1", "@types/picomatch": "^2.2.2" }, diff --git a/yarn.lock b/yarn.lock index a53c8341c1e9..21b0eac2b934 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4464,13 +4464,6 @@ __metadata: languageName: node linkType: hard -"@types/ci-info@npm:*": - version: 2.0.0 - resolution: "@types/ci-info@npm:2.0.0" - checksum: 89efcab6fdc38ae27febdf87e1de9b49bfff13778ca807f4a2236340d4fa53d446f4abe3c19a1b19619a295f1fac72d64c88eb49927e5f54a29c9cedb2ccd685 - languageName: node - linkType: hard - "@types/co@npm:^4.6.0, @types/co@npm:^4.6.2": version: 4.6.2 resolution: "@types/co@npm:4.6.2" @@ -4600,12 +4593,12 @@ __metadata: languageName: node linkType: hard -"@types/is-ci@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/is-ci@npm:2.0.0" +"@types/is-ci@npm:^3.0.0": + version: 3.0.0 + resolution: "@types/is-ci@npm:3.0.0" dependencies: - "@types/ci-info": "*" - checksum: 870279b2fb690288351bca6c06e83c50d706ebe5c6da59fdfef2b4ced65572a459005b8fc020863b4f84fc59a3a71e565210c18dafd4fe85e86e4bf579803e74 + ci-info: ^3.1.0 + checksum: 661e9cc9ba61e1c283f3814fbb1355aca70b281b5d71def665348f8e17db1fbdf5e62db496b0c2ab7b913e49ad626faa28478c06b9fecf70f860f4386469973f languageName: node linkType: hard @@ -7147,7 +7140,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.0.0, ci-info@npm:^3.1.1": +"ci-info@npm:^3.0.0, ci-info@npm:^3.1.0, ci-info@npm:^3.1.1": version: 3.1.1 resolution: "ci-info@npm:3.1.1" checksum: 417d2bf17c320d477bc32997d3831bcc1b174d6b48616c2f0463765f042f073bfbfb15e06abdeea55b05ca9c8e054057eb9e0672e4e6031457e87216b2faddda @@ -12793,14 +12786,12 @@ fsevents@^1.2.7: "@jest/types": ^27.0.0-next.8 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.3 - "@types/is-ci": ^2.0.0 "@types/prompts": ^2.0.1 "@types/yargs": ^16.0.0 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - is-ci: ^3.0.0 jest-config: ^27.0.0-next.9 jest-util: ^27.0.0-next.9 jest-validate: ^27.0.0-next.9 @@ -12826,12 +12817,14 @@ fsevents@^1.2.7: "@types/babel__core": ^7.0.4 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 + "@types/is-ci": ^3.0.0 "@types/micromatch": ^4.0.1 babel-jest: ^27.0.0-next.9 chalk: ^4.0.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 + is-ci: ^3.0.0 jest-circus: ^27.0.0-next.9 jest-environment-jsdom: ^27.0.0-next.9 jest-environment-node: ^27.0.0-next.9 @@ -13380,7 +13373,7 @@ fsevents@^1.2.7: dependencies: "@jest/types": ^27.0.0-next.8 "@types/graceful-fs": ^4.1.2 - "@types/is-ci": ^2.0.0 + "@types/is-ci": ^3.0.0 "@types/micromatch": ^4.0.1 "@types/node": "*" "@types/picomatch": ^2.2.2 From a4358d619131498287e25a2c2f604f813481ddeb Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 18 May 2021 08:48:15 +0200 Subject: [PATCH 07/65] chore: run prettier on changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fcaf6e96db8..a910aad15429 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,7 +95,7 @@ - `[jest-transform]` [**BREAKING**] Refactor API of transformers to pass an options bag rather than separate `config` and other options ([#10834](https://github.com/facebook/jest/pull/10834)) - `[jest-types]` Fix `Config.ts` `projects` types ([#11285](https://github.com/facebook/jest/pull/11285)) - `[jest-util]` Replace micromatch with picomatch to fix issues with negated globs ([#11287](https://github.com/facebook/jest/pull/11287)) -- `[jest-validate]` Use `en-US` locale to avoid case conversion problems while validating CLI options on machines with some certain locales(e.g. Turkish) set as default locale. ([#11412](https://github.com/facebook/jest/pull/11412)) +- `[jest-validate]` Use `en-US` locale to avoid case conversion problems while validating CLI options on machines with some certain locales(e.g. Turkish) set as default locale. ([#11412](https://github.com/facebook/jest/pull/11412)) - `[jest-worker]` [**BREAKING**] Use named exports ([#10623](https://github.com/facebook/jest/pull/10623)) - `[jest-worker]` Do not swallow errors during serialization ([#10984](https://github.com/facebook/jest/pull/10984)) - `[jest-worker]` Handle `ERR_IPC_CHANNEL_CLOSED` errors properly ([#11143](https://github.com/facebook/jest/pull/11143)) From 2047a360b02504ea1ab9ea974b40f150660625f6 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 18 May 2021 09:19:15 +0200 Subject: [PATCH 08/65] chore: bump deps (#11419) --- e2e/__tests__/presets.test.ts | 1 + e2e/__tests__/watch-plugins.test.ts | 1 + examples/angular/package.json | 12 +- package.json | 2 +- packages/jest-core/src/collectHandles.ts | 3 +- packages/jest-worker/package.json | 2 +- website/package.json | 8 +- yarn.lock | 3169 +++++++++++----------- 8 files changed, 1553 insertions(+), 1645 deletions(-) diff --git a/e2e/__tests__/presets.test.ts b/e2e/__tests__/presets.test.ts index 0e67588d5cc0..d7d24979619c 100644 --- a/e2e/__tests__/presets.test.ts +++ b/e2e/__tests__/presets.test.ts @@ -20,6 +20,7 @@ test.each(['js', 'cjs'])('supports %s preset', presetDir => { }); onNodeVersions('^12.17.0 || >=13.2.0', () => { + // eslint-disable-next-line jest/no-identical-title test.each(['mjs', 'js-type-module'])('supports %s preset', presetDir => { const result = runJest(`presets/${presetDir}`); diff --git a/e2e/__tests__/watch-plugins.test.ts b/e2e/__tests__/watch-plugins.test.ts index fcbdb1a61d7f..59eff8a77eea 100644 --- a/e2e/__tests__/watch-plugins.test.ts +++ b/e2e/__tests__/watch-plugins.test.ts @@ -28,6 +28,7 @@ test.each(['js', 'cjs'])('supports %s watch plugins', async watchPluginDir => { onNodeVersions('^12.17.0 || >=13.2.0', () => { test.each(['mjs', 'js-type-module'])( + // eslint-disable-next-line jest/no-identical-title 'supports %s watch plugins', async watchPluginDir => { const testRun = runContinuous(`watch-plugins/${watchPluginDir}`, [ diff --git a/examples/angular/package.json b/examples/angular/package.json index 9382f1d5a873..e429b794c1b1 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -6,12 +6,12 @@ }, "private": true, "dependencies": { - "@angular/common": "^11.0.0", - "@angular/compiler": "^11.0.0", - "@angular/core": "^11.0.0", - "@angular/forms": "^11.0.0", - "@angular/platform-browser": "^11.0.0", - "@angular/platform-browser-dynamic": "^11.0.0", + "@angular/common": "^12.0.0", + "@angular/compiler": "^12.0.0", + "@angular/core": "^12.0.0", + "@angular/forms": "^12.0.0", + "@angular/platform-browser": "^12.0.0", + "@angular/platform-browser-dynamic": "^12.0.0", "core-js": "^3.2.1", "rxjs": "^6.5.3", "tslib": "^2.0.0", diff --git a/package.json b/package.json index f8531e6ba0d1..277d328be43c 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "tempy": "^1.0.0", "throat": "^6.0.1", "ts-node": "^9.0.0", - "type-fest": "^0.21.1", + "type-fest": "^1.1.1", "typescript": "^4.0.2", "which": "^2.0.1" }, diff --git a/packages/jest-core/src/collectHandles.ts b/packages/jest-core/src/collectHandles.ts index 7bdf62b5ccb7..bb617a3c60bc 100644 --- a/packages/jest-core/src/collectHandles.ts +++ b/packages/jest-core/src/collectHandles.ts @@ -39,6 +39,7 @@ function stackIsFromUser(stack: string) { const alwaysActive = () => true; +// @ts-expect-error: doesn't exist in v10 typings const hasWeakRef = typeof WeakRef === 'function'; // Inspired by https://github.com/mafintosh/why-is-node-running/blob/master/index.js @@ -75,9 +76,9 @@ export default function collectHandles(): HandleCollectionResult { // Timer that supports hasRef (Node v11+) if ('hasRef' in resource) { if (hasWeakRef) { + // @ts-expect-error: doesn't exist in v10 typings const ref = new WeakRef(resource); isActive = () => { - // @ts-expect-error: doesn't exist in v10 typings return ref.deref()?.hasRef() ?? false; }; } else { diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json index d3437f69e679..9db65d217de4 100644 --- a/packages/jest-worker/package.json +++ b/packages/jest-worker/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/merge-stream": "^1.1.2", - "@types/supports-color": "^7.2.0", + "@types/supports-color": "^8.1.0", "get-stream": "^6.0.0", "jest-leak-detector": "^27.0.0-next.9", "worker-farm": "^1.6.0" diff --git a/website/package.json b/website/package.json index 46da829edf67..7cc1e9f66278 100644 --- a/website/package.json +++ b/website/package.json @@ -29,10 +29,10 @@ ] }, "dependencies": { - "@docusaurus/core": "2.0.0-alpha.75", - "@docusaurus/plugin-client-redirects": "2.0.0-alpha.75", - "@docusaurus/plugin-pwa": "2.0.0-alpha.75", - "@docusaurus/preset-classic": "2.0.0-alpha.75", + "@docusaurus/core": "2.0.0-beta.0", + "@docusaurus/plugin-client-redirects": "2.0.0-beta.0", + "@docusaurus/plugin-pwa": "2.0.0-beta.0", + "@docusaurus/preset-classic": "2.0.0-beta.0", "clsx": "^1.1.1", "fs-extra": "^9.0.1", "globby": "^11.0.1", diff --git a/yarn.lock b/yarn.lock index 21b0eac2b934..b0e2fc17095f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33,212 +33,212 @@ __metadata: languageName: node linkType: hard -"@algolia/cache-browser-local-storage@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/cache-browser-local-storage@npm:4.8.6" +"@algolia/cache-browser-local-storage@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/cache-browser-local-storage@npm:4.9.1" dependencies: - "@algolia/cache-common": 4.8.6 - checksum: 1fc20e9460fe2958b7fdfbb2751807e892323b9c5040659578e421b15a16a9cdd5c197b6820686bc21ac636f34fe800885feca023eb2223678f7260f78e0166c + "@algolia/cache-common": 4.9.1 + checksum: ab1f8113738514a0f48f29463b1964b79f9e5f8696eaa4036bde11dbd1aba896fe3590bc0edd735567c97bed82cc7148df8c592f6cca319796ed23beb67c628a languageName: node linkType: hard -"@algolia/cache-common@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/cache-common@npm:4.8.6" - checksum: f786af09c11b72726e652e6c95cc9e7e9cabb27b00f8b8ce41595d653268da6b8114972b898efea870339e7d05ffe53f3cf093e89eea65458d667c8f842abdc8 +"@algolia/cache-common@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/cache-common@npm:4.9.1" + checksum: bf776cf0213fd28c5627e8280004b8882e776f5fa19b59f3e88bac2c6734418fe15ac029ed7484fc4f5d41eea37667ffe5410985488a6a99c598fa698be862e8 languageName: node linkType: hard -"@algolia/cache-in-memory@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/cache-in-memory@npm:4.8.6" +"@algolia/cache-in-memory@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/cache-in-memory@npm:4.9.1" dependencies: - "@algolia/cache-common": 4.8.6 - checksum: edf10d5fb68256471d63633d16f49e1dfc2933545c8db85c9153edd5d1e27439eaaa19a843b15b2f3e60871e6cd1e51cf88638e2bda532755078c7839c5158e1 + "@algolia/cache-common": 4.9.1 + checksum: 0204b7c182df52c85eb8146d4fa8ebbdc78c1bdf4be6e83969d75753bd8954abea25cb2a7dc87d3cd6551dbe6e404eec0a24e077adb3d590d1223c84b387eaf1 languageName: node linkType: hard -"@algolia/client-account@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/client-account@npm:4.8.6" +"@algolia/client-account@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/client-account@npm:4.9.1" dependencies: - "@algolia/client-common": 4.8.6 - "@algolia/client-search": 4.8.6 - "@algolia/transporter": 4.8.6 - checksum: 2cfaa03781330914e2352190394242ae682280d9d842214e525f2918140ce4bde42168d2260205d7ba712e0977f79f7477f4e85edb9c6da082dc4c4ed9688f80 + "@algolia/client-common": 4.9.1 + "@algolia/client-search": 4.9.1 + "@algolia/transporter": 4.9.1 + checksum: fc4f58a2ae3dfb51228f6d728ab16185441b1334877fde2599a218c19a16dc7b27c1b9cf02b74de11a167a8ca711f520ba7d60a802055a0cce21dca2f712835e languageName: node linkType: hard -"@algolia/client-analytics@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/client-analytics@npm:4.8.6" +"@algolia/client-analytics@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/client-analytics@npm:4.9.1" dependencies: - "@algolia/client-common": 4.8.6 - "@algolia/client-search": 4.8.6 - "@algolia/requester-common": 4.8.6 - "@algolia/transporter": 4.8.6 - checksum: 12c71f85f5ac33c529cb99782217994e6986b70bafa205004861cf49b5d9041771e960170a8a9e9b435c0825c96805271f772b1625cf1bd70a7b01c35b61801e + "@algolia/client-common": 4.9.1 + "@algolia/client-search": 4.9.1 + "@algolia/requester-common": 4.9.1 + "@algolia/transporter": 4.9.1 + checksum: 3baa8ad18e83df84767a17545937d9aed54674519bce9040ad64802fa20b72ec17eda64583124efb55a0ed5ef14984a0f950c939324bb911cc6f6522933d5505 languageName: node linkType: hard -"@algolia/client-common@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/client-common@npm:4.8.6" +"@algolia/client-common@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/client-common@npm:4.9.1" dependencies: - "@algolia/requester-common": 4.8.6 - "@algolia/transporter": 4.8.6 - checksum: e84ae37c9ee8462d791d61c8849253181bd4ad72319b0f2f996e45dbd58e75ef332855d52e028637b7905084ad18dfb1ce002620fa5cf53af398f1c3c6358712 + "@algolia/requester-common": 4.9.1 + "@algolia/transporter": 4.9.1 + checksum: ffc7311225a8fdc9a28f6d24b089372c73672ea627f60a129c81d5ded4c2dee46ac5f6f4bc6071a907132e2690725d4a4957c427c7d1d723316fe53e6d3f9bd1 languageName: node linkType: hard -"@algolia/client-recommendation@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/client-recommendation@npm:4.8.6" +"@algolia/client-recommendation@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/client-recommendation@npm:4.9.1" dependencies: - "@algolia/client-common": 4.8.6 - "@algolia/requester-common": 4.8.6 - "@algolia/transporter": 4.8.6 - checksum: 87c90eee288e5f526eb7d7fcd59565a660e859b0fd3655b101e1c9c5daabfe3adf88a8506411fbd3fc1a83ee116ba291f4e5df51ebee654c1ff9f9a0d3f7dddd + "@algolia/client-common": 4.9.1 + "@algolia/requester-common": 4.9.1 + "@algolia/transporter": 4.9.1 + checksum: 2207be12ec2ed3f71ab24d4ed688cdae90f5cbd40f5e9af042532a126720b8bc2e3663386f53e8103b8e4e70c9dd30a018baa81e27f83c8ba3b7211b6a25392c languageName: node linkType: hard -"@algolia/client-search@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/client-search@npm:4.8.6" +"@algolia/client-search@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/client-search@npm:4.9.1" dependencies: - "@algolia/client-common": 4.8.6 - "@algolia/requester-common": 4.8.6 - "@algolia/transporter": 4.8.6 - checksum: 34c2a5f577cf159aed581d79bd5bc32ff3edd4dbd195ef25fa3becfc3f130a10ffacf8f3bca1c60c8f0c56771918aed43aa5f2257e06955adad40b949e099fc3 + "@algolia/client-common": 4.9.1 + "@algolia/requester-common": 4.9.1 + "@algolia/transporter": 4.9.1 + checksum: a197ce7d8f854bea6ba29d28ef8edcc2fb403a2f37f57e9c70ebb151c00f399b01e76a55d2a84bea3c22ba27f792e93a472307f388d5251c6ae02dc12868216e languageName: node linkType: hard -"@algolia/logger-common@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/logger-common@npm:4.8.6" - checksum: 3d45ad85a7fafce737a81695f8851dd7e850a8f595ccccfb8bab0d0f270287aa9d7e1293dd95634a9d856a96600320f1847bf7c78ff47141a2211f84914d6183 +"@algolia/logger-common@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/logger-common@npm:4.9.1" + checksum: 1db3532458faecb36f72a2df288b6ecbe72a7a0e8f501d92b17c41246c0ae60e0af69326da7819561650a232df072c9d59c80a884fe30a60c9c2dc15d519292a languageName: node linkType: hard -"@algolia/logger-console@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/logger-console@npm:4.8.6" +"@algolia/logger-console@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/logger-console@npm:4.9.1" dependencies: - "@algolia/logger-common": 4.8.6 - checksum: 265ab116e723b1eb9bcf4d6781939ed85119998d2ffa9daadad2ba91324f93f94662307f4ca46c80587164ffd6ef196d47f0159e7ffb217e5dafa5e441756c05 + "@algolia/logger-common": 4.9.1 + checksum: b44ad42303c5ed102f9cf72e5b20b61c172ed20a0644e83e747d64af5b1fe62dfce2745bf88963bd7ff78a56218e6dcdc0c98f904a8f18bca34320319d7bc86b languageName: node linkType: hard -"@algolia/requester-browser-xhr@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/requester-browser-xhr@npm:4.8.6" +"@algolia/requester-browser-xhr@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/requester-browser-xhr@npm:4.9.1" dependencies: - "@algolia/requester-common": 4.8.6 - checksum: 3fc52cfe6f2b4e9deb931aa2f9fad1ae61b29a8eee61e81bd514e185c10d82882330c2416b7fdbc15ffb388779be95e727ad2511c34b051b8379522093414f78 + "@algolia/requester-common": 4.9.1 + checksum: 84bb63f39dd23adbdaa6743d7b2a6566e67e6640c0e2254e5e6641d5db8bb10b7149bb1380f3945a662e9752fdbe1857fd7ab386d8786308d8b11a03f9710aa0 languageName: node linkType: hard -"@algolia/requester-common@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/requester-common@npm:4.8.6" - checksum: e8976f2b233b36c4322a5d40cfc66bd7a3a81d4edfb61e9ea170d6f99885176719e1c37bf5fe4696352c915b699148b9241d859d0ceeb8bcacd48eed8fad336e +"@algolia/requester-common@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/requester-common@npm:4.9.1" + checksum: 3ce6eaa9bb8fb5c289255b788c3f0a8afcfdc14f95455cb96955f82cb9872890987ca2e961b8401845f1f0626899ebcbd92e4eda9b346507d69e4e27effb8190 languageName: node linkType: hard -"@algolia/requester-node-http@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/requester-node-http@npm:4.8.6" +"@algolia/requester-node-http@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/requester-node-http@npm:4.9.1" dependencies: - "@algolia/requester-common": 4.8.6 - checksum: 933432dc5cd82c13111a92f81cfdf1ded4d51ea71101d7e403eb6d929d712925158b1e17352352e78430dc335be89994937ff9ae46c27df899d70838e11592ac + "@algolia/requester-common": 4.9.1 + checksum: b55076c87a4368d5939b0486b9b0098d597497df0d495b44f59c6c7098fd1ec4cac765f254cf1c625b5860bca65942dedb9ba41d916f061eb1f319ccf2f6ba08 languageName: node linkType: hard -"@algolia/transporter@npm:4.8.6": - version: 4.8.6 - resolution: "@algolia/transporter@npm:4.8.6" +"@algolia/transporter@npm:4.9.1": + version: 4.9.1 + resolution: "@algolia/transporter@npm:4.9.1" dependencies: - "@algolia/cache-common": 4.8.6 - "@algolia/logger-common": 4.8.6 - "@algolia/requester-common": 4.8.6 - checksum: 16f34092fdf373e0541c5159c1f828be62570b38ce2ed0043cbbf8c97e3f8ff65296537c6ff20ced7429af3c80eb33aec428bcc48f960d9e22f7c83359f40c8e + "@algolia/cache-common": 4.9.1 + "@algolia/logger-common": 4.9.1 + "@algolia/requester-common": 4.9.1 + checksum: f96427891769a2a26bfceea2824e92301ed6ab642f18c24eb25354fb9b95a5e78e49a1df0e43040ad83e8d97ff42e7b4e14a144652effd4225e06a494174996f languageName: node linkType: hard -"@angular/common@npm:^11.0.0": - version: 11.2.4 - resolution: "@angular/common@npm:11.2.4" +"@angular/common@npm:^12.0.0": + version: 12.0.0 + resolution: "@angular/common@npm:12.0.0" dependencies: - tslib: ^2.0.0 + tslib: ^2.1.0 peerDependencies: - "@angular/core": 11.2.4 + "@angular/core": 12.0.0 rxjs: ^6.5.3 - checksum: ce9bdef8cc923d337eb97e00ef8fd993bcb28452b419c4b14c240d86cb6d15940a3e694610b71c3e3b1a5b18bae3203f0167a135375011a946c45579955a01e7 + checksum: e6a64f1ba0ecc9c565a4e278ecf6906b4b88ad40394ed460ab410447671abe80debc22db117a39c6b76f757794e011b55da4c7e56b14a2653780cc242d6f6e40 languageName: node linkType: hard -"@angular/compiler@npm:^11.0.0": - version: 11.2.4 - resolution: "@angular/compiler@npm:11.2.4" +"@angular/compiler@npm:^12.0.0": + version: 12.0.0 + resolution: "@angular/compiler@npm:12.0.0" dependencies: - tslib: ^2.0.0 - checksum: 9291a3fb5468e5988c296a0b5b8c4a55460a6f1a9f587dd7393a7c8a23c3edbcfa30f0d8453344ef5be6648a41135c2745059ddbd144785f50c85299811db310 + tslib: ^2.1.0 + checksum: 24e415761f016aa40e0a062ed1a7e14f2a4a35ede209d002f6a5fae66f9719dea1e19b4771014627342c09ce140c44321e305a189c9d6c50415fae3f1c9c699c languageName: node linkType: hard -"@angular/core@npm:^11.0.0": - version: 11.2.4 - resolution: "@angular/core@npm:11.2.4" +"@angular/core@npm:^12.0.0": + version: 12.0.0 + resolution: "@angular/core@npm:12.0.0" dependencies: - tslib: ^2.0.0 + tslib: ^2.1.0 peerDependencies: rxjs: ^6.5.3 - zone.js: ^0.10.2 || ^0.11.3 - checksum: f8e6e7d754e8aedc6d0aed6b04ea643f30c7cd90a20c15cf371ca232f3ecc41b1da65b9375c4a242172fa4047ff526e0c60e432fa24ac2495d86078759b3601e + zone.js: ~0.11.4 + checksum: e7989eaba4a686d40d33f7128521bf6aec192809375d16a74b4cd2838f61b4f073a720bffe49aa606a5c9bb76aca1f5fae98ad16e79b3ffdf0b7312bf997020d languageName: node linkType: hard -"@angular/forms@npm:^11.0.0": - version: 11.2.4 - resolution: "@angular/forms@npm:11.2.4" +"@angular/forms@npm:^12.0.0": + version: 12.0.0 + resolution: "@angular/forms@npm:12.0.0" dependencies: - tslib: ^2.0.0 + tslib: ^2.1.0 peerDependencies: - "@angular/common": 11.2.4 - "@angular/core": 11.2.4 - "@angular/platform-browser": 11.2.4 + "@angular/common": 12.0.0 + "@angular/core": 12.0.0 + "@angular/platform-browser": 12.0.0 rxjs: ^6.5.3 - checksum: fe43727b31a02cb513aa343abe06ace86a38dc6914ee55e6d3c86a3e855b53579e369bab31e42e5d2c61a2cd1141d0710dadd0d2af11328962192b7c9e1152e9 + checksum: e655831573b815e1d1287dbbaf5c33f492131c17ef0042414bcc093806383a07caf5cdc7acd5060798410af5958855ee2eb5a821876d645cc8be7db64786683e languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:^11.0.0": - version: 11.2.4 - resolution: "@angular/platform-browser-dynamic@npm:11.2.4" +"@angular/platform-browser-dynamic@npm:^12.0.0": + version: 12.0.0 + resolution: "@angular/platform-browser-dynamic@npm:12.0.0" dependencies: - tslib: ^2.0.0 + tslib: ^2.1.0 peerDependencies: - "@angular/common": 11.2.4 - "@angular/compiler": 11.2.4 - "@angular/core": 11.2.4 - "@angular/platform-browser": 11.2.4 - checksum: 61c7c84bc0d39b914b69ea05dbbbc2fd33d90305aadece67cc125c9fc3cbf56e1bdb0c1f91aa9f0db97ffb9629767a63a96d6bdeb076f50ae4a2126cce08dbe8 + "@angular/common": 12.0.0 + "@angular/compiler": 12.0.0 + "@angular/core": 12.0.0 + "@angular/platform-browser": 12.0.0 + checksum: be012115ef75de043f4301b06615647f9efc8ec9cf3a95dca257d8e7a5e105fc543cb94c1003d5ab59f6fa6134946aaabe52c659ad9967ba646491a46c8a48e4 languageName: node linkType: hard -"@angular/platform-browser@npm:^11.0.0": - version: 11.2.4 - resolution: "@angular/platform-browser@npm:11.2.4" +"@angular/platform-browser@npm:^12.0.0": + version: 12.0.0 + resolution: "@angular/platform-browser@npm:12.0.0" dependencies: - tslib: ^2.0.0 + tslib: ^2.1.0 peerDependencies: - "@angular/animations": 11.2.4 - "@angular/common": 11.2.4 - "@angular/core": 11.2.4 + "@angular/animations": 12.0.0 + "@angular/common": 12.0.0 + "@angular/core": 12.0.0 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 8d1b6415645ec21d3db390c03933dc3bebef78a3d72a2a705099570fff16037110a739030a2dcff99537669f09b5f21111158b88edd815b8dcf96275e17beb5e + checksum: 064a74dbe09912ae621553460a3b20795f196d58d3e2b6e8636834c997a91165380160f703dd7108016b3864bde22ccb136702b843cf6f5912e9bdc22eab6720 languageName: node linkType: hard @@ -269,34 +269,33 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.13.0, @babel/compat-data@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/compat-data@npm:7.13.8" - checksum: e07e24737973206dd17439224945a354352ce0896d5a0bdd22fc637464eb650bdf6651a42352dc35fa8d55842ce1b66e545a1e3c096ee8f45947dcc32a44be44 +"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.13.15, @babel/compat-data@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/compat-data@npm:7.14.0" + checksum: d2d9de745e7a6f83ddf699865656e9298025bda5d350497845c57af440685723de28e7c1f34315e0028c6ad08bca0173436252ada7ac38eb2227c069d40916dd languageName: node linkType: hard -"@babel/core@npm:*, @babel/core@npm:7.13.10, @babel/core@npm:^7.0.0, @babel/core@npm:^7.1.0, @babel/core@npm:^7.1.6, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.16, @babel/core@npm:^7.12.3, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.2, @babel/core@npm:^7.7.5": - version: 7.13.10 - resolution: "@babel/core@npm:7.13.10" +"@babel/core@npm:*, @babel/core@npm:7.14.3, @babel/core@npm:^7.0.0, @babel/core@npm:^7.1.0, @babel/core@npm:^7.1.6, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.16, @babel/core@npm:^7.12.3, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.2, @babel/core@npm:^7.7.5": + version: 7.14.3 + resolution: "@babel/core@npm:7.14.3" dependencies: "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.9 - "@babel/helper-compilation-targets": ^7.13.10 - "@babel/helper-module-transforms": ^7.13.0 - "@babel/helpers": ^7.13.10 - "@babel/parser": ^7.13.10 + "@babel/generator": ^7.14.3 + "@babel/helper-compilation-targets": ^7.13.16 + "@babel/helper-module-transforms": ^7.14.2 + "@babel/helpers": ^7.14.0 + "@babel/parser": ^7.14.3 "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 + "@babel/traverse": ^7.14.2 + "@babel/types": ^7.14.2 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.1.2 - lodash: ^4.17.19 semver: ^6.3.0 source-map: ^0.5.0 - checksum: 728249a0bae293547d987e4d9886a14dda663d8cb629eb59c9d9ad3ee455048c2ccc3858c82305229ad4a415c2f39579abaa3982b653d40de348c39a3beb5e4d + checksum: 4bc2d1abf53e8d1399d5fe159f4f6d275feb64cdfb3a975e903edcbbd98b71ba4a216af28f43db0a5303691a291590837964934acaf673b024563f3acad919f6 languageName: node linkType: hard @@ -324,25 +323,14 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.12.15, @babel/generator@npm:^7.12.5, @babel/generator@npm:^7.13.0, @babel/generator@npm:^7.13.9, @babel/generator@npm:^7.5.0, @babel/generator@npm:^7.7.2": - version: 7.13.9 - resolution: "@babel/generator@npm:7.13.9" - dependencies: - "@babel/types": ^7.13.0 - jsesc: ^2.5.1 - source-map: ^0.5.0 - checksum: d9cf7db910dd703a55c3ba147a8024564d51de06f5e3e61aef6ca197bcd80a6cb0a633fe4688c8c9f6226c70ee6f32a747050a8e420972b45cc98a6b3fc5ae66 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/generator@npm:7.14.2" +"@babel/generator@npm:^7.12.15, @babel/generator@npm:^7.12.5, @babel/generator@npm:^7.14.2, @babel/generator@npm:^7.14.3, @babel/generator@npm:^7.5.0, @babel/generator@npm:^7.7.2": + version: 7.14.3 + resolution: "@babel/generator@npm:7.14.3" dependencies: "@babel/types": ^7.14.2 jsesc: ^2.5.1 source-map: ^0.5.0 - checksum: eacc93d3446dec6fac064cd884ac6e2ecbcfed65f8de069da72855a8124d33004a9dc9f06833e18fae2e352929c493b46035785f948549d2e9d503af0bef8a79 + checksum: 519fce36f3663dd346522d50d13b8549c02c0a340650c62db1bee0595a47f910b433f3bbdb513cc582bd932c5045b2673c8ef6a97913f9335fb16aa06085f274 languageName: node linkType: hard @@ -365,50 +353,51 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.10, @babel/helper-compilation-targets@npm:^7.13.8": - version: 7.13.10 - resolution: "@babel/helper-compilation-targets@npm:7.13.10" +"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.16": + version: 7.13.16 + resolution: "@babel/helper-compilation-targets@npm:7.13.16" dependencies: - "@babel/compat-data": ^7.13.8 + "@babel/compat-data": ^7.13.15 "@babel/helper-validator-option": ^7.12.17 browserslist: ^4.14.5 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 80eb7a380d01d785de42006370e13bbda63b76745a8da1c68dcbf3dc4bff630bd9db8a76cf3053628c61d91c1452328a4ad9a8d9fc24ed65c02f635327234678 + checksum: baa1e4cdd562996c6af0a8cedb097cd72f67c44577faf4b657015f477d4930ebcc40ca21dc1e5fcffe91a1517de6e4114bc21f805ca701dfac2ddd2e9b006228 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.13.0": - version: 7.13.10 - resolution: "@babel/helper-create-class-features-plugin@npm:7.13.10" +"@babel/helper-create-class-features-plugin@npm:^7.13.0, @babel/helper-create-class-features-plugin@npm:^7.14.0, @babel/helper-create-class-features-plugin@npm:^7.14.2, @babel/helper-create-class-features-plugin@npm:^7.14.3": + version: 7.14.3 + resolution: "@babel/helper-create-class-features-plugin@npm:7.14.3" dependencies: - "@babel/helper-function-name": ^7.12.13 - "@babel/helper-member-expression-to-functions": ^7.13.0 + "@babel/helper-annotate-as-pure": ^7.12.13 + "@babel/helper-function-name": ^7.14.2 + "@babel/helper-member-expression-to-functions": ^7.13.12 "@babel/helper-optimise-call-expression": ^7.12.13 - "@babel/helper-replace-supers": ^7.13.0 + "@babel/helper-replace-supers": ^7.14.3 "@babel/helper-split-export-declaration": ^7.12.13 peerDependencies: "@babel/core": ^7.0.0 - checksum: 9d331528e12807a1697d4d24a5e98ca3587944d38927fe389880bb7882eaf6b004295d0c459aa3870090dfeb177bb787be1b2062a2e2587f34700c9c620681b8 + checksum: 9293683d388edaeb321bf9c4be64a5d4df1fc60aa8f66f0801bb87418dd57466b78aa5bccf3dea395ebed3e69226e6e0c8e365b202a554e39bb1d65f4d492078 languageName: node linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.12.13": - version: 7.12.17 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.12.17" + version: 7.14.3 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.14.3" dependencies: "@babel/helper-annotate-as-pure": ^7.12.13 regexpu-core: ^4.7.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: ffb4fbca4026ac733bc43e1e6751120fecd377476373ad6bafb3eb653431beaee1de1664293f9233921f96db56c489175c162b70002237f1dc235e12b9111a93 + checksum: 1ead93de13a199cdcd84bec52328f934105461bb428bf7a09ba931ff150643c107a49c985b9b7e026311739f8d1a42b3af22478d9dc00a88f0344944b7df2410 languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/helper-define-polyfill-provider@npm:0.1.5" +"@babel/helper-define-polyfill-provider@npm:^0.2.0": + version: 0.2.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.2.0" dependencies: "@babel/helper-compilation-targets": ^7.13.0 "@babel/helper-module-imports": ^7.12.13 @@ -420,7 +409,7 @@ __metadata: semver: ^6.1.2 peerDependencies: "@babel/core": ^7.4.0-0 - checksum: 41a3bf1b016cd94cece5eec1aa7fcc868ca32e0b630735e2be934d1ff7145226633b8c7d67884c18d7a090a5465a94bb8c4b01160ed8ea240f952d6aa1057ef0 + checksum: 575785f62b10ee5cd9d8c092b6077f8bad8eed42ac50a8d55b82430c6958f94da11f5b20de650e31b400f7c7a0af08b6e4476669fd2a3b24414d1a9db89d531f languageName: node linkType: hard @@ -433,18 +422,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-function-name@npm:7.12.13" - dependencies: - "@babel/helper-get-function-arity": ^7.12.13 - "@babel/template": ^7.12.13 - "@babel/types": ^7.12.13 - checksum: 25f03f303be790618437dc49c6df758d362112a564361d2eae66b58fda4f5ec09e62875473b18090b939c8d3d60b36aa7c9f688768b7fade511512d02ac9d3d0 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.14.2": +"@babel/helper-function-name@npm:^7.12.13, @babel/helper-function-name@npm:^7.14.2": version: 7.14.2 resolution: "@babel/helper-function-name@npm:7.14.2" dependencies: @@ -465,47 +443,46 @@ __metadata: linkType: hard "@babel/helper-hoist-variables@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-hoist-variables@npm:7.13.0" + version: 7.13.16 + resolution: "@babel/helper-hoist-variables@npm:7.13.16" dependencies: - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: dae64c4d490fe1721f3bde984297711e7009a9d595e275cf725f3aec0e2183eb3cfcff00bbb2823c4e3845c5852dcea99be0db339941ba9a3229fa6e0314afc5 + "@babel/traverse": ^7.13.15 + "@babel/types": ^7.13.16 + checksum: 5a0c74c19e1b3dd1c90619eb6088c4fae0b1a35b77479beaa294fd132a51b2d699ebadb05bca7ebff26b9d305f057341d4efc5caff118efde55a73a92321688a languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.13.0" +"@babel/helper-member-expression-to-functions@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-member-expression-to-functions@npm:7.13.12" dependencies: - "@babel/types": ^7.13.0 - checksum: 9baaab9910a96c0f201b71c6cc39037dce5d32a321f61347ac489ddbef2bcbd232adcadeaa8e44d8c9a7216226c009b57f9d65697d90d7a8ed2c27682932d959 + "@babel/types": ^7.13.12 + checksum: 2c075f72e5bda1432c74484548272577485d45c4d6c7cc9e84c5d053eaa6e0890e93c9b018bab97f65cbb81ac04dd9cdca73d5ae0e94b03cfc00d10972b99185 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-module-imports@npm:7.12.13" +"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-module-imports@npm:7.13.12" dependencies: - "@babel/types": ^7.12.13 - checksum: 9832436fb44361b2d7a0b7d99f18b7c0529afb94202ab92b578147aba062447e9a1cff33bc95db33189686fa922c62f23da296870958eee2f862b3aa89809159 + "@babel/types": ^7.13.12 + checksum: 4d1d3364bec0820e50c782b5a5c81e7987c260c14772bc594ca8dbfdb3b6e43bd9b4e5071fd2a5f777c822dc7440781fa904f643e2069755db9ba5033cb2beac languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-module-transforms@npm:7.13.0" +"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.14.0, @babel/helper-module-transforms@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/helper-module-transforms@npm:7.14.2" dependencies: - "@babel/helper-module-imports": ^7.12.13 - "@babel/helper-replace-supers": ^7.13.0 - "@babel/helper-simple-access": ^7.12.13 + "@babel/helper-module-imports": ^7.13.12 + "@babel/helper-replace-supers": ^7.13.12 + "@babel/helper-simple-access": ^7.13.12 "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/helper-validator-identifier": ^7.12.11 + "@babel/helper-validator-identifier": ^7.14.0 "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - lodash: ^4.17.19 - checksum: b7e45c67eeaca488fa7a7bb0afebaec25b91f94cb04d32229ef799bd3a31ef5b566737fefd139b20c6525817528816e43bf492372c77e352e2a0e4d03b1fe21b + "@babel/traverse": ^7.14.2 + "@babel/types": ^7.14.2 + checksum: c0a543a2149d15ad9c129f002cb01974c79a16ea10de9e3f9b7a296f2bbe3deaef9457acf6b9d2238e9629d5e98964539d28843cdd4d328b115f559871ccf533 languageName: node linkType: hard @@ -543,24 +520,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-replace-supers@npm:7.13.0" +"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.12, @babel/helper-replace-supers@npm:^7.14.3": + version: 7.14.3 + resolution: "@babel/helper-replace-supers@npm:7.14.3" dependencies: - "@babel/helper-member-expression-to-functions": ^7.13.0 + "@babel/helper-member-expression-to-functions": ^7.13.12 "@babel/helper-optimise-call-expression": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: b32ab3f4d6a4e7f80c361eb9c0a001c2ae498f885248cb567c8de2475fb3dcbdf7ddd32a9e9a926abf55cf4f46faad7ceebfd3d035dea5508c3d9ba55d4083cc + "@babel/traverse": ^7.14.2 + "@babel/types": ^7.14.2 + checksum: 9c7de51e890dc92b011cd9a4cdc64399b66a473b2341360e1ffa143fbd5bb7a1f8ce6f3a68f67480da07e2940b0ceeb8f5bed5543cbbc7850d4cd6e20f4bd465 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-simple-access@npm:7.12.13" +"@babel/helper-simple-access@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/helper-simple-access@npm:7.13.12" dependencies: - "@babel/types": ^7.12.13 - checksum: 34f19da4b8129006d660ff6d704d493a447852268a1360727a7de32087c7cead4c2548a3bb73c8fee7afa2dcad85087d53f9b0cabe071f3bf5cc27f35de9e7c8 + "@babel/types": ^7.13.12 + checksum: eff532a1572a4ac562c5918a409871ddf9baee9ece197b98a54622184d3b9e01bdd465597f27ca3d452e71638c913a14819cf261dc095a466032dfd92a88bc73 languageName: node linkType: hard @@ -582,14 +559,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.12.11": - version: 7.12.11 - resolution: "@babel/helper-validator-identifier@npm:7.12.11" - checksum: 18de432203264b501db2690b53370a4289dc56084f5a2c66de624b159ee28b8abaeb402b2b7584296d9261645d91ddb6bfd21125d3ffd9bf02e9262e77baf3d2 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.14.0": +"@babel/helper-validator-identifier@npm:^7.12.11, @babel/helper-validator-identifier@npm:^7.14.0": version: 7.14.0 resolution: "@babel/helper-validator-identifier@npm:7.14.0" checksum: bd67b4a1a49eba151aa0fe95508579638287fee0a3e7a3bf8c5ab480de8eaad4b4231c523d7db401eb0cecc7cf03b76ee72453fab53bab8cb8ccd154bb67feb7 @@ -615,56 +585,60 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.13.10": - version: 7.13.10 - resolution: "@babel/helpers@npm:7.13.10" +"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/helpers@npm:7.14.0" dependencies: "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: 1bc93126957b51108080ab1aa24997a9a10d5f395de54621ce9df7825cdbce878ad9d26886c927c3d9bcfd75d24972037ed5fb904fcd83fb92e5c8f8628f6b40 + "@babel/traverse": ^7.14.0 + "@babel/types": ^7.14.0 + checksum: 0ac7e775b54cebf4b5c027e9ca00a1027f3c7d96e924583d028b6e86bb775652701ba9d48257db8352fce4612566d8a4f1fd8723502d940a77571145af603956 languageName: node linkType: hard "@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.12.13": - version: 7.13.10 - resolution: "@babel/highlight@npm:7.13.10" + version: 7.14.0 + resolution: "@babel/highlight@npm:7.14.0" dependencies: - "@babel/helper-validator-identifier": ^7.12.11 + "@babel/helper-validator-identifier": ^7.14.0 chalk: ^2.0.0 js-tokens: ^4.0.0 - checksum: 8f23d3b728422713bfab45bee1e7584f2a3d2e20c9c4d6153312b898c82e776bdc5b1b2afaf9433fddb21d70417f5b477c0bb1a48613324fd761117e19a5702b + checksum: 0122fcd3cd6e81bfa002227d6c9dfff91d388d48dc188cd13e3f60c46e5450ebad65aa133ac8f525cb3cfa3b70766484e4a93c40b2837ce16f12083ebd2b0824 languageName: node linkType: hard -"@babel/parser@npm:^7.0.0, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.1.6, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.12.16, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.13.0, @babel/parser@npm:^7.13.10, @babel/parser@npm:^7.7.2": - version: 7.13.10 - resolution: "@babel/parser@npm:7.13.10" +"@babel/parser@npm:^7.0.0, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.1.6, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.12.16, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.14.2, @babel/parser@npm:^7.14.3, @babel/parser@npm:^7.7.2": + version: 7.14.3 + resolution: "@babel/parser@npm:7.14.3" bin: parser: ./bin/babel-parser.js - checksum: 2eec48a075e11ad45031e82acf51061970ca8044cc296df1281512d8de0a8b478b04416ae411aa56f4ac99ed8cf2f40b9eeec27b6a99062c7b06628a1a7c6a69 + checksum: 5e8d1b2bfc53b59c7476c32adee20c8a4d19fdab58b04b6b177d89319bd76526219dad2f6ab6f51a80a518d0cbcdc3980b73c18bde16017aeee2dd8a50687fe3 languageName: node linkType: hard -"@babel/parser@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/parser@npm:7.14.2" - bin: - parser: ./bin/babel-parser.js - checksum: 18dffc18a2c15f8877988c9b5a46c87f1763e8a383c3210c9b5b651955b1ac46dc54da27acc09acd7fb917f37e0bd92b8985dc4c9d7f1e750dfccbcea730aa0e +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.13.12": + version: 7.13.12 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.13.12" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 + "@babel/plugin-proposal-optional-chaining": ^7.13.12 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: ad0b508a5c3f3436ff0ff598b7aad63686bfe7f846b19c862c09397bc987ab9244b866204440496cf6d1b7ec07ea01a6fe95fd3067dbdf58ec48d9d4d4d9a440 languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.13.8" +"@babel/plugin-proposal-async-generator-functions@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.14.2" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/helper-remap-async-to-generator": ^7.13.0 "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 56610a31dcd26e8613a715dfd7ed2308ce6e3a8357325e3562996468104aae45c4780db373d8b12b659b56175e9ace2e078420838ae3246573499a5ab74b1632 + checksum: e2779975e7bac50fb4e5340a90bd343f05875324ee396a39e78d0f36d3d0a70b9d8b71e45b91f66af78b6b30ee1d1c56cca500f4b594a028499757fdcfec16fd languageName: node linkType: hard @@ -680,28 +654,41 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-class-static-block@npm:^7.13.11": + version: 7.14.3 + resolution: "@babel/plugin-proposal-class-static-block@npm:7.14.3" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.14.3 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-class-static-block": ^7.12.13 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: cc5896f0df9964cf30deddc9d2bee0250c4202be3a5748d71a18c6d5f64f3e724b85c34ac36552fcd28014d391293d0cf774b89fb285889d7898b6fa489ac750 + languageName: node + linkType: hard + "@babel/plugin-proposal-decorators@npm:*": - version: 7.13.5 - resolution: "@babel/plugin-proposal-decorators@npm:7.13.5" + version: 7.14.2 + resolution: "@babel/plugin-proposal-decorators@npm:7.14.2" dependencies: - "@babel/helper-create-class-features-plugin": ^7.13.0 + "@babel/helper-create-class-features-plugin": ^7.14.2 "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-decorators": ^7.12.13 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a8e2a13ced7f2022f6c2a21de3c58bd7a358164ddceb533776932f7e251513ce680c4c233f575e323664c4bc353bc146d15a625a78252454936aa1c7ca3569b3 + checksum: 623531f1fa14db2057a7702aa558ef789fa799d553034db0f67148243a380bd23cdda947ebddf74697650195a0a6ae95e393466ed55e03fef303bf8bc6247209 languageName: node linkType: hard -"@babel/plugin-proposal-dynamic-import@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.13.8" +"@babel/plugin-proposal-dynamic-import@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-dynamic-import@npm:7.14.2" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-dynamic-import": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 47ff82e3e3731f93a9e51a7f16f1807ee5fbd627df67b423bcf9bb206ae9230385d62c7310e41ec6ef732f01f0af81061bbbf5f6cbfe6b95aa8fa01571166c9e + checksum: 5e1953fa7a697b6e6faf8db5fad2309de38cc1ceaf5c92e92b66569a82dd3a09fb5b4606976eb1092d9b2de52649a01922111ecd7a38595bb4a592875ff2e222 languageName: node linkType: hard @@ -717,63 +704,63 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-export-namespace-from@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.12.13" +"@babel/plugin-proposal-export-namespace-from@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.14.2" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-export-namespace-from": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 831dcc6711b9181978a62a5955104ef3f23de0c9a6740af0ca7395153cd4d481665fd557aa178ac53146cdbf49cf95f3ab06e51f2c79343a69639ed09877f7db + checksum: e029b3fdd1892c6a5179f8152eb6fd0bb22b5034f07889c15de1543a0cc25d790c9f99795b5f0db3832b32f4cc297608a2f4379048b07cb335e33da6f71c7f7c languageName: node linkType: hard -"@babel/plugin-proposal-json-strings@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-json-strings@npm:7.13.8" +"@babel/plugin-proposal-json-strings@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-json-strings@npm:7.14.2" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-json-strings": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 54f950f8824e4dd1a9a8b621507e0b3764a5d3a3b816231c70fdc18be42ed7e500a73c51da19a7a7503a50bd1e7227d71edff0999c189c9b1c20c90525b84552 + checksum: 48208294725fbee56ceb355f9caf891083baa3583f7a156b083ffe097fd94c79c11a2f5565cdb6f4864a8c344202e43ef9aac9c3caa2ae34367761f0daa291f9 languageName: node linkType: hard -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.13.8" +"@babel/plugin-proposal-logical-assignment-operators@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.14.2" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e0bed6050b35e0b89fc4bbc8e934bafc14fec0192105c4ace15a244ba3d2ba2dc1bb682e9529328aa7350712c0fbde2ae8a3c4cd1b3ec04458eeb3916ccbea49 + checksum: 20df8c38b6ad0d8a997e45e887f6d4018fc78b295bc845f13600524c3e182662f9535ba2c3185d722be61388c9f35d832e662817b439b71d3b3383cd0e59d73e languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.0.0, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.1.0, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.12.13, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.13.8" +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.0.0, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.1.0, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.12.13, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.14.2" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 19c0e20a9d3fb3fc689432c87ce53709220a6556b633396f8a35b3c0967b4a32f200805fe5602908a8ca2130d531769ba321ea61d0361c82b99ccf87dea356e5 + checksum: 201998680c28916107cbaa7f42a51e537e8894d71a7861b6bc028bbbeba2a2412c9d6a46616965655e1889fe33136ab7fde29f1ed523f66a289cbf1631a51222 languageName: node linkType: hard -"@babel/plugin-proposal-numeric-separator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.12.13" +"@babel/plugin-proposal-numeric-separator@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-numeric-separator@npm:7.14.2" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-numeric-separator": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d0480be4c7cc4f7c98bcdfa541cc25d878e70f9f1d37097b9846f1ff8e48756b5015f0f230b794c1b808b4e064606d074c53cb12875111ad080b9d30d2e2adf5 + checksum: 1421b4f1a95fdae59036d754a03bf5047992bd4e9fa238e33b6e1ea7dcfb00c2010dfda7d198d7cdc300b530467f1106aa65d723081ffe0ed2de6328a98c9b80 languageName: node linkType: hard @@ -790,43 +777,43 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.13.8" +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.14.2" dependencies: - "@babel/compat-data": ^7.13.8 - "@babel/helper-compilation-targets": ^7.13.8 + "@babel/compat-data": ^7.14.0 + "@babel/helper-compilation-targets": ^7.13.16 "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.13.0 + "@babel/plugin-transform-parameters": ^7.14.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e560572e0090a229596e9b42e33f6767194bf3f1a410757286cd55d2bdc7de7a0b073e888089f4b0a81d25f6cca1a249442ea7daf1a0ef0fb89810c7440091e5 + checksum: 787075655ea6a124bc0f4988f642cb285d32be4607a67373ab86bbb992a29be109f8726670e6bd0a2440180b3dd8f64c376dd54901934f93d72cac5df332b575 languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.0.0, @babel/plugin-proposal-optional-catch-binding@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.13.8" +"@babel/plugin-proposal-optional-catch-binding@npm:^7.0.0, @babel/plugin-proposal-optional-catch-binding@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.14.2" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a91f361d3df099b79206f11b55800a8d4974c6b63d26a2af841da79e8ee7636383e650bb016198e35cbc5d9e9bd70189cc1b84702b12111165ebd27e0be7d998 + checksum: 5da13a87f8de6bb8334fa1381dbcd6bad8e566061e2442b44f032db38ed9e468a5604970ab352ed94747671f23f393037be4316f134bcb92eb874232c70e1b59 languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.0.0, @babel/plugin-proposal-optional-chaining@npm:^7.1.0, @babel/plugin-proposal-optional-chaining@npm:^7.12.16, @babel/plugin-proposal-optional-chaining@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.13.8" +"@babel/plugin-proposal-optional-chaining@npm:^7.0.0, @babel/plugin-proposal-optional-chaining@npm:^7.1.0, @babel/plugin-proposal-optional-chaining@npm:^7.12.16, @babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.14.2" dependencies: "@babel/helper-plugin-utils": ^7.13.0 "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8295f1ceda1bc40eb281b611eeebc087db843de318bbffeecd245b0a0ffe7df723ec99c39579d2e1089af2694abde938f30defb16c5f909423fa6d57a7155598 + checksum: f3733825f45cea95deb44478353c98f40130e4895f52f53081b65ca359f2e65cc8df6899a5bad2e69b9d633781a0bb041bb2fd0296df0a93126cce497f725351 languageName: node linkType: hard @@ -842,6 +829,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-private-property-in-object@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.14.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.12.13 + "@babel/helper-create-class-features-plugin": ^7.14.0 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/plugin-syntax-private-property-in-object": ^7.14.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2074d2a818ad64f186f940ca518e967c42dad04306c58189f1f1a8aad8f3dfac7474dd51c33330a61ca2eed68f769f871e7f7066e23d00f1e0296e2bc0797474 + languageName: node + linkType: hard + "@babel/plugin-proposal-unicode-property-regex@npm:^7.12.13, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": version: 7.12.13 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.12.13" @@ -887,6 +888,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-class-static-block@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d5c08078f5b00295ab06e8a8d85c362b3752871d7bfd6b23d9b0bf492e33e796a8d5007ba35745ae07bb0cc79d08089913913f97b68c53a3395959d0347a5e98 + languageName: node + linkType: hard + "@babel/plugin-syntax-decorators@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-syntax-decorators@npm:7.12.13" @@ -1052,6 +1064,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.0" + dependencies: + "@babel/helper-plugin-utils": ^7.13.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5c79999ceb73dc7d596a75d86b16db2be0f313c53354e237903eed8f7844a26e76888fa8b45ddaae590cf6bb92988644c6ee64a51a46220ab03f6930914f5b08 + languageName: node + linkType: hard + "@babel/plugin-syntax-top-level-await@npm:^7.12.13, @babel/plugin-syntax-top-level-await@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-syntax-top-level-await@npm:7.12.13" @@ -1109,31 +1132,31 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-block-scoping@npm:7.12.13" +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-transform-block-scoping@npm:7.14.2" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cea49384ce946e14a4d8141cccadd09f7d9467964ee2df83e7f7e0c8cbd3ef1901125caf5a4013720539780647092ceb875cef214841126aa2e68dc05381f1f5 + checksum: fb726d0ead02aaaf04076c26b476fe78bc5f698b763ff27135ab1bfbc9086bc49e7e50d09c61e661fb74b7ccb6f4184f70cb396e6dd495bc5806b20543b2280f languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-classes@npm:7.13.0" +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-transform-classes@npm:7.14.2" dependencies: "@babel/helper-annotate-as-pure": ^7.12.13 - "@babel/helper-function-name": ^7.12.13 + "@babel/helper-function-name": ^7.14.2 "@babel/helper-optimise-call-expression": ^7.12.13 "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-replace-supers": ^7.13.0 + "@babel/helper-replace-supers": ^7.13.12 "@babel/helper-split-export-declaration": ^7.12.13 globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dffa76e8ba757cee8c031ab40aca14cfcafae9c329db1bf82977e7f20fbb3ce1d8c625666ec4ec75baf1b95c7f3bc72d014a1437b7d0cafaa08f1fd9ed0695e6 + checksum: a184a2d98868e9096db9c46c8a201976ece422350ce7834001ebd828a3df774fd21f2285a01c45c5dc5d238336422ea1ba8889d555e02b977243b1484215a115 languageName: node linkType: hard @@ -1148,14 +1171,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-destructuring@npm:7.13.0" +"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.13.17": + version: 7.13.17 + resolution: "@babel/plugin-transform-destructuring@npm:7.13.17" dependencies: "@babel/helper-plugin-utils": ^7.13.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4c9640ac1571b7c82caa6ffd99e8269c532d85ee375e9ebde2211d4ace9792b5def42d48cbeed037519e838afdb871ed90064ad6f59ccd714722d3d2405be022 + checksum: 16c08ecaf55d02754a5e0a33a766798362b5489c1632ce62bbef0624c0227f6cfa6b4066bf51efad0fac5655f34c1c9e7b06c631b31c13c1c55c3bfe39490d7c languageName: node linkType: hard @@ -1194,7 +1217,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.12.13": +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.13.0": version: 7.13.0 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.13.0" dependencies: @@ -1251,30 +1274,30 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-modules-amd@npm:7.13.0" +"@babel/plugin-transform-modules-amd@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-transform-modules-amd@npm:7.14.2" dependencies: - "@babel/helper-module-transforms": ^7.13.0 + "@babel/helper-module-transforms": ^7.14.2 "@babel/helper-plugin-utils": ^7.13.0 babel-plugin-dynamic-import-node: ^2.3.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f6251627aecab324e57d2f331e11a7dc6c6d9165b0f54f50c3ea2adfd05fbfcbc0367e519cc54e71c8256d88e899f505bf25d78511db4d7af8f5957a4d7844a9 + checksum: b14f4df42d5e59777f50cebd59cdc2f3d33b14619f31cf223b2f1b68886391bccb8a565651beb9a4ccb5da48996a02c9db488b28a92f99aeee33ffc75413bc5a languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.1.0, @babel/plugin-transform-modules-commonjs@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.13.8" +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.1.0, @babel/plugin-transform-modules-commonjs@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.14.0" dependencies: - "@babel/helper-module-transforms": ^7.13.0 + "@babel/helper-module-transforms": ^7.14.0 "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-simple-access": ^7.12.13 + "@babel/helper-simple-access": ^7.13.12 babel-plugin-dynamic-import-node: ^2.3.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a20eb54e966231d1e6eb773aa2421f6aaaf4497b3541c5b9c34f83d7163ae240309f955b236bce3ad2356ddb9415384323eb93fb6644979fdff964b39d877825 + checksum: 61d9f7a8a1386863f61848f7f52180789295ffb3319ccea4079f61bf1d5c9be5cd996ce57b0273861f2dfc88e63f0e23e34acc386ca13a9a56e22b1392c6ad60 languageName: node linkType: hard @@ -1293,15 +1316,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-modules-umd@npm:7.13.0" +"@babel/plugin-transform-modules-umd@npm:^7.14.0": + version: 7.14.0 + resolution: "@babel/plugin-transform-modules-umd@npm:7.14.0" dependencies: - "@babel/helper-module-transforms": ^7.13.0 + "@babel/helper-module-transforms": ^7.14.0 "@babel/helper-plugin-utils": ^7.13.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: efc00d0e18e91fd01853c1b88e3f79b317ad56854090aaf017bf0a4435e9112794252622348bd87baf2b13b1889805d29e7e654150929ac6793e550d2a529755 + checksum: 44c830a945c225e107f60a61b457274f931845623306c9bcd04c23958085477a820ebfe15ee4c7861a84eb986668ddc38c1797e733b8e2327702dcee1ca0bb21 languageName: node linkType: hard @@ -1350,14 +1373,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.12.1, @babel/plugin-transform-parameters@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-parameters@npm:7.13.0" +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.12.1, @babel/plugin-transform-parameters@npm:^7.14.2": + version: 7.14.2 + resolution: "@babel/plugin-transform-parameters@npm:7.14.2" dependencies: "@babel/helper-plugin-utils": ^7.13.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f23977501cac4712bb0fdadc5e5c394d69ca67a111e337dce7c2e92e3bf2cd47fe23f7b5a316c0b175e14725c7554b8c044bff8af690a6188e80b16ae7a10935 + checksum: 2a44c33be99bd9be6545f602e29c5151a12e3af7e678ec90730804448795a856dbd527abacd2667a940c7b9c345f8ffd7808d54b5861c281ab071ce2e216c547 languageName: node linkType: hard @@ -1373,28 +1396,28 @@ __metadata: linkType: hard "@babel/plugin-transform-react-constant-elements@npm:^7.12.1": - version: 7.13.10 - resolution: "@babel/plugin-transform-react-constant-elements@npm:7.13.10" + version: 7.13.13 + resolution: "@babel/plugin-transform-react-constant-elements@npm:7.13.13" dependencies: "@babel/helper-plugin-utils": ^7.13.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4f94183d28f5bbcfa8749b51b995e226a729751d41e953e029a8d22ae983571332fb8657fea137de5091f5539fae7d70587f9818a1d01a665201bce120772706 + checksum: 985b7bee1eb54b9885f5c6e671425a35dc5758678536b0aeb2ca1f995f455cb616fec4334bcdee33682719b5743baa4508f0e347bc62b464a3ec7510049c4f4a languageName: node linkType: hard "@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-react-display-name@npm:7.12.13" + version: 7.14.2 + resolution: "@babel/plugin-transform-react-display-name@npm:7.14.2" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 00fa4736cc872fc1fa0a464f03e52ce4f0b73d6a909a7ac242bb5d0d24b03f102afc4d0d6bdaec30573e2ad79c5f161685a4756b1d9be1a5132e88c1254cdc06 + checksum: 16aeca5dbc813bc4f74ea387a876846dd87341e2905f7f5737394271f36a23aa9d56758947fa00f0849679c8269a0b0f2f4bb45b212e2a38dfb87cdf952db220 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.12.12": +"@babel/plugin-transform-react-jsx-development@npm:^7.12.17": version: 7.12.17 resolution: "@babel/plugin-transform-react-jsx-development@npm:7.12.17" dependencies: @@ -1417,28 +1440,28 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx-source@npm:^7.0.0": - version: 7.12.13 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.12.13" + version: 7.14.2 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.14.2" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 341ff3d4acdbc69595ae3afe176b1e1712a57b420d107cf9c8153bdc1c2a7b1259eeb846f60c3df899681f9b6593a0f516282bf3a77ae04d68735e72fd009f72 + checksum: 070d4149dc5bfd4389ca2f4d74d3152c0bd79b8a5c5e1e935fac5e574129a2040ce0ff362f50d7d84fa12b1d0ba3fb06e48b153006ee6502b3f2ad9f8cd2bb9c languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.12.13, @babel/plugin-transform-react-jsx@npm:^7.12.17": - version: 7.12.17 - resolution: "@babel/plugin-transform-react-jsx@npm:7.12.17" +"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.12.17, @babel/plugin-transform-react-jsx@npm:^7.13.12": + version: 7.14.3 + resolution: "@babel/plugin-transform-react-jsx@npm:7.14.3" dependencies: "@babel/helper-annotate-as-pure": ^7.12.13 - "@babel/helper-module-imports": ^7.12.13 - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-module-imports": ^7.13.12 + "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-jsx": ^7.12.13 - "@babel/types": ^7.12.17 + "@babel/types": ^7.14.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1435e662f988a58392b3065b0f25c7015a6881ff969a2f8c54f6f2ced8c44abcce5c55e2a3795d3c5a11ce9f49f115a2ce533e46b06cf9e4d935bcb174517a0c + checksum: d5fc75255a9adb51b89a4fec9918737c42fac207e99791b00ca31c5661b4748f1861a9997f9290c334f8fc621155ec5a53158ef6d4dd8cc1ca3cba395d57ac59 languageName: node linkType: hard @@ -1454,14 +1477,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.0.0, @babel/plugin-transform-regenerator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-regenerator@npm:7.12.13" +"@babel/plugin-transform-regenerator@npm:^7.0.0, @babel/plugin-transform-regenerator@npm:^7.13.15": + version: 7.13.15 + resolution: "@babel/plugin-transform-regenerator@npm:7.13.15" dependencies: regenerator-transform: ^0.14.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4ee616942c712a94720b8613fa027db98bd08cfc677bc2d9bf444a40989571db269d502fcb4851d2959c34c2819e767ecd48fa61c572b3814cfe65c8a46ad0dd + checksum: ac1f6bda7e72c073b0957c543cba8a29a40d561582c17d938d4cd36ff0c441adfa2caa21dd80cf3be1674f18cca4cd936be29f8df659fbfb020b58f45c7787fa languageName: node linkType: hard @@ -1477,18 +1500,18 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.0.0, @babel/plugin-transform-runtime@npm:^7.12.15": - version: 7.13.10 - resolution: "@babel/plugin-transform-runtime@npm:7.13.10" + version: 7.14.3 + resolution: "@babel/plugin-transform-runtime@npm:7.14.3" dependencies: - "@babel/helper-module-imports": ^7.12.13 + "@babel/helper-module-imports": ^7.13.12 "@babel/helper-plugin-utils": ^7.13.0 - babel-plugin-polyfill-corejs2: ^0.1.4 - babel-plugin-polyfill-corejs3: ^0.1.3 - babel-plugin-polyfill-regenerator: ^0.1.2 + babel-plugin-polyfill-corejs2: ^0.2.0 + babel-plugin-polyfill-corejs3: ^0.2.0 + babel-plugin-polyfill-regenerator: ^0.2.0 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2b36d86770696e80bf1aed9f97d4d7bb684a6dc1bb407f2da607a13f190fd1feed06a454a6f89d6d60da9bc554c3aef942f5ad307217a48ac9ddcf8edd57894e + checksum: 2c8d211a468a394cd467a85ae002a7914be765d79ddc12c22d3aa6e07fa5163b274fd5d3782b2d156f4f20926e83259aae0cdb9ca01a05ac92abfc19945c72e6 languageName: node linkType: hard @@ -1549,15 +1572,15 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.13.0, @babel/plugin-transform-typescript@npm:^7.5.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-typescript@npm:7.13.0" + version: 7.14.3 + resolution: "@babel/plugin-transform-typescript@npm:7.14.3" dependencies: - "@babel/helper-create-class-features-plugin": ^7.13.0 + "@babel/helper-create-class-features-plugin": ^7.14.3 "@babel/helper-plugin-utils": ^7.13.0 "@babel/plugin-syntax-typescript": ^7.12.13 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cbf557689f6dcd59545b394d47d77ed9aeacefdbb68532e5d13b5983543f568c948a0ff492b37bc233f7073e405162076a6d29995e26230f691ceaf9d5630183 + checksum: 9fa070792c7742463665ae33cc1612941264f11909b2016351e119b36b545c3b0b47de96f0c4ad91cf5e19a2135edbfcb96f975abff1cd8e04fcd410847c55d7 languageName: node linkType: hard @@ -1585,28 +1608,32 @@ __metadata: linkType: hard "@babel/preset-env@npm:*, @babel/preset-env@npm:^7.1.0, @babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.12.16": - version: 7.13.10 - resolution: "@babel/preset-env@npm:7.13.10" + version: 7.14.2 + resolution: "@babel/preset-env@npm:7.14.2" dependencies: - "@babel/compat-data": ^7.13.8 - "@babel/helper-compilation-targets": ^7.13.10 + "@babel/compat-data": ^7.14.0 + "@babel/helper-compilation-targets": ^7.13.16 "@babel/helper-plugin-utils": ^7.13.0 "@babel/helper-validator-option": ^7.12.17 - "@babel/plugin-proposal-async-generator-functions": ^7.13.8 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.13.12 + "@babel/plugin-proposal-async-generator-functions": ^7.14.2 "@babel/plugin-proposal-class-properties": ^7.13.0 - "@babel/plugin-proposal-dynamic-import": ^7.13.8 - "@babel/plugin-proposal-export-namespace-from": ^7.12.13 - "@babel/plugin-proposal-json-strings": ^7.13.8 - "@babel/plugin-proposal-logical-assignment-operators": ^7.13.8 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 - "@babel/plugin-proposal-numeric-separator": ^7.12.13 - "@babel/plugin-proposal-object-rest-spread": ^7.13.8 - "@babel/plugin-proposal-optional-catch-binding": ^7.13.8 - "@babel/plugin-proposal-optional-chaining": ^7.13.8 + "@babel/plugin-proposal-class-static-block": ^7.13.11 + "@babel/plugin-proposal-dynamic-import": ^7.14.2 + "@babel/plugin-proposal-export-namespace-from": ^7.14.2 + "@babel/plugin-proposal-json-strings": ^7.14.2 + "@babel/plugin-proposal-logical-assignment-operators": ^7.14.2 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.14.2 + "@babel/plugin-proposal-numeric-separator": ^7.14.2 + "@babel/plugin-proposal-object-rest-spread": ^7.14.2 + "@babel/plugin-proposal-optional-catch-binding": ^7.14.2 + "@babel/plugin-proposal-optional-chaining": ^7.14.2 "@babel/plugin-proposal-private-methods": ^7.13.0 + "@babel/plugin-proposal-private-property-in-object": ^7.14.0 "@babel/plugin-proposal-unicode-property-regex": ^7.12.13 "@babel/plugin-syntax-async-generators": ^7.8.4 "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.12.13 "@babel/plugin-syntax-dynamic-import": ^7.8.3 "@babel/plugin-syntax-export-namespace-from": ^7.8.3 "@babel/plugin-syntax-json-strings": ^7.8.3 @@ -1616,14 +1643,15 @@ __metadata: "@babel/plugin-syntax-object-rest-spread": ^7.8.3 "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.0 "@babel/plugin-syntax-top-level-await": ^7.12.13 "@babel/plugin-transform-arrow-functions": ^7.13.0 "@babel/plugin-transform-async-to-generator": ^7.13.0 "@babel/plugin-transform-block-scoped-functions": ^7.12.13 - "@babel/plugin-transform-block-scoping": ^7.12.13 - "@babel/plugin-transform-classes": ^7.13.0 + "@babel/plugin-transform-block-scoping": ^7.14.2 + "@babel/plugin-transform-classes": ^7.14.2 "@babel/plugin-transform-computed-properties": ^7.13.0 - "@babel/plugin-transform-destructuring": ^7.13.0 + "@babel/plugin-transform-destructuring": ^7.13.17 "@babel/plugin-transform-dotall-regex": ^7.12.13 "@babel/plugin-transform-duplicate-keys": ^7.12.13 "@babel/plugin-transform-exponentiation-operator": ^7.12.13 @@ -1631,16 +1659,16 @@ __metadata: "@babel/plugin-transform-function-name": ^7.12.13 "@babel/plugin-transform-literals": ^7.12.13 "@babel/plugin-transform-member-expression-literals": ^7.12.13 - "@babel/plugin-transform-modules-amd": ^7.13.0 - "@babel/plugin-transform-modules-commonjs": ^7.13.8 + "@babel/plugin-transform-modules-amd": ^7.14.2 + "@babel/plugin-transform-modules-commonjs": ^7.14.0 "@babel/plugin-transform-modules-systemjs": ^7.13.8 - "@babel/plugin-transform-modules-umd": ^7.13.0 + "@babel/plugin-transform-modules-umd": ^7.14.0 "@babel/plugin-transform-named-capturing-groups-regex": ^7.12.13 "@babel/plugin-transform-new-target": ^7.12.13 "@babel/plugin-transform-object-super": ^7.12.13 - "@babel/plugin-transform-parameters": ^7.13.0 + "@babel/plugin-transform-parameters": ^7.14.2 "@babel/plugin-transform-property-literals": ^7.12.13 - "@babel/plugin-transform-regenerator": ^7.12.13 + "@babel/plugin-transform-regenerator": ^7.13.15 "@babel/plugin-transform-reserved-words": ^7.12.13 "@babel/plugin-transform-shorthand-properties": ^7.12.13 "@babel/plugin-transform-spread": ^7.13.0 @@ -1650,27 +1678,28 @@ __metadata: "@babel/plugin-transform-unicode-escapes": ^7.12.13 "@babel/plugin-transform-unicode-regex": ^7.12.13 "@babel/preset-modules": ^0.1.4 - "@babel/types": ^7.13.0 - babel-plugin-polyfill-corejs2: ^0.1.4 - babel-plugin-polyfill-corejs3: ^0.1.3 - babel-plugin-polyfill-regenerator: ^0.1.2 + "@babel/types": ^7.14.2 + babel-plugin-polyfill-corejs2: ^0.2.0 + babel-plugin-polyfill-corejs3: ^0.2.0 + babel-plugin-polyfill-regenerator: ^0.2.0 core-js-compat: ^3.9.0 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1f23eb25dea448fd75a3e525f71181d535d2884fe50c7fbb9aa29918b997a7d92ba27cfb55f8b4070bc1b0507ab3d2d7ba9ee612a972e0f0b7447d4455d2b447 + checksum: a604b3ce5ba65dce1f9a7943060f0aab992bea9cf7b38fc2620cbda4cd849b87047a742537f2b123e6597a5959d2267b922789c77b702c17aa42f5dd9bc0d04a languageName: node linkType: hard "@babel/preset-flow@npm:^7.0.0, @babel/preset-flow@npm:^7.7.2": - version: 7.12.13 - resolution: "@babel/preset-flow@npm:7.12.13" + version: 7.13.13 + resolution: "@babel/preset-flow@npm:7.13.13" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - "@babel/plugin-transform-flow-strip-types": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-validator-option": ^7.12.17 + "@babel/plugin-transform-flow-strip-types": ^7.13.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 47fe1001194a57fbdb33250adcb4c3aa9ff551cfb4eea1a16b123ff5fe78730a7ebfb839bacbe18390fc50fa4bf67fdd5293703b859876de45d52f50d4da0d44 + checksum: b4f3e74e52def7fe63bd0b1f46c8be217c3df17d04cf31072e2c3297bc906c96ce0d3076959b52680ab684c44d54e068a612a0cb5e63ce490e2428d0010840a2 languageName: node linkType: hard @@ -1690,17 +1719,18 @@ __metadata: linkType: hard "@babel/preset-react@npm:*, @babel/preset-react@npm:^7.0.0, @babel/preset-react@npm:^7.12.1, @babel/preset-react@npm:^7.12.13, @babel/preset-react@npm:^7.12.5, @babel/preset-react@npm:^7.7.2": - version: 7.12.13 - resolution: "@babel/preset-react@npm:7.12.13" + version: 7.13.13 + resolution: "@babel/preset-react@npm:7.13.13" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/helper-validator-option": ^7.12.17 "@babel/plugin-transform-react-display-name": ^7.12.13 - "@babel/plugin-transform-react-jsx": ^7.12.13 - "@babel/plugin-transform-react-jsx-development": ^7.12.12 + "@babel/plugin-transform-react-jsx": ^7.13.12 + "@babel/plugin-transform-react-jsx-development": ^7.12.17 "@babel/plugin-transform-react-pure-annotations": ^7.12.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b5e652172e1936fffdd303758c45ad7b3028d8cf51b053d383a2c5d3745726fbb3e38136269a00541ddf12dc3f6852076f8061be4e8fa69b23fbe49ae2e54db8 + checksum: 7c712240df06701624cd73269b20e841487ad54894517be353d22eecd0b1290389b00114b020c33f4a29dd8ca03900f076a951b4e88a1165f7b627422819f66d languageName: node linkType: hard @@ -1718,36 +1748,36 @@ __metadata: linkType: hard "@babel/register@npm:^7.0.0": - version: 7.13.8 - resolution: "@babel/register@npm:7.13.8" + version: 7.13.16 + resolution: "@babel/register@npm:7.13.16" dependencies: + clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 - lodash: ^4.17.19 make-dir: ^2.1.0 pirates: ^4.0.0 source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fd56cd563849b63c2467ec4454cab560a1140762ce5c31676c6194b924949a5a0b5dd67bef87c1685e7000167572b303259501ba81c65346d33215a21673222c + checksum: 9a859b9fb5301525450638d57a7db72f0364a14b3e433f62062140b45ce13e5c92d9618f1f0413c6b41336937062e3cbd7fad88f2938b030e1b4331c11a74f23 languageName: node linkType: hard "@babel/runtime-corejs3@npm:^7.10.2, @babel/runtime-corejs3@npm:^7.12.13": - version: 7.13.10 - resolution: "@babel/runtime-corejs3@npm:7.13.10" + version: 7.14.0 + resolution: "@babel/runtime-corejs3@npm:7.14.0" dependencies: core-js-pure: ^3.0.0 regenerator-runtime: ^0.13.4 - checksum: cbf4de5c0e73197447c112b31e1e7bb48b7940c815fdc6e8aee28a9e33f57f5c3991ba0598dfbfb8bc4d22a7cfe3b2eced0f08c12f8e618aa2ccf73684ced051 + checksum: 0b3184c384f061e90c879406a072643493d9a1c7fa33bcbccf72ab0588df12ad85fb3539a3b8355f4d96934836f420c0a70d9a0848c7954f6a5ec511bb5bb2ef languageName: node linkType: hard "@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.8.4": - version: 7.13.10 - resolution: "@babel/runtime@npm:7.13.10" + version: 7.14.0 + resolution: "@babel/runtime@npm:7.14.0" dependencies: regenerator-runtime: ^0.13.4 - checksum: 22014226b96a8c8e8d4e8bcdb011f317d1b32881aef424a669dc6ceaee14993d3609172967853cbf9c25c724c25145d45885b6c9df56ba241c12820776607f1f + checksum: ab6653f2f8ecdaebf36674894cef458a9d4f881dc007fdcd50a8261f5c6d9731e03fda2c17e32ecf0e6c779d69eb6cf49d68a48c780aaf07d5b572e8b7ef0508 languageName: node linkType: hard @@ -1762,24 +1792,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.13, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/traverse@npm:7.13.0" - dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.0 - "@babel/helper-function-name": ^7.12.13 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/parser": ^7.13.0 - "@babel/types": ^7.13.0 - debug: ^4.1.0 - globals: ^11.1.0 - lodash: ^4.17.19 - checksum: e5d1b690157da325b5bea98e472f4df0fff16048242a70880e2da7939b005ccd5b63d2b4527e203cfc71a422da0fa513c0ad84114bff002d583ebd7dbd2c8576 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.7.2": +"@babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.13, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.13.15, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.14.2, @babel/traverse@npm:^7.7.2": version: 7.14.2 resolution: "@babel/traverse@npm:7.14.2" dependencies: @@ -1795,18 +1808,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.17, @babel/types@npm:^7.12.6, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.13.0 - resolution: "@babel/types@npm:7.13.0" - dependencies: - "@babel/helper-validator-identifier": ^7.12.11 - lodash: ^4.17.19 - to-fast-properties: ^2.0.0 - checksum: a47357647a92c08ee2f5059210d37fd7fe190e8d4ef71dd97ba61c6ca7b7e979660bc8ba00fdc51249c037199b634dd984fde8d7a622fdd5e3e2161fe65e94c3 - languageName: node - linkType: hard - -"@babel/types@npm:^7.14.2": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.6, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12, @babel/types@npm:^7.13.16, @babel/types@npm:^7.14.0, @babel/types@npm:^7.14.2, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.14.2 resolution: "@babel/types@npm:7.14.2" dependencies: @@ -1836,42 +1838,42 @@ __metadata: linkType: hard "@crowdin/cli@npm:^3.5.2": - version: 3.5.4 - resolution: "@crowdin/cli@npm:3.5.4" + version: 3.6.1 + resolution: "@crowdin/cli@npm:3.6.1" dependencies: shelljs: ^0.8.4 bin: crowdin: jdeploy-bundle/jdeploy.js - checksum: b432348714fd51825e3358566d35210dae25f88c3eb214cd0146e37d42f06b8072e9e2c165a5298882b92ca0e030b8594b54181c54784cea722d61afff3b902e + checksum: 1f39d19189cb2d82a1155ebe39b084278b1643c5ee062a28e4202c0fcb73730147065fd6caa358cb09016192b90bd27fe8f8c9db18faf68e4cf9e37008d60ff9 languageName: node linkType: hard -"@docsearch/css@npm:3.0.0-alpha.34": - version: 3.0.0-alpha.34 - resolution: "@docsearch/css@npm:3.0.0-alpha.34" - checksum: 7636dadfba4a524e29bff54f32eb520d8d3ee1f62b5bcc41b1b1eef2bf523d87859a258fc52287b560e56f5a561276d8260a6ed122e46d71d093239bf6f3e273 +"@docsearch/css@npm:3.0.0-alpha.36": + version: 3.0.0-alpha.36 + resolution: "@docsearch/css@npm:3.0.0-alpha.36" + checksum: 27ab298c93f8b32b70560bddc27579523f02561dc02b7813cd9356dc83d612e210406e9ea4ee79e537c1857103f785d25987a3374266a67b73f79e1968c6bd03 languageName: node linkType: hard "@docsearch/react@npm:^3.0.0-alpha.33": - version: 3.0.0-alpha.34 - resolution: "@docsearch/react@npm:3.0.0-alpha.34" + version: 3.0.0-alpha.36 + resolution: "@docsearch/react@npm:3.0.0-alpha.36" dependencies: "@algolia/autocomplete-core": 1.0.0-alpha.44 "@algolia/autocomplete-preset-algolia": 1.0.0-alpha.44 - "@docsearch/css": 3.0.0-alpha.34 + "@docsearch/css": 3.0.0-alpha.36 algoliasearch: ^4.0.0 peerDependencies: "@types/react": ">= 16.8.0 < 18.0.0" react: ">= 16.8.0 < 18.0.0" react-dom: ">= 16.8.0 < 18.0.0" - checksum: 494311516a62c1434284c1009eb478c8e350fb12712c50f2b62d88e7113a682dc02e68eb6175344dfd8698bff6795327f083c05ca5c6600e1bc3886ae54c9865 + checksum: 201b0523c1f14a02401c7f0d8ba25ca149f9ed8b513fe99cf862c3dae9306f15ac228e1d3e3272ed4cf60fb2c30ba030a5c528cb2806a17191fcd9bed81a4aea languageName: node linkType: hard -"@docusaurus/core@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/core@npm:2.0.0-alpha.75" +"@docusaurus/core@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/core@npm:2.0.0-beta.0" dependencies: "@babel/core": ^7.12.16 "@babel/generator": ^7.12.15 @@ -1883,11 +1885,11 @@ __metadata: "@babel/runtime": ^7.12.5 "@babel/runtime-corejs3": ^7.12.13 "@babel/traverse": ^7.12.13 - "@docusaurus/cssnano-preset": 2.0.0-alpha.75 + "@docusaurus/cssnano-preset": 2.0.0-beta.0 "@docusaurus/react-loadable": 5.5.0 - "@docusaurus/types": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 "@endiliey/static-site-generator-webpack-plugin": ^4.0.0 "@svgr/webpack": ^5.5.0 autoprefixer: ^10.2.5 @@ -1954,29 +1956,29 @@ __metadata: react-dom: ^16.8.4 || ^17.0.0 bin: docusaurus: bin/docusaurus.js - checksum: 3d34dc60a02e61581a2eaa1d8d45e55056050fed6f488261b161c999769ac0531c67df6053b63d8d249901bd9cd5deb1a0a8837f2ed2e9b30c48d4b66c2e8cba + checksum: 39d1e07288e150536a64ae04b5415d9c17b98798617cb6363a7454243e9f2977acf1b8b1ab55779cb0e86cd4dee1e716ee187e418c8561473ec373637cccc72d languageName: node linkType: hard -"@docusaurus/cssnano-preset@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/cssnano-preset@npm:2.0.0-alpha.75" +"@docusaurus/cssnano-preset@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/cssnano-preset@npm:2.0.0-beta.0" dependencies: cssnano-preset-advanced: ^5.0.0 postcss: ^8.2.10 postcss-sort-media-queries: ^3.8.9 - checksum: 01eb94b421d1f61446dc5e21ff1ba10bb7889b76b66041f8e72b363105c4044c78bb30721744d8c00bdcc34716469d18c3770d157f931b619e6f1135d359fff5 + checksum: 398b82fc45acd29c5f7e66fa0c5ec73951e292bd39122edabb8752c4aa1de70777276a708df9d4bef9696001e4a3bca5a59a4e6b4e2ac440fbded7cbcd9cca56 languageName: node linkType: hard -"@docusaurus/mdx-loader@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/mdx-loader@npm:2.0.0-alpha.75" +"@docusaurus/mdx-loader@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/mdx-loader@npm:2.0.0-beta.0" dependencies: "@babel/parser": ^7.12.16 "@babel/traverse": ^7.12.13 - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 "@mdx-js/mdx": ^1.6.21 "@mdx-js/react": ^1.6.21 escape-html: ^1.0.3 @@ -1993,18 +1995,18 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: f7e46489659c6695a58ef88c0ded3d24c8289294cd887c14ad4d48e6d1cc362448b0343c8b1bb8759ce89d02375123ec6cf986089302b410325e53fc2b63462d + checksum: b702d8b3f4d92d3113068981af6e686abd0faa88ea46bb68963b62433116613c64a412d08f9e92c1834dfcf64d4e723fe91718925697c12518650f2c5fa31900 languageName: node linkType: hard -"@docusaurus/plugin-client-redirects@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-client-redirects@npm:2.0.0-alpha.75" +"@docusaurus/plugin-client-redirects@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-client-redirects@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/types": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 chalk: ^3.0.0 eta: ^1.11.0 fs-extra: ^9.1.0 @@ -2014,19 +2016,19 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: ba510d71d37c70bc471b32f5eef7fb5e087fff1ab70b8b427dbdc0de99898c0cfd277345d7ecc74e696648efa834be7fef52d6aeb5e9ed4b0b4968e7a5b433d3 + checksum: 11fa2d230836dadab36d69e67c05d14d3aa2cdb5590a68ed8f67b6fcbd3b094ca8fbe830edded088219384a3eb5b1eb0a6024bb9a5dd1d4fbe7c7a10a132f6c0 languageName: node linkType: hard -"@docusaurus/plugin-content-blog@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-content-blog@npm:2.0.0-alpha.75" +"@docusaurus/plugin-content-blog@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-content-blog@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/mdx-loader": 2.0.0-alpha.75 - "@docusaurus/types": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/mdx-loader": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 chalk: ^4.1.0 feed: ^4.2.2 fs-extra: ^9.1.0 @@ -2040,19 +2042,19 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 49c7d9fbf39330febf5b3ddf3aa41f0569ad819602bc159761b4cfd3ab0ac3c80cfbfccd1f53b6a0f67d8ef6dc61c5f31044a96e6517926261f56ea04dcfd8b4 + checksum: eed7187f3773a01ce42dcb2f556b69aa590f5ee55a926b09f6e087cb6d00cd0ab6ecae3a643cd2f0938ee9c0fbf626d1728b0bffa845b3381de43c212c2512d9 languageName: node linkType: hard -"@docusaurus/plugin-content-docs@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-content-docs@npm:2.0.0-alpha.75" +"@docusaurus/plugin-content-docs@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-content-docs@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/mdx-loader": 2.0.0-alpha.75 - "@docusaurus/types": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/mdx-loader": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 chalk: ^4.1.0 combine-promises: ^1.1.0 execa: ^5.0.0 @@ -2070,19 +2072,19 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 7fd04ee8d006785967fe84a68aca738647058df7c2745436ead00e40cd25a175aee5bafac0561088732c3e0f620ea671a2a6dcc4593761b6785af19b04dd5aa5 + checksum: 5d952efd787036102c6e0cd93fb5f00e08f32e03449649289d904c9faf7b88eb8bde5fd2bab26593a7c7559bf8dac2ef859cae25107199e1d573241f3f97be72 languageName: node linkType: hard -"@docusaurus/plugin-content-pages@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-content-pages@npm:2.0.0-alpha.75" +"@docusaurus/plugin-content-pages@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-content-pages@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/mdx-loader": 2.0.0-alpha.75 - "@docusaurus/types": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/mdx-loader": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 globby: ^11.0.2 lodash: ^4.17.20 minimatch: ^3.0.4 @@ -2093,60 +2095,60 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: aa199c3f360b3043d034b7953157defefb2c3c05b459cc9f1bd9f0c2d1a9797f8acc12348c59f001831eb2fc06a808b62b70ea517897b8a71613f9cc169ee4db + checksum: ee0d7426622274b45c576d33b46d3d3bc25e0d2876c9c72fe74f8e0ab42f0e32a0d9ee0ded79cb64240e7b7965c266cd3fedc40795004fb72bf044a112b9d6fa languageName: node linkType: hard -"@docusaurus/plugin-debug@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-debug@npm:2.0.0-alpha.75" +"@docusaurus/plugin-debug@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-debug@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/types": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 react-json-view: ^1.21.1 tslib: ^2.1.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 8ce63b3a513876f5d59f0bb51cb60815d30096608071f49713e9fe546afc1ddb9bb18c0ccb1dd270cd4b517a4a45be7b44fc7075c4cdce5bd0aa8dbf19c576c9 + checksum: daf4fd1c227d3b20fddb9facee2ca9094e409de409457a6f6ee97f11a20b373d6ceb9d9c4b8ae8a4fd2ed323c0739d2248c0ddcaa70286bb4c14ad9d8b033d53 languageName: node linkType: hard -"@docusaurus/plugin-google-analytics@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-google-analytics@npm:2.0.0-alpha.75" +"@docusaurus/plugin-google-analytics@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-google-analytics@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 869efc5db8b1b062917221530fe026b7ae725897e2d245316c16029e7c1d12e7e82fec92eaf12d6936e6cf692e973797f27eeb3323f7664dfafb13773b9b2125 + checksum: 65a729fd6b545891c50a7975fc4603ef494db283277c6bc8545218c0dc719bb229b4aed806d82c748f039da15fd1f1c1d0cb588f5d9047ea009127355cb65817 languageName: node linkType: hard -"@docusaurus/plugin-google-gtag@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-google-gtag@npm:2.0.0-alpha.75" +"@docusaurus/plugin-google-gtag@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-google-gtag@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 4e1f692e99a51381c438b6eb6535100e5868c86aefd2630362769200a96a7f5947122c62f58b055d5ab3ffbbd7b85727e6bfae1a97c4ed7b7695073d5e087246 + checksum: 1c4ea81e62ade274b4bb2e9ffba654bae8338857b49ca1152ecec566fd99e0ac2cfd7f4a684fa80524e23a2c4fb809a6dc2bc5dc208a27e5656be0e8971129f4 languageName: node linkType: hard -"@docusaurus/plugin-pwa@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-pwa@npm:2.0.0-alpha.75" +"@docusaurus/plugin-pwa@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-pwa@npm:2.0.0-beta.0" dependencies: "@babel/plugin-proposal-nullish-coalescing-operator": ^7.12.13 "@babel/plugin-proposal-optional-chaining": ^7.12.16 "@babel/preset-env": ^7.12.16 - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/theme-common": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/theme-common": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 babel-loader: ^8.2.2 clsx: ^1.1.1 core-js: ^2.6.5 @@ -2160,46 +2162,46 @@ __metadata: "@babel/core": ^7.0.0 react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 2088c5d01ed78c286a1aed5fa1c999767e333c482d239548a429bbb1c260569ba9da5af6a274fcdebf8b18975ad6f0826f68a6eba8515e3d0813725f5cee4185 + checksum: 3e6c837023eda673621c1e7d162f7f93764a42589fc38ceff069b68b5ad46be6863a29d126a6524efddbf28d0d44bcf629bc5fad4d97035da97ecf680db052c8 languageName: node linkType: hard -"@docusaurus/plugin-sitemap@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/plugin-sitemap@npm:2.0.0-alpha.75" +"@docusaurus/plugin-sitemap@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/plugin-sitemap@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/types": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 fs-extra: ^9.1.0 sitemap: ^6.3.6 tslib: ^2.1.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 2e8ead8f112832ae79f3fe4f400e34745403a3ae06d8eac211b7352444fd56fac6e9b9ac70ec06098d119bb9294de6f0f473adf111b28a56d118a66e2797cd18 + checksum: 79881c60e3f2a7d32f286ad123a57e54eac27d77e59eaa420d0af98f20cf40a283d13ae20ad8524f2db40c7a632d3335175b5e0801e89f9159db8451e33e579b languageName: node linkType: hard -"@docusaurus/preset-classic@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/preset-classic@npm:2.0.0-alpha.75" +"@docusaurus/preset-classic@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/preset-classic@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/plugin-content-blog": 2.0.0-alpha.75 - "@docusaurus/plugin-content-docs": 2.0.0-alpha.75 - "@docusaurus/plugin-content-pages": 2.0.0-alpha.75 - "@docusaurus/plugin-debug": 2.0.0-alpha.75 - "@docusaurus/plugin-google-analytics": 2.0.0-alpha.75 - "@docusaurus/plugin-google-gtag": 2.0.0-alpha.75 - "@docusaurus/plugin-sitemap": 2.0.0-alpha.75 - "@docusaurus/theme-classic": 2.0.0-alpha.75 - "@docusaurus/theme-search-algolia": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/plugin-content-blog": 2.0.0-beta.0 + "@docusaurus/plugin-content-docs": 2.0.0-beta.0 + "@docusaurus/plugin-content-pages": 2.0.0-beta.0 + "@docusaurus/plugin-debug": 2.0.0-beta.0 + "@docusaurus/plugin-google-analytics": 2.0.0-beta.0 + "@docusaurus/plugin-google-gtag": 2.0.0-beta.0 + "@docusaurus/plugin-sitemap": 2.0.0-beta.0 + "@docusaurus/theme-classic": 2.0.0-beta.0 + "@docusaurus/theme-search-algolia": 2.0.0-beta.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 37be377db120f304245a5c4e8fb2d12317cb96ea50fdd8c55e690ede7a8ae8baab8ca9105cf5a88c4f175c240cef5e07b719d3352618e60bae0d28e3690df82c + checksum: 89948e95f38969ebbd2d0329f4c26eb927bfc16ef7c759666130ff7b6b476fb929b40e0f4d482c01f836dc314efbd8c17db9940d42dad75d927cdbad97ba88f6 languageName: node linkType: hard @@ -2214,18 +2216,18 @@ __metadata: languageName: node linkType: hard -"@docusaurus/theme-classic@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/theme-classic@npm:2.0.0-alpha.75" +"@docusaurus/theme-classic@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/theme-classic@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/plugin-content-blog": 2.0.0-alpha.75 - "@docusaurus/plugin-content-docs": 2.0.0-alpha.75 - "@docusaurus/plugin-content-pages": 2.0.0-alpha.75 - "@docusaurus/theme-common": 2.0.0-alpha.75 - "@docusaurus/types": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/plugin-content-blog": 2.0.0-beta.0 + "@docusaurus/plugin-content-docs": 2.0.0-beta.0 + "@docusaurus/plugin-content-pages": 2.0.0-beta.0 + "@docusaurus/theme-common": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 "@mdx-js/mdx": ^1.6.21 "@mdx-js/react": ^1.6.21 chalk: ^4.1.0 @@ -2245,37 +2247,37 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 9f3bc28f414a4f8552e5376dbdea5c41e773cc91d34ccf5a32ef05585a2b4e047fc474be36d70812742ce938191745d8036a5065af972bbbefc667073c4d6bf1 + checksum: 62e7a8f3d80afb2de99a08e81d6c94891efa34c68515e49f8a0807b800115d49ce3a96bd5449a13060a15c138d01b2d70f0a0926e31addde30bb1d625e89f715 languageName: node linkType: hard -"@docusaurus/theme-common@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/theme-common@npm:2.0.0-alpha.75" +"@docusaurus/theme-common@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/theme-common@npm:2.0.0-beta.0" dependencies: - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/plugin-content-blog": 2.0.0-alpha.75 - "@docusaurus/plugin-content-docs": 2.0.0-alpha.75 - "@docusaurus/plugin-content-pages": 2.0.0-alpha.75 - "@docusaurus/types": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/plugin-content-blog": 2.0.0-beta.0 + "@docusaurus/plugin-content-docs": 2.0.0-beta.0 + "@docusaurus/plugin-content-pages": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-beta.0 tslib: ^2.1.0 peerDependencies: prism-react-renderer: ^1.1.1 react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 462b9072307c9eacf4639b8d3048faad16f0aea0089ef8ac58792b335c32ca2f3a4b75a9d8e5e01697c1a50bef18839611662098d2fa2964a5532ecdc5fba6a9 + checksum: 5412163750dd457e157953640d97f3fde359c5415728fc1b327398983e3b0a4c88620a5effb6b805b53b1bc96c2319471b33743f3938dc3c2fab5157d5dfe952 languageName: node linkType: hard -"@docusaurus/theme-search-algolia@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/theme-search-algolia@npm:2.0.0-alpha.75" +"@docusaurus/theme-search-algolia@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/theme-search-algolia@npm:2.0.0-beta.0" dependencies: "@docsearch/react": ^3.0.0-alpha.33 - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/theme-common": 2.0.0-alpha.75 - "@docusaurus/utils": 2.0.0-alpha.75 - "@docusaurus/utils-validation": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/theme-common": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils-validation": 2.0.0-beta.0 algoliasearch: ^4.8.4 algoliasearch-helper: ^3.3.4 clsx: ^1.1.1 @@ -2284,40 +2286,40 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 5c129130b9af45f0b5cab5bcf68dea377b84a2b1bbe4234ee1440af7da6b90ed504505706b04a27487f63d86fbf6ef2d24d600cedd38091dc3cbe83ed6c473f6 + checksum: 9627d886315f0923bf1bb80f5e3076c8a0ca781f0b7576b27fd06230dd03a631159b271aa4ec66d04e3819b6ef8c4897b24a8ed62a9b31b847de4fc6a4fcec07 languageName: node linkType: hard -"@docusaurus/types@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/types@npm:2.0.0-alpha.75" +"@docusaurus/types@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/types@npm:2.0.0-beta.0" dependencies: commander: ^5.1.0 joi: ^17.4.0 querystring: 0.2.0 webpack: ^5.28.0 webpack-merge: ^5.7.3 - checksum: b25f55a9a55b41edbf7acda85b52314ffa4c94907797d51f55e8c6d56ffd1ce603a48d1c6a96a3d8a14cbda201c9ae32efbf5c8cf8dce0af1fbcc671619c6a0e + checksum: 5743bcd50a9c8f545f42ea50117ad82bf6a8e821856d6e7ede332daa53a672cd428bced9510128d07088ba99fd880d77cd04b904ae49c0ba385380277d5082d2 languageName: node linkType: hard -"@docusaurus/utils-validation@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/utils-validation@npm:2.0.0-alpha.75" +"@docusaurus/utils-validation@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/utils-validation@npm:2.0.0-beta.0" dependencies: - "@docusaurus/utils": 2.0.0-alpha.75 + "@docusaurus/utils": 2.0.0-beta.0 chalk: ^4.1.0 joi: ^17.4.0 tslib: ^2.1.0 - checksum: 1fae80adebba4bfb5e9b876b567879142eb642fe6479d75732d301829f623b7893e728bd270c7dac102bff55963ebc4131e19077af39cf67e78932bb4320f615 + checksum: da51047fec60d2d357ff48c01b2d3de484a25c9416dd67bcc7abc4dea8b34a2197765bf4cc57ab5cf7df83a7cc210f4996eca909ebc38465fa0d62b3950e58bb languageName: node linkType: hard -"@docusaurus/utils@npm:2.0.0-alpha.75": - version: 2.0.0-alpha.75 - resolution: "@docusaurus/utils@npm:2.0.0-alpha.75" +"@docusaurus/utils@npm:2.0.0-beta.0": + version: 2.0.0-beta.0 + resolution: "@docusaurus/utils@npm:2.0.0-beta.0" dependencies: - "@docusaurus/types": 2.0.0-alpha.75 + "@docusaurus/types": 2.0.0-beta.0 "@types/github-slugger": ^1.3.0 chalk: ^4.1.0 escape-string-regexp: ^4.0.0 @@ -2326,7 +2328,7 @@ __metadata: lodash: ^4.17.20 resolve-pathname: ^3.0.0 tslib: ^2.1.0 - checksum: 2d874c69901ed1fe6e1b81ac73d000dafb433351e8255dafc7b929d48e0a494e4eadee367f38ba0767d88436170a389672d11b81bf0643097164984ff8a25b49 + checksum: d5eaf5fa530b15606370f9d56eb32ce4f9e71449490a96dc7c535918c155906ea21c672820713917143a401872b767f97a6cf5358afa30dfc65c595c3c5710a8 languageName: node linkType: hard @@ -2343,9 +2345,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^0.4.0": - version: 0.4.0 - resolution: "@eslint/eslintrc@npm:0.4.0" +"@eslint/eslintrc@npm:^0.4.1": + version: 0.4.1 + resolution: "@eslint/eslintrc@npm:0.4.1" dependencies: ajv: ^6.12.4 debug: ^4.1.1 @@ -2356,7 +2358,7 @@ __metadata: js-yaml: ^3.13.1 minimatch: ^3.0.4 strip-json-comments: ^3.1.1 - checksum: d3f51b741997cbf36662d8b5a52985bfa5d2873e48cadccd95c67fcce1706327ec98ebb6f0be79c6ecbc31bdeca32c2b1c4f66fd1cf3934c434d1ac269cbceac + checksum: 418f5810c8dd9897d2457ceef098197d0e5f1ad345fbe4cd9256fd4223d7ea83d5e350f9091b3ab3483b6b1c367fa560df3ba1fccc7eb8ca6e1aae5a5b126d60 languageName: node linkType: hard @@ -2382,9 +2384,9 @@ __metadata: linkType: hard "@hapi/hoek@npm:^9.0.0": - version: 9.1.1 - resolution: "@hapi/hoek@npm:9.1.1" - checksum: e5be371c579bcdef755566b88ccd6bbf5c52ad2cc770e134ee909156cdcff2acf7aad3f4b5400d83742a27acc580a00a82d2cde8c812db0b0437e4e80fa0a6a0 + version: 9.2.0 + resolution: "@hapi/hoek@npm:9.2.0" + checksum: c68d43f3fa7de4d53362c38ed5927e7872394bd80cd8d500a8b6c705da92ad9d37106df72d97a63417270fb186e2ad0b147bc31d61b9cdba614987bf8f1ba1ae languageName: node linkType: hard @@ -2649,7 +2651,7 @@ __metadata: tempy: ^1.0.0 throat: ^6.0.1 ts-node: ^9.0.0 - type-fest: ^0.21.1 + type-fest: ^1.1.1 typescript: ^4.0.2 which: ^2.0.1 languageName: unknown @@ -3700,19 +3702,18 @@ __metadata: linkType: hard "@npmcli/git@npm:^2.0.1": - version: 2.0.6 - resolution: "@npmcli/git@npm:2.0.6" + version: 2.0.9 + resolution: "@npmcli/git@npm:2.0.9" dependencies: - "@npmcli/promise-spawn": ^1.1.0 + "@npmcli/promise-spawn": ^1.3.2 lru-cache: ^6.0.0 - mkdirp: ^1.0.3 - npm-pick-manifest: ^6.0.0 + mkdirp: ^1.0.4 + npm-pick-manifest: ^6.1.1 promise-inflight: ^1.0.1 promise-retry: ^2.0.1 - semver: ^7.3.2 - unique-filename: ^1.1.1 + semver: ^7.3.5 which: ^2.0.2 - checksum: 1ff0a52fe234e70bd29ca861fa557f6db760d43f8e3a4dc3530c64cdc7b1ece5650c326c934ede641198b3383055cae33be4ae12e70bce12bb86c266e639b826 + checksum: 31280e4ca4cd77919c44b1d4f1afa5dfb20cd31e69b802d5c904bc756f27b526b8d2f85671f04dc93b3b28746064981e3f5034ac316bc8a3a5fc43f90a3f4f7c languageName: node linkType: hard @@ -3745,7 +3746,7 @@ __metadata: languageName: node linkType: hard -"@npmcli/promise-spawn@npm:^1.1.0, @npmcli/promise-spawn@npm:^1.2.0, @npmcli/promise-spawn@npm:^1.3.2": +"@npmcli/promise-spawn@npm:^1.2.0, @npmcli/promise-spawn@npm:^1.3.2": version: 1.3.2 resolution: "@npmcli/promise-spawn@npm:1.3.2" dependencies: @@ -3755,16 +3756,15 @@ __metadata: linkType: hard "@npmcli/run-script@npm:^1.8.2": - version: 1.8.3 - resolution: "@npmcli/run-script@npm:1.8.3" + version: 1.8.5 + resolution: "@npmcli/run-script@npm:1.8.5" dependencies: "@npmcli/node-gyp": ^1.0.2 "@npmcli/promise-spawn": ^1.3.2 infer-owner: ^1.0.4 node-gyp: ^7.1.0 - puka: ^1.0.1 read-package-json-fast: ^2.0.1 - checksum: 88df7f6487fb32802b17a29015f13b479f9550b75cc83644ae9c3e03f1d8d0a8a0be31c002d0f71a4352f72c333d5e8cad6059e31a759854dc84ec971d42293a + checksum: cd66f3aa45c2c88c47b60c697cf1ac5d2959559452d6a639ceda42a225b2e698acebc6e1c0c97e956bcab492caa3772c86959ebd54b134d5dc84afd5e49d66e2 languageName: node linkType: hard @@ -3778,16 +3778,17 @@ __metadata: linkType: hard "@octokit/core@npm:^3.2.3": - version: 3.2.5 - resolution: "@octokit/core@npm:3.2.5" + version: 3.4.0 + resolution: "@octokit/core@npm:3.4.0" dependencies: "@octokit/auth-token": ^2.4.4 "@octokit/graphql": ^4.5.8 "@octokit/request": ^5.4.12 + "@octokit/request-error": ^2.0.5 "@octokit/types": ^6.0.3 - before-after-hook: ^2.1.0 + before-after-hook: ^2.2.0 universal-user-agent: ^6.0.0 - checksum: 509d224696a48c92b6182bcc03c0d7d4ba26eac30598300323411d2f8037de427930311244f1b9c446fc9916545db28b17d0812c1af5cf616fc5d2249416855e + checksum: bb8ba9be2c3d944361afff7c674c2bac22e831d37bfcf9b5e676fa19fd1d72d335e4d97e33103e6e91f87b4511c4353116945ade326587ef7a6d5e1f95c0c786 languageName: node linkType: hard @@ -3803,20 +3804,20 @@ __metadata: linkType: hard "@octokit/graphql@npm:^4.5.8": - version: 4.6.0 - resolution: "@octokit/graphql@npm:4.6.0" + version: 4.6.2 + resolution: "@octokit/graphql@npm:4.6.2" dependencies: "@octokit/request": ^5.3.0 "@octokit/types": ^6.0.3 universal-user-agent: ^6.0.0 - checksum: fc5d1b059301271f09caffb35610d1134491bd3572a1ecda530b90281167d9dd863553dd7a663e549af44ab5889d002655e702284eb70e4cd1cfd0e3f4465720 + checksum: b7a015d3c594b6606a9b93c2b03032489598ea3a097c82bc4803cc58898af63328d1c771a38060e596b31dbdbd6043fe028ea4564e4e932c478dcde529c32530 languageName: node linkType: hard -"@octokit/openapi-types@npm:^5.3.0": - version: 5.3.1 - resolution: "@octokit/openapi-types@npm:5.3.1" - checksum: 3112f970d228ac4b0dcb118a71a96302bf97c039a71af7e20fdc4206156ebb52b42d8b9ee76469eca5c3418946cbf21328397ae25c2c5645f6bbebfe5f59e9ed +"@octokit/openapi-types@npm:^7.0.0": + version: 7.0.0 + resolution: "@octokit/openapi-types@npm:7.0.0" + checksum: 703727ff2e1956c353350628cdbc54f7c206cd363908b887b632c7b7c8840e7d25528442485f77d3c7059c85ed3797de9083fdfd036b1d8f752bbd1bb12979ec languageName: node linkType: hard @@ -3828,13 +3829,13 @@ __metadata: linkType: hard "@octokit/plugin-paginate-rest@npm:^2.6.2": - version: 2.11.0 - resolution: "@octokit/plugin-paginate-rest@npm:2.11.0" + version: 2.13.3 + resolution: "@octokit/plugin-paginate-rest@npm:2.13.3" dependencies: "@octokit/types": ^6.11.0 peerDependencies: "@octokit/core": ">=2" - checksum: 4a15f876616bdc6d1232e6c1ab78a41cbd761321837f3fb063c8e70b00f3e835fb390190561352cd68412b9de35f76ea2b9479610711f6666cfb8513b5315f45 + checksum: b2b7772f054798fbc821161736921a729de042b36e38afa98b79b4409c2b793035dee6dc32c5f3500a77b1bc7e220b716fd19ff49c5a4712a86f37e074dc53f9 languageName: node linkType: hard @@ -3847,19 +3848,19 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-rest-endpoint-methods@npm:4.13.4": - version: 4.13.4 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:4.13.4" +"@octokit/plugin-rest-endpoint-methods@npm:5.0.1": + version: 5.0.1 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:5.0.1" dependencies: - "@octokit/types": ^6.12.0 + "@octokit/types": ^6.13.1 deprecation: ^2.3.1 peerDependencies: "@octokit/core": ">=3" - checksum: d50624aabcfe1fd55f75153c2a44d40dce0ffd3394d1cfaaaa432183af0ba199009a122b17ebc04a6bdcefd19b536d4c746382302878efecc9d673f0f28598dd + checksum: 8d4614a212d9c5cca7e360080b929ca1d2a3fa0099e59bbb8fbdb3f8b522e4a34171a8c12fe8588facf2fb819e30eddfcd3bd22f40f1a0d2002551b7a6bdce32 languageName: node linkType: hard -"@octokit/request-error@npm:^2.0.0": +"@octokit/request-error@npm:^2.0.0, @octokit/request-error@npm:^2.0.5": version: 2.0.5 resolution: "@octokit/request-error@npm:2.0.5" dependencies: @@ -3871,46 +3872,44 @@ __metadata: linkType: hard "@octokit/request@npm:^5.3.0, @octokit/request@npm:^5.4.12": - version: 5.4.14 - resolution: "@octokit/request@npm:5.4.14" + version: 5.4.15 + resolution: "@octokit/request@npm:5.4.15" dependencies: "@octokit/endpoint": ^6.0.1 "@octokit/request-error": ^2.0.0 "@octokit/types": ^6.7.1 - deprecation: ^2.0.0 is-plain-object: ^5.0.0 node-fetch: ^2.6.1 - once: ^1.4.0 universal-user-agent: ^6.0.0 - checksum: 06aa040100ec9e26f19df2e98a3495b075dd2fee02e02137d036e3202cab2d840e4455a852995c3df964bf2911cc969d5479020a65c48e63b96e5fa4b7a3115a + checksum: 15810826ee7082fe2a35c3273312c9de707e22a29cce0d9f205f08788155b0edc1a29d69f08b16b9d1e8688486389573e322f48479481c7093973f62504a0a72 languageName: node linkType: hard "@octokit/rest@npm:^18.1.0": - version: 18.3.4 - resolution: "@octokit/rest@npm:18.3.4" + version: 18.5.3 + resolution: "@octokit/rest@npm:18.5.3" dependencies: "@octokit/core": ^3.2.3 "@octokit/plugin-paginate-rest": ^2.6.2 "@octokit/plugin-request-log": ^1.0.2 - "@octokit/plugin-rest-endpoint-methods": 4.13.4 - checksum: b138404d604a0e68659595bf1813149dfda3df92f8657a09b8b657959093b64a82cb25931027a423b46a50189ea3ff72d035118119af3d749e1b75cc41ab5359 + "@octokit/plugin-rest-endpoint-methods": 5.0.1 + checksum: b7a39e556da48ca1c8517cc34bfa05b6831f32035be8b6f35209af295d9ba848211ed18e94449cfb71964de7d2d6b0803702d5a8f04b1a703f57261d02e42031 languageName: node linkType: hard -"@octokit/types@npm:^6.0.3, @octokit/types@npm:^6.11.0, @octokit/types@npm:^6.12.0, @octokit/types@npm:^6.7.1": - version: 6.12.0 - resolution: "@octokit/types@npm:6.12.0" +"@octokit/types@npm:^6.0.3, @octokit/types@npm:^6.11.0, @octokit/types@npm:^6.13.1, @octokit/types@npm:^6.7.1": + version: 6.14.2 + resolution: "@octokit/types@npm:6.14.2" dependencies: - "@octokit/openapi-types": ^5.3.0 - checksum: 5875448208952b594a2c8610b0c7391b1e0f078d55b330268aa85ff7855e349193a48380c960da4ef2f70aba0132b09e742a03fa61435735e119ffdbb9bf1ce6 + "@octokit/openapi-types": ^7.0.0 + checksum: b717cb855c7ea65b721452e278d6543a0cbe9729f9dc1fa02da93d726202e6526f95f21870ef0c67d7dceeb769e4ff183f650f362aceb6bd6b766caa781ca025 languageName: node linkType: hard "@polka/url@npm:^1.0.0-next.9": - version: 1.0.0-next.11 - resolution: "@polka/url@npm:1.0.0-next.11" - checksum: 268a83f4e1097baf0067e183b7682a00b647c6c30113a92b98c80cd719fc689a45d28c16257ffc817f5ffd4894fc52157957c39aaac329cdd12c82a10f6d61f7 + version: 1.0.0-next.12 + resolution: "@polka/url@npm:1.0.0-next.12" + checksum: f45ecfef340d43d0f4f055d3571bb3ab8a51523b243ba36287ce62a75800fa172f1fad46bcda8b806727af1e188d36d5355b75fcfb300a6bdc543ef1c1fe7b9e languageName: node linkType: hard @@ -3955,8 +3954,8 @@ __metadata: linkType: hard "@react-native-community/cli-platform-ios@npm:^5.0.1-alpha.0": - version: 5.0.1-alpha.1 - resolution: "@react-native-community/cli-platform-ios@npm:5.0.1-alpha.1" + version: 5.0.1-alpha.2 + resolution: "@react-native-community/cli-platform-ios@npm:5.0.1-alpha.2" dependencies: "@react-native-community/cli-tools": ^5.0.1-alpha.1 chalk: ^3.0.0 @@ -3965,13 +3964,13 @@ __metadata: lodash: ^4.17.15 plist: ^3.0.1 xcode: ^2.0.0 - checksum: ac9028b95628037b6402f7db2d447fe773dc857e2cbaf5a0131763fbf485ba701e850860c48128a6cee69e34423c1d7baac6bda2e631722902bd94dc879248dd + checksum: 2a964eed80a62c6c8945b8537d9c9be62a28e993f280c9b9cc6de9404110d4cb537e8a348ad61bbf9cc8a2c4e2498ae096c9336ccb00d411709ded2c4e3eb001 languageName: node linkType: hard -"@react-native-community/cli-server-api@npm:^5.0.1-alpha.1": - version: 5.0.1-alpha.1 - resolution: "@react-native-community/cli-server-api@npm:5.0.1-alpha.1" +"@react-native-community/cli-server-api@npm:^5.0.1-alpha.2": + version: 5.0.1-alpha.2 + resolution: "@react-native-community/cli-server-api@npm:5.0.1-alpha.2" dependencies: "@react-native-community/cli-debugger-ui": ^5.0.1-alpha.1 "@react-native-community/cli-tools": ^5.0.1-alpha.1 @@ -3982,7 +3981,7 @@ __metadata: pretty-format: ^26.6.2 serve-static: ^1.13.1 ws: ^1.1.0 - checksum: 9507c5c3e3dbec15ec76218a185a4bbef2f102822aa30c533713df152b8135c26ca5253683eb6f58deb14ccddbbfc6f35b5f869cc018594c890ab2809d45cd44 + checksum: bf4318bee8bc1b9f7774cfe0e830156d15987e616a01eeb71b709881a5227267e1f8fdd7d8bc08987c82c02b20aadff577e929a10de9df6fb288469f8cb29f42 languageName: node linkType: hard @@ -4010,12 +4009,12 @@ __metadata: linkType: hard "@react-native-community/cli@npm:^5.0.1-alpha.0": - version: 5.0.1-alpha.1 - resolution: "@react-native-community/cli@npm:5.0.1-alpha.1" + version: 5.0.1-alpha.2 + resolution: "@react-native-community/cli@npm:5.0.1-alpha.2" dependencies: "@react-native-community/cli-debugger-ui": ^5.0.1-alpha.1 "@react-native-community/cli-hermes": ^5.0.1-alpha.1 - "@react-native-community/cli-server-api": ^5.0.1-alpha.1 + "@react-native-community/cli-server-api": ^5.0.1-alpha.2 "@react-native-community/cli-tools": ^5.0.1-alpha.1 "@react-native-community/cli-types": ^5.0.1-alpha.1 appdirsjs: ^1.2.4 @@ -4054,7 +4053,7 @@ __metadata: react-native: "*" bin: react-native: build/bin.js - checksum: 4e48cc8110c69853efb6ed67db5bf48c7706df57c8d0f5b7aa8deac500176f6d3bdbbd881835180a09ac1c73855312c45431cb72921a39bc7a4ea02e5194fbe0 + checksum: 28fedc1b9c13afc262987957e6b174cf5671bea838ffc3587b6494c2036af048ed0cdb1abc7f5554e7ed1f37cca0bb6745616766e7f59a6a6d4fca1e94750df2 languageName: node linkType: hard @@ -4096,31 +4095,31 @@ __metadata: languageName: node linkType: hard -"@rollup/plugin-node-resolve@npm:^9.0.0": - version: 9.0.0 - resolution: "@rollup/plugin-node-resolve@npm:9.0.0" +"@rollup/plugin-node-resolve@npm:^11.2.1": + version: 11.2.1 + resolution: "@rollup/plugin-node-resolve@npm:11.2.1" dependencies: "@rollup/pluginutils": ^3.1.0 "@types/resolve": 1.17.1 builtin-modules: ^3.1.0 deepmerge: ^4.2.2 is-module: ^1.0.0 - resolve: ^1.17.0 + resolve: ^1.19.0 peerDependencies: rollup: ^1.20.0||^2.0.0 - checksum: 34576bbd9cfb096ed6fcce256e9210995144ccfd352ef09134507a7c6b479cee20da2896525ebf8bf139d9a31e8eec4b6787ed9de3209ee6610a949dc9f7c268 + checksum: ae1bed46a949a1d8c077e021751c0140a523f731bea464ed0bfc3d335096493d1638be2a756f72d96f1f3a00fbdad8ba8fad8e86381d3eafce5ea2dffd62f175 languageName: node linkType: hard -"@rollup/plugin-replace@npm:^2.3.3": - version: 2.4.1 - resolution: "@rollup/plugin-replace@npm:2.4.1" +"@rollup/plugin-replace@npm:^2.4.1": + version: 2.4.2 + resolution: "@rollup/plugin-replace@npm:2.4.2" dependencies: "@rollup/pluginutils": ^3.1.0 magic-string: ^0.25.7 peerDependencies: rollup: ^1.20.0 || ^2.0.0 - checksum: cbb79ee0176bd333c4c3a9def89c05394363ec7bd496e1298f40f012b48f2093413bfd618eb1b7b39f0f00f2976b56cfcd4f40a2eed1c2a99386c537c816ff7b + checksum: b8532ce34011d6384b697e351c6ca6863aeb08b02dfc968efde84dc397d77c7efdff7623c4d05562d21ef62c8a598e765deb9608d6a6bf65835a956325ef20e7 languageName: node linkType: hard @@ -4138,11 +4137,11 @@ __metadata: linkType: hard "@sideway/address@npm:^4.1.0": - version: 4.1.1 - resolution: "@sideway/address@npm:4.1.1" + version: 4.1.2 + resolution: "@sideway/address@npm:4.1.2" dependencies: "@hapi/hoek": ^9.0.0 - checksum: ba8678372e821590a58ea5edf62370473c8458255168d28d20e9fe6c90c65f5218377012cc5b61a4b544dcd3f2e65a768bca2ae266310e16045dcd85ea17079c + checksum: e5fcccb92024859e0acbb893e84e626298656ea77e3727d80352659474968fae1b2816800145793592e340cff7f137d539490fd202073146cb43bf8370ef2062 languageName: node linkType: hard @@ -4168,20 +4167,20 @@ __metadata: linkType: hard "@sinonjs/commons@npm:^1.7.0": - version: 1.8.2 - resolution: "@sinonjs/commons@npm:1.8.2" + version: 1.8.3 + resolution: "@sinonjs/commons@npm:1.8.3" dependencies: type-detect: 4.0.8 - checksum: b7eb499e3537a487160fcc42e65b9ad8c7d70ee4a1bbebacdbe28149e01b2da501912df2fbf06c81eac51de8c0ad10eaae573b31932ee747c9f1949fee30c20d + checksum: a7f3181512f67bbb9059dc9247febfda6dea58fc2a918360b208c6fde193b0c2cbe628650b0d13b4ba69f144470788eb6c2ef8a84e050dce4808be8511da4316 languageName: node linkType: hard "@sinonjs/fake-timers@npm:^7.0.2": - version: 7.0.2 - resolution: "@sinonjs/fake-timers@npm:7.0.2" + version: 7.0.5 + resolution: "@sinonjs/fake-timers@npm:7.0.5" dependencies: "@sinonjs/commons": ^1.7.0 - checksum: b976616900e9ce005f1790b3227697aba909d546b0aed42c75e38f82780ed81d70031ffd9406363ccde3da7f169f2e8a205ef712113d727f896b6cf91aff5e14 + checksum: 5cc43301d3d46affdace077854ecffd299b80ab3a438bf34f21b6d6d27e0be636ba475397d12fd5b8561bd30679d0597f9d7e8b5e0c82ad57a6c9b49e366e9b4 languageName: node linkType: hard @@ -4336,8 +4335,8 @@ __metadata: linkType: hard "@testing-library/dom@npm:^7.28.1": - version: 7.30.1 - resolution: "@testing-library/dom@npm:7.30.1" + version: 7.31.0 + resolution: "@testing-library/dom@npm:7.31.0" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 @@ -4347,20 +4346,20 @@ __metadata: dom-accessibility-api: ^0.5.4 lz-string: ^1.4.4 pretty-format: ^26.6.2 - checksum: a886bdb20955e5f029fa10932184128dd701dac866dc8016e66f339d89ab5b63185c3584ea5eb2a5ffbcb779bad6952f1f0933cc47f6772450211cd85b55861e + checksum: 84c4bf5d33091b2eb668d8305591362bf9e3037eaca636bc97469622feaa3407ce1cc2af6d5f1a81b66b3e566cebef5b2c01d3ee47bc4c92abca38969f0f155d languageName: node linkType: hard "@testing-library/react@npm:*": - version: 11.2.5 - resolution: "@testing-library/react@npm:11.2.5" + version: 11.2.7 + resolution: "@testing-library/react@npm:11.2.7" dependencies: "@babel/runtime": ^7.12.5 "@testing-library/dom": ^7.28.1 peerDependencies: react: "*" react-dom: "*" - checksum: 1389b4eb110ad32ac328634846fd92570979c0cb739a3ee99eeb2278860a1910a81126612457379fc306dbd6417b4b5ff1ddd88ede3d8ebb1da3972e70877e83 + checksum: 389c9f3e83f59677f5283783788d18f8cd499342a0e5c1f67821c292860afe5f282ff8b5ced795b9c2f7d78132005d8b6b33e1b3e3a9004e240e3569f8e168ef languageName: node linkType: hard @@ -4393,12 +4392,12 @@ __metadata: linkType: hard "@types/babel-plugin-tester@npm:^9.0.0": - version: 9.0.1 - resolution: "@types/babel-plugin-tester@npm:9.0.1" + version: 9.0.2 + resolution: "@types/babel-plugin-tester@npm:9.0.2" dependencies: "@types/babel__core": "*" "@types/prettier": "*" - checksum: fc023ab84ff1c2e7641c04be474aafb7850e713944b526431dbcbe505cb896896af6c4eae8cd67c18ddca9c6f05e807d9277982c49a97695d6c35c8cb83ccb62 + checksum: 282c7bcc012403d05149ee3dcb4b0742406e63312e914e3c83fc8518840b18fde3d92b54984ac7fa93839dd851b183b0c96dc2b16c37f8603b3066b53971b568 languageName: node linkType: hard @@ -4449,11 +4448,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": - version: 7.11.0 - resolution: "@types/babel__traverse@npm:7.11.0" + version: 7.11.1 + resolution: "@types/babel__traverse@npm:7.11.1" dependencies: "@babel/types": ^7.3.0 - checksum: cfb83f1633aafbd447008caf6d40d188a7318ac64d64beaa469dd6d35f72c8298869a6668f082e1116fecf1425654ed0a3dc7fccdc2e18c803b0a7b44f88bec0 + checksum: 676150e00d1f6b535a3c53f9c22ae4abb3707abdbf71a9ebf200a8722fc0cd9b7c677165c0dea35616fed5af9f93b40aaa58ba56fd21bb2c843cd03c12419afd languageName: node linkType: hard @@ -4659,23 +4658,23 @@ __metadata: linkType: hard "@types/jest@npm:*, @types/jest@npm:^26.0.15": - version: 26.0.20 - resolution: "@types/jest@npm:26.0.20" + version: 26.0.23 + resolution: "@types/jest@npm:26.0.23" dependencies: jest-diff: ^26.0.0 pretty-format: ^26.0.0 - checksum: 221e39c7c9ce8d71ae4b2ba6abeef1a5b04f1cd96419b9fbbb65534bef4c4215b650561183073dcf47584ff1888d1f4fa7d2af2a38492b7feb9a3bfdcd24c44f + checksum: a015676b78bdc51be6f6315acef10d9106ea8064e3e49143bca3c75b834b61285b45c5f5ccfd049a80107f1e2869a9183cdb5be85816c073ea8dd05852fafdc6 languageName: node linkType: hard "@types/jsdom@npm:^16.2.4": - version: 16.2.6 - resolution: "@types/jsdom@npm:16.2.6" + version: 16.2.7 + resolution: "@types/jsdom@npm:16.2.7" dependencies: "@types/node": "*" "@types/parse5": "*" "@types/tough-cookie": "*" - checksum: 64252ba056a916c434ce121d250ca0327ae2362808b1eb1a652b49801e7a0c36e5f0f8b06b25fee5203e6bf8f4af1d7e0a0c2b3ec6cd5e084f01b22d6f7b22b8 + checksum: 2acc361cf2aea5a13d78c3d9e63f4101f19ed02d202d6c870279dc51aa06c1f4e060a52322f9dcd660653334f890ccb3c594c23fc714cb3edf3b8641c7c66565 languageName: node linkType: hard @@ -4730,9 +4729,9 @@ __metadata: linkType: hard "@types/minimatch@npm:*, @types/minimatch@npm:^3.0.3": - version: 3.0.3 - resolution: "@types/minimatch@npm:3.0.3" - checksum: 672ccdac197e8176eed1a9441d0caf8a29a90eb139b1cefdd4c9e71b1c48f5c749f5d101a2d85da15c6259214ebda95072835021407d60330a731a2672964b82 + version: 3.0.4 + resolution: "@types/minimatch@npm:3.0.4" + checksum: abbe7031d8a6144c36f1803c5c1914885c2349d5d73fc45aae44807c12c4c803b8acfb134c71c7eff75c462c218697f982b96633f8fdf71b83ec50eba36122a6 languageName: node linkType: hard @@ -4767,9 +4766,9 @@ __metadata: linkType: hard "@types/node@npm:^14.0.27, @types/node@npm:^14.14.28": - version: 14.14.41 - resolution: "@types/node@npm:14.14.41" - checksum: 37dfb639644c8ee9b9846106834983f590d494b855e74645a4f169ea24199f7559366d25f6e72e83ba940b59eb6370e002bd53963d098d6d9fdf935a37011417 + version: 14.14.45 + resolution: "@types/node@npm:14.14.45" + checksum: b9ad381a8cc5273bfd75d5870f57eed2b0978a5afe9e7e0347fcdb955e9fed502277a374c2837c3e1fe6a7ade58d53a460d954dbbe50e2f18bdd7e86075ffca9 languageName: node linkType: hard @@ -4802,16 +4801,16 @@ __metadata: linkType: hard "@types/picomatch@npm:^2.2.2": - version: 2.2.2 - resolution: "@types/picomatch@npm:2.2.2" - checksum: f55b30a9c532bd701f502132127c905739acd53cd5c0e5b3ef4b6bdbe7387c028f44cd3e8dd5b6df584ff57d0ca0dea22c2433b2fe137265a87c4893aefa8a61 + version: 2.2.4 + resolution: "@types/picomatch@npm:2.2.4" + checksum: c3447130e925d51fcec01a75a7b4aa9576643725579fdd8d7223e136d22646849b5543df46a1737062925919e9aa201e39180155a48ec24ff97027062d89e506 languageName: node linkType: hard "@types/prettier@npm:*, @types/prettier@npm:^2.0.0, @types/prettier@npm:^2.1.5": - version: 2.2.2 - resolution: "@types/prettier@npm:2.2.2" - checksum: 907c2dac93899961706017ecf17d0038b500f499f61d6f1d31e439dae88f7cb90ee944760b1348856baa7befa42761fc53f9bde5add08feccfc810280347d681 + version: 2.2.3 + resolution: "@types/prettier@npm:2.2.3" + checksum: b7e80288f9f776caca84391a7a217b8baac6b4fce00bb9701af69299d465cb8faf17466f0af0803970c74d2c191767ca729a6d21a2f7e2ce552d1ef6cc0d653a languageName: node linkType: hard @@ -4855,13 +4854,13 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:^17.0.3": - version: 17.0.3 - resolution: "@types/react@npm:17.0.3" + version: 17.0.5 + resolution: "@types/react@npm:17.0.5" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 5bcaabadc90a23ad9008540eae98a5819b638c4cf1b968adc67be47d6a8dc8cb100061d877dae97618fb275e405dc484b37154080c7ac0ea7df5efcdd8f98c24 + checksum: f9793e8113f14122d6ed20643b4fe27d30e10d7c80571a1d238c13f8171864f2a7b337194bf41310724498586ed4560fffd081a2d21e488afbb1aca33534189b languageName: node linkType: hard @@ -4917,9 +4916,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.1.0": - version: 7.3.4 - resolution: "@types/semver@npm:7.3.4" - checksum: 7e8588aa55ecb344eda6954674b83a3c568d97d478e70e4617bd3ab22902590ac416ccf2cea48b58fb2f0fbd80f9ad1896332c9b3c3189ffd24e4350ff22094a + version: 7.3.6 + resolution: "@types/semver@npm:7.3.6" + checksum: 36776caed9a5d80cc7e0dd32fc08ac762918273bef849c369a300895646f9126e9857c9235e130493cf1fb2ee77e44cd1b599eded4fcbd11803962936771506a languageName: node linkType: hard @@ -4946,10 +4945,10 @@ __metadata: languageName: node linkType: hard -"@types/supports-color@npm:^7.2.0": - version: 7.2.0 - resolution: "@types/supports-color@npm:7.2.0" - checksum: c17abde9400b1ce7bfc519810964e659288741587fb077c8976a060113d5782263b5d6bc5a56d9961e7c04451700ec627205a9ca91e270754742c5047f3c442f +"@types/supports-color@npm:^8.1.0": + version: 8.1.0 + resolution: "@types/supports-color@npm:8.1.0" + checksum: fe659b5972097f3df64f28a33fd31aa1651a6f24fcd80580c273fabc55c40a2eb63e047369bb4298a01d9b8ae88d5cb14693b7ff84b1776099cac0ab16999c19 languageName: node linkType: hard @@ -5016,20 +5015,20 @@ __metadata: linkType: hard "@types/yargs@npm:^16.0.0": - version: 16.0.0 - resolution: "@types/yargs@npm:16.0.0" + version: 16.0.1 + resolution: "@types/yargs@npm:16.0.1" dependencies: "@types/yargs-parser": "*" - checksum: a17fa2814a4c19b7d327c0d6e6ecb9ca6a68fbfded0c1966d0ef6557540c055f7b9c1c1eadde48acb584f75708d4ec96ba59e58e77b8edbb602c23ed3bee76b9 + checksum: 7b141b6a9efe2da5af054b022f2fbfa3a34d664f1db384babc567b20e9935ac18924c8075780ea22f5e0da4f5714f24dc27b05b6475cd060031648f154183a45 languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^4.1.0": - version: 4.16.1 - resolution: "@typescript-eslint/eslint-plugin@npm:4.16.1" + version: 4.24.0 + resolution: "@typescript-eslint/eslint-plugin@npm:4.24.0" dependencies: - "@typescript-eslint/experimental-utils": 4.16.1 - "@typescript-eslint/scope-manager": 4.16.1 + "@typescript-eslint/experimental-utils": 4.24.0 + "@typescript-eslint/scope-manager": 4.24.0 debug: ^4.1.1 functional-red-black-tree: ^1.0.1 lodash: ^4.17.15 @@ -5042,66 +5041,66 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 873347906fdfe9a70dc80b80f1cbcc6dff00fae5a367ec186e52c6ce616941aa757cd5bc8dbba706f86633df4af396e6c33d68b890983444417a3e76a94c9ad4 + checksum: b3fb023320073cfbbc51d435313d63519a0c2ddb6360ace337e57be29851733edae54d2b4a893b54ee06080266021951f8a541b85084f2a00bf49c06d90e410d languageName: node linkType: hard -"@typescript-eslint/experimental-utils@npm:4.16.1, @typescript-eslint/experimental-utils@npm:^4.0.1": - version: 4.16.1 - resolution: "@typescript-eslint/experimental-utils@npm:4.16.1" +"@typescript-eslint/experimental-utils@npm:4.24.0, @typescript-eslint/experimental-utils@npm:^4.0.1": + version: 4.24.0 + resolution: "@typescript-eslint/experimental-utils@npm:4.24.0" dependencies: "@types/json-schema": ^7.0.3 - "@typescript-eslint/scope-manager": 4.16.1 - "@typescript-eslint/types": 4.16.1 - "@typescript-eslint/typescript-estree": 4.16.1 + "@typescript-eslint/scope-manager": 4.24.0 + "@typescript-eslint/types": 4.24.0 + "@typescript-eslint/typescript-estree": 4.24.0 eslint-scope: ^5.0.0 eslint-utils: ^2.0.0 peerDependencies: eslint: "*" - checksum: 526ca13632841963ed29fcd3688ff300d5ee3ecd442b8e1e540bee7fe09e4595cd43da7aa6c3c5f27c8876f55c823b4fd34e9639ceaf1f8af2a5db4561c57e82 + checksum: 09a28e2b8b39739e7543afca53910b175d0ac4d9346da25479ef179bbeea3cb6d004bd5e931f5402fb39a1af7aa49b793c573da1faa1e773ea6d18006b781a5a languageName: node linkType: hard "@typescript-eslint/parser@npm:^4.1.0": - version: 4.16.1 - resolution: "@typescript-eslint/parser@npm:4.16.1" + version: 4.24.0 + resolution: "@typescript-eslint/parser@npm:4.24.0" dependencies: - "@typescript-eslint/scope-manager": 4.16.1 - "@typescript-eslint/types": 4.16.1 - "@typescript-eslint/typescript-estree": 4.16.1 + "@typescript-eslint/scope-manager": 4.24.0 + "@typescript-eslint/types": 4.24.0 + "@typescript-eslint/typescript-estree": 4.24.0 debug: ^4.1.1 peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 9ce7c8b2ec9679c6428b44fe06f6a56f145b54b72549691d97e3d6a4ffd0fc116ca61bdef695e77c3217fc30f2988434078e09009ab2dc5ec028e6f3cecb9a16 + checksum: 30ff5e6b1e5e28a21f609576b6c504b6311ee7c26c6ffb1eaa986db16857765e7f5ad46c37c362a1fd809c3f3aead6be9c4e6b1289473be6764cf8f22e6f067e languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:4.16.1": - version: 4.16.1 - resolution: "@typescript-eslint/scope-manager@npm:4.16.1" +"@typescript-eslint/scope-manager@npm:4.24.0": + version: 4.24.0 + resolution: "@typescript-eslint/scope-manager@npm:4.24.0" dependencies: - "@typescript-eslint/types": 4.16.1 - "@typescript-eslint/visitor-keys": 4.16.1 - checksum: 2872ae6b3c1afe6d0de2168cf4c14864ac6183de8db081f8efc236a4a6f6448d59f80abc529ab3b50b48b8a9a5b21c4bacbad8936a384ca3c2f1bb4b950fd4de + "@typescript-eslint/types": 4.24.0 + "@typescript-eslint/visitor-keys": 4.24.0 + checksum: 522d96e562bec1c717e5ec6665801ee54eaf18653044e3b385cf6967ffdfa0bdf17c0f058fff3af6ec935815abe8419969c26c6cf564e07db2487571f04c2ea4 languageName: node linkType: hard -"@typescript-eslint/types@npm:4.16.1": - version: 4.16.1 - resolution: "@typescript-eslint/types@npm:4.16.1" - checksum: 5df220b8dff372540921d8ef478f4107e6eb51824e7346c942dafc2d181cd937983fa80f44c2e94abf28b57a303e72205915d2bca13ac37c028a98710fd37baa +"@typescript-eslint/types@npm:4.24.0": + version: 4.24.0 + resolution: "@typescript-eslint/types@npm:4.24.0" + checksum: ed06724661da645419b353eefa4a81df6503a4ebd56d07113f58beb0f524414e2f3acaf82a997bb2a1cad8f99d9889cc5fc11ea0928262de65c75516eccadc59 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:4.16.1": - version: 4.16.1 - resolution: "@typescript-eslint/typescript-estree@npm:4.16.1" +"@typescript-eslint/typescript-estree@npm:4.24.0": + version: 4.24.0 + resolution: "@typescript-eslint/typescript-estree@npm:4.24.0" dependencies: - "@typescript-eslint/types": 4.16.1 - "@typescript-eslint/visitor-keys": 4.16.1 + "@typescript-eslint/types": 4.24.0 + "@typescript-eslint/visitor-keys": 4.24.0 debug: ^4.1.1 globby: ^11.0.1 is-glob: ^4.0.1 @@ -5110,17 +5109,17 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: d09de17eb15f08a44574d62a3eadcacd6d331372bd7525cfb7d08d9caeb8d09c2f5a195927ea48a71996337baab47bf9c7d50549c160b901be6a6bc1df9c3f39 + checksum: 7720b1f5e8c3c3bf212da3325d9beb699adb52c9cbbcf810f4a53a71e18752e299415794474fa3909671fe20fa5dc26f50c1ba476c8ae90bd2a5484f58c9b708 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:4.16.1": - version: 4.16.1 - resolution: "@typescript-eslint/visitor-keys@npm:4.16.1" +"@typescript-eslint/visitor-keys@npm:4.24.0": + version: 4.24.0 + resolution: "@typescript-eslint/visitor-keys@npm:4.24.0" dependencies: - "@typescript-eslint/types": 4.16.1 + "@typescript-eslint/types": 4.24.0 eslint-visitor-keys: ^2.0.0 - checksum: 7b3f87165fc3533e80c8e5848306dca7ffbe7a6c04c40895cb5cdbfdf55bca606933efae20c16d91576e0ab926f8f539257b1fb13231aac3b0c8ad9d741042c9 + checksum: ec25df6705f3768b415abcfeae09ef6dc4ee7a7e77e9b7b795fc461668ed4a7c5a406a23af31e1471fa920adc705c515fe56e86a7cda6cddef8521f54afadffc languageName: node linkType: hard @@ -5301,7 +5300,7 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3": +"abab@npm:^2.0.3, abab@npm:^2.0.5": version: 2.0.5 resolution: "abab@npm:2.0.5" checksum: a42b91bd9dd2451a3fc6996bc8953139904ff7b1a793719205041148da892337afc97ed0589ef2c44765c4da3d688eed145781db1623b611621d805294c367a3 @@ -5368,9 +5367,9 @@ __metadata: linkType: hard "acorn-walk@npm:^8.0.0": - version: 8.0.2 - resolution: "acorn-walk@npm:8.0.2" - checksum: 7ee956dadf38d18f61e932249530aaad069b560e06964a47cd455bbf607b0cbbf0f718e3d931d3040036fb4ac069fd8a912601da49ffa7214c483b5e95800fea + version: 8.1.0 + resolution: "acorn-walk@npm:8.1.0" + checksum: 2c349b42147a7a57719800a7be90c0ca83db8d17b48f42d6f88d907dbce65ca5649c2ec6a8fde6327690ca289b10c77b15fb2912c5e1ad7f9e9a874051aee812 languageName: node linkType: hard @@ -5383,21 +5382,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4": - version: 8.1.0 - resolution: "acorn@npm:8.1.0" +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.2.1": + version: 8.2.4 + resolution: "acorn@npm:8.2.4" bin: acorn: bin/acorn - checksum: 99ccf30832b00ff7e19dff353479fd303c5a82c4ae0a5c5904a6c03316658b89bbdca40f5d8473e6aedd988a404190abd7b431dbd3160df4c09a10398b84bf1c - languageName: node - linkType: hard - -"acorn@npm:^8.2.1": - version: 8.2.2 - resolution: "acorn@npm:8.2.2" - bin: - acorn: bin/acorn - checksum: 9e509a7a99e4e65cbfe48395f2d5576a7dbd30078ae95ea28f771921667c102b092d79994c20658ae98506ed4f2e86b5e6fcdbba3e6f8e18eda195568942cfe9 + checksum: 6879266ea9ba4ece99afb4ab4f3ac6eaa3cf866cee40651ca90cde0b1fd5c6954d2006c54877c83287d5d38700327cbd6bda028b6fbb1daa346c7034f18147c2 languageName: node linkType: hard @@ -5415,13 +5405,6 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:5": - version: 5.1.1 - resolution: "agent-base@npm:5.1.1" - checksum: aff8e856932ba63bbe097ac460f2f474669c5a1ca7674d3be19d4c258b4276a6b71863fb25c8bc3d424320d0c81652044098346403e759a65a76712e697633fa - languageName: node - linkType: hard - "agent-base@npm:6": version: 6.0.2 resolution: "agent-base@npm:6.0.2" @@ -5501,15 +5484,15 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^7.0.2": - version: 7.1.1 - resolution: "ajv@npm:7.1.1" +"ajv@npm:^8.0.1": + version: 8.4.0 + resolution: "ajv@npm:8.4.0" dependencies: fast-deep-equal: ^3.1.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 uri-js: ^4.2.2 - checksum: fe4e138529363bf1c8c429e1f3e88480918b538fe4a44660b989cea863714715af75e874aad129ccd5cbcf6647fa457e20b735bb3279a3bca08f11193bae5d19 + checksum: 0dcdfe0ecaafca2de60d01601c041853a1057f26bcb24de79484a3f6947486cad7b84d2779f93a9a315345451248aca14ed4996213905b42fac4ec11c7a76a6c languageName: node linkType: hard @@ -5525,24 +5508,24 @@ __metadata: linkType: hard "algoliasearch@npm:^4.0.0, algoliasearch@npm:^4.8.4": - version: 4.8.6 - resolution: "algoliasearch@npm:4.8.6" - dependencies: - "@algolia/cache-browser-local-storage": 4.8.6 - "@algolia/cache-common": 4.8.6 - "@algolia/cache-in-memory": 4.8.6 - "@algolia/client-account": 4.8.6 - "@algolia/client-analytics": 4.8.6 - "@algolia/client-common": 4.8.6 - "@algolia/client-recommendation": 4.8.6 - "@algolia/client-search": 4.8.6 - "@algolia/logger-common": 4.8.6 - "@algolia/logger-console": 4.8.6 - "@algolia/requester-browser-xhr": 4.8.6 - "@algolia/requester-common": 4.8.6 - "@algolia/requester-node-http": 4.8.6 - "@algolia/transporter": 4.8.6 - checksum: e638263b7bd24f43addc341ffa530fa97bb418574a936daf4493a4bd66a830cfdf8ceae651fed5b41ced26a3ba4ce320f5473646dfc7027f3dd6b334fae8db76 + version: 4.9.1 + resolution: "algoliasearch@npm:4.9.1" + dependencies: + "@algolia/cache-browser-local-storage": 4.9.1 + "@algolia/cache-common": 4.9.1 + "@algolia/cache-in-memory": 4.9.1 + "@algolia/client-account": 4.9.1 + "@algolia/client-analytics": 4.9.1 + "@algolia/client-common": 4.9.1 + "@algolia/client-recommendation": 4.9.1 + "@algolia/client-search": 4.9.1 + "@algolia/logger-common": 4.9.1 + "@algolia/logger-console": 4.9.1 + "@algolia/requester-browser-xhr": 4.9.1 + "@algolia/requester-common": 4.9.1 + "@algolia/requester-node-http": 4.9.1 + "@algolia/transporter": 4.9.1 + checksum: 0127dd9cb07250db4e5666dc5929701563d27726b546c1c7df07318aeadeb8c06d52d6d2addb87bf2c981a2812bd44af0ed1c10b2ec2ae54e15f6c9361b723d4 languageName: node linkType: hard @@ -5557,12 +5540,12 @@ __metadata: version: 0.0.0-use.local resolution: "angular@workspace:examples/angular" dependencies: - "@angular/common": ^11.0.0 - "@angular/compiler": ^11.0.0 - "@angular/core": ^11.0.0 - "@angular/forms": ^11.0.0 - "@angular/platform-browser": ^11.0.0 - "@angular/platform-browser-dynamic": ^11.0.0 + "@angular/common": ^12.0.0 + "@angular/compiler": ^12.0.0 + "@angular/core": ^12.0.0 + "@angular/forms": ^12.0.0 + "@angular/platform-browser": ^12.0.0 + "@angular/platform-browser-dynamic": ^12.0.0 "@babel/core": "*" "@babel/plugin-proposal-class-properties": "*" "@babel/plugin-proposal-decorators": "*" @@ -5612,11 +5595,11 @@ __metadata: linkType: hard "ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.1": - version: 4.3.1 - resolution: "ansi-escapes@npm:4.3.1" + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" dependencies: - type-fest: ^0.11.0 - checksum: bcb39e57bd32af0236c4ded96aaf8ef5d86c5a4683762b0be998c68cd11d5afd93296f4b5e087a3557da82a899b7c4d081483d603a4d4647e6a6613bf1aded8a + type-fest: ^0.21.3 + checksum: eca4d4e15b214376b04c8ce16d75adcfdcf706c38d682474d84d007f792d2f0f2f217b613ed3e7545fa0ad9f1d815ccd2a942c6b1d3156fff01b00652090fcb8 languageName: node linkType: hard @@ -5687,9 +5670,9 @@ __metadata: linkType: hard "ansi-styles@npm:^5.0.0": - version: 5.1.0 - resolution: "ansi-styles@npm:5.1.0" - checksum: 7a6de64edc4de392134864aced56be7d9d2a5c4525e7b60d7ab5de8910d84c0c5a7a0dde494576624d4deb03ee184862a80ff3ae1649a376b42c418acc4fd21a + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10b01465c7a49cbfcc055188e3b79b00db6283319bb53c0d20ca9ad114d1477d6f48c1d01a3ed9678f616566ec33f11116926dfaa162fa7be9ee7d5d2c2ea7e1 languageName: node linkType: hard @@ -5704,12 +5687,12 @@ __metadata: linkType: hard "anymatch@npm:^3.0.3, anymatch@npm:~3.1.1": - version: 3.1.1 - resolution: "anymatch@npm:3.1.1" + version: 3.1.2 + resolution: "anymatch@npm:3.1.2" dependencies: normalize-path: ^3.0.0 picomatch: ^2.0.4 - checksum: cf61bbaf7f34d9f94dd966230b7a7f8f1f24e3e2185540741a2561118e108206d85101ee2fc9876cd756475dbe6573d84d91115c3abdbf53a64e26a5f1f06b67 + checksum: cd6c08eb8d435741a9de6f5695c75cfba747a50772929ca588235535c6a57d37f2c2b34057768f015fd92abb88108b122ed2e399faac6ae30363a8ca0b6107d0 languageName: node linkType: hard @@ -6207,39 +6190,39 @@ __metadata: languageName: unknown linkType: soft -"babel-plugin-polyfill-corejs2@npm:^0.1.4": - version: 0.1.10 - resolution: "babel-plugin-polyfill-corejs2@npm:0.1.10" +"babel-plugin-polyfill-corejs2@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-corejs2@npm:0.2.0" dependencies: - "@babel/compat-data": ^7.13.0 - "@babel/helper-define-polyfill-provider": ^0.1.5 + "@babel/compat-data": ^7.13.11 + "@babel/helper-define-polyfill-provider": ^0.2.0 semver: ^6.1.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b11a01d9d3a078de5f26eeef8216f29b104239eee3ae93767dccdff9df558d07d159a35941ce5d77d6c658b9017475922831a232f8e60d94056412ba6ef2692b + checksum: 5d2825a9f28b322956da8941b069c3e4130478bc3620ab20e4b680671b31ad95d1c69514c58df9d5e2d54c87aba9ca92df5a7dbad54005b25ac9587af252db07 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.1.3": - version: 0.1.7 - resolution: "babel-plugin-polyfill-corejs3@npm:0.1.7" +"babel-plugin-polyfill-corejs3@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.2.0" dependencies: - "@babel/helper-define-polyfill-provider": ^0.1.5 - core-js-compat: ^3.8.1 + "@babel/helper-define-polyfill-provider": ^0.2.0 + core-js-compat: ^3.9.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d6f94262fbcfbfcffdb526abd20b49bdd730d646df3709b06536248b72c7b4c53a4f75f755c9041f249bf8486bd4eb1e79fdfb0796e4795cef64942b51123b50 + checksum: ae25400dd8764f737ecbd02f9aa3f35df62d3d239ad269edebab195551686b020d4b9b957cc303c6fbf9497c214e7b2f7fa3eee460d00b569d0d6f634ef3d5aa languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.1.2": - version: 0.1.6 - resolution: "babel-plugin-polyfill-regenerator@npm:0.1.6" +"babel-plugin-polyfill-regenerator@npm:^0.2.0": + version: 0.2.0 + resolution: "babel-plugin-polyfill-regenerator@npm:0.2.0" dependencies: - "@babel/helper-define-polyfill-provider": ^0.1.5 + "@babel/helper-define-polyfill-provider": ^0.2.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 49b98a19015074d3466e8b020928b7dc09ff2c1a62d8d8ba2f02f6e7e0cc99e3ac5e7624a7611acf0a8073d363c2d6aa6a0a6e7508b85f63982150164f1d7e25 + checksum: 538ab98e3062fb4ef4eae09587292513c03917902fe6d8c90b49001b26d41ffc3cd2da34b3b999b12e501cde1233e356af9f33f898c623720c94c6d9022d998c languageName: node linkType: hard @@ -6272,11 +6255,11 @@ __metadata: linkType: hard "babel-plugin-transform-typescript-metadata@npm:*": - version: 0.3.1 - resolution: "babel-plugin-transform-typescript-metadata@npm:0.3.1" + version: 0.3.2 + resolution: "babel-plugin-transform-typescript-metadata@npm:0.3.2" dependencies: "@babel/helper-plugin-utils": ^7.0.0 - checksum: d3875d2692fedb16dd1e1d16338b55d2b806c50d40942e90e379688ec9ad317d04e2abaaa3d8c609668c9fc0f7bc68bdb7abd91772ecad24cdb04d2c99b051fd + checksum: 49fb4d9d357bce403001e5d23e4c178f5a2cc0ed85f373261bf4635d927d77dc00396e6e91aee09c3950f5c71c4da5d92895a7faf95337cae306802b62a5e2da languageName: node linkType: hard @@ -6358,9 +6341,9 @@ __metadata: linkType: hard "balanced-match@npm:^1.0.0": - version: 1.0.0 - resolution: "balanced-match@npm:1.0.0" - checksum: f515a605fe1b59f476f7477c5e1d53ad55b4f42982fca1d57b6701906f4ad1f1ac90fd6587d92cc1af2edb43eecf979214dd847ee410a6de9db4ebf0dd128d62 + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 690643f3009a04289ac401079de5a780aae452f7625fb2884051cc847b231e6521ee15dd6430b066d3cf4bd8bb00bb7ff55b7d134f34b8f0b8c043806796f94e languageName: node linkType: hard @@ -6371,7 +6354,7 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.1.2, base64-js@npm:^1.2.3, base64-js@npm:^1.3.1": +"base64-js@npm:^1.1.2, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: c1b41a26ddc6620eb7f1ee6c29c812f5942a4e328e74263f995872cfb8ca3aee08542beb25cd10fd7ef16e4f16603e25c35a26e776c01fd55277e5035e829e0e @@ -6409,10 +6392,10 @@ __metadata: languageName: node linkType: hard -"before-after-hook@npm:^2.1.0": - version: 2.2.0 - resolution: "before-after-hook@npm:2.2.0" - checksum: 93e5f6532752d7136d871f4da57430cf61357a8fef81ee2c4981d9808483ddeb73a5f3d1c3eafcbb3ee079bdc0dc030cdc279ba3b793f0008fd86e30430f4787 +"before-after-hook@npm:^2.2.0": + version: 2.2.1 + resolution: "before-after-hook@npm:2.2.1" + checksum: 697c0ac2c802fe14fbed38103477ff8d05eb4ea06e6f442cacbb7b8a24e14e83fb40b6d9eb64dd963539041d1a52694123def876dd5eabae2634e0d83b6a8b95 languageName: node linkType: hard @@ -6547,8 +6530,8 @@ __metadata: linkType: hard "boxen@npm:^5.0.0": - version: 5.0.0 - resolution: "boxen@npm:5.0.0" + version: 5.0.1 + resolution: "boxen@npm:5.0.1" dependencies: ansi-align: ^3.0.0 camelcase: ^6.2.0 @@ -6558,7 +6541,7 @@ __metadata: type-fest: ^0.20.2 widest-line: ^3.1.0 wrap-ansi: ^7.0.0 - checksum: 2e7f20652542dd57badcac6800d919f8eddc220d7ef6e4b5ba59f48f0fbb02f9c03f03146a16963f11f64cefaeb8d698357b358378f425524026888dd030e089 + checksum: 7ebc1a33d19630e1272a6fa81b500399b9d8d5fea0fc027da36573b7e3dccb63e67ea6e804e9ac72fab576cbba1dc98b149285ae87f72fb8280acd18e273a332 languageName: node linkType: hard @@ -6638,33 +6621,18 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.3": - version: 4.16.3 - resolution: "browserslist@npm:4.16.3" +"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.0, browserslist@npm:^4.16.3, browserslist@npm:^4.16.6": + version: 4.16.6 + resolution: "browserslist@npm:4.16.6" dependencies: - caniuse-lite: ^1.0.30001181 - colorette: ^1.2.1 - electron-to-chromium: ^1.3.649 - escalade: ^3.1.1 - node-releases: ^1.1.70 - bin: - browserslist: cli.js - checksum: dfab0d3c3d9a3517cf3f8a274bc4e8245f3a02c1a5ae2a0e01498273d363952d11ee09fdce3b0ce551f6cab9d619ed2d9facf7b6471c9190df949a5ad39665c5 - languageName: node - linkType: hard - -"browserslist@npm:^4.16.0": - version: 4.16.5 - resolution: "browserslist@npm:4.16.5" - dependencies: - caniuse-lite: ^1.0.30001214 + caniuse-lite: ^1.0.30001219 colorette: ^1.2.2 - electron-to-chromium: ^1.3.719 + electron-to-chromium: ^1.3.723 escalade: ^3.1.1 node-releases: ^1.1.71 bin: browserslist: cli.js - checksum: ea06cb8262a69d1479ab2c288eb939250ea0a6b172a181ce7ce9410f1ee29701095c8c13bd575b70baead87743866471814f8c0247c9785b229b04bef399e4c8 + checksum: ebb0ab279c5e61f882467f7ccd7d22c0edfcc01201eba06e85e835ca4d355e682f9aa3310bfa18c3a23bb244f0b8e498b3113dae3e9b0fa4908c5ffb4a26b3a2 languageName: node linkType: hard @@ -6678,9 +6646,9 @@ __metadata: linkType: hard "bson@npm:^1.1.4": - version: 1.1.5 - resolution: "bson@npm:1.1.5" - checksum: d1e6fe96baac02dacc54cc33f8accce7bd289a22f0e98804e76adbb9af463ee414f6c8aed15fa18c133330fe859a7bb750e432f39549bd823bc73c5e6dc8e1e4 + version: 1.1.6 + resolution: "bson@npm:1.1.6" + checksum: d9e9e65dd4a980e7b035b71fa946d3c6d80910529b082e5aee731c5c3293d5570958255bd4316724128aa2e58a0dc374272e7e71865e44b7d5354e1d40acd53d languageName: node linkType: hard @@ -6758,8 +6726,8 @@ __metadata: linkType: hard "cacache@npm:^15.0.5": - version: 15.0.5 - resolution: "cacache@npm:15.0.5" + version: 15.0.6 + resolution: "cacache@npm:15.0.6" dependencies: "@npmcli/move-file": ^1.0.1 chownr: ^2.0.0 @@ -6775,10 +6743,10 @@ __metadata: p-map: ^4.0.0 promise-inflight: ^1.0.1 rimraf: ^3.0.2 - ssri: ^8.0.0 + ssri: ^8.0.1 tar: ^6.0.2 unique-filename: ^1.1.1 - checksum: 8e371cbf3c5051585127e63a84c9f1e430032590e5c4ada17d57b7953e21f6d5722e7f29f80cfef26520175ea2d1705a0670897ed7fe64377c7bd2ee650be287 + checksum: 14a42beacacd46eeb11577c27e866d17285f3647e5f870ded539eedb98ffc4d7d84bd49998e0eda140756494fd14e24b6a028710e2c00653fd6479f4e3dc47a3 languageName: node linkType: hard @@ -6927,17 +6895,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001181, caniuse-lite@npm:^1.0.30001196": - version: 1.0.30001198 - resolution: "caniuse-lite@npm:1.0.30001198" - checksum: fe1ac01934933ab2e8db93f68972be9271be3a5505f855cf37e1e1bc716d1cd8e3addeed960a3740ac13d27108bf5492478f7c626d0a237451bdc0d1d6386a26 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001214": - version: 1.0.30001219 - resolution: "caniuse-lite@npm:1.0.30001219" - checksum: 0a45591af1ffdd86b5c67534adceeb792b088418aa32912249a5609f32d2ded35254d8b300775b43b4d9d9b81d2d40f1e8e1c4aeebe6c69ed549bc52b41f2b30 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001196, caniuse-lite@npm:^1.0.30001219": + version: 1.0.30001228 + resolution: "caniuse-lite@npm:1.0.30001228" + checksum: a4eb04288e9b7f7bda158126f37e8dab97a5fc851dab192083f36906d8bf76e0526afa0692a662267ea4b3df0b0ba13f847457ac2be0f1ea209ec3013b7caabe languageName: node linkType: hard @@ -6986,12 +6947,12 @@ __metadata: linkType: hard "chalk@npm:^4.0.0, chalk@npm:^4.1.0": - version: 4.1.0 - resolution: "chalk@npm:4.1.0" + version: 4.1.1 + resolution: "chalk@npm:4.1.1" dependencies: ansi-styles: ^4.1.0 supports-color: ^7.1.0 - checksum: f860285b419f9e925c2db0f45ffa88aa8794c14b80cc5d01ff30930bcfc384996606362706f0829cf557f6d36152a5fb2d227ad63c4bc90e2ec9e9dbed4a3c07 + checksum: 445c12db7aeed0046500a1e4184d31209a77d165654c885a789c41c8598a6a95bd2392180987cac572c967b93a2a730dda778bb7f87fa06ca63fd8592f8cc59f languageName: node linkType: hard @@ -7125,11 +7086,9 @@ __metadata: linkType: hard "chrome-trace-event@npm:^1.0.2": - version: 1.0.2 - resolution: "chrome-trace-event@npm:1.0.2" - dependencies: - tslib: ^1.9.0 - checksum: 926fe23bc92e35c7fb666711c1dc1f342f289a728eb37d23bc4371df7587fe58152569eb57d657e2377f2e56093513939cab5a5a8f3589743938cc0b61527c02 + version: 1.0.3 + resolution: "chrome-trace-event@npm:1.0.3" + checksum: 0420a2d7eaf675c3fed5170ba52ea8e8b24654891a9efe398b90375c77558ef5612aa672bdd71d2cbcd6d97ca6461919834b879a2b223f8a6d86c1e1c756855c languageName: node linkType: hard @@ -7148,9 +7107,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.0.0 - resolution: "cjs-module-lexer@npm:1.0.0" - checksum: 5460ba5ac64ab7014b2263a2743a2b5e29a9add758fe22a84407581b59d916cc25758e34fb17d56d9911e27403aa7f090b474eb6e69f86c8df4aa77cb6aff908 + version: 1.2.1 + resolution: "cjs-module-lexer@npm:1.2.1" + checksum: 5c41324f072e70bb6fd0be6e7d28905231cbf71a62f96fec79d232df51226cb9a0750cd785933d5afdecd8efebb50327fb395d6e0fc3b67fb370b8025b980c17 languageName: node linkType: hard @@ -7176,11 +7135,11 @@ __metadata: linkType: hard "clean-css@npm:^5.1.1": - version: 5.1.1 - resolution: "clean-css@npm:5.1.1" + version: 5.1.2 + resolution: "clean-css@npm:5.1.2" dependencies: source-map: ~0.6.0 - checksum: fe3d3cff20b6675df648b64a921258365e14dee62e72ce2a3ea13983f465943414a2c42d4a79a8b62470b459aa76be82902299a0964555821166e815b44bbdd7 + checksum: fcae2fda33b67a994cb96eed99906d2b9a40948a837719be29d29a6a0e401406f66a7b937cfa155d54dd8127c1fcfac9e39dfa6e0db0e089b39fd4144bd9137b languageName: node linkType: hard @@ -7217,9 +7176,9 @@ __metadata: linkType: hard "cli-spinners@npm:^2.0.0": - version: 2.5.0 - resolution: "cli-spinners@npm:2.5.0" - checksum: a275c3588179de0a07579742e1fedb508caa6840516761dac1f8544886d4aa025fc2d536323ac9c325624349203010e149ca8b0028be239fc45ed3a1c1252677 + version: 2.6.0 + resolution: "cli-spinners@npm:2.6.0" + checksum: 653ba6818e0091d4ad7aa052022f6c6a0df0d4674ff6069f6ae366e6130c1eb91a6c332ddfdd2029d234411632ff6428950aa3311872daf515ce54da498c1357 languageName: node linkType: hard @@ -7231,13 +7190,13 @@ __metadata: linkType: hard "clipboard@npm:^2.0.0": - version: 2.0.6 - resolution: "clipboard@npm:2.0.6" + version: 2.0.8 + resolution: "clipboard@npm:2.0.8" dependencies: good-listener: ^1.2.2 select: ^1.1.2 tiny-emitter: ^2.0.0 - checksum: 25e2e6b595f764ebb541dfda5c77051200567b5dd2de42ac6ab9681febe1256a977be450ab1d6f0d41554799106cc92e79e167797c8e8b8e88edcb0aec5b5dcb + checksum: 8eab011ad8cf2dc794b717483f913550c1be1298c84550917f99734b8c5d6674ab86fe6c074234a9597bf60efddffa2ca11ce0df0f78f7c64c4e6a64302437f8 languageName: node linkType: hard @@ -7343,17 +7302,17 @@ __metadata: linkType: hard "codecov@npm:^3.0.0": - version: 3.8.1 - resolution: "codecov@npm:3.8.1" + version: 3.8.2 + resolution: "codecov@npm:3.8.2" dependencies: argv: 0.0.2 ignore-walk: 3.0.3 - js-yaml: 3.14.0 - teeny-request: 6.0.1 + js-yaml: 3.14.1 + teeny-request: 7.0.1 urlgrey: 0.4.4 bin: codecov: bin/codecov - checksum: 8aa521fc3bc67d94163a055c92811a223a31454c83c9ff956b12a9347a71aa54fbcd5d2006546162e7828eb0f0bcb8bc7b24d77a276572436623a4aa17bc1100 + checksum: 1b592a40b0c9c373aeef031d9f8bbfb1b2815f51394d055068dce89f014a6ac851504987ceff6f76292b165b1d2964726eb7dc2517bf911afbdd5a57dff74d6e languageName: node linkType: hard @@ -7433,7 +7392,7 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^1.0.7, colorette@npm:^1.2.1, colorette@npm:^1.2.2": +"colorette@npm:^1.0.7, colorette@npm:^1.2.2": version: 1.2.2 resolution: "colorette@npm:1.2.2" checksum: e240f0c94b8d9f34b52bd17b50fc13a3b74f9e662edeaa2b0c65e06ec6b1fc6367fb42b834ec5a1d819d68b74a3d850f3bd3e284f9e614d6c4ffa122f83c6ec5 @@ -7849,20 +7808,20 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.8.1, core-js-compat@npm:^3.9.0": - version: 3.9.1 - resolution: "core-js-compat@npm:3.9.1" +"core-js-compat@npm:^3.9.0, core-js-compat@npm:^3.9.1": + version: 3.12.1 + resolution: "core-js-compat@npm:3.12.1" dependencies: - browserslist: ^4.16.3 + browserslist: ^4.16.6 semver: 7.0.0 - checksum: 46c8bf3b40b1f5124527e969c41de6419da21399630230a3ba1679c7ad6c43469a67a8fcf9123b11eb13ec76a39229d48025c1f5d23e3dd5453056644d7fc0bd + checksum: c1c510bf5d60d5b8e6bf6272a6ecf8b573f90f43f550df4974f16b888eb8fac4f8e63bc525e07b4cd73b718e43e4354dfed7dcc8ae237ce62594c2e4ac6abbee languageName: node linkType: hard "core-js-pure@npm:^3.0.0": - version: 3.9.1 - resolution: "core-js-pure@npm:3.9.1" - checksum: 9cbb38523f6360c068991af52bb91a55cfdc3dd3cda0964b8e232caa795b95c08523d2fb1c80b76ffd2a8446e4822a6ba960f3bd762353ad0f8470f2fd3c652e + version: 3.12.1 + resolution: "core-js-pure@npm:3.12.1" + checksum: f1f797aaccb4a612ddb24293bfad478bbec212353021019d3763557c737b0c9a00b445e3ff2ca80b2b8b14422181859a1c2b4a941f58e89c605ff9a8f66a6166 languageName: node linkType: hard @@ -7874,9 +7833,9 @@ __metadata: linkType: hard "core-js@npm:^3.2.1, core-js@npm:^3.9.1": - version: 3.9.1 - resolution: "core-js@npm:3.9.1" - checksum: 3f360466246e816ff745f349bf0ea0c54bc3a05203638d84c5f0eae3583f07e7d848d6aa9b69c30467efb418e526bae034a6da50bcfda8b2cd413e5144cd1444 + version: 3.12.1 + resolution: "core-js@npm:3.12.1" + checksum: 8b1d05579e7ddeafcd390001cc893540275fa3e658a00ae57f88954411a25bdfe583debb1929c6a50e40631cc07f2092490ea2284b35ffb922b23d7677060f28 languageName: node linkType: hard @@ -7933,11 +7892,11 @@ __metadata: linkType: hard "cross-fetch@npm:^3.0.4, cross-fetch@npm:^3.0.6": - version: 3.0.6 - resolution: "cross-fetch@npm:3.0.6" + version: 3.1.4 + resolution: "cross-fetch@npm:3.1.4" dependencies: node-fetch: 2.6.1 - checksum: a491ad1b89988a351f8b8b252b68a5e653636d911042648c43a806cf7575ff043379a80d6269102ca60ec633af0b49ca4c83536007793bb0e65e491769f70d9d + checksum: 47b33bc773d53f19805eeac914e7d76e022a1aee3b7a55277fae3d3d1a0cff354b92c4ec6c5d99aeef3e5757c2719e94c37879ba846c33de892e68a655758b61 languageName: node linkType: hard @@ -7998,24 +7957,23 @@ __metadata: linkType: hard "css-loader@npm:^5.1.1": - version: 5.1.2 - resolution: "css-loader@npm:5.1.2" + version: 5.2.4 + resolution: "css-loader@npm:5.2.4" dependencies: camelcase: ^6.2.0 - cssesc: ^3.0.0 icss-utils: ^5.1.0 loader-utils: ^2.0.0 - postcss: ^8.2.8 + postcss: ^8.2.10 postcss-modules-extract-imports: ^3.0.0 postcss-modules-local-by-default: ^4.0.0 postcss-modules-scope: ^3.0.0 postcss-modules-values: ^4.0.0 postcss-value-parser: ^4.1.0 schema-utils: ^3.0.0 - semver: ^7.3.4 + semver: ^7.3.5 peerDependencies: webpack: ^4.27.0 || ^5.0.0 - checksum: cbc74ee6bc5e84ad9166ed8141a8f6648cc85a14aa62c0ff1e306dee1f0f75ea390418417f048f4d75121cb80d9b564cef8e27bc8826ebd345b42cecbedc0bb5 + checksum: 369839955849fdcae913b59797aa1cb419b4795d20ca52dd48531d66348701d48cdb6f1017b6feff037f1c05af93b80360e8e1fd115dab54eb896c5fd28fadfd languageName: node linkType: hard @@ -8096,12 +8054,12 @@ __metadata: linkType: hard "css-tree@npm:^1.1.2": - version: 1.1.2 - resolution: "css-tree@npm:1.1.2" + version: 1.1.3 + resolution: "css-tree@npm:1.1.3" dependencies: mdn-data: 2.0.14 source-map: ^0.6.1 - checksum: a6b14e13fe072dc902b11ca149d23d78c6804699d88060900de58699cae4aa469468af9fead808029f9d83fced08d67b99b009c83d3e07b90e064e5143b9096b + checksum: 5b1bf44c457f4682feef5d1fccf0758aabaec3b77f264418a022826a0e4c2dc9f2283205223ddba147eba8ee4cb88caa91298b54c4b7e9af345bb820e9a32868 languageName: node linkType: hard @@ -8235,7 +8193,7 @@ __metadata: languageName: node linkType: hard -"cssstyle@npm:^2.2.0": +"cssstyle@npm:^2.3.0": version: 2.3.0 resolution: "cssstyle@npm:2.3.0" dependencies: @@ -8245,9 +8203,9 @@ __metadata: linkType: hard "csstype@npm:^3.0.2": - version: 3.0.7 - resolution: "csstype@npm:3.0.7" - checksum: 76d542d719cd6bca7c491e6425a28873f76b0f4cf602b626a9fee105806446be4fab2191c5d18a045aea412bb3d5dcb5cab9414328080c672671433b786746f5 + version: 3.0.8 + resolution: "csstype@npm:3.0.8" + checksum: e15233592a2c580fd72c4346a5c921044b8f4f29bcb81628a81199c4d6a91eb8f8e4875f440ef9c990e85f179a3370f3b842fe55e4743119ad0ce712519e7123 languageName: node linkType: hard @@ -8322,7 +8280,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.1.1, debug@npm:^3.2.6": +"debug@npm:^3.1.1, debug@npm:^3.2.6, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -8355,7 +8313,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.0": +"decimal.js@npm:^10.2.1": version: 10.2.1 resolution: "decimal.js@npm:10.2.1" checksum: ba28b27bb8aca6bbb73fbdb51d759961d9ff82218c4aa737b4f4826dee4244618a61c410201bb152950c4915e3d82a86211d1c2a4e23f805ee577574ba115e59 @@ -8608,9 +8566,9 @@ __metadata: linkType: hard "detect-node@npm:^2.0.4": - version: 2.0.4 - resolution: "detect-node@npm:2.0.4" - checksum: e7648a5a91dd5e91838d14f0e9631f2adf0117cc271ea86d8ce394a8fbe8fc7545755c8261faaf4b1e196795a10da99e5d5f1013163ba0f6260a57b0ba29cc60 + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 5100c924d74bdc2cf861af88dce6618abbbb95e3b71047f1eac7e475981416aa2c208c7153fd830df372f8ce324a207adb1c9f56884fa94bcb820b8406dd9e6f languageName: node linkType: hard @@ -8769,13 +8727,13 @@ __metadata: linkType: hard "dom-serializer@npm:^1.0.1": - version: 1.2.0 - resolution: "dom-serializer@npm:1.2.0" + version: 1.3.2 + resolution: "dom-serializer@npm:1.3.2" dependencies: domelementtype: ^2.0.1 - domhandler: ^4.0.0 + domhandler: ^4.2.0 entities: ^2.0.0 - checksum: 77e3bff86555c853af8a5f87f7433bdaf47fd377ed201b74c465c08445daf3832380acfe25276e6806ffad87ea42e57d4fb992021aef83c5dfae2d352b90860b + checksum: 1a5d6970d27a4fac3e7a372f60c544704174b7cc63178a0bae80edfbe5bec7cb2a8c2c3931fc4cb0270b909fadaa19d34506650559dcf1a35edc8db605da98b6 languageName: node linkType: hard @@ -8796,14 +8754,7 @@ __metadata: languageName: node linkType: hard -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.1.0": - version: 2.1.0 - resolution: "domelementtype@npm:2.1.0" - checksum: c3e63b6c94bf74d6375e12370f612d1cd61c0d3bc21b46684d93c797b3924de2e84278b0b5cdf3dce21f64ee94c34a005994f373c0e420759ae1856f075f0f57 - languageName: node - linkType: hard - -"domelementtype@npm:^2.2.0": +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": version: 2.2.0 resolution: "domelementtype@npm:2.2.0" checksum: 70af22cd69a8e0c0cd4fbbba0459991aacb015f60765050b4a6d1750fd201b4bd4fd1e6922e945200f9cc725cd61be1cd393a3b9b576187759e3b046f33a4a30 @@ -8837,16 +8788,7 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^4.0.0": - version: 4.0.0 - resolution: "domhandler@npm:4.0.0" - dependencies: - domelementtype: ^2.1.0 - checksum: 22cc8e1335728a7c49434d1d12ff1563aea758c26c8ebf50fcf9e28ceb2bd0e5a15518d69abdb5db37aa7c0c347c8f68d323d12fc744a68853fb7641cbdcec89 - languageName: node - linkType: hard - -"domhandler@npm:^4.2.0": +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": version: 4.2.0 resolution: "domhandler@npm:4.2.0" dependencies: @@ -8875,18 +8817,7 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^2.4.2": - version: 2.5.0 - resolution: "domutils@npm:2.5.0" - dependencies: - dom-serializer: ^1.0.1 - domelementtype: ^2.0.1 - domhandler: ^4.0.0 - checksum: 92a68066d3abfc821438e0610d656f1a51fe695c993c6b10faf9a4ffa565c23d71907e976c674b83e64d41e2a6c108cfd489a34068a7d9f3d240c44509216670 - languageName: node - linkType: hard - -"domutils@npm:^2.4.3": +"domutils@npm:^2.4.2, domutils@npm:^2.4.3": version: 2.6.0 resolution: "domutils@npm:2.6.0" dependencies: @@ -8963,17 +8894,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.3.564, electron-to-chromium@npm:^1.3.649": - version: 1.3.685 - resolution: "electron-to-chromium@npm:1.3.685" - checksum: 469c41eeb243c378a4bc9ecd3939c6dfc71afb17d9942931dcf90f34b37ba75613d14c5c13abf68d92cdb3db363aafa6346034791091c0ff9e4c2bd0ca520f50 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.3.719": - version: 1.3.723 - resolution: "electron-to-chromium@npm:1.3.723" - checksum: 81e835b5185921ce37998087410e89cc9d4dcf99b600b2b555233c4ec6d689d11d1aaa298602d78de0c40d3c6c335a879dc44ce585063fb4d90bd84111dd89cb +"electron-to-chromium@npm:^1.3.564, electron-to-chromium@npm:^1.3.723": + version: 1.3.730 + resolution: "electron-to-chromium@npm:1.3.730" + checksum: 07e8473e0849814cc2100b168a760972477328fca8b7230b74b50722dc8692df96c0447ccaca4d8998d4c45c943b07bbf8455bb7bf06cc1635719247a9c54d99 languageName: node linkType: hard @@ -9045,12 +8969,12 @@ __metadata: linkType: hard "enhanced-resolve@npm:^5.8.0": - version: 5.8.0 - resolution: "enhanced-resolve@npm:5.8.0" + version: 5.8.2 + resolution: "enhanced-resolve@npm:5.8.2" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: a3e1131c9ba0dd6f8276f068ddac4e6469d824ee8132f748e2734722b9f25360f4cb5a7fbec1cab8cd56815a6762e0bb1b8d088cbdf2a276d30d573ac5528bbb + checksum: 1af3f6bcb92e849f6c18d44c427cbdaecac4be61023f2008d2ef0f8a48c909bf13afa9a5c04f9d030f27d9a7e27e40c367caa22cd63d2a7eb5fdbab7579d1538 languageName: node linkType: hard @@ -9078,18 +9002,18 @@ __metadata: linkType: hard "env-paths@npm:^2.2.0": - version: 2.2.0 - resolution: "env-paths@npm:2.2.0" - checksum: 09de4fd1c068d5965aa8aede852a764b7fb6fa8f1299ba7789bc29c22840ab1985e0c9c55bc6bf40b4276834b8adfa1baf82ec9bc58445d9e75800dc32d78a4f + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 9579868bc73526de31682625d89aa08c83f3c87850218f9251f953bf4242428a1020e75cb201ca16b42f2874c3ca175ffc8aa47a88423b546711b7dbf86f79a8 languageName: node linkType: hard "envinfo@npm:^7.7.2, envinfo@npm:^7.7.4": - version: 7.7.4 - resolution: "envinfo@npm:7.7.4" + version: 7.8.1 + resolution: "envinfo@npm:7.8.1" bin: envinfo: dist/cli.js - checksum: 0a3ffb4ad515a9c7068824d57da6d146205478da71b54d3129d364eacd429fea2e8fb7921a66acd6773af0d066a849f517ab4a694a91eba6ef508d9a9771214a + checksum: 1b16cacff3c8bc3ad020eb9a87e55e7565414f6ba7054e288d42d8d145777ebbe63a84fc5e3575458ec618c679018a0c1bd8b37b8de8dcf38605e3a8b5a2bfca languageName: node linkType: hard @@ -9301,12 +9225,12 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^1.14.1": - version: 1.14.3 - resolution: "escodegen@npm:1.14.3" +"escodegen@npm:^2.0.0": + version: 2.0.0 + resolution: "escodegen@npm:2.0.0" dependencies: esprima: ^4.0.1 - estraverse: ^4.2.0 + estraverse: ^5.2.0 esutils: ^2.0.2 optionator: ^0.8.1 source-map: ~0.6.1 @@ -9316,18 +9240,18 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 548c5a83a81a51122f1006309a392e1412bb00657f15aca60f01f9d4553851bdaf0519d898fd3ee2bb46f116e03ee48757f4d9a28a7b58bc8c096fd4b33f6cbc + checksum: c49da32cd173570f2076f0d52b80761b2a876dfea2046bfc8c5dc84f76b70105e35b2fed10fe0a8487df14674d46bc30245f3a27e8838601c3c85e68f693f363 languageName: node linkType: hard "eslint-config-prettier@npm:^8.1.0": - version: 8.1.0 - resolution: "eslint-config-prettier@npm:8.1.0" + version: 8.3.0 + resolution: "eslint-config-prettier@npm:8.3.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 409d3a071f8228d4c958a6a9be9d5ec2b357ce21b7b6cbb137096cade2c31f008a0a3c3533dee8979c0cd944f220a959710b30fd86f8b96f0ef1f4f557d740b3 + checksum: 94ccbb50fb67e5e47e8ba6cfa257b5cbf53619990ab13f46b99518cfe9b900394b93bdf6ffedbde1a8e2997d301b0fbd73a6b4202146bc53475dfb30a8c812f2 languageName: node linkType: hard @@ -9357,12 +9281,12 @@ __metadata: linkType: hard "eslint-module-utils@npm:^2.6.0": - version: 2.6.0 - resolution: "eslint-module-utils@npm:2.6.0" + version: 2.6.1 + resolution: "eslint-module-utils@npm:2.6.1" dependencies: - debug: ^2.6.9 + debug: ^3.2.7 pkg-dir: ^2.0.0 - checksum: f584af176480a702eedcdb3f610797f8b8d1293c3835ed71fadb579ec28400b91ded5283729418f63d48dc27c6358bd66f2bd839614d565a1b78d3c3440ee8f7 + checksum: 3de93ecfd7a0b803a2cd91afd5cbb32dca559f58c22e92f95ec4700ff75e008035587ee032b9196d6565fbd73f799992122a8dc8ea0b979c07229b51735a8bed languageName: node linkType: hard @@ -9402,13 +9326,17 @@ __metadata: linkType: hard "eslint-plugin-jest@npm:^24.0.0": - version: 24.1.5 - resolution: "eslint-plugin-jest@npm:24.1.5" + version: 24.3.6 + resolution: "eslint-plugin-jest@npm:24.3.6" dependencies: "@typescript-eslint/experimental-utils": ^4.0.1 peerDependencies: + "@typescript-eslint/eslint-plugin": ">= 4" eslint: ">=5" - checksum: 9e956c0ec9567f91df15d2c0c92b3cf87eab62de10df1cf4daa21ba01857c8827d276474a68d70ae2db64a7ae104c8555124401e17dc4de1590b058cd7c8759e + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + checksum: 13f4522cd838a6a356a080f76424579a58aa2f9b4f4b3fdd3713278718496c62ba3d8f53c0fb6ad6fd96ca6cfd6ee728f7dd51893b91eccfb4396b832f757afb languageName: node linkType: hard @@ -9431,8 +9359,8 @@ __metadata: linkType: hard "eslint-plugin-prettier@npm:^3.0.1": - version: 3.3.1 - resolution: "eslint-plugin-prettier@npm:3.3.1" + version: 3.4.0 + resolution: "eslint-plugin-prettier@npm:3.4.0" dependencies: prettier-linter-helpers: ^1.0.0 peerDependencies: @@ -9441,14 +9369,14 @@ __metadata: peerDependenciesMeta: eslint-config-prettier: optional: true - checksum: cf35b0f0e9ef30782fe82913db92f6874181723d77f0c4613f9d69c87069f73d0dc420ef850ebc844613c00a8e87eb9762a36b7d028334c5c7b091763118347b + checksum: 322be1af8c7a6b7f1c718d912090722b65da072fda05bbc0a9d94523e6c3dfda49a7f62fd411126f1909c12bbc63e827ee6459163b2ce3458adb292541decf66 languageName: node linkType: hard "eslint-rule-docs@npm:^1.1.5": - version: 1.1.222 - resolution: "eslint-rule-docs@npm:1.1.222" - checksum: 4fa637c383612fa4f59f2ce8afab3dee803cadd31854cab044b15d6955d26351e2209e7e68af2255a1a10a89606124630c781f76362c19deb0dbfe03cda9a4d3 + version: 1.1.226 + resolution: "eslint-rule-docs@npm:1.1.226" + checksum: 957e6f0f0cfe8124daa3f29332f1fa73165226b6642e86647e0636aaa2858b9cab039a923598cf4381f3164cacec7a51a2d0971b6aaf36d975916fe835fdc40b languageName: node linkType: hard @@ -9479,18 +9407,18 @@ __metadata: linkType: hard "eslint-visitor-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-visitor-keys@npm:2.0.0" - checksum: 429dabdcab3c1cf5e65d44843afc513398d4ee32a37f93edc93bb5ba59a12b78fa67d87ff23c752c170b5e4f9085050f45b3c036cdfb23d40a724f2614048140 + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: 75eaae9006f5bcb9d1e09641719b840b83c4758f5f25bc06a0e94918d78658d0f19691bdc2e3b100604d0fe2d1eb94a2aab287ba24ad2f02f87cacdccb86c2e4 languageName: node linkType: hard "eslint@npm:^7.7.0": - version: 7.21.0 - resolution: "eslint@npm:7.21.0" + version: 7.26.0 + resolution: "eslint@npm:7.26.0" dependencies: "@babel/code-frame": 7.12.11 - "@eslint/eslintrc": ^0.4.0 + "@eslint/eslintrc": ^0.4.1 ajv: ^6.10.0 chalk: ^4.0.0 cross-spawn: ^7.0.2 @@ -9506,7 +9434,7 @@ __metadata: file-entry-cache: ^6.0.1 functional-red-black-tree: ^1.0.1 glob-parent: ^5.0.0 - globals: ^12.1.0 + globals: ^13.6.0 ignore: ^4.0.6 import-fresh: ^3.0.0 imurmurhash: ^0.1.4 @@ -9514,7 +9442,7 @@ __metadata: js-yaml: ^3.13.1 json-stable-stringify-without-jsonify: ^1.0.1 levn: ^0.4.1 - lodash: ^4.17.20 + lodash: ^4.17.21 minimatch: ^3.0.4 natural-compare: ^1.4.0 optionator: ^0.9.1 @@ -9528,7 +9456,7 @@ __metadata: v8-compile-cache: ^2.0.3 bin: eslint: bin/eslint.js - checksum: aa8fd50cddc4ab259e2d0ff8f43f0601060543c12e335d76ee074bf25ad02a885bea9d48a367de736d3bdb871de7eb62e6d67930c0173cc46280ddd0f236e740 + checksum: 08f99befd764fbd6ea811e9eec27d5c6b9dc9d1bbfe5ffa1016e4f1fe526a4f45ea127c4e30c554c423ee55eb290ce9af4fb7fedf9b7af3f84076a444c2bbdf6 languageName: node linkType: hard @@ -9571,7 +9499,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": +"estraverse@npm:^4.1.1": version: 4.3.0 resolution: "estraverse@npm:4.3.0" checksum: 1e4c627da9e9af07bf7b2817320f606841808fb2ec0cbd81097b30d5f90d8613288b3e523153babe04615d59b54ef876d98f0ca27488b6c0934dacd725a8d338 @@ -9651,11 +9579,11 @@ __metadata: linkType: hard "eventsource@npm:^1.0.7": - version: 1.0.7 - resolution: "eventsource@npm:1.0.7" + version: 1.1.0 + resolution: "eventsource@npm:1.1.0" dependencies: original: ^1.0.0 - checksum: 058506715061d4613c004854c1220d57091445ba73599f9eb232273be1119f13d3568df1a3d866bf94333fbcd138cc45268c454376ee48c3b432a26767961815 + checksum: 1f10fe5789c3e8423b7901802c02cbf26733a6fc669e3515a52e8ac2609156785feaa73f877d82aaba1182242ee6a573480eb5b9d60ea8a82e0d917cbcb376cc languageName: node linkType: hard @@ -9848,9 +9776,9 @@ __metadata: linkType: soft "exec-sh@npm:^0.3.2": - version: 0.3.4 - resolution: "exec-sh@npm:0.3.4" - checksum: cfdd8cbfde80cced18a9b6a361f531c9e99b9e5c0b010338dd1f20cb01aa480af21dc94932530bf07d51341807a79af897b5c31b86f8c2c8f42932e276c8089d + version: 0.3.6 + resolution: "exec-sh@npm:0.3.6" + checksum: 0205697efea87a52309a1ef8cf5339817c1ade8963aa92435f1754317aa242e03b7f3dbfa367c2c5313d239554f86a7ed9df10b459a674f24150b7577d64033c languageName: node linkType: hard @@ -10038,11 +9966,11 @@ __metadata: linkType: hard "fast-check@npm:^2.0.0": - version: 2.13.0 - resolution: "fast-check@npm:2.13.0" + version: 2.14.0 + resolution: "fast-check@npm:2.14.0" dependencies: pure-rand: ^4.1.1 - checksum: 385547d8512bd201e91508d560caed8f52a9dca5cc391a5ba355e1e64807d755a3031aa269eb54e9fb35e77984501101e508a2f6a327af14d48bb29ab44cb4c7 + checksum: 8eb1b3728e4e9e9ab5e60cf49d2f2ec6f3103de6863120ab6a6747705b6cb469652284955cec13cb4a7f56e46b3ad7515c0fa76ee9ffa8f0e7267bda26ccb8c6 languageName: node linkType: hard @@ -10368,9 +10296,9 @@ __metadata: linkType: hard "flow-parser@npm:0.*": - version: 0.146.0 - resolution: "flow-parser@npm:0.146.0" - checksum: 35ff2b2b92e6cdfa2aa706a3a3869d313b50a6a00df0ce2105c89b0e761166c1b9731e54ccf15c6ae0689a99598b454fc4e5f1150faf4b4db7941129c1f16f7a + version: 0.151.0 + resolution: "flow-parser@npm:0.151.0" + checksum: d7c071841aceec1fd448e0e0475794736037133d8c5e968a709766f3feb7f78db2fce8df55382cf0de3f4fcc0ef750a56be0f4016fbfe32c04fd82404ad2ecc2 languageName: node linkType: hard @@ -10394,12 +10322,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.10.0": - version: 1.13.3 - resolution: "follow-redirects@npm:1.13.3" + version: 1.14.1 + resolution: "follow-redirects@npm:1.14.1" peerDependenciesMeta: debug: optional: true - checksum: 9ad74c3b66ad5c32d8c009a2afb4e5c1b9e5dbe1f631419296c21f8e4f9976ed2c52f9a676c4acdd1d7f41a8f17a03dfaa3704993b25b5965eb11bc9dc9a8ef5 + checksum: 761a18699688b19d66b3e9199ecaf9cd39ede953f3529299c7fca4190b27b855c17c491170977844d5db5e169ffc35ebae999bb0833e9c9c61988d19c20ae7ab languageName: node linkType: hard @@ -10462,9 +10390,9 @@ __metadata: linkType: hard "fraction.js@npm:^4.0.13": - version: 4.0.13 - resolution: "fraction.js@npm:4.0.13" - checksum: 1e9ec132b09f17f3e41aa53508197901277f11896f6adc0b51a4b38511e6236813a471488c319221f4fadf7c854be9566a4924215623b460364591d80e1791c3 + version: 4.1.0 + resolution: "fraction.js@npm:4.1.0" + checksum: b2735b7c3d1c7409db912f5f1b4608dde87d414106ca1e884f85e89a75f9bf401dee67ac4f414c11f57556c1ef745c4c369d570dea49bb426e90458612fb829e languageName: node linkType: hard @@ -10724,9 +10652,9 @@ fsevents@^1.2.7: linkType: hard "get-stream@npm:^6.0.0": - version: 6.0.0 - resolution: "get-stream@npm:6.0.0" - checksum: 4354a4de78ebfd4340db6c7a3956ad1db7e67dbf718bcc576481697188442156f88d0d79d94b8af2615dad9920d41df85227e0c6b0fe5764d26e0df25f4035f8 + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 83de1fde5b21f879b91e45c1be765f53cf041873d65aea3b5a15cd53d4bc7825118693b1f50efb5c33a5d979dd20b398b6af955ffd70a013017da933b18fa5c8 languageName: node linkType: hard @@ -10828,9 +10756,9 @@ fsevents@^1.2.7: linkType: hard "github-buttons@npm:^2.8.0": - version: 2.14.4 - resolution: "github-buttons@npm:2.14.4" - checksum: 06a6df3c816a923ede720e64a50a9145ce5c47be571053cd60bce261ccb41a1ac9a37481324c3e53dd639bcfeecd5fa43ef1f575a7e5a27043b06d1667d8b441 + version: 2.17.0 + resolution: "github-buttons@npm:2.17.0" + checksum: dec1cc24b29ffcd35ab0e076c1b592c483731bca6704230a9432e6f0c644756c7be7eaebdb64a34513d63049539e3c24cc1b4898b31ccb8adf94f83067def7da languageName: node linkType: hard @@ -10854,11 +10782,11 @@ fsevents@^1.2.7: linkType: hard "glob-parent@npm:^5.0.0, glob-parent@npm:^5.1.0, glob-parent@npm:^5.1.1, glob-parent@npm:~5.1.0": - version: 5.1.1 - resolution: "glob-parent@npm:5.1.1" + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" dependencies: is-glob: ^4.0.1 - checksum: 2af6e196fba4071fb07ba261366e446ba2b320e6db0a2069cf8e12117c5811abc6721f08546148048882d01120df47e56aa5a965517a6e5ba19bfeb792655119 + checksum: 82fcaa4ce102a0ae01370ed8fd5299ca32184af0418e1c1b613ed851240160558c0cc9712868eb9ca1924f687b07cd9c70c25f303f39f9f376d9a32f94f28e76 languageName: node linkType: hard @@ -10870,8 +10798,8 @@ fsevents@^1.2.7: linkType: hard "glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": - version: 7.1.6 - resolution: "glob@npm:7.1.6" + version: 7.1.7 + resolution: "glob@npm:7.1.7" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 @@ -10879,7 +10807,7 @@ fsevents@^1.2.7: minimatch: ^3.0.4 once: ^1.3.0 path-is-absolute: ^1.0.0 - checksum: 789977b52432865bd63846da5c75a6efc2c56abdc0cb5ffcdb8e91eeb67a58fa5594c1195d18b2b4aff99675b0739ed6bd61024b26562e0cca18c8f993efdc82 + checksum: 352f74f08247db5420161a2f68f2bd84b53228b5fcfc9dcc37cd54d3f19ec0232495d84aeff1286d0727059e9fdc1031400e00b971bdc59e30f8f82b199c9d02 languageName: node linkType: hard @@ -10937,23 +10865,18 @@ fsevents@^1.2.7: languageName: node linkType: hard -"globby@npm:11.0.1": - version: 11.0.1 - resolution: "globby@npm:11.0.1" +"globals@npm:^13.6.0": + version: 13.8.0 + resolution: "globals@npm:13.8.0" dependencies: - array-union: ^2.1.0 - dir-glob: ^3.0.1 - fast-glob: ^3.1.1 - ignore: ^5.1.4 - merge2: ^1.3.0 - slash: ^3.0.0 - checksum: e7239e9e468c3692aec31dc97b5efc13dd21edf38820baeda98118ade39f475c4ff9e7610859eb4a3c75277ca2616e371265fec3c626aba5db4335bc41c59ac7 + type-fest: ^0.20.2 + checksum: de85e5dc899ebd77414cc026e806d0bfd2c102ba23d08a2516c960a5e324433d3f1c124465a35b5b1d948448a7008bad85f823a9bcd8d54664d8a0cbcaab0091 languageName: node linkType: hard -"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.2": - version: 11.0.2 - resolution: "globby@npm:11.0.2" +"globby@npm:11.0.1": + version: 11.0.1 + resolution: "globby@npm:11.0.1" dependencies: array-union: ^2.1.0 dir-glob: ^3.0.1 @@ -10961,11 +10884,11 @@ fsevents@^1.2.7: ignore: ^5.1.4 merge2: ^1.3.0 slash: ^3.0.0 - checksum: d23f2a6b8897b97fb27422cde243e0fd406ebbaa821929293b27c977d169884f8112494cda4f456a51d0ec1e133e3ac703ec24bfed484e327305ea34a665eb06 + checksum: e7239e9e468c3692aec31dc97b5efc13dd21edf38820baeda98118ade39f475c4ff9e7610859eb4a3c75277ca2616e371265fec3c626aba5db4335bc41c59ac7 languageName: node linkType: hard -"globby@npm:^11.0.3": +"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.2, globby@npm:^11.0.3": version: 11.0.3 resolution: "globby@npm:11.0.3" dependencies: @@ -11048,14 +10971,14 @@ fsevents@^1.2.7: linkType: hard "gray-matter@npm:^4.0.2": - version: 4.0.2 - resolution: "gray-matter@npm:4.0.2" + version: 4.0.3 + resolution: "gray-matter@npm:4.0.3" dependencies: - js-yaml: ^3.11.0 + js-yaml: ^3.13.1 kind-of: ^6.0.2 section-matter: ^1.0.0 strip-bom-string: ^1.0.0 - checksum: a4e24f74db6e7827012bb82633330d25b7a220676e4438c6213c145e4b7412872f6ce0fc19d01991331222b6c90dbd6243c937700776ed43b956728f08b94f23 + checksum: 78f1f3432c01b05035d02c3e259b9f73c794c88651692f4d12c489a9d1a386f6587c1319e9eb788e53d6cd47d6b8ec5b2d14df7cce25b973f68bb9934ccbaf4d languageName: node linkType: hard @@ -11134,7 +11057,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"has-bigints@npm:^1.0.0": +"has-bigints@npm:^1.0.1": version: 1.0.1 resolution: "has-bigints@npm:1.0.1" checksum: 1074b644f5f2c319fc31af00fe2f81b6e21e204bb46da70ff7b970fe65c56f504e697fe6b41823ba679bd4111840482a83327d3432b8d670a684da4087ed074b @@ -11155,7 +11078,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"has-symbols@npm:^1.0.0, has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": +"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": version: 1.0.2 resolution: "has-symbols@npm:1.0.2" checksum: 1b73928752fa9ca993fa48f7b3832c95ea408c0ec635b2d6cbaf011b94a7e6a704a9254ae6d8ecc913d4dd92f2ff760dc43aad7c7e790ddb3f627005614d8e28 @@ -11385,18 +11308,18 @@ fsevents@^1.2.7: linkType: hard "hosted-git-info@npm:^2.1.4": - version: 2.8.8 - resolution: "hosted-git-info@npm:2.8.8" - checksum: 3ecc389dc6ecbd5463fada7e04461e96f3c817fe2f989ca41e9dd3b503745a0bfa26fba405861b2831ca64edc1abc5d2fbc97ee977303f89650dac4fbfdc2d7a + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: cf4dfac9b94aa601ae889e7e3cb5a7021a8517b517f933fec0b3a8dc5002edece01475c82f70cc18a051a5a8105bcb2fbe4e64f0b8f321eb99054a49a75b5aa3 languageName: node linkType: hard -"hosted-git-info@npm:^3.0.6": - version: 3.0.8 - resolution: "hosted-git-info@npm:3.0.8" +"hosted-git-info@npm:^4.0.1": + version: 4.0.2 + resolution: "hosted-git-info@npm:4.0.2" dependencies: lru-cache: ^6.0.0 - checksum: 686512459ccb7e7eac7833fc4e8e35a0533c0dda5f516025f276ecb620b316010b853c785439ac63702e044ab56b2485cf7e1b088c1f9a46675b9496f7a45683 + checksum: 838315facefdb2d0beb99c68d5a419e5f4f6151385fac4aff021d5817349b77f7780f18e04f48b11ad0fbeaf6ac5594351bc3eecdb353b8db41a4e080abdde67 languageName: node linkType: hard @@ -11649,16 +11572,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"https-proxy-agent@npm:^4.0.0": - version: 4.0.0 - resolution: "https-proxy-agent@npm:4.0.0" - dependencies: - agent-base: 5 - debug: 4 - checksum: d3d20730cdcfa1b1ac492280501fa7b14ee89eb4fa2e7d300cc260463b48ea98b6cf1d4b287f40faa8c36c2f88d87819b4b419be5ec4055e9dcd2db501ce4680 - languageName: node - linkType: hard - "https-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "https-proxy-agent@npm:5.0.0" @@ -11906,18 +11819,18 @@ fsevents@^1.2.7: linkType: hard "init-package-json@npm:^2.0.2": - version: 2.0.2 - resolution: "init-package-json@npm:2.0.2" + version: 2.0.3 + resolution: "init-package-json@npm:2.0.3" dependencies: glob: ^7.1.1 - npm-package-arg: ^8.1.0 + npm-package-arg: ^8.1.2 promzard: ^0.3.0 read: ~1.0.1 - read-package-json: ^3.0.0 - semver: ^7.3.2 + read-package-json: ^3.0.1 + semver: ^7.3.5 validate-npm-package-license: ^3.0.4 validate-npm-package-name: ^3.0.0 - checksum: 91709d3ce6dddd6101ce0abf8b87396f19acc59b7d4a72959ec64c6721761c4ff7317b790b575745e217628fa4745d6575bc880b97e35dcbfd5501d3ecdee5fd + checksum: f2a3a226179cf98825cdc21a8c82b17beb9b122840ccb0f5138a6c0b52060d6e23aa58e4fd8f62a8902270c878921cbe7a5439d7787f575c106162ae164048d8 languageName: node linkType: hard @@ -11997,9 +11910,9 @@ fsevents@^1.2.7: linkType: hard "irregular-plurals@npm:^3.2.0": - version: 3.2.0 - resolution: "irregular-plurals@npm:3.2.0" - checksum: 1abd6d0d27ac0917822e385a54968b320c8e27770e3731f8b758c19069fbe2e245361d76335f90a2b8af04c00556166148d5499c4552a25ea05158f097e606c3 + version: 3.3.0 + resolution: "irregular-plurals@npm:3.3.0" + checksum: ca26e42b7e71267f80497c174ea211a6d2327d07742ab493b5450adbbd6e96d5c0e2f7c89695134eca591216bf9a2b050a3b2a66c7491716772b17d473e3456d languageName: node linkType: hard @@ -12069,9 +11982,9 @@ fsevents@^1.2.7: linkType: hard "is-bigint@npm:^1.0.1": - version: 1.0.1 - resolution: "is-bigint@npm:1.0.1" - checksum: dd132ab80f389d6968315d491706c5dbb3f6c4bf35b64085d74895e7f3516123ab1bcf6a9a83a63cfede688f44550a08713ed37f3ae9153afe8d0cf569a8b956 + version: 1.0.2 + resolution: "is-bigint@npm:1.0.2" + checksum: 818680e551dc0a33ed8662b869cd3cb3236f6b94994850c1701200816cf9ad7e82a24fb4efbfc7046f167cd6429a71ba3672c73a7507093164c6ee9123bf30a9 languageName: node linkType: hard @@ -12094,11 +12007,11 @@ fsevents@^1.2.7: linkType: hard "is-boolean-object@npm:^1.0.1, is-boolean-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-boolean-object@npm:1.1.0" + version: 1.1.1 + resolution: "is-boolean-object@npm:1.1.1" dependencies: - call-bind: ^1.0.0 - checksum: 1d6047a022aa49cdf8580ac8b3d6d25da0d33a65ae00142bec2ba95c6c889de84693a0ef5acc9eabb59ba9e66fb473f47fa589ec22dd8e7ef8d88b6774e3adc6 + call-bind: ^1.0.2 + checksum: 9a45d29418f5cc7ff5ddf8eebf4a7d6bd2b3be730000e42d339029658db40e9e0ecafb1397588f6f5f17728ea9b7a8959b5d2ee000db5d95ff126c8b54218391 languageName: node linkType: hard @@ -12160,11 +12073,11 @@ fsevents@^1.2.7: linkType: hard "is-core-module@npm:^2.2.0": - version: 2.2.0 - resolution: "is-core-module@npm:2.2.0" + version: 2.4.0 + resolution: "is-core-module@npm:2.4.0" dependencies: has: ^1.0.3 - checksum: 2344744de98a3bc22e2bb30895f307d7889f09e963f9bcb1cc321788f508c8b463f75e0a9ca009eeeb8eb9465181b5c15f1ec9299a6bb6921cfbb2423892e0ba + checksum: caa2b30873ed14dff76e5351e3c55a677b890cf19cc4263e9894702eb4bd64f81ce78552daad878ba72adcdc9e62cad45ca57928fc8b4bdc84a7ff8acf934389 languageName: node linkType: hard @@ -12187,9 +12100,9 @@ fsevents@^1.2.7: linkType: hard "is-date-object@npm:^1.0.1": - version: 1.0.2 - resolution: "is-date-object@npm:1.0.2" - checksum: 0e322699464a99da638c8a583b74dfb791732b6bc9c102bc0b7ac6303d83c86b9935f19b8d2ed4de52092241190c8826b099cb31972dea49a99b755293c0b1cf + version: 1.0.4 + resolution: "is-date-object@npm:1.0.4" + checksum: f159a5cff60f657792a9677892b87d0802ac95e15cf26e7bba7f36064e8ffde41c8ac73921629ad976f14a8c0e2fe785818ef67172b906be0300919d4d4ea553 languageName: node linkType: hard @@ -12230,11 +12143,11 @@ fsevents@^1.2.7: linkType: hard "is-docker@npm:^2.0.0": - version: 2.1.1 - resolution: "is-docker@npm:2.1.1" + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" bin: is-docker: cli.js - checksum: dc8e36fa63a246728e5dd4b3ab2d454f685d3dcc1fecbe62144a0c3bc1f5eef0cf67cb3af1b4a9d274dd18877b954b651c7ef0a483abae6a7a2baa8f987554ba + checksum: 7dbd6eecfe91984ef28ee80b13bd20ce4b27c1645542ae714a3976c881f7d166a3dcddb8b4f67c22285c4505f0b0e585a3b12feb4518b17f86b8a15b9f55c718 languageName: node linkType: hard @@ -12379,9 +12292,9 @@ fsevents@^1.2.7: linkType: hard "is-number-object@npm:^1.0.4": - version: 1.0.4 - resolution: "is-number-object@npm:1.0.4" - checksum: 5bae52129f0e097485da25cbe89307dd46cf5ce7640edb6fcf40350d59c9f909039713d35fbeb0f1de1df817da6ec6e88aceca41b01e5ac989f6fdfc15c438a7 + version: 1.0.5 + resolution: "is-number-object@npm:1.0.5" + checksum: 2725b594081cb159766a8fca6af2dab65da601caf656a1be1baf6c100ad614cae2fa1a6c7c1dfc90ad8e78cf668d2761f9efaeac5dd7ab7ecd5d648e7d240399 languageName: node linkType: hard @@ -12441,9 +12354,9 @@ fsevents@^1.2.7: linkType: hard "is-path-inside@npm:^3.0.1, is-path-inside@npm:^3.0.2": - version: 3.0.2 - resolution: "is-path-inside@npm:3.0.2" - checksum: 709ba85a713d25fb058a4c2f62e9e7160bcc1a3e48af2f201045cde027fc1efe61a6e1b5c1cf21b8329f764e3649e160976fde14317c1b848caa9c1f31d5beec + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: b19a2937441131e68b9eb9931ec8933bc87743a8f5364f6f7e1b8fc6c1403386ecf305835fb781e3986332fada456d71ff95af77ccda5806b35aac58234f9080 languageName: node linkType: hard @@ -12478,19 +12391,19 @@ fsevents@^1.2.7: linkType: hard "is-potential-custom-element-name@npm:^1.0.0": - version: 1.0.0 - resolution: "is-potential-custom-element-name@npm:1.0.0" - checksum: 55b1ae44cf9241ea5b08414318d12a4d2eb157cb5722908fc7ef268c6d175894cb59d298092a87f9ed54af5b60fc572fa7f6b34b8633120dbe6edaa6c5169d0b + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: 25520ce8de393b87c8a2ce4d410c424d16baab0d5a43cbf76af148940725e489dbf3541a43371bcc0881fcb186d9a4ed18b774a11ac8743dd064303cea8de50d languageName: node linkType: hard "is-regex@npm:^1.0.4, is-regex@npm:^1.0.5, is-regex@npm:^1.1.0, is-regex@npm:^1.1.2": - version: 1.1.2 - resolution: "is-regex@npm:1.1.2" + version: 1.1.3 + resolution: "is-regex@npm:1.1.3" dependencies: call-bind: ^1.0.2 - has-symbols: ^1.0.1 - checksum: 5e2f80f495f5297d1295730820a4be31f3848ca92357cfef1b2a61c09fe0fcd3f68c34f3042a5b81885e249cd50eac8efac472ad6da7ecb497bb2d7bad402a9a + has-symbols: ^1.0.2 + checksum: 1beb14b9f8df6e302c6ba0cafdea4a393fd58b93cd66b4ef3017b74f72683c50f7a82d08c86e20e5b555a2a6a5e5b681e62eb4e4b49e62986da01ffd073d19eb languageName: node linkType: hard @@ -12516,11 +12429,11 @@ fsevents@^1.2.7: linkType: hard "is-ssh@npm:^1.3.0": - version: 1.3.2 - resolution: "is-ssh@npm:1.3.2" + version: 1.3.3 + resolution: "is-ssh@npm:1.3.3" dependencies: protocols: ^1.1.0 - checksum: a0dca2d8635505958cca01fd813a14aa53583717c64abbb1ae65a87715d5f5e57d9a8ab7f65d6ba3772badf7fe0e11a18fae67c01ecb957b847b972b007f4da3 + checksum: bdf2ed8e79096cd2d67fd3c921982c964b97a09068130209982c18d1e7645ca5bc954328e5b5e5fd7610c3645eb72da076755608a4387c6db62f34f4173ebaab languageName: node linkType: hard @@ -12539,9 +12452,9 @@ fsevents@^1.2.7: linkType: hard "is-string@npm:^1.0.5": - version: 1.0.5 - resolution: "is-string@npm:1.0.5" - checksum: c64c791eb75935db9055291bc598edc22f03d3879b8a050b2955ba8087642d006338a1dedf7ac414c95f985c77c2d6fce655498d33c0df248fa92228a9945720 + version: 1.0.6 + resolution: "is-string@npm:1.0.6" + checksum: 5eb4860eafb9bfd4d9adf56bd530ca0e0cabade776df1e9394e5ca9376bdd6fa0a99879c2b0c3a517076fa31ac739821c2956be6d30ee1458f50ca24a4962478 languageName: node linkType: hard @@ -12553,11 +12466,11 @@ fsevents@^1.2.7: linkType: hard "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.3 - resolution: "is-symbol@npm:1.0.3" + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" dependencies: - has-symbols: ^1.0.1 - checksum: 753aa0cf95069387521b110c6646df4e0b5cce76cf604521c26b4f5d30a997a95036ed5930c0cca9e850ac6fccb04de551cc95aab71df471ee88e04ed1a96f21 + has-symbols: ^1.0.2 + checksum: 2794e0b9c3d6ca760b2f46c0132917746ce95fe034556e0e4da341e59f6171c9b733d2f0942475ecdee2e5b6d80a6e021eba200076fefcc79348ac48d56ad4b5 languageName: node linkType: hard @@ -12577,6 +12490,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 00ca6f5581b81d55c567d259175cb1af08c60ae95f6aad69adadfdfbe098c60ef5617ad440770d821f1710773987c0b13ed6dd375cd9ab1bd7b7dd8f9a42625c + languageName: node + linkType: hard + "is-utf8@npm:^0.2.0": version: 0.2.1 resolution: "is-utf8@npm:0.2.1" @@ -12643,9 +12563,9 @@ fsevents@^1.2.7: linkType: hard "isbinaryfile@npm:^4.0.0": - version: 4.0.6 - resolution: "isbinaryfile@npm:4.0.6" - checksum: 23d94f36fbf9898c7095d29aa1e4f4b1afad77fac6e1e987f32e89036fa45d7365f3a55990de7d99b76ca591b683640efa594f1fa19b03e3d712c4f2a690efa0 + version: 4.0.8 + resolution: "isbinaryfile@npm:4.0.8" + checksum: 414258852a8962a0e1c6dcbebfc0422489cc7684488fcde6f08de2378596d4888696b3593b40df5f9c7897538891d006fd3edc35994cc75473d71e4012aa2263 languageName: node linkType: hard @@ -13321,9 +13241,9 @@ fsevents@^1.2.7: linkType: hard "jest-snapshot-serializer-raw@npm:^1.1.0": - version: 1.1.0 - resolution: "jest-snapshot-serializer-raw@npm:1.1.0" - checksum: e6ab99eba081cad6e58915357cb8da8a0d2d5816d11c06255d1b44474c2d7f700ba2252cd498f7c1b8895d6ba91d819e9d4fd8fef8645c8db651aa6d9344550e + version: 1.2.0 + resolution: "jest-snapshot-serializer-raw@npm:1.2.0" + checksum: 5474a7cb906ee07d2ea6e7bc192c550e101ae91fe197fdc5005ef77d769f96b6529cdaaae51fe1fb5461340505a7a3e7720cf9be64863791bfbe2f7c536d1eb1 languageName: node linkType: hard @@ -13427,8 +13347,8 @@ fsevents@^1.2.7: linkType: hard "jest-watch-typeahead@npm:^0.6.0": - version: 0.6.1 - resolution: "jest-watch-typeahead@npm:0.6.1" + version: 0.6.3 + resolution: "jest-watch-typeahead@npm:0.6.3" dependencies: ansi-escapes: ^4.3.1 chalk: ^4.0.0 @@ -13439,7 +13359,7 @@ fsevents@^1.2.7: strip-ansi: ^6.0.0 peerDependencies: jest: ^26.0.0 - checksum: f5fc6ee9672e660f735207bfa83351aa0cdae1a167f3cf6a02737493c49e72d44263e86b9cc2dfba5047e17aea0f3c9434b292df7352db712cd16bd3923d96ea + checksum: 1c70cc7dd91646e2866851ebe5b55da3bb5ea256b65ad57c2e41fae01d03de54794073cc75fafe8247bdff0e0855dee385b48aaffce6e96fceab3d0051c3e7ab languageName: node linkType: hard @@ -13478,10 +13398,10 @@ fsevents@^1.2.7: dependencies: "@babel/core": ^7.0.0 "@crowdin/cli": ^3.5.2 - "@docusaurus/core": 2.0.0-alpha.75 - "@docusaurus/plugin-client-redirects": 2.0.0-alpha.75 - "@docusaurus/plugin-pwa": 2.0.0-alpha.75 - "@docusaurus/preset-classic": 2.0.0-alpha.75 + "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/plugin-client-redirects": 2.0.0-beta.0 + "@docusaurus/plugin-pwa": 2.0.0-beta.0 + "@docusaurus/preset-classic": 2.0.0-beta.0 "@types/react": ^17.0.3 clsx: ^1.1.1 fs-extra: ^9.0.1 @@ -13501,7 +13421,7 @@ fsevents@^1.2.7: dependencies: "@types/merge-stream": ^1.1.2 "@types/node": "*" - "@types/supports-color": ^7.2.0 + "@types/supports-color": ^8.1.0 get-stream: ^6.0.0 jest-leak-detector: ^27.0.0-next.9 merge-stream: ^2.0.0 @@ -13558,13 +13478,13 @@ fsevents@^1.2.7: linkType: soft "jetifier@npm:^1.6.2": - version: 1.6.6 - resolution: "jetifier@npm:1.6.6" + version: 1.6.8 + resolution: "jetifier@npm:1.6.8" bin: jetifier: bin/jetify jetifier-standalone: bin/jetifier-standalone jetify: bin/jetify - checksum: c9859eefc011f79de1da46eff9ef958f7054d56e8982137a90b23d28561e7580ef2fc2b333d269d526fae914034e5b10575e3045a16bb176e73315c597ef5569 + checksum: 139f7336a893201ba7570d48aaa3734e9f96463a2e65c996a7facbcffdac4b6ca265725be5875fab849c3877b7a811a3d0d17c55037e275701ba7d4a58601799 languageName: node linkType: hard @@ -13595,19 +13515,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"js-yaml@npm:3.14.0": - version: 3.14.0 - resolution: "js-yaml@npm:3.14.0" - dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: 2eb95464e5263aedc20ae2d9280f0e29b00adab15ece080ec42473d7055efaab24b904108644d115f687efe05a5bde02972b883aafa93607c4c108f667a56fa7 - languageName: node - linkType: hard - -"js-yaml@npm:^3.11.0, js-yaml@npm:^3.13.1": +"js-yaml@npm:3.14.1, js-yaml@npm:^3.13.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -13676,41 +13584,41 @@ fsevents@^1.2.7: linkType: hard "jsdom@npm:^16.4.0": - version: 16.4.0 - resolution: "jsdom@npm:16.4.0" + version: 16.5.3 + resolution: "jsdom@npm:16.5.3" dependencies: - abab: ^2.0.3 - acorn: ^7.1.1 + abab: ^2.0.5 + acorn: ^8.1.0 acorn-globals: ^6.0.0 cssom: ^0.4.4 - cssstyle: ^2.2.0 + cssstyle: ^2.3.0 data-urls: ^2.0.0 - decimal.js: ^10.2.0 + decimal.js: ^10.2.1 domexception: ^2.0.1 - escodegen: ^1.14.1 + escodegen: ^2.0.0 html-encoding-sniffer: ^2.0.1 is-potential-custom-element-name: ^1.0.0 nwsapi: ^2.2.0 - parse5: 5.1.1 + parse5: 6.0.1 request: ^2.88.2 - request-promise-native: ^1.0.8 - saxes: ^5.0.0 + request-promise-native: ^1.0.9 + saxes: ^5.0.1 symbol-tree: ^3.2.4 - tough-cookie: ^3.0.1 + tough-cookie: ^4.0.0 w3c-hr-time: ^1.0.2 w3c-xmlserializer: ^2.0.0 webidl-conversions: ^6.1.0 whatwg-encoding: ^1.0.5 whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.0.0 - ws: ^7.2.3 + whatwg-url: ^8.5.0 + ws: ^7.4.4 xml-name-validator: ^3.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: adca681df01b62452970357bb941c5a0a67f784afbf32c57bb07d7b3799a853f161e4c7a1ccce75fd9089b5c5e5601acf9eab5fe440899d96c08b5bdc3d2cad5 + checksum: 02f6e3b5bb6c75f70b256f9fb522ce67cdf035c8e073a61f152876570d29453f164a4f1ea38a62e419511f81f6f75ced793e6332b66a647dc8012daacff27b8e languageName: node linkType: hard @@ -14019,27 +13927,27 @@ fsevents@^1.2.7: linkType: hard "libnpmaccess@npm:^4.0.1": - version: 4.0.1 - resolution: "libnpmaccess@npm:4.0.1" + version: 4.0.2 + resolution: "libnpmaccess@npm:4.0.2" dependencies: aproba: ^2.0.0 minipass: ^3.1.1 - npm-package-arg: ^8.0.0 - npm-registry-fetch: ^9.0.0 - checksum: b13f08f802a6f8074f266101538ef3a3c6f5b3d1ac358d19ce54c6572dd6fb529712b3de9ecb38a7c2c63a21439f50afedc7cb2e66c95a21a5ff7007efad5c2e + npm-package-arg: ^8.1.2 + npm-registry-fetch: ^10.0.0 + checksum: 7dc01c56b20414f3b8dafc6c12facfcef3d32dd7720a6d53da2b20de6be2a2a94feadebcf66af1dfa55d15fc34270ddf5e9ad202e2b81a8c194bff8bfa6b4826 languageName: node linkType: hard "libnpmpublish@npm:^4.0.0": - version: 4.0.0 - resolution: "libnpmpublish@npm:4.0.0" + version: 4.0.1 + resolution: "libnpmpublish@npm:4.0.1" dependencies: - normalize-package-data: ^3.0.0 - npm-package-arg: ^8.1.0 - npm-registry-fetch: ^9.0.0 + normalize-package-data: ^3.0.2 + npm-package-arg: ^8.1.2 + npm-registry-fetch: ^10.0.0 semver: ^7.1.3 - ssri: ^8.0.0 - checksum: 52dc5f70fa4e916489ad1c65994ba930605947b7453713cef17042adb5b9e17bb5a0f84b30b5be62bdc9d5334a4a07c50cd472669160140af578e378784cf235 + ssri: ^8.0.1 + checksum: 8086b336ce77ce7cfa8bbd9b45e319816d6ed7012dcc784b14c6a60dbee9444527068632382a60a4c98615f5d135b7ceb81460332ecb68f1c95219495da3e35a languageName: node linkType: hard @@ -14203,6 +14111,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"lodash.clonedeep@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.clonedeep@npm:4.5.0" + checksum: 41e2fe4c57c56a66a4775a6ddeebe9272f0ce4d257d97b3cb8724a9b01eeec9b09ce7e8603d6926baf5f48c287d988f0de4bf5aa244ea86b1f22c1e6f203cc27 + languageName: node + linkType: hard + "lodash.curry@npm:^4.0.1": version: 4.1.1 resolution: "lodash.curry@npm:4.1.1" @@ -14376,6 +14291,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"lodash.truncate@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.truncate@npm:4.4.2" + checksum: b1b0d7d993bb73d0032fe909d4523a836b6aa91566fa88ff78c3eac008bd3d3b2ba0f2e8381d7f906b1d6913a64982f34bea95dd556355c0d418bfddf3ab7b06 + languageName: node + linkType: hard + "lodash.uniq@npm:4.5.0, lodash.uniq@npm:^4.5.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" @@ -14383,7 +14305,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"lodash@npm:^4.15.0, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.4": +"lodash@npm:^4.15.0, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468 @@ -14400,11 +14322,12 @@ fsevents@^1.2.7: linkType: hard "log-symbols@npm:^4.0.0": - version: 4.0.0 - resolution: "log-symbols@npm:4.0.0" + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" dependencies: - chalk: ^4.0.0 - checksum: 2cbdb0427d1853f2bd36645bff42aaca200902284f28aadacb3c0fa4c8c43fe6bfb71b5d61ab08b67063d066d7c55b8bf5fbb43b03e4a150dbcdd643e9cd1dbf + chalk: ^4.1.0 + is-unicode-supported: ^0.1.0 + checksum: 57be4aeb6a6ecb81d8267600836f81928da1d846ad13384a9a22d179e27590fdb680946edbd15642a31735183adaa3dc6aae2d20e619a19fa0d54e1aee945915 languageName: node linkType: hard @@ -14572,9 +14495,9 @@ fsevents@^1.2.7: linkType: hard "map-obj@npm:^4.0.0": - version: 4.1.0 - resolution: "map-obj@npm:4.1.0" - checksum: 91827cab5aa21840605cb5e77c8cabd3089251f95f939419a7208c29fb6b1032006d8b2ad9d407c91b6e0a9e282105c1811eabd750df87f8b55ae758f87c2063 + version: 4.2.1 + resolution: "map-obj@npm:4.2.1" + checksum: 59c2f09ffccf8878cdb67dc46d0dd73a55bcfb27c20afc2fb87250ac95f2b19e3187c8de887c40f41b96b0200aac3dfdbc31759615cb666b35864a307885c896 languageName: node linkType: hard @@ -15201,10 +15124,10 @@ fsevents@^1.2.7: languageName: node linkType: hard -"mime-db@npm:1.46.0, mime-db@npm:>= 1.43.0 < 2": - version: 1.46.0 - resolution: "mime-db@npm:1.46.0" - checksum: 4e137ac502ca5ba6c583e552c5fa6abd0c2157592f647824ba7246b771eb42c65c2a1816fc52b27afdbb88a026127f1d5fba354f9dcde591b3b464be07c3d27e +"mime-db@npm:1.47.0, mime-db@npm:>= 1.43.0 < 2": + version: 1.47.0 + resolution: "mime-db@npm:1.47.0" + checksum: f5f9220dd53c240c9234323571f632486c663e36676ebfdca9963fb9a92d1dd28b16124bceff60868fb70743764ade8466dd5e6a1a833decde89ae6d15211503 languageName: node linkType: hard @@ -15225,11 +15148,11 @@ fsevents@^1.2.7: linkType: hard "mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24": - version: 2.1.29 - resolution: "mime-types@npm:2.1.29" + version: 2.1.30 + resolution: "mime-types@npm:2.1.30" dependencies: - mime-db: 1.46.0 - checksum: 744d72b2a24c64d2aacc1ead86bfc827c2c4f1bb6f3b4bf6d8684b82f5ddd0b75a5c0eff128a888c09080f9ad7979400b64a697889690fca3c42de80c8f5e187 + mime-db: 1.47.0 + checksum: c7ca8a9980bdae0b760820aded39ea9541a8236f4abc105df645ea5b09a9c4a5299e28667c0c9596ab8e4ca84b219fd8b94b5c68e32b59891ca1f57a7e848c02 languageName: node linkType: hard @@ -15293,15 +15216,15 @@ fsevents@^1.2.7: linkType: hard "mini-css-extract-plugin@npm:^1.4.0": - version: 1.5.1 - resolution: "mini-css-extract-plugin@npm:1.5.1" + version: 1.6.0 + resolution: "mini-css-extract-plugin@npm:1.6.0" dependencies: loader-utils: ^2.0.0 schema-utils: ^3.0.0 webpack-sources: ^1.1.0 peerDependencies: webpack: ^4.4.0 || ^5.0.0 - checksum: dfdb5ed1faa5926dbe638fb1dff8bb573387a778d9937ebbd800b42a213e32c5e0abc08fdb80df39fc5de7a7acda28319b73498672c1cfa48f8c548d2c02cfdb + checksum: c9c50bed4ffa0ce0099c26184ed6f5b8675be068252fb2a68b790d8afa58c896e0c36aae0e0601e5036fdc04ecad761e884ce4d27a75c8bd3fb69ff7b4c52f91 languageName: node linkType: hard @@ -15496,9 +15419,9 @@ fsevents@^1.2.7: linkType: hard "mock-fs@npm:^4.4.1": - version: 4.13.0 - resolution: "mock-fs@npm:4.13.0" - checksum: cfb2134de7dfa53ebbbbacdd1b4fc834cce99ee9c231e8e129d9d32b669d15936217a7cdef8325946dd4e398ecfc401aa14c79030b8421cdf6ebd904786d8578 + version: 4.14.0 + resolution: "mock-fs@npm:4.14.0" + checksum: d1f8176f0da03c64d1ea12c586491f7ddc402bb6497c643e10b85899d638d15914c92ad06d0eab8bc54cb000ef3b2b236f2a8f9faf60af687f8858e77d7e5e0a languageName: node linkType: hard @@ -15659,21 +15582,12 @@ fsevents@^1.2.7: languageName: node linkType: hard -"nanoid@npm:^3.1.20": - version: 3.1.20 - resolution: "nanoid@npm:3.1.20" - bin: - nanoid: bin/nanoid.cjs - checksum: 4788d36edcfec7bb32ddf33ed8f1f46df2867f70e9b1993bb131f7677e04ead2b621e5d614d2736308be18db1d54208d8ab207b4586bd5b052f71fb9d4c0ebea - languageName: node - linkType: hard - -"nanoid@npm:^3.1.22": - version: 3.1.22 - resolution: "nanoid@npm:3.1.22" +"nanoid@npm:^3.1.23": + version: 3.1.23 + resolution: "nanoid@npm:3.1.23" bin: nanoid: bin/nanoid.cjs - checksum: 6a38c799816de388cd67233a9fad6216e0ad2abda3ce5b34eb126afbef6905924507223dc65797e2bcbc513f9cd7e078ea7e69448d59f434a6206b491278ae24 + checksum: e6dea1da5a593ffdc8cf2676d1d02f0626f07a54a5947a7a1f5ff1fd07901b2f53044c285e98b87eb367f016fde285fd8785d54a2dceeab9c3721f4e618f8326 languageName: node linkType: hard @@ -15766,11 +15680,11 @@ fsevents@^1.2.7: linkType: hard "node-addon-api@npm:^3.0.0": - version: 3.1.0 - resolution: "node-addon-api@npm:3.1.0" + version: 3.2.0 + resolution: "node-addon-api@npm:3.2.0" dependencies: node-gyp: latest - checksum: 9b5c1f5f24acb9255fd47914b0f0b80c76d735b7b91611366cd30217f8ead5fafcd1cfeb65e467612b40420b6ad3faf1e7fa3666bd4e15a2bdf1762748f3fa8a + checksum: cba449a79f217b5ea3b0273016a7a4839cc398b94033330bb8764dd7864ad15f55d9a7a2d0520dd4be561eb0f76d7649ff4b9f1da329a293361a4cdf9b61d865 languageName: node linkType: hard @@ -15873,8 +15787,8 @@ fsevents@^1.2.7: linkType: hard "node-notifier@npm:^9.0.0": - version: 9.0.0 - resolution: "node-notifier@npm:9.0.0" + version: 9.0.1 + resolution: "node-notifier@npm:9.0.1" dependencies: growly: ^1.3.0 is-wsl: ^2.2.0 @@ -15882,21 +15796,21 @@ fsevents@^1.2.7: shellwords: ^0.1.1 uuid: ^8.3.0 which: ^2.0.2 - checksum: 10e6ba45afb246ea8bd0189960b883c4c0cb04de82a7c091b536f7652327910a4929fd3862cc32bdea20e53bb52a4ddae2ff1eb3aee751aba6e27242602193b3 + checksum: 7396a2bd7c28a005cc7e192d3c9f690b59eaa5cfcfaa1aa546d94bca22be873c03472dbf74165bc5d38e1e7be9380de1cb5ecce48bd62f6506632f482a5bc141 languageName: node linkType: hard -"node-releases@npm:^1.1.61, node-releases@npm:^1.1.70, node-releases@npm:^1.1.71": - version: 1.1.71 - resolution: "node-releases@npm:1.1.71" - checksum: 9e283003f1deafd0ca7f9bbde9c4b5b05d880ca165217f5227b37406626d6689a246a5c4c72f9a8512be65cd51b13cc7d0f5d8bc68ad36089b620f1810292340 +"node-releases@npm:^1.1.61, node-releases@npm:^1.1.71": + version: 1.1.72 + resolution: "node-releases@npm:1.1.72" + checksum: a9ded860baa3c90fa6fde2e1be597959b238940cda1e5bbeceb5de6a16faa1db81982b629429fd6ebbec98f7dd241378cda5918a57c9baf68cb6a6e002b4fc15 languageName: node linkType: hard "node-stream-zip@npm:^1.9.1": - version: 1.13.2 - resolution: "node-stream-zip@npm:1.13.2" - checksum: 4d64869fcf0cef8ded582649fe09f581c6cfd8305c13093c24dd8c01b2143392e8c105c0c67141c336e361666450598fccb12ee06d0b736e0cf5a80f7f9ca118 + version: 1.13.4 + resolution: "node-stream-zip@npm:1.13.4" + checksum: 314a859a241ad9bd4b8b8872408dd00a8ed0896933ff7bffd39d992a810eb68f6c7d9fe3ad0fca9208a56ba84cc42046b599e39ebcc9d9b942b7af316d5d0999 languageName: node linkType: hard @@ -15935,15 +15849,15 @@ fsevents@^1.2.7: languageName: node linkType: hard -"normalize-package-data@npm:^3.0.0": - version: 3.0.0 - resolution: "normalize-package-data@npm:3.0.0" +"normalize-package-data@npm:^3.0.0, normalize-package-data@npm:^3.0.2": + version: 3.0.2 + resolution: "normalize-package-data@npm:3.0.2" dependencies: - hosted-git-info: ^3.0.6 - resolve: ^1.17.0 - semver: ^7.3.2 + hosted-git-info: ^4.0.1 + resolve: ^1.20.0 + semver: ^7.3.4 validate-npm-package-license: ^3.0.1 - checksum: 1a7d7a2f984a3627412e1838582e03267a35c0abc18eb2ab4a61354160308b59b03bad1856b7f2687eff02e73b8a26ef2f627accc4c81a50e6b2359e7fd5e35e + checksum: a1053ccfe091bbb83692deaad52450d3d214858bd02063a9267d38d618f13045528b81fef8729417303136c0b34ad5bfcf78d48aa0a3e36a90615726897e24e9 languageName: node linkType: hard @@ -15985,11 +15899,11 @@ fsevents@^1.2.7: linkType: hard "npm-bundled@npm:^1.1.1": - version: 1.1.1 - resolution: "npm-bundled@npm:1.1.1" + version: 1.1.2 + resolution: "npm-bundled@npm:1.1.2" dependencies: npm-normalize-package-bin: ^1.0.1 - checksum: f51ddba86970fc568a40449f51348de535ac71d93a2ce31195e978d0189899a0da696b3e51a5eb6e77a88890482ac873767c58c81763dda3dab410c9c1e99ca5 + checksum: 3fbbc69d1c831e00a0e2a68e565dd8bf6c7557fc75be35d09d64ecaf7310b75e58e3d3a076525232f6af17b70c0bdb53d47e58eef5461bc151c748f60c6d34ed languageName: node linkType: hard @@ -16025,20 +15939,20 @@ fsevents@^1.2.7: languageName: node linkType: hard -"npm-package-arg@npm:^8.0.0, npm-package-arg@npm:^8.0.1, npm-package-arg@npm:^8.1.0": - version: 8.1.1 - resolution: "npm-package-arg@npm:8.1.1" +"npm-package-arg@npm:^8.0.0, npm-package-arg@npm:^8.0.1, npm-package-arg@npm:^8.1.0, npm-package-arg@npm:^8.1.2": + version: 8.1.2 + resolution: "npm-package-arg@npm:8.1.2" dependencies: - hosted-git-info: ^3.0.6 - semver: ^7.0.0 + hosted-git-info: ^4.0.1 + semver: ^7.3.4 validate-npm-package-name: ^3.0.0 - checksum: 0b3b11988578acb39595531a76a2c0b93bf9d7ace0985b9887e8e82caa9e2a9f7c748b61361c86f1d58a8887ddb4b9cbdbfb2e5e9f71f36052bf1901e37ac0c5 + checksum: bf4a3ad49513d1598df2e2d53bc29759f3b5f4160647f6b5f5159296c4c5ec7c59524cd02a58954ff8ac440e064848caf6c8c5063383a1ca1bf7d2fd31b4dd7e languageName: node linkType: hard "npm-packlist@npm:^2.1.4": - version: 2.1.4 - resolution: "npm-packlist@npm:2.1.4" + version: 2.2.2 + resolution: "npm-packlist@npm:2.2.2" dependencies: glob: ^7.1.6 ignore-walk: ^3.0.3 @@ -16046,18 +15960,34 @@ fsevents@^1.2.7: npm-normalize-package-bin: ^1.0.1 bin: npm-packlist: bin/index.js - checksum: af6335c94cefe599d710e8dbc5295b854e2b50659f68ef775a918f47d7a94212f3483d31cf68556bd3daf1390aab2514ad39e1a35354b3b0f8fc3b44a51bdee7 + checksum: 3b1126a32a2bb296ab45e0eb71f6bda74a65b002fad226d225c1745ad36c52443b85f23378d45e93bf45d4a67cd43ddf0dea5407e4b252c6494bf950243f9cc2 languageName: node linkType: hard -"npm-pick-manifest@npm:^6.0.0": - version: 6.1.0 - resolution: "npm-pick-manifest@npm:6.1.0" +"npm-pick-manifest@npm:^6.0.0, npm-pick-manifest@npm:^6.1.1": + version: 6.1.1 + resolution: "npm-pick-manifest@npm:6.1.1" dependencies: npm-install-checks: ^4.0.0 + npm-normalize-package-bin: ^1.0.1 + npm-package-arg: ^8.1.2 + semver: ^7.3.4 + checksum: 54e39277b70f861ed4a644eb51d05f7bfc414fc181241dc2e925f4bc264ed2a1de2463a23ca67e9c4d4bcaff8dbb2cf8bdcb6d209df4fd5d07a02053e0eba15b + languageName: node + linkType: hard + +"npm-registry-fetch@npm:^10.0.0": + version: 10.1.1 + resolution: "npm-registry-fetch@npm:10.1.1" + dependencies: + lru-cache: ^6.0.0 + make-fetch-happen: ^8.0.9 + minipass: ^3.1.3 + minipass-fetch: ^1.3.0 + minipass-json-stream: ^1.0.1 + minizlib: ^2.0.0 npm-package-arg: ^8.0.0 - semver: ^7.0.0 - checksum: 4dbb81991dd338ac3a44c19da2615e3f9d340e57057c81e50c7e35c03978ec63515644eecc21bd0e07d71bffd05631e4f6695d1011f9f4e152fad66684511bbf + checksum: 485ee8cffcd9481cddbe8c5f441be5bc1b3404566b14efc97afe6fe5fb0b0f2864f2163d18a70bf97a6afb3735f4c2967750d38c4096c4ceb88f3db0b32909e6 languageName: node linkType: hard @@ -16186,9 +16116,9 @@ fsevents@^1.2.7: linkType: hard "object-inspect@npm:^1.7.0, object-inspect@npm:^1.9.0": - version: 1.9.0 - resolution: "object-inspect@npm:1.9.0" - checksum: 63b412167d716e332b3233090a9e8cc7951479a6971629fb8a3d00135a2329136c697fbd2f56e48bb132928f01bd0f8c5fe2d7386222f217228ca697b8c3932a + version: 1.10.3 + resolution: "object-inspect@npm:1.10.3" + checksum: f5d21d86dbedf7224f5e2bee8235beb1e94a419443102ae0d6c17603ace26b930de584ece5695ae6c338ec996656477d5ca425b1f8770b4aa3340aa3d188aa9a languageName: node linkType: hard @@ -16647,8 +16577,8 @@ fsevents@^1.2.7: linkType: hard "pacote@npm:^11.2.6": - version: 11.2.7 - resolution: "pacote@npm:11.2.7" + version: 11.3.3 + resolution: "pacote@npm:11.3.3" dependencies: "@npmcli/git": ^2.0.1 "@npmcli/installed-package-contents": ^1.0.6 @@ -16663,7 +16593,7 @@ fsevents@^1.2.7: npm-package-arg: ^8.0.1 npm-packlist: ^2.1.4 npm-pick-manifest: ^6.0.0 - npm-registry-fetch: ^9.0.0 + npm-registry-fetch: ^10.0.0 promise-retry: ^2.0.1 read-package-json-fast: ^2.0.1 rimraf: ^3.0.2 @@ -16671,7 +16601,7 @@ fsevents@^1.2.7: tar: ^6.1.0 bin: pacote: lib/bin.js - checksum: e4f0947b394893436fc9eb3c4b2f9a2b0d1e1bff17dc6c326ed445f5d3150580c3a116f15a5f5f56b05ccaa0a64c67de3270a694c2bf762a48e2b931baf488fe + checksum: 0dc1afb33f29558261dcc9398ce1ad8cec943970fd7493a8e4d1ad5f9535214807c98f803d1831bab14f2c713b82b164d522e87e20ceb320e7afe941f9925ce1 languageName: node linkType: hard @@ -16791,10 +16721,10 @@ fsevents@^1.2.7: languageName: node linkType: hard -"parse5@npm:5.1.1, parse5@npm:^5.0.0": - version: 5.1.1 - resolution: "parse5@npm:5.1.1" - checksum: fad72ff5010ee8a6f0a38b83fc886b71a54d746d5c4ff5aad74d6ba1fe87b9606585bf32aa200b015ce329e0906f50f2851f29876abeacd5c13567c7a0455362 +"parse5@npm:6.0.1, parse5@npm:^6.0.0": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: e312014edd76a6dc2eac35248ad53477b2594a7b92b7a00f66169483bb87c3d1d36660daddeb720457418dfe0893eb3ad1043085047fc3699167afa6834cb4c4 languageName: node linkType: hard @@ -16807,10 +16737,10 @@ fsevents@^1.2.7: languageName: node linkType: hard -"parse5@npm:^6.0.0": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: e312014edd76a6dc2eac35248ad53477b2594a7b92b7a00f66169483bb87c3d1d36660daddeb720457418dfe0893eb3ad1043085047fc3699167afa6834cb4c4 +"parse5@npm:^5.0.0": + version: 5.1.1 + resolution: "parse5@npm:5.1.1" + checksum: fad72ff5010ee8a6f0a38b83fc886b71a54d746d5c4ff5aad74d6ba1fe87b9606585bf32aa200b015ce329e0906f50f2851f29876abeacd5c13567c7a0455362 languageName: node linkType: hard @@ -17080,13 +17010,13 @@ fsevents@^1.2.7: linkType: hard "plist@npm:^3.0.1": - version: 3.0.1 - resolution: "plist@npm:3.0.1" + version: 3.0.2 + resolution: "plist@npm:3.0.2" dependencies: - base64-js: ^1.2.3 + base64-js: ^1.5.1 xmlbuilder: ^9.0.7 - xmldom: 0.1.x - checksum: 61274fedface8f218f8a5c95f786a3b6b8a8f0b5f637e809fb9a831aafc019111499cc15796ad63c37c9570d6e2029a579077c458fb2af01091373514a9a8ffa + xmldom: ^0.5.0 + checksum: 533f5354d086059055af885cae495119bec53267710f981a6c687749f706727239051b1eb26200a1fbb39af71ea3562adb83178c118482124c5b5f8fc4ef93bb languageName: node linkType: hard @@ -17201,8 +17131,8 @@ fsevents@^1.2.7: linkType: hard "postcss-loader@npm:^5.2.0": - version: 5.2.0 - resolution: "postcss-loader@npm:5.2.0" + version: 5.3.0 + resolution: "postcss-loader@npm:5.3.0" dependencies: cosmiconfig: ^7.0.0 klona: ^2.0.4 @@ -17210,7 +17140,7 @@ fsevents@^1.2.7: peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 - checksum: 669232a256aa44a08f37122f7645a4979f8ec9f87c387596e4970c39da96d1ae12cec077e915314d09262dcd584fc12592920298b21b1b6cbb562adadc3ce516 + checksum: fd7a1a673b0e8f238392b3d449f2727767522febb2f60bfc9bb5cd4e373b07ba8df621f4e2fad92bf085765dcdea0f049497ae799ce1c9f1a592820275cc7e65 languageName: node linkType: hard @@ -17511,25 +17441,23 @@ fsevents@^1.2.7: linkType: hard "postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.4 - resolution: "postcss-selector-parser@npm:6.0.4" + version: 6.0.6 + resolution: "postcss-selector-parser@npm:6.0.6" dependencies: cssesc: ^3.0.0 - indexes-of: ^1.0.1 - uniq: ^1.0.1 util-deprecate: ^1.0.2 - checksum: f6b6e30f515e0909af2555df29feca42f2141d10fac7f8e719ac72f071729a9b9f631241bb1d8ff88cbec7e8fb2ada22c0c92ee0d629582340551ea090985a74 + checksum: 7e4854e82faa14bab0c5affbdf49b67cc0bf3e6fd9b0273e7f72c8ec957b5c5bcb7c64ae3cb6f8fe5b3ef965ec7e235d4e4d1a8868bd02139072e7a545221f09 languageName: node linkType: hard "postcss-sort-media-queries@npm:^3.8.9": - version: 3.8.9 - resolution: "postcss-sort-media-queries@npm:3.8.9" + version: 3.9.10 + resolution: "postcss-sort-media-queries@npm:3.9.10" dependencies: sort-css-media-queries: 1.5.4 peerDependencies: - postcss: ^8.2.10 - checksum: 6b6fd2f3661a7de2fa58a28d234998ae55e2faddcb7305b0acd3990e1610139542772cefac6ebaa09d5bfc666bffc461c03d6331f845214e43cd6cd0579913b9 + postcss: ^8.2.13 + checksum: 992ad8ac112f790b9482e2f18ea6dced7c3e63345ea5e26a3088e557244214472cf2c02c829cd3af8cdea6788304c4e1ce1768090673024e25eb85505c0ac2c2 languageName: node linkType: hard @@ -17578,24 +17506,13 @@ fsevents@^1.2.7: linkType: hard "postcss@npm:^8.2.10, postcss@npm:^8.2.4, postcss@npm:^8.2.9": - version: 8.2.13 - resolution: "postcss@npm:8.2.13" - dependencies: - colorette: ^1.2.2 - nanoid: ^3.1.22 - source-map: ^0.6.1 - checksum: df64697cbd6d8e501eac2eaed501dc9a9c848538b4b51c53bfe7ed62a91736e97135d1fe22384b69af11bb2387a6cb483f5eecd14b19ca192ab5497ed5522124 - languageName: node - linkType: hard - -"postcss@npm:^8.2.8": - version: 8.2.8 - resolution: "postcss@npm:8.2.8" + version: 8.2.15 + resolution: "postcss@npm:8.2.15" dependencies: colorette: ^1.2.2 - nanoid: ^3.1.20 + nanoid: ^3.1.23 source-map: ^0.6.1 - checksum: 6e17d28833cf918a5ab306bfc7ec66b236dc51ed0f3de959491d40f6a171f5bd5f26de12f74e6bfeebaad44b0ac92b9f477a669d5f1fc07a27d67d8147a4bf6f + checksum: 2d26bc29dedd7656d1f53fa002374a014a8c2c7b9f1538d0fafadb9eae2494f5b037c87de4390d620f622b31d7f15c8c8d88de2bd682e206104fb44e781737df languageName: node linkType: hard @@ -17868,20 +17785,13 @@ fsevents@^1.2.7: languageName: node linkType: hard -"psl@npm:^1.1.28": +"psl@npm:^1.1.28, psl@npm:^1.1.33": version: 1.8.0 resolution: "psl@npm:1.8.0" checksum: 92d47c6257456878bfa8190d76b84de69bcefdc129eeee3f9fe204c15fd08d35fe5b8627033f39b455e40a9375a1474b25ff4ab2c5448dd8c8f75da692d0f5b4 languageName: node linkType: hard -"puka@npm:^1.0.1": - version: 1.0.1 - resolution: "puka@npm:1.0.1" - checksum: 67c1bdef3228bbc7ea5ff58b8bf4f1ea478e280cf6e15b2900c12df06dd6a7ca7fc32019ab7bed79551f77d4e0a6c92f54b845dd36ddfd2285b5a257db62b98b - languageName: node - linkType: hard - "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -17951,9 +17861,11 @@ fsevents@^1.2.7: linkType: hard "qs@npm:^6.9.4": - version: 6.9.6 - resolution: "qs@npm:6.9.6" - checksum: 853715ab6d685aad829c984997f4c7dc90665a8b652478d2e3c06be6968846e5d04adaf1eb2f4977ef544a194a376f0fa65734ee27a4d535e1ed8cb205bf5cce + version: 6.10.1 + resolution: "qs@npm:6.10.1" + dependencies: + side-channel: ^1.0.4 + checksum: 25e50a9107322027a998ba4eacec3df4b575c4f0a02cf0602002242d09ac997ab783384b6e90d6264a4d8387de3d17fb177d9c304a0dd9ec706a3087a069b204 languageName: node linkType: hard @@ -17991,9 +17903,9 @@ fsevents@^1.2.7: linkType: hard "queue-microtask@npm:^1.2.2": - version: 1.2.2 - resolution: "queue-microtask@npm:1.2.2" - checksum: 563abf1b1d0916842c017a4c0784fffebd0dd7d5685ffd65356dfee8f084e34e2a9b449aa788dddb2767f7dc79d1834545bb75f8f643b8aa85aea20a9efabbec + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 0f88d794d4d825d39cdc2cda2fa701722858fc8de9567ad612776fce0d113376a3fc67f6a0091f31c9142b28f0c14fef08e9f92422b49f2372d5537e250fbfad languageName: node linkType: hard @@ -18131,12 +18043,12 @@ fsevents@^1.2.7: linkType: hard "react-devtools-core@npm:^4.6.0": - version: 4.10.1 - resolution: "react-devtools-core@npm:4.10.1" + version: 4.13.2 + resolution: "react-devtools-core@npm:4.13.2" dependencies: shell-quote: ^1.6.1 ws: ^7 - checksum: 45052ae69accd682b831c28691d2469abaa095c119b9e9403190dd67c95ee6b28e420cea7147a04a7386c7275b61634e2c1081b5577d4c725c4c64c5054fab20 + checksum: 80055e46231cf2e78194ee4a7e8cc271b57b444aa4d417c5b39179cfe1a33eab26242d6d697706f622fa8ed79cc85183854deec9f6cb658f0b049981b9126876 languageName: node linkType: hard @@ -18205,9 +18117,9 @@ fsevents@^1.2.7: linkType: hard "react-is@npm:^16.12.0 || ^17.0.0, react-is@npm:^17.0.1": - version: 17.0.1 - resolution: "react-is@npm:17.0.1" - checksum: 5a83dfc78e7adcb93d632bf367b0733db650e3abd2e9c57c33b87e50d201212c1884b0d7bcf13e692f1556189fa1b87f9f3e0ba10fe858fd6aebe83ed4fcd1ea + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 3eff23f410d40ab9bc5177f147a92c7f42c356a21ecea340e0554566956d67e5e1ba56f26cc7fa22339ac3c7151744177bd6305eaa26d3cbf15f354358c9d9b6 languageName: node linkType: hard @@ -18551,7 +18463,7 @@ react-native@0.64.0: languageName: node linkType: hard -"read-package-json@npm:^3.0.0": +"read-package-json@npm:^3.0.0, read-package-json@npm:^3.0.1": version: 3.0.1 resolution: "read-package-json@npm:3.0.1" dependencies: @@ -18808,9 +18720,9 @@ react-native@0.64.0: linkType: hard "regenerator-runtime@npm:^0.13.2, regenerator-runtime@npm:^0.13.4": - version: 0.13.7 - resolution: "regenerator-runtime@npm:0.13.7" - checksum: 6ef567c662088b1b292214920cbd72443059298d477f72e1a37e0a113bafbfac9057cbfe35ae617284effc4b423493326a78561bbff7b04162c7949bdb9624e8 + version: 0.13.8 + resolution: "regenerator-runtime@npm:0.13.8" + checksum: 20178f5753f181d59691e5c3b4c59a2769987f75c7ccf325777673b5478acca61a553b10e895585086c222f72f5ee428090acf50320264de4b79f630f7388653 languageName: node linkType: hard @@ -18890,13 +18802,13 @@ react-native@0.64.0: linkType: hard "regjsparser@npm:^0.6.4": - version: 0.6.7 - resolution: "regjsparser@npm:0.6.7" + version: 0.6.9 + resolution: "regjsparser@npm:0.6.9" dependencies: jsesc: ~0.5.0 bin: regjsparser: bin/parser - checksum: 9f8f0f68f340a9d92fb3de5f5377c2dff326577b91f21ac965830b091760f709f01d69b636f6433fb0c152f3b341052b00d629926db5d67d4d275855ca11ce1e + checksum: ad533fe6ce6d156efb2a144a61166747317598069530205f9d9e3414e2642ff63eb59dbd7d01fcbc0daf18115b510d6494fa49ce30491f76c323695f3a16f2db languageName: node linkType: hard @@ -18930,13 +18842,13 @@ react-native@0.64.0: linkType: hard "remark-emoji@npm:^2.1.0": - version: 2.1.0 - resolution: "remark-emoji@npm:2.1.0" + version: 2.2.0 + resolution: "remark-emoji@npm:2.2.0" dependencies: emoticon: ^3.2.0 node-emoji: ^1.10.0 - unist-util-visit: ^2.0.2 - checksum: 6c7fc18224319c0d16e9a3da8c2e8e870b9b925da00fa4e6f9661e6a01b07547932d8e51f17af410cb251a349ac2228366575cc95f92dcf8628cbada6ca57cff + unist-util-visit: ^2.0.3 + checksum: 7778e3327d4eac9ff656113145d35befe91d6215227ba8816a33a59abe4c0c765592321eb0037deefa597b9f290da146d25544b0d5efe64c2e8d32c8bbf83ed0 languageName: node linkType: hard @@ -19049,9 +18961,9 @@ react-native@0.64.0: linkType: hard "repeat-element@npm:^1.1.2": - version: 1.1.3 - resolution: "repeat-element@npm:1.1.3" - checksum: 6a59b879efdd3512a786be5de1bc05c110822fec6820bb5a38dfdfdd4488e7ba0cf6d15b28da21544e6f072ae60762ee9efa784f2988128e656c97a8b0be46cb + version: 1.1.4 + resolution: "repeat-element@npm:1.1.4" + checksum: 44db9550826d4101f1db2deccd1afe226e77a137c94b899b98505409703513894ef5195fcd0fccb9f0979f3ab7d582cac7c19ff4cf8b606c2f0754488e164c70 languageName: node linkType: hard @@ -19096,7 +19008,7 @@ react-native@0.64.0: languageName: node linkType: hard -"request-promise-native@npm:^1.0.8": +"request-promise-native@npm:^1.0.9": version: 1.0.9 resolution: "request-promise-native@npm:1.0.9" dependencies: @@ -19225,7 +19137,7 @@ react-native@0.64.0: languageName: node linkType: hard -"resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.0, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.3.2": +"resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.0, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2": version: 1.20.0 resolution: "resolve@npm:1.20.0" dependencies: @@ -19235,7 +19147,7 @@ react-native@0.64.0: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#builtin, resolve@patch:resolve@^1.10.0#builtin, resolve@patch:resolve@^1.13.1#builtin, resolve@patch:resolve@^1.14.2#builtin, resolve@patch:resolve@^1.15.0#builtin, resolve@patch:resolve@^1.17.0#builtin, resolve@patch:resolve@^1.20.0#builtin, resolve@patch:resolve@^1.3.2#builtin": +"resolve@patch:resolve@^1.1.6#builtin, resolve@patch:resolve@^1.10.0#builtin, resolve@patch:resolve@^1.13.1#builtin, resolve@patch:resolve@^1.14.2#builtin, resolve@patch:resolve@^1.15.0#builtin, resolve@patch:resolve@^1.17.0#builtin, resolve@patch:resolve@^1.19.0#builtin, resolve@patch:resolve@^1.20.0#builtin, resolve@patch:resolve@^1.3.2#builtin": version: 1.20.0 resolution: "resolve@patch:resolve@npm%3A1.20.0#builtin::version=1.20.0&hash=3388aa" dependencies: @@ -19365,9 +19277,9 @@ react-native@0.64.0: languageName: node linkType: hard -"rollup@npm:^2.25.0": - version: 2.41.1 - resolution: "rollup@npm:2.41.1" +"rollup@npm:^2.43.1": + version: 2.48.0 + resolution: "rollup@npm:2.48.0" dependencies: fsevents: ~2.3.1 dependenciesMeta: @@ -19375,7 +19287,7 @@ react-native@0.64.0: optional: true bin: rollup: dist/bin/rollup - checksum: 1fd1355118fcdcf8ef886e5c91a5040d0d6e45c057d425e3fbaeb968c63d7b56979752537b7c5b86c6cfba1c7d4e2fc4053a5b32f38ac1cfbec7ef62a1433785 + checksum: 3f50c1e023adcf9fc14100b7ca128482ea58cd27af0aad344affbd9622fc35bbd28ca13ceac35b252d137aedd36df39886b3a308e42b437bcb46918584ee89d3 languageName: node linkType: hard @@ -19397,9 +19309,9 @@ react-native@0.64.0: linkType: hard "rtl-detect@npm:^1.0.2": - version: 1.0.2 - resolution: "rtl-detect@npm:1.0.2" - checksum: 5776868dedc05f17bf1a72f641ccd3257710c8f4e9469fa7d48a59e999d6121c340ac54a0dd6c87492e74f33178ec3fe379cdbf98189ef00d70996faca43e3ae + version: 1.0.3 + resolution: "rtl-detect@npm:1.0.3" + checksum: 8ec281630d1e7fc5c1d409f65dc7e9637e9c81527f96420c439f44a5d73d0fe8b8936867a9628d4198ecac39d4f5cc8b4b04c3681d3fb3aa49bffe2f87bd4c95 languageName: node linkType: hard @@ -19437,11 +19349,11 @@ react-native@0.64.0: linkType: hard "rxjs@npm:^6.5.3, rxjs@npm:^6.6.0, rxjs@npm:^6.6.3": - version: 6.6.6 - resolution: "rxjs@npm:6.6.6" + version: 6.6.7 + resolution: "rxjs@npm:6.6.7" dependencies: tslib: ^1.9.0 - checksum: c97b410e791b3259439be48cd37119b63eedc3809a5895d884a7ac27a6934ae4ec246be3d76f1b2f3b47c72a96500ad30977545dc8b0f4a0f98c52f5f773a8ea + checksum: 1146975cbd5388ee5e61450235dc5670931e43cce71813f567977d334acc4d75c6e8d9d293df67e1fb31510b99fc8957943d4a9b550d109e4dc69967a8471543 languageName: node linkType: hard @@ -19510,7 +19422,7 @@ react-native@0.64.0: languageName: node linkType: hard -"saxes@npm:^5.0.0": +"saxes@npm:^5.0.1": version: 5.0.1 resolution: "saxes@npm:5.0.1" dependencies: @@ -19530,12 +19442,12 @@ react-native@0.64.0: linkType: hard "scheduler@npm:^0.20.1": - version: 0.20.1 - resolution: "scheduler@npm:0.20.1" + version: 0.20.2 + resolution: "scheduler@npm:0.20.2" dependencies: loose-envify: ^1.1.0 object-assign: ^4.1.1 - checksum: 377b4ad0d8313c4548bac7374bc38409e9d142799979ce396787efa04d1bcabf2591540f243f2131e3df8e56e7f5b29c5415248523e88ecb60f13a32db2e076f + checksum: 2ba121e53e8a438394598612ec9a8f465b39157042f912d2dd5956af643e0d45ec6937ae4eeb0a807d1945b209515263aed12fc3bca95c7a027ec2a54e76b399 languageName: node linkType: hard @@ -19597,11 +19509,11 @@ react-native@0.64.0: linkType: hard "selfsigned@npm:^1.10.8": - version: 1.10.8 - resolution: "selfsigned@npm:1.10.8" + version: 1.10.11 + resolution: "selfsigned@npm:1.10.11" dependencies: node-forge: ^0.10.0 - checksum: a382ec2af9798a93bc25f2d75778eed6d2c685fdf81e56deaac02d46aa896b0cc1b2770b2689891f8fe83d89cd3bb3e2042c6b15057e110f25a57769cb1a5fb3 + checksum: d07a97842bf90bcafe3e212f83e226f86c19eab1ea9342b7cdeffb0607a62f114dd7e8722c8223e8868d2a5a4f15808d3df3718877c5d33823220a18263b220e languageName: node linkType: hard @@ -19641,14 +19553,14 @@ react-native@0.64.0: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4": - version: 7.3.4 - resolution: "semver@npm:7.3.4" +"semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": + version: 7.3.5 + resolution: "semver@npm:7.3.5" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: f2c7f9aeb976d1484b2f39aa7afc8332a1d21fd32ca4a6fbf650e1423455ebf3e7029f6e2e7ba0cd71935b85942521f1ec25b6cc2c031b953c8ca4ff2d7a823d + checksum: c53624ddf4b9779bcbf55a1eb8b37074cc44bfeca416f3cc263429408202a8a3c59b00eef8c647d697303bc39b95c022a5c61959221d3814bfb1270ff7c14986 languageName: node linkType: hard @@ -19871,6 +19783,17 @@ react-native@0.64.0: languageName: node linkType: hard +"side-channel@npm:^1.0.4": + version: 1.0.4 + resolution: "side-channel@npm:1.0.4" + dependencies: + call-bind: ^1.0.0 + get-intrinsic: ^1.0.2 + object-inspect: ^1.9.0 + checksum: 84258ce3edb1ad35810ca17eccd52fd504b5d4da59447a6829cfd1ae8e3cff97b7df2a14f9a45b7aaa3b507ded95626cf20a500735d3b797e9ffb1eba3cfa9e7 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": version: 3.0.3 resolution: "signal-exit@npm:3.0.3" @@ -20010,16 +19933,16 @@ react-native@0.64.0: linkType: hard "sockjs-client@npm:^1.5.0": - version: 1.5.0 - resolution: "sockjs-client@npm:1.5.0" + version: 1.5.1 + resolution: "sockjs-client@npm:1.5.1" dependencies: debug: ^3.2.6 eventsource: ^1.0.7 faye-websocket: ^0.11.3 inherits: ^2.0.4 json3: ^3.3.3 - url-parse: ^1.4.7 - checksum: e5c976415fff9bcef89b280fb5310125cf838f26f94b4e9d1a65eb1ca2f12521383ac76bbab9350f8b110ed04556d3e9d8bdbf64a7b964883e4e2de950f35317 + url-parse: ^1.5.1 + checksum: 3de8764067c0a1aad53c517222cc855fdfc589cfcb04cb41b048e18504e5f39db2562bc41ab9ecc9896ba5b138a3f0dbb76a7d890259274e20bc529534e37f0d languageName: node linkType: hard @@ -20046,12 +19969,12 @@ react-native@0.64.0: linkType: hard "socks@npm:^2.3.3": - version: 2.5.1 - resolution: "socks@npm:2.5.1" + version: 2.6.1 + resolution: "socks@npm:2.6.1" dependencies: ip: ^1.1.5 smart-buffer: ^4.1.0 - checksum: 851c3bc5d44fdb57c85443d053dc4e8c2361e0623144dc47c75bf9323acfa389294fc4434c6d9ef787ba03723ff5311f98d24372b7e347b6da766195ce68040e + checksum: 9a5735cf9be6f756006b4c5ed23f17c15ffbfc0afb04b5d1b49516b7a27818c807a6a5b5419a65a140a1964149ec9ebb6cd8f0e06d7c60282912204d781371db languageName: node linkType: hard @@ -20208,9 +20131,9 @@ react-native@0.64.0: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.7 - resolution: "spdx-license-ids@npm:3.0.7" - checksum: 21e38ec5dd970643f78d37700b6c6ebd42d68c0e4618db914a56cabd2fe4cc1608404ce6abc7535d5165c6555560e821553d06edf6af6ae439617883cf932c0e + version: 3.0.8 + resolution: "spdx-license-ids@npm:3.0.8" + checksum: f6a996f2d4ca7116e6a820e1dc702833f2c7dcb0997e28baa721a74fac53d675de88c27ae2e76498a8d5bffe30a194aadc130eca01bc71a9706832062aca7316 languageName: node linkType: hard @@ -20408,12 +20331,12 @@ react-native@0.64.0: linkType: hard "string-length@npm:^4.0.1": - version: 4.0.1 - resolution: "string-length@npm:4.0.1" + version: 4.0.2 + resolution: "string-length@npm:4.0.2" dependencies: char-regex: ^1.0.2 strip-ansi: ^6.0.0 - checksum: afc433824703f1fe3d7e34a980055eb376e9f52ed69b90196c7520819cbc5550b9b1a6abaa22704f4f01c7b40191f22a5e7fe3885a005959b4487d89c7e94b94 + checksum: e27dd1b5d759d734d7e4dd6ae0c56d1cad479799452bfeefb6565bb4785cd3d076dea71e9257edd49a051374f3b8492567eb495c306711ae7226ef971a0f1f81 languageName: node linkType: hard @@ -20726,12 +20649,12 @@ react-native@0.64.0: linkType: hard "supports-hyperlinks@npm:^2.0.0": - version: 2.1.0 - resolution: "supports-hyperlinks@npm:2.1.0" + version: 2.2.0 + resolution: "supports-hyperlinks@npm:2.2.0" dependencies: has-flag: ^4.0.0 supports-color: ^7.0.0 - checksum: 8b3b6d71ee298d7f9a3ff4bfb928bd037c0b691b01bdfebb77deb3384976cd78c180d564dc3689ce5fe254d323252f7064efa1364bf24ab81efa6b080e51eddb + checksum: 91af5f206c55fe38c5acacafca8e13bee8ddf59f817178d3cb83388bd85d3ec181a59c446439b63aafa0375e579a7e8d8ec044a0ed1143137ba12f303eb76c6a languageName: node linkType: hard @@ -20790,14 +20713,16 @@ react-native@0.64.0: linkType: hard "table@npm:^6.0.4": - version: 6.0.7 - resolution: "table@npm:6.0.7" + version: 6.7.1 + resolution: "table@npm:6.7.1" dependencies: - ajv: ^7.0.2 - lodash: ^4.17.20 + ajv: ^8.0.1 + lodash.clonedeep: ^4.5.0 + lodash.truncate: ^4.4.2 slice-ansi: ^4.0.0 string-width: ^4.2.0 - checksum: b28d81d6063110a8e94264ff17d3b7505fd344947f2c5cdf0fa71f7a622897fb15068686652d3aed8ed1c5817ca783be8a9c3419edf27808350ad29cc7d87fdf + strip-ansi: ^6.0.0 + checksum: 66107046b7226051552d53c1260facfed03f4050373d3888620af7b1353f6a5429d9a4a5fb796c56c29b9dd5ffca7b661a815f42ec392cb5956432585578772a languageName: node linkType: hard @@ -20857,16 +20782,16 @@ react-native@0.64.0: languageName: node linkType: hard -"teeny-request@npm:6.0.1": - version: 6.0.1 - resolution: "teeny-request@npm:6.0.1" +"teeny-request@npm:7.0.1": + version: 7.0.1 + resolution: "teeny-request@npm:7.0.1" dependencies: http-proxy-agent: ^4.0.0 - https-proxy-agent: ^4.0.0 - node-fetch: ^2.2.0 + https-proxy-agent: ^5.0.0 + node-fetch: ^2.6.1 stream-events: ^1.0.5 - uuid: ^3.3.2 - checksum: 8721d128d0ac98043c985f67cd5511fe59f4e31ba0d93512e187c9cf348a51a82722e8f8ed7e1a949a5667f7317ddb40f2f15d57ded193881b3a19e271db0f6e + uuid: ^8.0.0 + checksum: d62a642f1b72b898e7479acf95e9e40252c6808ed259c6e2537d85dd444b8beb461fcd08a6d8c37482ea58906014a9dc4d89c3ac673d1ef0de0f20ee8ee0c8ae languageName: node linkType: hard @@ -20929,15 +20854,15 @@ react-native@0.64.0: linkType: hard "tempy@npm:^1.0.0": - version: 1.0.0 - resolution: "tempy@npm:1.0.0" + version: 1.0.1 + resolution: "tempy@npm:1.0.1" dependencies: del: ^6.0.0 is-stream: ^2.0.0 temp-dir: ^2.0.0 type-fest: ^0.16.0 unique-string: ^2.0.0 - checksum: 3f5dc793d1bcf933eb7cfba8f2490749ad4974eda064fdb7c95bb42196e8d935b12f91ab764fc86b7d398af867966785349e1ee97674a8c770e23ed5f9bb7f6f + checksum: c598d89ec21246d29e30d6051b0112b614fd744c9c0c80526eb558332056aec949ec79a2918a73514416c95dca3f6f4afe23552b1ce40282205a5ddd7463f999 languageName: node linkType: hard @@ -20959,18 +20884,18 @@ react-native@0.64.0: linkType: hard "terser-webpack-plugin@npm:^5.1.1": - version: 5.1.1 - resolution: "terser-webpack-plugin@npm:5.1.1" + version: 5.1.2 + resolution: "terser-webpack-plugin@npm:5.1.2" dependencies: jest-worker: ^26.6.2 p-limit: ^3.1.0 schema-utils: ^3.0.0 serialize-javascript: ^5.0.1 source-map: ^0.6.1 - terser: ^5.5.1 + terser: ^5.7.0 peerDependencies: webpack: ^5.1.0 - checksum: 8364e53f34764f94aa5c7e74c506d36e130e63cbe91e84cc3f176d712cbc2d3127be8267c88395523e6e39dd45e759704335dc17efab27489a05d9fa148bf05d + checksum: f65229fc603a23b550283da3344adf23a81526e55c830ff437c8e8769fc64f4d48dbc6a7845b3aa85b5ce37eb00834829341d00cad9fa4a65186ebeda6ce61de languageName: node linkType: hard @@ -20987,20 +20912,7 @@ react-native@0.64.0: languageName: node linkType: hard -"terser@npm:^5.0.0": - version: 5.6.0 - resolution: "terser@npm:5.6.0" - dependencies: - commander: ^2.20.0 - source-map: ~0.7.2 - source-map-support: ~0.5.19 - bin: - terser: bin/terser - checksum: dcf3fdf7cd3cb6a4d891d42a9177c28af514d6ba175c5d889e03f3bb1ef0a5291bf5320f7a6d6aafd62227b8986d54d1c3423e77e23b3497d2b6633386ced1ab - languageName: node - linkType: hard - -"terser@npm:^5.5.1": +"terser@npm:^5.0.0, terser@npm:^5.7.0": version: 5.7.0 resolution: "terser@npm:5.7.0" dependencies: @@ -21216,14 +21128,14 @@ react-native@0.64.0: languageName: node linkType: hard -"tough-cookie@npm:^3.0.1": - version: 3.0.1 - resolution: "tough-cookie@npm:3.0.1" +"tough-cookie@npm:^4.0.0": + version: 4.0.0 + resolution: "tough-cookie@npm:4.0.0" dependencies: - ip-regex: ^2.1.0 - psl: ^1.1.28 + psl: ^1.1.33 punycode: ^2.1.1 - checksum: dc1eee69c61a6d5598144ff41c9b5e758207130d92d2b89facad075140a99c10d674a6278764b9edfe8e074cb7840c15e7b786b93d0672875026c2ce5172d774 + universalify: ^0.1.2 + checksum: 161dc4728e2801c1bd3b32d4d14abd2762120d9ed0b96d892720440aa04ed0ad6c425c38195265c74366fe01d8aaf1cc0a31636cb18b82c9b6ce630743210235 languageName: node linkType: hard @@ -21334,14 +21246,7 @@ react-native@0.64.0: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3": - version: 2.1.0 - resolution: "tslib@npm:2.1.0" - checksum: d8f5bdd067611651c6b846c2388f4dc8ba1f5af124e66105f5263d1ad56da17f4b8c6566887ca2f205c5a9758451871ceca87d5d06087af2dca1699c5e33db69 - languageName: node - linkType: hard - -"tslib@npm:^2.1.0": +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0": version: 2.2.0 resolution: "tslib@npm:2.2.0" checksum: 2d35468c470410871c5246e43f12dcb6d0fc363b617c176f26443b9530e5c5ee8448966892a42956168d8f495da7865bda33dfe82c26c91991e28999974a618f @@ -21349,13 +21254,13 @@ react-native@0.64.0: linkType: hard "tsutils@npm:^3.17.1": - version: 3.20.0 - resolution: "tsutils@npm:3.20.0" + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" dependencies: tslib: ^1.8.1 peerDependencies: typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 9245072f9c0d511e3a30c52ec0bfd5ad91495f85d819426ad5283931d09bbdffe515c5c708ba99a4c2424e4576d37200d3e62df66f0027ca29fcfa76794e9610 + checksum: a10e746258ca9c8e5cdd5e363259b4e353a6729b432f1b30455b9d84ff3fd2f12a44fedafd13872518b0e951fa8cdf56a5b35908bc91d5bf5e7d342548427f2e languageName: node linkType: hard @@ -21400,13 +21305,6 @@ react-native@0.64.0: languageName: node linkType: hard -"type-fest@npm:^0.11.0": - version: 0.11.0 - resolution: "type-fest@npm:0.11.0" - checksum: 02e5cadf13590a5724cacf8d9133320efd173f6fb1b695fcb29e56551a315bf0f07ca988a780a1999b7b55bb3eaaa7f37223615207236d393af17bba6749dc95 - languageName: node - linkType: hard - "type-fest@npm:^0.13.1": version: 0.13.1 resolution: "type-fest@npm:0.13.1" @@ -21435,10 +21333,10 @@ react-native@0.64.0: languageName: node linkType: hard -"type-fest@npm:^0.21.1": - version: 0.21.2 - resolution: "type-fest@npm:0.21.2" - checksum: 0049e9800dbe17df86ac444bea682a6bacdb4b0f31a257bc71da7afa64149eebb8e4013171fb9ce8629d99a8a34d3c6cdaed1642d28b3ae77619cd7f331c79a9 +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: bbe5f5c60e8da4e0b0fe290c31821b10c2fd935768802cd659784cb5e792c7a31bb25a89174d3b42dde3bf8eb9d301ede7456a274c1068280b7698438e250f49 languageName: node linkType: hard @@ -21470,6 +21368,13 @@ react-native@0.64.0: languageName: node linkType: hard +"type-fest@npm:^1.1.1": + version: 1.1.1 + resolution: "type-fest@npm:1.1.1" + checksum: 083231eb34b405caaf1a41d3941a6ddc08763c0b89d079ffc634f7ec4e802da717b1e3cd4618c45bc4dc8b243ab34e1d4f09e9b81fe7a4fb6e7d91ab6321d983 + languageName: node + linkType: hard + "type-is@npm:~1.6.17, type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -21517,9 +21422,9 @@ react-native@0.64.0: linkType: hard "ua-parser-js@npm:^0.7.18": - version: 0.7.24 - resolution: "ua-parser-js@npm:0.7.24" - checksum: a15aa0e79de2c46941d80f677d79a8f621a45df581692475f2712023de3dca5f0d13adb0f86df0cad182a842e9a788211b65b23d160bb9925623efa6af7bac11 + version: 0.7.28 + resolution: "ua-parser-js@npm:0.7.28" + checksum: bf65a24eb48d8ec31f6396494bff16b92228e88d7ea15d0bdaa71505313979d2fd176d832418d849a8fa6e119e8dea482f52a2acffe51a3f1810087d295a9adf languageName: node linkType: hard @@ -21536,11 +21441,11 @@ react-native@0.64.0: linkType: hard "uglify-js@npm:^3.1.4": - version: 3.13.0 - resolution: "uglify-js@npm:3.13.0" + version: 3.13.6 + resolution: "uglify-js@npm:3.13.6" bin: uglifyjs: bin/uglifyjs - checksum: bb35cfe5ce9735a9707b33628dbbef02ab4b62bdd3650a02e14dfe42f4ac3fe5e9d616352476605706ab651561abc66ef2877c3dcabf4bde5bf66cecec94f3e8 + checksum: 73138b225359ad4f10f009982c5a6c34521b8254036581b9d0f40cb4a423d7667f1c3460e5f96d6e6d280e89969207c08682d7420feb81c385937ba63c5c7a59 languageName: node linkType: hard @@ -21566,14 +21471,14 @@ react-native@0.64.0: linkType: hard "unbox-primitive@npm:^1.0.0": - version: 1.0.0 - resolution: "unbox-primitive@npm:1.0.0" + version: 1.0.1 + resolution: "unbox-primitive@npm:1.0.1" dependencies: function-bind: ^1.1.1 - has-bigints: ^1.0.0 - has-symbols: ^1.0.0 - which-boxed-primitive: ^1.0.1 - checksum: 25e82f99bb40981f30615644305c757ecefff43d2ef2ac1b80e24f304f3002cd637eecb672bdd07f5fb858a265d96a4b2e983c714cba65498715acf7af23e86b + has-bigints: ^1.0.1 + has-symbols: ^1.0.2 + which-boxed-primitive: ^1.0.2 + checksum: aa944f1ecfec638b841b331383d0b80edc40855271ecc213c1aa736096d8d0b39ba25b64d102f56c597521db9cd3f0ddbcb97a0f760c240ab584e94e457518c1 languageName: node linkType: hard @@ -21780,11 +21685,11 @@ react-native@0.64.0: linkType: hard "unist-util-remove@npm:^2.0.0": - version: 2.0.1 - resolution: "unist-util-remove@npm:2.0.1" + version: 2.1.0 + resolution: "unist-util-remove@npm:2.1.0" dependencies: unist-util-is: ^4.0.0 - checksum: 2f4e0b4c460bfd41b897095a4ccd3503d11f7e142f20e0a8601498ae1484d1d7551e6df70ddd4652cac1eac9cff54b2a919161c8f8c0c561b9fe19bf0bea3af4 + checksum: 2b2321812789ccff6176acab4e9085eada286781b3723b44745ee503e99642c6f029f76e53a3b81936f8b435325196b55095471816094a8262a37376114a0548 languageName: node linkType: hard @@ -21830,7 +21735,7 @@ react-native@0.64.0: languageName: node linkType: hard -"unist-util-visit@npm:2.0.3, unist-util-visit@npm:^2.0.0, unist-util-visit@npm:^2.0.1, unist-util-visit@npm:^2.0.2": +"unist-util-visit@npm:2.0.3, unist-util-visit@npm:^2.0.0, unist-util-visit@npm:^2.0.1, unist-util-visit@npm:^2.0.2, unist-util-visit@npm:^2.0.3": version: 2.0.3 resolution: "unist-util-visit@npm:2.0.3" dependencies: @@ -21857,7 +21762,7 @@ react-native@0.64.0: languageName: node linkType: hard -"universalify@npm:^0.1.0": +"universalify@npm:^0.1.0, universalify@npm:^0.1.2": version: 0.1.2 resolution: "universalify@npm:0.1.2" checksum: 420fc6547357782c700d53e9a92506a8e95345b13e97684c8f9ab75237912ec2ebb6af8ac10d4f7406b7b6bd21c58f6c5c0811414fb0b4091b78b4743fa6806e @@ -21994,7 +21899,7 @@ react-native@0.64.0: languageName: node linkType: hard -"url-parse@npm:^1.4.3, url-parse@npm:^1.4.7": +"url-parse@npm:^1.4.3, url-parse@npm:^1.5.1": version: 1.5.1 resolution: "url-parse@npm:1.5.1" dependencies: @@ -22134,7 +22039,7 @@ react-native@0.64.0: languageName: node linkType: hard -"uuid@npm:^8.3.0": +"uuid@npm:^8.0.0, uuid@npm:^8.3.0": version: 8.3.2 resolution: "uuid@npm:8.3.2" bin: @@ -22151,13 +22056,13 @@ react-native@0.64.0: linkType: hard "v8-to-istanbul@npm:^7.0.0": - version: 7.1.0 - resolution: "v8-to-istanbul@npm:7.1.0" + version: 7.1.2 + resolution: "v8-to-istanbul@npm:7.1.2" dependencies: "@types/istanbul-lib-coverage": ^2.0.1 convert-source-map: ^1.6.0 source-map: ^0.7.3 - checksum: decc2cc896de173adc27e5621f3d7e5d0d4018d6df12cc95c5de2d8eb1a1bab2ed4fe9a4e767dd469b81b3520024b9fec6b9b4beeefbfac2bbeebfc9937bf9ba + checksum: ff653089c952d618b01c5ff1ab4517144240ba0b6193a9e7116d2f19a6990a76f9bdb3e8f31424f556169c3bf29beadb5ddbaa0aded62da9f5ea63116c27c610 languageName: node linkType: hard @@ -22295,17 +22200,17 @@ react-native@0.64.0: linkType: hard "wait-on@npm:^5.2.1": - version: 5.2.1 - resolution: "wait-on@npm:5.2.1" + version: 5.3.0 + resolution: "wait-on@npm:5.3.0" dependencies: axios: ^0.21.1 joi: ^17.3.0 - lodash: ^4.17.20 + lodash: ^4.17.21 minimist: ^1.2.5 rxjs: ^6.6.3 bin: wait-on: bin/wait-on - checksum: 8ba490242333da5bf88d6836d1b5d85e6f784af6cb876546c6c0a0e1672aa2a6d3d263e6a2a64106b25d912f574f1a608933769543da1e38e656f5abfbd22712 + checksum: 405cad859a3ede2b48ebe7a3e39e543adff21333ac3e309b1469bffa71952db0c0920bebabf5d7282e8709bd43c2bab312ed6e764cdae149986b57dc0b263ff9 languageName: node linkType: hard @@ -22387,8 +22292,8 @@ react-native@0.64.0: linkType: hard "webpack-bundle-analyzer@npm:^4.4.0": - version: 4.4.0 - resolution: "webpack-bundle-analyzer@npm:4.4.0" + version: 4.4.2 + resolution: "webpack-bundle-analyzer@npm:4.4.2" dependencies: acorn: ^8.0.4 acorn-walk: ^8.0.0 @@ -22401,7 +22306,7 @@ react-native@0.64.0: ws: ^7.3.1 bin: webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: e92326ec685b452f44713b9f5cffe2b43252595ebd64ec4ff20f098c60633b88ffd567202104d6ecfc129219fb4e2422596cf19efe9f4ab153e876d85aaf7804 + checksum: 3715568f56db36c0c8f8bf420197c3291bb3c9a9de1c0f3b1d91cd81036b5e09a6695023c76b4c918b75ac9f32be54358f6107cadd3666e758f3c4d6ccda34cd languageName: node linkType: hard @@ -22509,8 +22414,8 @@ react-native@0.64.0: linkType: hard "webpack@npm:^5.28.0": - version: 5.36.1 - resolution: "webpack@npm:5.36.1" + version: 5.37.0 + resolution: "webpack@npm:5.37.0" dependencies: "@types/eslint-scope": ^3.7.0 "@types/estree": ^0.0.47 @@ -22540,7 +22445,7 @@ react-native@0.64.0: optional: true bin: webpack: bin/webpack.js - checksum: d68088da31b8db6a55e2952b3fe8aa0603b96e53eeb26c864a3e653918e745b205c02f3e3b21b55b7bbe97e4b245d63b8aacb3a6e17eb71ec85acfc6c32cdc2c + checksum: 50c9ce5d9f8d274aa11a57581a2f21b2305f48a96eb7f380a6dab629392fea2b842764f94e7e91cbc28026d69facd5d1456c843b41ba7508f716ff8caacf4214 languageName: node linkType: hard @@ -22614,18 +22519,18 @@ react-native@0.64.0: languageName: node linkType: hard -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.4.0": - version: 8.4.0 - resolution: "whatwg-url@npm:8.4.0" +"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.4.0, whatwg-url@npm:^8.5.0": + version: 8.5.0 + resolution: "whatwg-url@npm:8.5.0" dependencies: - lodash.sortby: ^4.7.0 + lodash: ^4.7.0 tr46: ^2.0.2 webidl-conversions: ^6.1.0 - checksum: c85dfbedd2554e76d05eba467509db3a0ed5740e3bf1069a10ca302da531d64399693e4952c61be67d119a6b7f634f3ff65fbe59555b30474f849a7e0ce2a4c6 + checksum: a070c4be45bd09e9f1593d678e798fb66cd2cbccd2a604a7453063c68ab4bb80b4a9e2a0a80562264e5963eb589311c6467599fdac9fb6a4112cd786397920e4 languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.1": +"which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" dependencies: @@ -22706,35 +22611,35 @@ react-native@0.64.0: languageName: node linkType: hard -"workbox-background-sync@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-background-sync@npm:6.1.1" +"workbox-background-sync@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-background-sync@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: 5e68e0ef76898e6bc99da8ae09fb78e984855a6eb22085940baa15bd9a02cb439bbc89036c6d88266e93ae94d0f2372d7042c6833c077d2efacb620e00200f85 + workbox-core: ^6.1.5 + checksum: ddd36cf93580da2742c4a5c464ca60ba1d10c679cb28910bcfff61cb90463ce21da231fb49da36d47a87b72c1bb1fa17ee1db9dd34ac13179a0a48474c33c273 languageName: node linkType: hard -"workbox-broadcast-update@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-broadcast-update@npm:6.1.1" +"workbox-broadcast-update@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-broadcast-update@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: 4da887161507322ea950cf0301b5b7c2783729c03fe9670e95a2ecb354e935e7e870b9db80690bf8b309a10f32ac93ef7831827daefbbfe143942038d1855a59 + workbox-core: ^6.1.5 + checksum: e1567feb17ff3ef087fa8e529a8a63af7e4d7dc14e23e38718e9c7fde748e06b577ce603a0d30c436e5f18c4a0631451f4734e40fd898f2523e62451e7ee066e languageName: node linkType: hard "workbox-build@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-build@npm:6.1.1" + version: 6.1.5 + resolution: "workbox-build@npm:6.1.5" dependencies: "@babel/core": ^7.11.1 "@babel/preset-env": ^7.11.0 "@babel/runtime": ^7.11.2 "@hapi/joi": ^16.1.8 "@rollup/plugin-babel": ^5.2.0 - "@rollup/plugin-node-resolve": ^9.0.0 - "@rollup/plugin-replace": ^2.3.3 + "@rollup/plugin-node-resolve": ^11.2.1 + "@rollup/plugin-replace": ^2.4.1 "@surma/rollup-plugin-off-main-thread": ^1.4.1 common-tags: ^1.8.0 fast-json-stable-stringify: ^2.1.0 @@ -22742,7 +22647,7 @@ react-native@0.64.0: glob: ^7.1.6 lodash: ^4.17.20 pretty-bytes: ^5.3.0 - rollup: ^2.25.0 + rollup: ^2.43.1 rollup-plugin-terser: ^7.0.0 source-map: ^0.8.0-beta.0 source-map-url: ^0.4.0 @@ -22750,146 +22655,146 @@ react-native@0.64.0: strip-comments: ^2.0.1 tempy: ^0.6.0 upath: ^1.2.0 - workbox-background-sync: ^6.1.1 - workbox-broadcast-update: ^6.1.1 - workbox-cacheable-response: ^6.1.1 - workbox-core: ^6.1.1 - workbox-expiration: ^6.1.1 - workbox-google-analytics: ^6.1.1 - workbox-navigation-preload: ^6.1.1 - workbox-precaching: ^6.1.1 - workbox-range-requests: ^6.1.1 - workbox-recipes: ^6.1.1 - workbox-routing: ^6.1.1 - workbox-strategies: ^6.1.1 - workbox-streams: ^6.1.1 - workbox-sw: ^6.1.1 - workbox-window: ^6.1.1 - checksum: 67c1d4acd387f8f89f534261a28264ab1f736ad53ea3b7172094374a2673aa8ea06951ca3922efb46d65d40699028352eac0c081a1cf417b759bdefee77155c7 + workbox-background-sync: ^6.1.5 + workbox-broadcast-update: ^6.1.5 + workbox-cacheable-response: ^6.1.5 + workbox-core: ^6.1.5 + workbox-expiration: ^6.1.5 + workbox-google-analytics: ^6.1.5 + workbox-navigation-preload: ^6.1.5 + workbox-precaching: ^6.1.5 + workbox-range-requests: ^6.1.5 + workbox-recipes: ^6.1.5 + workbox-routing: ^6.1.5 + workbox-strategies: ^6.1.5 + workbox-streams: ^6.1.5 + workbox-sw: ^6.1.5 + workbox-window: ^6.1.5 + checksum: b6ab71af17a21c7286116f5ddbaff542bd21c98cab989cbc0182f83b96a2c592fea54455cf2b402048f73c746ae95add63b638886f898c59ca6623609aa8f6c9 languageName: node linkType: hard -"workbox-cacheable-response@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-cacheable-response@npm:6.1.1" +"workbox-cacheable-response@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-cacheable-response@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: e900def5dd15f0965a7d57240609678f2a22a118d8db7d12d766ddcecc275cd59ab834237c94b3c5491f00f9490e231b42874c45d32f700d9202e685d7e09a92 + workbox-core: ^6.1.5 + checksum: feeff4a1ec51fc9a6f8ca9f45357d22dd4202d5f6229713e14bad843eda5821142c088628acbe083b0c200d675151a62dd49d96ec9c2f94e48bc106e1162f162 languageName: node linkType: hard -"workbox-core@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-core@npm:6.1.1" - checksum: 56afbe1c75e2a43b17bbd26e3bdb5acdbb33ffc55975d38b9e9b2d9156bc2c11090da2d3093b7840e2fe0d318cd602e860e0195f02bafef385fb38a748e3fa22 +"workbox-core@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-core@npm:6.1.5" + checksum: 46657ad47d159b90af8c0c34837487babff0a1b03ad23bac0830f7fa5aa3cefdb4c9bb26abd4617a2c7624dd059972ae288ccc890b7b36e0de4792a1de6faf66 languageName: node linkType: hard -"workbox-expiration@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-expiration@npm:6.1.1" +"workbox-expiration@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-expiration@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: 121ed1a3362a7d0bf8f688d8274b53da8c458aae5ed13e7d52953bd63f109370748d6f9185c0ec8a521b039da00e43fcc2b85d21775756f8eaa5cc24ab7978b2 + workbox-core: ^6.1.5 + checksum: fc702ae031077bf51f71128a59db619c9b1b8a73c444f98c37cd306d7f95c31ef4b48f1a3d6b8ce03e34c679d696a8a9111a5b982a5eb7be2816aabe58433bbe languageName: node linkType: hard -"workbox-google-analytics@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-google-analytics@npm:6.1.1" +"workbox-google-analytics@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-google-analytics@npm:6.1.5" dependencies: - workbox-background-sync: ^6.1.1 - workbox-core: ^6.1.1 - workbox-routing: ^6.1.1 - workbox-strategies: ^6.1.1 - checksum: 2f000ceff9889a5afb377f56e718a620e45f8fc8ccd8b8390b24e9327e4c4ecbfb8f5d5d83d857457ce695bf204c37975d4e59232663dfbf334f0d3fedaa7e37 + workbox-background-sync: ^6.1.5 + workbox-core: ^6.1.5 + workbox-routing: ^6.1.5 + workbox-strategies: ^6.1.5 + checksum: 1da04758fc9d82ce688700870390a8e27f76466dde200b2a4c0206af9a38001c2c1213522020e6749422b908f24774abd7f1cbc50565cb5732cc0fed2fff6fae languageName: node linkType: hard -"workbox-navigation-preload@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-navigation-preload@npm:6.1.1" +"workbox-navigation-preload@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-navigation-preload@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: fdce8c2deb3eddd8106c9be4374d0a64c28ca58528e4ea623d19f910839085b080b23ddf5b554b2cd28bffe1428ab63beff2405a7adbbf8719654fcf118b2f0b + workbox-core: ^6.1.5 + checksum: 6656d01c5aef2f0cb1900587ad567875e8f768adf9b3baf229c12b3360a84bd49fbfc99d20de6c9d4fdc2f250c3e9beff471a31fa87bbca61be5a8757a12187b languageName: node linkType: hard -"workbox-precaching@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-precaching@npm:6.1.1" +"workbox-precaching@npm:^6.1.1, workbox-precaching@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-precaching@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - workbox-routing: ^6.1.1 - workbox-strategies: ^6.1.1 - checksum: 597acf788299ad38c22fb9bbabc254646b083a94b3dfbb8efc2ea47dd95e9305dc55f557a0fe7672087415cfe02a641ac4874365a185365b2182cd1449c106c8 + workbox-core: ^6.1.5 + workbox-routing: ^6.1.5 + workbox-strategies: ^6.1.5 + checksum: 7326e1be53e463c1c79149336c63df43103abf5e627c9deec284723abf9d2ccf4410e21b58a2a4e7fadc6285bd4e4f77d394de01100e3a8d7c8b020e8c8e8be3 languageName: node linkType: hard -"workbox-range-requests@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-range-requests@npm:6.1.1" +"workbox-range-requests@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-range-requests@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: f7537729848da2591bfe4b29953e27085d23eba7a697f98c58a24a7791914c497a629023a5ea2e29824cf3ec481bbc7f21ad20a063eda729d9330694f455ea51 + workbox-core: ^6.1.5 + checksum: f6492f549b2b22843ff5ecc933ea86ac283d5e3b585f127af7c78c40338d9b109a45793059823e84163840267786335ae09871b9ef609415aa54b748413af6fd languageName: node linkType: hard -"workbox-recipes@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-recipes@npm:6.1.1" +"workbox-recipes@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-recipes@npm:6.1.5" dependencies: - workbox-cacheable-response: ^6.1.1 - workbox-core: ^6.1.1 - workbox-expiration: ^6.1.1 - workbox-precaching: ^6.1.1 - workbox-routing: ^6.1.1 - workbox-strategies: ^6.1.1 - checksum: 34fba6123bffd102a2078f4a4a6706867eed87032facc09157d988de0bdad3d29289dd15bf11aba175d2716a3f84f9cfe5c30b4eefdd0007c810560ae6a4e9c9 + workbox-cacheable-response: ^6.1.5 + workbox-core: ^6.1.5 + workbox-expiration: ^6.1.5 + workbox-precaching: ^6.1.5 + workbox-routing: ^6.1.5 + workbox-strategies: ^6.1.5 + checksum: cf88d4442ed67b78494f02a55fcf2e79e9d58ab3fd9298ef8cda977a932d86740a0bc51c6f0dd910ab8c528db518e5fbcccea2e5e9d43a52c91089c7453576c2 languageName: node linkType: hard -"workbox-routing@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-routing@npm:6.1.1" +"workbox-routing@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-routing@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: 2749c44dc02e7890a12860d610c5da7fa983505c3df54f9ec43a77101be9d9f8943fefc59393c5aed99b918ca0959fd48e384427fa52c686b771d9884cc504e5 + workbox-core: ^6.1.5 + checksum: fe7caa590cb99c35f34b4b3125d2d518a603ecf04a14bc62edeca3b731a0fc2d53c08ef1384f21e8cfa6237bba0bcc8bff1994cdf2397ff23a9dc687380777e0 languageName: node linkType: hard -"workbox-strategies@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-strategies@npm:6.1.1" +"workbox-strategies@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-strategies@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: 490e7dd12984c76a6e75be5cfd528731b7372972f2614db1c8a3821bc6d922e15628edb8a2d730dbc8d6882ea8220f8fa28c1f816bdef59b809444276d78a43e + workbox-core: ^6.1.5 + checksum: ba1902aa5b426c44cd294b4f07c0a924d1327f8f755d88dfd5f67db9c32022cdb625a92190937db84e1b7cb111116179c688feb726bb3e13cdb4df1d4c220afa languageName: node linkType: hard -"workbox-streams@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-streams@npm:6.1.1" +"workbox-streams@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-streams@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - workbox-routing: ^6.1.1 - checksum: 4a549a8743e527dc14d47d4730b189901bc8be920dc021b7bb5e7ade593d2f4c8ae86f401dd7c64e2a1e7dba4e6d9eae5d2c9abb1cc29b3a307607eb8c534e45 + workbox-core: ^6.1.5 + workbox-routing: ^6.1.5 + checksum: 700d81d922acfbd9e99ebedeefcfa500a45e40fbd347a458a755d0e76dc373a79337712f12760b4e69fe3de60f945290d31fac90719422f882eebf01bf5412d5 languageName: node linkType: hard -"workbox-sw@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-sw@npm:6.1.1" - checksum: 5a27f77ff4cb395337b4ac5ac4285e58d6eab83908f99bbf7500f370c6ec182e43a3626a093024a0e5843c8f12c84a5c1ecbb1ec12dd4d996848551f70b8b416 +"workbox-sw@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-sw@npm:6.1.5" + checksum: e5eade3c2de60994df4ceb1d302ae66eb1e9f27682ff9123c8cbe6c175d18ab84eaee45b82e034d3d11697fc25b39f2d6ee8ff5f2542ae0de258fe3945747121 languageName: node linkType: hard -"workbox-window@npm:^6.1.1": - version: 6.1.1 - resolution: "workbox-window@npm:6.1.1" +"workbox-window@npm:^6.1.1, workbox-window@npm:^6.1.5": + version: 6.1.5 + resolution: "workbox-window@npm:6.1.5" dependencies: - workbox-core: ^6.1.1 - checksum: 9d570945614907cfd5be62d1958f813909842e0d7045ca364da077d4f715d0334a1372fdf979d9c856f42b0915e5e19a65cefeb0e9cfe7c3e2f23265498660a8 + workbox-core: ^6.1.5 + checksum: 814b8d89346fa9285c9df3ec7f67ce7f45aed3cc265ccf29856614d1ccb5f026e76beb058fcbdbbd45e148e03d4d09f9f15b2f5df15f6bab0c28cd00b92e784a languageName: node linkType: hard @@ -23032,9 +22937,9 @@ react-native@0.64.0: languageName: node linkType: hard -"ws@npm:^7, ws@npm:^7.2.3, ws@npm:^7.3.1": - version: 7.4.4 - resolution: "ws@npm:7.4.4" +"ws@npm:^7, ws@npm:^7.3.1, ws@npm:^7.4.4": + version: 7.4.5 + resolution: "ws@npm:7.4.5" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -23043,7 +22948,7 @@ react-native@0.64.0: optional: true utf-8-validate: optional: true - checksum: ad08761ed753cdd3f7172e9a9efc7d74e7e196623cace2380e5f74ff0abd16196e03223bd4148a34278dcbc653ee3841994635419281cbf303b3f22c589e2ec4 + checksum: 20731aa1075336b94677f6741b674469c3c7fce9b70115bb535827c7c108a9d714f0b38ce39289b63c652870f9801afaf096f8aab32da96be62d919e80e4ed32 languageName: node linkType: hard @@ -23119,10 +23024,10 @@ react-native@0.64.0: languageName: node linkType: hard -"xmldom@npm:0.1.x": - version: 0.1.31 - resolution: "xmldom@npm:0.1.31" - checksum: 69b741952c32338c915a74d3a6edc37bade58f93ff3722704cc6a10461c62cb5d6d1bcf2e7a3db6e3ff713f15c7e43089e54dfa369d471898905c489bd8e397b +"xmldom@npm:^0.5.0": + version: 0.5.0 + resolution: "xmldom@npm:0.5.0" + checksum: da2d23fe8e562331983788d7b711a310b94f51455c7339deaceb4e271a26f65598c7f0ea3cb5d32bc6701f920837639f83f597951e8cca885f45885ff5dd1ae2 languageName: node linkType: hard @@ -23134,16 +23039,16 @@ react-native@0.64.0: linkType: hard "y18n@npm:^4.0.0": - version: 4.0.1 - resolution: "y18n@npm:4.0.1" - checksum: e589620d8d668d696e74730a83731a36a8d782c50379386b142e5b8287388a6ebaf28528e84201c68c206629faed71362c79b201b398eb0c69aa1737635678dd + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: e6d08e9d148e71d620acbca1c10f4db86a3a960527a47e8fbe732ea8246076d0a54e1f6adf0f8f8fdeacb87c23dea52382f4243bf736d36c83bb7f2ee0ea7fcd languageName: node linkType: hard "y18n@npm:^5.0.5": - version: 5.0.5 - resolution: "y18n@npm:5.0.5" - checksum: a7d41b0cccca1c98ebab270a944df48eb3b5352d3be0affb8afc8369823f6aa97a5fbead2c5b35e59a5650cb786b2b37627b45be5ff31f02a80dd3b881aceb17 + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 56275bfa72a8a585c4d2905b086862fb881dfe7871adcefe4ecf4c1a6a78c6389b459b427c0a8672ccdb09731a78143acc71f0bcc8dc8d8427869fafe7f18b95 languageName: node linkType: hard @@ -23162,9 +23067,9 @@ react-native@0.64.0: linkType: hard "yaml@npm:^1.10.0": - version: 1.10.0 - resolution: "yaml@npm:1.10.0" - checksum: d4cc9f9724f8d0aebc2cf52e4e6aa7059f12d50deb54b5225d103462fb2af36e5c0bb419101ca4b1f0cd3b4db9e4139cf2c690e863ac6227648d39d6f4e2522c + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 8d72062ea3dbfd8fae3d6ddd5b741c2aeb5835a31b0719bf14fac71dd84adde0829763d6fbac46387309da00af1440194c796da5efc349b0baf9de39d82ae69e languageName: node linkType: hard @@ -23196,9 +23101,9 @@ react-native@0.64.0: linkType: hard "yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": - version: 20.2.6 - resolution: "yargs-parser@npm:20.2.6" - checksum: ed21fc0f35290dc9ce1714e6a3e656ca1901ff59432f3dd43668244879b2cca6acff0bff66df9cfbcd934d4db6e98e57cae6def2700ca823e85449f2fb664660 + version: 20.2.7 + resolution: "yargs-parser@npm:20.2.7" + checksum: 124e7f1c24c9609d5d1c343f14b83289634e19bb43770708ebb6a19852647aaa0f89edcbf0e5b18a21bee77f54513ab5051518b2950cda69eb607a7c6251aa4f languageName: node linkType: hard From 4fa3a0ba8da8ff13282235d1eb107457038a27ff Mon Sep 17 00:00:00 2001 From: David Zilburg Date: Thu, 20 May 2021 08:40:22 -0400 Subject: [PATCH 09/65] feat: custom haste (#11107) --- CHANGELOG.md | 1 + docs/Configuration.md | 2 + e2e/__tests__/customHaste.test.ts | 30 ++++ .../__tests__/hasteExample.test.js | 18 +++ .../__tests__/hasteExampleHelper.js | 15 ++ e2e/custom-haste-map/hasteMap.js | 139 ++++++++++++++++++ e2e/custom-haste-map/package.json | 7 + packages/jest-config/src/ValidConfig.ts | 1 + packages/jest-haste-map/src/ModuleMap.ts | 15 +- packages/jest-haste-map/src/index.ts | 27 +++- packages/jest-haste-map/src/types.ts | 45 ++++++ packages/jest-resolve/src/index.ts | 6 +- packages/jest-runner/src/testWorker.ts | 6 +- .../src/__tests__/Runtime-statics.test.js | 4 +- packages/jest-runtime/src/index.ts | 8 +- .../src/__tests__/test_sequencer.test.js | 2 + packages/jest-test-sequencer/src/index.ts | 3 +- .../jest-transform/src/ScriptTransformer.ts | 3 +- .../src/__tests__/ScriptTransformer.test.ts | 7 +- packages/jest-types/src/Config.ts | 2 + 20 files changed, 314 insertions(+), 27 deletions(-) create mode 100644 e2e/__tests__/customHaste.test.ts create mode 100644 e2e/custom-haste-map/__tests__/hasteExample.test.js create mode 100644 e2e/custom-haste-map/__tests__/hasteExampleHelper.js create mode 100644 e2e/custom-haste-map/hasteMap.js create mode 100644 e2e/custom-haste-map/package.json diff --git a/CHANGELOG.md b/CHANGELOG.md index a910aad15429..a5be224c3b4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Features +- `[jest-config, jest-haste-map, jest-resolve, jest-runner, jest-runtime, jest-test-sequencer, jest-transform, jest-types]` [**BREAKING**] Add custom HasteMap class implementation config option ([#11107](https://github.com/facebook/jest/pull/11107)) - `[babel-jest]` Add async transformation ([#11192](https://github.com/facebook/jest/pull/11192)) - `[jest-changed-files]` Use '--' to separate paths from revisions ([#11160](https://github.com/facebook/jest/pull/11160)) - `[jest-circus]` [**BREAKING**] Fail tests when multiple `done()` calls are made ([#10624](https://github.com/facebook/jest/pull/10624)) diff --git a/docs/Configuration.md b/docs/Configuration.md index b2ba31e0d322..5d4c0eee8ca2 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -514,6 +514,8 @@ type HasteConfig = { platforms?: Array; /** Whether to throw on error on module collision. */ throwOnModuleCollision?: boolean; + /** Custom HasteMap module */ + hasteMapModulePath?: string; }; ``` diff --git a/e2e/__tests__/customHaste.test.ts b/e2e/__tests__/customHaste.test.ts new file mode 100644 index 000000000000..4085381b79c4 --- /dev/null +++ b/e2e/__tests__/customHaste.test.ts @@ -0,0 +1,30 @@ +/** + * 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 * as path from 'path'; +import runJest from '../runJest'; + +describe('Custom Haste Integration', () => { + test('valid test with fake module resolutions', () => { + const config = { + haste: { + hasteMapModulePath: path.resolve( + __dirname, + '..', + 'custom-haste-map/hasteMap.js', + ), + }, + }; + + const {exitCode} = runJest('custom-haste-map', [ + '--config', + JSON.stringify(config), + 'hasteExample.test.js', + ]); + expect(exitCode).toBe(0); + }); +}); diff --git a/e2e/custom-haste-map/__tests__/hasteExample.test.js b/e2e/custom-haste-map/__tests__/hasteExample.test.js new file mode 100644 index 000000000000..03942bad0799 --- /dev/null +++ b/e2e/custom-haste-map/__tests__/hasteExample.test.js @@ -0,0 +1,18 @@ +/** + * 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. + * + */ + +'use strict'; + +const add = require('fakeModuleName'); + +describe('Custom Haste', () => { + test('adds ok', () => { + expect(true).toBe(true); + expect(add(1, 2)).toBe(3); + }); +}); diff --git a/e2e/custom-haste-map/__tests__/hasteExampleHelper.js b/e2e/custom-haste-map/__tests__/hasteExampleHelper.js new file mode 100644 index 000000000000..6a583e26591b --- /dev/null +++ b/e2e/custom-haste-map/__tests__/hasteExampleHelper.js @@ -0,0 +1,15 @@ +/** + * 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. + * + */ + +'use strict'; + +function add(a, b) { + return a + b; +} + +module.exports = add; diff --git a/e2e/custom-haste-map/hasteMap.js b/e2e/custom-haste-map/hasteMap.js new file mode 100644 index 000000000000..a7a5bcfb99e4 --- /dev/null +++ b/e2e/custom-haste-map/hasteMap.js @@ -0,0 +1,139 @@ +/** + * 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. + */ + +'use strict'; + +const path = require('path'); +const fakeFile = { + file: path.resolve(__dirname, '__tests__/hasteExampleHelper.js'), + moduleName: 'fakeModuleName', + sha1: 'fakeSha1', +}; + +const fakeJSON = 'fakeJSON'; + +const testPath = path.resolve(__dirname, '__tests__/hasteExample.test.js'); + +const allFiles = [fakeFile.file, testPath]; + +class HasteFS { + getModuleName(file) { + if (file === fakeFile.file) { + return fakeFile.moduleName; + } + return null; + } + + getSize(file) { + return null; + } + + getDependencies(file) { + if (file === testPath) { + return fakeFile.file; + } + return []; + } + + getSha1(file) { + if (file === fakeFile.file) { + return fakeFile.sha1; + } + return null; + } + + exists(file) { + return allFiles.includes(file); + } + + getAllFiles() { + return allFiles; + } + + getFileIterator() { + return allFiles; + } + + getAbsoluteFileIterator() { + return allFiles; + } + + matchFiles(pattern) { + if (!(pattern instanceof RegExp)) { + pattern = new RegExp(pattern); + } + const files = []; + for (const file of this.getAbsoluteFileIterator()) { + if (pattern.test(file)) { + files.push(file); + } + } + return files; + } + + matchFilesWithGlob(globs, root) { + return []; + } +} + +class ModuleMap { + getModule(name, platform, supportsNativePlatform, type) { + if (name === fakeFile.moduleName) { + return fakeFile.file; + } + return null; + } + + getPackage() { + return null; + } + + getMockModule() { + return undefined; + } + + getRawModuleMap() { + return {}; + } + + toJSON() { + return fakeJSON; + } +} + +class HasteMap { + constructor(options) { + this._cachePath = HasteMap.getCacheFilePath( + options.cacheDirectory, + options.name, + ); + } + + async build() { + return { + hasteFS: new HasteFS(), + moduleMap: new ModuleMap(), + }; + } + + static getCacheFilePath(tmpdir, name) { + return path.join(tmpdir, name); + } + + getCacheFilePath() { + return this._cachePath; + } + + static getModuleMapFromJSON(json) { + if (json === fakeJSON) { + return new ModuleMap(); + } + throw new Error('Failed to parse serialized module map'); + } +} + +module.exports = HasteMap; diff --git a/e2e/custom-haste-map/package.json b/e2e/custom-haste-map/package.json new file mode 100644 index 000000000000..9adbf08c90b5 --- /dev/null +++ b/e2e/custom-haste-map/package.json @@ -0,0 +1,7 @@ +{ + "jest": { + "haste": { + "hasteMapModulePath": "/hasteMap.js" + } + } +} diff --git a/packages/jest-config/src/ValidConfig.ts b/packages/jest-config/src/ValidConfig.ts index 9fc46708c47e..24fa9cffbe5c 100644 --- a/packages/jest-config/src/ValidConfig.ts +++ b/packages/jest-config/src/ValidConfig.ts @@ -61,6 +61,7 @@ const initialOptions: Config.InitialOptions = { enableSymlinks: false, forceNodeFilesystemAPI: false, hasteImplModulePath: '/haste_impl.js', + hasteMapModulePath: '', platforms: ['ios', 'android'], throwOnModuleCollision: false, }, diff --git a/packages/jest-haste-map/src/ModuleMap.ts b/packages/jest-haste-map/src/ModuleMap.ts index 1501e4df5df4..81ca36bc9709 100644 --- a/packages/jest-haste-map/src/ModuleMap.ts +++ b/packages/jest-haste-map/src/ModuleMap.ts @@ -11,25 +11,16 @@ import * as fastPath from './lib/fast_path'; import type { DuplicatesSet, HTypeValue, - MockData, - ModuleMapData, + IModuleMap, ModuleMetaData, RawModuleMap, + SerializableModuleMap, } from './types'; const EMPTY_OBJ: Record = {}; const EMPTY_MAP = new Map(); -type ValueType = T extends Map ? V : never; - -export type SerializableModuleMap = { - duplicates: ReadonlyArray<[string, [string, [string, [string, number]]]]>; - map: ReadonlyArray<[string, ValueType]>; - mocks: ReadonlyArray<[string, ValueType]>; - rootDir: Config.Path; -}; - -export default class ModuleMap { +export default class ModuleMap implements IModuleMap { static DuplicateHasteCandidatesError: typeof DuplicateHasteCandidatesError; private readonly _raw: RawModuleMap; private json: SerializableModuleMap | undefined; diff --git a/packages/jest-haste-map/src/index.ts b/packages/jest-haste-map/src/index.ts index 5969c12df484..213e623a4cfe 100644 --- a/packages/jest-haste-map/src/index.ts +++ b/packages/jest-haste-map/src/index.ts @@ -32,12 +32,14 @@ import type { EventsQueue, FileData, FileMetaData, + HasteMapStatic, HasteRegExp, InternalHasteMap, HasteMap as InternalHasteMapObject, MockData, ModuleMapData, ModuleMetaData, + SerializableModuleMap, WorkerMetadata, } from './types'; import FSEventsWatcher = require('./watchers/FSEventsWatcher'); @@ -60,6 +62,7 @@ type Options = { extensions: Array; forceNodeFilesystemAPI?: boolean; hasteImplModulePath?: string; + hasteMapModulePath?: string; ignorePattern?: HasteRegExp; maxWorkers: number; mocksPattern?: string; @@ -106,7 +109,8 @@ type Watcher = { type WorkerInterface = {worker: typeof worker; getSha1: typeof getSha1}; export {default as ModuleMap} from './ModuleMap'; -export type {SerializableModuleMap} from './ModuleMap'; +export type {SerializableModuleMap} from './types'; +export type {IModuleMap} from './types'; export type {default as FS} from './HasteFS'; export type {ChangeEvent, HasteMap as HasteMapObject} from './types'; @@ -219,7 +223,22 @@ export default class HasteMap extends EventEmitter { private _watchers: Array; private _worker: WorkerInterface | null; - constructor(options: Options) { + static getStatic(config: Config.ProjectConfig): HasteMapStatic { + if (config.haste.hasteMapModulePath) { + return require(config.haste.hasteMapModulePath); + } + return HasteMap; + } + + static create(options: Options): HasteMap { + if (options.hasteMapModulePath) { + const CustomHasteMap = require(options.hasteMapModulePath); + return new CustomHasteMap(options); + } + return new HasteMap(options); + } + + private constructor(options: Options) { super(); this._options = { cacheDirectory: options.cacheDirectory || tmpdir(), @@ -324,6 +343,10 @@ export default class HasteMap extends EventEmitter { ); } + static getModuleMapFromJSON(json: SerializableModuleMap): HasteModuleMap { + return HasteModuleMap.fromJSON(json); + } + getCacheFilePath(): string { return this._cachePath; } diff --git a/packages/jest-haste-map/src/types.ts b/packages/jest-haste-map/src/types.ts index 106f209d9c68..27eec1928d4b 100644 --- a/packages/jest-haste-map/src/types.ts +++ b/packages/jest-haste-map/src/types.ts @@ -10,6 +10,45 @@ import type {Config} from '@jest/types'; import type HasteFS from './HasteFS'; import type ModuleMap from './ModuleMap'; +type ValueType = T extends Map ? V : never; + +export type SerializableModuleMap = { + duplicates: ReadonlyArray<[string, [string, [string, [string, number]]]]>; + map: ReadonlyArray<[string, ValueType]>; + mocks: ReadonlyArray<[string, ValueType]>; + rootDir: Config.Path; +}; + +export interface IModuleMap { + getModule( + name: string, + platform?: string | null, + supportsNativePlatform?: boolean | null, + type?: HTypeValue | null, + ): Config.Path | null; + + getPackage( + name: string, + platform: string | null | undefined, + _supportsNativePlatform: boolean | null, + ): Config.Path | null; + + getMockModule(name: string): Config.Path | undefined; + + getRawModuleMap(): RawModuleMap; + + toJSON(): S; +} + +export type HasteMapStatic = { + getCacheFilePath( + tmpdir: Config.Path, + name: string, + ...extra: Array + ): string; + getModuleMapFromJSON(json: S): IModuleMap; +}; + export type IgnoreMatcher = (item: string) => boolean; export type WorkerMessage = { @@ -71,6 +110,12 @@ export type InternalHasteMap = { mocks: MockData; }; +export type IHasteMap = { + hasteFS: HasteFS; + moduleMap: IModuleMap; + __hasteMapForTest?: InternalHasteMap | null; +}; + export type HasteMap = { hasteFS: HasteFS; moduleMap: ModuleMap; diff --git a/packages/jest-resolve/src/index.ts b/packages/jest-resolve/src/index.ts index 2a76b92238b7..a492cf198978 100644 --- a/packages/jest-resolve/src/index.ts +++ b/packages/jest-resolve/src/index.ts @@ -11,7 +11,7 @@ import * as path from 'path'; import chalk = require('chalk'); import slash = require('slash'); import type {Config} from '@jest/types'; -import type {ModuleMap} from 'jest-haste-map'; +import type {IModuleMap} from 'jest-haste-map'; import {tryRealpath} from 'jest-util'; import ModuleNotFoundError from './ModuleNotFoundError'; import defaultResolver, {clearDefaultResolverCache} from './defaultResolver'; @@ -50,13 +50,13 @@ const nodePaths = NODE_PATH export default class Resolver { private readonly _options: ResolverConfig; - private readonly _moduleMap: ModuleMap; + private readonly _moduleMap: IModuleMap; private readonly _moduleIDCache: Map; private readonly _moduleNameCache: Map; private readonly _modulePathCache: Map>; private readonly _supportsNativePlatform: boolean; - constructor(moduleMap: ModuleMap, options: ResolverConfig) { + constructor(moduleMap: IModuleMap, options: ResolverConfig) { this._options = { defaultPlatform: options.defaultPlatform, extensions: options.extensions, diff --git a/packages/jest-runner/src/testWorker.ts b/packages/jest-runner/src/testWorker.ts index 919eeccd9c8f..37a0a6881644 100644 --- a/packages/jest-runner/src/testWorker.ts +++ b/packages/jest-runner/src/testWorker.ts @@ -9,7 +9,7 @@ import exit = require('exit'); import type {SerializableError, TestResult} from '@jest/test-result'; import type {Config} from '@jest/types'; -import {ModuleMap, SerializableModuleMap} from 'jest-haste-map'; +import HasteMap, {SerializableModuleMap} from 'jest-haste-map'; import {separateMessageFromStack} from 'jest-message-util'; import type Resolver from 'jest-resolve'; import Runtime from 'jest-runtime'; @@ -74,7 +74,9 @@ export function setup(setupData: { config, serializableModuleMap, } of setupData.serializableResolvers) { - const moduleMap = ModuleMap.fromJSON(serializableModuleMap); + const moduleMap = HasteMap.getStatic(config).getModuleMapFromJSON( + serializableModuleMap, + ); resolvers.set(config.name, Runtime.createResolver(config, moduleMap)); } } diff --git a/packages/jest-runtime/src/__tests__/Runtime-statics.test.js b/packages/jest-runtime/src/__tests__/Runtime-statics.test.js index 34d640f1cd97..5252fc5bd736 100644 --- a/packages/jest-runtime/src/__tests__/Runtime-statics.test.js +++ b/packages/jest-runtime/src/__tests__/Runtime-statics.test.js @@ -26,7 +26,7 @@ describe('Runtime statics', () => { test('Runtime.createHasteMap passes correct ignore files to HasteMap', () => { Runtime.createHasteMap(projectConfig, options); - expect(HasteMap).toBeCalledWith( + expect(HasteMap.create).toBeCalledWith( expect.objectContaining({ ignorePattern: /\/root\/ignore-1|\/root\/ignore-2/, }), @@ -35,7 +35,7 @@ describe('Runtime statics', () => { test('Runtime.createHasteMap passes correct ignore files to HasteMap in watch mode', () => { Runtime.createHasteMap(projectConfig, {...options, watch: true}); - expect(HasteMap).toBeCalledWith( + expect(HasteMap.create).toBeCalledWith( expect.objectContaining({ ignorePattern: /\/root\/ignore-1|\/root\/ignore-2|\/watch-root\/ignore-1/, diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index 759b66bb39b5..e3de7866eae9 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -42,7 +42,8 @@ import { shouldInstrument, } from '@jest/transform'; import type {Config, Global} from '@jest/types'; -import HasteMap, {ModuleMap} from 'jest-haste-map'; +import type {IModuleMap} from 'jest-haste-map'; +import HasteMap from 'jest-haste-map'; import {formatStackTrace, separateMessageFromStack} from 'jest-message-util'; import type {MockFunctionMetadata, ModuleMocker} from 'jest-mock'; import {escapePathForRegex} from 'jest-regex-util'; @@ -314,7 +315,7 @@ export default class Runtime { ? new RegExp(ignorePatternParts.join('|')) : undefined; - return new HasteMap({ + return HasteMap.create({ cacheDirectory: config.cacheDirectory, computeSha1: config.haste.computeSha1, console: options?.console, @@ -323,6 +324,7 @@ export default class Runtime { extensions: [Snapshot.EXTENSION].concat(config.moduleFileExtensions), forceNodeFilesystemAPI: config.haste.forceNodeFilesystemAPI, hasteImplModulePath: config.haste.hasteImplModulePath, + hasteMapModulePath: config.haste.hasteMapModulePath, ignorePattern, maxWorkers: options?.maxWorkers || 1, mocksPattern: escapePathForRegex(path.sep + '__mocks__' + path.sep), @@ -340,7 +342,7 @@ export default class Runtime { static createResolver( config: Config.ProjectConfig, - moduleMap: ModuleMap, + moduleMap: IModuleMap, ): Resolver { return new Resolver(moduleMap, { defaultPlatform: config.haste.defaultPlatform, diff --git a/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js b/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js index 65653fd6ee54..7950bc02a324 100644 --- a/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js +++ b/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js @@ -23,6 +23,7 @@ const context = { config: { cache: true, cacheDirectory: '/cache', + haste: {}, name: 'test', }, hasteFS: { @@ -34,6 +35,7 @@ const secondContext = { config: { cache: true, cacheDirectory: '/cache2', + haste: {}, name: 'test2', }, hasteFS: { diff --git a/packages/jest-test-sequencer/src/index.ts b/packages/jest-test-sequencer/src/index.ts index 8904c8428399..8038771a3047 100644 --- a/packages/jest-test-sequencer/src/index.ts +++ b/packages/jest-test-sequencer/src/index.ts @@ -36,7 +36,8 @@ export default class TestSequencer { _getCachePath(context: Context): string { const {config} = context; - return HasteMap.getCacheFilePath( + const HasteMapClass = HasteMap.getStatic(config); + return HasteMapClass.getCacheFilePath( config.cacheDirectory, 'perf-cache-' + config.name, ); diff --git a/packages/jest-transform/src/ScriptTransformer.ts b/packages/jest-transform/src/ScriptTransformer.ts index dca4aa3492ba..8fb433899e59 100644 --- a/packages/jest-transform/src/ScriptTransformer.ts +++ b/packages/jest-transform/src/ScriptTransformer.ts @@ -194,7 +194,8 @@ class ScriptTransformer { filename: Config.Path, cacheKey: string, ): Config.Path { - const baseCacheDir = HasteMap.getCacheFilePath( + const HasteMapClass = HasteMap.getStatic(this._config); + const baseCacheDir = HasteMapClass.getCacheFilePath( this._config.cacheDirectory, 'jest-transform-cache-' + this._config.name, VERSION, diff --git a/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts index 29edad4dd816..94ade78a4a2c 100644 --- a/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts +++ b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts @@ -38,7 +38,12 @@ jest }, })) .mock('jest-haste-map', () => ({ - getCacheFilePath: (cacheDir: string, baseDir: string) => cacheDir + baseDir, + getStatic() { + return { + getCacheFilePath: (cacheDir: string, baseDir: string) => + cacheDir + baseDir, + }; + }, })) .mock('jest-util', () => ({ ...jest.requireActual('jest-util'), diff --git a/packages/jest-types/src/Config.ts b/packages/jest-types/src/Config.ts index 756fc26e7f67..a2ffd2773c0c 100644 --- a/packages/jest-types/src/Config.ts +++ b/packages/jest-types/src/Config.ts @@ -36,6 +36,8 @@ export type HasteConfig = { platforms?: Array; /** Whether to throw on error on module collision. */ throwOnModuleCollision?: boolean; + /** Custom HasteMap module */ + hasteMapModulePath?: string; }; export type CoverageReporterName = keyof ReportOptions; From a397607bddb09d894d1f1862eabb26bad75e4e1b Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Thu, 20 May 2021 14:40:36 +0200 Subject: [PATCH 10/65] Document and test dontThrow for custom inline snapshot matchers (#10995) --- docs/ExpectAPI.md | 42 +++++++++++++++++++ .../customInlineSnapshotMatchers.test.ts.snap | 28 +++++++++++++ .../customInlineSnapshotMatchers.test.ts | 17 ++++++++ .../__tests__/bail.test.js | 33 +++++++++++++++ .../versioned_docs/version-25.x/ExpectAPI.md | 42 +++++++++++++++++++ .../versioned_docs/version-26.x/ExpectAPI.md | 42 +++++++++++++++++++ 6 files changed, 204 insertions(+) create mode 100644 e2e/custom-inline-snapshot-matchers/__tests__/bail.test.js diff --git a/docs/ExpectAPI.md b/docs/ExpectAPI.md index 3cde3304fe71..43a39820e975 100644 --- a/docs/ExpectAPI.md +++ b/docs/ExpectAPI.md @@ -292,6 +292,48 @@ it('observes something', async () => { }); ``` +#### Bail out + +Usually `jest` tries to match every snapshot that is expected in a test. + +Sometimes it might not make sense to continue the test if a prior snapshot failed. For example, when you make snapshots of a state-machine after various transitions you can abort the test once one transition produced the wrong state. + +In that case you can implement a custom snapshot matcher that throws on the first mismatch instead of collecting every mismatch. + +```js +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + toMatchStateInlineSnapshot(...args) { + this.dontThrow = () => {}; + + return toMatchInlineSnapshot.call(this, ...args); + }, +}); + +let state = 'initial'; + +function transition() { + // Typo in the implementation should cause the test to fail + if (state === 'INITIAL') { + state = 'pending'; + } else if (state === 'pending') { + state = 'done'; + } +} + +it('transitions as expected', () => { + expect(state).toMatchStateInlineSnapshot(`"initial"`); + + transition(); + // Already produces a mismatch. No point in continuing the test. + expect(state).toMatchStateInlineSnapshot(`"loading"`); + + transition(); + expect(state).toMatchStateInlineSnapshot(`"done"`); +}); +``` + ### `expect.anything()` `expect.anything()` matches anything but `null` or `undefined`. You can use it inside `toEqual` or `toBeCalledWith` instead of a literal value. For example, if you want to check that a mock function is called with a non-null argument: diff --git a/e2e/__tests__/__snapshots__/customInlineSnapshotMatchers.test.ts.snap b/e2e/__tests__/__snapshots__/customInlineSnapshotMatchers.test.ts.snap index b26f7240ca99..f64495ccbfaa 100644 --- a/e2e/__tests__/__snapshots__/customInlineSnapshotMatchers.test.ts.snap +++ b/e2e/__tests__/__snapshots__/customInlineSnapshotMatchers.test.ts.snap @@ -1,5 +1,33 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`can bail with a custom inline snapshot matcher 1`] = ` +FAIL __tests__/bail.test.js + ✕ transitions as expected + + ● transitions as expected + + expect(received).toMatchInlineSnapshot(snapshot) + + Snapshot name: \`transitions as expected 2\` + + Snapshot: "loading" + Received: "initial" + + 28 | transition(); + 29 | // Already produces a mismatch. No point in continuing the test. + > 30 | expect(state).toMatchStateInlineSnapshot(\`"loading"\`); + | ^ + 31 | transition(); + 32 | expect(state).toMatchStateInlineSnapshot(\`"done"\`); + 33 | }); + + at Object.toMatchStateInlineSnapshot (__tests__/bail.test.js:30:17) + + › 1 snapshot failed. +Snapshot Summary + › 1 snapshot failed from 1 test suite. Inspect your code changes or re-run jest with \`-u\` to update them. +`; + exports[`works with custom inline snapshot matchers 1`] = ` FAIL __tests__/asynchronous.test.js ✕ new async, inline snapshots diff --git a/e2e/__tests__/customInlineSnapshotMatchers.test.ts b/e2e/__tests__/customInlineSnapshotMatchers.test.ts index a644c74ab270..c6f5234f8533 100644 --- a/e2e/__tests__/customInlineSnapshotMatchers.test.ts +++ b/e2e/__tests__/customInlineSnapshotMatchers.test.ts @@ -25,3 +25,20 @@ test('works with custom inline snapshot matchers', () => { expect(wrap(rest)).toMatchSnapshot(); }); + +test('can bail with a custom inline snapshot matcher', () => { + const {stderr} = runJest('custom-inline-snapshot-matchers', [ + // Prevent adding new snapshots or rather changing the test. + '--ci', + 'bail.test.js', + ]); + + let {rest} = extractSummary(stderr); + + rest = rest + .split('\n') + .filter(line => line.indexOf('at Error (native)') < 0) + .join('\n'); + + expect(wrap(rest)).toMatchSnapshot(); +}); diff --git a/e2e/custom-inline-snapshot-matchers/__tests__/bail.test.js b/e2e/custom-inline-snapshot-matchers/__tests__/bail.test.js new file mode 100644 index 000000000000..2ce01beb73fa --- /dev/null +++ b/e2e/custom-inline-snapshot-matchers/__tests__/bail.test.js @@ -0,0 +1,33 @@ +/** + * 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. + */ +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + toMatchStateInlineSnapshot(...args) { + this.dontThrow = () => {}; + return toMatchInlineSnapshot.call(this, ...args); + }, +}); + +let state = 'initial'; +function transition() { + // Typo in the implementation should cause the test to fail + if (state === 'INITIAL') { + state = 'pending'; + } else if (state === 'pending') { + state = 'done'; + } +} + +it('transitions as expected', () => { + expect(state).toMatchStateInlineSnapshot(`"initial"`); + transition(); + // Already produces a mismatch. No point in continuing the test. + expect(state).toMatchStateInlineSnapshot(`"loading"`); + transition(); + expect(state).toMatchStateInlineSnapshot(`"done"`); +}); diff --git a/website/versioned_docs/version-25.x/ExpectAPI.md b/website/versioned_docs/version-25.x/ExpectAPI.md index e90c7921fbf0..1cd94b7aa1d2 100644 --- a/website/versioned_docs/version-25.x/ExpectAPI.md +++ b/website/versioned_docs/version-25.x/ExpectAPI.md @@ -257,6 +257,48 @@ it('stores only 10 characters', () => { }); ``` +#### Bail out + +Usually `jest` tries to match every snapshot that is expected in a test. + +Sometimes it might not make sense to continue the test if a prior snapshot failed. For example, when you make snapshots of a state-machine after various transitions you can abort the test once one transition produced the wrong state. + +In that case you can implement a custom snapshot matcher that throws on the first mismatch instead of collecting every mismatch. + +```js +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + toMatchStateInlineSnapshot(...args) { + this.dontThrow = () => {}; + + return toMatchInlineSnapshot.call(this, ...args); + }, +}); + +let state = 'initial'; + +function transition() { + // Typo in the implementation should cause the test to fail + if (state === 'INITIAL') { + state = 'pending'; + } else if (state === 'pending') { + state = 'done'; + } +} + +it('transitions as expected', () => { + expect(state).toMatchStateInlineSnapshot(`"initial"`); + + transition(); + // Already produces a mismatch. No point in continuing the test. + expect(state).toMatchStateInlineSnapshot(`"loading"`); + + transition(); + expect(state).toMatchStateInlineSnapshot(`"done"`); +}); +``` + ### `expect.anything()` `expect.anything()` matches anything but `null` or `undefined`. You can use it inside `toEqual` or `toBeCalledWith` instead of a literal value. For example, if you want to check that a mock function is called with a non-null argument: diff --git a/website/versioned_docs/version-26.x/ExpectAPI.md b/website/versioned_docs/version-26.x/ExpectAPI.md index 30f3f4ad95fd..272d707236b9 100644 --- a/website/versioned_docs/version-26.x/ExpectAPI.md +++ b/website/versioned_docs/version-26.x/ExpectAPI.md @@ -257,6 +257,48 @@ it('stores only 10 characters', () => { }); ``` +#### Bail out + +Usually `jest` tries to match every snapshot that is expected in a test. + +Sometimes it might not make sense to continue the test if a prior snapshot failed. For example, when you make snapshots of a state-machine after various transitions you can abort the test once one transition produced the wrong state. + +In that case you can implement a custom snapshot matcher that throws on the first mismatch instead of collecting every mismatch. + +```js +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + toMatchStateInlineSnapshot(...args) { + this.dontThrow = () => {}; + + return toMatchInlineSnapshot.call(this, ...args); + }, +}); + +let state = 'initial'; + +function transition() { + // Typo in the implementation should cause the test to fail + if (state === 'INITIAL') { + state = 'pending'; + } else if (state === 'pending') { + state = 'done'; + } +} + +it('transitions as expected', () => { + expect(state).toMatchStateInlineSnapshot(`"initial"`); + + transition(); + // Already produces a mismatch. No point in continuing the test. + expect(state).toMatchStateInlineSnapshot(`"loading"`); + + transition(); + expect(state).toMatchStateInlineSnapshot(`"done"`); +}); +``` + ### `expect.anything()` `expect.anything()` matches anything but `null` or `undefined`. You can use it inside `toEqual` or `toBeCalledWith` instead of a literal value. For example, if you want to check that a mock function is called with a non-null argument: From 57e32e99a7994dfdcca8f777a2961294919551b9 Mon Sep 17 00:00:00 2001 From: Rob Brackett Date: Thu, 20 May 2021 06:10:03 -0700 Subject: [PATCH 11/65] Detect open handles with done callbacks (#11382) --- CHANGELOG.md | 2 ++ .../__snapshots__/detectOpenHandles.ts.snap | 32 +++++++++++++++++ e2e/__tests__/detectOpenHandles.ts | 32 +++++++++++++++++ .../__tests__/in-done-function.js | 12 +++++++ .../__tests__/in-done-lifecycle.js | 15 ++++++++ .../src/__tests__/collectHandles.test.js | 17 +++++++++ .../jest-jasmine2/src/jasmineAsyncInstall.ts | 35 ++++++++++++++++--- 7 files changed, 141 insertions(+), 4 deletions(-) create mode 100644 e2e/detect-open-handles/__tests__/in-done-function.js create mode 100644 e2e/detect-open-handles/__tests__/in-done-lifecycle.js diff --git a/CHANGELOG.md b/CHANGELOG.md index a5be224c3b4e..bb8daded58bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,7 @@ - `[jest-console]` `console.dir` now respects the second argument correctly ([#10638](https://github.com/facebook/jest/pull/10638)) - `[jest-core]` Don't report PerformanceObserver as open handle ([#11123](https://github.com/facebook/jest/pull/11123)) - `[jest-core]` Use `WeakRef` to hold timers when detecting open handles ([#11277](https://github.com/facebook/jest/pull/11277)) +- `[jest-core]` Correctly detect open handles that were created in test functions using `done` callbacks ([#11382](https://github.com/facebook/jest/pull/11382)) - `[jest-diff]` [**BREAKING**] Use only named exports ([#11371](https://github.com/facebook/jest/pull/11371)) - `[jest-each]` [**BREAKING**] Ignore excess words in headings ([#8766](https://github.com/facebook/jest/pull/8766)) - `[jest-each]` Support array index with template strings ([#10763](https://github.com/facebook/jest/pull/10763)) @@ -82,6 +83,7 @@ - `[jest-haste-map]` Vendor `NodeWatcher` from `sane` ([#10919](https://github.com/facebook/jest/pull/10919)) - `[jest-jasmine2]` Fixed the issue of `beforeAll` & `afterAll` hooks getting executed even if it is inside a skipped `describe` block when it has child `tests` marked as either `only` or `todo` [#10451](https://github.com/facebook/jest/issues/10451) - `[jest-jasmine2]` Fixed the issues of child `tests` marked with `only` or `todo` getting executed even if it is inside a skipped parent `describe` block [#10451](https://github.com/facebook/jest/issues/10451) +- `[jest-jasmine2]` Wrap all test functions so they open handles that were created in test functions using `done` callbacks can be detected ([#11382](https://github.com/facebook/jest/pull/11382)) - `[jest-reporter]` Handle empty files when reporting code coverage with V8 ([#10819](https://github.com/facebook/jest/pull/10819)) - `[jest-resolve]` Replace read-pkg-up with escalade package ([#10781](https://github.com/facebook/jest/pull/10781)) - `[jest-resolve]` Disable `jest-pnp-resolver` for Yarn 2 ([#10847](https://github.com/facebook/jest/pull/10847)) diff --git a/e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap b/e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap index 54666f5a111c..f679a6e076f5 100644 --- a/e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap +++ b/e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap @@ -38,3 +38,35 @@ Jest has detected the following 1 open handle potentially keeping Jest from exit at Object.setTimeout (__tests__/inside.js:9:3) `; + +exports[`prints out info about open handlers from lifecycle functions with a \`done\` callback 1`] = ` +Jest has detected the following 1 open handle potentially keeping Jest from exiting: + + ● Timeout + + 7 | + 8 | beforeAll(done => { + > 9 | setTimeout(() => {}, 10000); + | ^ + 10 | done(); + 11 | }); + 12 | + + at setTimeout (__tests__/in-done-lifecycle.js:9:3) +`; + +exports[`prints out info about open handlers from tests with a \`done\` callback 1`] = ` +Jest has detected the following 1 open handle potentially keeping Jest from exiting: + + ● Timeout + + 7 | + 8 | test('something', done => { + > 9 | setTimeout(() => {}, 10000); + | ^ + 10 | expect(true).toBe(true); + 11 | done(); + 12 | }); + + at Object.setTimeout (__tests__/in-done-function.js:9:3) +`; diff --git a/e2e/__tests__/detectOpenHandles.ts b/e2e/__tests__/detectOpenHandles.ts index 977434965a3f..f070f4b9e25b 100644 --- a/e2e/__tests__/detectOpenHandles.ts +++ b/e2e/__tests__/detectOpenHandles.ts @@ -123,3 +123,35 @@ it('prints out info about open handlers from inside tests', async () => { expect(wrap(textAfterTest)).toMatchSnapshot(); }); + +it('prints out info about open handlers from tests with a `done` callback', async () => { + const run = runContinuous('detect-open-handles', [ + 'in-done-function', + '--detectOpenHandles', + ]); + await run.waitUntil(({stderr}) => stderr.includes('Jest has detected')); + const {stderr} = await run.end(); + const textAfterTest = getTextAfterTest(stderr); + + expect(wrap(textAfterTest)).toMatchSnapshot(); +}); + +it('prints out info about open handlers from lifecycle functions with a `done` callback', async () => { + const run = runContinuous('detect-open-handles', [ + 'in-done-lifecycle', + '--detectOpenHandles', + ]); + await run.waitUntil(({stderr}) => stderr.includes('Jest has detected')); + const {stderr} = await run.end(); + let textAfterTest = getTextAfterTest(stderr); + + // Circus and Jasmine have different contexts, leading to slightly different + // names for call stack functions. The difference shouldn't be problematic + // for users, so this normalizes them so the test works in both environments. + textAfterTest = textAfterTest.replace( + 'at Object.setTimeout', + 'at setTimeout', + ); + + expect(wrap(textAfterTest)).toMatchSnapshot(); +}); diff --git a/e2e/detect-open-handles/__tests__/in-done-function.js b/e2e/detect-open-handles/__tests__/in-done-function.js new file mode 100644 index 000000000000..655a5c93ad80 --- /dev/null +++ b/e2e/detect-open-handles/__tests__/in-done-function.js @@ -0,0 +1,12 @@ +/** + * 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. + */ + +test('something', done => { + setTimeout(() => {}, 10000); + expect(true).toBe(true); + done(); +}); diff --git a/e2e/detect-open-handles/__tests__/in-done-lifecycle.js b/e2e/detect-open-handles/__tests__/in-done-lifecycle.js new file mode 100644 index 000000000000..1c4f2456491c --- /dev/null +++ b/e2e/detect-open-handles/__tests__/in-done-lifecycle.js @@ -0,0 +1,15 @@ +/** + * 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. + */ + +beforeAll(done => { + setTimeout(() => {}, 10000); + done(); +}); + +test('something', () => { + expect(true).toBe(true); +}); diff --git a/packages/jest-core/src/__tests__/collectHandles.test.js b/packages/jest-core/src/__tests__/collectHandles.test.js index 24644ef39215..7192709d9350 100644 --- a/packages/jest-core/src/__tests__/collectHandles.test.js +++ b/packages/jest-core/src/__tests__/collectHandles.test.js @@ -6,6 +6,7 @@ * */ +import http from 'http'; import {PerformanceObserver} from 'perf_hooks'; import collectHandles from '../collectHandles'; @@ -33,4 +34,20 @@ describe('collectHandles', () => { expect(openHandles).toHaveLength(0); obs.disconnect(); }); + + it('should collect handles opened in test functions with `done` callbacks', done => { + const handleCollector = collectHandles(); + const server = http.createServer((_, response) => response.end('ok')); + server.listen(0, () => { + // Collect results while server is still open. + const openHandles = handleCollector(); + + server.close(() => { + expect(openHandles).toContainEqual( + expect.objectContaining({message: 'TCPSERVERWRAP'}), + ); + done(); + }); + }); + }); }); diff --git a/packages/jest-jasmine2/src/jasmineAsyncInstall.ts b/packages/jest-jasmine2/src/jasmineAsyncInstall.ts index 30748c0461a6..be33f5b41bbc 100644 --- a/packages/jest-jasmine2/src/jasmineAsyncInstall.ts +++ b/packages/jest-jasmine2/src/jasmineAsyncInstall.ts @@ -44,11 +44,24 @@ function promisifyLifeCycleFunction( return originalFn.call(env); } - const hasDoneCallback = typeof fn === 'function' && fn.length > 0; + if (typeof fn !== 'function') { + // Pass non-functions to Jest, which throws a nice error. + return originalFn.call(env, fn, timeout); + } + + const hasDoneCallback = fn.length > 0; if (hasDoneCallback) { - // Jasmine will handle it - return originalFn.call(env, fn, timeout); + // Give the function a name so it can be detected in call stacks, but + // otherwise Jasmine will handle it. + const asyncJestLifecycleWithCallback = function ( + this: Global.TestContext, + ...args: Array + ) { + // @ts-expect-error: Support possible extra args at runtime + return fn.apply(this, args); + }; + return originalFn.call(env, asyncJestLifecycleWithCallback, timeout); } const extraError = new Error(); @@ -106,10 +119,24 @@ function promisifyIt( return spec; } + if (typeof fn !== 'function') { + // Pass non-functions to Jest, which throws a nice error. + return originalFn.call(env, specName, fn, timeout); + } + const hasDoneCallback = fn.length > 0; if (hasDoneCallback) { - return originalFn.call(env, specName, fn, timeout); + // Give the function a name so it can be detected in call stacks, but + // otherwise Jasmine will handle it. + const asyncJestTestWithCallback = function ( + this: Global.TestContext, + ...args: Array + ) { + // @ts-expect-error: Support possible extra args at runtime + return fn.apply(this, args); + }; + return originalFn.call(env, specName, asyncJestTestWithCallback, timeout); } const extraError = new Error(); From 59f42d86756fcc3c9caf0c8a5cf1b13324941d4e Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Thu, 20 May 2021 15:30:17 +0200 Subject: [PATCH 12/65] fix: do not cache modules that throw during evaluation (#11263) --- CHANGELOG.md | 1 + .../__tests__/runtime_require_module.test.js | 10 +++++++++ packages/jest-runtime/src/index.ts | 21 ++++++++++++------- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb8daded58bc..0585c1ec3104 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,6 +93,7 @@ - `[jest-runtime]` Prevent global module registry from leaking into `isolateModules` registry ([#10963](https://github.com/facebook/jest/pull/10963)) - `[jest-runtime]` Refactor to prevent race condition when linking and evaluating ES Modules ([#11150](https://github.com/facebook/jest/pull/11150)) - `[jest-runtime]` Throw correct error when attempting to load ESM via `require` ([#11260](https://github.com/facebook/jest/pull/11260)) +- `[jest-runtime]` Do not cache modules that throw during evaluation ([#11263](https://github.com/facebook/jest/pull/11263)) - `[jest-transform]` Show enhanced `SyntaxError` message for all `SyntaxError`s ([#10749](https://github.com/facebook/jest/pull/10749)) - `[jest-transform]` [**BREAKING**] Refactor API to pass an options bag around rather than multiple boolean options ([#10753](https://github.com/facebook/jest/pull/10753)) - `[jest-transform]` [**BREAKING**] Refactor API of transformers to pass an options bag rather than separate `config` and other options ([#10834](https://github.com/facebook/jest/pull/10834)) diff --git a/packages/jest-runtime/src/__tests__/runtime_require_module.test.js b/packages/jest-runtime/src/__tests__/runtime_require_module.test.js index 453373c895d8..937d1bc14350 100644 --- a/packages/jest-runtime/src/__tests__/runtime_require_module.test.js +++ b/packages/jest-runtime/src/__tests__/runtime_require_module.test.js @@ -349,6 +349,16 @@ describe('Runtime requireModule', () => { expect(Module1).toBe(Module2); }); + it('does not cache modules that throw during evaluation', async () => { + const runtime = await createRuntime(__filename); + expect(() => + runtime.requireModule(runtime.__mockRootPath, 'throwing'), + ).toThrowError(); + expect(() => + runtime.requireModule(runtime.__mockRootPath, 'throwing'), + ).toThrowError(); + }); + onNodeVersions('>=12.12.0', () => { it('overrides module.createRequire', async () => { const runtime = await createRuntime(__filename); diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index e3de7866eae9..cbe95fd67bde 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -692,14 +692,19 @@ export default class Runtime { }; moduleRegistry.set(modulePath, localModule); - this._loadModule( - localModule, - from, - moduleName, - modulePath, - options, - moduleRegistry, - ); + try { + this._loadModule( + localModule, + from, + moduleName, + modulePath, + options, + moduleRegistry, + ); + } catch (error: unknown) { + moduleRegistry.delete(modulePath); + throw error; + } return localModule.exports; } From 9633a2697550e319f3854f6c7ac736a4d9e2d5ca Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Thu, 20 May 2021 16:05:51 +0200 Subject: [PATCH 13/65] feat: support reporters written in ESM (#11427) --- CHANGELOG.md | 4 ++- e2e/__tests__/customReporters.test.ts | 26 +++++++++++++++ packages/jest-core/src/TestScheduler.ts | 33 ++++++++++++------- .../src/__tests__/TestScheduler.test.js | 28 ++++++++-------- packages/jest-core/src/jest.ts | 2 +- packages/jest-core/src/runJest.ts | 8 +++-- packages/jest/src/jest.ts | 2 +- 7 files changed, 72 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0585c1ec3104..fe1a0477439e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,6 @@ ### Features -- `[jest-config, jest-haste-map, jest-resolve, jest-runner, jest-runtime, jest-test-sequencer, jest-transform, jest-types]` [**BREAKING**] Add custom HasteMap class implementation config option ([#11107](https://github.com/facebook/jest/pull/11107)) - `[babel-jest]` Add async transformation ([#11192](https://github.com/facebook/jest/pull/11192)) - `[jest-changed-files]` Use '--' to separate paths from revisions ([#11160](https://github.com/facebook/jest/pull/11160)) - `[jest-circus]` [**BREAKING**] Fail tests when multiple `done()` calls are made ([#10624](https://github.com/facebook/jest/pull/10624)) @@ -13,6 +12,7 @@ - `[jest-config, jest-runtime]` Support ESM for files other than `.js` and `.mjs` ([#10823](https://github.com/facebook/jest/pull/10823)) - `[jest-config, jest-runtime]` [**BREAKING**] Use "modern" implementation as default for fake timers ([#10874](https://github.com/facebook/jest/pull/10874) & [#11197](https://github.com/facebook/jest/pull/11197)) - `[jest-config` Allow passing `forceNodeFilesystemAPI` through to `jest-haste-map` ([#11264](https://github.com/facebook/jest/pull/11264)) +- `[jest-config, jest-haste-map, jest-resolve, jest-runner, jest-runtime, jest-test-sequencer, jest-transform, jest-types]` [**BREAKING**] Add custom HasteMap class implementation config option ([#11107](https://github.com/facebook/jest/pull/11107)) - `[jest-core]` make `TestWatcher` extend `emittery` ([#10324](https://github.com/facebook/jest/pull/10324)) - `[jest-core]` Run failed tests interactively the same way we do with snapshots ([#10858](https://github.com/facebook/jest/pull/10858)) - `[jest-core]` more `TestSequencer` methods can be async ([#10980](https://github.com/facebook/jest/pull/10980)) @@ -20,6 +20,7 @@ - `[jest-core]` Add support for `globalSetup` and `globalTeardown` written in ESM ([#11267](https://github.com/facebook/jest/pull/11267)) - `[jest-core]` Add support for `watchPlugins` written in ESM ([#11315](https://github.com/facebook/jest/pull/11315)) - `[jest-core]` Add support for `runner` written in ESM ([#11232](https://github.com/facebook/jest/pull/11232)) +- `[jest-core]` Add support for `reporters` written in ESM ([#11427](https://github.com/facebook/jest/pull/11427)) - `[jest-each]` Add support for interpolation with object properties ([#11388](https://github.com/facebook/jest/pull/11388)) - `[jest-environment-node]` Add AbortController to globals ([#11182](https://github.com/facebook/jest/pull/11182)) - `[@jest/fake-timers]` Update to `@sinonjs/fake-timers` to v7 ([#11198](https://github.com/facebook/jest/pull/11198)) @@ -117,6 +118,7 @@ - `[babel-jest]` [**BREAKING**] Migrate to ESM ([#11193](https://github.com/facebook/jest/pull/11193)) - `[docs]` Correct example using `browser-resolve` ([#11140](https://github.com/facebook/jest/pull/11140)) - `[docs]` Clarify `timers` configuration property ([#11376](https://github.com/facebook/jest/pull/11376)) +- `[jest, jest-core]` [**BREAKING**] Replace `TestScheduler` export with `createTestScheduler` ([#11427](https://github.com/facebook/jest/pull/11427)) - `[jest-config]` [**BREAKING**] Remove `enabledTestsMap` config, use `filter` instead ([#10787](https://github.com/facebook/jest/pull/10787)) - `[jest-console]` [**BREAKING**] Move `root` into `config` and take `GlobalConfig` as mandatory parameter for `getConsoleOutput` ([#10126](https://github.com/facebook/jest/pull/10126)) - `[jest-console]` Export LogEntry ([#11017](https://github.com/facebook/jest/pull/11017)) diff --git a/e2e/__tests__/customReporters.test.ts b/e2e/__tests__/customReporters.test.ts index d0dc1d78455c..e2210710c50b 100644 --- a/e2e/__tests__/customReporters.test.ts +++ b/e2e/__tests__/customReporters.test.ts @@ -8,6 +8,7 @@ import {tmpdir} from 'os'; import * as path from 'path'; import {wrap} from 'jest-snapshot-serializer-raw'; +import {onNodeVersions} from '@jest/test-utils'; import {cleanup, extractSummary, writeFiles} from '../Utils'; import runJest from '../runJest'; @@ -159,4 +160,29 @@ describe('Custom Reporters Integration', () => { expect(stderr).toMatch(/ON_RUN_START_ERROR/); expect(exitCode).toBe(1); }); + + onNodeVersions('^12.17.0 || >=13.2.0', () => { + test('supports reporter written in ESM', () => { + writeFiles(DIR, { + '__tests__/test.test.js': `test('test', () => {});`, + 'package.json': JSON.stringify({ + jest: { + reporters: ['default', '/reporter.mjs'], + testEnvironment: 'node', + }, + }), + 'reporter.mjs': ` + export default class Reporter { + onRunStart() { + throw new Error('ON_RUN_START_ERROR'); + } + }; + `, + }); + + const {stderr, exitCode} = runJest(DIR); + expect(stderr).toMatch(/ON_RUN_START_ERROR/); + expect(exitCode).toBe(1); + }); + }); }); diff --git a/packages/jest-core/src/TestScheduler.ts b/packages/jest-core/src/TestScheduler.ts index 0bf7746a6092..b20759cf34d8 100644 --- a/packages/jest-core/src/TestScheduler.ts +++ b/packages/jest-core/src/TestScheduler.ts @@ -31,7 +31,7 @@ import {formatExecError} from 'jest-message-util'; import TestRunner, {Test} from 'jest-runner'; import type {Context} from 'jest-runtime'; import snapshot = require('jest-snapshot'); -import {interopRequireDefault} from 'jest-util'; +import {requireOrImportModule} from 'jest-util'; import ReporterDispatcher from './ReporterDispatcher'; import type TestWatcher from './TestWatcher'; import {shouldRunInBand} from './testSchedulerHelper'; @@ -49,7 +49,20 @@ export type TestSchedulerContext = { changedFiles?: Set; sourcesRelatedToTestsInChangedFiles?: Set; }; -export default class TestScheduler { + +export async function createTestScheduler( + globalConfig: Config.GlobalConfig, + options: TestSchedulerOptions, + context: TestSchedulerContext, +): Promise { + const scheduler = new TestScheduler(globalConfig, options, context); + + await scheduler._setupReporters(); + + return scheduler; +} + +class TestScheduler { private readonly _dispatcher: ReporterDispatcher; private readonly _globalConfig: Config.GlobalConfig; private readonly _options: TestSchedulerOptions; @@ -64,7 +77,6 @@ export default class TestScheduler { this._globalConfig = globalConfig; this._options = options; this._context = context; - this._setupReporters(); } addReporter(reporter: Reporter): void { @@ -337,7 +349,7 @@ export default class TestScheduler { ); } - private _setupReporters() { + async _setupReporters() { const {collectCoverage, notify, reporters} = this._globalConfig; const isDefault = this._shouldAddDefaultReporters(reporters); @@ -366,7 +378,7 @@ export default class TestScheduler { } if (reporters && Array.isArray(reporters)) { - this._addCustomReporters(reporters); + await this._addCustomReporters(reporters); } } @@ -390,17 +402,16 @@ export default class TestScheduler { this.addReporter(new SummaryReporter(this._globalConfig)); } - private _addCustomReporters( + private async _addCustomReporters( reporters: Array, ) { - reporters.forEach(reporter => { + for (const reporter of reporters) { const {options, path} = this._getReporterProps(reporter); - if (path === 'default') return; + if (path === 'default') continue; try { - // TODO: Use `requireAndTranspileModule` for Jest 26 - const Reporter = interopRequireDefault(require(path)).default; + const Reporter = await requireOrImportModule(path, true); this.addReporter(new Reporter(this._globalConfig, options)); } catch (error) { error.message = @@ -410,7 +421,7 @@ export default class TestScheduler { error.message; throw error; } - }); + } } /** diff --git a/packages/jest-core/src/__tests__/TestScheduler.test.js b/packages/jest-core/src/__tests__/TestScheduler.test.js index 464a923206fc..b707ef3289c9 100644 --- a/packages/jest-core/src/__tests__/TestScheduler.test.js +++ b/packages/jest-core/src/__tests__/TestScheduler.test.js @@ -8,7 +8,7 @@ import {SummaryReporter} from '@jest/reporters'; import {makeProjectConfig} from '@jest/test-utils'; -import TestScheduler from '../TestScheduler'; +import {createTestScheduler} from '../TestScheduler'; import * as testSchedulerHelper from '../testSchedulerHelper'; jest.mock('@jest/reporters'); @@ -35,8 +35,8 @@ beforeEach(() => { spyShouldRunInBand.mockClear(); }); -test('config for reporters supports `default`', () => { - const undefinedReportersScheduler = new TestScheduler( +test('config for reporters supports `default`', async () => { + const undefinedReportersScheduler = await createTestScheduler( { reporters: undefined, }, @@ -45,7 +45,7 @@ test('config for reporters supports `default`', () => { const numberOfReporters = undefinedReportersScheduler._dispatcher._reporters.length; - const stringDefaultReportersScheduler = new TestScheduler( + const stringDefaultReportersScheduler = await createTestScheduler( { reporters: ['default'], }, @@ -55,7 +55,7 @@ test('config for reporters supports `default`', () => { numberOfReporters, ); - const defaultReportersScheduler = new TestScheduler( + const defaultReportersScheduler = await createTestScheduler( { reporters: [['default', {}]], }, @@ -65,7 +65,7 @@ test('config for reporters supports `default`', () => { numberOfReporters, ); - const emptyReportersScheduler = new TestScheduler( + const emptyReportersScheduler = await createTestScheduler( { reporters: [], }, @@ -74,8 +74,8 @@ test('config for reporters supports `default`', () => { expect(emptyReportersScheduler._dispatcher._reporters.length).toBe(0); }); -test('.addReporter() .removeReporter()', () => { - const scheduler = new TestScheduler({}, {}); +test('.addReporter() .removeReporter()', async () => { + const scheduler = await createTestScheduler({}, {}); const reporter = new SummaryReporter(); scheduler.addReporter(reporter); expect(scheduler._dispatcher._reporters).toContain(reporter); @@ -84,7 +84,7 @@ test('.addReporter() .removeReporter()', () => { }); test('schedule tests run in parallel per default', async () => { - const scheduler = new TestScheduler({}, {}); + const scheduler = await createTestScheduler({}, {}); const test = { context: { config: makeProjectConfig({ @@ -107,7 +107,7 @@ test('schedule tests run in parallel per default', async () => { }); test('schedule tests run in serial if the runner flags them', async () => { - const scheduler = new TestScheduler({}, {}); + const scheduler = await createTestScheduler({}, {}); const test = { context: { config: makeProjectConfig({ @@ -130,7 +130,7 @@ test('schedule tests run in serial if the runner flags them', async () => { }); test('should bail after `n` failures', async () => { - const scheduler = new TestScheduler({bail: 2}, {}); + const scheduler = await createTestScheduler({bail: 2}, {}); const test = { context: { config: makeProjectConfig({ @@ -162,7 +162,7 @@ test('should bail after `n` failures', async () => { }); test('should not bail if less than `n` failures', async () => { - const scheduler = new TestScheduler({bail: 2}, {}); + const scheduler = await createTestScheduler({bail: 2}, {}); const test = { context: { config: makeProjectConfig({ @@ -194,7 +194,7 @@ test('should not bail if less than `n` failures', async () => { }); test('should set runInBand to run in serial', async () => { - const scheduler = new TestScheduler({}, {}); + const scheduler = await createTestScheduler({}, {}); const test = { context: { config: makeProjectConfig({ @@ -220,7 +220,7 @@ test('should set runInBand to run in serial', async () => { }); test('should set runInBand to not run in serial', async () => { - const scheduler = new TestScheduler({}, {}); + const scheduler = await createTestScheduler({}, {}); const test = { context: { config: makeProjectConfig({ diff --git a/packages/jest-core/src/jest.ts b/packages/jest-core/src/jest.ts index dfba24c2c4b5..6912817f6bfa 100644 --- a/packages/jest-core/src/jest.ts +++ b/packages/jest-core/src/jest.ts @@ -6,7 +6,7 @@ */ export {default as SearchSource} from './SearchSource'; -export {default as TestScheduler} from './TestScheduler'; +export {createTestScheduler} from './TestScheduler'; export {default as TestWatcher} from './TestWatcher'; export {runCLI} from './cli'; export {default as getVersion} from './version'; diff --git a/packages/jest-core/src/runJest.ts b/packages/jest-core/src/runJest.ts index 51af70ed884e..90d68275ed8c 100644 --- a/packages/jest-core/src/runJest.ts +++ b/packages/jest-core/src/runJest.ts @@ -24,7 +24,7 @@ import {requireOrImportModule, tryRealpath} from 'jest-util'; import {JestHook, JestHookEmitter} from 'jest-watcher'; import type FailedTestsCache from './FailedTestsCache'; import SearchSource from './SearchSource'; -import TestScheduler, {TestSchedulerContext} from './TestScheduler'; +import {TestSchedulerContext, createTestScheduler} from './TestScheduler'; import type TestWatcher from './TestWatcher'; import collectNodeHandles, {HandleCollectionResult} from './collectHandles'; import getNoTestsFoundMessage from './getNoTestsFoundMessage'; @@ -268,11 +268,13 @@ export default async function runJest({ } } - const results = await new TestScheduler( + const scheduler = await createTestScheduler( globalConfig, {startRun}, testSchedulerContext, - ).scheduleTests(allTests, testWatcher); + ); + + const results = await scheduler.scheduleTests(allTests, testWatcher); await sequencer.cacheResults(allTests, results); diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts index ff2c31c2f394..9c4f958cb98d 100644 --- a/packages/jest/src/jest.ts +++ b/packages/jest/src/jest.ts @@ -7,8 +7,8 @@ export { SearchSource, - TestScheduler, TestWatcher, + createTestScheduler, getVersion, runCLI, } from '@jest/core'; From cbcec7d8305c8d304deadd00154a7e58dd3d8709 Mon Sep 17 00:00:00 2001 From: Jonny Burger Date: Thu, 20 May 2021 16:05:59 +0200 Subject: [PATCH 14/65] Upgrade fsevents in jest-haste-map (#11428) --- packages/jest-haste-map/package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index 8c17ad1a2728..d0d208bea837 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -36,7 +36,7 @@ "slash": "^3.0.0" }, "optionalDependencies": { - "fsevents": "^2.2.1" + "fsevents": "^2.3.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/yarn.lock b/yarn.lock index b0e2fc17095f..18007b2c16ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10488,7 +10488,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"fsevents@^2.1.2, fsevents@^2.2.1, fsevents@~2.3.1": +"fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.1": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: @@ -10507,7 +10507,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.1.2#builtin, fsevents@patch:fsevents@^2.2.1#builtin, fsevents@patch:fsevents@~2.3.1#builtin": +"fsevents@patch:fsevents@^2.1.2#builtin, fsevents@patch:fsevents@^2.3.2#builtin, fsevents@patch:fsevents@~2.3.1#builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#builtin::version=2.3.2&hash=11e9ea" dependencies: @@ -12886,7 +12886,7 @@ fsevents@^1.2.7: "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 - fsevents: ^2.2.1 + fsevents: ^2.3.2 graceful-fs: ^4.2.4 jest-regex-util: ^27.0.0-next.0 jest-serializer: ^27.0.0-next.9 From 6f44529270310b7dbdf9a0b72b21b5cd50fda4b1 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Thu, 20 May 2021 16:11:04 +0200 Subject: [PATCH 15/65] v27.0.0-next.10 --- lerna.json | 6 ++- packages/babel-jest/package.json | 10 ++--- packages/babel-plugin-jest-hoist/package.json | 2 +- packages/babel-preset-jest/package.json | 4 +- packages/expect/package.json | 10 ++--- packages/jest-changed-files/package.json | 4 +- packages/jest-circus/package.json | 28 ++++++------- packages/jest-cli/package.json | 16 ++++---- packages/jest-config/package.json | 24 +++++------ packages/jest-console/package.json | 10 ++--- packages/jest-core/package.json | 40 +++++++++---------- .../package.json | 6 +-- packages/jest-diff/package.json | 6 +-- packages/jest-docblock/package.json | 2 +- packages/jest-each/package.json | 8 ++-- packages/jest-environment-jsdom/package.json | 14 +++---- packages/jest-environment-node/package.json | 14 +++---- packages/jest-environment/package.json | 8 ++-- packages/jest-fake-timers/package.json | 10 ++--- packages/jest-globals/package.json | 8 ++-- packages/jest-haste-map/package.json | 10 ++--- packages/jest-jasmine2/package.json | 24 +++++------ packages/jest-leak-detector/package.json | 4 +- packages/jest-matcher-utils/package.json | 8 ++-- packages/jest-message-util/package.json | 6 +-- packages/jest-mock/package.json | 4 +- packages/jest-phabricator/package.json | 4 +- packages/jest-repl/package.json | 20 +++++----- packages/jest-reporters/package.json | 20 +++++----- .../jest-resolve-dependencies/package.json | 14 +++---- packages/jest-resolve/package.json | 8 ++-- packages/jest-runner/package.json | 32 +++++++-------- packages/jest-runtime/package.json | 34 ++++++++-------- packages/jest-snapshot/package.json | 24 +++++------ packages/jest-test-result/package.json | 6 +-- packages/jest-test-sequencer/package.json | 10 ++--- packages/jest-transform/package.json | 10 ++--- packages/jest-types/package.json | 2 +- packages/jest-util/package.json | 4 +- packages/jest-validate/package.json | 6 +-- packages/jest-watcher/package.json | 8 ++-- packages/jest-worker/package.json | 4 +- packages/jest/package.json | 6 +-- packages/pretty-format/package.json | 6 +-- packages/test-utils/package.json | 6 +-- 45 files changed, 256 insertions(+), 254 deletions(-) diff --git a/lerna.json b/lerna.json index 661f2808f325..a656f9fa340d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,7 @@ { - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "npmClient": "yarn", - "packages": ["packages/*"] + "packages": [ + "packages/*" + ] } diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json index d05dc113c9ff..4da9a67b67b3 100644 --- a/packages/babel-jest/package.json +++ b/packages/babel-jest/package.json @@ -1,7 +1,7 @@ { "name": "babel-jest", "description": "Jest plugin to use babel for transformation.", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,18 +15,18 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/transform": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/transform": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.0.0-next.3", + "babel-preset-jest": "^27.0.0-next.10", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "slash": "^3.0.0" }, "devDependencies": { "@babel/core": "^7.1.0", - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/graceful-fs": "^4.1.3" }, "peerDependencies": { diff --git a/packages/babel-plugin-jest-hoist/package.json b/packages/babel-plugin-jest-hoist/package.json index 883945f9e80e..a87340cf77f5 100644 --- a/packages/babel-plugin-jest-hoist/package.json +++ b/packages/babel-plugin-jest-hoist/package.json @@ -1,6 +1,6 @@ { "name": "babel-plugin-jest-hoist", - "version": "27.0.0-next.3", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/babel-preset-jest/package.json b/packages/babel-preset-jest/package.json index f4fba707723e..ff1ad081722f 100644 --- a/packages/babel-preset-jest/package.json +++ b/packages/babel-preset-jest/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-jest", - "version": "27.0.0-next.3", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -13,7 +13,7 @@ "./package.json": "./package.json" }, "dependencies": { - "babel-plugin-jest-hoist": "^27.0.0-next.3", + "babel-plugin-jest-hoist": "^27.0.0-next.10", "babel-preset-current-node-syntax": "^1.0.0" }, "peerDependencies": { diff --git a/packages/expect/package.json b/packages/expect/package.json index 4ab60953080c..177e95f27ee5 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -1,6 +1,6 @@ { "name": "expect", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,15 +15,15 @@ "./build/utils": "./build/utils.js" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "ansi-styles": "^5.0.0", "jest-get-type": "^27.0.0-next.9", - "jest-matcher-utils": "^27.0.0-next.9", - "jest-message-util": "^27.0.0-next.9", + "jest-matcher-utils": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "chalk": "^4.0.0", "fast-check": "^2.0.0", "immutable": "^4.0.0-rc.12" diff --git a/packages/jest-changed-files/package.json b/packages/jest-changed-files/package.json index 5df7923949d0..8423b645d7d8 100644 --- a/packages/jest-changed-files/package.json +++ b/packages/jest-changed-files/package.json @@ -1,6 +1,6 @@ { "name": "jest-changed-files", - "version": "27.0.0-next.8", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "execa": "^5.0.0", "throat": "^6.0.1" }, diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index d2168511d48c..bf7d3af53eb7 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -1,6 +1,6 @@ { "name": "jest-circus", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,30 +15,30 @@ "./runner": "./runner.js" }, "dependencies": { - "@jest/environment": "^27.0.0-next.9", - "@jest/test-result": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/environment": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.0.0-next.9", + "expect": "^27.0.0-next.10", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.0-next.9", - "jest-matcher-utils": "^27.0.0-next.9", - "jest-message-util": "^27.0.0-next.9", - "jest-runner": "^27.0.0-next.9", - "jest-runtime": "^27.0.0-next.9", - "jest-snapshot": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.9", + "jest-each": "^27.0.0-next.10", + "jest-matcher-utils": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.10", + "jest-runner": "^27.0.0-next.10", + "jest-runtime": "^27.0.0-next.10", + "jest-snapshot": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "pretty-format": "^27.0.0-next.10", "stack-utils": "^2.0.3", "throat": "^6.0.1" }, "devDependencies": { "@babel/core": "^7.1.0", "@babel/register": "^7.0.0", - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/co": "^4.6.0", "@types/dedent": "^0.7.0", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index aee8867ddd8e..468c95af1862 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -1,7 +1,7 @@ { "name": "jest-cli", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,21 +10,21 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^27.0.0-next.9", - "@jest/test-result": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/core": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "jest-validate": "^27.0.0-next.9", + "jest-config": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "jest-validate": "^27.0.0-next.10", "prompts": "^2.0.1", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.3", "@types/prompts": "^2.0.1", diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index 48a9ce63672f..1b2ca553a4ad 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -1,6 +1,6 @@ { "name": "jest-config", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -23,25 +23,25 @@ }, "dependencies": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", - "babel-jest": "^27.0.0-next.9", + "@jest/test-sequencer": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", + "babel-jest": "^27.0.0-next.10", "chalk": "^4.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", "is-ci": "^3.0.0", - "jest-circus": "^27.0.0-next.9", - "jest-environment-jsdom": "^27.0.0-next.9", - "jest-environment-node": "^27.0.0-next.9", + "jest-circus": "^27.0.0-next.10", + "jest-environment-jsdom": "^27.0.0-next.10", + "jest-environment-node": "^27.0.0-next.10", "jest-get-type": "^27.0.0-next.9", - "jest-jasmine2": "^27.0.0-next.9", + "jest-jasmine2": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "jest-validate": "^27.0.0-next.9", + "jest-resolve": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "jest-validate": "^27.0.0-next.10", "micromatch": "^4.0.4", - "pretty-format": "^27.0.0-next.9" + "pretty-format": "^27.0.0-next.10" }, "devDependencies": { "@types/babel__core": "^7.0.4", diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json index 8ed56bab451f..ab7d1e7d0fd6 100644 --- a/packages/jest-console/package.json +++ b/packages/jest-console/package.json @@ -1,6 +1,6 @@ { "name": "@jest/console", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", + "jest-message-util": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", "slash": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/node": "*" }, "engines": { diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 3177b9293612..4732ea1bc5d1 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -1,7 +1,7 @@ { "name": "@jest/core", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -9,30 +9,30 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.9", - "@jest/reporters": "^27.0.0-next.9", - "@jest/test-result": "^27.0.0-next.9", - "@jest/transform": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/console": "^27.0.0-next.10", + "@jest/reporters": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.10", + "@jest/transform": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.0.0-next.8", - "jest-config": "^27.0.0-next.9", - "jest-haste-map": "^27.0.0-next.9", - "jest-message-util": "^27.0.0-next.9", + "jest-changed-files": "^27.0.0-next.10", + "jest-config": "^27.0.0-next.10", + "jest-haste-map": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.9", - "jest-resolve-dependencies": "^27.0.0-next.9", - "jest-runner": "^27.0.0-next.9", - "jest-runtime": "^27.0.0-next.9", - "jest-snapshot": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "jest-validate": "^27.0.0-next.9", - "jest-watcher": "^27.0.0-next.9", + "jest-resolve": "^27.0.0-next.10", + "jest-resolve-dependencies": "^27.0.0-next.10", + "jest-runner": "^27.0.0-next.10", + "jest-runtime": "^27.0.0-next.10", + "jest-snapshot": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "jest-validate": "^27.0.0-next.10", + "jest-watcher": "^27.0.0-next.10", "micromatch": "^4.0.4", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", @@ -40,8 +40,8 @@ "strip-ansi": "^6.0.0" }, "devDependencies": { - "@jest/test-sequencer": "^27.0.0-next.9", - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-sequencer": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.10", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/micromatch": "^4.0.1", diff --git a/packages/jest-create-cache-key-function/package.json b/packages/jest-create-cache-key-function/package.json index ac6dacecc851..b73de7522259 100644 --- a/packages/jest-create-cache-key-function/package.json +++ b/packages/jest-create-cache-key-function/package.json @@ -1,17 +1,17 @@ { "name": "@jest/create-cache-key-function", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", "directory": "packages/jest-create-cache-key-function" }, "dependencies": { - "@jest/types": "^27.0.0-next.8" + "@jest/types": "^27.0.0-next.10" }, "devDependencies": { "@types/node": "*", - "jest-util": "^27.0.0-next.9" + "jest-util": "^27.0.0-next.10" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json index b590e404667d..a11b6c155927 100644 --- a/packages/jest-diff/package.json +++ b/packages/jest-diff/package.json @@ -1,6 +1,6 @@ { "name": "jest-diff", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,10 +17,10 @@ "chalk": "^4.0.0", "diff-sequences": "^27.0.0-next.0", "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.9" + "pretty-format": "^27.0.0-next.10" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "strip-ansi": "^6.0.0" }, "engines": { diff --git a/packages/jest-docblock/package.json b/packages/jest-docblock/package.json index 46dd94343f9b..1c9b8f1b259c 100644 --- a/packages/jest-docblock/package.json +++ b/packages/jest-docblock/package.json @@ -1,6 +1,6 @@ { "name": "jest-docblock", - "version": "27.0.0-next.0", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-each/package.json b/packages/jest-each/package.json index 74560157d856..0a5ade380a83 100644 --- a/packages/jest-each/package.json +++ b/packages/jest-each/package.json @@ -1,6 +1,6 @@ { "name": "jest-each", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "description": "Parameterised tests for Jest", "main": "./build/index.js", "types": "./build/index.d.ts", @@ -22,11 +22,11 @@ "author": "Matt Phillips (mattphillips)", "license": "MIT", "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "jest-get-type": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.9" + "jest-util": "^27.0.0-next.10", + "pretty-format": "^27.0.0-next.10" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json index 76644a7aab6d..21e32656879e 100644 --- a/packages/jest-environment-jsdom/package.json +++ b/packages/jest-environment-jsdom/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-jsdom", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,16 +14,16 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.9", - "@jest/fake-timers": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/environment": "^27.0.0-next.10", + "@jest/fake-timers": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", - "jest-mock": "^27.0.0-next.8", - "jest-util": "^27.0.0-next.9", + "jest-mock": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", "jsdom": "^16.4.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/jsdom": "^16.2.4" }, "engines": { diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json index 943c7c9e845b..f5e1be52254c 100644 --- a/packages/jest-environment-node/package.json +++ b/packages/jest-environment-node/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-node", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.9", - "@jest/fake-timers": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/environment": "^27.0.0-next.10", + "@jest/fake-timers": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", - "jest-mock": "^27.0.0-next.8", - "jest-util": "^27.0.0-next.9" + "jest-mock": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9" + "@jest/test-utils": "^27.0.0-next.10" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json index 1a110053e116..25de5bb43a94 100644 --- a/packages/jest-environment/package.json +++ b/packages/jest-environment/package.json @@ -1,6 +1,6 @@ { "name": "@jest/environment", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,10 +14,10 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/fake-timers": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/fake-timers": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", - "jest-mock": "^27.0.0-next.8" + "jest-mock": "^27.0.0-next.10" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json index 7497191f6378..4992fa1730c0 100644 --- a/packages/jest-fake-timers/package.json +++ b/packages/jest-fake-timers/package.json @@ -1,6 +1,6 @@ { "name": "@jest/fake-timers", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,12 +14,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "@sinonjs/fake-timers": "^7.0.2", "@types/node": "*", - "jest-message-util": "^27.0.0-next.9", - "jest-mock": "^27.0.0-next.8", - "jest-util": "^27.0.0-next.9" + "jest-message-util": "^27.0.0-next.10", + "jest-mock": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10" }, "devDependencies": { "@types/sinonjs__fake-timers": "^6.0.1", diff --git a/packages/jest-globals/package.json b/packages/jest-globals/package.json index 4714570b9c04..9c2563cdbde8 100644 --- a/packages/jest-globals/package.json +++ b/packages/jest-globals/package.json @@ -1,6 +1,6 @@ { "name": "@jest/globals", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,9 +17,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", - "expect": "^27.0.0-next.9" + "@jest/environment": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", + "expect": "^27.0.0-next.10" }, "publishConfig": { "access": "public" diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index d0d208bea837..2a2c67ad51ff 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -1,6 +1,6 @@ { "name": "jest-haste-map", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", @@ -22,13 +22,13 @@ "graceful-fs": "^4.2.4", "jest-regex-util": "^27.0.0-next.0", "jest-serializer": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "jest-worker": "^27.0.0-next.9", + "jest-util": "^27.0.0-next.10", + "jest-worker": "^27.0.0-next.10", "micromatch": "^4.0.4", "walker": "^1.0.7" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/anymatch": "^1.3.1", "@types/fb-watchman": "^2.0.0", "@types/micromatch": "^4.0.1", diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index c4647bb7447b..329248087932 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -1,6 +1,6 @@ { "name": "jest-jasmine2", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,22 +15,22 @@ }, "dependencies": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.0.0-next.9", + "@jest/environment": "^27.0.0-next.10", "@jest/source-map": "^27.0.0-next.3", - "@jest/test-result": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/test-result": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.0.0-next.9", + "expect": "^27.0.0-next.10", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.0-next.9", - "jest-matcher-utils": "^27.0.0-next.9", - "jest-message-util": "^27.0.0-next.9", - "jest-runtime": "^27.0.0-next.9", - "jest-snapshot": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.9", + "jest-each": "^27.0.0-next.10", + "jest-matcher-utils": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.10", + "jest-runtime": "^27.0.0-next.10", + "jest-snapshot": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "pretty-format": "^27.0.0-next.10", "throat": "^6.0.1" }, "devDependencies": { diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json index 719c2a7eb18f..51407f4598c2 100644 --- a/packages/jest-leak-detector/package.json +++ b/packages/jest-leak-detector/package.json @@ -1,6 +1,6 @@ { "name": "jest-leak-detector", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,7 +15,7 @@ }, "dependencies": { "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.9" + "pretty-format": "^27.0.0-next.10" }, "devDependencies": { "@types/weak-napi": "^2.0.0", diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json index 78a6e4557531..9375546d94f5 100644 --- a/packages/jest-matcher-utils/package.json +++ b/packages/jest-matcher-utils/package.json @@ -1,7 +1,7 @@ { "name": "jest-matcher-utils", "description": "A set of utility functions for expect and related packages", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,12 +19,12 @@ }, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.0.0-next.9", + "jest-diff": "^27.0.0-next.10", "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.9" + "pretty-format": "^27.0.0-next.10" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/node": "*" }, "publishConfig": { diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index 4c4ce84eccdb..5159e78ff682 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-message-util", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -18,12 +18,12 @@ }, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.0.0-next.9", + "pretty-format": "^27.0.0-next.10", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, diff --git a/packages/jest-mock/package.json b/packages/jest-mock/package.json index 62499e09712e..83b02ef0631b 100644 --- a/packages/jest-mock/package.json +++ b/packages/jest-mock/package.json @@ -1,6 +1,6 @@ { "name": "jest-mock", - "version": "27.0.0-next.8", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -10,7 +10,7 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "@types/node": "*" }, "license": "MIT", diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json index 41cfc2990a60..b0b6ab006749 100644 --- a/packages/jest-phabricator/package.json +++ b/packages/jest-phabricator/package.json @@ -1,6 +1,6 @@ { "name": "jest-phabricator", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -12,7 +12,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.9" + "@jest/test-result": "^27.0.0-next.10" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-repl/package.json b/packages/jest-repl/package.json index 622dd0b8f093..5e67008b9d52 100644 --- a/packages/jest-repl/package.json +++ b/packages/jest-repl/package.json @@ -1,6 +1,6 @@ { "name": "jest-repl", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,20 +16,20 @@ "./bin/jest-runtime-cli": "./bin/jest-runtime-cli.js" }, "dependencies": { - "@jest/console": "^27.0.0-next.9", - "@jest/environment": "^27.0.0-next.9", - "@jest/transform": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/console": "^27.0.0-next.10", + "@jest/environment": "^27.0.0-next.10", + "@jest/transform": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", - "jest-config": "^27.0.0-next.9", - "jest-runtime": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "jest-validate": "^27.0.0-next.9", + "jest-config": "^27.0.0-next.10", + "jest-runtime": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "jest-validate": "^27.0.0-next.10", "repl": "^0.1.3", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/yargs": "^16.0.0", "execa": "^5.0.0" }, diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index 53e60f2d84e4..a1895aecb0e5 100644 --- a/packages/jest-reporters/package.json +++ b/packages/jest-reporters/package.json @@ -1,7 +1,7 @@ { "name": "@jest/reporters", "description": "Jest's reporters", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,10 +10,10 @@ }, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.0.0-next.9", - "@jest/test-result": "^27.0.0-next.9", - "@jest/transform": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/console": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.10", + "@jest/transform": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", @@ -24,10 +24,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.0.0-next.9", - "jest-resolve": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "jest-worker": "^27.0.0-next.9", + "jest-haste-map": "^27.0.0-next.10", + "jest-resolve": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "jest-worker": "^27.0.0-next.10", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -35,7 +35,7 @@ "v8-to-istanbul": "^7.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-resolve-dependencies/package.json b/packages/jest-resolve-dependencies/package.json index 15f360e437f7..c90d4b7aec0b 100644 --- a/packages/jest-resolve-dependencies/package.json +++ b/packages/jest-resolve-dependencies/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve-dependencies", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-snapshot": "^27.0.0-next.9" + "jest-snapshot": "^27.0.0-next.10" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", - "jest-haste-map": "^27.0.0-next.9", - "jest-resolve": "^27.0.0-next.9", - "jest-runtime": "^27.0.0-next.9" + "@jest/test-utils": "^27.0.0-next.10", + "jest-haste-map": "^27.0.0-next.10", + "jest-resolve": "^27.0.0-next.10", + "jest-runtime": "^27.0.0-next.10" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index 7e4d276d8ef9..eb8fdc78f5df 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,19 +14,19 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "escalade": "^3.1.1", "graceful-fs": "^4.2.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.0.0-next.9", + "jest-util": "^27.0.0-next.10", "resolve": "^1.20.0", "slash": "^3.0.0" }, "devDependencies": { "@types/graceful-fs": "^4.1.3", "@types/resolve": "^1.20.0", - "jest-haste-map": "^27.0.0-next.9" + "jest-haste-map": "^27.0.0-next.10" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 9dff3e73426d..901d5e872054 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -1,6 +1,6 @@ { "name": "jest-runner", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,25 +14,25 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.9", - "@jest/environment": "^27.0.0-next.9", - "@jest/test-result": "^27.0.0-next.9", - "@jest/transform": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/console": "^27.0.0-next.10", + "@jest/environment": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.10", + "@jest/transform": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-config": "^27.0.0-next.9", - "jest-docblock": "^27.0.0-next.0", - "jest-haste-map": "^27.0.0-next.9", - "jest-leak-detector": "^27.0.0-next.9", - "jest-message-util": "^27.0.0-next.9", - "jest-resolve": "^27.0.0-next.9", - "jest-runtime": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "jest-worker": "^27.0.0-next.9", + "jest-config": "^27.0.0-next.10", + "jest-docblock": "^27.0.0-next.10", + "jest-haste-map": "^27.0.0-next.10", + "jest-leak-detector": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.10", + "jest-resolve": "^27.0.0-next.10", + "jest-runtime": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "jest-worker": "^27.0.0-next.10", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -40,7 +40,7 @@ "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/source-map-support": "^0.5.0", - "jest-jasmine2": "^27.0.0-next.9" + "jest-jasmine2": "^27.0.0-next.10" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index b3f1b1131dae..f77f9bd949de 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -1,6 +1,6 @@ { "name": "jest-runtime", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,14 +14,14 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.9", - "@jest/environment": "^27.0.0-next.9", - "@jest/fake-timers": "^27.0.0-next.9", - "@jest/globals": "^27.0.0-next.9", + "@jest/console": "^27.0.0-next.10", + "@jest/environment": "^27.0.0-next.10", + "@jest/fake-timers": "^27.0.0-next.10", + "@jest/globals": "^27.0.0-next.10", "@jest/source-map": "^27.0.0-next.3", - "@jest/test-result": "^27.0.0-next.9", - "@jest/transform": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/test-result": "^27.0.0-next.10", + "@jest/transform": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", @@ -29,26 +29,26 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.9", - "jest-message-util": "^27.0.0-next.9", - "jest-mock": "^27.0.0-next.8", + "jest-haste-map": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.10", + "jest-mock": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.9", - "jest-snapshot": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", - "jest-validate": "^27.0.0-next.9", + "jest-resolve": "^27.0.0-next.10", + "jest-snapshot": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", + "jest-validate": "^27.0.0-next.10", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.2", "@types/node": "^14.0.27", "execa": "^5.0.0", - "jest-environment-node": "^27.0.0-next.9", + "jest-environment-node": "^27.0.0-next.10", "jest-snapshot-serializer-raw": "^1.1.0" }, "engines": { diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json index 56a3c05ce3a2..1c83bf004836 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -1,6 +1,6 @@ { "name": "jest-snapshot", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -20,29 +20,29 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/transform": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.0.0-next.9", + "expect": "^27.0.0-next.10", "graceful-fs": "^4.2.4", - "jest-diff": "^27.0.0-next.9", + "jest-diff": "^27.0.0-next.10", "jest-get-type": "^27.0.0-next.9", - "jest-haste-map": "^27.0.0-next.9", - "jest-matcher-utils": "^27.0.0-next.9", - "jest-message-util": "^27.0.0-next.9", - "jest-resolve": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.9", + "jest-haste-map": "^27.0.0-next.10", + "jest-matcher-utils": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.10", + "jest-resolve": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.10", "natural-compare": "^1.4.0", - "pretty-format": "^27.0.0-next.9", + "pretty-format": "^27.0.0-next.10", "semver": "^7.3.2" }, "devDependencies": { "@babel/preset-flow": "^7.7.2", "@babel/preset-react": "^7.7.2", - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/graceful-fs": "^4.1.3", "@types/natural-compare": "^1.4.0", "@types/semver": "^7.1.0", diff --git a/packages/jest-test-result/package.json b/packages/jest-test-result/package.json index fa547333f25c..06f7d9a6f0ef 100644 --- a/packages/jest-test-result/package.json +++ b/packages/jest-test-result/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-result", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,8 +14,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/console": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json index d85eb6e56532..c18e0086596b 100644 --- a/packages/jest-test-sequencer/package.json +++ b/packages/jest-test-sequencer/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-sequencer", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,11 +14,11 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.9", + "@jest/test-result": "^27.0.0-next.10", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.9", - "jest-runner": "^27.0.0-next.9", - "jest-runtime": "^27.0.0-next.9" + "jest-haste-map": "^27.0.0-next.10", + "jest-runner": "^27.0.0-next.10", + "jest-runtime": "^27.0.0-next.10" }, "devDependencies": { "@types/graceful-fs": "^4.1.3" diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index b3c9f7a0ec4a..d263a5553a79 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -1,6 +1,6 @@ { "name": "@jest/transform", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,15 +15,15 @@ }, "dependencies": { "@babel/core": "^7.1.0", - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.9", + "jest-haste-map": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-util": "^27.0.0-next.9", + "jest-util": "^27.0.0-next.10", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -31,7 +31,7 @@ "write-file-atomic": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.9", + "@jest/test-utils": "^27.0.0-next.10", "@types/babel__core": "^7.1.0", "@types/convert-source-map": "^1.5.1", "@types/fast-json-stable-stringify": "^2.0.0", diff --git a/packages/jest-types/package.json b/packages/jest-types/package.json index e20b0b2c55e8..ead2b1f6f1fa 100644 --- a/packages/jest-types/package.json +++ b/packages/jest-types/package.json @@ -1,6 +1,6 @@ { "name": "@jest/types", - "version": "27.0.0-next.8", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json index 1aec93dd0ec6..dd597f61db67 100644 --- a/packages/jest-util/package.json +++ b/packages/jest-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-util", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json index 58694e2f73b9..a4ba97dedbfa 100644 --- a/packages/jest-validate/package.json +++ b/packages/jest-validate/package.json @@ -1,6 +1,6 @@ { "name": "jest-validate", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,12 +14,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^27.0.0-next.9", "leven": "^3.1.0", - "pretty-format": "^27.0.0-next.9" + "pretty-format": "^27.0.0-next.10" }, "devDependencies": { "@types/yargs": "^16.0.0" diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json index ff319a0570ea..7ebdd471fe97 100644 --- a/packages/jest-watcher/package.json +++ b/packages/jest-watcher/package.json @@ -1,7 +1,7 @@ { "name": "jest-watcher", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -9,12 +9,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.9", - "@jest/types": "^27.0.0-next.8", + "@jest/test-result": "^27.0.0-next.10", + "@jest/types": "^27.0.0-next.10", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.0.0-next.9", + "jest-util": "^27.0.0-next.10", "string-length": "^4.0.1" }, "repository": { diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json index 9db65d217de4..9d022139fdfb 100644 --- a/packages/jest-worker/package.json +++ b/packages/jest-worker/package.json @@ -1,6 +1,6 @@ { "name": "jest-worker", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -22,7 +22,7 @@ "@types/merge-stream": "^1.1.2", "@types/supports-color": "^8.1.0", "get-stream": "^6.0.0", - "jest-leak-detector": "^27.0.0-next.9", + "jest-leak-detector": "^27.0.0-next.10", "worker-farm": "^1.6.0" }, "engines": { diff --git a/packages/jest/package.json b/packages/jest/package.json index aa7fe3b1df7d..0095d6059b05 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -1,7 +1,7 @@ { "name": "jest", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -10,9 +10,9 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^27.0.0-next.9", + "@jest/core": "^27.0.0-next.10", "import-local": "^3.0.2", - "jest-cli": "^27.0.0-next.9" + "jest-cli": "^27.0.0-next.10" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0" diff --git a/packages/pretty-format/package.json b/packages/pretty-format/package.json index daad85196e28..94bc03c2f178 100644 --- a/packages/pretty-format/package.json +++ b/packages/pretty-format/package.json @@ -1,6 +1,6 @@ { "name": "pretty-format", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,7 +16,7 @@ }, "author": "James Kyle ", "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -26,7 +26,7 @@ "@types/react-is": "^17.0.0", "@types/react-test-renderer": "*", "immutable": "4.0.0-rc.9", - "jest-util": "^27.0.0-next.9", + "jest-util": "^27.0.0-next.10", "react": "*", "react-dom": "*", "react-test-renderer": "*" diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index fadc0fb8cf5d..659b9a8ed51e 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-utils", - "version": "27.0.0-next.9", + "version": "27.0.0-next.10", "private": true, "license": "MIT", "main": "./build/index.js", @@ -10,13 +10,13 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.8", + "@jest/types": "^27.0.0-next.10", "@types/jest": "*", "@types/node": "*", "@types/semver": "^7.1.0", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", - "pretty-format": "^27.0.0-next.9", + "pretty-format": "^27.0.0-next.10", "semver": "^7.3.2" }, "engines": { From 150dbd82f223855a2a7dfd23a74ac8464e43f99a Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Thu, 20 May 2021 16:12:34 +0200 Subject: [PATCH 16/65] chore: update lockfile after publish --- yarn.lock | 492 +++++++++++++++++++++++++++--------------------------- 1 file changed, 246 insertions(+), 246 deletions(-) diff --git a/yarn.lock b/yarn.lock index 18007b2c16ae..ad9d0a4222de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2448,16 +2448,16 @@ __metadata: languageName: node linkType: hard -"@jest/console@^27.0.0-next.9, @jest/console@workspace:packages/jest-console": +"@jest/console@^27.0.0-next.10, @jest/console@workspace:packages/jest-console": version: 0.0.0-use.local resolution: "@jest/console@workspace:packages/jest-console" dependencies: - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^27.0.0-next.9 - jest-util: ^27.0.0-next.9 + jest-message-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 slash: ^3.0.0 languageName: unknown linkType: soft @@ -2476,17 +2476,17 @@ __metadata: languageName: node linkType: hard -"@jest/core@^27.0.0-next.9, @jest/core@workspace:packages/jest-core": +"@jest/core@^27.0.0-next.10, @jest/core@workspace:packages/jest-core": version: 0.0.0-use.local resolution: "@jest/core@workspace:packages/jest-core" dependencies: - "@jest/console": ^27.0.0-next.9 - "@jest/reporters": ^27.0.0-next.9 - "@jest/test-result": ^27.0.0-next.9 - "@jest/test-sequencer": ^27.0.0-next.9 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/transform": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/console": ^27.0.0-next.10 + "@jest/reporters": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.10 + "@jest/test-sequencer": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/transform": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 "@types/micromatch": ^4.0.1 @@ -2497,20 +2497,20 @@ __metadata: emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-changed-files: ^27.0.0-next.8 - jest-config: ^27.0.0-next.9 - jest-haste-map: ^27.0.0-next.9 - jest-message-util: ^27.0.0-next.9 + jest-changed-files: ^27.0.0-next.10 + jest-config: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.10 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.9 - jest-resolve-dependencies: ^27.0.0-next.9 - jest-runner: ^27.0.0-next.9 - jest-runtime: ^27.0.0-next.9 - jest-snapshot: ^27.0.0-next.9 + jest-resolve: ^27.0.0-next.10 + jest-resolve-dependencies: ^27.0.0-next.10 + jest-runner: ^27.0.0-next.10 + jest-runtime: ^27.0.0-next.10 + jest-snapshot: ^27.0.0-next.10 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.9 - jest-validate: ^27.0.0-next.9 - jest-watcher: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 + jest-validate: ^27.0.0-next.10 + jest-watcher: ^27.0.0-next.10 micromatch: ^4.0.4 p-each-series: ^2.1.0 rimraf: ^3.0.0 @@ -2528,45 +2528,45 @@ __metadata: version: 0.0.0-use.local resolution: "@jest/create-cache-key-function@workspace:packages/jest-create-cache-key-function" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@types/node": "*" - jest-util: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 languageName: unknown linkType: soft -"@jest/environment@^27.0.0-next.9, @jest/environment@workspace:packages/jest-environment": +"@jest/environment@^27.0.0-next.10, @jest/environment@workspace:packages/jest-environment": version: 0.0.0-use.local resolution: "@jest/environment@workspace:packages/jest-environment" dependencies: - "@jest/fake-timers": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/fake-timers": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/node": "*" - jest-mock: ^27.0.0-next.8 + jest-mock: ^27.0.0-next.10 languageName: unknown linkType: soft -"@jest/fake-timers@^27.0.0-next.9, @jest/fake-timers@workspace:packages/jest-fake-timers": +"@jest/fake-timers@^27.0.0-next.10, @jest/fake-timers@workspace:packages/jest-fake-timers": version: 0.0.0-use.local resolution: "@jest/fake-timers@workspace:packages/jest-fake-timers" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@sinonjs/fake-timers": ^7.0.2 "@types/node": "*" "@types/sinonjs__fake-timers": ^6.0.1 - jest-message-util: ^27.0.0-next.9 - jest-mock: ^27.0.0-next.8 + jest-message-util: ^27.0.0-next.10 + jest-mock: ^27.0.0-next.10 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 languageName: unknown linkType: soft -"@jest/globals@^27.0.0-next.9, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": +"@jest/globals@^27.0.0-next.10, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": version: 0.0.0-use.local resolution: "@jest/globals@workspace:packages/jest-globals" dependencies: - "@jest/environment": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 - expect: ^27.0.0-next.9 + "@jest/environment": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 + expect: ^27.0.0-next.10 languageName: unknown linkType: soft @@ -2657,16 +2657,16 @@ __metadata: languageName: unknown linkType: soft -"@jest/reporters@^27.0.0-next.9, @jest/reporters@workspace:packages/jest-reporters": +"@jest/reporters@^27.0.0-next.10, @jest/reporters@workspace:packages/jest-reporters": version: 0.0.0-use.local resolution: "@jest/reporters@workspace:packages/jest-reporters" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.0.0-next.9 - "@jest/test-result": ^27.0.0-next.9 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/transform": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/console": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/transform": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 @@ -2686,10 +2686,10 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^27.0.0-next.9 - jest-resolve: ^27.0.0-next.9 - jest-util: ^27.0.0-next.9 - jest-worker: ^27.0.0-next.9 + jest-haste-map: ^27.0.0-next.10 + jest-resolve: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 + jest-worker: ^27.0.0-next.10 mock-fs: ^4.4.1 slash: ^3.0.0 source-map: ^0.6.0 @@ -2716,12 +2716,12 @@ __metadata: languageName: unknown linkType: soft -"@jest/test-result@^27.0.0-next.9, @jest/test-result@workspace:packages/jest-test-result": +"@jest/test-result@^27.0.0-next.10, @jest/test-result@workspace:packages/jest-test-result": version: 0.0.0-use.local resolution: "@jest/test-result@workspace:packages/jest-test-result" dependencies: - "@jest/console": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/console": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 languageName: unknown @@ -2739,41 +2739,41 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@^27.0.0-next.9, @jest/test-sequencer@workspace:packages/jest-test-sequencer": +"@jest/test-sequencer@^27.0.0-next.10, @jest/test-sequencer@workspace:packages/jest-test-sequencer": version: 0.0.0-use.local resolution: "@jest/test-sequencer@workspace:packages/jest-test-sequencer" dependencies: - "@jest/test-result": ^27.0.0-next.9 + "@jest/test-result": ^27.0.0-next.10 "@types/graceful-fs": ^4.1.3 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.9 - jest-runner: ^27.0.0-next.9 - jest-runtime: ^27.0.0-next.9 + jest-haste-map: ^27.0.0-next.10 + jest-runner: ^27.0.0-next.10 + jest-runtime: ^27.0.0-next.10 languageName: unknown linkType: soft -"@jest/test-utils@^27.0.0-next.9, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": +"@jest/test-utils@^27.0.0-next.10, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": version: 0.0.0-use.local resolution: "@jest/test-utils@workspace:packages/test-utils" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@types/jest": "*" "@types/node": "*" "@types/semver": ^7.1.0 ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 - pretty-format: ^27.0.0-next.9 + pretty-format: ^27.0.0-next.10 semver: ^7.3.2 languageName: unknown linkType: soft -"@jest/transform@^27.0.0-next.9, @jest/transform@workspace:packages/jest-transform": +"@jest/transform@^27.0.0-next.10, @jest/transform@workspace:packages/jest-transform": version: 0.0.0-use.local resolution: "@jest/transform@workspace:packages/jest-transform" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.1.0 "@types/convert-source-map": ^1.5.1 "@types/fast-json-stable-stringify": ^2.0.0 @@ -2786,10 +2786,10 @@ __metadata: dedent: ^0.7.0 fast-json-stable-stringify: ^2.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.9 + jest-haste-map: ^27.0.0-next.10 jest-regex-util: ^27.0.0-next.0 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 micromatch: ^4.0.4 pirates: ^4.0.1 slash: ^3.0.0 @@ -2798,7 +2798,7 @@ __metadata: languageName: unknown linkType: soft -"@jest/types@^27.0.0-next.8, @jest/types@workspace:packages/jest-types": +"@jest/types@^27.0.0-next.10, @jest/types@workspace:packages/jest-types": version: 0.0.0-use.local resolution: "@jest/types@workspace:packages/jest-types" dependencies: @@ -6090,13 +6090,13 @@ __metadata: resolution: "babel-jest@workspace:packages/babel-jest" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/transform": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/transform": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.1.14 "@types/graceful-fs": ^4.1.3 babel-plugin-istanbul: ^6.0.0 - babel-preset-jest: ^27.0.0-next.3 + babel-preset-jest: ^27.0.0-next.10 chalk: ^4.0.0 graceful-fs: ^4.2.4 slash: ^3.0.0 @@ -6172,7 +6172,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@^27.0.0-next.3, babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist": +"babel-plugin-jest-hoist@^27.0.0-next.10, babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist": version: 0.0.0-use.local resolution: "babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist" dependencies: @@ -6322,11 +6322,11 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@^27.0.0-next.3, babel-preset-jest@workspace:packages/babel-preset-jest": +"babel-preset-jest@^27.0.0-next.10, babel-preset-jest@workspace:packages/babel-preset-jest": version: 0.0.0-use.local resolution: "babel-preset-jest@workspace:packages/babel-preset-jest" dependencies: - babel-plugin-jest-hoist: ^27.0.0-next.3 + babel-plugin-jest-hoist: ^27.0.0-next.10 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 @@ -9836,19 +9836,19 @@ __metadata: languageName: node linkType: hard -"expect@^27.0.0-next.9, expect@workspace:packages/expect": +"expect@^27.0.0-next.10, expect@workspace:packages/expect": version: 0.0.0-use.local resolution: "expect@workspace:packages/expect" dependencies: - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 ansi-styles: ^5.0.0 chalk: ^4.0.0 fast-check: ^2.0.0 immutable: ^4.0.0-rc.12 jest-get-type: ^27.0.0-next.9 - jest-matcher-utils: ^27.0.0-next.9 - jest-message-util: ^27.0.0-next.9 + jest-matcher-utils: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.10 jest-regex-util: ^27.0.0-next.0 languageName: unknown linkType: soft @@ -12650,26 +12650,26 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-changed-files@^27.0.0-next.8, jest-changed-files@workspace:*, jest-changed-files@workspace:packages/jest-changed-files": +"jest-changed-files@^27.0.0-next.10, jest-changed-files@workspace:*, jest-changed-files@workspace:packages/jest-changed-files": version: 0.0.0-use.local resolution: "jest-changed-files@workspace:packages/jest-changed-files" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 execa: ^5.0.0 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-circus@^27.0.0-next.9, jest-circus@workspace:packages/jest-circus": +"jest-circus@^27.0.0-next.10, jest-circus@workspace:packages/jest-circus": version: 0.0.0-use.local resolution: "jest-circus@workspace:packages/jest-circus" dependencies: "@babel/core": ^7.1.0 "@babel/register": ^7.0.0 - "@jest/environment": ^27.0.0-next.9 - "@jest/test-result": ^27.0.0-next.9 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/environment": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/co": ^4.6.0 "@types/dedent": ^0.7.0 "@types/graceful-fs": ^4.1.3 @@ -12679,31 +12679,31 @@ fsevents@^1.2.7: co: ^4.6.0 dedent: ^0.7.0 execa: ^5.0.0 - expect: ^27.0.0-next.9 + expect: ^27.0.0-next.10 graceful-fs: ^4.2.4 is-generator-fn: ^2.0.0 - jest-each: ^27.0.0-next.9 - jest-matcher-utils: ^27.0.0-next.9 - jest-message-util: ^27.0.0-next.9 - jest-runner: ^27.0.0-next.9 - jest-runtime: ^27.0.0-next.9 - jest-snapshot: ^27.0.0-next.9 + jest-each: ^27.0.0-next.10 + jest-matcher-utils: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.10 + jest-runner: ^27.0.0-next.10 + jest-runtime: ^27.0.0-next.10 + jest-snapshot: ^27.0.0-next.10 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.10 stack-utils: ^2.0.3 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-cli@^27.0.0-next.9, jest-cli@workspace:packages/jest-cli": +"jest-cli@^27.0.0-next.10, jest-cli@workspace:packages/jest-cli": version: 0.0.0-use.local resolution: "jest-cli@workspace:packages/jest-cli" dependencies: - "@jest/core": ^27.0.0-next.9 - "@jest/test-result": ^27.0.0-next.9 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/core": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.3 "@types/prompts": ^2.0.1 @@ -12712,9 +12712,9 @@ fsevents@^1.2.7: exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - jest-config: ^27.0.0-next.9 - jest-util: ^27.0.0-next.9 - jest-validate: ^27.0.0-next.9 + jest-config: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 + jest-validate: ^27.0.0-next.10 prompts: ^2.0.1 yargs: ^16.0.3 peerDependencies: @@ -12727,36 +12727,36 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-config@^27.0.0-next.9, jest-config@workspace:packages/jest-config": +"jest-config@^27.0.0-next.10, jest-config@workspace:packages/jest-config": version: 0.0.0-use.local resolution: "jest-config@workspace:packages/jest-config" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-sequencer": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.0.4 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 "@types/is-ci": ^3.0.0 "@types/micromatch": ^4.0.1 - babel-jest: ^27.0.0-next.9 + babel-jest: ^27.0.0-next.10 chalk: ^4.0.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 is-ci: ^3.0.0 - jest-circus: ^27.0.0-next.9 - jest-environment-jsdom: ^27.0.0-next.9 - jest-environment-node: ^27.0.0-next.9 + jest-circus: ^27.0.0-next.10 + jest-environment-jsdom: ^27.0.0-next.10 + jest-environment-node: ^27.0.0-next.10 jest-get-type: ^27.0.0-next.9 - jest-jasmine2: ^27.0.0-next.9 + jest-jasmine2: ^27.0.0-next.10 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.9 + jest-resolve: ^27.0.0-next.10 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.9 - jest-validate: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 + jest-validate: ^27.0.0-next.10 micromatch: ^4.0.4 - pretty-format: ^27.0.0-next.9 + pretty-format: ^27.0.0-next.10 strip-ansi: ^6.0.0 ts-node: ^9.0.0 typescript: ^4.0.3 @@ -12768,15 +12768,15 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-diff@^27.0.0-next.9, jest-diff@workspace:packages/jest-diff": +"jest-diff@^27.0.0-next.10, jest-diff@workspace:packages/jest-diff": version: 0.0.0-use.local resolution: "jest-diff@workspace:packages/jest-diff" dependencies: - "@jest/test-utils": ^27.0.0-next.9 + "@jest/test-utils": ^27.0.0-next.10 chalk: ^4.0.0 diff-sequences: ^27.0.0-next.0 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.9 + pretty-format: ^27.0.0-next.10 strip-ansi: ^6.0.0 languageName: unknown linkType: soft @@ -12793,7 +12793,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-docblock@^27.0.0-next.0, jest-docblock@workspace:packages/jest-docblock": +"jest-docblock@^27.0.0-next.10, jest-docblock@workspace:packages/jest-docblock": version: 0.0.0-use.local resolution: "jest-docblock@workspace:packages/jest-docblock" dependencies: @@ -12811,30 +12811,30 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-each@^27.0.0-next.9, jest-each@workspace:packages/jest-each": +"jest-each@^27.0.0-next.10, jest-each@workspace:packages/jest-each": version: 0.0.0-use.local resolution: "jest-each@workspace:packages/jest-each" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 chalk: ^4.0.0 jest-get-type: ^27.0.0-next.9 - jest-util: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.10 languageName: unknown linkType: soft -"jest-environment-jsdom@^27.0.0-next.9, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": +"jest-environment-jsdom@^27.0.0-next.10, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": version: 0.0.0-use.local resolution: "jest-environment-jsdom@workspace:packages/jest-environment-jsdom" dependencies: - "@jest/environment": ^27.0.0-next.9 - "@jest/fake-timers": ^27.0.0-next.9 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/environment": ^27.0.0-next.10 + "@jest/fake-timers": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/jsdom": ^16.2.4 "@types/node": "*" - jest-mock: ^27.0.0-next.8 - jest-util: ^27.0.0-next.9 + jest-mock: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 jsdom: ^16.4.0 languageName: unknown linkType: soft @@ -12843,13 +12843,13 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-environment-node@workspace:packages/jest-environment-node" dependencies: - "@jest/environment": ^27.0.0-next.9 - "@jest/fake-timers": ^27.0.0-next.9 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/environment": ^27.0.0-next.10 + "@jest/fake-timers": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/node": "*" - jest-mock: ^27.0.0-next.8 - jest-util: ^27.0.0-next.9 + jest-mock: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 languageName: unknown linkType: soft @@ -12873,12 +12873,12 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-haste-map@^27.0.0-next.9, jest-haste-map@workspace:packages/jest-haste-map": +"jest-haste-map@^27.0.0-next.10, jest-haste-map@workspace:packages/jest-haste-map": version: 0.0.0-use.local resolution: "jest-haste-map@workspace:packages/jest-haste-map" dependencies: - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/anymatch": ^1.3.1 "@types/fb-watchman": ^2.0.0 "@types/graceful-fs": ^4.1.2 @@ -12891,8 +12891,8 @@ fsevents@^1.2.7: jest-regex-util: ^27.0.0-next.0 jest-serializer: ^27.0.0-next.9 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.9 - jest-worker: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 + jest-worker: ^27.0.0-next.10 micromatch: ^4.0.4 slash: ^3.0.0 walker: ^1.0.7 @@ -12927,29 +12927,29 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-jasmine2@^27.0.0-next.9, jest-jasmine2@workspace:packages/jest-jasmine2": +"jest-jasmine2@^27.0.0-next.10, jest-jasmine2@workspace:packages/jest-jasmine2": version: 0.0.0-use.local resolution: "jest-jasmine2@workspace:packages/jest-jasmine2" dependencies: "@babel/traverse": ^7.1.0 - "@jest/environment": ^27.0.0-next.9 + "@jest/environment": ^27.0.0-next.10 "@jest/source-map": ^27.0.0-next.3 - "@jest/test-result": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-result": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/babel__traverse": ^7.0.4 "@types/co": ^4.6.2 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - expect: ^27.0.0-next.9 + expect: ^27.0.0-next.10 is-generator-fn: ^2.0.0 - jest-each: ^27.0.0-next.9 - jest-matcher-utils: ^27.0.0-next.9 - jest-message-util: ^27.0.0-next.9 - jest-runtime: ^27.0.0-next.9 - jest-snapshot: ^27.0.0-next.9 - jest-util: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.9 + jest-each: ^27.0.0-next.10 + jest-matcher-utils: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.10 + jest-runtime: ^27.0.0-next.10 + jest-snapshot: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.10 throat: ^6.0.1 languageName: unknown linkType: soft @@ -12966,36 +12966,36 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-leak-detector@^27.0.0-next.9, jest-leak-detector@workspace:packages/jest-leak-detector": +"jest-leak-detector@^27.0.0-next.10, jest-leak-detector@workspace:packages/jest-leak-detector": version: 0.0.0-use.local resolution: "jest-leak-detector@workspace:packages/jest-leak-detector" dependencies: "@types/weak-napi": ^2.0.0 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.9 + pretty-format: ^27.0.0-next.10 weak-napi: ^2.0.1 languageName: unknown linkType: soft -"jest-matcher-utils@^27.0.0-next.9, jest-matcher-utils@workspace:packages/jest-matcher-utils": +"jest-matcher-utils@^27.0.0-next.10, jest-matcher-utils@workspace:packages/jest-matcher-utils": version: 0.0.0-use.local resolution: "jest-matcher-utils@workspace:packages/jest-matcher-utils" dependencies: - "@jest/test-utils": ^27.0.0-next.9 + "@jest/test-utils": ^27.0.0-next.10 "@types/node": "*" chalk: ^4.0.0 - jest-diff: ^27.0.0-next.9 + jest-diff: ^27.0.0-next.10 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.9 + pretty-format: ^27.0.0-next.10 languageName: unknown linkType: soft -"jest-message-util@^27.0.0-next.9, jest-message-util@workspace:packages/jest-message-util": +"jest-message-util@^27.0.0-next.10, jest-message-util@workspace:packages/jest-message-util": version: 0.0.0-use.local resolution: "jest-message-util@workspace:packages/jest-message-util" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@types/babel__code-frame": ^7.0.0 "@types/graceful-fs": ^4.1.3 "@types/micromatch": ^4.0.1 @@ -13003,7 +13003,7 @@ fsevents@^1.2.7: chalk: ^4.0.0 graceful-fs: ^4.2.4 micromatch: ^4.0.4 - pretty-format: ^27.0.0-next.9 + pretty-format: ^27.0.0-next.10 slash: ^3.0.0 stack-utils: ^2.0.3 languageName: unknown @@ -13026,11 +13026,11 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-mock@^27.0.0-next.8, jest-mock@workspace:*, jest-mock@workspace:packages/jest-mock": +"jest-mock@^27.0.0-next.10, jest-mock@workspace:*, jest-mock@workspace:packages/jest-mock": version: 0.0.0-use.local resolution: "jest-mock@workspace:packages/jest-mock" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@types/node": "*" languageName: unknown linkType: soft @@ -13039,7 +13039,7 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-phabricator@workspace:packages/jest-phabricator" dependencies: - "@jest/test-result": ^27.0.0-next.9 + "@jest/test-result": ^27.0.0-next.10 languageName: unknown linkType: soft @@ -13074,18 +13074,18 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-repl@workspace:packages/jest-repl" dependencies: - "@jest/console": ^27.0.0-next.9 - "@jest/environment": ^27.0.0-next.9 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/transform": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/console": ^27.0.0-next.10 + "@jest/environment": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/transform": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/yargs": ^16.0.0 chalk: ^4.0.0 execa: ^5.0.0 - jest-config: ^27.0.0-next.9 - jest-runtime: ^27.0.0-next.9 - jest-util: ^27.0.0-next.9 - jest-validate: ^27.0.0-next.9 + jest-config: ^27.0.0-next.10 + jest-runtime: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 + jest-validate: ^27.0.0-next.10 repl: ^0.1.3 yargs: ^16.0.3 bin: @@ -13094,33 +13094,33 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-resolve-dependencies@^27.0.0-next.9, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": +"jest-resolve-dependencies@^27.0.0-next.10, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": version: 0.0.0-use.local resolution: "jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies" dependencies: - "@jest/test-utils": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 - jest-haste-map: ^27.0.0-next.9 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.10 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.9 - jest-runtime: ^27.0.0-next.9 - jest-snapshot: ^27.0.0-next.9 + jest-resolve: ^27.0.0-next.10 + jest-runtime: ^27.0.0-next.10 + jest-snapshot: ^27.0.0-next.10 languageName: unknown linkType: soft -"jest-resolve@^27.0.0-next.9, jest-resolve@workspace:packages/jest-resolve": +"jest-resolve@^27.0.0-next.10, jest-resolve@workspace:packages/jest-resolve": version: 0.0.0-use.local resolution: "jest-resolve@workspace:packages/jest-resolve" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@types/graceful-fs": ^4.1.3 "@types/resolve": ^1.20.0 chalk: ^4.0.0 escalade: ^3.1.1 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.9 + jest-haste-map: ^27.0.0-next.10 jest-pnp-resolver: ^1.2.2 - jest-util: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 resolve: ^1.20.0 slash: ^3.0.0 languageName: unknown @@ -13137,15 +13137,15 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-runner@^27.0.0-next.9, jest-runner@workspace:packages/jest-runner": +"jest-runner@^27.0.0-next.10, jest-runner@workspace:packages/jest-runner": version: 0.0.0-use.local resolution: "jest-runner@workspace:packages/jest-runner" dependencies: - "@jest/console": ^27.0.0-next.9 - "@jest/environment": ^27.0.0-next.9 - "@jest/test-result": ^27.0.0-next.9 - "@jest/transform": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/console": ^27.0.0-next.10 + "@jest/environment": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.10 + "@jest/transform": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 "@types/node": "*" @@ -13154,34 +13154,34 @@ fsevents@^1.2.7: emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-config: ^27.0.0-next.9 - jest-docblock: ^27.0.0-next.0 - jest-haste-map: ^27.0.0-next.9 - jest-jasmine2: ^27.0.0-next.9 - jest-leak-detector: ^27.0.0-next.9 - jest-message-util: ^27.0.0-next.9 - jest-resolve: ^27.0.0-next.9 - jest-runtime: ^27.0.0-next.9 - jest-util: ^27.0.0-next.9 - jest-worker: ^27.0.0-next.9 + jest-config: ^27.0.0-next.10 + jest-docblock: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.10 + jest-jasmine2: ^27.0.0-next.10 + jest-leak-detector: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.10 + jest-resolve: ^27.0.0-next.10 + jest-runtime: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 + jest-worker: ^27.0.0-next.10 source-map-support: ^0.5.6 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-runtime@^27.0.0-next.9, jest-runtime@workspace:packages/jest-runtime": +"jest-runtime@^27.0.0-next.10, jest-runtime@workspace:packages/jest-runtime": version: 0.0.0-use.local resolution: "jest-runtime@workspace:packages/jest-runtime" dependencies: - "@jest/console": ^27.0.0-next.9 - "@jest/environment": ^27.0.0-next.9 - "@jest/fake-timers": ^27.0.0-next.9 - "@jest/globals": ^27.0.0-next.9 + "@jest/console": ^27.0.0-next.10 + "@jest/environment": ^27.0.0-next.10 + "@jest/fake-timers": ^27.0.0-next.10 + "@jest/globals": ^27.0.0-next.10 "@jest/source-map": ^27.0.0-next.3 - "@jest/test-result": ^27.0.0-next.9 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/transform": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-result": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/transform": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.2 @@ -13194,16 +13194,16 @@ fsevents@^1.2.7: exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-environment-node: ^27.0.0-next.9 - jest-haste-map: ^27.0.0-next.9 - jest-message-util: ^27.0.0-next.9 - jest-mock: ^27.0.0-next.8 + jest-environment-node: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.10 + jest-mock: ^27.0.0-next.10 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.9 - jest-snapshot: ^27.0.0-next.9 + jest-resolve: ^27.0.0-next.10 + jest-snapshot: ^27.0.0-next.10 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.9 - jest-validate: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 + jest-validate: ^27.0.0-next.10 slash: ^3.0.0 strip-bom: ^4.0.0 yargs: ^16.0.3 @@ -13247,7 +13247,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-snapshot@^27.0.0-next.9, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": +"jest-snapshot@^27.0.0-next.10, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": version: 0.0.0-use.local resolution: "jest-snapshot@workspace:packages/jest-snapshot" dependencies: @@ -13259,9 +13259,9 @@ fsevents@^1.2.7: "@babel/preset-react": ^7.7.2 "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 - "@jest/test-utils": ^27.0.0-next.9 - "@jest/transform": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-utils": ^27.0.0-next.10 + "@jest/transform": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/babel__traverse": ^7.0.4 "@types/graceful-fs": ^4.1.3 "@types/natural-compare": ^1.4.0 @@ -13271,27 +13271,27 @@ fsevents@^1.2.7: ansi-styles: ^5.0.0 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^27.0.0-next.9 + expect: ^27.0.0-next.10 graceful-fs: ^4.2.4 - jest-diff: ^27.0.0-next.9 + jest-diff: ^27.0.0-next.10 jest-get-type: ^27.0.0-next.9 - jest-haste-map: ^27.0.0-next.9 - jest-matcher-utils: ^27.0.0-next.9 - jest-message-util: ^27.0.0-next.9 - jest-resolve: ^27.0.0-next.9 - jest-util: ^27.0.0-next.9 + jest-haste-map: ^27.0.0-next.10 + jest-matcher-utils: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.10 + jest-resolve: ^27.0.0-next.10 + jest-util: ^27.0.0-next.10 natural-compare: ^1.4.0 prettier: ^2.0.0 - pretty-format: ^27.0.0-next.9 + pretty-format: ^27.0.0-next.10 semver: ^7.3.2 languageName: unknown linkType: soft -"jest-util@^27.0.0-next.9, jest-util@workspace:packages/jest-util": +"jest-util@^27.0.0-next.10, jest-util@workspace:packages/jest-util": version: 0.0.0-use.local resolution: "jest-util@workspace:packages/jest-util" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@types/graceful-fs": ^4.1.2 "@types/is-ci": ^3.0.0 "@types/micromatch": ^4.0.1 @@ -13318,17 +13318,17 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-validate@^27.0.0-next.9, jest-validate@workspace:packages/jest-validate": +"jest-validate@^27.0.0-next.10, jest-validate@workspace:packages/jest-validate": version: 0.0.0-use.local resolution: "jest-validate@workspace:packages/jest-validate" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@types/yargs": ^16.0.0 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^27.0.0-next.9 leven: ^3.1.0 - pretty-format: ^27.0.0-next.9 + pretty-format: ^27.0.0-next.10 languageName: unknown linkType: soft @@ -13363,16 +13363,16 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-watcher@^27.0.0-next.9, jest-watcher@workspace:packages/jest-watcher": +"jest-watcher@^27.0.0-next.10, jest-watcher@workspace:packages/jest-watcher": version: 0.0.0-use.local resolution: "jest-watcher@workspace:packages/jest-watcher" dependencies: - "@jest/test-result": ^27.0.0-next.9 - "@jest/types": ^27.0.0-next.8 + "@jest/test-result": ^27.0.0-next.10 + "@jest/types": ^27.0.0-next.10 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - jest-util: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 string-length: ^4.0.1 languageName: unknown linkType: soft @@ -13415,7 +13415,7 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-worker@^27.0.0-next.9, jest-worker@workspace:packages/jest-worker": +"jest-worker@^27.0.0-next.10, jest-worker@workspace:packages/jest-worker": version: 0.0.0-use.local resolution: "jest-worker@workspace:packages/jest-worker" dependencies: @@ -13423,7 +13423,7 @@ fsevents@^1.2.7: "@types/node": "*" "@types/supports-color": ^8.1.0 get-stream: ^6.0.0 - jest-leak-detector: ^27.0.0-next.9 + jest-leak-detector: ^27.0.0-next.10 merge-stream: ^2.0.0 supports-color: ^8.0.0 worker-farm: ^1.6.0 @@ -13464,9 +13464,9 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest@workspace:packages/jest" dependencies: - "@jest/core": ^27.0.0-next.9 + "@jest/core": ^27.0.0-next.10 import-local: ^3.0.2 - jest-cli: ^27.0.0-next.9 + jest-cli: ^27.0.0-next.10 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 peerDependenciesMeta: @@ -17572,18 +17572,18 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pretty-format@^27.0.0-next.9, pretty-format@workspace:packages/pretty-format": +"pretty-format@^27.0.0-next.10, pretty-format@workspace:packages/pretty-format": version: 0.0.0-use.local resolution: "pretty-format@workspace:packages/pretty-format" dependencies: - "@jest/types": ^27.0.0-next.8 + "@jest/types": ^27.0.0-next.10 "@types/react": "*" "@types/react-is": ^17.0.0 "@types/react-test-renderer": "*" ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 immutable: 4.0.0-rc.9 - jest-util: ^27.0.0-next.9 + jest-util: ^27.0.0-next.10 react: "*" react-dom: "*" react-is: ^17.0.1 From 50451dfe4dc832bb5dfe31b909a73d87259bd095 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 20 May 2021 13:09:36 -0700 Subject: [PATCH 17/65] feat: use fallback if prettier not found (#11400) Co-authored-by: Simen Bekkhus --- CHANGELOG.md | 2 +- packages/jest-snapshot/src/InlineSnapshots.ts | 13 +++++--- .../src/__tests__/InlineSnapshots.test.ts | 30 +++++++++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe1a0477439e..70d616f2e945 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,7 +36,7 @@ - `[jest-runtime]` Detect reexports from CJS as named exports in ESM ([#10988](https://github.com/facebook/jest/pull/10988)) - `[jest-runtime]` Support for async code transformations ([#11191](https://github.com/facebook/jest/pull/11191) & [#11220](https://github.com/facebook/jest/pull/11220)) - `[jest-reporters]` Add static filepath property to all reporters ([#11015](https://github.com/facebook/jest/pull/11015)) -- `[jest-snapshot]` [**BREAKING**] Make prettier optional for inline snapshots - fall back to string replacement ([#7792](https://github.com/facebook/jest/pull/7792)) +- `[jest-snapshot]` [**BREAKING**] Make prettier optional for inline snapshots - fall back to string replacement ([#7792](https://github.com/facebook/jest/pull/7792) & [#11192](https://github.com/facebook/jest/pull/11192)) - `[jest-snapshot]` [**BREAKING**] Run transforms over `snapshotResolver` ([#8751](https://github.com/facebook/jest/pull/8829)) - `[jest-transform]` Pass config options defined in Jest's config to transformer's `process` and `getCacheKey` functions ([#10926](https://github.com/facebook/jest/pull/10926)) - `[jest-transform]` Add support for transformers written in ESM ([#11163](https://github.com/facebook/jest/pull/11163)) diff --git a/packages/jest-snapshot/src/InlineSnapshots.ts b/packages/jest-snapshot/src/InlineSnapshots.ts index 8652344b49e3..99c46b376925 100644 --- a/packages/jest-snapshot/src/InlineSnapshots.ts +++ b/packages/jest-snapshot/src/InlineSnapshots.ts @@ -49,10 +49,15 @@ export function saveInlineSnapshots( snapshots: Array, prettierPath: Config.Path, ): void { - const prettier = prettierPath - ? // @ts-expect-error requireOutside Babel transform - (requireOutside(prettierPath) as Prettier) - : undefined; + let prettier: Prettier | null = null; + if (prettierPath) { + try { + // @ts-expect-error requireOutside Babel transform + prettier = requireOutside(prettierPath) as Prettier; + } catch { + // Continue even if prettier is not installed. + } + } const snapshotsByFile = groupSnapshotsByFile(snapshots); diff --git a/packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts b/packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts index e033cf6aee1e..792c2f14ed19 100644 --- a/packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts +++ b/packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts @@ -73,6 +73,36 @@ expect(a).toMatchInlineSnapshot(\`[1, 2]\`); ); }); +test('saveInlineSnapshots() with bad prettier path leaves formatting outside of snapshots alone', () => { + const filename = path.join(dir, 'my.test.js'); + fs.writeFileSync( + filename, + ` +const a = [1, 2]; +expect(a).toMatchInlineSnapshot(\`an out-of-date and also multi-line +snapshot\`); +expect(a).toMatchInlineSnapshot(); +expect(a).toMatchInlineSnapshot(\`[1, 2]\`); +`.trim() + '\n', + ); + + saveInlineSnapshots( + [2, 4, 5].map(line => ({ + frame: {column: 11, file: filename, line} as Frame, + snapshot: `[1, 2]`, + })), + 'bad-prettier', + ); + + expect(fs.readFileSync(filename, 'utf8')).toBe( + `const a = [1, 2]; +expect(a).toMatchInlineSnapshot(\`[1, 2]\`); +expect(a).toMatchInlineSnapshot(\`[1, 2]\`); +expect(a).toMatchInlineSnapshot(\`[1, 2]\`); +`, + ); +}); + test('saveInlineSnapshots() can handle typescript without prettier', () => { const filename = path.join(dir, 'my.test.ts'); fs.writeFileSync( From 27bee728eba5ad1a0d808b921420d0abee1f574a Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 21 May 2021 00:05:40 +0200 Subject: [PATCH 18/65] fix: run GC before collecting open handles (#11278) --- CHANGELOG.md | 1 + e2e/__tests__/detectOpenHandles.ts | 11 +++++++++++ e2e/detect-open-handles/__tests__/crypto.js | 13 +++++++++++++ packages/jest-core/src/collectHandles.ts | 3 ++- 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 e2e/detect-open-handles/__tests__/crypto.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 70d616f2e945..dac3fa0e83f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ - `[jest-core]` Don't report PerformanceObserver as open handle ([#11123](https://github.com/facebook/jest/pull/11123)) - `[jest-core]` Use `WeakRef` to hold timers when detecting open handles ([#11277](https://github.com/facebook/jest/pull/11277)) - `[jest-core]` Correctly detect open handles that were created in test functions using `done` callbacks ([#11382](https://github.com/facebook/jest/pull/11382)) +- `[jest-core]` Do not collect `RANDOMBYTESREQUEST` as open handles ([#11278](https://github.com/facebook/jest/pull/11278)) - `[jest-diff]` [**BREAKING**] Use only named exports ([#11371](https://github.com/facebook/jest/pull/11371)) - `[jest-each]` [**BREAKING**] Ignore excess words in headings ([#8766](https://github.com/facebook/jest/pull/8766)) - `[jest-each]` Support array index with template strings ([#10763](https://github.com/facebook/jest/pull/10763)) diff --git a/e2e/__tests__/detectOpenHandles.ts b/e2e/__tests__/detectOpenHandles.ts index f070f4b9e25b..6e7ec474812f 100644 --- a/e2e/__tests__/detectOpenHandles.ts +++ b/e2e/__tests__/detectOpenHandles.ts @@ -71,6 +71,17 @@ it('does not report promises', () => { expect(textAfterTest).toBe(''); }); +it('does not report crypto random data', () => { + // The test here is basically that it exits cleanly without reporting anything (does not need `until`) + const {stderr} = runJest('detect-open-handles', [ + 'crypto', + '--detectOpenHandles', + ]); + const textAfterTest = getTextAfterTest(stderr); + + expect(textAfterTest).toBe(''); +}); + onNodeVersions('>=11.10.0', () => { it('does not report ELD histograms', () => { const {stderr} = runJest('detect-open-handles', [ diff --git a/e2e/detect-open-handles/__tests__/crypto.js b/e2e/detect-open-handles/__tests__/crypto.js new file mode 100644 index 000000000000..1a4284994d8e --- /dev/null +++ b/e2e/detect-open-handles/__tests__/crypto.js @@ -0,0 +1,13 @@ +/** + * 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. + */ + +const {randomFillSync} = require('crypto'); + +test('randomFillSync()', () => { + const buf = Buffer.alloc(10); + randomFillSync(buf); +}); diff --git a/packages/jest-core/src/collectHandles.ts b/packages/jest-core/src/collectHandles.ts index bb617a3c60bc..05f2ea481936 100644 --- a/packages/jest-core/src/collectHandles.ts +++ b/packages/jest-core/src/collectHandles.ts @@ -63,7 +63,8 @@ export default function collectHandles(): HandleCollectionResult { type === 'PROMISE' || type === 'TIMERWRAP' || type === 'ELDHISTOGRAM' || - type === 'PerformanceObserver' + type === 'PerformanceObserver' || + type === 'RANDOMBYTESREQUEST' ) { return; } From 3b253f83b7500f2d5b627f4ab5f6971e7ef8349c Mon Sep 17 00:00:00 2001 From: Rob Brackett Date: Thu, 20 May 2021 15:24:20 -0700 Subject: [PATCH 19/65] Wait for closed resources to actually close before detecting open handles (#11429) --- CHANGELOG.md | 1 + .../__snapshots__/detectOpenHandles.ts.snap | 4 +- e2e/__tests__/detectOpenHandles.ts | 12 ++++ .../__tests__/recently-closed.js | 20 ++++++ .../src/__tests__/collectHandles.test.js | 68 +++++++++++++++---- packages/jest-core/src/collectHandles.ts | 32 +++++++-- packages/jest-core/src/runJest.ts | 6 +- packages/jest-util/src/ErrorWithStack.ts | 9 +++ 8 files changed, 128 insertions(+), 24 deletions(-) create mode 100644 e2e/detect-open-handles/__tests__/recently-closed.js diff --git a/CHANGELOG.md b/CHANGELOG.md index dac3fa0e83f6..379ffedfd027 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ - `[jest-core]` Use `WeakRef` to hold timers when detecting open handles ([#11277](https://github.com/facebook/jest/pull/11277)) - `[jest-core]` Correctly detect open handles that were created in test functions using `done` callbacks ([#11382](https://github.com/facebook/jest/pull/11382)) - `[jest-core]` Do not collect `RANDOMBYTESREQUEST` as open handles ([#11278](https://github.com/facebook/jest/pull/11278)) +- `[jest-core]` Wait briefly for open handles to close before flagging them when using `--detectOpenHandles` ([#11429](https://github.com/facebook/jest/pull/11429)) - `[jest-diff]` [**BREAKING**] Use only named exports ([#11371](https://github.com/facebook/jest/pull/11371)) - `[jest-each]` [**BREAKING**] Ignore excess words in headings ([#8766](https://github.com/facebook/jest/pull/8766)) - `[jest-each]` Support array index with template strings ([#10763](https://github.com/facebook/jest/pull/10763)) diff --git a/e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap b/e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap index f679a6e076f5..40aeef9d4529 100644 --- a/e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap +++ b/e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap @@ -1,5 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`does not print info about open handlers for a server that is already closed 1`] = ``; + exports[`prints message about flag on forceExit 1`] = `Force exiting Jest: 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`] = ` @@ -11,7 +13,7 @@ This usually means that there are asynchronous operations that weren't stopped i exports[`prints out info about open handlers 1`] = ` Jest has detected the following 1 open handle potentially keeping Jest from exiting: - ● GETADDRINFOREQWRAP + ● DNSCHANNEL 12 | const app = new Server(); 13 | diff --git a/e2e/__tests__/detectOpenHandles.ts b/e2e/__tests__/detectOpenHandles.ts index 6e7ec474812f..cd6cdfa17225 100644 --- a/e2e/__tests__/detectOpenHandles.ts +++ b/e2e/__tests__/detectOpenHandles.ts @@ -166,3 +166,15 @@ it('prints out info about open handlers from lifecycle functions with a `done` c expect(wrap(textAfterTest)).toMatchSnapshot(); }); + +it('does not print info about open handlers for a server that is already closed', async () => { + const run = runContinuous('detect-open-handles', [ + 'recently-closed', + '--detectOpenHandles', + ]); + await run.waitUntil(({stderr}) => stderr.includes('Ran all test suites')); + const {stderr} = await run.end(); + const textAfterTest = getTextAfterTest(stderr); + + expect(wrap(textAfterTest)).toMatchSnapshot(); +}); diff --git a/e2e/detect-open-handles/__tests__/recently-closed.js b/e2e/detect-open-handles/__tests__/recently-closed.js new file mode 100644 index 000000000000..3ce6b0cfc9ca --- /dev/null +++ b/e2e/detect-open-handles/__tests__/recently-closed.js @@ -0,0 +1,20 @@ +/** + * 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 {createServer} from 'http'; + +test('a recently closed server should not be detected by --detectOpenHandles', done => { + const server = createServer((_, response) => response.end('ok')); + server.listen(0, () => { + expect(true).toBe(true); + + // Close server and return immediately on callback. During the "close" + // callback, async hooks usually have not yet been called, but we want to + // make sure Jest can figure out that this server is closed. + server.close(done); + }); +}); diff --git a/packages/jest-core/src/__tests__/collectHandles.test.js b/packages/jest-core/src/__tests__/collectHandles.test.js index 7192709d9350..9e97b8c64498 100644 --- a/packages/jest-core/src/__tests__/collectHandles.test.js +++ b/packages/jest-core/src/__tests__/collectHandles.test.js @@ -11,27 +11,30 @@ import {PerformanceObserver} from 'perf_hooks'; import collectHandles from '../collectHandles'; describe('collectHandles', () => { - it('should collect Timeout', () => { + it('should collect Timeout', async () => { const handleCollector = collectHandles(); const interval = setInterval(() => {}, 100); - const openHandles = handleCollector(); + const openHandles = await handleCollector(); - expect(openHandles).toHaveLength(1); - expect(openHandles[0].message).toContain('Timeout'); + expect(openHandles).toContainEqual( + expect.objectContaining({message: 'Timeout'}), + ); clearInterval(interval); }); - it('should not collect the PerformanceObserver open handle', () => { + it('should not collect the PerformanceObserver open handle', async () => { const handleCollector = collectHandles(); const obs = new PerformanceObserver((list, observer) => {}); obs.observe({entryTypes: ['mark']}); - const openHandles = handleCollector(); + const openHandles = await handleCollector(); - expect(openHandles).toHaveLength(0); + expect(openHandles).not.toContainEqual( + expect.objectContaining({message: 'PerformanceObserver'}), + ); obs.disconnect(); }); @@ -40,14 +43,49 @@ describe('collectHandles', () => { const server = http.createServer((_, response) => response.end('ok')); server.listen(0, () => { // Collect results while server is still open. - const openHandles = handleCollector(); - - server.close(() => { - expect(openHandles).toContainEqual( - expect.objectContaining({message: 'TCPSERVERWRAP'}), - ); - done(); - }); + handleCollector() + .then(openHandles => { + server.close(() => { + expect(openHandles).toContainEqual( + expect.objectContaining({message: 'TCPSERVERWRAP'}), + ); + done(); + }); + }) + .catch(done); }); }); + + it('should not collect handles that have been queued to close', async () => { + const handleCollector = collectHandles(); + const server = http.createServer((_, response) => response.end('ok')); + + // Start and stop server. + await new Promise(r => server.listen(0, r)); + await new Promise(r => server.close(r)); + + const openHandles = await handleCollector(); + expect(openHandles).toHaveLength(0); + }); + + it('should collect handles indirectly triggered by user code', async () => { + const handleCollector = collectHandles(); + + // Calling `server.listen` with just a port (e.g. `server.listen(0)`) + // creates a `TCPSERVERWRAP` async resource. However, including a `host` + // option instead creates a `GETADDRINFOREQWRAP` resource that only + // lasts for the lifetime of the `listen()` call, but which *indirectly* + // creates a long-lived `TCPSERVERWRAP` resource. We want to make sure we + // capture that long-lived resource. + const server = new http.Server(); + await new Promise(r => server.listen({host: 'localhost', port: 0}, r)); + + const openHandles = await handleCollector(); + + await new Promise(r => server.close(r)); + + expect(openHandles).toContainEqual( + expect.objectContaining({message: 'TCPSERVERWRAP'}), + ); + }); }); diff --git a/packages/jest-core/src/collectHandles.ts b/packages/jest-core/src/collectHandles.ts index 05f2ea481936..c98543d647c1 100644 --- a/packages/jest-core/src/collectHandles.ts +++ b/packages/jest-core/src/collectHandles.ts @@ -8,12 +8,13 @@ /* eslint-disable local/ban-types-eventually */ import * as asyncHooks from 'async_hooks'; +import {promisify} from 'util'; import stripAnsi = require('strip-ansi'); import type {Config} from '@jest/types'; import {formatExecError} from 'jest-message-util'; import {ErrorWithStack} from 'jest-util'; -export type HandleCollectionResult = () => Array; +export type HandleCollectionResult = () => Promise>; function stackIsFromUser(stack: string) { // Either the test file, or something required by it @@ -42,6 +43,8 @@ const alwaysActive = () => true; // @ts-expect-error: doesn't exist in v10 typings const hasWeakRef = typeof WeakRef === 'function'; +const asyncSleep = promisify(setTimeout); + // Inspired by https://github.com/mafintosh/why-is-node-running/blob/master/index.js // Extracted as we want to format the result ourselves export default function collectHandles(): HandleCollectionResult { @@ -56,7 +59,7 @@ export default function collectHandles(): HandleCollectionResult { init: function initHook( asyncId, type, - _triggerAsyncId, + triggerAsyncId, resource: {} | NodeJS.Timeout, ) { if ( @@ -68,9 +71,21 @@ export default function collectHandles(): HandleCollectionResult { ) { return; } - const error = new ErrorWithStack(type, initHook); + const error = new ErrorWithStack(type, initHook, 100); + let fromUser = stackIsFromUser(error.stack || ''); + + // If the async resource was not directly created by user code, but was + // triggered by another async resource from user code, track it and use + // the original triggering resource's stack. + if (!fromUser) { + const triggeringHandle = activeHandles.get(triggerAsyncId); + if (triggeringHandle) { + fromUser = true; + error.stack = triggeringHandle.error.stack; + } + } - if (stackIsFromUser(error.stack || '')) { + if (fromUser) { let isActive: () => boolean; if (type === 'Timeout' || type === 'Immediate') { @@ -102,7 +117,14 @@ export default function collectHandles(): HandleCollectionResult { hook.enable(); - return () => { + return async () => { + // Wait briefly for any async resources that have been queued for + // destruction to actually be destroyed. + // For example, Node.js TCP Servers are not destroyed until *after* their + // `close` callback runs. If someone finishes a test from the `close` + // callback, we will not yet have seen the resource be destroyed here. + await asyncSleep(100); + hook.disable(); // Get errors for every async resource still referenced at this moment diff --git a/packages/jest-core/src/runJest.ts b/packages/jest-core/src/runJest.ts index 90d68275ed8c..b6088007235a 100644 --- a/packages/jest-core/src/runJest.ts +++ b/packages/jest-core/src/runJest.ts @@ -75,7 +75,7 @@ type ProcessResultOptions = Pick< outputStream: NodeJS.WriteStream; }; -const processResults = ( +const processResults = async ( runResults: AggregatedResult, options: ProcessResultOptions, ) => { @@ -89,7 +89,7 @@ const processResults = ( } = options; if (collectHandles) { - runResults.openHandles = collectHandles(); + runResults.openHandles = await collectHandles(); } else { runResults.openHandles = []; } @@ -282,7 +282,7 @@ export default async function runJest({ await runGlobalHook({allTests, globalConfig, moduleName: 'globalTeardown'}); } - processResults(results, { + await processResults(results, { collectHandles, json: globalConfig.json, onComplete, diff --git a/packages/jest-util/src/ErrorWithStack.ts b/packages/jest-util/src/ErrorWithStack.ts index cbdcf7fa8058..9ccac1c8aa44 100644 --- a/packages/jest-util/src/ErrorWithStack.ts +++ b/packages/jest-util/src/ErrorWithStack.ts @@ -9,10 +9,19 @@ export default class ErrorWithStack extends Error { constructor( message: string | undefined, callsite: (...args: Array) => unknown, + stackLimit?: number, ) { + // Ensure we have a large stack length so we get full details. + const originalStackLimit = Error.stackTraceLimit; + if (stackLimit) { + Error.stackTraceLimit = Math.max(stackLimit, originalStackLimit || 10); + } + super(message); if (Error.captureStackTrace) { Error.captureStackTrace(this, callsite); } + + Error.stackTraceLimit = originalStackLimit; } } From e2eb9aeee8aacd441f1c8ac992c698ac4d303f60 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 21 May 2021 00:28:34 +0200 Subject: [PATCH 20/65] v27.0.0-next.11 --- lerna.json | 2 +- packages/babel-jest/package.json | 6 ++-- packages/expect/package.json | 8 ++--- packages/jest-circus/package.json | 26 +++++++------- packages/jest-cli/package.json | 14 ++++---- packages/jest-config/package.json | 22 ++++++------ packages/jest-console/package.json | 8 ++--- packages/jest-core/package.json | 36 +++++++++---------- .../package.json | 4 +-- packages/jest-diff/package.json | 6 ++-- packages/jest-each/package.json | 6 ++-- packages/jest-environment-jsdom/package.json | 10 +++--- packages/jest-environment-node/package.json | 10 +++--- packages/jest-environment/package.json | 4 +-- packages/jest-fake-timers/package.json | 6 ++-- packages/jest-globals/package.json | 6 ++-- packages/jest-haste-map/package.json | 8 ++--- packages/jest-jasmine2/package.json | 22 ++++++------ packages/jest-leak-detector/package.json | 4 +-- packages/jest-matcher-utils/package.json | 8 ++--- packages/jest-message-util/package.json | 4 +-- packages/jest-phabricator/package.json | 4 +-- packages/jest-repl/package.json | 18 +++++----- packages/jest-reporters/package.json | 18 +++++----- .../jest-resolve-dependencies/package.json | 12 +++---- packages/jest-resolve/package.json | 6 ++-- packages/jest-runner/package.json | 28 +++++++-------- packages/jest-runtime/package.json | 30 ++++++++-------- packages/jest-snapshot/package.json | 22 ++++++------ packages/jest-test-result/package.json | 4 +-- packages/jest-test-sequencer/package.json | 10 +++--- packages/jest-transform/package.json | 8 ++--- packages/jest-util/package.json | 2 +- packages/jest-validate/package.json | 4 +-- packages/jest-watcher/package.json | 6 ++-- packages/jest-worker/package.json | 4 +-- packages/jest/package.json | 6 ++-- packages/pretty-format/package.json | 4 +-- packages/test-utils/package.json | 4 +-- 39 files changed, 205 insertions(+), 205 deletions(-) diff --git a/lerna.json b/lerna.json index a656f9fa340d..3df3128cf2d8 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json index 4da9a67b67b3..88dbb06dada9 100644 --- a/packages/babel-jest/package.json +++ b/packages/babel-jest/package.json @@ -1,7 +1,7 @@ { "name": "babel-jest", "description": "Jest plugin to use babel for transformation.", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,7 +15,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/transform": "^27.0.0-next.10", + "@jest/transform": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", @@ -26,7 +26,7 @@ }, "devDependencies": { "@babel/core": "^7.1.0", - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/graceful-fs": "^4.1.3" }, "peerDependencies": { diff --git a/packages/expect/package.json b/packages/expect/package.json index 177e95f27ee5..193e211fac71 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -1,6 +1,6 @@ { "name": "expect", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -18,12 +18,12 @@ "@jest/types": "^27.0.0-next.10", "ansi-styles": "^5.0.0", "jest-get-type": "^27.0.0-next.9", - "jest-matcher-utils": "^27.0.0-next.10", - "jest-message-util": "^27.0.0-next.10", + "jest-matcher-utils": "^27.0.0-next.11", + "jest-message-util": "^27.0.0-next.11", "jest-regex-util": "^27.0.0-next.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "chalk": "^4.0.0", "fast-check": "^2.0.0", "immutable": "^4.0.0-rc.12" diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index bf7d3af53eb7..a0b4746f468e 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -1,6 +1,6 @@ { "name": "jest-circus", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,30 +15,30 @@ "./runner": "./runner.js" }, "dependencies": { - "@jest/environment": "^27.0.0-next.10", - "@jest/test-result": "^27.0.0-next.10", + "@jest/environment": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.0.0-next.10", + "expect": "^27.0.0-next.11", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.0-next.10", - "jest-matcher-utils": "^27.0.0-next.10", - "jest-message-util": "^27.0.0-next.10", - "jest-runner": "^27.0.0-next.10", - "jest-runtime": "^27.0.0-next.10", - "jest-snapshot": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "pretty-format": "^27.0.0-next.10", + "jest-each": "^27.0.0-next.11", + "jest-matcher-utils": "^27.0.0-next.11", + "jest-message-util": "^27.0.0-next.11", + "jest-runner": "^27.0.0-next.11", + "jest-runtime": "^27.0.0-next.11", + "jest-snapshot": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "pretty-format": "^27.0.0-next.11", "stack-utils": "^2.0.3", "throat": "^6.0.1" }, "devDependencies": { "@babel/core": "^7.1.0", "@babel/register": "^7.0.0", - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/co": "^4.6.0", "@types/dedent": "^0.7.0", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index 468c95af1862..c7a4fa0d6205 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -1,7 +1,7 @@ { "name": "jest-cli", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,21 +10,21 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^27.0.0-next.10", - "@jest/test-result": "^27.0.0-next.10", + "@jest/core": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "jest-validate": "^27.0.0-next.10", + "jest-config": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "jest-validate": "^27.0.0-next.11", "prompts": "^2.0.1", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.3", "@types/prompts": "^2.0.1", diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index 1b2ca553a4ad..e16fa31f791a 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -1,6 +1,6 @@ { "name": "jest-config", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -23,25 +23,25 @@ }, "dependencies": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.0.0-next.10", + "@jest/test-sequencer": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", - "babel-jest": "^27.0.0-next.10", + "babel-jest": "^27.0.0-next.11", "chalk": "^4.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", "is-ci": "^3.0.0", - "jest-circus": "^27.0.0-next.10", - "jest-environment-jsdom": "^27.0.0-next.10", - "jest-environment-node": "^27.0.0-next.10", + "jest-circus": "^27.0.0-next.11", + "jest-environment-jsdom": "^27.0.0-next.11", + "jest-environment-node": "^27.0.0-next.11", "jest-get-type": "^27.0.0-next.9", - "jest-jasmine2": "^27.0.0-next.10", + "jest-jasmine2": "^27.0.0-next.11", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "jest-validate": "^27.0.0-next.10", + "jest-resolve": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "jest-validate": "^27.0.0-next.11", "micromatch": "^4.0.4", - "pretty-format": "^27.0.0-next.10" + "pretty-format": "^27.0.0-next.11" }, "devDependencies": { "@types/babel__core": "^7.0.4", diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json index ab7d1e7d0fd6..bf6800248957 100644 --- a/packages/jest-console/package.json +++ b/packages/jest-console/package.json @@ -1,6 +1,6 @@ { "name": "@jest/console", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,12 +17,12 @@ "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", "slash": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/node": "*" }, "engines": { diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 4732ea1bc5d1..249e9c16d5da 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -1,7 +1,7 @@ { "name": "@jest/core", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -9,10 +9,10 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.10", - "@jest/reporters": "^27.0.0-next.10", - "@jest/test-result": "^27.0.0-next.10", - "@jest/transform": "^27.0.0-next.10", + "@jest/console": "^27.0.0-next.11", + "@jest/reporters": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0-next.11", + "@jest/transform": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -21,18 +21,18 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-changed-files": "^27.0.0-next.10", - "jest-config": "^27.0.0-next.10", - "jest-haste-map": "^27.0.0-next.10", - "jest-message-util": "^27.0.0-next.10", + "jest-config": "^27.0.0-next.11", + "jest-haste-map": "^27.0.0-next.11", + "jest-message-util": "^27.0.0-next.11", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.10", - "jest-resolve-dependencies": "^27.0.0-next.10", - "jest-runner": "^27.0.0-next.10", - "jest-runtime": "^27.0.0-next.10", - "jest-snapshot": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "jest-validate": "^27.0.0-next.10", - "jest-watcher": "^27.0.0-next.10", + "jest-resolve": "^27.0.0-next.11", + "jest-resolve-dependencies": "^27.0.0-next.11", + "jest-runner": "^27.0.0-next.11", + "jest-runtime": "^27.0.0-next.11", + "jest-snapshot": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "jest-validate": "^27.0.0-next.11", + "jest-watcher": "^27.0.0-next.11", "micromatch": "^4.0.4", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", @@ -40,8 +40,8 @@ "strip-ansi": "^6.0.0" }, "devDependencies": { - "@jest/test-sequencer": "^27.0.0-next.10", - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-sequencer": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0-next.11", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/micromatch": "^4.0.1", diff --git a/packages/jest-create-cache-key-function/package.json b/packages/jest-create-cache-key-function/package.json index b73de7522259..bd8effe74eed 100644 --- a/packages/jest-create-cache-key-function/package.json +++ b/packages/jest-create-cache-key-function/package.json @@ -1,6 +1,6 @@ { "name": "@jest/create-cache-key-function", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -11,7 +11,7 @@ }, "devDependencies": { "@types/node": "*", - "jest-util": "^27.0.0-next.10" + "jest-util": "^27.0.0-next.11" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json index a11b6c155927..54fe6fc0776a 100644 --- a/packages/jest-diff/package.json +++ b/packages/jest-diff/package.json @@ -1,6 +1,6 @@ { "name": "jest-diff", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,10 +17,10 @@ "chalk": "^4.0.0", "diff-sequences": "^27.0.0-next.0", "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.10" + "pretty-format": "^27.0.0-next.11" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "strip-ansi": "^6.0.0" }, "engines": { diff --git a/packages/jest-each/package.json b/packages/jest-each/package.json index 0a5ade380a83..ed70018e65b9 100644 --- a/packages/jest-each/package.json +++ b/packages/jest-each/package.json @@ -1,6 +1,6 @@ { "name": "jest-each", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "description": "Parameterised tests for Jest", "main": "./build/index.js", "types": "./build/index.d.ts", @@ -25,8 +25,8 @@ "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "jest-get-type": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.10", - "pretty-format": "^27.0.0-next.10" + "jest-util": "^27.0.0-next.11", + "pretty-format": "^27.0.0-next.11" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json index 21e32656879e..e8da7e032165 100644 --- a/packages/jest-environment-jsdom/package.json +++ b/packages/jest-environment-jsdom/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-jsdom", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,16 +14,16 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.10", - "@jest/fake-timers": "^27.0.0-next.10", + "@jest/environment": "^27.0.0-next.11", + "@jest/fake-timers": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "jest-mock": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.11", "jsdom": "^16.4.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/jsdom": "^16.2.4" }, "engines": { diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json index f5e1be52254c..af5d880b0b87 100644 --- a/packages/jest-environment-node/package.json +++ b/packages/jest-environment-node/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-node", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.10", - "@jest/fake-timers": "^27.0.0-next.10", + "@jest/environment": "^27.0.0-next.11", + "@jest/fake-timers": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "jest-mock": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10" + "jest-util": "^27.0.0-next.11" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10" + "@jest/test-utils": "^27.0.0-next.11" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json index 25de5bb43a94..1bd093c27066 100644 --- a/packages/jest-environment/package.json +++ b/packages/jest-environment/package.json @@ -1,6 +1,6 @@ { "name": "@jest/environment", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/fake-timers": "^27.0.0-next.10", + "@jest/fake-timers": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "jest-mock": "^27.0.0-next.10" diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json index 4992fa1730c0..bf13c5a31255 100644 --- a/packages/jest-fake-timers/package.json +++ b/packages/jest-fake-timers/package.json @@ -1,6 +1,6 @@ { "name": "@jest/fake-timers", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,9 +17,9 @@ "@jest/types": "^27.0.0-next.10", "@sinonjs/fake-timers": "^7.0.2", "@types/node": "*", - "jest-message-util": "^27.0.0-next.10", + "jest-message-util": "^27.0.0-next.11", "jest-mock": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10" + "jest-util": "^27.0.0-next.11" }, "devDependencies": { "@types/sinonjs__fake-timers": "^6.0.1", diff --git a/packages/jest-globals/package.json b/packages/jest-globals/package.json index 9c2563cdbde8..b8432c299e29 100644 --- a/packages/jest-globals/package.json +++ b/packages/jest-globals/package.json @@ -1,6 +1,6 @@ { "name": "@jest/globals", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,9 +17,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.10", + "@jest/environment": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", - "expect": "^27.0.0-next.10" + "expect": "^27.0.0-next.11" }, "publishConfig": { "access": "public" diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index 2a2c67ad51ff..c5f8ddad2e35 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -1,6 +1,6 @@ { "name": "jest-haste-map", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -22,13 +22,13 @@ "graceful-fs": "^4.2.4", "jest-regex-util": "^27.0.0-next.0", "jest-serializer": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.10", - "jest-worker": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.11", + "jest-worker": "^27.0.0-next.11", "micromatch": "^4.0.4", "walker": "^1.0.7" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/anymatch": "^1.3.1", "@types/fb-watchman": "^2.0.0", "@types/micromatch": "^4.0.1", diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index 329248087932..8db4585f2f13 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -1,6 +1,6 @@ { "name": "jest-jasmine2", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,22 +15,22 @@ }, "dependencies": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.0.0-next.10", + "@jest/environment": "^27.0.0-next.11", "@jest/source-map": "^27.0.0-next.3", - "@jest/test-result": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.0.0-next.10", + "expect": "^27.0.0-next.11", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.0-next.10", - "jest-matcher-utils": "^27.0.0-next.10", - "jest-message-util": "^27.0.0-next.10", - "jest-runtime": "^27.0.0-next.10", - "jest-snapshot": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "pretty-format": "^27.0.0-next.10", + "jest-each": "^27.0.0-next.11", + "jest-matcher-utils": "^27.0.0-next.11", + "jest-message-util": "^27.0.0-next.11", + "jest-runtime": "^27.0.0-next.11", + "jest-snapshot": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "pretty-format": "^27.0.0-next.11", "throat": "^6.0.1" }, "devDependencies": { diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json index 51407f4598c2..048b3857ca4a 100644 --- a/packages/jest-leak-detector/package.json +++ b/packages/jest-leak-detector/package.json @@ -1,6 +1,6 @@ { "name": "jest-leak-detector", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,7 +15,7 @@ }, "dependencies": { "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.10" + "pretty-format": "^27.0.0-next.11" }, "devDependencies": { "@types/weak-napi": "^2.0.0", diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json index 9375546d94f5..e01cf94ba5a8 100644 --- a/packages/jest-matcher-utils/package.json +++ b/packages/jest-matcher-utils/package.json @@ -1,7 +1,7 @@ { "name": "jest-matcher-utils", "description": "A set of utility functions for expect and related packages", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,12 +19,12 @@ }, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.0.0-next.10", + "jest-diff": "^27.0.0-next.11", "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.10" + "pretty-format": "^27.0.0-next.11" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/node": "*" }, "publishConfig": { diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index 5159e78ff682..b0f395671f88 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-message-util", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -23,7 +23,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.0.0-next.10", + "pretty-format": "^27.0.0-next.11", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json index b0b6ab006749..33034549c777 100644 --- a/packages/jest-phabricator/package.json +++ b/packages/jest-phabricator/package.json @@ -1,6 +1,6 @@ { "name": "jest-phabricator", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -12,7 +12,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.10" + "@jest/test-result": "^27.0.0-next.11" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-repl/package.json b/packages/jest-repl/package.json index 5e67008b9d52..5d2cbad097f8 100644 --- a/packages/jest-repl/package.json +++ b/packages/jest-repl/package.json @@ -1,6 +1,6 @@ { "name": "jest-repl", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,20 +16,20 @@ "./bin/jest-runtime-cli": "./bin/jest-runtime-cli.js" }, "dependencies": { - "@jest/console": "^27.0.0-next.10", - "@jest/environment": "^27.0.0-next.10", - "@jest/transform": "^27.0.0-next.10", + "@jest/console": "^27.0.0-next.11", + "@jest/environment": "^27.0.0-next.11", + "@jest/transform": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", - "jest-config": "^27.0.0-next.10", - "jest-runtime": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "jest-validate": "^27.0.0-next.10", + "jest-config": "^27.0.0-next.11", + "jest-runtime": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "jest-validate": "^27.0.0-next.11", "repl": "^0.1.3", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/yargs": "^16.0.0", "execa": "^5.0.0" }, diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index a1895aecb0e5..c2992e5ed08f 100644 --- a/packages/jest-reporters/package.json +++ b/packages/jest-reporters/package.json @@ -1,7 +1,7 @@ { "name": "@jest/reporters", "description": "Jest's reporters", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,9 +10,9 @@ }, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.0.0-next.10", - "@jest/test-result": "^27.0.0-next.10", - "@jest/transform": "^27.0.0-next.10", + "@jest/console": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0-next.11", + "@jest/transform": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -24,10 +24,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.0.0-next.10", - "jest-resolve": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "jest-worker": "^27.0.0-next.10", + "jest-haste-map": "^27.0.0-next.11", + "jest-resolve": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "jest-worker": "^27.0.0-next.11", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -35,7 +35,7 @@ "v8-to-istanbul": "^7.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-resolve-dependencies/package.json b/packages/jest-resolve-dependencies/package.json index c90d4b7aec0b..1dc24a154b7b 100644 --- a/packages/jest-resolve-dependencies/package.json +++ b/packages/jest-resolve-dependencies/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve-dependencies", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,13 +16,13 @@ "dependencies": { "@jest/types": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-snapshot": "^27.0.0-next.10" + "jest-snapshot": "^27.0.0-next.11" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", - "jest-haste-map": "^27.0.0-next.10", - "jest-resolve": "^27.0.0-next.10", - "jest-runtime": "^27.0.0-next.10" + "@jest/test-utils": "^27.0.0-next.11", + "jest-haste-map": "^27.0.0-next.11", + "jest-resolve": "^27.0.0-next.11", + "jest-runtime": "^27.0.0-next.11" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index eb8fdc78f5df..3c30cf247f1d 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,14 +19,14 @@ "escalade": "^3.1.1", "graceful-fs": "^4.2.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.11", "resolve": "^1.20.0", "slash": "^3.0.0" }, "devDependencies": { "@types/graceful-fs": "^4.1.3", "@types/resolve": "^1.20.0", - "jest-haste-map": "^27.0.0-next.10" + "jest-haste-map": "^27.0.0-next.11" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 901d5e872054..8d26332665ac 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -1,6 +1,6 @@ { "name": "jest-runner", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,25 +14,25 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.10", - "@jest/environment": "^27.0.0-next.10", - "@jest/test-result": "^27.0.0-next.10", - "@jest/transform": "^27.0.0-next.10", + "@jest/console": "^27.0.0-next.11", + "@jest/environment": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0-next.11", + "@jest/transform": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-config": "^27.0.0-next.10", + "jest-config": "^27.0.0-next.11", "jest-docblock": "^27.0.0-next.10", - "jest-haste-map": "^27.0.0-next.10", - "jest-leak-detector": "^27.0.0-next.10", - "jest-message-util": "^27.0.0-next.10", - "jest-resolve": "^27.0.0-next.10", - "jest-runtime": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "jest-worker": "^27.0.0-next.10", + "jest-haste-map": "^27.0.0-next.11", + "jest-leak-detector": "^27.0.0-next.11", + "jest-message-util": "^27.0.0-next.11", + "jest-resolve": "^27.0.0-next.11", + "jest-runtime": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "jest-worker": "^27.0.0-next.11", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -40,7 +40,7 @@ "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/source-map-support": "^0.5.0", - "jest-jasmine2": "^27.0.0-next.10" + "jest-jasmine2": "^27.0.0-next.11" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index f77f9bd949de..98298f5691af 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -1,6 +1,6 @@ { "name": "jest-runtime", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,13 +14,13 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.10", - "@jest/environment": "^27.0.0-next.10", - "@jest/fake-timers": "^27.0.0-next.10", - "@jest/globals": "^27.0.0-next.10", + "@jest/console": "^27.0.0-next.11", + "@jest/environment": "^27.0.0-next.11", + "@jest/fake-timers": "^27.0.0-next.11", + "@jest/globals": "^27.0.0-next.11", "@jest/source-map": "^27.0.0-next.3", - "@jest/test-result": "^27.0.0-next.10", - "@jest/transform": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.11", + "@jest/transform": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", @@ -29,26 +29,26 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.10", - "jest-message-util": "^27.0.0-next.10", + "jest-haste-map": "^27.0.0-next.11", + "jest-message-util": "^27.0.0-next.11", "jest-mock": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.10", - "jest-snapshot": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", - "jest-validate": "^27.0.0-next.10", + "jest-resolve": "^27.0.0-next.11", + "jest-snapshot": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", + "jest-validate": "^27.0.0-next.11", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.2", "@types/node": "^14.0.27", "execa": "^5.0.0", - "jest-environment-node": "^27.0.0-next.10", + "jest-environment-node": "^27.0.0-next.11", "jest-snapshot-serializer-raw": "^1.1.0" }, "engines": { diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json index 1c83bf004836..03c7f0d9e4cf 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -1,6 +1,6 @@ { "name": "jest-snapshot", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -20,29 +20,29 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.0.0-next.10", + "@jest/transform": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.0.0-next.10", + "expect": "^27.0.0-next.11", "graceful-fs": "^4.2.4", - "jest-diff": "^27.0.0-next.10", + "jest-diff": "^27.0.0-next.11", "jest-get-type": "^27.0.0-next.9", - "jest-haste-map": "^27.0.0-next.10", - "jest-matcher-utils": "^27.0.0-next.10", - "jest-message-util": "^27.0.0-next.10", - "jest-resolve": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.10", + "jest-haste-map": "^27.0.0-next.11", + "jest-matcher-utils": "^27.0.0-next.11", + "jest-message-util": "^27.0.0-next.11", + "jest-resolve": "^27.0.0-next.11", + "jest-util": "^27.0.0-next.11", "natural-compare": "^1.4.0", - "pretty-format": "^27.0.0-next.10", + "pretty-format": "^27.0.0-next.11", "semver": "^7.3.2" }, "devDependencies": { "@babel/preset-flow": "^7.7.2", "@babel/preset-react": "^7.7.2", - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/graceful-fs": "^4.1.3", "@types/natural-compare": "^1.4.0", "@types/semver": "^7.1.0", diff --git a/packages/jest-test-result/package.json b/packages/jest-test-result/package.json index 06f7d9a6f0ef..d6cd3cae30b9 100644 --- a/packages/jest-test-result/package.json +++ b/packages/jest-test-result/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-result", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.10", + "@jest/console": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json index c18e0086596b..817505ffd8a6 100644 --- a/packages/jest-test-sequencer/package.json +++ b/packages/jest-test-sequencer/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-sequencer", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,11 +14,11 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.11", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.10", - "jest-runner": "^27.0.0-next.10", - "jest-runtime": "^27.0.0-next.10" + "jest-haste-map": "^27.0.0-next.11", + "jest-runner": "^27.0.0-next.11", + "jest-runtime": "^27.0.0-next.11" }, "devDependencies": { "@types/graceful-fs": "^4.1.3" diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index d263a5553a79..6ee3fab4c737 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -1,6 +1,6 @@ { "name": "@jest/transform", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -21,9 +21,9 @@ "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.10", + "jest-haste-map": "^27.0.0-next.11", "jest-regex-util": "^27.0.0-next.0", - "jest-util": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.11", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -31,7 +31,7 @@ "write-file-atomic": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.10", + "@jest/test-utils": "^27.0.0-next.11", "@types/babel__core": "^7.1.0", "@types/convert-source-map": "^1.5.1", "@types/fast-json-stable-stringify": "^2.0.0", diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json index dd597f61db67..eeec59f0caa3 100644 --- a/packages/jest-util/package.json +++ b/packages/jest-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-util", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json index a4ba97dedbfa..cc40bb99f07f 100644 --- a/packages/jest-validate/package.json +++ b/packages/jest-validate/package.json @@ -1,6 +1,6 @@ { "name": "jest-validate", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,7 +19,7 @@ "chalk": "^4.0.0", "jest-get-type": "^27.0.0-next.9", "leven": "^3.1.0", - "pretty-format": "^27.0.0-next.10" + "pretty-format": "^27.0.0-next.11" }, "devDependencies": { "@types/yargs": "^16.0.0" diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json index 7ebdd471fe97..2a6fda9ef4c4 100644 --- a/packages/jest-watcher/package.json +++ b/packages/jest-watcher/package.json @@ -1,7 +1,7 @@ { "name": "jest-watcher", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -9,12 +9,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.10", + "@jest/test-result": "^27.0.0-next.11", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.11", "string-length": "^4.0.1" }, "repository": { diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json index 9d022139fdfb..54e7162a0588 100644 --- a/packages/jest-worker/package.json +++ b/packages/jest-worker/package.json @@ -1,6 +1,6 @@ { "name": "jest-worker", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -22,7 +22,7 @@ "@types/merge-stream": "^1.1.2", "@types/supports-color": "^8.1.0", "get-stream": "^6.0.0", - "jest-leak-detector": "^27.0.0-next.10", + "jest-leak-detector": "^27.0.0-next.11", "worker-farm": "^1.6.0" }, "engines": { diff --git a/packages/jest/package.json b/packages/jest/package.json index 0095d6059b05..4c49957eee8a 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -1,7 +1,7 @@ { "name": "jest", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -10,9 +10,9 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^27.0.0-next.10", + "@jest/core": "^27.0.0-next.11", "import-local": "^3.0.2", - "jest-cli": "^27.0.0-next.10" + "jest-cli": "^27.0.0-next.11" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0" diff --git a/packages/pretty-format/package.json b/packages/pretty-format/package.json index 94bc03c2f178..ddd293bbd551 100644 --- a/packages/pretty-format/package.json +++ b/packages/pretty-format/package.json @@ -1,6 +1,6 @@ { "name": "pretty-format", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -26,7 +26,7 @@ "@types/react-is": "^17.0.0", "@types/react-test-renderer": "*", "immutable": "4.0.0-rc.9", - "jest-util": "^27.0.0-next.10", + "jest-util": "^27.0.0-next.11", "react": "*", "react-dom": "*", "react-test-renderer": "*" diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 659b9a8ed51e..c3b2ea1c77f8 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-utils", - "version": "27.0.0-next.10", + "version": "27.0.0-next.11", "private": true, "license": "MIT", "main": "./build/index.js", @@ -16,7 +16,7 @@ "@types/semver": "^7.1.0", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", - "pretty-format": "^27.0.0-next.10", + "pretty-format": "^27.0.0-next.11", "semver": "^7.3.2" }, "engines": { From 696c455a4049b8e5c76792d6b527f9ebbead2249 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 21 May 2021 00:30:19 +0200 Subject: [PATCH 21/65] chore: update lockfile after publish --- yarn.lock | 396 +++++++++++++++++++++++++++--------------------------- 1 file changed, 198 insertions(+), 198 deletions(-) diff --git a/yarn.lock b/yarn.lock index ad9d0a4222de..e2c1c4e097d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2448,16 +2448,16 @@ __metadata: languageName: node linkType: hard -"@jest/console@^27.0.0-next.10, @jest/console@workspace:packages/jest-console": +"@jest/console@^27.0.0-next.11, @jest/console@workspace:packages/jest-console": version: 0.0.0-use.local resolution: "@jest/console@workspace:packages/jest-console" dependencies: - "@jest/test-utils": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.11 + jest-util: ^27.0.0-next.11 slash: ^3.0.0 languageName: unknown linkType: soft @@ -2476,16 +2476,16 @@ __metadata: languageName: node linkType: hard -"@jest/core@^27.0.0-next.10, @jest/core@workspace:packages/jest-core": +"@jest/core@^27.0.0-next.11, @jest/core@workspace:packages/jest-core": version: 0.0.0-use.local resolution: "@jest/core@workspace:packages/jest-core" dependencies: - "@jest/console": ^27.0.0-next.10 - "@jest/reporters": ^27.0.0-next.10 - "@jest/test-result": ^27.0.0-next.10 - "@jest/test-sequencer": ^27.0.0-next.10 - "@jest/test-utils": ^27.0.0-next.10 - "@jest/transform": ^27.0.0-next.10 + "@jest/console": ^27.0.0-next.11 + "@jest/reporters": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0-next.11 + "@jest/test-sequencer": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0-next.11 + "@jest/transform": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 @@ -2498,19 +2498,19 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.4 jest-changed-files: ^27.0.0-next.10 - jest-config: ^27.0.0-next.10 - jest-haste-map: ^27.0.0-next.10 - jest-message-util: ^27.0.0-next.10 + jest-config: ^27.0.0-next.11 + jest-haste-map: ^27.0.0-next.11 + jest-message-util: ^27.0.0-next.11 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.10 - jest-resolve-dependencies: ^27.0.0-next.10 - jest-runner: ^27.0.0-next.10 - jest-runtime: ^27.0.0-next.10 - jest-snapshot: ^27.0.0-next.10 + jest-resolve: ^27.0.0-next.11 + jest-resolve-dependencies: ^27.0.0-next.11 + jest-runner: ^27.0.0-next.11 + jest-runtime: ^27.0.0-next.11 + jest-snapshot: ^27.0.0-next.11 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.10 - jest-validate: ^27.0.0-next.10 - jest-watcher: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 + jest-validate: ^27.0.0-next.11 + jest-watcher: ^27.0.0-next.11 micromatch: ^4.0.4 p-each-series: ^2.1.0 rimraf: ^3.0.0 @@ -2530,22 +2530,22 @@ __metadata: dependencies: "@jest/types": ^27.0.0-next.10 "@types/node": "*" - jest-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 languageName: unknown linkType: soft -"@jest/environment@^27.0.0-next.10, @jest/environment@workspace:packages/jest-environment": +"@jest/environment@^27.0.0-next.11, @jest/environment@workspace:packages/jest-environment": version: 0.0.0-use.local resolution: "@jest/environment@workspace:packages/jest-environment" dependencies: - "@jest/fake-timers": ^27.0.0-next.10 + "@jest/fake-timers": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/node": "*" jest-mock: ^27.0.0-next.10 languageName: unknown linkType: soft -"@jest/fake-timers@^27.0.0-next.10, @jest/fake-timers@workspace:packages/jest-fake-timers": +"@jest/fake-timers@^27.0.0-next.11, @jest/fake-timers@workspace:packages/jest-fake-timers": version: 0.0.0-use.local resolution: "@jest/fake-timers@workspace:packages/jest-fake-timers" dependencies: @@ -2553,20 +2553,20 @@ __metadata: "@sinonjs/fake-timers": ^7.0.2 "@types/node": "*" "@types/sinonjs__fake-timers": ^6.0.1 - jest-message-util: ^27.0.0-next.10 + jest-message-util: ^27.0.0-next.11 jest-mock: ^27.0.0-next.10 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 languageName: unknown linkType: soft -"@jest/globals@^27.0.0-next.10, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": +"@jest/globals@^27.0.0-next.11, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": version: 0.0.0-use.local resolution: "@jest/globals@workspace:packages/jest-globals" dependencies: - "@jest/environment": ^27.0.0-next.10 + "@jest/environment": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 - expect: ^27.0.0-next.10 + expect: ^27.0.0-next.11 languageName: unknown linkType: soft @@ -2657,15 +2657,15 @@ __metadata: languageName: unknown linkType: soft -"@jest/reporters@^27.0.0-next.10, @jest/reporters@workspace:packages/jest-reporters": +"@jest/reporters@^27.0.0-next.11, @jest/reporters@workspace:packages/jest-reporters": version: 0.0.0-use.local resolution: "@jest/reporters@workspace:packages/jest-reporters" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.0.0-next.10 - "@jest/test-result": ^27.0.0-next.10 - "@jest/test-utils": ^27.0.0-next.10 - "@jest/transform": ^27.0.0-next.10 + "@jest/console": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0-next.11 + "@jest/transform": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 @@ -2686,10 +2686,10 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^27.0.0-next.10 - jest-resolve: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 - jest-worker: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.11 + jest-resolve: ^27.0.0-next.11 + jest-util: ^27.0.0-next.11 + jest-worker: ^27.0.0-next.11 mock-fs: ^4.4.1 slash: ^3.0.0 source-map: ^0.6.0 @@ -2716,11 +2716,11 @@ __metadata: languageName: unknown linkType: soft -"@jest/test-result@^27.0.0-next.10, @jest/test-result@workspace:packages/jest-test-result": +"@jest/test-result@^27.0.0-next.11, @jest/test-result@workspace:packages/jest-test-result": version: 0.0.0-use.local resolution: "@jest/test-result@workspace:packages/jest-test-result" dependencies: - "@jest/console": ^27.0.0-next.10 + "@jest/console": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 @@ -2739,20 +2739,20 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@^27.0.0-next.10, @jest/test-sequencer@workspace:packages/jest-test-sequencer": +"@jest/test-sequencer@^27.0.0-next.11, @jest/test-sequencer@workspace:packages/jest-test-sequencer": version: 0.0.0-use.local resolution: "@jest/test-sequencer@workspace:packages/jest-test-sequencer" dependencies: - "@jest/test-result": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.11 "@types/graceful-fs": ^4.1.3 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.10 - jest-runner: ^27.0.0-next.10 - jest-runtime: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.11 + jest-runner: ^27.0.0-next.11 + jest-runtime: ^27.0.0-next.11 languageName: unknown linkType: soft -"@jest/test-utils@^27.0.0-next.10, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": +"@jest/test-utils@^27.0.0-next.11, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": version: 0.0.0-use.local resolution: "@jest/test-utils@workspace:packages/test-utils" dependencies: @@ -2762,17 +2762,17 @@ __metadata: "@types/semver": ^7.1.0 ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 - pretty-format: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.11 semver: ^7.3.2 languageName: unknown linkType: soft -"@jest/transform@^27.0.0-next.10, @jest/transform@workspace:packages/jest-transform": +"@jest/transform@^27.0.0-next.11, @jest/transform@workspace:packages/jest-transform": version: 0.0.0-use.local resolution: "@jest/transform@workspace:packages/jest-transform" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.1.0 "@types/convert-source-map": ^1.5.1 @@ -2786,10 +2786,10 @@ __metadata: dedent: ^0.7.0 fast-json-stable-stringify: ^2.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.11 jest-regex-util: ^27.0.0-next.0 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 micromatch: ^4.0.4 pirates: ^4.0.1 slash: ^3.0.0 @@ -6090,8 +6090,8 @@ __metadata: resolution: "babel-jest@workspace:packages/babel-jest" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^27.0.0-next.10 - "@jest/transform": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 + "@jest/transform": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.1.14 "@types/graceful-fs": ^4.1.3 @@ -9836,19 +9836,19 @@ __metadata: languageName: node linkType: hard -"expect@^27.0.0-next.10, expect@workspace:packages/expect": +"expect@^27.0.0-next.11, expect@workspace:packages/expect": version: 0.0.0-use.local resolution: "expect@workspace:packages/expect" dependencies: - "@jest/test-utils": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 ansi-styles: ^5.0.0 chalk: ^4.0.0 fast-check: ^2.0.0 immutable: ^4.0.0-rc.12 jest-get-type: ^27.0.0-next.9 - jest-matcher-utils: ^27.0.0-next.10 - jest-message-util: ^27.0.0-next.10 + jest-matcher-utils: ^27.0.0-next.11 + jest-message-util: ^27.0.0-next.11 jest-regex-util: ^27.0.0-next.0 languageName: unknown linkType: soft @@ -12660,15 +12660,15 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-circus@^27.0.0-next.10, jest-circus@workspace:packages/jest-circus": +"jest-circus@^27.0.0-next.11, jest-circus@workspace:packages/jest-circus": version: 0.0.0-use.local resolution: "jest-circus@workspace:packages/jest-circus" dependencies: "@babel/core": ^7.1.0 "@babel/register": ^7.0.0 - "@jest/environment": ^27.0.0-next.10 - "@jest/test-result": ^27.0.0-next.10 - "@jest/test-utils": ^27.0.0-next.10 + "@jest/environment": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/co": ^4.6.0 "@types/dedent": ^0.7.0 @@ -12679,30 +12679,30 @@ fsevents@^1.2.7: co: ^4.6.0 dedent: ^0.7.0 execa: ^5.0.0 - expect: ^27.0.0-next.10 + expect: ^27.0.0-next.11 graceful-fs: ^4.2.4 is-generator-fn: ^2.0.0 - jest-each: ^27.0.0-next.10 - jest-matcher-utils: ^27.0.0-next.10 - jest-message-util: ^27.0.0-next.10 - jest-runner: ^27.0.0-next.10 - jest-runtime: ^27.0.0-next.10 - jest-snapshot: ^27.0.0-next.10 + jest-each: ^27.0.0-next.11 + jest-matcher-utils: ^27.0.0-next.11 + jest-message-util: ^27.0.0-next.11 + jest-runner: ^27.0.0-next.11 + jest-runtime: ^27.0.0-next.11 + jest-snapshot: ^27.0.0-next.11 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.10 - pretty-format: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 + pretty-format: ^27.0.0-next.11 stack-utils: ^2.0.3 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-cli@^27.0.0-next.10, jest-cli@workspace:packages/jest-cli": +"jest-cli@^27.0.0-next.11, jest-cli@workspace:packages/jest-cli": version: 0.0.0-use.local resolution: "jest-cli@workspace:packages/jest-cli" dependencies: - "@jest/core": ^27.0.0-next.10 - "@jest/test-result": ^27.0.0-next.10 - "@jest/test-utils": ^27.0.0-next.10 + "@jest/core": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.3 @@ -12712,9 +12712,9 @@ fsevents@^1.2.7: exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - jest-config: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 - jest-validate: ^27.0.0-next.10 + jest-config: ^27.0.0-next.11 + jest-util: ^27.0.0-next.11 + jest-validate: ^27.0.0-next.11 prompts: ^2.0.1 yargs: ^16.0.3 peerDependencies: @@ -12727,36 +12727,36 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-config@^27.0.0-next.10, jest-config@workspace:packages/jest-config": +"jest-config@^27.0.0-next.11, jest-config@workspace:packages/jest-config": version: 0.0.0-use.local resolution: "jest-config@workspace:packages/jest-config" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^27.0.0-next.10 + "@jest/test-sequencer": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.0.4 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 "@types/is-ci": ^3.0.0 "@types/micromatch": ^4.0.1 - babel-jest: ^27.0.0-next.10 + babel-jest: ^27.0.0-next.11 chalk: ^4.0.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 is-ci: ^3.0.0 - jest-circus: ^27.0.0-next.10 - jest-environment-jsdom: ^27.0.0-next.10 - jest-environment-node: ^27.0.0-next.10 + jest-circus: ^27.0.0-next.11 + jest-environment-jsdom: ^27.0.0-next.11 + jest-environment-node: ^27.0.0-next.11 jest-get-type: ^27.0.0-next.9 - jest-jasmine2: ^27.0.0-next.10 + jest-jasmine2: ^27.0.0-next.11 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.10 + jest-resolve: ^27.0.0-next.11 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.10 - jest-validate: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 + jest-validate: ^27.0.0-next.11 micromatch: ^4.0.4 - pretty-format: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.11 strip-ansi: ^6.0.0 ts-node: ^9.0.0 typescript: ^4.0.3 @@ -12768,15 +12768,15 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-diff@^27.0.0-next.10, jest-diff@workspace:packages/jest-diff": +"jest-diff@^27.0.0-next.11, jest-diff@workspace:packages/jest-diff": version: 0.0.0-use.local resolution: "jest-diff@workspace:packages/jest-diff" dependencies: - "@jest/test-utils": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 chalk: ^4.0.0 diff-sequences: ^27.0.0-next.0 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.11 strip-ansi: ^6.0.0 languageName: unknown linkType: soft @@ -12811,30 +12811,30 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-each@^27.0.0-next.10, jest-each@workspace:packages/jest-each": +"jest-each@^27.0.0-next.11, jest-each@workspace:packages/jest-each": version: 0.0.0-use.local resolution: "jest-each@workspace:packages/jest-each" dependencies: "@jest/types": ^27.0.0-next.10 chalk: ^4.0.0 jest-get-type: ^27.0.0-next.9 - jest-util: ^27.0.0-next.10 - pretty-format: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 + pretty-format: ^27.0.0-next.11 languageName: unknown linkType: soft -"jest-environment-jsdom@^27.0.0-next.10, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": +"jest-environment-jsdom@^27.0.0-next.11, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": version: 0.0.0-use.local resolution: "jest-environment-jsdom@workspace:packages/jest-environment-jsdom" dependencies: - "@jest/environment": ^27.0.0-next.10 - "@jest/fake-timers": ^27.0.0-next.10 - "@jest/test-utils": ^27.0.0-next.10 + "@jest/environment": ^27.0.0-next.11 + "@jest/fake-timers": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/jsdom": ^16.2.4 "@types/node": "*" jest-mock: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 jsdom: ^16.4.0 languageName: unknown linkType: soft @@ -12843,13 +12843,13 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-environment-node@workspace:packages/jest-environment-node" dependencies: - "@jest/environment": ^27.0.0-next.10 - "@jest/fake-timers": ^27.0.0-next.10 - "@jest/test-utils": ^27.0.0-next.10 + "@jest/environment": ^27.0.0-next.11 + "@jest/fake-timers": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/node": "*" jest-mock: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 languageName: unknown linkType: soft @@ -12873,11 +12873,11 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-haste-map@^27.0.0-next.10, jest-haste-map@workspace:packages/jest-haste-map": +"jest-haste-map@^27.0.0-next.11, jest-haste-map@workspace:packages/jest-haste-map": version: 0.0.0-use.local resolution: "jest-haste-map@workspace:packages/jest-haste-map" dependencies: - "@jest/test-utils": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/anymatch": ^1.3.1 "@types/fb-watchman": ^2.0.0 @@ -12891,8 +12891,8 @@ fsevents@^1.2.7: jest-regex-util: ^27.0.0-next.0 jest-serializer: ^27.0.0-next.9 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.10 - jest-worker: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 + jest-worker: ^27.0.0-next.11 micromatch: ^4.0.4 slash: ^3.0.0 walker: ^1.0.7 @@ -12927,29 +12927,29 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-jasmine2@^27.0.0-next.10, jest-jasmine2@workspace:packages/jest-jasmine2": +"jest-jasmine2@^27.0.0-next.11, jest-jasmine2@workspace:packages/jest-jasmine2": version: 0.0.0-use.local resolution: "jest-jasmine2@workspace:packages/jest-jasmine2" dependencies: "@babel/traverse": ^7.1.0 - "@jest/environment": ^27.0.0-next.10 + "@jest/environment": ^27.0.0-next.11 "@jest/source-map": ^27.0.0-next.3 - "@jest/test-result": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/babel__traverse": ^7.0.4 "@types/co": ^4.6.2 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - expect: ^27.0.0-next.10 + expect: ^27.0.0-next.11 is-generator-fn: ^2.0.0 - jest-each: ^27.0.0-next.10 - jest-matcher-utils: ^27.0.0-next.10 - jest-message-util: ^27.0.0-next.10 - jest-runtime: ^27.0.0-next.10 - jest-snapshot: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 - pretty-format: ^27.0.0-next.10 + jest-each: ^27.0.0-next.11 + jest-matcher-utils: ^27.0.0-next.11 + jest-message-util: ^27.0.0-next.11 + jest-runtime: ^27.0.0-next.11 + jest-snapshot: ^27.0.0-next.11 + jest-util: ^27.0.0-next.11 + pretty-format: ^27.0.0-next.11 throat: ^6.0.1 languageName: unknown linkType: soft @@ -12966,31 +12966,31 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-leak-detector@^27.0.0-next.10, jest-leak-detector@workspace:packages/jest-leak-detector": +"jest-leak-detector@^27.0.0-next.11, jest-leak-detector@workspace:packages/jest-leak-detector": version: 0.0.0-use.local resolution: "jest-leak-detector@workspace:packages/jest-leak-detector" dependencies: "@types/weak-napi": ^2.0.0 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.11 weak-napi: ^2.0.1 languageName: unknown linkType: soft -"jest-matcher-utils@^27.0.0-next.10, jest-matcher-utils@workspace:packages/jest-matcher-utils": +"jest-matcher-utils@^27.0.0-next.11, jest-matcher-utils@workspace:packages/jest-matcher-utils": version: 0.0.0-use.local resolution: "jest-matcher-utils@workspace:packages/jest-matcher-utils" dependencies: - "@jest/test-utils": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 "@types/node": "*" chalk: ^4.0.0 - jest-diff: ^27.0.0-next.10 + jest-diff: ^27.0.0-next.11 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.11 languageName: unknown linkType: soft -"jest-message-util@^27.0.0-next.10, jest-message-util@workspace:packages/jest-message-util": +"jest-message-util@^27.0.0-next.11, jest-message-util@workspace:packages/jest-message-util": version: 0.0.0-use.local resolution: "jest-message-util@workspace:packages/jest-message-util" dependencies: @@ -13003,7 +13003,7 @@ fsevents@^1.2.7: chalk: ^4.0.0 graceful-fs: ^4.2.4 micromatch: ^4.0.4 - pretty-format: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.11 slash: ^3.0.0 stack-utils: ^2.0.3 languageName: unknown @@ -13039,7 +13039,7 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-phabricator@workspace:packages/jest-phabricator" dependencies: - "@jest/test-result": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.11 languageName: unknown linkType: soft @@ -13074,18 +13074,18 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-repl@workspace:packages/jest-repl" dependencies: - "@jest/console": ^27.0.0-next.10 - "@jest/environment": ^27.0.0-next.10 - "@jest/test-utils": ^27.0.0-next.10 - "@jest/transform": ^27.0.0-next.10 + "@jest/console": ^27.0.0-next.11 + "@jest/environment": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0-next.11 + "@jest/transform": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/yargs": ^16.0.0 chalk: ^4.0.0 execa: ^5.0.0 - jest-config: ^27.0.0-next.10 - jest-runtime: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 - jest-validate: ^27.0.0-next.10 + jest-config: ^27.0.0-next.11 + jest-runtime: ^27.0.0-next.11 + jest-util: ^27.0.0-next.11 + jest-validate: ^27.0.0-next.11 repl: ^0.1.3 yargs: ^16.0.3 bin: @@ -13094,21 +13094,21 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-resolve-dependencies@^27.0.0-next.10, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": +"jest-resolve-dependencies@^27.0.0-next.11, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": version: 0.0.0-use.local resolution: "jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies" dependencies: - "@jest/test-utils": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 - jest-haste-map: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.11 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.10 - jest-runtime: ^27.0.0-next.10 - jest-snapshot: ^27.0.0-next.10 + jest-resolve: ^27.0.0-next.11 + jest-runtime: ^27.0.0-next.11 + jest-snapshot: ^27.0.0-next.11 languageName: unknown linkType: soft -"jest-resolve@^27.0.0-next.10, jest-resolve@workspace:packages/jest-resolve": +"jest-resolve@^27.0.0-next.11, jest-resolve@workspace:packages/jest-resolve": version: 0.0.0-use.local resolution: "jest-resolve@workspace:packages/jest-resolve" dependencies: @@ -13118,9 +13118,9 @@ fsevents@^1.2.7: chalk: ^4.0.0 escalade: ^3.1.1 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.11 jest-pnp-resolver: ^1.2.2 - jest-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 resolve: ^1.20.0 slash: ^3.0.0 languageName: unknown @@ -13137,14 +13137,14 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-runner@^27.0.0-next.10, jest-runner@workspace:packages/jest-runner": +"jest-runner@^27.0.0-next.11, jest-runner@workspace:packages/jest-runner": version: 0.0.0-use.local resolution: "jest-runner@workspace:packages/jest-runner" dependencies: - "@jest/console": ^27.0.0-next.10 - "@jest/environment": ^27.0.0-next.10 - "@jest/test-result": ^27.0.0-next.10 - "@jest/transform": ^27.0.0-next.10 + "@jest/console": ^27.0.0-next.11 + "@jest/environment": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0-next.11 + "@jest/transform": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 @@ -13154,33 +13154,33 @@ fsevents@^1.2.7: emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-config: ^27.0.0-next.10 + jest-config: ^27.0.0-next.11 jest-docblock: ^27.0.0-next.10 - jest-haste-map: ^27.0.0-next.10 - jest-jasmine2: ^27.0.0-next.10 - jest-leak-detector: ^27.0.0-next.10 - jest-message-util: ^27.0.0-next.10 - jest-resolve: ^27.0.0-next.10 - jest-runtime: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 - jest-worker: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.11 + jest-jasmine2: ^27.0.0-next.11 + jest-leak-detector: ^27.0.0-next.11 + jest-message-util: ^27.0.0-next.11 + jest-resolve: ^27.0.0-next.11 + jest-runtime: ^27.0.0-next.11 + jest-util: ^27.0.0-next.11 + jest-worker: ^27.0.0-next.11 source-map-support: ^0.5.6 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-runtime@^27.0.0-next.10, jest-runtime@workspace:packages/jest-runtime": +"jest-runtime@^27.0.0-next.11, jest-runtime@workspace:packages/jest-runtime": version: 0.0.0-use.local resolution: "jest-runtime@workspace:packages/jest-runtime" dependencies: - "@jest/console": ^27.0.0-next.10 - "@jest/environment": ^27.0.0-next.10 - "@jest/fake-timers": ^27.0.0-next.10 - "@jest/globals": ^27.0.0-next.10 + "@jest/console": ^27.0.0-next.11 + "@jest/environment": ^27.0.0-next.11 + "@jest/fake-timers": ^27.0.0-next.11 + "@jest/globals": ^27.0.0-next.11 "@jest/source-map": ^27.0.0-next.3 - "@jest/test-result": ^27.0.0-next.10 - "@jest/test-utils": ^27.0.0-next.10 - "@jest/transform": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0-next.11 + "@jest/transform": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 @@ -13194,16 +13194,16 @@ fsevents@^1.2.7: exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-environment-node: ^27.0.0-next.10 - jest-haste-map: ^27.0.0-next.10 - jest-message-util: ^27.0.0-next.10 + jest-environment-node: ^27.0.0-next.11 + jest-haste-map: ^27.0.0-next.11 + jest-message-util: ^27.0.0-next.11 jest-mock: ^27.0.0-next.10 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.10 - jest-snapshot: ^27.0.0-next.10 + jest-resolve: ^27.0.0-next.11 + jest-snapshot: ^27.0.0-next.11 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.10 - jest-validate: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 + jest-validate: ^27.0.0-next.11 slash: ^3.0.0 strip-bom: ^4.0.0 yargs: ^16.0.3 @@ -13247,7 +13247,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-snapshot@^27.0.0-next.10, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": +"jest-snapshot@^27.0.0-next.11, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": version: 0.0.0-use.local resolution: "jest-snapshot@workspace:packages/jest-snapshot" dependencies: @@ -13259,8 +13259,8 @@ fsevents@^1.2.7: "@babel/preset-react": ^7.7.2 "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 - "@jest/test-utils": ^27.0.0-next.10 - "@jest/transform": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.0-next.11 + "@jest/transform": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/babel__traverse": ^7.0.4 "@types/graceful-fs": ^4.1.3 @@ -13271,23 +13271,23 @@ fsevents@^1.2.7: ansi-styles: ^5.0.0 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^27.0.0-next.10 + expect: ^27.0.0-next.11 graceful-fs: ^4.2.4 - jest-diff: ^27.0.0-next.10 + jest-diff: ^27.0.0-next.11 jest-get-type: ^27.0.0-next.9 - jest-haste-map: ^27.0.0-next.10 - jest-matcher-utils: ^27.0.0-next.10 - jest-message-util: ^27.0.0-next.10 - jest-resolve: ^27.0.0-next.10 - jest-util: ^27.0.0-next.10 + jest-haste-map: ^27.0.0-next.11 + jest-matcher-utils: ^27.0.0-next.11 + jest-message-util: ^27.0.0-next.11 + jest-resolve: ^27.0.0-next.11 + jest-util: ^27.0.0-next.11 natural-compare: ^1.4.0 prettier: ^2.0.0 - pretty-format: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.11 semver: ^7.3.2 languageName: unknown linkType: soft -"jest-util@^27.0.0-next.10, jest-util@workspace:packages/jest-util": +"jest-util@^27.0.0-next.11, jest-util@workspace:packages/jest-util": version: 0.0.0-use.local resolution: "jest-util@workspace:packages/jest-util" dependencies: @@ -13318,7 +13318,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-validate@^27.0.0-next.10, jest-validate@workspace:packages/jest-validate": +"jest-validate@^27.0.0-next.11, jest-validate@workspace:packages/jest-validate": version: 0.0.0-use.local resolution: "jest-validate@workspace:packages/jest-validate" dependencies: @@ -13328,7 +13328,7 @@ fsevents@^1.2.7: chalk: ^4.0.0 jest-get-type: ^27.0.0-next.9 leven: ^3.1.0 - pretty-format: ^27.0.0-next.10 + pretty-format: ^27.0.0-next.11 languageName: unknown linkType: soft @@ -13363,16 +13363,16 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-watcher@^27.0.0-next.10, jest-watcher@workspace:packages/jest-watcher": +"jest-watcher@^27.0.0-next.11, jest-watcher@workspace:packages/jest-watcher": version: 0.0.0-use.local resolution: "jest-watcher@workspace:packages/jest-watcher" dependencies: - "@jest/test-result": ^27.0.0-next.10 + "@jest/test-result": ^27.0.0-next.11 "@jest/types": ^27.0.0-next.10 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - jest-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 string-length: ^4.0.1 languageName: unknown linkType: soft @@ -13415,7 +13415,7 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-worker@^27.0.0-next.10, jest-worker@workspace:packages/jest-worker": +"jest-worker@^27.0.0-next.11, jest-worker@workspace:packages/jest-worker": version: 0.0.0-use.local resolution: "jest-worker@workspace:packages/jest-worker" dependencies: @@ -13423,7 +13423,7 @@ fsevents@^1.2.7: "@types/node": "*" "@types/supports-color": ^8.1.0 get-stream: ^6.0.0 - jest-leak-detector: ^27.0.0-next.10 + jest-leak-detector: ^27.0.0-next.11 merge-stream: ^2.0.0 supports-color: ^8.0.0 worker-farm: ^1.6.0 @@ -13464,9 +13464,9 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest@workspace:packages/jest" dependencies: - "@jest/core": ^27.0.0-next.10 + "@jest/core": ^27.0.0-next.11 import-local: ^3.0.2 - jest-cli: ^27.0.0-next.10 + jest-cli: ^27.0.0-next.11 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 peerDependenciesMeta: @@ -17572,7 +17572,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pretty-format@^27.0.0-next.10, pretty-format@workspace:packages/pretty-format": +"pretty-format@^27.0.0-next.11, pretty-format@workspace:packages/pretty-format": version: 0.0.0-use.local resolution: "pretty-format@workspace:packages/pretty-format" dependencies: @@ -17583,7 +17583,7 @@ fsevents@^1.2.7: ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 immutable: 4.0.0-rc.9 - jest-util: ^27.0.0-next.10 + jest-util: ^27.0.0-next.11 react: "*" react-dom: "*" react-is: ^17.0.1 From 78eb25df709e44821fdbf994d22166208c231612 Mon Sep 17 00:00:00 2001 From: Mikhail Bodrov Date: Fri, 21 May 2021 09:17:34 +0300 Subject: [PATCH 22/65] chore: remove needless assign (#11433) --- packages/jest-core/src/lib/updateGlobalConfig.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/jest-core/src/lib/updateGlobalConfig.ts b/packages/jest-core/src/lib/updateGlobalConfig.ts index a3d30ea135fa..3e28231108da 100644 --- a/packages/jest-core/src/lib/updateGlobalConfig.ts +++ b/packages/jest-core/src/lib/updateGlobalConfig.ts @@ -36,7 +36,6 @@ export default ( replacePathSepForRegex(options.testPathPattern) || ''; } - newConfig.onlyChanged = false; newConfig.onlyChanged = !newConfig.watchAll && !newConfig.testNamePattern && From 22267424a824310779bad3cafaae59485ce2a6c7 Mon Sep 17 00:00:00 2001 From: Mikhail Bodrov Date: Fri, 21 May 2021 09:17:55 +0300 Subject: [PATCH 23/65] chore: minor simplify format results error (#11432) --- packages/jest-message-util/src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/jest-message-util/src/index.ts b/packages/jest-message-util/src/index.ts index 25ac49e96936..f02a7f0fefeb 100644 --- a/packages/jest-message-util/src/index.ts +++ b/packages/jest-message-util/src/index.ts @@ -337,9 +337,9 @@ export const formatResultsErrors = ( ): string | null => { const failedResults: FailedResults = testResults.reduce( (errors, result) => { - result.failureMessages - .map(checkForCommonEnvironmentErrors) - .forEach(content => errors.push({content, result})); + result.failureMessages.forEach(item => { + errors.push({content: checkForCommonEnvironmentErrors(item), result}); + }); return errors; }, [], From b68d91b59a2f2145c11e51f62199acdde0936daf Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Tue, 25 May 2021 09:19:03 +0200 Subject: [PATCH 24/65] feat(pretty-print): add option `printBasicPrototype` (#11441) --- CHANGELOG.md | 1 + packages/pretty-format/README.md | 25 ++++++++++--------- .../src/__tests__/prettyFormat.test.ts | 25 +++++++++++++++++++ packages/pretty-format/src/index.ts | 14 +++++++++-- packages/pretty-format/src/types.ts | 3 +++ 5 files changed, 54 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 379ffedfd027..762e8c2d9d06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,7 @@ - `[jest-worker]` Add support for custom task queues and adds a `PriorityQueue` implementation. ([#10921](https://github.com/facebook/jest/pull/10921)) - `[jest-worker]` Add in-order scheduling policy to jest worker ([10902](https://github.com/facebook/jest/pull/10902)) - `[pretty-format]` Better print for sparse arrays ([11326](https://github.com/facebook/jest/pull/11326)) +- `[pretty-print]` Add option `printBasicPrototype` which determines whether or not the prototype should be printed for raw objects or arrays ([#11441](https://github.com/facebook/jest/pull/11441)) ### Fixes diff --git a/packages/pretty-format/README.md b/packages/pretty-format/README.md index 6b2053be2695..315866f71929 100755 --- a/packages/pretty-format/README.md +++ b/packages/pretty-format/README.md @@ -66,18 +66,19 @@ console.log(prettyFormat(onClick, options)); ``` -| key | type | default | description | -| :------------------ | :-------- | :--------- | :------------------------------------------------------ | -| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects | -| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions | -| `escapeString` | `boolean` | `true` | escape special characters in strings | -| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) | -| `indent` | `number` | `2` | spaces in each level of indentation | -| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on | -| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks | -| `plugins` | `array` | `[]` | plugins to serialize application-specific data types | -| `printFunctionName` | `boolean` | `true` | include or omit the name of a function | -| `theme` | `object` | | colors to highlight syntax in terminal | +| key | type | default | description | +| :-------------------- | :-------- | :--------- | :------------------------------------------------------ | +| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects | +| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions | +| `escapeString` | `boolean` | `true` | escape special characters in strings | +| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) | +| `indent` | `number` | `2` | spaces in each level of indentation | +| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on | +| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks | +| `plugins` | `array` | `[]` | plugins to serialize application-specific data types | +| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays | +| `printFunctionName` | `boolean` | `true` | include or omit the name of a function | +| `theme` | `object` | | colors to highlight syntax in terminal | Property values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors) diff --git a/packages/pretty-format/src/__tests__/prettyFormat.test.ts b/packages/pretty-format/src/__tests__/prettyFormat.test.ts index aa1e1f440542..33f847541123 100644 --- a/packages/pretty-format/src/__tests__/prettyFormat.test.ts +++ b/packages/pretty-format/src/__tests__/prettyFormat.test.ts @@ -524,6 +524,31 @@ describe('prettyFormat()', () => { }); }); + it('can omit basic prototypes', () => { + const val = { + deeply: {nested: {object: {}}}, + 'empty array': {}, + 'empty object': {}, + 'nested array': [[[]]], + 'typed array': new Uint8Array(), + }; + expect(prettyFormat(val, {maxDepth: 2, printBasicPrototype: false})).toBe( + [ + '{', + ' "deeply": {', + ' "nested": [Object],', + ' },', + ' "empty array": {},', + ' "empty object": {},', + ' "nested array": [', + ' [Array],', + ' ],', + ' "typed array": Uint8Array [],', + '}', + ].join('\n'), + ); + }); + it('can customize the max depth', () => { const val = [ { diff --git a/packages/pretty-format/src/index.ts b/packages/pretty-format/src/index.ts index 76707498648f..e2f5f0326270 100644 --- a/packages/pretty-format/src/index.ts +++ b/packages/pretty-format/src/index.ts @@ -237,7 +237,11 @@ function printComplexValue( if (isToStringedArrayType(toStringed)) { return hitMaxDepth ? '[' + val.constructor.name + ']' - : (min ? '' : val.constructor.name + ' ') + + : (min + ? '' + : !config.printBasicPrototype && val.constructor.name === 'Array' + ? '' + : val.constructor.name + ' ') + '[' + printListItems(val, config, indentation, depth, refs, printer) + ']'; @@ -276,7 +280,11 @@ function printComplexValue( // For example, not even relevant if window is prop of React element. return hitMaxDepth || isWindow(val) ? '[' + getConstructorName(val) + ']' - : (min ? '' : getConstructorName(val) + ' ') + + : (min + ? '' + : !config.printBasicPrototype && getConstructorName(val) === 'Object' + ? '' + : getConstructorName(val) + ' ') + '{' + printObjectProperties(val, config, indentation, depth, refs, printer) + '}'; @@ -395,6 +403,7 @@ const DEFAULT_OPTIONS: Options = { maxDepth: Infinity, min: false, plugins: [], + printBasicPrototype: true, printFunctionName: true, theme: DEFAULT_THEME, }; @@ -495,6 +504,7 @@ const getConfig = (options?: OptionsReceived): Config => ({ options && options.plugins !== undefined ? options.plugins : DEFAULT_OPTIONS.plugins, + printBasicPrototype: options?.printBasicPrototype ?? true, printFunctionName: getPrintFunctionName(options), spacingInner: options && options.min ? ' ' : '\n', spacingOuter: options && options.min ? '' : '\n', diff --git a/packages/pretty-format/src/types.ts b/packages/pretty-format/src/types.ts index a2657b9e6c63..e27dd61ea5e9 100644 --- a/packages/pretty-format/src/types.ts +++ b/packages/pretty-format/src/types.ts @@ -41,6 +41,7 @@ export type Options = { maxDepth: number; min: boolean; plugins: Plugins; + printBasicPrototype: boolean; printFunctionName: boolean; theme: Theme; }; @@ -54,6 +55,7 @@ export type OptionsReceived = { maxDepth?: number; min?: boolean; plugins?: Plugins; + printBasicPrototype?: boolean; printFunctionName?: boolean; theme?: ThemeReceived; }; @@ -67,6 +69,7 @@ export type Config = { maxDepth: number; min: boolean; plugins: Plugins; + printBasicPrototype: boolean; printFunctionName: boolean; spacingInner: string; spacingOuter: string; From 564694a708030f0777dffb1b42ab12977331771a Mon Sep 17 00:00:00 2001 From: Tim Seckinger Date: Tue, 25 May 2021 09:06:32 +0100 Subject: [PATCH 25/65] docs(blog): Jest 27 blog post (#11131) Co-authored-by: Christoph Nakazawa Co-authored-by: Simen Bekkhus --- website/blog/2021-05-25-jest-27.md | 77 ++++++++++++++++++ .../img/blog/27-interactive-failures.png | Bin 0 -> 158446 bytes 2 files changed, 77 insertions(+) create mode 100644 website/blog/2021-05-25-jest-27.md create mode 100644 website/static/img/blog/27-interactive-failures.png diff --git a/website/blog/2021-05-25-jest-27.md b/website/blog/2021-05-25-jest-27.md new file mode 100644 index 000000000000..122bd9101a56 --- /dev/null +++ b/website/blog/2021-05-25-jest-27.md @@ -0,0 +1,77 @@ +--- +title: 'Jest 27: New Defaults for Jest, 2021 edition ⏩' +author: Tim Seckinger +authorURL: https://github.com/jeysal +authorImageURL: https://avatars.githubusercontent.com/u/16069751 +--- + +In the [Jest 26 blog post](/blog/2020/05/05/jest-26) about a year ago, we announced that after two major releases with few breaking changes, Jest 27 will flip some switches to set better defaults for projects that are new or can migrate smoothly. This gives us the opportunity to remove some packages from the default distribution of Jest 28 and publish them as separately installable and pluggable modules instead. Everyone on the new defaults can benefit from a smaller install size, while people needing these packages can still install them separately. + +With the first major change of defaults since the [New Defaults for Jest](/blog/2016/09/01/jest-15) that came with the seminal version 15, Jest 27 is now here, to keep Jest fast, lean, and relevant in the future. We will explain those changes of defaults and other notable breaking changes in this post, but first, let's get into some exciting new features! + + + +## Feature updates + +Firstly, the interactive mode you may know from reviewing and updating failed snapshots can now also be used to **step through failed tests** one at a time. Credit goes to first-time contributor [@NullDivision](https://github.com/NullDivision) for [implementing](https://github.com/facebook/jest/pull/10858) this feature! + +![Interactive failed test run](/img/blog/27-interactive-failures.png) + +Speaking of snapshots, one of the more exciting features we've shipped in recent years are Inline Snapshots, which [landed](https://github.com/facebook/jest/pull/6380) in a minor release of Jest 23 almost three years ago. However, they came with the restriction that projects wanting to utilize them must be using [Prettier](https://prettier.io/) to format their code, because that's what Jest would use to make sure the file it writes the snapshots into remains properly formatted. +And so for most of these years, we've had a [pull request](https://github.com/facebook/jest/pull/7792) in the pipeline to eliminate this restriction and allow using **Inline Snapshots without Prettier**. It has amassed well above a hundred comments, not even taking into account PRs split out from it and landed first, and even changed owner once after the initial submission by another first-time contributor, [@mmkal](https://github.com/mmkal) under the hilarious working title 'Uglier Inline Snapshots'. With the stellar rise of Prettier in recent times, this improvement is now maybe less needed than back in 2018, but still, we know that feeling of getting into a project that does not use Prettier, and suddenly not being able to use inline snapshots anymore. Nevermore! + +The main reason why it took us so long to land this was, somewhat surprisingly, an out of memory error on our build pipeline. It turns out that the dependencies we load for each test file to perform the parsing, snapshot insertion, and printing do incur a significant time and memory overhead. +So with some [tricks](https://github.com/facebook/jest/issues/9898), we've **sped up the initialization per test file** by roughly 70% compared to Jest 26. Note that you will almost certainly not see this big of a performance improvement on your project—you would need a lot of test files that each run very quickly to best notice this, and the overhead when using a [JSDOM environment](/docs/configuration#testenvironment-string) dwarfs any such improvement. + +In other news, the [native ESM support](https://github.com/facebook/jest/issues/9430) is progressing, but some major complexities, for instance around mocking, are still ahead of us, and we continue to observe the migration to ESM as a huge ecosystem effort, where Node and a lot of crucial tools and packages all have to rely on each other to deliver an overall compelling experience. +ESM support [for plugging modules into Jest](https://github.com/facebook/jest/issues/11167) is more advanced—custom runners, reporters, watch plugins, and many other modules can already be loaded as ES modules. + +We've also merged [a PR](https://github.com/facebook/jest/pull/9351) to be able to deal with test files symlinked into the test directory, a feature much wanted by users of [Bazel](https://bazel.build/). + +[Another PR](https://github.com/facebook/jest/issues/9504) enabled [`transform`s](/docs/configuration#transform-objectstring-pathtotransformer--pathtotransformer-object) to be asynchronous, a requirement to support transpilation through tools such as [esbuild](https://esbuild.github.io/), [Snowpack](https://www.snowpack.dev/), and [Vite](https://vitejs.dev/) effectively. + +## Flipping defaults + +Up until now, if you were using Jest in its default configuration, you were—perhaps unknowingly—running some code forked many years ago from the test runner [Jasmine 2.0](https://jasmine.github.io/2.0/introduction) that provides test framework functions such as `describe`, `it`, and `beforeEach`. In 2017, [Aaron Abramov](https://github.com/aaronabramov) [initially wrote](https://github.com/facebook/jest/pull/3668) a **replacement for the Jasmine code** called `jest-circus`, meant to improve error messages, maintainability, and extensibility. +After years of large-scale use at Facebook and of course in Jest itself, as well as recent adoption in `create-react-app`, we are now confident that `jest-circus` is highly compatible with `jest-jasmine2` and should work in most environments with little to no migration work. There may be minor differences in execution order and strictness, but we expect no major upgrade difficulties other than for code relying on Jasmine-specific APIs such as `jasmine.getEnv()`. If you rely extensively on such APIs, you can opt back in to the Jasmine-based test runner by [configuring](/docs/configuration#testrunner-string) `"testRunner": "jest-jasmine2"`. + +Running tests in a [JSDOM environment](/docs/configuration#testenvironment-string) incurs a significant performance overhead. Because this was the default behavior of Jest unless otherwise configured up until now, users who are writing Node apps, for example, may not even know they are given an expensive DOM environment that they do not even need. +For this reason, we are **changing the default test environment** from `"jsdom"` to `"node"`. If you are affected by this change because you use DOM APIs and do not have the test environment explicitly configured, you should be receiving an error when e.g. `document` is accessed, and you can configure `"testEnvironment": "jsdom"` or use [per-file environment configuration](/docs/configuration#testenvironment-string) to resolve this. +For mixed projects where some tests require a DOM environment but others don't, we recommend using the fast `"node"` environment by default and declaring exactly those tests that need the DOM using [docblocks](/docs/configuration#testenvironment-string). +In the next major, we plan to also eliminate `jest-jasmine2` and `jest-environment-jsdom` from the Jest dependency tree and require them to be installed explicitly, so that many users can profit from a smaller install size with less clutter that they don't need. + +Another default that we are changing affects Fake Timers aka [Timer Mocks](/docs/timer-mocks). We introduced an opt-in "modern" implementation of Fake Timers in Jest 26 accessed transparently through the same API, but with much more comprehensive mocking, such as for `Date` and `queueMicrotask`. +This **modern fake timers implementation will now be the default**. If you are among the unlucky few who are affected by the subtle implementation differences too heavily to migrate, you can get back the old implementation using `jest.useFakeTimers("legacy")` or, if you are enabling fake timers globally via [configuration](/docs/configuration#timers-string), `"timers": "legacy"`. + +## Features coming with breaking changes + +We introduced a few more small breaking changes to help you avoid mistakes by disallowing some things that can easily happen unintentionally: + +- The same `done` test callback may not be called more than once, +- calling `done` and returning a Promise may not be combined, +- a `describe` block must not return anything, + +and we [made some TypeScript types stricter](https://github.com/facebook/jest/pull/10512). + +Modules used in the following configuration options are now transformed like the rest of your code, which may be breaking if you relied on them being loaded as-is: + +- `testEnvironment` +- `runner` +- `testRunner` +- `snapshotResolver` + +## Miscellaneous breaking changes + +We removed some long-deprecated functions: + +- `jest.addMatchers` (use `expect.extend` instead) +- `jest.resetModuleRegistry` (use `jest.resetModules` instead) +- `jest.runTimersToTime` (use `jest.advanceTimersByTime` instead) + +A lot of Jest's packages have been migrated to use ESM-style exports (although they are still shipped as CommonJS), so if you consume e.g. `pretty-format` directly, you may need to adjust your import to a `default` import. + +We dropped support for Node 13—but Jest always supports the _Current_ and all _LTS_ [Node versions](https://nodejs.org/en/about/releases/), and Jest 27 continues to support Node 10, which only recently became unmaintained. + +As always, the full changelog and list of breaking changes can be [viewed here](https://github.com/facebook/jest/blob/master/CHANGELOG.md#2700). + +Finally, we'd like to thank the community for once again awarding Jest a sky-high satisfaction rating of 96% in the [State of JS 2020](https://2020.stateofjs.com/en-US/technologies/testing/) survey! Stay safe everyone, and we hope you continue to enjoy using Jest in the years and versions to come! 🃏 diff --git a/website/static/img/blog/27-interactive-failures.png b/website/static/img/blog/27-interactive-failures.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a20506b63fe8ac0c791995ba21b028a2cb9488 GIT binary patch literal 158446 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

xeuJ8#fodkfr3B=teOz9B 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 Xq~b$GbqXE95k&}C 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 Date: Tue, 25 May 2021 10:13:58 +0200 Subject: [PATCH 26/65] chore: update changelog for release --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 762e8c2d9d06..0adf536a8a82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ### Features +### Fixes + +### Chore & Maintenance + +### Performance + +### Features + +## 27.0.0 + - `[babel-jest]` Add async transformation ([#11192](https://github.com/facebook/jest/pull/11192)) - `[jest-changed-files]` Use '--' to separate paths from revisions ([#11160](https://github.com/facebook/jest/pull/11160)) - `[jest-circus]` [**BREAKING**] Fail tests when multiple `done()` calls are made ([#10624](https://github.com/facebook/jest/pull/10624)) From be16e47afcc9f64653b9a47782cb48a5ca243e65 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 10:14:56 +0200 Subject: [PATCH 27/65] v27.0.0 --- lerna.json | 2 +- packages/babel-jest/package.json | 6 ++-- packages/expect/package.json | 8 ++--- packages/jest-circus/package.json | 24 ++++++------- packages/jest-cli/package.json | 12 +++---- packages/jest-config/package.json | 20 +++++------ packages/jest-console/package.json | 6 ++-- packages/jest-core/package.json | 34 +++++++++---------- packages/jest-diff/package.json | 6 ++-- packages/jest-each/package.json | 4 +-- packages/jest-environment-jsdom/package.json | 8 ++--- packages/jest-environment-node/package.json | 8 ++--- packages/jest-environment/package.json | 4 +-- packages/jest-fake-timers/package.json | 4 +-- packages/jest-globals/package.json | 6 ++-- packages/jest-haste-map/package.json | 6 ++-- packages/jest-jasmine2/package.json | 20 +++++------ packages/jest-leak-detector/package.json | 4 +-- packages/jest-matcher-utils/package.json | 8 ++--- packages/jest-message-util/package.json | 4 +-- packages/jest-phabricator/package.json | 4 +-- packages/jest-repl/package.json | 16 ++++----- packages/jest-reporters/package.json | 16 ++++----- .../jest-resolve-dependencies/package.json | 12 +++---- packages/jest-resolve/package.json | 4 +-- packages/jest-runner/package.json | 26 +++++++------- packages/jest-runtime/package.json | 28 +++++++-------- packages/jest-snapshot/package.json | 20 +++++------ packages/jest-test-result/package.json | 4 +-- packages/jest-test-sequencer/package.json | 10 +++--- packages/jest-transform/package.json | 6 ++-- packages/jest-validate/package.json | 4 +-- packages/jest-watcher/package.json | 4 +-- packages/jest-worker/package.json | 4 +-- packages/jest/package.json | 6 ++-- packages/pretty-format/package.json | 2 +- packages/test-utils/package.json | 4 +-- 37 files changed, 182 insertions(+), 182 deletions(-) diff --git a/lerna.json b/lerna.json index 3df3128cf2d8..22857c0021e5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "27.0.0-next.11", + "version": "27.0.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json index 88dbb06dada9..8a63e7c408e2 100644 --- a/packages/babel-jest/package.json +++ b/packages/babel-jest/package.json @@ -1,7 +1,7 @@ { "name": "babel-jest", "description": "Jest plugin to use babel for transformation.", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,7 +15,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/transform": "^27.0.0-next.11", + "@jest/transform": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", @@ -26,7 +26,7 @@ }, "devDependencies": { "@babel/core": "^7.1.0", - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/graceful-fs": "^4.1.3" }, "peerDependencies": { diff --git a/packages/expect/package.json b/packages/expect/package.json index 193e211fac71..353fb851adbd 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -1,6 +1,6 @@ { "name": "expect", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -18,12 +18,12 @@ "@jest/types": "^27.0.0-next.10", "ansi-styles": "^5.0.0", "jest-get-type": "^27.0.0-next.9", - "jest-matcher-utils": "^27.0.0-next.11", - "jest-message-util": "^27.0.0-next.11", + "jest-matcher-utils": "^27.0.0", + "jest-message-util": "^27.0.0", "jest-regex-util": "^27.0.0-next.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "chalk": "^4.0.0", "fast-check": "^2.0.0", "immutable": "^4.0.0-rc.12" diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index a0b4746f468e..c79bba8f929d 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -1,6 +1,6 @@ { "name": "jest-circus", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,30 +15,30 @@ "./runner": "./runner.js" }, "dependencies": { - "@jest/environment": "^27.0.0-next.11", - "@jest/test-result": "^27.0.0-next.11", + "@jest/environment": "^27.0.0", + "@jest/test-result": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.0.0-next.11", + "expect": "^27.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.0-next.11", - "jest-matcher-utils": "^27.0.0-next.11", - "jest-message-util": "^27.0.0-next.11", - "jest-runner": "^27.0.0-next.11", - "jest-runtime": "^27.0.0-next.11", - "jest-snapshot": "^27.0.0-next.11", + "jest-each": "^27.0.0", + "jest-matcher-utils": "^27.0.0", + "jest-message-util": "^27.0.0", + "jest-runner": "^27.0.0", + "jest-runtime": "^27.0.0", + "jest-snapshot": "^27.0.0", "jest-util": "^27.0.0-next.11", - "pretty-format": "^27.0.0-next.11", + "pretty-format": "^27.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" }, "devDependencies": { "@babel/core": "^7.1.0", "@babel/register": "^7.0.0", - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/co": "^4.6.0", "@types/dedent": "^0.7.0", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index c7a4fa0d6205..4ee08906df4d 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -1,7 +1,7 @@ { "name": "jest-cli", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.11", + "version": "27.0.0", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,21 +10,21 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^27.0.0-next.11", - "@jest/test-result": "^27.0.0-next.11", + "@jest/core": "^27.0.0", + "@jest/test-result": "^27.0.0", "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.0.0-next.11", + "jest-config": "^27.0.0", "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0-next.11", + "jest-validate": "^27.0.0", "prompts": "^2.0.1", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.3", "@types/prompts": "^2.0.1", diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index e16fa31f791a..5d7e9320cb59 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -1,6 +1,6 @@ { "name": "jest-config", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -23,25 +23,25 @@ }, "dependencies": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.0.0-next.11", + "@jest/test-sequencer": "^27.0.0", "@jest/types": "^27.0.0-next.10", - "babel-jest": "^27.0.0-next.11", + "babel-jest": "^27.0.0", "chalk": "^4.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", "is-ci": "^3.0.0", - "jest-circus": "^27.0.0-next.11", - "jest-environment-jsdom": "^27.0.0-next.11", - "jest-environment-node": "^27.0.0-next.11", + "jest-circus": "^27.0.0", + "jest-environment-jsdom": "^27.0.0", + "jest-environment-node": "^27.0.0", "jest-get-type": "^27.0.0-next.9", - "jest-jasmine2": "^27.0.0-next.11", + "jest-jasmine2": "^27.0.0", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.11", + "jest-resolve": "^27.0.0", "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0-next.11", + "jest-validate": "^27.0.0", "micromatch": "^4.0.4", - "pretty-format": "^27.0.0-next.11" + "pretty-format": "^27.0.0" }, "devDependencies": { "@types/babel__core": "^7.0.4", diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json index bf6800248957..f38fc63b2b3f 100644 --- a/packages/jest-console/package.json +++ b/packages/jest-console/package.json @@ -1,6 +1,6 @@ { "name": "@jest/console", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,12 +17,12 @@ "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.0.0-next.11", + "jest-message-util": "^27.0.0", "jest-util": "^27.0.0-next.11", "slash": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/node": "*" }, "engines": { diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 249e9c16d5da..e26da1559fdf 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -1,7 +1,7 @@ { "name": "@jest/core", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.11", + "version": "27.0.0", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -9,10 +9,10 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.11", - "@jest/reporters": "^27.0.0-next.11", - "@jest/test-result": "^27.0.0-next.11", - "@jest/transform": "^27.0.0-next.11", + "@jest/console": "^27.0.0", + "@jest/reporters": "^27.0.0", + "@jest/test-result": "^27.0.0", + "@jest/transform": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -21,18 +21,18 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-changed-files": "^27.0.0-next.10", - "jest-config": "^27.0.0-next.11", - "jest-haste-map": "^27.0.0-next.11", - "jest-message-util": "^27.0.0-next.11", + "jest-config": "^27.0.0", + "jest-haste-map": "^27.0.0", + "jest-message-util": "^27.0.0", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.11", - "jest-resolve-dependencies": "^27.0.0-next.11", - "jest-runner": "^27.0.0-next.11", - "jest-runtime": "^27.0.0-next.11", - "jest-snapshot": "^27.0.0-next.11", + "jest-resolve": "^27.0.0", + "jest-resolve-dependencies": "^27.0.0", + "jest-runner": "^27.0.0", + "jest-runtime": "^27.0.0", + "jest-snapshot": "^27.0.0", "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0-next.11", - "jest-watcher": "^27.0.0-next.11", + "jest-validate": "^27.0.0", + "jest-watcher": "^27.0.0", "micromatch": "^4.0.4", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", @@ -40,8 +40,8 @@ "strip-ansi": "^6.0.0" }, "devDependencies": { - "@jest/test-sequencer": "^27.0.0-next.11", - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-sequencer": "^27.0.0", + "@jest/test-utils": "^27.0.0", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/micromatch": "^4.0.1", diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json index 54fe6fc0776a..4bc4bb722703 100644 --- a/packages/jest-diff/package.json +++ b/packages/jest-diff/package.json @@ -1,6 +1,6 @@ { "name": "jest-diff", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,10 +17,10 @@ "chalk": "^4.0.0", "diff-sequences": "^27.0.0-next.0", "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.11" + "pretty-format": "^27.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "strip-ansi": "^6.0.0" }, "engines": { diff --git a/packages/jest-each/package.json b/packages/jest-each/package.json index ed70018e65b9..ce1056f619f6 100644 --- a/packages/jest-each/package.json +++ b/packages/jest-each/package.json @@ -1,6 +1,6 @@ { "name": "jest-each", - "version": "27.0.0-next.11", + "version": "27.0.0", "description": "Parameterised tests for Jest", "main": "./build/index.js", "types": "./build/index.d.ts", @@ -26,7 +26,7 @@ "chalk": "^4.0.0", "jest-get-type": "^27.0.0-next.9", "jest-util": "^27.0.0-next.11", - "pretty-format": "^27.0.0-next.11" + "pretty-format": "^27.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json index e8da7e032165..7f68b3b0aeb7 100644 --- a/packages/jest-environment-jsdom/package.json +++ b/packages/jest-environment-jsdom/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-jsdom", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,8 +14,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.11", - "@jest/fake-timers": "^27.0.0-next.11", + "@jest/environment": "^27.0.0", + "@jest/fake-timers": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "jest-mock": "^27.0.0-next.10", @@ -23,7 +23,7 @@ "jsdom": "^16.4.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/jsdom": "^16.2.4" }, "engines": { diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json index af5d880b0b87..bfb248eab319 100644 --- a/packages/jest-environment-node/package.json +++ b/packages/jest-environment-node/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-node", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.11", - "@jest/fake-timers": "^27.0.0-next.11", + "@jest/environment": "^27.0.0", + "@jest/fake-timers": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "jest-mock": "^27.0.0-next.10", "jest-util": "^27.0.0-next.11" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11" + "@jest/test-utils": "^27.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json index 1bd093c27066..344abe9ce16b 100644 --- a/packages/jest-environment/package.json +++ b/packages/jest-environment/package.json @@ -1,6 +1,6 @@ { "name": "@jest/environment", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/fake-timers": "^27.0.0-next.11", + "@jest/fake-timers": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "jest-mock": "^27.0.0-next.10" diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json index bf13c5a31255..deae7700ea00 100644 --- a/packages/jest-fake-timers/package.json +++ b/packages/jest-fake-timers/package.json @@ -1,6 +1,6 @@ { "name": "@jest/fake-timers", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,7 +17,7 @@ "@jest/types": "^27.0.0-next.10", "@sinonjs/fake-timers": "^7.0.2", "@types/node": "*", - "jest-message-util": "^27.0.0-next.11", + "jest-message-util": "^27.0.0", "jest-mock": "^27.0.0-next.10", "jest-util": "^27.0.0-next.11" }, diff --git a/packages/jest-globals/package.json b/packages/jest-globals/package.json index b8432c299e29..6eede5341c75 100644 --- a/packages/jest-globals/package.json +++ b/packages/jest-globals/package.json @@ -1,6 +1,6 @@ { "name": "@jest/globals", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,9 +17,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0-next.11", + "@jest/environment": "^27.0.0", "@jest/types": "^27.0.0-next.10", - "expect": "^27.0.0-next.11" + "expect": "^27.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index c5f8ddad2e35..a79a5165a320 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -1,6 +1,6 @@ { "name": "jest-haste-map", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -23,12 +23,12 @@ "jest-regex-util": "^27.0.0-next.0", "jest-serializer": "^27.0.0-next.9", "jest-util": "^27.0.0-next.11", - "jest-worker": "^27.0.0-next.11", + "jest-worker": "^27.0.0", "micromatch": "^4.0.4", "walker": "^1.0.7" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/anymatch": "^1.3.1", "@types/fb-watchman": "^2.0.0", "@types/micromatch": "^4.0.1", diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index 8db4585f2f13..18c1d9089f29 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -1,6 +1,6 @@ { "name": "jest-jasmine2", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,22 +15,22 @@ }, "dependencies": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.0.0-next.11", + "@jest/environment": "^27.0.0", "@jest/source-map": "^27.0.0-next.3", - "@jest/test-result": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.0.0-next.11", + "expect": "^27.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.0-next.11", - "jest-matcher-utils": "^27.0.0-next.11", - "jest-message-util": "^27.0.0-next.11", - "jest-runtime": "^27.0.0-next.11", - "jest-snapshot": "^27.0.0-next.11", + "jest-each": "^27.0.0", + "jest-matcher-utils": "^27.0.0", + "jest-message-util": "^27.0.0", + "jest-runtime": "^27.0.0", + "jest-snapshot": "^27.0.0", "jest-util": "^27.0.0-next.11", - "pretty-format": "^27.0.0-next.11", + "pretty-format": "^27.0.0", "throat": "^6.0.1" }, "devDependencies": { diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json index 048b3857ca4a..16020e8cfa6d 100644 --- a/packages/jest-leak-detector/package.json +++ b/packages/jest-leak-detector/package.json @@ -1,6 +1,6 @@ { "name": "jest-leak-detector", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,7 +15,7 @@ }, "dependencies": { "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.11" + "pretty-format": "^27.0.0" }, "devDependencies": { "@types/weak-napi": "^2.0.0", diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json index e01cf94ba5a8..af7524ebf054 100644 --- a/packages/jest-matcher-utils/package.json +++ b/packages/jest-matcher-utils/package.json @@ -1,7 +1,7 @@ { "name": "jest-matcher-utils", "description": "A set of utility functions for expect and related packages", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,12 +19,12 @@ }, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.0.0-next.11", + "jest-diff": "^27.0.0", "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0-next.11" + "pretty-format": "^27.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/node": "*" }, "publishConfig": { diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index b0f395671f88..94f65c12353a 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-message-util", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -23,7 +23,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.0.0-next.11", + "pretty-format": "^27.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json index 33034549c777..30578ec8afbb 100644 --- a/packages/jest-phabricator/package.json +++ b/packages/jest-phabricator/package.json @@ -1,6 +1,6 @@ { "name": "jest-phabricator", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -12,7 +12,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.11" + "@jest/test-result": "^27.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-repl/package.json b/packages/jest-repl/package.json index 5d2cbad097f8..4af9e6a27135 100644 --- a/packages/jest-repl/package.json +++ b/packages/jest-repl/package.json @@ -1,6 +1,6 @@ { "name": "jest-repl", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,20 +16,20 @@ "./bin/jest-runtime-cli": "./bin/jest-runtime-cli.js" }, "dependencies": { - "@jest/console": "^27.0.0-next.11", - "@jest/environment": "^27.0.0-next.11", - "@jest/transform": "^27.0.0-next.11", + "@jest/console": "^27.0.0", + "@jest/environment": "^27.0.0", + "@jest/transform": "^27.0.0", "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", - "jest-config": "^27.0.0-next.11", - "jest-runtime": "^27.0.0-next.11", + "jest-config": "^27.0.0", + "jest-runtime": "^27.0.0", "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0-next.11", + "jest-validate": "^27.0.0", "repl": "^0.1.3", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/yargs": "^16.0.0", "execa": "^5.0.0" }, diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index c2992e5ed08f..70701f3bbeb8 100644 --- a/packages/jest-reporters/package.json +++ b/packages/jest-reporters/package.json @@ -1,7 +1,7 @@ { "name": "@jest/reporters", "description": "Jest's reporters", - "version": "27.0.0-next.11", + "version": "27.0.0", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,9 +10,9 @@ }, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.0.0-next.11", - "@jest/test-result": "^27.0.0-next.11", - "@jest/transform": "^27.0.0-next.11", + "@jest/console": "^27.0.0", + "@jest/test-result": "^27.0.0", + "@jest/transform": "^27.0.0", "@jest/types": "^27.0.0-next.10", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -24,10 +24,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.0.0-next.11", - "jest-resolve": "^27.0.0-next.11", + "jest-haste-map": "^27.0.0", + "jest-resolve": "^27.0.0", "jest-util": "^27.0.0-next.11", - "jest-worker": "^27.0.0-next.11", + "jest-worker": "^27.0.0", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -35,7 +35,7 @@ "v8-to-istanbul": "^7.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-resolve-dependencies/package.json b/packages/jest-resolve-dependencies/package.json index 1dc24a154b7b..445888f58323 100644 --- a/packages/jest-resolve-dependencies/package.json +++ b/packages/jest-resolve-dependencies/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve-dependencies", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,13 +16,13 @@ "dependencies": { "@jest/types": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-snapshot": "^27.0.0-next.11" + "jest-snapshot": "^27.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", - "jest-haste-map": "^27.0.0-next.11", - "jest-resolve": "^27.0.0-next.11", - "jest-runtime": "^27.0.0-next.11" + "@jest/test-utils": "^27.0.0", + "jest-haste-map": "^27.0.0", + "jest-resolve": "^27.0.0", + "jest-runtime": "^27.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index 3c30cf247f1d..e96d86cdbd6e 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -26,7 +26,7 @@ "devDependencies": { "@types/graceful-fs": "^4.1.3", "@types/resolve": "^1.20.0", - "jest-haste-map": "^27.0.0-next.11" + "jest-haste-map": "^27.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 8d26332665ac..4e3f4f3dde83 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -1,6 +1,6 @@ { "name": "jest-runner", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,25 +14,25 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.11", - "@jest/environment": "^27.0.0-next.11", - "@jest/test-result": "^27.0.0-next.11", - "@jest/transform": "^27.0.0-next.11", + "@jest/console": "^27.0.0", + "@jest/environment": "^27.0.0", + "@jest/test-result": "^27.0.0", + "@jest/transform": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-config": "^27.0.0-next.11", + "jest-config": "^27.0.0", "jest-docblock": "^27.0.0-next.10", - "jest-haste-map": "^27.0.0-next.11", - "jest-leak-detector": "^27.0.0-next.11", - "jest-message-util": "^27.0.0-next.11", - "jest-resolve": "^27.0.0-next.11", - "jest-runtime": "^27.0.0-next.11", + "jest-haste-map": "^27.0.0", + "jest-leak-detector": "^27.0.0", + "jest-message-util": "^27.0.0", + "jest-resolve": "^27.0.0", + "jest-runtime": "^27.0.0", "jest-util": "^27.0.0-next.11", - "jest-worker": "^27.0.0-next.11", + "jest-worker": "^27.0.0", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -40,7 +40,7 @@ "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/source-map-support": "^0.5.0", - "jest-jasmine2": "^27.0.0-next.11" + "jest-jasmine2": "^27.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index 98298f5691af..8fe3aac550dc 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -1,6 +1,6 @@ { "name": "jest-runtime", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,13 +14,13 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.11", - "@jest/environment": "^27.0.0-next.11", - "@jest/fake-timers": "^27.0.0-next.11", - "@jest/globals": "^27.0.0-next.11", + "@jest/console": "^27.0.0", + "@jest/environment": "^27.0.0", + "@jest/fake-timers": "^27.0.0", + "@jest/globals": "^27.0.0", "@jest/source-map": "^27.0.0-next.3", - "@jest/test-result": "^27.0.0-next.11", - "@jest/transform": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0", + "@jest/transform": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", @@ -29,26 +29,26 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.11", - "jest-message-util": "^27.0.0-next.11", + "jest-haste-map": "^27.0.0", + "jest-message-util": "^27.0.0", "jest-mock": "^27.0.0-next.10", "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0-next.11", - "jest-snapshot": "^27.0.0-next.11", + "jest-resolve": "^27.0.0", + "jest-snapshot": "^27.0.0", "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0-next.11", + "jest-validate": "^27.0.0", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.2", "@types/node": "^14.0.27", "execa": "^5.0.0", - "jest-environment-node": "^27.0.0-next.11", + "jest-environment-node": "^27.0.0", "jest-snapshot-serializer-raw": "^1.1.0" }, "engines": { diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json index 03c7f0d9e4cf..5df287aafc92 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -1,6 +1,6 @@ { "name": "jest-snapshot", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -20,29 +20,29 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.0.0-next.11", + "@jest/transform": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.0.0-next.11", + "expect": "^27.0.0", "graceful-fs": "^4.2.4", - "jest-diff": "^27.0.0-next.11", + "jest-diff": "^27.0.0", "jest-get-type": "^27.0.0-next.9", - "jest-haste-map": "^27.0.0-next.11", - "jest-matcher-utils": "^27.0.0-next.11", - "jest-message-util": "^27.0.0-next.11", - "jest-resolve": "^27.0.0-next.11", + "jest-haste-map": "^27.0.0", + "jest-matcher-utils": "^27.0.0", + "jest-message-util": "^27.0.0", + "jest-resolve": "^27.0.0", "jest-util": "^27.0.0-next.11", "natural-compare": "^1.4.0", - "pretty-format": "^27.0.0-next.11", + "pretty-format": "^27.0.0", "semver": "^7.3.2" }, "devDependencies": { "@babel/preset-flow": "^7.7.2", "@babel/preset-react": "^7.7.2", - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/graceful-fs": "^4.1.3", "@types/natural-compare": "^1.4.0", "@types/semver": "^7.1.0", diff --git a/packages/jest-test-result/package.json b/packages/jest-test-result/package.json index d6cd3cae30b9..e0268d6cf3bd 100644 --- a/packages/jest-test-result/package.json +++ b/packages/jest-test-result/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-result", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0-next.11", + "@jest/console": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json index 817505ffd8a6..08f7539f950b 100644 --- a/packages/jest-test-sequencer/package.json +++ b/packages/jest-test-sequencer/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-sequencer", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,11 +14,11 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.11", - "jest-runner": "^27.0.0-next.11", - "jest-runtime": "^27.0.0-next.11" + "jest-haste-map": "^27.0.0", + "jest-runner": "^27.0.0", + "jest-runtime": "^27.0.0" }, "devDependencies": { "@types/graceful-fs": "^4.1.3" diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index 6ee3fab4c737..fb6b7bd1efe8 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -1,6 +1,6 @@ { "name": "@jest/transform", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -21,7 +21,7 @@ "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0-next.11", + "jest-haste-map": "^27.0.0", "jest-regex-util": "^27.0.0-next.0", "jest-util": "^27.0.0-next.11", "micromatch": "^4.0.4", @@ -31,7 +31,7 @@ "write-file-atomic": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0-next.11", + "@jest/test-utils": "^27.0.0", "@types/babel__core": "^7.1.0", "@types/convert-source-map": "^1.5.1", "@types/fast-json-stable-stringify": "^2.0.0", diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json index cc40bb99f07f..5c9609a534cb 100644 --- a/packages/jest-validate/package.json +++ b/packages/jest-validate/package.json @@ -1,6 +1,6 @@ { "name": "jest-validate", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,7 +19,7 @@ "chalk": "^4.0.0", "jest-get-type": "^27.0.0-next.9", "leven": "^3.1.0", - "pretty-format": "^27.0.0-next.11" + "pretty-format": "^27.0.0" }, "devDependencies": { "@types/yargs": "^16.0.0" diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json index 2a6fda9ef4c4..f829f04c2d8b 100644 --- a/packages/jest-watcher/package.json +++ b/packages/jest-watcher/package.json @@ -1,7 +1,7 @@ { "name": "jest-watcher", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.11", + "version": "27.0.0", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -9,7 +9,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0-next.11", + "@jest/test-result": "^27.0.0", "@jest/types": "^27.0.0-next.10", "@types/node": "*", "ansi-escapes": "^4.2.1", diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json index 54e7162a0588..021b050ee756 100644 --- a/packages/jest-worker/package.json +++ b/packages/jest-worker/package.json @@ -1,6 +1,6 @@ { "name": "jest-worker", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -22,7 +22,7 @@ "@types/merge-stream": "^1.1.2", "@types/supports-color": "^8.1.0", "get-stream": "^6.0.0", - "jest-leak-detector": "^27.0.0-next.11", + "jest-leak-detector": "^27.0.0", "worker-farm": "^1.6.0" }, "engines": { diff --git a/packages/jest/package.json b/packages/jest/package.json index 4c49957eee8a..f4f037783d69 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -1,7 +1,7 @@ { "name": "jest", "description": "Delightful JavaScript Testing.", - "version": "27.0.0-next.11", + "version": "27.0.0", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -10,9 +10,9 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^27.0.0-next.11", + "@jest/core": "^27.0.0", "import-local": "^3.0.2", - "jest-cli": "^27.0.0-next.11" + "jest-cli": "^27.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0" diff --git a/packages/pretty-format/package.json b/packages/pretty-format/package.json index ddd293bbd551..9952065ded3b 100644 --- a/packages/pretty-format/package.json +++ b/packages/pretty-format/package.json @@ -1,6 +1,6 @@ { "name": "pretty-format", - "version": "27.0.0-next.11", + "version": "27.0.0", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index c3b2ea1c77f8..0143cb6635e5 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-utils", - "version": "27.0.0-next.11", + "version": "27.0.0", "private": true, "license": "MIT", "main": "./build/index.js", @@ -16,7 +16,7 @@ "@types/semver": "^7.1.0", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", - "pretty-format": "^27.0.0-next.11", + "pretty-format": "^27.0.0", "semver": "^7.3.2" }, "engines": { From 244c921bf0622b41a4cac1b456c2a9d1a550512b Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 10:16:42 +0200 Subject: [PATCH 28/65] chore: update lockfile after publish --- yarn.lock | 352 +++++++++++++++++++++++++++--------------------------- 1 file changed, 176 insertions(+), 176 deletions(-) diff --git a/yarn.lock b/yarn.lock index e2c1c4e097d0..cb9059ec4b36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2448,15 +2448,15 @@ __metadata: languageName: node linkType: hard -"@jest/console@^27.0.0-next.11, @jest/console@workspace:packages/jest-console": +"@jest/console@^27.0.0, @jest/console@workspace:packages/jest-console": version: 0.0.0-use.local resolution: "@jest/console@workspace:packages/jest-console" dependencies: - "@jest/test-utils": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^27.0.0-next.11 + jest-message-util: ^27.0.0 jest-util: ^27.0.0-next.11 slash: ^3.0.0 languageName: unknown @@ -2476,16 +2476,16 @@ __metadata: languageName: node linkType: hard -"@jest/core@^27.0.0-next.11, @jest/core@workspace:packages/jest-core": +"@jest/core@^27.0.0, @jest/core@workspace:packages/jest-core": version: 0.0.0-use.local resolution: "@jest/core@workspace:packages/jest-core" dependencies: - "@jest/console": ^27.0.0-next.11 - "@jest/reporters": ^27.0.0-next.11 - "@jest/test-result": ^27.0.0-next.11 - "@jest/test-sequencer": ^27.0.0-next.11 - "@jest/test-utils": ^27.0.0-next.11 - "@jest/transform": ^27.0.0-next.11 + "@jest/console": ^27.0.0 + "@jest/reporters": ^27.0.0 + "@jest/test-result": ^27.0.0 + "@jest/test-sequencer": ^27.0.0 + "@jest/test-utils": ^27.0.0 + "@jest/transform": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 @@ -2498,19 +2498,19 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.4 jest-changed-files: ^27.0.0-next.10 - jest-config: ^27.0.0-next.11 - jest-haste-map: ^27.0.0-next.11 - jest-message-util: ^27.0.0-next.11 + jest-config: ^27.0.0 + jest-haste-map: ^27.0.0 + jest-message-util: ^27.0.0 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.11 - jest-resolve-dependencies: ^27.0.0-next.11 - jest-runner: ^27.0.0-next.11 - jest-runtime: ^27.0.0-next.11 - jest-snapshot: ^27.0.0-next.11 + jest-resolve: ^27.0.0 + jest-resolve-dependencies: ^27.0.0 + jest-runner: ^27.0.0 + jest-runtime: ^27.0.0 + jest-snapshot: ^27.0.0 jest-snapshot-serializer-raw: ^1.1.0 jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0-next.11 - jest-watcher: ^27.0.0-next.11 + jest-validate: ^27.0.0 + jest-watcher: ^27.0.0 micromatch: ^4.0.4 p-each-series: ^2.1.0 rimraf: ^3.0.0 @@ -2534,18 +2534,18 @@ __metadata: languageName: unknown linkType: soft -"@jest/environment@^27.0.0-next.11, @jest/environment@workspace:packages/jest-environment": +"@jest/environment@^27.0.0, @jest/environment@workspace:packages/jest-environment": version: 0.0.0-use.local resolution: "@jest/environment@workspace:packages/jest-environment" dependencies: - "@jest/fake-timers": ^27.0.0-next.11 + "@jest/fake-timers": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/node": "*" jest-mock: ^27.0.0-next.10 languageName: unknown linkType: soft -"@jest/fake-timers@^27.0.0-next.11, @jest/fake-timers@workspace:packages/jest-fake-timers": +"@jest/fake-timers@^27.0.0, @jest/fake-timers@workspace:packages/jest-fake-timers": version: 0.0.0-use.local resolution: "@jest/fake-timers@workspace:packages/jest-fake-timers" dependencies: @@ -2553,20 +2553,20 @@ __metadata: "@sinonjs/fake-timers": ^7.0.2 "@types/node": "*" "@types/sinonjs__fake-timers": ^6.0.1 - jest-message-util: ^27.0.0-next.11 + jest-message-util: ^27.0.0 jest-mock: ^27.0.0-next.10 jest-snapshot-serializer-raw: ^1.1.0 jest-util: ^27.0.0-next.11 languageName: unknown linkType: soft -"@jest/globals@^27.0.0-next.11, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": +"@jest/globals@^27.0.0, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": version: 0.0.0-use.local resolution: "@jest/globals@workspace:packages/jest-globals" dependencies: - "@jest/environment": ^27.0.0-next.11 + "@jest/environment": ^27.0.0 "@jest/types": ^27.0.0-next.10 - expect: ^27.0.0-next.11 + expect: ^27.0.0 languageName: unknown linkType: soft @@ -2657,15 +2657,15 @@ __metadata: languageName: unknown linkType: soft -"@jest/reporters@^27.0.0-next.11, @jest/reporters@workspace:packages/jest-reporters": +"@jest/reporters@^27.0.0, @jest/reporters@workspace:packages/jest-reporters": version: 0.0.0-use.local resolution: "@jest/reporters@workspace:packages/jest-reporters" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.0.0-next.11 - "@jest/test-result": ^27.0.0-next.11 - "@jest/test-utils": ^27.0.0-next.11 - "@jest/transform": ^27.0.0-next.11 + "@jest/console": ^27.0.0 + "@jest/test-result": ^27.0.0 + "@jest/test-utils": ^27.0.0 + "@jest/transform": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 @@ -2686,10 +2686,10 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^27.0.0-next.11 - jest-resolve: ^27.0.0-next.11 + jest-haste-map: ^27.0.0 + jest-resolve: ^27.0.0 jest-util: ^27.0.0-next.11 - jest-worker: ^27.0.0-next.11 + jest-worker: ^27.0.0 mock-fs: ^4.4.1 slash: ^3.0.0 source-map: ^0.6.0 @@ -2716,11 +2716,11 @@ __metadata: languageName: unknown linkType: soft -"@jest/test-result@^27.0.0-next.11, @jest/test-result@workspace:packages/jest-test-result": +"@jest/test-result@^27.0.0, @jest/test-result@workspace:packages/jest-test-result": version: 0.0.0-use.local resolution: "@jest/test-result@workspace:packages/jest-test-result" dependencies: - "@jest/console": ^27.0.0-next.11 + "@jest/console": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 @@ -2739,20 +2739,20 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@^27.0.0-next.11, @jest/test-sequencer@workspace:packages/jest-test-sequencer": +"@jest/test-sequencer@^27.0.0, @jest/test-sequencer@workspace:packages/jest-test-sequencer": version: 0.0.0-use.local resolution: "@jest/test-sequencer@workspace:packages/jest-test-sequencer" dependencies: - "@jest/test-result": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0 "@types/graceful-fs": ^4.1.3 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.11 - jest-runner: ^27.0.0-next.11 - jest-runtime: ^27.0.0-next.11 + jest-haste-map: ^27.0.0 + jest-runner: ^27.0.0 + jest-runtime: ^27.0.0 languageName: unknown linkType: soft -"@jest/test-utils@^27.0.0-next.11, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": +"@jest/test-utils@^27.0.0, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": version: 0.0.0-use.local resolution: "@jest/test-utils@workspace:packages/test-utils" dependencies: @@ -2762,17 +2762,17 @@ __metadata: "@types/semver": ^7.1.0 ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 semver: ^7.3.2 languageName: unknown linkType: soft -"@jest/transform@^27.0.0-next.11, @jest/transform@workspace:packages/jest-transform": +"@jest/transform@^27.0.0, @jest/transform@workspace:packages/jest-transform": version: 0.0.0-use.local resolution: "@jest/transform@workspace:packages/jest-transform" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.1.0 "@types/convert-source-map": ^1.5.1 @@ -2786,7 +2786,7 @@ __metadata: dedent: ^0.7.0 fast-json-stable-stringify: ^2.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.11 + jest-haste-map: ^27.0.0 jest-regex-util: ^27.0.0-next.0 jest-snapshot-serializer-raw: ^1.1.0 jest-util: ^27.0.0-next.11 @@ -6090,8 +6090,8 @@ __metadata: resolution: "babel-jest@workspace:packages/babel-jest" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^27.0.0-next.11 - "@jest/transform": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 + "@jest/transform": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.1.14 "@types/graceful-fs": ^4.1.3 @@ -9836,19 +9836,19 @@ __metadata: languageName: node linkType: hard -"expect@^27.0.0-next.11, expect@workspace:packages/expect": +"expect@^27.0.0, expect@workspace:packages/expect": version: 0.0.0-use.local resolution: "expect@workspace:packages/expect" dependencies: - "@jest/test-utils": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 ansi-styles: ^5.0.0 chalk: ^4.0.0 fast-check: ^2.0.0 immutable: ^4.0.0-rc.12 jest-get-type: ^27.0.0-next.9 - jest-matcher-utils: ^27.0.0-next.11 - jest-message-util: ^27.0.0-next.11 + jest-matcher-utils: ^27.0.0 + jest-message-util: ^27.0.0 jest-regex-util: ^27.0.0-next.0 languageName: unknown linkType: soft @@ -12660,15 +12660,15 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-circus@^27.0.0-next.11, jest-circus@workspace:packages/jest-circus": +"jest-circus@^27.0.0, jest-circus@workspace:packages/jest-circus": version: 0.0.0-use.local resolution: "jest-circus@workspace:packages/jest-circus" dependencies: "@babel/core": ^7.1.0 "@babel/register": ^7.0.0 - "@jest/environment": ^27.0.0-next.11 - "@jest/test-result": ^27.0.0-next.11 - "@jest/test-utils": ^27.0.0-next.11 + "@jest/environment": ^27.0.0 + "@jest/test-result": ^27.0.0 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/co": ^4.6.0 "@types/dedent": ^0.7.0 @@ -12679,30 +12679,30 @@ fsevents@^1.2.7: co: ^4.6.0 dedent: ^0.7.0 execa: ^5.0.0 - expect: ^27.0.0-next.11 + expect: ^27.0.0 graceful-fs: ^4.2.4 is-generator-fn: ^2.0.0 - jest-each: ^27.0.0-next.11 - jest-matcher-utils: ^27.0.0-next.11 - jest-message-util: ^27.0.0-next.11 - jest-runner: ^27.0.0-next.11 - jest-runtime: ^27.0.0-next.11 - jest-snapshot: ^27.0.0-next.11 + jest-each: ^27.0.0 + jest-matcher-utils: ^27.0.0 + jest-message-util: ^27.0.0 + jest-runner: ^27.0.0 + jest-runtime: ^27.0.0 + jest-snapshot: ^27.0.0 jest-snapshot-serializer-raw: ^1.1.0 jest-util: ^27.0.0-next.11 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 stack-utils: ^2.0.3 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-cli@^27.0.0-next.11, jest-cli@workspace:packages/jest-cli": +"jest-cli@^27.0.0, jest-cli@workspace:packages/jest-cli": version: 0.0.0-use.local resolution: "jest-cli@workspace:packages/jest-cli" dependencies: - "@jest/core": ^27.0.0-next.11 - "@jest/test-result": ^27.0.0-next.11 - "@jest/test-utils": ^27.0.0-next.11 + "@jest/core": ^27.0.0 + "@jest/test-result": ^27.0.0 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.3 @@ -12712,9 +12712,9 @@ fsevents@^1.2.7: exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - jest-config: ^27.0.0-next.11 + jest-config: ^27.0.0 jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0-next.11 + jest-validate: ^27.0.0 prompts: ^2.0.1 yargs: ^16.0.3 peerDependencies: @@ -12727,36 +12727,36 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-config@^27.0.0-next.11, jest-config@workspace:packages/jest-config": +"jest-config@^27.0.0, jest-config@workspace:packages/jest-config": version: 0.0.0-use.local resolution: "jest-config@workspace:packages/jest-config" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^27.0.0-next.11 + "@jest/test-sequencer": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/babel__core": ^7.0.4 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 "@types/is-ci": ^3.0.0 "@types/micromatch": ^4.0.1 - babel-jest: ^27.0.0-next.11 + babel-jest: ^27.0.0 chalk: ^4.0.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 is-ci: ^3.0.0 - jest-circus: ^27.0.0-next.11 - jest-environment-jsdom: ^27.0.0-next.11 - jest-environment-node: ^27.0.0-next.11 + jest-circus: ^27.0.0 + jest-environment-jsdom: ^27.0.0 + jest-environment-node: ^27.0.0 jest-get-type: ^27.0.0-next.9 - jest-jasmine2: ^27.0.0-next.11 + jest-jasmine2: ^27.0.0 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.11 + jest-resolve: ^27.0.0 jest-snapshot-serializer-raw: ^1.1.0 jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0-next.11 + jest-validate: ^27.0.0 micromatch: ^4.0.4 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 strip-ansi: ^6.0.0 ts-node: ^9.0.0 typescript: ^4.0.3 @@ -12768,15 +12768,15 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-diff@^27.0.0-next.11, jest-diff@workspace:packages/jest-diff": +"jest-diff@^27.0.0, jest-diff@workspace:packages/jest-diff": version: 0.0.0-use.local resolution: "jest-diff@workspace:packages/jest-diff" dependencies: - "@jest/test-utils": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 chalk: ^4.0.0 diff-sequences: ^27.0.0-next.0 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 strip-ansi: ^6.0.0 languageName: unknown linkType: soft @@ -12811,7 +12811,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-each@^27.0.0-next.11, jest-each@workspace:packages/jest-each": +"jest-each@^27.0.0, jest-each@workspace:packages/jest-each": version: 0.0.0-use.local resolution: "jest-each@workspace:packages/jest-each" dependencies: @@ -12819,17 +12819,17 @@ fsevents@^1.2.7: chalk: ^4.0.0 jest-get-type: ^27.0.0-next.9 jest-util: ^27.0.0-next.11 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 languageName: unknown linkType: soft -"jest-environment-jsdom@^27.0.0-next.11, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": +"jest-environment-jsdom@^27.0.0, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": version: 0.0.0-use.local resolution: "jest-environment-jsdom@workspace:packages/jest-environment-jsdom" dependencies: - "@jest/environment": ^27.0.0-next.11 - "@jest/fake-timers": ^27.0.0-next.11 - "@jest/test-utils": ^27.0.0-next.11 + "@jest/environment": ^27.0.0 + "@jest/fake-timers": ^27.0.0 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/jsdom": ^16.2.4 "@types/node": "*" @@ -12843,9 +12843,9 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-environment-node@workspace:packages/jest-environment-node" dependencies: - "@jest/environment": ^27.0.0-next.11 - "@jest/fake-timers": ^27.0.0-next.11 - "@jest/test-utils": ^27.0.0-next.11 + "@jest/environment": ^27.0.0 + "@jest/fake-timers": ^27.0.0 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/node": "*" jest-mock: ^27.0.0-next.10 @@ -12873,11 +12873,11 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-haste-map@^27.0.0-next.11, jest-haste-map@workspace:packages/jest-haste-map": +"jest-haste-map@^27.0.0, jest-haste-map@workspace:packages/jest-haste-map": version: 0.0.0-use.local resolution: "jest-haste-map@workspace:packages/jest-haste-map" dependencies: - "@jest/test-utils": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/anymatch": ^1.3.1 "@types/fb-watchman": ^2.0.0 @@ -12892,7 +12892,7 @@ fsevents@^1.2.7: jest-serializer: ^27.0.0-next.9 jest-snapshot-serializer-raw: ^1.1.0 jest-util: ^27.0.0-next.11 - jest-worker: ^27.0.0-next.11 + jest-worker: ^27.0.0 micromatch: ^4.0.4 slash: ^3.0.0 walker: ^1.0.7 @@ -12927,29 +12927,29 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-jasmine2@^27.0.0-next.11, jest-jasmine2@workspace:packages/jest-jasmine2": +"jest-jasmine2@^27.0.0, jest-jasmine2@workspace:packages/jest-jasmine2": version: 0.0.0-use.local resolution: "jest-jasmine2@workspace:packages/jest-jasmine2" dependencies: "@babel/traverse": ^7.1.0 - "@jest/environment": ^27.0.0-next.11 + "@jest/environment": ^27.0.0 "@jest/source-map": ^27.0.0-next.3 - "@jest/test-result": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/babel__traverse": ^7.0.4 "@types/co": ^4.6.2 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - expect: ^27.0.0-next.11 + expect: ^27.0.0 is-generator-fn: ^2.0.0 - jest-each: ^27.0.0-next.11 - jest-matcher-utils: ^27.0.0-next.11 - jest-message-util: ^27.0.0-next.11 - jest-runtime: ^27.0.0-next.11 - jest-snapshot: ^27.0.0-next.11 + jest-each: ^27.0.0 + jest-matcher-utils: ^27.0.0 + jest-message-util: ^27.0.0 + jest-runtime: ^27.0.0 + jest-snapshot: ^27.0.0 jest-util: ^27.0.0-next.11 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 throat: ^6.0.1 languageName: unknown linkType: soft @@ -12966,31 +12966,31 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-leak-detector@^27.0.0-next.11, jest-leak-detector@workspace:packages/jest-leak-detector": +"jest-leak-detector@^27.0.0, jest-leak-detector@workspace:packages/jest-leak-detector": version: 0.0.0-use.local resolution: "jest-leak-detector@workspace:packages/jest-leak-detector" dependencies: "@types/weak-napi": ^2.0.0 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 weak-napi: ^2.0.1 languageName: unknown linkType: soft -"jest-matcher-utils@^27.0.0-next.11, jest-matcher-utils@workspace:packages/jest-matcher-utils": +"jest-matcher-utils@^27.0.0, jest-matcher-utils@workspace:packages/jest-matcher-utils": version: 0.0.0-use.local resolution: "jest-matcher-utils@workspace:packages/jest-matcher-utils" dependencies: - "@jest/test-utils": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 "@types/node": "*" chalk: ^4.0.0 - jest-diff: ^27.0.0-next.11 + jest-diff: ^27.0.0 jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 languageName: unknown linkType: soft -"jest-message-util@^27.0.0-next.11, jest-message-util@workspace:packages/jest-message-util": +"jest-message-util@^27.0.0, jest-message-util@workspace:packages/jest-message-util": version: 0.0.0-use.local resolution: "jest-message-util@workspace:packages/jest-message-util" dependencies: @@ -13003,7 +13003,7 @@ fsevents@^1.2.7: chalk: ^4.0.0 graceful-fs: ^4.2.4 micromatch: ^4.0.4 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 languageName: unknown @@ -13039,7 +13039,7 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-phabricator@workspace:packages/jest-phabricator" dependencies: - "@jest/test-result": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0 languageName: unknown linkType: soft @@ -13074,18 +13074,18 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-repl@workspace:packages/jest-repl" dependencies: - "@jest/console": ^27.0.0-next.11 - "@jest/environment": ^27.0.0-next.11 - "@jest/test-utils": ^27.0.0-next.11 - "@jest/transform": ^27.0.0-next.11 + "@jest/console": ^27.0.0 + "@jest/environment": ^27.0.0 + "@jest/test-utils": ^27.0.0 + "@jest/transform": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/yargs": ^16.0.0 chalk: ^4.0.0 execa: ^5.0.0 - jest-config: ^27.0.0-next.11 - jest-runtime: ^27.0.0-next.11 + jest-config: ^27.0.0 + jest-runtime: ^27.0.0 jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0-next.11 + jest-validate: ^27.0.0 repl: ^0.1.3 yargs: ^16.0.3 bin: @@ -13094,21 +13094,21 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-resolve-dependencies@^27.0.0-next.11, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": +"jest-resolve-dependencies@^27.0.0, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": version: 0.0.0-use.local resolution: "jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies" dependencies: - "@jest/test-utils": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 "@jest/types": ^27.0.0-next.10 - jest-haste-map: ^27.0.0-next.11 + jest-haste-map: ^27.0.0 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.11 - jest-runtime: ^27.0.0-next.11 - jest-snapshot: ^27.0.0-next.11 + jest-resolve: ^27.0.0 + jest-runtime: ^27.0.0 + jest-snapshot: ^27.0.0 languageName: unknown linkType: soft -"jest-resolve@^27.0.0-next.11, jest-resolve@workspace:packages/jest-resolve": +"jest-resolve@^27.0.0, jest-resolve@workspace:packages/jest-resolve": version: 0.0.0-use.local resolution: "jest-resolve@workspace:packages/jest-resolve" dependencies: @@ -13118,7 +13118,7 @@ fsevents@^1.2.7: chalk: ^4.0.0 escalade: ^3.1.1 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0-next.11 + jest-haste-map: ^27.0.0 jest-pnp-resolver: ^1.2.2 jest-util: ^27.0.0-next.11 resolve: ^1.20.0 @@ -13137,14 +13137,14 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-runner@^27.0.0-next.11, jest-runner@workspace:packages/jest-runner": +"jest-runner@^27.0.0, jest-runner@workspace:packages/jest-runner": version: 0.0.0-use.local resolution: "jest-runner@workspace:packages/jest-runner" dependencies: - "@jest/console": ^27.0.0-next.11 - "@jest/environment": ^27.0.0-next.11 - "@jest/test-result": ^27.0.0-next.11 - "@jest/transform": ^27.0.0-next.11 + "@jest/console": ^27.0.0 + "@jest/environment": ^27.0.0 + "@jest/test-result": ^27.0.0 + "@jest/transform": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 @@ -13154,33 +13154,33 @@ fsevents@^1.2.7: emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-config: ^27.0.0-next.11 + jest-config: ^27.0.0 jest-docblock: ^27.0.0-next.10 - jest-haste-map: ^27.0.0-next.11 - jest-jasmine2: ^27.0.0-next.11 - jest-leak-detector: ^27.0.0-next.11 - jest-message-util: ^27.0.0-next.11 - jest-resolve: ^27.0.0-next.11 - jest-runtime: ^27.0.0-next.11 + jest-haste-map: ^27.0.0 + jest-jasmine2: ^27.0.0 + jest-leak-detector: ^27.0.0 + jest-message-util: ^27.0.0 + jest-resolve: ^27.0.0 + jest-runtime: ^27.0.0 jest-util: ^27.0.0-next.11 - jest-worker: ^27.0.0-next.11 + jest-worker: ^27.0.0 source-map-support: ^0.5.6 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-runtime@^27.0.0-next.11, jest-runtime@workspace:packages/jest-runtime": +"jest-runtime@^27.0.0, jest-runtime@workspace:packages/jest-runtime": version: 0.0.0-use.local resolution: "jest-runtime@workspace:packages/jest-runtime" dependencies: - "@jest/console": ^27.0.0-next.11 - "@jest/environment": ^27.0.0-next.11 - "@jest/fake-timers": ^27.0.0-next.11 - "@jest/globals": ^27.0.0-next.11 + "@jest/console": ^27.0.0 + "@jest/environment": ^27.0.0 + "@jest/fake-timers": ^27.0.0 + "@jest/globals": ^27.0.0 "@jest/source-map": ^27.0.0-next.3 - "@jest/test-result": ^27.0.0-next.11 - "@jest/test-utils": ^27.0.0-next.11 - "@jest/transform": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0 + "@jest/test-utils": ^27.0.0 + "@jest/transform": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 @@ -13194,16 +13194,16 @@ fsevents@^1.2.7: exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-environment-node: ^27.0.0-next.11 - jest-haste-map: ^27.0.0-next.11 - jest-message-util: ^27.0.0-next.11 + jest-environment-node: ^27.0.0 + jest-haste-map: ^27.0.0 + jest-message-util: ^27.0.0 jest-mock: ^27.0.0-next.10 jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0-next.11 - jest-snapshot: ^27.0.0-next.11 + jest-resolve: ^27.0.0 + jest-snapshot: ^27.0.0 jest-snapshot-serializer-raw: ^1.1.0 jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0-next.11 + jest-validate: ^27.0.0 slash: ^3.0.0 strip-bom: ^4.0.0 yargs: ^16.0.3 @@ -13247,7 +13247,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-snapshot@^27.0.0-next.11, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": +"jest-snapshot@^27.0.0, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": version: 0.0.0-use.local resolution: "jest-snapshot@workspace:packages/jest-snapshot" dependencies: @@ -13259,8 +13259,8 @@ fsevents@^1.2.7: "@babel/preset-react": ^7.7.2 "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 - "@jest/test-utils": ^27.0.0-next.11 - "@jest/transform": ^27.0.0-next.11 + "@jest/test-utils": ^27.0.0 + "@jest/transform": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/babel__traverse": ^7.0.4 "@types/graceful-fs": ^4.1.3 @@ -13271,18 +13271,18 @@ fsevents@^1.2.7: ansi-styles: ^5.0.0 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^27.0.0-next.11 + expect: ^27.0.0 graceful-fs: ^4.2.4 - jest-diff: ^27.0.0-next.11 + jest-diff: ^27.0.0 jest-get-type: ^27.0.0-next.9 - jest-haste-map: ^27.0.0-next.11 - jest-matcher-utils: ^27.0.0-next.11 - jest-message-util: ^27.0.0-next.11 - jest-resolve: ^27.0.0-next.11 + jest-haste-map: ^27.0.0 + jest-matcher-utils: ^27.0.0 + jest-message-util: ^27.0.0 + jest-resolve: ^27.0.0 jest-util: ^27.0.0-next.11 natural-compare: ^1.4.0 prettier: ^2.0.0 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 semver: ^7.3.2 languageName: unknown linkType: soft @@ -13318,7 +13318,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-validate@^27.0.0-next.11, jest-validate@workspace:packages/jest-validate": +"jest-validate@^27.0.0, jest-validate@workspace:packages/jest-validate": version: 0.0.0-use.local resolution: "jest-validate@workspace:packages/jest-validate" dependencies: @@ -13328,7 +13328,7 @@ fsevents@^1.2.7: chalk: ^4.0.0 jest-get-type: ^27.0.0-next.9 leven: ^3.1.0 - pretty-format: ^27.0.0-next.11 + pretty-format: ^27.0.0 languageName: unknown linkType: soft @@ -13363,11 +13363,11 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-watcher@^27.0.0-next.11, jest-watcher@workspace:packages/jest-watcher": +"jest-watcher@^27.0.0, jest-watcher@workspace:packages/jest-watcher": version: 0.0.0-use.local resolution: "jest-watcher@workspace:packages/jest-watcher" dependencies: - "@jest/test-result": ^27.0.0-next.11 + "@jest/test-result": ^27.0.0 "@jest/types": ^27.0.0-next.10 "@types/node": "*" ansi-escapes: ^4.2.1 @@ -13415,7 +13415,7 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-worker@^27.0.0-next.11, jest-worker@workspace:packages/jest-worker": +"jest-worker@^27.0.0, jest-worker@workspace:packages/jest-worker": version: 0.0.0-use.local resolution: "jest-worker@workspace:packages/jest-worker" dependencies: @@ -13423,7 +13423,7 @@ fsevents@^1.2.7: "@types/node": "*" "@types/supports-color": ^8.1.0 get-stream: ^6.0.0 - jest-leak-detector: ^27.0.0-next.11 + jest-leak-detector: ^27.0.0 merge-stream: ^2.0.0 supports-color: ^8.0.0 worker-farm: ^1.6.0 @@ -13464,9 +13464,9 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest@workspace:packages/jest" dependencies: - "@jest/core": ^27.0.0-next.11 + "@jest/core": ^27.0.0 import-local: ^3.0.2 - jest-cli: ^27.0.0-next.11 + jest-cli: ^27.0.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 peerDependenciesMeta: @@ -17572,7 +17572,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pretty-format@^27.0.0-next.11, pretty-format@workspace:packages/pretty-format": +"pretty-format@^27.0.0, pretty-format@workspace:packages/pretty-format": version: 0.0.0-use.local resolution: "pretty-format@workspace:packages/pretty-format" dependencies: From 6c32bc1c6fddea707d9445babbbca41de1c33b48 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 10:18:03 +0200 Subject: [PATCH 29/65] chore: fix changelog headings --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0adf536a8a82..586d6e08db85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,10 +8,10 @@ ### Performance -### Features - ## 27.0.0 +### Features + - `[babel-jest]` Add async transformation ([#11192](https://github.com/facebook/jest/pull/11192)) - `[jest-changed-files]` Use '--' to separate paths from revisions ([#11160](https://github.com/facebook/jest/pull/11160)) - `[jest-circus]` [**BREAKING**] Fail tests when multiple `done()` calls are made ([#10624](https://github.com/facebook/jest/pull/10624)) From 3569b33529f29b2041f8563b6f2135594c830022 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 10:42:26 +0200 Subject: [PATCH 30/65] chore: attempt to use v14 of node to deploy website --- netlify.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/netlify.toml b/netlify.toml index 535a99c5d3af..0f70b7d223d6 100644 --- a/netlify.toml +++ b/netlify.toml @@ -6,6 +6,7 @@ base = "/" command = "yarn workspace jest-website netlify:ci:production" publish = "/website/build" + environment = { NODE_VERSION = "14.x" } [context.production] From a832dc385cdbeefc255770d90f3bc1ed3617a820 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 10:53:07 +0200 Subject: [PATCH 31/65] Revert "Upgrade website to Docusaurus using webpack 5 (#11266)" This reverts commit 7ad8d06265a2a97cf6f0d3cd38b41120873293d6. --- netlify.toml | 8 - package.json | 1 - website/package.json | 20 +- yarn.lock | 3391 +++++++++++++++++++++++++++++------------- 4 files changed, 2387 insertions(+), 1033 deletions(-) diff --git a/netlify.toml b/netlify.toml index 0f70b7d223d6..6f3cc77322f1 100644 --- a/netlify.toml +++ b/netlify.toml @@ -17,11 +17,3 @@ [context.deploy-preview] command = "yarn workspace jest-website netlify:ci:deployPreview" - -[[plugins]] - package = "netlify-plugin-cache" - [plugins.inputs] - paths = [ - "website/node_modules/.cache", - ] - diff --git a/package.json b/package.json index 277d328be43c..f95239f50366 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,6 @@ "micromatch": "^4.0.4", "mlh-tsd": "^0.14.1", "mock-fs": "^4.4.1", - "netlify-plugin-cache": "^1.0.3", "node-notifier": "^9.0.0", "prettier": "^2.1.1", "progress": "^2.0.0", diff --git a/website/package.json b/website/package.json index 7cc1e9f66278..631602e236ea 100644 --- a/website/package.json +++ b/website/package.json @@ -16,23 +16,11 @@ "netlify:prepare": "yarn fetchSupporters && yarn build:js", "netlify:crowdin": "yarn write-translations && yarn crowdin:upload && yarn crowdin:download" }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.0", - "@docusaurus/plugin-client-redirects": "2.0.0-beta.0", - "@docusaurus/plugin-pwa": "2.0.0-beta.0", - "@docusaurus/preset-classic": "2.0.0-beta.0", + "@docusaurus/core": "2.0.0-alpha.c32d8bd11", + "@docusaurus/plugin-client-redirects": "2.0.0-alpha.c32d8bd11", + "@docusaurus/plugin-pwa": "2.0.0-alpha.c32d8bd11", + "@docusaurus/preset-classic": "2.0.0-alpha.c32d8bd11", "clsx": "^1.1.1", "fs-extra": "^9.0.1", "globby": "^11.0.1", diff --git a/yarn.lock b/yarn.lock index cb9059ec4b36..91f7990a60a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1825,6 +1825,17 @@ __metadata: languageName: node linkType: hard +"@choojs/findup@npm:^0.2.1": + version: 0.2.1 + resolution: "@choojs/findup@npm:0.2.1" + dependencies: + commander: ^2.15.1 + bin: + findup: bin/findup.js + checksum: ec7ee37d4974b902833acb987b1afafd1954a4f694e55169f8fe4671594f8102b50ff77ff233ca455eecdec4b20eb05ce6863153c938e823e34eaa2f5d4ac6f8 + languageName: node + linkType: hard + "@cnakazawa/watch@npm:^1.0.3": version: 1.0.4 resolution: "@cnakazawa/watch@npm:1.0.4" @@ -1848,6 +1859,13 @@ __metadata: languageName: node linkType: hard +"@csstools/convert-colors@npm:^1.4.0": + version: 1.4.0 + resolution: "@csstools/convert-colors@npm:1.4.0" + checksum: c8c8e6b5b3c2ae7e2c4a0ff376b79e09c8e350f3a3973eee8d42372f3e49d41c43172087c426e33fefdb9057de8a6f23cabf31e6201adce3f78d4b25e1722b50 + languageName: node + linkType: hard + "@docsearch/css@npm:3.0.0-alpha.36": version: 3.0.0-alpha.36 resolution: "@docsearch/css@npm:3.0.0-alpha.36" @@ -1871,12 +1889,14 @@ __metadata: languageName: node linkType: hard -"@docusaurus/core@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/core@npm:2.0.0-beta.0" +"@docusaurus/core@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/core@npm:2.0.0-alpha.c32d8bd11" dependencies: "@babel/core": ^7.12.16 "@babel/generator": ^7.12.15 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.12.13 + "@babel/plugin-proposal-optional-chaining": ^7.12.16 "@babel/plugin-syntax-dynamic-import": ^7.8.3 "@babel/plugin-transform-runtime": ^7.12.15 "@babel/preset-env": ^7.12.16 @@ -1885,26 +1905,25 @@ __metadata: "@babel/runtime": ^7.12.5 "@babel/runtime-corejs3": ^7.12.13 "@babel/traverse": ^7.12.13 - "@docusaurus/cssnano-preset": 2.0.0-beta.0 + "@docusaurus/cssnano-preset": 2.0.0-alpha.c32d8bd11 "@docusaurus/react-loadable": 5.5.0 - "@docusaurus/types": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils-validation": 2.0.0-alpha.c32d8bd11 "@endiliey/static-site-generator-webpack-plugin": ^4.0.0 "@svgr/webpack": ^5.5.0 autoprefixer: ^10.2.5 babel-loader: ^8.2.2 babel-plugin-dynamic-import-node: 2.3.0 boxen: ^5.0.0 + cache-loader: ^4.1.0 chalk: ^4.1.0 chokidar: ^3.5.1 clean-css: ^5.1.1 commander: ^5.1.0 - copy-webpack-plugin: ^8.1.0 + copy-webpack-plugin: ^6.4.1 core-js: ^3.9.1 css-loader: ^5.1.1 - css-minimizer-webpack-plugin: ^2.0.0 - cssnano: ^5.0.1 del: ^6.0.0 detect-port: ^1.3.0 eta: ^1.12.1 @@ -1915,70 +1934,71 @@ __metadata: globby: ^11.0.2 html-minifier-terser: ^5.1.1 html-tags: ^3.1.0 - html-webpack-plugin: ^5.2.0 + html-webpack-plugin: ^4.5.0 import-fresh: ^3.3.0 is-root: ^2.1.0 + joi: ^17.4.0 leven: ^3.1.0 lodash: ^4.17.20 - mini-css-extract-plugin: ^1.4.0 + mini-css-extract-plugin: ^0.8.0 module-alias: ^2.2.2 nprogress: ^0.2.0 - postcss: ^8.2.10 - postcss-loader: ^5.2.0 + null-loader: ^4.0.0 + optimize-css-assets-webpack-plugin: ^5.0.4 + pnp-webpack-plugin: ^1.6.4 + postcss: ^8.2.7 + postcss-loader: ^4.1.0 + postcss-preset-env: ^6.7.0 prompts: ^2.4.0 react-dev-utils: ^11.0.1 - react-error-overlay: ^6.0.9 react-helmet: ^6.1.0 react-loadable: ^5.5.0 - react-loadable-ssr-addon-v5-slorber: ^1.0.1 + react-loadable-ssr-addon: ^0.3.0 react-router: ^5.2.0 react-router-config: ^5.1.1 react-router-dom: ^5.2.0 resolve-pathname: ^3.0.0 - rtl-detect: ^1.0.2 semver: ^7.3.4 serve-handler: ^6.1.3 shelljs: ^0.8.4 std-env: ^2.2.1 - strip-ansi: ^6.0.0 - terser-webpack-plugin: ^5.1.1 - tslib: ^2.1.0 + terser-webpack-plugin: ^4.1.0 update-notifier: ^5.1.0 url-loader: ^4.1.1 wait-on: ^5.2.1 - webpack: ^5.28.0 + webpack: ^4.44.1 webpack-bundle-analyzer: ^4.4.0 webpack-dev-server: ^3.11.2 - webpack-merge: ^5.7.3 + webpack-merge: ^4.2.2 webpackbar: ^5.0.0-3 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 bin: docusaurus: bin/docusaurus.js - checksum: 39d1e07288e150536a64ae04b5415d9c17b98798617cb6363a7454243e9f2977acf1b8b1ab55779cb0e86cd4dee1e716ee187e418c8561473ec373637cccc72d + checksum: d5abfb3db264e980ac2905690c9cbcc3f677c995f604b992e0fce9e9f09683c906f40c10f2b24a018d56ce0aa99ee868dd3a05eb86a6ccbaf86bfad6c5f34dc5 languageName: node linkType: hard -"@docusaurus/cssnano-preset@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/cssnano-preset@npm:2.0.0-beta.0" +"@docusaurus/cssnano-preset@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/cssnano-preset@npm:2.0.0-alpha.c32d8bd11" dependencies: - cssnano-preset-advanced: ^5.0.0 - postcss: ^8.2.10 - postcss-sort-media-queries: ^3.8.9 - checksum: 398b82fc45acd29c5f7e66fa0c5ec73951e292bd39122edabb8752c4aa1de70777276a708df9d4bef9696001e4a3bca5a59a4e6b4e2ac440fbded7cbcd9cca56 + cssnano-preset-advanced: ^4.0.7 + postcss: ^7.0.2 + postcss-sort-media-queries: ^1.7.26 + checksum: ffc6a3c916897f9eb16992edb52e513d5e5d2a1f6107382b2f332a4a486e05bde6f672555a170a5e589e53397e1313c7e568215b325d6b4f599fcfb6c3a121b0 languageName: node linkType: hard -"@docusaurus/mdx-loader@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/mdx-loader@npm:2.0.0-beta.0" +"@docusaurus/mdx-loader@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/mdx-loader@npm:2.0.0-alpha.c32d8bd11" dependencies: "@babel/parser": ^7.12.16 "@babel/traverse": ^7.12.13 - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 "@mdx-js/mdx": ^1.6.21 "@mdx-js/react": ^1.6.21 escape-html: ^1.0.3 @@ -1986,222 +2006,218 @@ __metadata: fs-extra: ^9.1.0 github-slugger: ^1.3.0 gray-matter: ^4.0.2 + loader-utils: ^2.0.0 mdast-util-to-string: ^2.0.0 remark-emoji: ^2.1.0 stringify-object: ^3.3.0 unist-util-visit: ^2.0.2 url-loader: ^4.1.1 - webpack: ^5.28.0 + webpack: ^4.44.1 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: b702d8b3f4d92d3113068981af6e686abd0faa88ea46bb68963b62433116613c64a412d08f9e92c1834dfcf64d4e723fe91718925697c12518650f2c5fa31900 + checksum: bbb16da8ca57d5b1574d7ef4fb1829eb81e823017e9640d1592a171cbcffd8581291932447f3f99d79f38d715998b2d6c026a172eac57c9407e90f7799d68689 languageName: node linkType: hard -"@docusaurus/plugin-client-redirects@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-client-redirects@npm:2.0.0-beta.0" +"@docusaurus/plugin-client-redirects@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-client-redirects@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/types": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils-validation": 2.0.0-alpha.c32d8bd11 chalk: ^3.0.0 eta: ^1.11.0 fs-extra: ^9.1.0 globby: ^11.0.2 + joi: ^17.4.0 lodash: ^4.17.20 - tslib: ^2.1.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 11fa2d230836dadab36d69e67c05d14d3aa2cdb5590a68ed8f67b6fcbd3b094ca8fbe830edded088219384a3eb5b1eb0a6024bb9a5dd1d4fbe7c7a10a132f6c0 + checksum: 90f95fe9dfa98068d3bd2afdecacc8c772780fc6d0461d05edb2cefd68e5ae8a454872fdcbe868bb96a6054854c171806f3ef284b1bea9be45fe6ebb9f073983 languageName: node linkType: hard -"@docusaurus/plugin-content-blog@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-content-blog@npm:2.0.0-beta.0" +"@docusaurus/plugin-content-blog@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-content-blog@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/mdx-loader": 2.0.0-beta.0 - "@docusaurus/types": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/mdx-loader": 2.0.0-alpha.c32d8bd11 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils-validation": 2.0.0-alpha.c32d8bd11 chalk: ^4.1.0 feed: ^4.2.2 fs-extra: ^9.1.0 globby: ^11.0.2 - loader-utils: ^2.0.0 + joi: ^17.4.0 + loader-utils: ^1.2.3 lodash: ^4.17.20 reading-time: ^1.3.0 remark-admonitions: ^1.2.1 - tslib: ^2.1.0 - webpack: ^5.28.0 + webpack: ^4.44.1 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: eed7187f3773a01ce42dcb2f556b69aa590f5ee55a926b09f6e087cb6d00cd0ab6ecae3a643cd2f0938ee9c0fbf626d1728b0bffa845b3381de43c212c2512d9 + checksum: 093b478b95e61ad7486d130f520d57472a29866d3c47c74a156d989615e969318e583a622fa8c6b6a99d438aa6836e283777be0e3971112e7a6971c9b0df8567 languageName: node linkType: hard -"@docusaurus/plugin-content-docs@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-content-docs@npm:2.0.0-beta.0" +"@docusaurus/plugin-content-docs@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-content-docs@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/mdx-loader": 2.0.0-beta.0 - "@docusaurus/types": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/mdx-loader": 2.0.0-alpha.c32d8bd11 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils-validation": 2.0.0-alpha.c32d8bd11 chalk: ^4.1.0 - combine-promises: ^1.1.0 execa: ^5.0.0 fs-extra: ^9.1.0 globby: ^11.0.2 import-fresh: ^3.2.2 - js-yaml: ^4.0.0 + joi: ^17.4.0 loader-utils: ^1.2.3 lodash: ^4.17.20 remark-admonitions: ^1.2.1 shelljs: ^0.8.4 - tslib: ^2.1.0 utility-types: ^3.10.0 - webpack: ^5.28.0 + webpack: ^4.44.1 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 5d952efd787036102c6e0cd93fb5f00e08f32e03449649289d904c9faf7b88eb8bde5fd2bab26593a7c7559bf8dac2ef859cae25107199e1d573241f3f97be72 + checksum: 46aad5e78759d2a290b099425a4a0ee05312ceb4594097d8931523700e6b0e368844cd9e35d88642305fefb3607671a779fb17d9fe0bd3aa08baa04e5149ca9e languageName: node linkType: hard -"@docusaurus/plugin-content-pages@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-content-pages@npm:2.0.0-beta.0" +"@docusaurus/plugin-content-pages@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-content-pages@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/mdx-loader": 2.0.0-beta.0 - "@docusaurus/types": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/mdx-loader": 2.0.0-alpha.c32d8bd11 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils-validation": 2.0.0-alpha.c32d8bd11 globby: ^11.0.2 + joi: ^17.4.0 + loader-utils: ^1.2.3 lodash: ^4.17.20 minimatch: ^3.0.4 remark-admonitions: ^1.2.1 slash: ^3.0.0 - tslib: ^2.1.0 - webpack: ^5.28.0 + webpack: ^4.44.1 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: ee0d7426622274b45c576d33b46d3d3bc25e0d2876c9c72fe74f8e0ab42f0e32a0d9ee0ded79cb64240e7b7965c266cd3fedc40795004fb72bf044a112b9d6fa + checksum: f0be19635a1910b996bf1b07783406908df8ec59a0f3d146cfa8fed815f335717d3083dca564a5169cc0e1387475b99f7f93a8e846afe773360b7175c95fd471 languageName: node linkType: hard -"@docusaurus/plugin-debug@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-debug@npm:2.0.0-beta.0" +"@docusaurus/plugin-debug@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-debug@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/types": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 react-json-view: ^1.21.1 - tslib: ^2.1.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: daf4fd1c227d3b20fddb9facee2ca9094e409de409457a6f6ee97f11a20b373d6ceb9d9c4b8ae8a4fd2ed323c0739d2248c0ddcaa70286bb4c14ad9d8b033d53 + checksum: 57c70f3e3de64ec0c3115a741ace3d1f6c450c09ca50cbed1c9755fb36d3457f8a0d7eefc9fb9330f3120122d4c2cf0ce341e90336f538b6d25ea20d2e707758 languageName: node linkType: hard -"@docusaurus/plugin-google-analytics@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-google-analytics@npm:2.0.0-beta.0" +"@docusaurus/plugin-google-analytics@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-google-analytics@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 65a729fd6b545891c50a7975fc4603ef494db283277c6bc8545218c0dc719bb229b4aed806d82c748f039da15fd1f1c1d0cb588f5d9047ea009127355cb65817 + checksum: 03501732b52db830e883d46a85ff94f17cfd6e973cfad824f06e1f41ef0a5125438171bd4084733602f88ba8c969dbb6efd5449d0925db975796a52f1de52a35 languageName: node linkType: hard -"@docusaurus/plugin-google-gtag@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-google-gtag@npm:2.0.0-beta.0" +"@docusaurus/plugin-google-gtag@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-google-gtag@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 1c4ea81e62ade274b4bb2e9ffba654bae8338857b49ca1152ecec566fd99e0ac2cfd7f4a684fa80524e23a2c4fb809a6dc2bc5dc208a27e5656be0e8971129f4 + checksum: c885c83fdbaec187b6b1ce0643d838f608766a017fdd57540bd13120980d35bda59be0b61ed1b18ec1f5b235ce0b2e581509dd08df91ccd875ed359a86fcd558 languageName: node linkType: hard -"@docusaurus/plugin-pwa@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-pwa@npm:2.0.0-beta.0" +"@docusaurus/plugin-pwa@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-pwa@npm:2.0.0-alpha.c32d8bd11" dependencies: "@babel/plugin-proposal-nullish-coalescing-operator": ^7.12.13 "@babel/plugin-proposal-optional-chaining": ^7.12.16 "@babel/preset-env": ^7.12.16 - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/theme-common": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 babel-loader: ^8.2.2 clsx: ^1.1.1 core-js: ^2.6.5 - terser-webpack-plugin: ^5.1.1 - webpack: ^5.28.0 - webpack-merge: ^5.7.3 + joi: ^17.4.0 + terser-webpack-plugin: ^4.1.0 + webpack: ^4.44.1 + webpack-merge: ^4.2.2 workbox-build: ^6.1.1 workbox-precaching: ^6.1.1 workbox-window: ^6.1.1 peerDependencies: - "@babel/core": ^7.0.0 react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 3e6c837023eda673621c1e7d162f7f93764a42589fc38ceff069b68b5ad46be6863a29d126a6524efddbf28d0d44bcf629bc5fad4d97035da97ecf680db052c8 + checksum: 88a34319ecad9d50c0b78824b98025159f4b25b923ec2d484e681dc10674008817714e436b79137ea34fb2269fd5131f0139ad9b6ae49b51c98f5afcb6f618d2 languageName: node linkType: hard -"@docusaurus/plugin-sitemap@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/plugin-sitemap@npm:2.0.0-beta.0" +"@docusaurus/plugin-sitemap@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/plugin-sitemap@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/types": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 fs-extra: ^9.1.0 + joi: ^17.4.0 sitemap: ^6.3.6 - tslib: ^2.1.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 79881c60e3f2a7d32f286ad123a57e54eac27d77e59eaa420d0af98f20cf40a283d13ae20ad8524f2db40c7a632d3335175b5e0801e89f9159db8451e33e579b + checksum: 1b8ae78d7c32e3dfde5e7f0c6b4d7292d90eaf3ee69f5d6d1ea108989eeea209b324925c0cbd320a9fb09b8c07201dab604c0e2f5929d4bf37e090a51a1c163d languageName: node linkType: hard -"@docusaurus/preset-classic@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/preset-classic@npm:2.0.0-beta.0" +"@docusaurus/preset-classic@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/preset-classic@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/plugin-content-blog": 2.0.0-beta.0 - "@docusaurus/plugin-content-docs": 2.0.0-beta.0 - "@docusaurus/plugin-content-pages": 2.0.0-beta.0 - "@docusaurus/plugin-debug": 2.0.0-beta.0 - "@docusaurus/plugin-google-analytics": 2.0.0-beta.0 - "@docusaurus/plugin-google-gtag": 2.0.0-beta.0 - "@docusaurus/plugin-sitemap": 2.0.0-beta.0 - "@docusaurus/theme-classic": 2.0.0-beta.0 - "@docusaurus/theme-search-algolia": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-blog": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-docs": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-pages": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-debug": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-google-analytics": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-google-gtag": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-sitemap": 2.0.0-alpha.c32d8bd11 + "@docusaurus/theme-classic": 2.0.0-alpha.c32d8bd11 + "@docusaurus/theme-search-algolia": 2.0.0-alpha.c32d8bd11 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 89948e95f38969ebbd2d0329f4c26eb927bfc16ef7c759666130ff7b6b476fb929b40e0f4d482c01f836dc314efbd8c17db9940d42dad75d927cdbad97ba88f6 + checksum: bf82dc4c0955f93ec0b8a281e8a13230c819e776e6199864e580daaaa097ad70cadd95fd2d46ede6319833884f062740d732d4eb8e528505d377047a4c1b9176 languageName: node linkType: hard @@ -2216,119 +2232,119 @@ __metadata: languageName: node linkType: hard -"@docusaurus/theme-classic@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/theme-classic@npm:2.0.0-beta.0" +"@docusaurus/theme-classic@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/theme-classic@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/plugin-content-blog": 2.0.0-beta.0 - "@docusaurus/plugin-content-docs": 2.0.0-beta.0 - "@docusaurus/plugin-content-pages": 2.0.0-beta.0 - "@docusaurus/theme-common": 2.0.0-beta.0 - "@docusaurus/types": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-blog": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-docs": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-pages": 2.0.0-alpha.c32d8bd11 + "@docusaurus/theme-common": 2.0.0-alpha.c32d8bd11 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils-validation": 2.0.0-alpha.c32d8bd11 "@mdx-js/mdx": ^1.6.21 "@mdx-js/react": ^1.6.21 + "@types/react-toggle": ^4.0.2 chalk: ^4.1.0 clsx: ^1.1.1 copy-text-to-clipboard: ^3.0.0 fs-extra: ^9.1.0 globby: ^11.0.2 - infima: 0.2.0-alpha.23 + infima: 0.2.0-alpha.20 + joi: ^17.4.0 lodash: ^4.17.20 parse-numeric-range: ^1.2.0 - postcss: ^8.2.10 + postcss: ^7.0.2 prism-react-renderer: ^1.1.1 prismjs: ^1.23.0 prop-types: ^15.7.2 react-router-dom: ^5.2.0 - rtlcss: ^3.1.2 + react-toggle: ^4.1.1 + rtlcss: ^2.6.2 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 62e7a8f3d80afb2de99a08e81d6c94891efa34c68515e49f8a0807b800115d49ce3a96bd5449a13060a15c138d01b2d70f0a0926e31addde30bb1d625e89f715 + checksum: b8391b6566770b7115447b3abd38fb7db2fb175332a53c96ddb461e5ac84bd780bb82e9cfdea87fe9f222878562295ebffe47923998d2f5390a773b3b47e76f7 languageName: node linkType: hard -"@docusaurus/theme-common@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/theme-common@npm:2.0.0-beta.0" +"@docusaurus/theme-common@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/theme-common@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/plugin-content-blog": 2.0.0-beta.0 - "@docusaurus/plugin-content-docs": 2.0.0-beta.0 - "@docusaurus/plugin-content-pages": 2.0.0-beta.0 - "@docusaurus/types": 2.0.0-beta.0 - tslib: ^2.1.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-blog": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-docs": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-content-pages": 2.0.0-alpha.c32d8bd11 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 peerDependencies: - prism-react-renderer: ^1.1.1 react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 5412163750dd457e157953640d97f3fde359c5415728fc1b327398983e3b0a4c88620a5effb6b805b53b1bc96c2319471b33743f3938dc3c2fab5157d5dfe952 + checksum: e52d00ecfd878753d72400409eb83cf8364030d863d82de1612d13dace70a96cf8ce329f37733c8d5d01f6ac290a1d256675ea6988b28be67f698e1bc07dba2b languageName: node linkType: hard -"@docusaurus/theme-search-algolia@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/theme-search-algolia@npm:2.0.0-beta.0" +"@docusaurus/theme-search-algolia@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/theme-search-algolia@npm:2.0.0-alpha.c32d8bd11" dependencies: "@docsearch/react": ^3.0.0-alpha.33 - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/theme-common": 2.0.0-beta.0 - "@docusaurus/utils": 2.0.0-beta.0 - "@docusaurus/utils-validation": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/theme-common": 2.0.0-alpha.c32d8bd11 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 algoliasearch: ^4.8.4 algoliasearch-helper: ^3.3.4 clsx: ^1.1.1 eta: ^1.12.1 + joi: ^17.4.0 lodash: ^4.17.20 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 9627d886315f0923bf1bb80f5e3076c8a0ca781f0b7576b27fd06230dd03a631159b271aa4ec66d04e3819b6ef8c4897b24a8ed62a9b31b847de4fc6a4fcec07 + checksum: 7cd1152d55a954a19d605aaa3a481ba94f90f5121962e31bebf8649ef234ac17893d4ee771e8f5cc0b4841f584ebb6510a35bbb28c5635ca0ed0c9a3db7e2c4b languageName: node linkType: hard -"@docusaurus/types@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/types@npm:2.0.0-beta.0" +"@docusaurus/types@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/types@npm:2.0.0-alpha.c32d8bd11" dependencies: + "@types/webpack": ^4.41.0 commander: ^5.1.0 - joi: ^17.4.0 querystring: 0.2.0 - webpack: ^5.28.0 - webpack-merge: ^5.7.3 - checksum: 5743bcd50a9c8f545f42ea50117ad82bf6a8e821856d6e7ede332daa53a672cd428bced9510128d07088ba99fd880d77cd04b904ae49c0ba385380277d5082d2 + webpack-merge: ^4.2.2 + checksum: a7d5801fbd3211d27334e5ccf687ddd63c8270557a0b1044d2304159e48f3882ea939b039d02b780b9e4d43330d20b1c61737d62798b33e99cf6872340032f9a languageName: node linkType: hard -"@docusaurus/utils-validation@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/utils-validation@npm:2.0.0-beta.0" +"@docusaurus/utils-validation@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/utils-validation@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/utils": 2.0.0-beta.0 + "@docusaurus/utils": 2.0.0-alpha.c32d8bd11 chalk: ^4.1.0 joi: ^17.4.0 - tslib: ^2.1.0 - checksum: da51047fec60d2d357ff48c01b2d3de484a25c9416dd67bcc7abc4dea8b34a2197765bf4cc57ab5cf7df83a7cc210f4996eca909ebc38465fa0d62b3950e58bb + checksum: c592cd946e4ee63f1f95312c53f1b9b05741e177977b92305512e8e4f4cd94072bac19d01a35188276eb48263d3bfa408bc056bcaf9a3bffe1319dd578cec3cc languageName: node linkType: hard -"@docusaurus/utils@npm:2.0.0-beta.0": - version: 2.0.0-beta.0 - resolution: "@docusaurus/utils@npm:2.0.0-beta.0" +"@docusaurus/utils@npm:2.0.0-alpha.c32d8bd11": + version: 2.0.0-alpha.c32d8bd11 + resolution: "@docusaurus/utils@npm:2.0.0-alpha.c32d8bd11" dependencies: - "@docusaurus/types": 2.0.0-beta.0 + "@docusaurus/types": 2.0.0-alpha.c32d8bd11 "@types/github-slugger": ^1.3.0 chalk: ^4.1.0 escape-string-regexp: ^4.0.0 fs-extra: ^9.1.0 gray-matter: ^4.0.2 + intl: ^1.2.5 + intl-locales-supported: 1.8.11 lodash: ^4.17.20 resolve-pathname: ^3.0.0 - tslib: ^2.1.0 - checksum: d5eaf5fa530b15606370f9d56eb32ce4f9e71449490a96dc7c535918c155906ea21c672820713917143a401872b767f97a6cf5358afa30dfc65c595c3c5710a8 + checksum: 067f509e8e0ab03f68a8a0489d953a31b5ab017ac4f387934e7cef7b3e8f054eb4d70802cace80fa927bc93a200cbfef01f54d8b4dd8130340dd424c848bd045 languageName: node linkType: hard @@ -2634,7 +2650,6 @@ __metadata: micromatch: ^4.0.4 mlh-tsd: ^0.14.1 mock-fs: ^4.4.1 - netlify-plugin-cache: ^1.0.3 node-notifier: ^9.0.0 prettier: ^2.1.1 progress: ^2.0.0 @@ -4370,13 +4385,6 @@ __metadata: languageName: node linkType: hard -"@trysound/sax@npm:0.1.1": - version: 0.1.1 - resolution: "@trysound/sax@npm:0.1.1" - checksum: 0ffcea622248d234faad26761c6a152856acbf0153bd54178adc0c84607355b769ea7eda096f51590b1897bed7d51e01dc7582dc97ff94a8c0f97ee03d707cd5 - languageName: node - linkType: hard - "@types/anymatch@npm:^1.3.1": version: 1.3.1 resolution: "@types/anymatch@npm:1.3.1" @@ -4484,33 +4492,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint-scope@npm:^3.7.0": - version: 3.7.0 - resolution: "@types/eslint-scope@npm:3.7.0" - dependencies: - "@types/eslint": "*" - "@types/estree": "*" - checksum: 1ee912a956f6fecd26bef9517ef33473498feda4a7fc7f191b705c750dcf8bbbd78a83d8c69e66d98c23cad4dfc8769a464780a3cf395948e3f0f85146729f68 - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 7.2.10 - resolution: "@types/eslint@npm:7.2.10" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: d85af4ab456fcf5d243e5a39d192d01ec71e14352b9ec803394ce6ac994fca0b876405dbdc07b97449275aee8285f9570a82117bbfeb132f97e01b8ddc35477a - languageName: node - linkType: hard - -"@types/estree@npm:*, @types/estree@npm:^0.0.47": - version: 0.0.47 - resolution: "@types/estree@npm:0.0.47" - checksum: 28cba548c7b61855f4ff0c20146512e71fb578253e3cb24baf1acf660c626a8a271f99848e8a8c4e0e87f177cfce28e8d1fcecb65a4aad4a92ba48fd73179289 - languageName: node - linkType: hard - "@types/estree@npm:0.0.39": version: 0.0.39 resolution: "@types/estree@npm:0.0.39" @@ -4678,7 +4659,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.3, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6": +"@types/json-schema@npm:^7.0.3, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6": version: 7.0.7 resolution: "@types/json-schema@npm:7.0.7" checksum: b9d2c509fa4e0b82f58e73f5e6ab76c60ff1884ba41bb82f37fb1cece226d4a3e5a62fedf78a43da0005373a6713d9abe61c1e592906402c41c08ad6ab26d52b @@ -4853,6 +4834,15 @@ __metadata: languageName: node linkType: hard +"@types/react-toggle@npm:^4.0.2": + version: 4.0.2 + resolution: "@types/react-toggle@npm:4.0.2" + dependencies: + "@types/react": "*" + checksum: 2658f35f9e9a5c86de9757a3828f1a1e88eff199a5610b65e9feb41278f5bcb9c96f04bde1778b99d035c1524a3b603c93e6b7b57e73062d941c9eea008d098b + languageName: node + linkType: hard + "@types/react@npm:*, @types/react@npm:^17.0.3": version: 17.0.5 resolution: "@types/react@npm:17.0.5" @@ -4929,6 +4919,13 @@ __metadata: languageName: node linkType: hard +"@types/source-list-map@npm:*": + version: 0.1.2 + resolution: "@types/source-list-map@npm:0.1.2" + checksum: 191f0e3b056b481e7a0bbb38f3d5b54b015556e38075726ca2637a35d3694df85cd16761b1b188729ac687a55aec3cbc2b07033ac090bcc13efe09ad10a3e935 + languageName: node + linkType: hard + "@types/source-map-support@npm:^0.5.0": version: 0.5.3 resolution: "@types/source-map-support@npm:0.5.3" @@ -4952,6 +4949,13 @@ __metadata: languageName: node linkType: hard +"@types/tapable@npm:^1, @types/tapable@npm:^1.0.5": + version: 1.0.7 + resolution: "@types/tapable@npm:1.0.7" + checksum: af30bb7429d590c7df1f3f5b8ef55fcf2c5498cd2d972c40b0ee543a2e7c3df988b5ac29e231b22b09b712ea1df3dbf3eb145dcbbd43544534cbfb0f1cebdfac + languageName: node + linkType: hard + "@types/tmp@npm:^0.2.0": version: 0.2.0 resolution: "@types/tmp@npm:0.2.0" @@ -4966,6 +4970,15 @@ __metadata: languageName: node linkType: hard +"@types/uglify-js@npm:*": + version: 3.13.0 + resolution: "@types/uglify-js@npm:3.13.0" + dependencies: + source-map: ^0.6.1 + checksum: 1815a3628aeed41212ae411728267a29e99a309f0cff4d84f90bc7188125be0996d81ca4e7c747751f598749edad426a4c1fe9d78df2110022ca24455d45ca43 + languageName: node + linkType: hard + "@types/unist@npm:*, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2, @types/unist@npm:^2.0.3": version: 2.0.3 resolution: "@types/unist@npm:2.0.3" @@ -4982,6 +4995,31 @@ __metadata: languageName: node linkType: hard +"@types/webpack-sources@npm:*": + version: 2.1.0 + resolution: "@types/webpack-sources@npm:2.1.0" + dependencies: + "@types/node": "*" + "@types/source-list-map": "*" + source-map: ^0.7.3 + checksum: 26aba8ae682529be737eff726dcf08019460b180e9d22e80925e65240c908312096067b5547ac3dcb6d7b383a4bf0473eb68d0fd4ff483b17f3147fefce149af + languageName: node + linkType: hard + +"@types/webpack@npm:^4.41.0, @types/webpack@npm:^4.41.8": + version: 4.41.29 + resolution: "@types/webpack@npm:4.41.29" + dependencies: + "@types/node": "*" + "@types/tapable": ^1 + "@types/uglify-js": "*" + "@types/webpack-sources": "*" + anymatch: ^3.0.0 + source-map: ^0.6.0 + checksum: 09e343cbd59512c9b30ecbe3bb71b7d6539bb3a23b617f36966ae5947bd0e9c3ac60567797abc2b4382455e06d1ac713585d511f2a265b17e71363a8411bab01 + languageName: node + linkType: hard + "@types/which@npm:^2.0.0": version: 2.0.0 resolution: "@types/which@npm:2.0.0" @@ -5123,154 +5161,184 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/ast@npm:1.11.0" +"@webassemblyjs/ast@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/ast@npm:1.9.0" dependencies: - "@webassemblyjs/helper-numbers": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - checksum: fc26bf2c831c472535eb45b21931c2118d3037cd132b4837accf41a3a2e3501a5a894389b79fd80106af936c574be164a1af42219e66237de96a617690aecfcf + "@webassemblyjs/helper-module-context": 1.9.0 + "@webassemblyjs/helper-wasm-bytecode": 1.9.0 + "@webassemblyjs/wast-parser": 1.9.0 + checksum: 25d93900cc32c2cfa34860b988a534c6671cf789159cc6b918afdf6099f9f2f70710a947501170d9ba0a24f0503fe3b3b45300ec14ec05c9d833c055795133c4 languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.0" - checksum: ae591c9e961f14510ea599c6aa08b9a728cc23e7ba19bd8383bf23b695035c5bbeb5f25dba34ad2fba441eb39beebe0d1aa6e83ead4a19a78120449ab3a56ef0 +"@webassemblyjs/floating-point-hex-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.9.0" + checksum: af9e11a688b0748f2e4119379d64a8f990a0edf1fbf80df612d2fdf3874528f4917ba51c735b324266314b6587b229825eb53eacbc9e9d00ce1d21ebd2a7d9dc languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.0" - checksum: 6a2c533780e63d79df33a2f455d0bcfbbbd0543da4f5e845eb6f7f7d68debf124a6e3c5d50888cc2eb4c251d90f77e6203498fff3177e8eb03e5175bae37a956 +"@webassemblyjs/helper-api-error@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-api-error@npm:1.9.0" + checksum: ae7b9703ecbd0db50a2e95e23c9a1de2a0ba3d98187f4cd57473df4f2a88f9c3a2e53f98ce3a8ba0d73718a50733843ba0d8f88440d5e4a90704bb831f26a2e0 languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.0" - checksum: 9303e0eaa4a1ab63fa1c8be95b6777499440946c4213846672cca4bb4657674d6c4a05cdfdfc8c0b22e885c830abdbcd9132ca1b869f3f41c244aacec3a4013e +"@webassemblyjs/helper-buffer@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-buffer@npm:1.9.0" + checksum: 94bcf27ccf4e5cfcdb92f89bb1e80a973656cab5d19e67eb61a8b5c9cf4ce060616e3afc3d900f6cffa2fc9746a4ad7be75fa448c06af4d4103e507584149a78 languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.0" +"@webassemblyjs/helper-code-frame@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-code-frame@npm:1.9.0" dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.0 - "@webassemblyjs/helper-api-error": 1.11.0 - "@xtuc/long": 4.2.2 - checksum: 58c29d37f9d6c5eaa1feb6af7ab7282cb35d1c9eaa95406c64942507ac11de1a975082fc825556e73b9ed5cdecb8aa22020559028ae45d5b3d42a7f2a6773881 + "@webassemblyjs/wast-printer": 1.9.0 + checksum: 008fc534f21b3b054bd0bd863d3afcb30740d9c8cdc5044481747533bd276729ec196392a78c16f5a5ee8a6d067fd5fbaed16142b2b4097b1c5340451b5a5d1d languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.0" - checksum: 5bcd67b430c6b39a25fe8904cc2f832ebfef7e2da17a84326553e2b69dde7aa6bc486380f4fa0d01f17f966fff93ac3b6523ffad79e4b8661eb6ddf7f9182e88 +"@webassemblyjs/helper-fsm@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-fsm@npm:1.9.0" + checksum: 3181e69c16aad1267fd471283b797e86f5e0b26abfddf1d0d2ddef8a758f486cd2482887ec317ecbb5c421aa1d11dea17a06e92c59ea9bd38513204e6c7b8f3d languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.0" +"@webassemblyjs/helper-module-context@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-module-context@npm:1.9.0" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - checksum: ad4dd37c2b88ad2f7b53e5e9c04a1ce75eace4fd05b117a5459ebf9b8bd4f417ec6837c8b448481da95cad14d48413b937072146fee79796d1c86ec0cc32339d + "@webassemblyjs/ast": 1.9.0 + checksum: 9aa715a8d06a17ea92a6ec44322628f9418aa414b888632b5d8092a5125c2b6dcf2c6b80be2b6ad548201aa38e21d390e13c34f2edf7ba3335442739d88b0aef languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/ieee754@npm:1.11.0" +"@webassemblyjs/helper-wasm-bytecode@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.9.0" + checksum: 27ba07f49514d49ccf62a6e7a460941a6794107c9d7ef9685fda8a7373169d6ebdb676071006ce20581abb9f62562fa447473fb0b031e9ef6b2f62fa819be3f1 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": 1.9.0 + "@webassemblyjs/helper-buffer": 1.9.0 + "@webassemblyjs/helper-wasm-bytecode": 1.9.0 + "@webassemblyjs/wasm-gen": 1.9.0 + checksum: 0e2957efc4001b1e030cf088f41a81b779437bf073272fbb31e3fc36d979dc5dd4137611397a70fa308986597a09cbdcd7806f123a0a809ae1035c40495a59d3 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/ieee754@npm:1.9.0" dependencies: "@xtuc/ieee754": ^1.2.0 - checksum: 7f282b7ab0754d89ad42f224de34622309e67a4869fc016b51fc8931ce0443a7bab289d5a59c683a9197fdaa60849e26cd68d2b36492af28b9d89139fda3c6c3 + checksum: 1474a87d8686542267b11b8ab0a1a37d3003cd6d4b797b8f96c58e348d483fec4e267ec1e128525e56e9250f90b75a79f1187a6beba2072d568b7a01faf3b8d4 languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/leb128@npm:1.11.0" +"@webassemblyjs/leb128@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/leb128@npm:1.9.0" dependencies: "@xtuc/long": 4.2.2 - checksum: d101b817361498a92697ddf9432bcde12bb52924d2494fad8bddd79ce6386f0c81275f014905b0342edd61d3b2a5b97e044b91f023fab9b44b0e00f8f794b888 + checksum: af49765d067ca2db5ec6bda360a235b9063756092a6439b8a296cb1ee0ebff778bcd68f686d3c350d1375a3fdb80fd0a91ea9655da5d1ea10ea5d3eae19c1105 languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/utf8@npm:1.11.0" - checksum: 772caa33fe900043a0dcf1cb4a6cc82a3359460a9de1df7dd9aaf736fcade80e678d939ca8e23063eccd17e44c0184769899874fe8d8f787e56318d462dcb83e +"@webassemblyjs/utf8@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/utf8@npm:1.9.0" + checksum: 172fd362aaf6760b826117177ec171ce63b5fabe172f09343b8cd24852f33475f3a596bc1d02088f64a498556a19f98dce00cafe3da3fb8d77367db5326d2d66 languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.0" +"@webassemblyjs/wasm-edit@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-edit@npm:1.9.0" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/helper-wasm-section": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - "@webassemblyjs/wasm-opt": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - "@webassemblyjs/wast-printer": 1.11.0 - checksum: 3d83a925a54270fbc443a9606375b63469fc938e8af0ddd2516c98c2dd52d3113345a9ce1c8c42b524ee1301c45124685377a6dd764b56628cf5563e484fee0f + "@webassemblyjs/ast": 1.9.0 + "@webassemblyjs/helper-buffer": 1.9.0 + "@webassemblyjs/helper-wasm-bytecode": 1.9.0 + "@webassemblyjs/helper-wasm-section": 1.9.0 + "@webassemblyjs/wasm-gen": 1.9.0 + "@webassemblyjs/wasm-opt": 1.9.0 + "@webassemblyjs/wasm-parser": 1.9.0 + "@webassemblyjs/wast-printer": 1.9.0 + checksum: 16016c9ef5b69fed1d6a6f21926e6e4a9add41e316efb23f6aeadc6efe2035cfb528720965883ac7861a5584b679a2697416f19db983c8a0c8bd6c7de7a0c6f1 languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.0" +"@webassemblyjs/wasm-gen@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-gen@npm:1.9.0" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/ieee754": 1.11.0 - "@webassemblyjs/leb128": 1.11.0 - "@webassemblyjs/utf8": 1.11.0 - checksum: 3886702e589f8c19a34b7778837e2928da730291d1b19bae4fe2954dd8bf28ae5e1574880346762b788445a096c3b6a94c244d38ef66823a76c8f7a8d989c8e1 + "@webassemblyjs/ast": 1.9.0 + "@webassemblyjs/helper-wasm-bytecode": 1.9.0 + "@webassemblyjs/ieee754": 1.9.0 + "@webassemblyjs/leb128": 1.9.0 + "@webassemblyjs/utf8": 1.9.0 + checksum: 1afcebfd1272b6f2aac2322b64ced22194d5fe91baf7cbc9fbd4e18a9cf9b1c2d31af5a02a7bf15d5880d598de822accc21d446a94ad0e70d7eb09eeab7de6c6 languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.0" +"@webassemblyjs/wasm-opt@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-opt@npm:1.9.0" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - checksum: 8e2757994c07c4534f5f747da54919a37777ec0f97bc6a9a53739d87408346fa1464e1932f66d671091c51e3a983977e31be464568ad6e06762ec2c052eeda0c + "@webassemblyjs/ast": 1.9.0 + "@webassemblyjs/helper-buffer": 1.9.0 + "@webassemblyjs/wasm-gen": 1.9.0 + "@webassemblyjs/wasm-parser": 1.9.0 + checksum: 2ce89f206e40dbfc44ec4a04669b76d14810db70da2506f90a7d5ff45f8002e34d7eaed447c3423cdad76d60617012d1fd0c055b63a5ed863b0068e5ce3e4032 languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.0" +"@webassemblyjs/wasm-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-parser@npm:1.9.0" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-api-error": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/ieee754": 1.11.0 - "@webassemblyjs/leb128": 1.11.0 - "@webassemblyjs/utf8": 1.11.0 - checksum: 12bfbb25b96630a1e44570cb71db33c368d0b86ccb56d2f80951217f7e072da894eef4512302e2f4155793acd2cf510d36af2b71aac672e94c64752d96cd3e97 + "@webassemblyjs/ast": 1.9.0 + "@webassemblyjs/helper-api-error": 1.9.0 + "@webassemblyjs/helper-wasm-bytecode": 1.9.0 + "@webassemblyjs/ieee754": 1.9.0 + "@webassemblyjs/leb128": 1.9.0 + "@webassemblyjs/utf8": 1.9.0 + checksum: b8cb346c9b7d1238d24a418bbc676c5adea7561202580527e3f6a8f74e38de8ba60962d5bda56fa7c1d652d28d787234dfae0b4777e2a8bcaf3e0d539ced8acf languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wast-printer@npm:1.11.0" +"@webassemblyjs/wast-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wast-parser@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": 1.9.0 + "@webassemblyjs/floating-point-hex-parser": 1.9.0 + "@webassemblyjs/helper-api-error": 1.9.0 + "@webassemblyjs/helper-code-frame": 1.9.0 + "@webassemblyjs/helper-fsm": 1.9.0 + "@xtuc/long": 4.2.2 + checksum: eaa0140a446be6138bbd19ecadf93119381f4cfabe5d7453397f2bd1716e00498666f12944b7da0b472ad1bcc27eca2fd9934785b57cfe97910189f0df59c3f1 + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wast-printer@npm:1.9.0" dependencies: - "@webassemblyjs/ast": 1.11.0 + "@webassemblyjs/ast": 1.9.0 + "@webassemblyjs/wast-parser": 1.9.0 "@xtuc/long": 4.2.2 - checksum: 06eafb92cb347400f3a025102ad8f605fab706c8a89b4ecabedfe6d06854370e7f38304fd5b345bafa1c9c5de988318eb69b2252e9c67edacea8709d2e966dca + checksum: 9f013b27e28b60cb215011079a15c94d1a7b0784eb3b59ec4936f8c0635ecdb58875c6809485cff814e01df170f02c18676cf782826795dc08553b98e69c1049 languageName: node linkType: hard @@ -5373,6 +5441,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^6.4.1": + version: 6.4.2 + resolution: "acorn@npm:6.4.2" + bin: + acorn: bin/acorn + checksum: ec4707ffa0f41dcd9ef67e5f0938a9e8c83f2f1ffcbd3588b07126833d2ca3a6573e094c511162ad40f658a267c6533c6dd5eedead6844d50f7d8d0be080cc55 + languageName: node + linkType: hard + "acorn@npm:^7.1.1, acorn@npm:^7.4.0": version: 7.4.1 resolution: "acorn@npm:7.4.1" @@ -5382,7 +5459,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.2.1": +"acorn@npm:^8.0.4, acorn@npm:^8.1.0": version: 8.2.4 resolution: "acorn@npm:8.2.4" bin: @@ -5463,7 +5540,7 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^3.1.0, ajv-keywords@npm:^3.5.2": +"ajv-keywords@npm:^3.1.0, ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": version: 3.5.2 resolution: "ajv-keywords@npm:3.5.2" peerDependencies: @@ -5472,7 +5549,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.1.0, ajv@npm:^6.10.0, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.1.0, ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -5529,7 +5606,7 @@ __metadata: languageName: node linkType: hard -"alphanum-sort@npm:^1.0.2": +"alphanum-sort@npm:^1.0.0": version: 1.0.2 resolution: "alphanum-sort@npm:1.0.2" checksum: 28bad91719e15959e36a791a3538924e07da356ebe3b5f992e7668e8018cfc417a7ba4a69512771e5ffa306c7e028435c7748546f66f72d4f7b0ad694cf55069 @@ -5686,7 +5763,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.1": +"anymatch@npm:^3.0.0, anymatch@npm:^3.0.3, anymatch@npm:~3.1.1": version: 3.1.2 resolution: "anymatch@npm:3.1.2" dependencies: @@ -5703,7 +5780,7 @@ __metadata: languageName: node linkType: hard -"aproba@npm:^1.0.3": +"aproba@npm:^1.0.3, aproba@npm:^1.1.1": version: 1.2.0 resolution: "aproba@npm:1.2.0" checksum: d4bac3e640af1f35eea8d5ee2b96ce2682549e47289f071aa37ae56066e19d239e43dea170c207d0f71586d7634099089523dd5701f26d4ded7b31dd5848a24a @@ -5750,13 +5827,6 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 160b7a25d2a7097fd5fdf25eb8a99e037340078f70e6c7cfdef305837ed14d54570b2b13261bcae26c8cd44ad6e9a7136a0110d815ac65a7891c69c7bf2f4afd - languageName: node - linkType: hard - "argv@npm:0.0.2": version: 0.0.2 resolution: "argv@npm:0.0.2" @@ -5943,6 +6013,18 @@ __metadata: languageName: node linkType: hard +"asn1.js@npm:^5.2.0": + version: 5.4.1 + resolution: "asn1.js@npm:5.4.1" + dependencies: + bn.js: ^4.0.0 + inherits: ^2.0.1 + minimalistic-assert: ^1.0.0 + safer-buffer: ^2.1.0 + checksum: 4aa368fce1f2213c41016e4d739da9a65a8462d131146109afa9a5527e9071ec550b1b1d2e5b105044b90dc4bd6b6331bfd7a0a5bb12557604ebdfd330a788d0 + languageName: node + linkType: hard + "asn1@npm:~0.2.3": version: 0.2.4 resolution: "asn1@npm:0.2.4" @@ -5959,6 +6041,16 @@ __metadata: languageName: node linkType: hard +"assert@npm:^1.1.1": + version: 1.5.0 + resolution: "assert@npm:1.5.0" + dependencies: + object-assign: ^4.1.1 + util: 0.10.3 + checksum: 9bd01a7a574d99656d3998b95e904c35fe41c9e18b8193a4b1bb3b1df2772f4fb03bf75897093daca9d883ed888d9be5da2a9a952da6f1da9101f4147a2f00c1 + languageName: node + linkType: hard + "assign-symbols@npm:^1.0.0": version: 1.0.0 resolution: "assign-symbols@npm:1.0.0" @@ -6035,7 +6127,7 @@ __metadata: languageName: node linkType: hard -"autoprefixer@npm:^10.0.2, autoprefixer@npm:^10.2.5": +"autoprefixer@npm:^10.2.5": version: 10.2.5 resolution: "autoprefixer@npm:10.2.5" dependencies: @@ -6053,6 +6145,23 @@ __metadata: languageName: node linkType: hard +"autoprefixer@npm:^9.4.7, autoprefixer@npm:^9.6.1": + version: 9.8.6 + resolution: "autoprefixer@npm:9.8.6" + dependencies: + browserslist: ^4.12.0 + caniuse-lite: ^1.0.30001109 + colorette: ^1.2.1 + normalize-range: ^0.1.2 + num2fraction: ^1.2.2 + postcss: ^7.0.32 + postcss-value-parser: ^4.1.0 + bin: + autoprefixer: bin/autoprefixer + checksum: b406d8047a97fcc39c9c6d208fd6f1974e5957800461d9a79457a3ecaca2c0ea090bd06f30c8653f48f751c31115c63a80502ff8c9a6bb7b8a5a5063021827d4 + languageName: node + linkType: hard + "aws-sign2@npm:~0.7.0": version: 0.7.0 resolution: "aws-sign2@npm:0.7.0" @@ -6354,7 +6463,7 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.1.2, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": +"base64-js@npm:^1.0.2, base64-js@npm:^1.1.2, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: c1b41a26ddc6620eb7f1ee6c29c812f5942a4e328e74263f995872cfb8ca3aee08542beb25cd10fd7ef16e4f16603e25c35a26e776c01fd55277e5035e829e0e @@ -6467,13 +6576,27 @@ __metadata: languageName: node linkType: hard -"bluebird@npm:^3.7.1": +"bluebird@npm:^3.5.5, bluebird@npm:^3.7.1": version: 3.7.2 resolution: "bluebird@npm:3.7.2" checksum: 4f2288662f3d4eadbb82d4daa4a7d7976a28fa3c7eb4102c9b4033b03e5be4574ba123ac52a7c103cde4cb7b2d2afc1dbe41817ca15a29ff21ecd258d0286047 languageName: node linkType: hard +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": + version: 4.12.0 + resolution: "bn.js@npm:4.12.0" + checksum: cfe7494de9c8a472c3534418f64f9c30a3f18134a8ad0c3ba4e0e934feb5d1a9110bba049a47ec6b79a1d649467df212f64ba6b22aaccbea0c3c208bef0b4110 + languageName: node + linkType: hard + +"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1": + version: 5.2.0 + resolution: "bn.js@npm:5.2.0" + checksum: 7a73bdbba63013a7f9953fbbd6ea3351e4cf36d6fdbb5adf7969fcd65255b9c04f2994b0132d89d74ffe608a0eb5a48322526bee20c0e03e71e502603b420f63 + languageName: node + linkType: hard + "body-parser@npm:1.19.0": version: 1.19.0 resolution: "body-parser@npm:1.19.0" @@ -6600,6 +6723,13 @@ __metadata: languageName: node linkType: hard +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 4536dd73f07f6884d89c09c906345b606abff477e87babef64a85656e8cf12b1c5f40d06313b91dac12bf3e031ac190b5d548f2c3bf75f655344c3fcf90cbc8a + languageName: node + linkType: hard + "browser-process-hrtime@npm:^1.0.0": version: 1.0.0 resolution: "browser-process-hrtime@npm:1.0.0" @@ -6607,6 +6737,79 @@ __metadata: languageName: node linkType: hard +"browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + dependencies: + buffer-xor: ^1.0.3 + cipher-base: ^1.0.0 + create-hash: ^1.1.0 + evp_bytestokey: ^1.0.3 + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + checksum: 487abe9fcf1d26add1f8f5b8e72ceb4493fb0ccbec170a18d2dd20b90fb2b4007d6c2db0bf993cdaf53567ebf8065ffcb01a08946087305adc82e4ccf2f9c1e8 + languageName: node + linkType: hard + +"browserify-cipher@npm:^1.0.0": + version: 1.0.1 + resolution: "browserify-cipher@npm:1.0.1" + dependencies: + browserify-aes: ^1.0.4 + browserify-des: ^1.0.0 + evp_bytestokey: ^1.0.0 + checksum: 4c5ee6d232c160ce0cb7e583a45a36ec1ad3323cbce278d77d243c51fe3f76db7df4406c53361a4f589cc70a54dc95da38519a6d0af5323cf60075f7eef9829d + languageName: node + linkType: hard + +"browserify-des@npm:^1.0.0": + version: 1.0.2 + resolution: "browserify-des@npm:1.0.2" + dependencies: + cipher-base: ^1.0.1 + des.js: ^1.0.0 + inherits: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: d9e6ea8db0d79bdf649d2dc8436f85b02f055b3ccd54add73a671e9649cec24265d0ece5f44a0678ec7d2a5fab511ea5f70badd5f6141be24157866a31889ba5 + languageName: node + linkType: hard + +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.0.1": + version: 4.1.0 + resolution: "browserify-rsa@npm:4.1.0" + dependencies: + bn.js: ^5.0.0 + randombytes: ^2.0.1 + checksum: 085043052954a64ce58aa6316af9c1f2d0c61055c934e1b7b3ea151cbaddde6b9b3fa654f4e818f13a63d2d0ba9592a609a5d1f57671896268da13c433f6efbb + languageName: node + linkType: hard + +"browserify-sign@npm:^4.0.0": + version: 4.2.1 + resolution: "browserify-sign@npm:4.2.1" + dependencies: + bn.js: ^5.1.1 + browserify-rsa: ^4.0.1 + create-hash: ^1.2.0 + create-hmac: ^1.1.7 + elliptic: ^6.5.3 + inherits: ^2.0.4 + parse-asn1: ^5.1.5 + readable-stream: ^3.6.0 + safe-buffer: ^5.2.0 + checksum: 931127b9c50c1223eef5e99c431db609fa55eef7ee3af878e891ee01649f5e62ed81c3e88b6cc51c33f972ef7f5a4342ede74334c57c5c6edb90b24c968aa06c + languageName: node + linkType: hard + +"browserify-zlib@npm:^0.2.0": + version: 0.2.0 + resolution: "browserify-zlib@npm:0.2.0" + dependencies: + pako: ~1.0.5 + checksum: 877c864e68a3f1dc9355eea71ee84c894c40f906f737bdf1e5d98d3641182099208e757356b5906160f0b2b22fa4976c4534ac1782bbdd39823b605ae2210f9a + languageName: node + linkType: hard + "browserslist@npm:4.14.2": version: 4.14.2 resolution: "browserslist@npm:4.14.2" @@ -6621,7 +6824,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.0, browserslist@npm:^4.16.3, browserslist@npm:^4.16.6": +"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.3, browserslist@npm:^4.16.6, browserslist@npm:^4.6.4": version: 4.16.6 resolution: "browserslist@npm:4.16.6" dependencies: @@ -6673,6 +6876,31 @@ __metadata: languageName: node linkType: hard +"buffer-json@npm:^2.0.0": + version: 2.0.0 + resolution: "buffer-json@npm:2.0.0" + checksum: 14ae192479f36ad645ee638e37925516cf4019e4a68fb7061bd6105ce6b08e5d79926edabb1c9bfff490ca9348db1d625797bbd6c709c74679ef8fd81c87fcc6 + languageName: node + linkType: hard + +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: 58ce260802968a06448f58ba20f83146ef21c7fb55839602ad951aa3b839035f181341375f2692aca46c86c15f6fcf668985ceef2063a2d33eafb5c6a0a4f627 + languageName: node + linkType: hard + +"buffer@npm:^4.3.0": + version: 4.9.2 + resolution: "buffer@npm:4.9.2" + dependencies: + base64-js: ^1.0.2 + ieee754: ^1.1.4 + isarray: ^1.0.0 + checksum: e29ecda22aa854008e26a8df294be1e5339a3bec8cbf537a794fecf63a024da68165743bc9afb1524909c74d8b03392e93a9c8fa5c2b064b1b2a52d4680c204e + languageName: node + linkType: hard + "buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -6690,6 +6918,13 @@ __metadata: languageName: node linkType: hard +"builtin-status-codes@npm:^3.0.0": + version: 3.0.0 + resolution: "builtin-status-codes@npm:3.0.0" + checksum: 8e2872a69ae05c6a24adc3b6dd4c340f077ea842fc8115ab5b4896f3ab68cf38f56438d430273efd152def59313fd8ca3a35bdad4c3e88b8bb88ba4a371b3866 + languageName: node + linkType: hard + "builtins@npm:^1.0.3": version: 1.0.3 resolution: "builtins@npm:1.0.3" @@ -6725,6 +6960,29 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^12.0.2": + version: 12.0.4 + resolution: "cacache@npm:12.0.4" + dependencies: + bluebird: ^3.5.5 + chownr: ^1.1.1 + figgy-pudding: ^3.5.1 + glob: ^7.1.4 + graceful-fs: ^4.1.15 + infer-owner: ^1.0.3 + lru-cache: ^5.1.1 + mississippi: ^3.0.0 + mkdirp: ^0.5.1 + move-concurrently: ^1.0.1 + promise-inflight: ^1.0.1 + rimraf: ^2.6.3 + ssri: ^6.0.1 + unique-filename: ^1.1.1 + y18n: ^4.0.0 + checksum: fd70ecfddb7fab7d9fb8544e10a738341e50709d897d97439c41d8b85b0df8bc50a2dcd8faab1af78499003b8944390a870451b3dd73860450d579c85128aede + languageName: node + linkType: hard + "cacache@npm:^15.0.5": version: 15.0.6 resolution: "cacache@npm:15.0.6" @@ -6767,6 +7025,22 @@ __metadata: languageName: node linkType: hard +"cache-loader@npm:^4.1.0": + version: 4.1.0 + resolution: "cache-loader@npm:4.1.0" + dependencies: + buffer-json: ^2.0.0 + find-cache-dir: ^3.0.0 + loader-utils: ^1.2.3 + mkdirp: ^0.5.1 + neo-async: ^2.6.1 + schema-utils: ^2.0.0 + peerDependencies: + webpack: ^4.0.0 + checksum: 2e369f72e32ee44f29ada210fcea87a85c120aa2619bb74b2f4346ae85034f58166b66135f3cfba307ad4290d893c447d46cea905508829427b5170158f36f08 + languageName: node + linkType: hard + "cacheable-request@npm:^6.0.0": version: 6.1.0 resolution: "cacheable-request@npm:6.1.0" @@ -6895,7 +7169,7 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001196, caniuse-lite@npm:^1.0.30001219": +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30000981, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001196, caniuse-lite@npm:^1.0.30001219": version: 1.0.30001228 resolution: "caniuse-lite@npm:1.0.30001228" checksum: a4eb04288e9b7f7bda158126f37e8dab97a5fc851dab192083f36906d8bf76e0526afa0692a662267ea4b3df0b0ba13f847457ac2be0f1ea209ec3013b7caabe @@ -7052,7 +7326,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.3.0, chokidar@npm:^3.5.1": +"chokidar@npm:^3.3.0, chokidar@npm:^3.4.1, chokidar@npm:^3.5.1": version: 3.5.1 resolution: "chokidar@npm:3.5.1" dependencies: @@ -7106,12 +7380,22 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": - version: 1.2.1 - resolution: "cjs-module-lexer@npm:1.2.1" - checksum: 5c41324f072e70bb6fd0be6e7d28905231cbf71a62f96fec79d232df51226cb9a0750cd785933d5afdecd8efebb50327fb395d6e0fc3b67fb370b8025b980c17 - languageName: node - linkType: hard +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.4 + resolution: "cipher-base@npm:1.0.4" + dependencies: + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + checksum: ec80001ec91dbb7c5c08facc00ffc9c75fed7abd6d720c7a9c62c260aa2e5cb2655c183e011b50b8b711f755b1753c7fdd2ca44c091ee78d81c377ca74ed83c9 + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.2.1 + resolution: "cjs-module-lexer@npm:1.2.1" + checksum: 5c41324f072e70bb6fd0be6e7d28905231cbf71a62f96fec79d232df51226cb9a0750cd785933d5afdecd8efebb50327fb395d6e0fc3b67fb370b8025b980c17 + languageName: node + linkType: hard "class-utils@npm:^0.3.5": version: 0.3.6 @@ -7125,6 +7409,13 @@ __metadata: languageName: node linkType: hard +"classnames@npm:^2.2.5": + version: 2.3.1 + resolution: "classnames@npm:2.3.1" + checksum: 57d536edede609f81425d24b062d8d720a466565faf1e38d32c881e883920baa71519ac70c7b565e9cd39201fb1c1ff9bdf8aabf8e26544bac481e7924867c83 + languageName: node + linkType: hard + "clean-css@npm:^4.2.3": version: 4.2.3 resolution: "clean-css@npm:4.2.3" @@ -7382,7 +7673,7 @@ __metadata: languageName: node linkType: hard -"color@npm:^3.1.1": +"color@npm:^3.0.0": version: 3.1.3 resolution: "color@npm:3.1.3" dependencies: @@ -7392,7 +7683,7 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^1.0.7, colorette@npm:^1.2.2": +"colorette@npm:^1.0.7, colorette@npm:^1.2.1, colorette@npm:^1.2.2": version: 1.2.2 resolution: "colorette@npm:1.2.2" checksum: e240f0c94b8d9f34b52bd17b50fc13a3b74f9e662edeaa2b0c65e06ec6b1fc6367fb42b834ec5a1d819d68b74a3d850f3bd3e284f9e614d6c4ffa122f83c6ec5 @@ -7416,13 +7707,6 @@ __metadata: languageName: node linkType: hard -"combine-promises@npm:^1.1.0": - version: 1.1.0 - resolution: "combine-promises@npm:1.1.0" - checksum: 1e331cb6ebcc45eb510b3651ea85fba7b7d688b7baaf87f200f414c50ba3b44ea304e511117689f778b524281331e54ca37be1bef0151c1589411b182e3354c2 - languageName: node - linkType: hard - "combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" @@ -7446,7 +7730,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.19.0, commander@npm:^2.20.0": +"commander@npm:^2.15.1, commander@npm:^2.19.0, commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: b73428e97de7624323f81ba13f8ed9271de487017432d18b4da3f07cfc528ad754bbd199004bd5d14e0ccd67d1fdfe0ec8dbbd4c438b401df3c4cc387bfd1daa @@ -7474,13 +7758,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^7.1.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: bdc0eca5e25cd24af8440163d3c9a996785bbac4b49a590365699cdc1ed08cefbac8f268153208ab2bc5dc3cb1d3fb573fd1590c681e36e371342186bd331a4c - languageName: node - linkType: hard - "commander@npm:~2.14.1": version: 2.14.1 resolution: "commander@npm:2.14.1" @@ -7550,6 +7827,18 @@ __metadata: languageName: node linkType: hard +"concat-stream@npm:^1.5.0": + version: 1.6.2 + resolution: "concat-stream@npm:1.6.2" + dependencies: + buffer-from: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^2.2.2 + typedarray: ^0.0.6 + checksum: 7a97b7a7d0938e36800bdb6f5caf938bac8c523a6ec15df1f2ac41d3785541be30a6671c9f4c0d1ac9609e6ab29dcab8f54d1c84035e3e3b7b24f9336da68ab0 + languageName: node + linkType: hard + "concat-stream@npm:^2.0.0": version: 2.0.0 resolution: "concat-stream@npm:2.0.0" @@ -7612,6 +7901,13 @@ __metadata: languageName: node linkType: hard +"console-browserify@npm:^1.1.0": + version: 1.2.0 + resolution: "console-browserify@npm:1.2.0" + checksum: ddc0e717a48ffa11d6b7ad08a81a706151ff7c08db313c14ae28f1dce88360b2f2d88ccd7b760243a47b67d821f1294273511af5de61f4f201855bb55e8e1d58 + languageName: node + linkType: hard + "console-control-strings@npm:^1.0.0, console-control-strings@npm:~1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -7619,6 +7915,13 @@ __metadata: languageName: node linkType: hard +"constants-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "constants-browserify@npm:1.0.0" + checksum: 108cd8ebfaf3c7fa77c443ca89ec63e41411e341d8b066b1c68d992598f1b75891fbd5370d67a1929a7813be71605884c40c107c1e760d12ebcedf49d31b0c44 + languageName: node + linkType: hard + "contains-path@npm:^0.1.0": version: 0.1.0 resolution: "contains-path@npm:0.1.0" @@ -7777,6 +8080,20 @@ __metadata: languageName: node linkType: hard +"copy-concurrently@npm:^1.0.0": + version: 1.0.5 + resolution: "copy-concurrently@npm:1.0.5" + dependencies: + aproba: ^1.1.1 + fs-write-stream-atomic: ^1.0.8 + iferr: ^0.1.5 + mkdirp: ^0.5.1 + rimraf: ^2.5.4 + run-queue: ^1.0.0 + checksum: 62ad9de2dcca3da3fdedf8ffd8c72dacafddc64e0299c61a53c55e3fc8c789d55bc6ca73b399576c52d25ba42c64f4b82f8ba8089ebf932f6f84e0aa8bd7c71e + languageName: node + linkType: hard + "copy-descriptor@npm:^0.1.0": version: 0.1.1 resolution: "copy-descriptor@npm:0.1.1" @@ -7791,20 +8108,24 @@ __metadata: languageName: node linkType: hard -"copy-webpack-plugin@npm:^8.1.0": - version: 8.1.1 - resolution: "copy-webpack-plugin@npm:8.1.1" +"copy-webpack-plugin@npm:^6.4.1": + version: 6.4.1 + resolution: "copy-webpack-plugin@npm:6.4.1" dependencies: - fast-glob: ^3.2.5 + cacache: ^15.0.5 + fast-glob: ^3.2.4 + find-cache-dir: ^3.3.1 glob-parent: ^5.1.1 - globby: ^11.0.3 + globby: ^11.0.1 + loader-utils: ^2.0.0 normalize-path: ^3.0.0 - p-limit: ^3.1.0 + p-limit: ^3.0.2 schema-utils: ^3.0.0 serialize-javascript: ^5.0.1 + webpack-sources: ^1.4.3 peerDependencies: - webpack: ^5.1.0 - checksum: b06d77fa66b83b331831c74a8a2e29a66d79f0ad732dc90e4508e7301c832900fc7ee74a92766526f8853e28dfbab9bc71065b5164f14f373d88152e4a2858c0 + webpack: ^4.37.0 || ^5.0.0 + checksum: ed5eb2bac2d67822dcf08e5023340d75392be6864f5f5734a9a1f60d64f7b028ee0279216e469de395eb9c94391fdafe46a800bda31f8b490f3f591d4255f163 languageName: node linkType: hard @@ -7846,7 +8167,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^5.0.5, cosmiconfig@npm:^5.1.0": +"cosmiconfig@npm:^5.0.0, cosmiconfig@npm:^5.0.5, cosmiconfig@npm:^5.1.0": version: 5.2.1 resolution: "cosmiconfig@npm:5.2.1" dependencies: @@ -7871,6 +8192,43 @@ __metadata: languageName: node linkType: hard +"create-ecdh@npm:^4.0.0": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: ^4.1.0 + elliptic: ^6.5.3 + checksum: e8f87322b18a79e0c795c95608838ff293c3154ff8a243171e2b4d97eebb9d099b2042c265e0f1231938c6bd7945ddaf640d32bb7b43967090c377ec8c5b542d + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: ^1.0.1 + inherits: ^2.0.1 + md5.js: ^1.3.4 + ripemd160: ^2.0.1 + sha.js: ^2.4.0 + checksum: 5565182efc3603e4d34c3ce13fd0765a058b27f91e49ba8e720e30ba8bfc53e9cd835e5343136000b6f210a979fe1041a4f3fe728e866e64f34db04b068fd725 + languageName: node + linkType: hard + +"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: ^1.0.3 + create-hash: ^1.1.0 + inherits: ^2.0.1 + ripemd160: ^2.0.0 + safe-buffer: ^5.0.1 + sha.js: ^2.4.8 + checksum: 98957676a93081678a2a915ae14898d65aac9b5651ffa55b8888484dd9d79c06d3cb3f85b137cd833ab536d87adee17394bb2b0efc591ea0e34110266d5bcd75 + languageName: node + linkType: hard + "create-jest-runner@npm:^0.6.0": version: 0.6.0 resolution: "create-jest-runner@npm:0.6.0" @@ -7924,6 +8282,25 @@ __metadata: languageName: node linkType: hard +"crypto-browserify@npm:^3.11.0": + version: 3.12.0 + resolution: "crypto-browserify@npm:3.12.0" + dependencies: + browserify-cipher: ^1.0.0 + browserify-sign: ^4.0.0 + create-ecdh: ^4.0.0 + create-hash: ^1.1.0 + create-hmac: ^1.1.0 + diffie-hellman: ^5.0.0 + inherits: ^2.0.1 + pbkdf2: ^3.0.3 + public-encrypt: ^4.0.0 + randombytes: ^2.0.0 + randomfill: ^1.0.3 + checksum: 8b558367b3759652b7c8dfd8fa0dc55a69362ae3efe039ac44d4b010bc63143708f4748ef8efc079945bf61dbc53c829cda968cd2abc1f34fcf43f669a414f73 + languageName: node + linkType: hard + "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" @@ -7931,28 +8308,43 @@ __metadata: languageName: node linkType: hard -"css-color-names@npm:^0.0.4": +"css-blank-pseudo@npm:^0.1.4": + version: 0.1.4 + resolution: "css-blank-pseudo@npm:0.1.4" + dependencies: + postcss: ^7.0.5 + bin: + css-blank-pseudo: cli.js + checksum: 605927ba911aa22820de56db3ce5760a7d8936834447c5e30e20f63f141a8787920a0aa8dd7fdde97823ee0619e76e003a6e66f2ff299d49e8574b12ed300a7f + languageName: node + linkType: hard + +"css-color-names@npm:0.0.4, css-color-names@npm:^0.0.4": version: 0.0.4 resolution: "css-color-names@npm:0.0.4" checksum: 6842f38c3ae176f9beef3f92be258936aa508d5c4aa6dca48abfc324574eeda275e265dd0589d6e7a9a29768b6d6dd5ab7c4de27b8255c6142330fde84821af2 languageName: node linkType: hard -"css-color-names@npm:^1.0.1": - version: 1.0.1 - resolution: "css-color-names@npm:1.0.1" - checksum: c75974dacd6950ad1a7ba649bd3c8a41a3c9ecf097069cbe3cab090e9b676e08c8f2ee6e28115acac3e602854f5619be2797f3314ab465057825bc5b144e2b41 +"css-declaration-sorter@npm:^4.0.1": + version: 4.0.1 + resolution: "css-declaration-sorter@npm:4.0.1" + dependencies: + postcss: ^7.0.1 + timsort: ^0.3.0 + checksum: 9cd18a0cca0e8e983ca3cd59461c05b650c244e0fbf28810e20ec8478dd715701538bf097980b50b92aed916825fd706d0546a8fd203b6e81612b7a67184bf98 languageName: node linkType: hard -"css-declaration-sorter@npm:6.0.0": - version: 6.0.0 - resolution: "css-declaration-sorter@npm:6.0.0" +"css-has-pseudo@npm:^0.10.0": + version: 0.10.0 + resolution: "css-has-pseudo@npm:0.10.0" dependencies: - timsort: ^0.3.0 - peerDependencies: - postcss: ^8.0.9 - checksum: 84a6e11132de2e698d84a188f79904d2e14b3d5a5233dd4a89e92a80e0c4ed3c66e360c9761db0437d6c106abfe0401641d55100b574a1b71b4c00b61ab6369a + postcss: ^7.0.6 + postcss-selector-parser: ^5.0.0-rc.4 + bin: + css-has-pseudo: cli.js + checksum: 8bfb4c7d426f4b0b660d1a72ed0c652fd58b3b2203f629ebffcb2bdc278e2e9de2319fe3bddde9f0d2de3d7cb42f0905f5de49802bd9a40f512fd782013eb7b9 languageName: node linkType: hard @@ -7977,25 +8369,14 @@ __metadata: languageName: node linkType: hard -"css-minimizer-webpack-plugin@npm:^2.0.0": - version: 2.0.0 - resolution: "css-minimizer-webpack-plugin@npm:2.0.0" +"css-prefers-color-scheme@npm:^3.1.1": + version: 3.1.1 + resolution: "css-prefers-color-scheme@npm:3.1.1" dependencies: - cssnano: ^5.0.0 - jest-worker: ^26.3.0 - p-limit: ^3.0.2 - postcss: ^8.2.9 - schema-utils: ^3.0.0 - serialize-javascript: ^5.0.1 - source-map: ^0.6.1 - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - clean-css: - optional: true - csso: - optional: true - checksum: 7a83a1295a3c21d7148857e58e114a9d268212dc381f01bf989c63f16e6fca92e13bb02cb3bb0ec8fb45a03460cd5e1a3d4842832b062a6ca70f27ffb0f4c9ba + postcss: ^7.0.5 + bin: + css-prefers-color-scheme: cli.js + checksum: 3ef06a7a427658f1ac0772d253990a70748d9f19e0e5b92d26430b3522f982a38195df79fd3d1eb45241a35d0f253d7a36e295a6a91d130d2ea45e90363ba8f8 languageName: node linkType: hard @@ -8018,19 +8399,6 @@ __metadata: languageName: node linkType: hard -"css-select@npm:^3.1.2": - version: 3.1.2 - resolution: "css-select@npm:3.1.2" - dependencies: - boolbase: ^1.0.0 - css-what: ^4.0.0 - domhandler: ^4.0.0 - domutils: ^2.4.3 - nth-check: ^2.0.0 - checksum: c06346140ea596220896980b8ce62e7dbc9fc4c902a0858d97ba933f538aecc96fed57967c15793faf76f2a6bab5385650d0a3637e07f498f75c39ce2c9764ab - languageName: node - linkType: hard - "css-select@npm:~1.2.0": version: 1.2.0 resolution: "css-select@npm:1.2.0" @@ -8077,10 +8445,19 @@ __metadata: languageName: node linkType: hard -"css-what@npm:^4.0.0": - version: 4.0.0 - resolution: "css-what@npm:4.0.0" - checksum: 2116d25ed233597bfe0b2fb50b56076f5dfc1665f602f8a367bbaa8d086ce91c188d92a47118fa0daf35118456b0a0e537241f89b34b4d98161d63da63740471 +"cssdb@npm:^4.4.0": + version: 4.4.0 + resolution: "cssdb@npm:4.4.0" + checksum: 457af51749239fccace2760bc9e49a211d72a992dde98f6b737cd9bebe44da3da323a96835cb3d7c48927c491e940d6985ba345da9a9467581242152745d9659 + languageName: node + linkType: hard + +"cssesc@npm:^2.0.0": + version: 2.0.0 + resolution: "cssesc@npm:2.0.0" + bin: + cssesc: bin/cssesc + checksum: f32fabda44dbedacb03a1b393579696594effce89da0a3dd2614ce827b803e4fdf747031bb0bd72784d5558fa077211cddfb20a3dc1326815810b301cb7baab6 languageName: node linkType: hard @@ -8093,84 +8470,101 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-advanced@npm:^5.0.0": - version: 5.0.1 - resolution: "cssnano-preset-advanced@npm:5.0.1" - dependencies: - autoprefixer: ^10.0.2 - cssnano-preset-default: ^5.0.1 - postcss-discard-unused: ^5.0.0 - postcss-merge-idents: ^5.0.0 - postcss-reduce-idents: ^5.0.0 - postcss-zindex: ^5.0.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 31bbc90bbaa5321aa38158460cbd95a1f87964e4c901f53cd26108e02fb46384355f78ee11ca78de88924dede3beff4f89d5944eeb98543a8ef319ee1303938f +"cssnano-preset-advanced@npm:^4.0.7": + version: 4.0.8 + resolution: "cssnano-preset-advanced@npm:4.0.8" + dependencies: + autoprefixer: ^9.4.7 + cssnano-preset-default: ^4.0.8 + postcss-discard-unused: ^4.0.1 + postcss-merge-idents: ^4.0.1 + postcss-reduce-idents: ^4.0.2 + postcss-zindex: ^4.0.1 + checksum: 0c0c4883cd93ec7d72342ad893c747b0c0ce765b0b0bb65fc23696b32e99054257dd8a91eaa3f1bc3ee107805ff513c294c5d9704343c80d0d1b96be97429464 languageName: node linkType: hard -"cssnano-preset-default@npm:^5.0.1": - version: 5.0.1 - resolution: "cssnano-preset-default@npm:5.0.1" - dependencies: - css-declaration-sorter: 6.0.0 - cssnano-utils: ^2.0.0 - postcss-calc: ^8.0.0 - postcss-colormin: ^5.0.0 - postcss-convert-values: ^5.0.0 - postcss-discard-comments: ^5.0.0 - postcss-discard-duplicates: ^5.0.0 - postcss-discard-empty: ^5.0.0 - postcss-discard-overridden: ^5.0.0 - postcss-merge-longhand: ^5.0.1 - postcss-merge-rules: ^5.0.0 - postcss-minify-font-values: ^5.0.0 - postcss-minify-gradients: ^5.0.0 - postcss-minify-params: ^5.0.0 - postcss-minify-selectors: ^5.0.0 - postcss-normalize-charset: ^5.0.0 - postcss-normalize-display-values: ^5.0.0 - postcss-normalize-positions: ^5.0.0 - postcss-normalize-repeat-style: ^5.0.0 - postcss-normalize-string: ^5.0.0 - postcss-normalize-timing-functions: ^5.0.0 - postcss-normalize-unicode: ^5.0.0 - postcss-normalize-url: ^5.0.0 - postcss-normalize-whitespace: ^5.0.0 - postcss-ordered-values: ^5.0.0 - postcss-reduce-initial: ^5.0.0 - postcss-reduce-transforms: ^5.0.0 - postcss-svgo: ^5.0.0 - postcss-unique-selectors: ^5.0.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 9547c57caa83dfd7acc03c2d9c3983cd956c1c7e85fc30e31257fd577c7a2190f22925660fbac79225d0c0e1aeb71dd311cbc256c99453d8337d6d8d6447d0ef +"cssnano-preset-default@npm:^4.0.8": + version: 4.0.8 + resolution: "cssnano-preset-default@npm:4.0.8" + dependencies: + css-declaration-sorter: ^4.0.1 + cssnano-util-raw-cache: ^4.0.1 + postcss: ^7.0.0 + postcss-calc: ^7.0.1 + postcss-colormin: ^4.0.3 + postcss-convert-values: ^4.0.1 + postcss-discard-comments: ^4.0.2 + postcss-discard-duplicates: ^4.0.2 + postcss-discard-empty: ^4.0.1 + postcss-discard-overridden: ^4.0.1 + postcss-merge-longhand: ^4.0.11 + postcss-merge-rules: ^4.0.3 + postcss-minify-font-values: ^4.0.2 + postcss-minify-gradients: ^4.0.2 + postcss-minify-params: ^4.0.2 + postcss-minify-selectors: ^4.0.2 + postcss-normalize-charset: ^4.0.1 + postcss-normalize-display-values: ^4.0.2 + postcss-normalize-positions: ^4.0.2 + postcss-normalize-repeat-style: ^4.0.2 + postcss-normalize-string: ^4.0.2 + postcss-normalize-timing-functions: ^4.0.2 + postcss-normalize-unicode: ^4.0.1 + postcss-normalize-url: ^4.0.1 + postcss-normalize-whitespace: ^4.0.2 + postcss-ordered-values: ^4.1.2 + postcss-reduce-initial: ^4.0.3 + postcss-reduce-transforms: ^4.0.2 + postcss-svgo: ^4.0.3 + postcss-unique-selectors: ^4.0.1 + checksum: a5f5d822ca81370206fa2c925b63dc6fdc2e0eeb5e4b91ea1d43575bafb7979abd7dd9a03111c090e9ad62d40fca5416c4a1db2373bc4051783ad0735fa8c10b + languageName: node + linkType: hard + +"cssnano-util-get-arguments@npm:^4.0.0": + version: 4.0.0 + resolution: "cssnano-util-get-arguments@npm:4.0.0" + checksum: 40017863677fe03979bf6d8f3cbddbba58913e6257e50eaad65c5b0de567a2e4d704b889919d299f6a8efa272cf89b862481c04e9a0faea4f2fc4dc501abd7ee languageName: node linkType: hard -"cssnano-utils@npm:^2.0.0": - version: 2.0.0 - resolution: "cssnano-utils@npm:2.0.0" - peerDependencies: - postcss: ^8.2.1 - checksum: dc4f1b37160a0aeb6eec5bf60176bcd6608a9603b37581452563f9ac12049de4cf16a544de73cf0f69f7e9524b181b0dfbddbf9e22fb4bbcfa6cc8dd37d90c01 +"cssnano-util-get-match@npm:^4.0.0": + version: 4.0.0 + resolution: "cssnano-util-get-match@npm:4.0.0" + checksum: 1220816e194911db505ea7f0489a5e966914de726ef2c753562a0cc4e31f184a09409806aa18fb07c4d97e68c0c950f2ad60b91c946954240f22356d256eb568 languageName: node linkType: hard -"cssnano@npm:^5.0.0, cssnano@npm:^5.0.1": - version: 5.0.2 - resolution: "cssnano@npm:5.0.2" +"cssnano-util-raw-cache@npm:^4.0.1": + version: 4.0.1 + resolution: "cssnano-util-raw-cache@npm:4.0.1" dependencies: - cosmiconfig: ^7.0.0 - cssnano-preset-default: ^5.0.1 - is-resolvable: ^1.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: fbd293d60cda6db6e8fc9623f8c5c1b7f164a158c776c97f356bf8abe887ab4dc59c2512987cbfaf291bf56d8fbcd57a703b51455d54d3f26d385262b0f83e12 + postcss: ^7.0.0 + checksum: d3eb80e96fc680e7b764ed8d622fbe860c7b80e831fb00552717d618c220940ba595cdd471b69bcf5b7d38fbb176d132512e68f6501e197cd10baa726f4d8cbd + languageName: node + linkType: hard + +"cssnano-util-same-parent@npm:^4.0.0": + version: 4.0.1 + resolution: "cssnano-util-same-parent@npm:4.0.1" + checksum: c01d567f9d1e867c3e591338bbfff5fb96dd6843ce0b78cda012a0096dae8c05237d4aedeeadebfbf5e1555c567d40cbc940bf44afc2716c1d077d7c8d907579 + languageName: node + linkType: hard + +"cssnano@npm:^4.1.10": + version: 4.1.11 + resolution: "cssnano@npm:4.1.11" + dependencies: + cosmiconfig: ^5.0.0 + cssnano-preset-default: ^4.0.8 + is-resolvable: ^1.0.0 + postcss: ^7.0.0 + checksum: cff7e73975bc66216817b241e8a3f8636a53cdc58fb298a35897bd35bdd902f00da76522c65b9f6d55cf2a4a6ce817545a2ab3372f6b2b97fb1daec41aa7f5a0 languageName: node linkType: hard -"csso@npm:^4.0.2, csso@npm:^4.2.0": +"csso@npm:^4.0.2": version: 4.2.0 resolution: "csso@npm:4.2.0" dependencies: @@ -8218,6 +8612,13 @@ __metadata: languageName: node linkType: hard +"cyclist@npm:^1.0.1": + version: 1.0.1 + resolution: "cyclist@npm:1.0.1" + checksum: 74bc0a48c37bed8a430f103d0a880902768b7e3bcc0f9e098c4bd9630438c6b053b88e33c127e41316bb2da8d642a937015961a6cd563641ad2a5798dfecadd9 + languageName: node + linkType: hard + "dargs@npm:^7.0.0": version: 7.0.0 resolution: "dargs@npm:7.0.0" @@ -8411,7 +8812,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3": +"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3": version: 1.1.3 resolution: "define-properties@npm:1.1.3" dependencies: @@ -8528,6 +8929,16 @@ __metadata: languageName: node linkType: hard +"des.js@npm:^1.0.0": + version: 1.0.1 + resolution: "des.js@npm:1.0.1" + dependencies: + inherits: ^2.0.1 + minimalistic-assert: ^1.0.0 + checksum: 74cd0aa0c57b5db03fb8084d6083016fa8f2b98a3f34fb6ae26ad505fa75c78e064be9b7b987e99485d9cc8696fd87a9c86d9309591a184d3dee8d438038c53c + languageName: node + linkType: hard + "destroy@npm:~1.0.4": version: 1.0.4 resolution: "destroy@npm:1.0.4" @@ -8639,6 +9050,17 @@ __metadata: languageName: node linkType: hard +"diffie-hellman@npm:^5.0.0": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: ^4.1.0 + miller-rabin: ^4.0.0 + randombytes: ^2.0.0 + checksum: c988be315dc9ec83948605da58a25912daaae787d6a5cfa0b0574383dcf9b953aa81ba3109d06bc8590b037259753d2962a362e351efcb4274e94f1b0f277065 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -8747,6 +9169,13 @@ __metadata: languageName: node linkType: hard +"domain-browser@npm:^1.1.1": + version: 1.2.0 + resolution: "domain-browser@npm:1.2.0" + checksum: 39a1156552d162c33e0edff62b0f9ae64609d4ffa85ecaccfad2416ee34e4b6c78aea53c30ce167a04421144963a674e8471eba2b6272b4760e020149b9bafbb + languageName: node + linkType: hard + "domelementtype@npm:1, domelementtype@npm:^1.3.0, domelementtype@npm:^1.3.1": version: 1.3.1 resolution: "domelementtype@npm:1.3.1" @@ -8788,7 +9217,7 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": +"domhandler@npm:^4.2.0": version: 4.2.0 resolution: "domhandler@npm:4.2.0" dependencies: @@ -8817,7 +9246,7 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^2.4.2, domutils@npm:^2.4.3": +"domutils@npm:^2.4.2": version: 2.6.0 resolution: "domutils@npm:2.6.0" dependencies: @@ -8870,6 +9299,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^3.4.2, duplexify@npm:^3.6.0": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: ^1.0.0 + inherits: ^2.0.1 + readable-stream: ^2.0.0 + stream-shift: ^1.0.0 + checksum: 9581cdb8f6304fdaacb8bbe2b8b393a8da3ece3086dd24070601b70f08ca417305b4f3a94699b984c4981dceb6eebb4c132abfe0445baacfd04f2b66a0524cda + languageName: node + linkType: hard + "ecc-jsbn@npm:~0.1.1": version: 0.1.2 resolution: "ecc-jsbn@npm:0.1.2" @@ -8901,6 +9342,21 @@ __metadata: languageName: node linkType: hard +"elliptic@npm:^6.5.3": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + dependencies: + bn.js: ^4.11.9 + brorand: ^1.1.0 + hash.js: ^1.0.0 + hmac-drbg: ^1.0.1 + inherits: ^2.0.4 + minimalistic-assert: ^1.0.1 + minimalistic-crypto-utils: ^1.0.1 + checksum: e0fb360fb6800666e0f69c837ae1f19656583322f81e106e458242055b8e241e80a48c92da8f1324684d1ff348751ff38abeadcfc1f28c54157c29d229d039a1 + languageName: node + linkType: hard + "emittery@npm:^0.8.1": version: 0.8.1 resolution: "emittery@npm:0.8.1" @@ -8959,7 +9415,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -8968,13 +9424,14 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.8.0": - version: 5.8.2 - resolution: "enhanced-resolve@npm:5.8.2" +"enhanced-resolve@npm:^4.5.0": + version: 4.5.0 + resolution: "enhanced-resolve@npm:4.5.0" dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: 1af3f6bcb92e849f6c18d44c427cbdaecac4be61023f2008d2ef0f8a48c909bf13afa9a5c04f9d030f27d9a7e27e40c367caa22cd63d2a7eb5fdbab7579d1538 + graceful-fs: ^4.1.2 + memory-fs: ^0.5.0 + tapable: ^1.0.0 + checksum: 72e679343f3ca6f2f84b1259460705fa29d46f0b806fa562db96edeb7826357a97ba9ccb61a07cdb05f51c1b4d2f5b544a2e4a6c257d7395a0c9b6e727f86d08 languageName: node linkType: hard @@ -9165,13 +9622,6 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^0.4.0": - version: 0.4.1 - resolution: "es-module-lexer@npm:0.4.1" - checksum: 0c634ce62d3a77b04aa56b9ca2af2b58ff73a834afc76ac6747b25173e97d9050a28451b6ed39b54b84b8498d887ac8bd5bcf2c9aa9ba948ca0aee0acd613618 - languageName: node - linkType: hard - "es-to-primitive@npm:^1.2.1": version: 1.2.1 resolution: "es-to-primitive@npm:1.2.1" @@ -9380,6 +9830,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^4.0.3": + version: 4.0.3 + resolution: "eslint-scope@npm:4.0.3" + dependencies: + esrecurse: ^4.1.0 + estraverse: ^4.1.1 + checksum: 49635cf9d936af317b9fa89cf98f30719ec9e287e5532c300cbab8015a1920b7ace495ffadaefd0ac86617ce85c17717f0ef1899f66536dca12aa85f1899899d + languageName: node + linkType: hard + "eslint-scope@npm:^5.0.0, eslint-scope@npm:^5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" @@ -9490,7 +9950,7 @@ __metadata: languageName: node linkType: hard -"esrecurse@npm:^4.3.0": +"esrecurse@npm:^4.1.0, esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" dependencies: @@ -9571,7 +10031,7 @@ __metadata: languageName: node linkType: hard -"events@npm:^3.2.0": +"events@npm:^3.0.0": version: 3.3.0 resolution: "events@npm:3.3.0" checksum: 56fa12567013e85b98782a1d971442ea29df057129d8a94432711fd68303357594ea37bfbe234860e28581a7768f943a8bea88c16b48aa01b96acf804bc01d52 @@ -9587,6 +10047,17 @@ __metadata: languageName: node linkType: hard +"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: ^1.3.4 + node-gyp: latest + safe-buffer: ^5.1.1 + checksum: 529ceee780657a04e2b19ecbb685473f12aae05d5f9f794e36044f5ea602e1a0ba42bff4e1b7544a8a4164fbd9c585e69398b114f9925448d02c31c52c95cf26 + languageName: node + linkType: hard + "example-async@workspace:examples/async": version: 0.0.0-use.local resolution: "example-async@workspace:examples/async" @@ -9988,7 +10459,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.1.1, fast-glob@npm:^3.2.5": +"fast-glob@npm:^3.1.1, fast-glob@npm:^3.2.4": version: 3.2.5 resolution: "fast-glob@npm:3.2.5" dependencies: @@ -10101,6 +10572,13 @@ __metadata: languageName: node linkType: hard +"figgy-pudding@npm:^3.5.1": + version: 3.5.2 + resolution: "figgy-pudding@npm:3.5.2" + checksum: 737645f602631734ad53b7445128e255939f809565350b376b3b8fad7673f37c82525a16463f176643ff4b989bb79ed0ecc18111a364ead1082a74c99195a6ca + languageName: node + linkType: hard + "figures@npm:^3.0.0, figures@npm:^3.2.0": version: 3.2.0 resolution: "figures@npm:3.2.0" @@ -10188,7 +10666,7 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^2.0.0": +"find-cache-dir@npm:^2.0.0, find-cache-dir@npm:^2.1.0": version: 2.1.0 resolution: "find-cache-dir@npm:2.1.0" dependencies: @@ -10199,7 +10677,7 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^3.3.1": +"find-cache-dir@npm:^3.0.0, find-cache-dir@npm:^3.3.1": version: 3.3.1 resolution: "find-cache-dir@npm:3.3.1" dependencies: @@ -10268,16 +10746,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: cd0b77415bc59e5af31e4e1b29c6ff8d965d9ca3c60a4b74161f8f116c0d1ad8d35bc6e53bf8f92c69e704e98183f1628a363ed7d519eb28eff54378b8f167a7 - languageName: node - linkType: hard - "flat-cache@npm:^3.0.4": version: 3.0.4 resolution: "flat-cache@npm:3.0.4" @@ -10295,6 +10763,13 @@ __metadata: languageName: node linkType: hard +"flatten@npm:^1.0.2": + version: 1.0.3 + resolution: "flatten@npm:1.0.3" + checksum: 8a382594dc7bb4e4f28739a4abcd9d6f5c74d4be370892c10386a09656722e1a822137dc48c4bff15758e0656f8fee7bb3001133d068431796cf17b1f52a969a + languageName: node + linkType: hard + "flow-parser@npm:0.*": version: 0.151.0 resolution: "flow-parser@npm:0.151.0" @@ -10309,6 +10784,16 @@ __metadata: languageName: node linkType: hard +"flush-write-stream@npm:^1.0.0": + version: 1.1.1 + resolution: "flush-write-stream@npm:1.1.1" + dependencies: + inherits: ^2.0.3 + readable-stream: ^2.3.6 + checksum: b8fa1fbfadd5c4b6df3cf2c34b3c408fe508a2899c536bafa339f679de545689997e907bd4ff61dd292942f8044fb2f293a5956dd8b601f6a5601617842d0dda + languageName: node + linkType: hard + "flux@npm:^4.0.1": version: 4.0.1 resolution: "flux@npm:4.0.1" @@ -10412,6 +10897,16 @@ __metadata: languageName: node linkType: hard +"from2@npm:^2.1.0": + version: 2.3.0 + resolution: "from2@npm:2.3.0" + dependencies: + inherits: ^2.0.1 + readable-stream: ^2.0.0 + checksum: 5f1a9bbff02d30cf5b4f12cfef20b47455876f8318b92d275ca39e3c5adf0636d3a0d8f4821a1c245339c47e79a551dce9ce5c7d9236c16347b934dc13d1d408 + languageName: node + linkType: hard + "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -10471,6 +10966,18 @@ __metadata: languageName: node linkType: hard +"fs-write-stream-atomic@npm:^1.0.8": + version: 1.0.10 + resolution: "fs-write-stream-atomic@npm:1.0.10" + dependencies: + graceful-fs: ^4.1.2 + iferr: ^0.1.5 + imurmurhash: ^0.1.4 + readable-stream: 1 || 2 + checksum: 1e35e18bdd0215587ed74fa68fd2e96240ecbc91213cdb3c2e3cad49a99767b224507261757658a034c22223a20ec6179a14a4fe7c28631e2547c4fde3b42fa2 + languageName: node + linkType: hard + "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" @@ -10790,13 +11297,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: 6093c15d9f92d010998dd7cc7a5ba4e74eea83878d3f8c2616c6935dab9a79bf31ca7ddc214604b84a87c65b9e51481221e325be68f5fe6db8ed27dc76a5230f - languageName: node - linkType: hard - "glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.1.7 resolution: "glob@npm:7.1.7" @@ -10888,7 +11388,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.2, globby@npm:^11.0.3": +"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.2": version: 11.0.3 resolution: "globby@npm:11.0.3" dependencies: @@ -11138,7 +11638,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"has@npm:^1.0.3": +"has@npm:^1.0.0, has@npm:^1.0.3": version: 1.0.3 resolution: "has@npm:1.0.3" dependencies: @@ -11147,6 +11647,27 @@ fsevents@^1.2.7: languageName: node linkType: hard +"hash-base@npm:^3.0.0": + version: 3.1.0 + resolution: "hash-base@npm:3.1.0" + dependencies: + inherits: ^2.0.4 + readable-stream: ^3.6.0 + safe-buffer: ^5.2.0 + checksum: 9f4b0d183daf13f79ef60f117efc7004bb3570de48fe2d3c7d03c546313490decb2dff2b08d71b8a0049a7de4b79eda16096c2a96f33a7f4916e7616bce4dc11 + languageName: node + linkType: hard + +"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: ^2.0.3 + minimalistic-assert: ^1.0.1 + checksum: fceb7fb87e224f4b399212f902d3a34c3ed8512560868b56dde92f617fac9c66b501e583bab2996ed7493be5ab3385e05a69d2209fa6a9144391b22e1c2d245b + languageName: node + linkType: hard + "hast-to-hyperscript@npm:^9.0.0": version: 9.0.1 resolution: "hast-to-hyperscript@npm:9.0.1" @@ -11298,6 +11819,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: ^1.0.3 + minimalistic-assert: ^1.0.0 + minimalistic-crypto-utils: ^1.0.1 + checksum: 729d5a55bf793619830aca5e62d101dfdb4164fe30c056cdcaecb32b1a69a23aa663d88e876d9d56cb69b1c3d95395ea60b0a715763c461188b37dca3dea930d + languageName: node + linkType: hard + "hoist-non-react-statics@npm:^3.1.0": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" @@ -11427,18 +11959,22 @@ fsevents@^1.2.7: languageName: node linkType: hard -"html-webpack-plugin@npm:^5.2.0": - version: 5.3.1 - resolution: "html-webpack-plugin@npm:5.3.1" +"html-webpack-plugin@npm:^4.5.0": + version: 4.5.2 + resolution: "html-webpack-plugin@npm:4.5.2" dependencies: "@types/html-minifier-terser": ^5.0.0 + "@types/tapable": ^1.0.5 + "@types/webpack": ^4.41.8 html-minifier-terser: ^5.0.1 + loader-utils: ^1.2.3 lodash: ^4.17.20 pretty-error: ^2.1.1 - tapable: ^2.0.0 + tapable: ^1.1.3 + util.promisify: 1.0.0 peerDependencies: - webpack: ^5.20.0 - checksum: 2d744cf3144686cc4b786dac8fbbce3733dd1825a99efea2f289b54e47201f8431df56114d72eb87cf4f78aa8dede6ea5ee09904313dbd72209dc3a43a804b51 + webpack: ^4.0.0 || ^5.0.0 + checksum: 5896c2ac5c230e148e7de8079bb83cf45c3553d57ff644b921846e2e4241ad9c4ac5baed2737c801e0f1929e95333c3c135a7d471079ea32cdeee056f44eedde languageName: node linkType: hard @@ -11572,6 +12108,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"https-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "https-browserify@npm:1.0.0" + checksum: 9746a4ef0283691774f207039efed38e31e86732ed15bcebf1878e2e7cf4b87e8a4e5fe3cce342caba9545ce0e7e2bcf44fe08edb52284b1b53bfe026e1e8f07 + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "https-proxy-agent@npm:5.0.0" @@ -11625,13 +12168,20 @@ fsevents@^1.2.7: languageName: node linkType: hard -"ieee754@npm:^1.1.13": +"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 6c1cfab995ecab3b0dbb6cfb7e192686eb02f0f8e788f2d962e1fc02e2d5ab38a85e06d417221f136bd029663a77cdb920d99605d68d3730a05597dd7910426a languageName: node linkType: hard +"iferr@npm:^0.1.5": + version: 0.1.5 + resolution: "iferr@npm:0.1.5" + checksum: 9d366dcc6356bfc0156ba7b86c7ef1a8ede7533fc7b100b4700de618774f1b48aa60185a2193f8260870b9168daa38aee5b11d38c92f5100af8ccdf22b5c2717 + languageName: node + linkType: hard + "ignore-walk@npm:3.0.3, ignore-walk@npm:^3.0.3": version: 3.0.3 resolution: "ignore-walk@npm:3.0.3" @@ -11766,17 +12316,17 @@ fsevents@^1.2.7: languageName: node linkType: hard -"infer-owner@npm:^1.0.4": +"infer-owner@npm:^1.0.3, infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" checksum: 56aa1d87b05936947765b1d9ace5f8d7ccd8cf6ccc1d69b67e8eaaee0e1ee2960d5accd51deb50d884665a5a1af3bcbb80f5d249c01a00280365bba59db9687b languageName: node linkType: hard -"infima@npm:0.2.0-alpha.23": - version: 0.2.0-alpha.23 - resolution: "infima@npm:0.2.0-alpha.23" - checksum: 01d26aa757fd72c0cfa6ddde2db3082a48c740559075bfa3fa2b403286294f10fb9ca1e16de56844f2a49dfaadee568244cdb8dfdde9656c763e05dc56a9bb41 +"infima@npm:0.2.0-alpha.20": + version: 0.2.0-alpha.20 + resolution: "infima@npm:0.2.0-alpha.20" + checksum: 0cf61b32cba18fab55e470eed18477f124ce0ef893503d27d6aa1ec2338106c9f4d737362cc27cb6e7f9d13bfdf130c7ede1a29e1da49422429ba5a2e6d0f633 languageName: node linkType: hard @@ -11790,14 +12340,21 @@ fsevents@^1.2.7: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.0, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.0, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 98426da247ddfc3dcd7d7daedd90c3ca32d5b08deca08949726f12d49232aef94772a07b36cf4ff833e105ae2ef931777f6de4a6dd8245a216b9299ad4a50bea languageName: node linkType: hard -"inherits@npm:2.0.3": +"inherits@npm:2.0.1": + version: 2.0.1 + resolution: "inherits@npm:2.0.1" + checksum: 6f59f627a64cff6f4b5a2723184d831e6fc376cf88b8a94821caa2cad9d44da6d79583335024c01a541d9a25767785928a28f6e2192bb14be9ce800b315b4faa + languageName: node + linkType: hard + +"inherits@npm:2.0.3": version: 2.0.3 resolution: "inherits@npm:2.0.3" checksum: 9488f9433effbc24474f6baee8014e5337c7f99305ecb4204fa5864ae7655c24225780d87fc65ed8d3d374715a18c5dc8c69fe3bf9745cde2e7acd0ac068a07b @@ -11879,6 +12436,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"intl-locales-supported@npm:1.8.11": + version: 1.8.11 + resolution: "intl-locales-supported@npm:1.8.11" + checksum: d22b46b95dd5122288fea0fe2110b50ec836fbe082c492db30f2468aaa9dd30f4162cc5455bbc5bad25b8d6bc12418e1c61b1699b0d15693e3b7ec896e9cf5b3 + languageName: node + linkType: hard + +"intl@npm:^1.2.5": + version: 1.2.5 + resolution: "intl@npm:1.2.5" + checksum: 8fc0b27ce873d865f90bf2e32428b80345e3d91fb2cef7732cfeb6b10c1a83482e4e73c68af48d1dc4eb407a49fc81f1beef34161db7e284259957d3e4fa1aae + languageName: node + linkType: hard + "invariant@npm:^2.2.4": version: 2.2.4 resolution: "invariant@npm:2.2.4" @@ -11916,6 +12487,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"is-absolute-url@npm:^2.0.0": + version: 2.1.0 + resolution: "is-absolute-url@npm:2.1.0" + checksum: f9d193d86b5a255de08eb22653026e09952b5b1335c1c1c9c171237cb056c54d8c12ef45a069ac34270b7e960e46c89bc43f52d911317a2aaaab6d315c0da0e0 + languageName: node + linkType: hard + "is-absolute-url@npm:^3.0.3": version: 3.0.3 resolution: "is-absolute-url@npm:3.0.3" @@ -12058,7 +12636,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-color-stop@npm:^1.1.0": +"is-color-stop@npm:^1.0.0": version: 1.1.0 resolution: "is-color-stop@npm:1.1.0" dependencies: @@ -12414,7 +12992,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-resolvable@npm:^1.1.0": +"is-resolvable@npm:^1.0.0": version: 1.1.0 resolution: "is-resolvable@npm:1.1.0" checksum: ef1a289c54e1115f668cd4fbfd6dc53d6bfa02c2c12e812a578aefbe795b72339cde37e9ee5709d15a21009cadadba2c61cf810f2dd1da29e3c651776c98dda8 @@ -13398,10 +13976,10 @@ fsevents@^1.2.7: dependencies: "@babel/core": ^7.0.0 "@crowdin/cli": ^3.5.2 - "@docusaurus/core": 2.0.0-beta.0 - "@docusaurus/plugin-client-redirects": 2.0.0-beta.0 - "@docusaurus/plugin-pwa": 2.0.0-beta.0 - "@docusaurus/preset-classic": 2.0.0-beta.0 + "@docusaurus/core": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-client-redirects": 2.0.0-alpha.c32d8bd11 + "@docusaurus/plugin-pwa": 2.0.0-alpha.c32d8bd11 + "@docusaurus/preset-classic": 2.0.0-alpha.c32d8bd11 "@types/react": ^17.0.3 clsx: ^1.1.1 fs-extra: ^9.0.1 @@ -13440,7 +14018,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-worker@npm:^26.0.0, jest-worker@npm:^26.2.1, jest-worker@npm:^26.3.0, jest-worker@npm:^26.6.2": +"jest-worker@npm:^26.0.0, jest-worker@npm:^26.2.1, jest-worker@npm:^26.5.0, jest-worker@npm:^26.6.2": version: 26.6.2 resolution: "jest-worker@npm:26.6.2" dependencies: @@ -13527,17 +14105,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"js-yaml@npm:^4.0.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: 8973cf4296c944cc2551d1e3d3d064e7de0d0a6db3f7bafe40339ee9e5e0329560b52c4b8492b9b22365404c9be0822b62340ab49884e1dedfcc7ff80158abe0 - languageName: node - linkType: hard - "jsbn@npm:~0.1.0": version: 0.1.1 resolution: "jsbn@npm:0.1.1" @@ -13862,6 +14429,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"last-call-webpack-plugin@npm:^3.0.0": + version: 3.0.0 + resolution: "last-call-webpack-plugin@npm:3.0.0" + dependencies: + lodash: ^4.17.5 + webpack-sources: ^1.1.0 + checksum: aaa8255d4e1e9f20fd98aa6dd89af4e8efa27a516d4c3a183cd1b368c20ac4102f4ddb659010fce5ea1eaed66b59d88ea6cd1063b75c8db1e43ba129c64b68c4 + languageName: node + linkType: hard + "latest-version@npm:^5.0.0, latest-version@npm:^5.1.0": version: 5.1.0 resolution: "latest-version@npm:5.1.0" @@ -14007,10 +14584,10 @@ fsevents@^1.2.7: languageName: node linkType: hard -"loader-runner@npm:^4.2.0": - version: 4.2.0 - resolution: "loader-runner@npm:4.2.0" - checksum: e8b103ae98d589d9f5444b51053cc8ec48d8d6d9c1d0f845fd6d25ada769c68f22c5031a58ba95faf9a561eb95607a38005ac37339e1e4e37105467193d2b290 +"loader-runner@npm:^2.4.0": + version: 2.4.0 + resolution: "loader-runner@npm:2.4.0" + checksum: 9173b602e82801c734d5f78fdbcb7f2de2dd8f68ef0afb9793bd2cc9eab37cd0bc99fda020f83204b5acdcf2ea23d062c49767778c6c1108f6c90face5dde225 languageName: node linkType: hard @@ -14025,7 +14602,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"loader-utils@npm:^1.2.3, loader-utils@npm:^1.4.0": +"loader-utils@npm:^1.1.0, loader-utils@npm:^1.2.3, loader-utils@npm:^1.4.0": version: 1.4.0 resolution: "loader-utils@npm:1.4.0" dependencies: @@ -14065,15 +14642,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 4c379638152e0e5fda9a8cc07005702f81fcb9899db0f66d691ac1e64193dea670af14e96c50f14d82d45959daa4c400cb712c158cffe22ae265bfc1b1e3a221 - languageName: node - linkType: hard - "lockfile@npm:^1.0.4": version: 1.0.4 resolution: "lockfile@npm:1.0.4" @@ -14305,7 +14873,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"lodash@npm:^4.15.0, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0": +"lodash@npm:^4.15.0, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.17.5, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468 @@ -14395,6 +14963,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: ^3.0.2 + checksum: ffd9a280fa3400e731265db502270c2a65432f3fbfac23d480c72f675ec16dbbeddd57d4baf7aca70ab7af49949fad1bcaaf5a5e6e1cfed7316de71bb5dddf1c + languageName: node + linkType: hard + "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" @@ -14526,6 +15103,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: ^3.0.0 + inherits: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: ca0b260ea29746f1017ad16bc0e164299ae453d2d6a24d635cc6ec03e280f350b09faa4899bfed9387c81457ca55981e9a684336d89faa94b1d2a01903fae2ec + languageName: node + linkType: hard + "mdast-add-list-metadata@npm:1.0.1": version: 1.0.1 resolution: "mdast-add-list-metadata@npm:1.0.1" @@ -14627,6 +15215,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"memory-fs@npm:^0.5.0": + version: 0.5.0 + resolution: "memory-fs@npm:0.5.0" + dependencies: + errno: ^0.1.3 + readable-stream: ^2.0.1 + checksum: deb916f33ca09215d6ad58db30854bbf36aaca86e018dcbbbdb7c6160661e8c0b9acdcc23c9931fc6dcd62f3dd5318a7ecab519e3688f7787d0833e5f48c0d0a + languageName: node + linkType: hard + "memory-pager@npm:^1.0.2": version: 1.5.0 resolution: "memory-pager@npm:1.5.0" @@ -15124,6 +15722,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: ^4.0.0 + brorand: ^1.0.1 + bin: + miller-rabin: bin/miller-rabin + checksum: e9f78a2c83ceca816cf61853121ad8d1e00f11731b9bf1a1b9a3b9e663ab4722a7553dd9ca644501738d548f7ead5540da1b746143ae0008ba1d7d81cf43f8c4 + languageName: node + linkType: hard + "mime-db@npm:1.47.0, mime-db@npm:>= 1.43.0 < 2": version: 1.47.0 resolution: "mime-db@npm:1.47.0" @@ -15215,26 +15825,34 @@ fsevents@^1.2.7: languageName: node linkType: hard -"mini-css-extract-plugin@npm:^1.4.0": - version: 1.6.0 - resolution: "mini-css-extract-plugin@npm:1.6.0" +"mini-css-extract-plugin@npm:^0.8.0": + version: 0.8.2 + resolution: "mini-css-extract-plugin@npm:0.8.2" dependencies: - loader-utils: ^2.0.0 - schema-utils: ^3.0.0 + loader-utils: ^1.1.0 + normalize-url: 1.9.1 + schema-utils: ^1.0.0 webpack-sources: ^1.1.0 peerDependencies: - webpack: ^4.4.0 || ^5.0.0 - checksum: c9c50bed4ffa0ce0099c26184ed6f5b8675be068252fb2a68b790d8afa58c896e0c36aae0e0601e5036fdc04ecad761e884ce4d27a75c8bd3fb69ff7b4c52f91 + webpack: ^4.4.0 + checksum: 99515b64f9d678c4b24efc339de3d060a0385337066e221e8d11da1df2e0d0381a628e26a1871139a5d9c3e51d83c9da77764065b791fda560fb9e3190121fdf languageName: node linkType: hard -"minimalistic-assert@npm:^1.0.0": +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": version: 1.0.1 resolution: "minimalistic-assert@npm:1.0.1" checksum: 28f1de3cf9edfb82613428a58eb3dd38ec6d33ab761b98abf2d130c81104ea86be540c7e5eb8284f13e0a065ead8b17501de09419b9a98987ed27268ad538dba languageName: node linkType: hard +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 736067bddd0e5036a1a4943abe7b63eb1dd0115ad87588420310d26a3d56fc4cd4694b7077fa102956c88d3922dbf7cbc5b7ffe749f27441d13c3e1b1133ab40 + languageName: node + linkType: hard + "minimatch@npm:3.0.4, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4": version: 3.0.4 resolution: "minimatch@npm:3.0.4" @@ -15361,6 +15979,24 @@ fsevents@^1.2.7: languageName: node linkType: hard +"mississippi@npm:^3.0.0": + version: 3.0.0 + resolution: "mississippi@npm:3.0.0" + dependencies: + concat-stream: ^1.5.0 + duplexify: ^3.4.2 + end-of-stream: ^1.1.0 + flush-write-stream: ^1.0.0 + from2: ^2.1.0 + parallel-transform: ^1.1.0 + pump: ^3.0.0 + pumpify: ^1.3.3 + stream-each: ^1.1.0 + through2: ^2.0.0 + checksum: 6d30a5ba65e27cdd453148abfeadf9f4a64a156a0dd17640876bf4f75d4ee3d5fbd7658f11cc6322b56c81628585de96dbb2b177476012470df6d05323b46e29 + languageName: node + linkType: hard + "mixin-deep@npm:^1.2.0": version: 1.3.2 resolution: "mixin-deep@npm:1.3.2" @@ -15382,7 +16018,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"mkdirp@npm:^0.5.0, mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": +"mkdirp@npm:^0.5.0, mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": version: 0.5.5 resolution: "mkdirp@npm:0.5.5" dependencies: @@ -15513,6 +16149,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"move-concurrently@npm:^1.0.1": + version: 1.0.1 + resolution: "move-concurrently@npm:1.0.1" + dependencies: + aproba: ^1.1.1 + copy-concurrently: ^1.0.0 + fs-write-stream-atomic: ^1.0.8 + mkdirp: ^0.5.1 + rimraf: ^2.5.4 + run-queue: ^1.0.3 + checksum: 0761308ddbaf75291fff3ca26c0297a781d545e76aa34b7c985780d251f75e422433947dc9091d464ca7febef86fe6ecaa60746eb7076adac4a0c620b83540f5 + languageName: node + linkType: hard + "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -15641,20 +16291,13 @@ fsevents@^1.2.7: languageName: node linkType: hard -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": +"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.1": version: 2.6.2 resolution: "neo-async@npm:2.6.2" checksum: 34a8f5309135be258a97082af810ea43700a3e0121e7b1ea31b3e22e2663d7c0d502cd949abb6d1ab8c11abfd04500ee61721ec5408b2d4bef8105241fd8a4c2 languageName: node linkType: hard -"netlify-plugin-cache@npm:^1.0.3": - version: 1.0.3 - resolution: "netlify-plugin-cache@npm:1.0.3" - checksum: cf4ca2f25130a0126c547a14fa0039d5db89c1fb8ffee86eda50ff094c87bd8f33903c2eec0e728faa7187b357e0084b3c95b2fa89c1727e3c198a68382134e7 - languageName: node - linkType: hard - "nice-try@npm:^1.0.4": version: 1.0.5 resolution: "nice-try@npm:1.0.5" @@ -15779,6 +16422,37 @@ fsevents@^1.2.7: languageName: node linkType: hard +"node-libs-browser@npm:^2.2.1": + version: 2.2.1 + resolution: "node-libs-browser@npm:2.2.1" + 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.1 + 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: ^1.0.1 + checksum: 8da918a5ef93c0bfed8df90bb9d6b12ae08836963aa0b22927eedf6d3eab6e60feb9eae2d394f1eb6d5f0fdd985fb2858b698a3347606b90dfdd5047b5ea6042 + languageName: node + linkType: hard + "node-modules-regexp@npm:^1.0.0": version: 1.0.0 resolution: "node-modules-regexp@npm:1.0.0" @@ -15884,14 +16558,26 @@ fsevents@^1.2.7: languageName: node linkType: hard -"normalize-url@npm:^3.3.0": +"normalize-url@npm:1.9.1": + version: 1.9.1 + resolution: "normalize-url@npm:1.9.1" + dependencies: + object-assign: ^4.0.1 + prepend-http: ^1.0.0 + query-string: ^4.1.0 + sort-keys: ^1.0.0 + checksum: f4ebdd85d720c5a3547407153dfee95220ae452a4f3cd7e5a97fe3e12eeb09d3695930b8869df91728dbd4a50dc5a440d2c3dba03b0c1388b10a5850c791ea4d + languageName: node + linkType: hard + +"normalize-url@npm:^3.0.0, normalize-url@npm:^3.3.0": version: 3.3.0 resolution: "normalize-url@npm:3.3.0" checksum: 5704115f74833cf157a5f104477d9c8e8b4e2c00275624159bcd3c65dbdac93db4f6f008f91364d0f20f93655bd2b643afa9e8875c67b4ab8673cd1dd0fb7a5c languageName: node linkType: hard -"normalize-url@npm:^4.1.0, normalize-url@npm:^4.5.0": +"normalize-url@npm:^4.1.0": version: 4.5.0 resolution: "normalize-url@npm:4.5.0" checksum: 09794941dbe5c7b91caf6f3cd1ae167c27f6d09793e4a03601a68b62de7e8ee9e5de21a246130cdbab98b01481de292f9556d492444a527648f9cf1220e4b0df @@ -16053,12 +16739,15 @@ fsevents@^1.2.7: languageName: node linkType: hard -"nth-check@npm:^2.0.0": - version: 2.0.0 - resolution: "nth-check@npm:2.0.0" +"null-loader@npm:^4.0.0": + version: 4.0.1 + resolution: "null-loader@npm:4.0.1" dependencies: - boolbase: ^1.0.0 - checksum: 380a6dcf32910c783f30c62d6ae02194e8ac860faf99ff46b2248942477304351755a7ee2fa26ce289b6d078350fa14703da5cf4b3c65275032b43008a275064 + loader-utils: ^2.0.0 + schema-utils: ^3.0.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: c6c2da69b35b4390f02f1b3ccbab02013df01a366d6a9f2d92ff465d7ec40f1714bf8f21dd7981410fc68579aca4703049a5089772e7fffe587f8dca4cc50229 languageName: node linkType: hard @@ -16069,6 +16758,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"num2fraction@npm:^1.2.2": + version: 1.2.2 + resolution: "num2fraction@npm:1.2.2" + checksum: c9bb3e7c6d358cc8a6f354e0f5b56235845255465622f4d2eafec6bf5209dd3500133ab2888fbb444c997e29702e85b79ceef026ccc1c06a2971c2c1a93cee90 + languageName: node + linkType: hard + "number-is-nan@npm:^1.0.0": version: 1.0.1 resolution: "number-is-nan@npm:1.0.1" @@ -16303,6 +16999,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"optimize-css-assets-webpack-plugin@npm:^5.0.4": + version: 5.0.6 + resolution: "optimize-css-assets-webpack-plugin@npm:5.0.6" + dependencies: + cssnano: ^4.1.10 + last-call-webpack-plugin: ^3.0.0 + peerDependencies: + webpack: ^4.0.0 + checksum: 781973cb00a9e5a024deaa8f5aabd70fb421f5af2f084fcc475a44d05f631b3b4363a62d6885cce2c903295787c0252ee275ba73a5ee6d80eedce46a37b622a6 + languageName: node + linkType: hard + "optional-require@npm:^1.0.2": version: 1.0.3 resolution: "optional-require@npm:1.0.3" @@ -16368,6 +17076,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"os-browserify@npm:^0.3.0": + version: 0.3.0 + resolution: "os-browserify@npm:0.3.0" + checksum: f547c038810977579e11f35ff9aec4c6ac557369af7f4946d054da9e0dc180ffc1b5ef37c8c09b6004487c88c4a500c49ba9a109fbeab7dcb890fe1346b5f9b7 + languageName: node + linkType: hard + "os-homedir@npm:^1.0.0": version: 1.0.2 resolution: "os-homedir@npm:1.0.2" @@ -16431,7 +17146,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": +"p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -16467,15 +17182,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: ^3.0.2 - checksum: a233d775c870e00c734adabd29f66f93824df076683c0d5a2dc16e5285b02d80c1bf3bab43b9881e4a5b16b37bb86f1922aebb094674703d30a4973041d5c0f6 - languageName: node - linkType: hard - "p-map-series@npm:^2.1.0": version: 2.1.0 resolution: "p-map-series@npm:2.1.0" @@ -16605,6 +17311,24 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pako@npm:~1.0.5": + version: 1.0.11 + resolution: "pako@npm:1.0.11" + checksum: 71c60150b68220ec52a404f3c39a4ed38f750e42452b88fe0eb2e6b5c98e91f73f706444359b097aca1e6db83ef8fef50b5a9ec100e30a606cda6da8d45e5439 + languageName: node + linkType: hard + +"parallel-transform@npm:^1.1.0": + version: 1.2.0 + resolution: "parallel-transform@npm:1.2.0" + dependencies: + cyclist: ^1.0.1 + inherits: ^2.0.3 + readable-stream: ^2.1.5 + checksum: 65170af2e76b0d9305a1b8143e7aaa7fd0f726a038315fab7b8a92773a446d35623bc56bbac0ee4e6feb6757243c30408e1cd93da499fa44008fa7f9ded0c6c8 + languageName: node + linkType: hard + "param-case@npm:^3.0.3": version: 3.0.4 resolution: "param-case@npm:3.0.4" @@ -16624,6 +17348,19 @@ fsevents@^1.2.7: languageName: node linkType: hard +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.5": + version: 5.1.6 + resolution: "parse-asn1@npm:5.1.6" + dependencies: + asn1.js: ^5.2.0 + browserify-aes: ^1.0.0 + evp_bytestokey: ^1.0.0 + pbkdf2: ^3.0.3 + safe-buffer: ^5.1.1 + checksum: aa3f44d62837eedab98601c04c872a48c57be039e3e37ffafd53fd1a0415540f05b8800d3f70cea35c65cfdee0656d98ea1b4a77a96903a480afda8f91e4a4c3 + languageName: node + linkType: hard + "parse-entities@npm:^1.1.0": version: 1.2.2 resolution: "parse-entities@npm:1.2.2" @@ -16768,6 +17505,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"path-browserify@npm:0.0.1": + version: 0.0.1 + resolution: "path-browserify@npm:0.0.1" + checksum: b7be4bcc030b6cca2f2093d776af57d508a781afb7a72bb2214e93559a57d9265c23f5ded45ae74f25ffe1dfaed98281685f86e1210cd3b68b85a3a217c45922 + languageName: node + linkType: hard + "path-dirname@npm:^1.0.0": version: 1.0.2 resolution: "path-dirname@npm:1.0.2" @@ -16892,6 +17636,19 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pbkdf2@npm:^3.0.3": + version: 3.1.2 + resolution: "pbkdf2@npm:3.1.2" + dependencies: + create-hash: ^1.1.2 + create-hmac: ^1.1.4 + ripemd160: ^2.0.1 + safe-buffer: ^5.0.1 + sha.js: ^2.4.8 + checksum: 12ac46c71db0613f5e45824d65598a31b4fb09bb860cde8024919778be7971468f2c6b010250d5bc9907a247f85580b560fd5b78b09263d207e8bdf3963c83c7 + languageName: node + linkType: hard + "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" @@ -17029,6 +17786,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pnp-webpack-plugin@npm:^1.6.4": + version: 1.6.4 + resolution: "pnp-webpack-plugin@npm:1.6.4" + dependencies: + ts-pnp: ^1.1.6 + checksum: 39a484182f8fc08cb1420d4a5ccf16457c6498a4546bfbad9e00df7238ba7d98796e9aa6f82a4e803a627860409ffed491a55c5a1384e09bed60cefeb618586d + languageName: node + linkType: hard + "portfinder@npm:^1.0.26": version: 1.0.28 resolution: "portfinder@npm:1.0.28" @@ -17047,191 +17813,391 @@ fsevents@^1.2.7: languageName: node linkType: hard -"postcss-calc@npm:^8.0.0": - version: 8.0.0 - resolution: "postcss-calc@npm:8.0.0" +"postcss-attribute-case-insensitive@npm:^4.0.1": + version: 4.0.2 + resolution: "postcss-attribute-case-insensitive@npm:4.0.2" + dependencies: + postcss: ^7.0.2 + postcss-selector-parser: ^6.0.2 + checksum: 0de786320f06795664431b32ed65bb29aa895140b75504e95d5e94ff89b713fba365bf319ac82a02958c70b923a778a64e4f07d5444a953fc0f1ced544fbcae5 + languageName: node + linkType: hard + +"postcss-calc@npm:^7.0.1": + version: 7.0.5 + resolution: "postcss-calc@npm:7.0.5" dependencies: + postcss: ^7.0.27 postcss-selector-parser: ^6.0.2 postcss-value-parser: ^4.0.2 - peerDependencies: - postcss: ^8.2.2 - checksum: 675bcd4c2e8df1c85a31e65e03284d6260effada92f9cf783de4bb4b127fe85b2cd3a8453082f28d1a2421715a466a06f3c7550ee2dd96363acc68ac7d50191f + checksum: 850aed0201c6a7aaf5c1b4161f3d90e607ae3513c2720de038b85749f7913ac3e31c75f42314815d75641883138d2ed4dbd399da0563acc50f008c63fe068e06 languageName: node linkType: hard -"postcss-colormin@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-colormin@npm:5.0.0" +"postcss-color-functional-notation@npm:^2.0.1": + version: 2.0.1 + resolution: "postcss-color-functional-notation@npm:2.0.1" dependencies: - browserslist: ^4.16.0 - color: ^3.1.1 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 826db9952f40a31713999d87b0d19ab0fe4ce1d9d2d07f6e1478b232540be800e0f4ca41acd2488d799b24a4a854223347f331461543e5201b598db9a12edc7c + postcss: ^7.0.2 + postcss-values-parser: ^2.0.0 + checksum: 8f83bde47bc0d7d1b97ed1c8b93892698b26735b8dcd9bcac8322e362d544af39c85eea28a7d3a37ce16daaec793ae2b6c01da41541675d67fd83bded691b6bd languageName: node linkType: hard -"postcss-convert-values@npm:^5.0.0": +"postcss-color-gray@npm:^5.0.0": version: 5.0.0 - resolution: "postcss-convert-values@npm:5.0.0" + resolution: "postcss-color-gray@npm:5.0.0" dependencies: - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 0f67e0750a4a589c28d19f753703ef5e7ce46447ee5388a86106a8be1987e0f8358a24abe7841109f94576a1ee30c62adc890ba07cdfd4a3a57af76d3aa82054 + "@csstools/convert-colors": ^1.4.0 + postcss: ^7.0.5 + postcss-values-parser: ^2.0.0 + checksum: 99c885049caf46b0bf2fe46d4c43c3c5ddf137c3383adf0fe355e17ffee5321c519e962fdbf2b9d0276eb33109864375baca28032a08ce8dad82db629954a7e8 languageName: node linkType: hard -"postcss-discard-comments@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-discard-comments@npm:5.0.0" - peerDependencies: - postcss: ^8.2.1 - checksum: 1019634be7f109ed129864c67c389c60a00e82e99d2823b57dcf740e0c2dce1b1aa4f400bc58ae06072c62bff7fa216bde6f9bed9e9ead9c84f38b6c4684a3b8 +"postcss-color-hex-alpha@npm:^5.0.3": + version: 5.0.3 + resolution: "postcss-color-hex-alpha@npm:5.0.3" + dependencies: + postcss: ^7.0.14 + postcss-values-parser: ^2.0.1 + checksum: 99e8a9457ce0aa090a4d7e5227bae484a845ff706875d9acbf0304a8f4d669a440d2edead50cd9096df516eae7fa603f4b61e35d33989f2b3ced4f2e8bea6113 languageName: node linkType: hard -"postcss-discard-duplicates@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-discard-duplicates@npm:5.0.0" - peerDependencies: - postcss: ^8.2.1 - checksum: 6a01ed706fa855b80e60b7e0f86c6800c37a4dbaf5eff6b9663b13faf8b7df6939b1f9925e6bf05d70e6554bd968065a6e0fb71e42a2b4b0ad8e781d8cdd7d68 +"postcss-color-mod-function@npm:^3.0.3": + version: 3.0.3 + resolution: "postcss-color-mod-function@npm:3.0.3" + dependencies: + "@csstools/convert-colors": ^1.4.0 + postcss: ^7.0.2 + postcss-values-parser: ^2.0.0 + checksum: dd484df73c5623bd8cb27d9f465b858f7334ec739e3914fe000b823130c269af105caec81fc0b3280b377954b91ee6606769ebde78833bf9b0b786574baad75e languageName: node linkType: hard -"postcss-discard-empty@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-discard-empty@npm:5.0.0" - peerDependencies: - postcss: ^8.2.1 - checksum: 1dc4b74ff0d463b9ac0ef7d8583d7d75636b032b7137f63f8c26bbbeb9a5fc9d9274b107052cd1bcc2461c7084930a6172f61e5a7ac6353abd8e1dd0f489d3d9 +"postcss-color-rebeccapurple@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-color-rebeccapurple@npm:4.0.1" + dependencies: + postcss: ^7.0.2 + postcss-values-parser: ^2.0.0 + checksum: a6fcc16f2a89ecd5a8258a4d24122e49a58b63bb657fcfaef73c36bd27d766c28a36c895667901afcfaa283def229042306245fab11ea81e29d3d7016684e1a8 languageName: node linkType: hard -"postcss-discard-overridden@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-discard-overridden@npm:5.0.0" - peerDependencies: - postcss: ^8.2.1 - checksum: 4d8b1b9a60619c12866bbc94dc3eb40235637a7eec6e3f373dacac64a9a71a948b67ed14a2a8fb87b9dcbd6b6cb10eb5a47bcf312c32f4716c0888a52cc51b26 +"postcss-colormin@npm:^4.0.3": + version: 4.0.3 + resolution: "postcss-colormin@npm:4.0.3" + dependencies: + browserslist: ^4.0.0 + color: ^3.0.0 + has: ^1.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: c2632c38a64e2f76b41eb58d97193c77ab71a3d206e8453377019ed8f42c9e94be1b9df66b1e86d44e5af1e2892e7f0316c1d039c83519065eec3824aac78d17 + languageName: node + linkType: hard + +"postcss-convert-values@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-convert-values@npm:4.0.1" + dependencies: + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 8fc4a78787642d67faebbce5f80c3e1c2ec49ab57e52f6702079f6dd57caa2c7e1bf1472a8499e548b7c6b078bc6dab664580444d81ce723caf80f4b5240237a languageName: node linkType: hard -"postcss-discard-unused@npm:^5.0.0": +"postcss-custom-media@npm:^7.0.8": + version: 7.0.8 + resolution: "postcss-custom-media@npm:7.0.8" + dependencies: + postcss: ^7.0.14 + checksum: f0ac879d17f61225f1e086854720a63a2950d59f115ac66ed440873b69cc7b20f3941bf4667954bd8aa311ec959a98b8044a69c4674364e9bb9452097357b606 + languageName: node + linkType: hard + +"postcss-custom-properties@npm:^8.0.11": + version: 8.0.11 + resolution: "postcss-custom-properties@npm:8.0.11" + dependencies: + postcss: ^7.0.17 + postcss-values-parser: ^2.0.1 + checksum: 2d3c11d4c9d29e80428e2a0f64dacb6f144e97c57a2175f6971588657f07726954414c493a60ba09043fe67be23cc2ebf3ef8b56d93d4d945a49ed9807d1366f + languageName: node + linkType: hard + +"postcss-custom-selectors@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-custom-selectors@npm:5.1.2" + dependencies: + postcss: ^7.0.2 + postcss-selector-parser: ^5.0.0-rc.3 + checksum: 7d0d5f7751e54b40726d51196ba5569d18488d25ef7b1837ec26d5f32909d3cb4850edd527d70d1a141b7d81aeeed87ca00037f01e318b43fde92e72bb9fa141 + languageName: node + linkType: hard + +"postcss-dir-pseudo-class@npm:^5.0.0": version: 5.0.0 - resolution: "postcss-discard-unused@npm:5.0.0" + resolution: "postcss-dir-pseudo-class@npm:5.0.0" dependencies: - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.2.1 - checksum: 5f7668308a95659294ca06400c83f7e2aa00861b74a8be342fb97d733831d48604e693b451e41b61b23ae0f0afb1cae605f4bd6185ad9638832e211ecb855b50 + postcss: ^7.0.2 + postcss-selector-parser: ^5.0.0-rc.3 + checksum: fc4f686058e7e973df5699d59e4532b8c124fbd6a4a1f9f40a92fa4d599b8212e336915f540b556278c696a0cc67d06cddfca0b5bdbd527e761c88c9d97f68b4 languageName: node linkType: hard -"postcss-loader@npm:^5.2.0": - version: 5.3.0 - resolution: "postcss-loader@npm:5.3.0" +"postcss-discard-comments@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-discard-comments@npm:4.0.2" + dependencies: + postcss: ^7.0.0 + checksum: 7b357a3a4bbb2601ec0c659ed389de4334e185cfebbd991bed4c69d83905ec49b5a988d4b4ee1ea8db5b6f8b66b93f8590c16cf5c22f7efe5bde2ed1cad4ccce + languageName: node + linkType: hard + +"postcss-discard-duplicates@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-discard-duplicates@npm:4.0.2" + dependencies: + postcss: ^7.0.0 + checksum: 128342e2b913f0dd6f844519049dfb9a7fd82e0680e28d8e8111314af2137fe6b6d8af3503e775b8df56727d18a1dfc76cdb9944c615bf00cecacbde915e199f + languageName: node + linkType: hard + +"postcss-discard-empty@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-discard-empty@npm:4.0.1" + dependencies: + postcss: ^7.0.0 + checksum: f06a00331cef0ba05362060642b3661fff63a1a02803984ce071e3af71061ee40083953021ae0665e6c650193f25b9155dca8c94cfe78a4d1b667a5e2d3e738d + languageName: node + linkType: hard + +"postcss-discard-overridden@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-discard-overridden@npm:4.0.1" + dependencies: + postcss: ^7.0.0 + checksum: be24bca265926d22af134ed3ede7a2a27d65e32c5e5ebe3b83603e84599fc2b5587e3e0344c01e4e660f9f4072100ee6d1b56bacd0a6d428f2e0e0acd9bd4046 + languageName: node + linkType: hard + +"postcss-discard-unused@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-discard-unused@npm:4.0.1" + dependencies: + postcss: ^7.0.0 + postcss-selector-parser: ^3.0.0 + uniqs: ^2.0.0 + checksum: 1eb42d69f0f2a62546eee8699a94c302aa1c32fec5f2de0e813f3dceac57300b4dc66ee08d2b6564835ceb5e3e798b2001ea582334e5fb066a40df0961be4aa2 + languageName: node + linkType: hard + +"postcss-double-position-gradients@npm:^1.0.0": + version: 1.0.0 + resolution: "postcss-double-position-gradients@npm:1.0.0" + dependencies: + postcss: ^7.0.5 + postcss-values-parser: ^2.0.0 + checksum: 151194816535419a9f90f837bdc872ac5a3972e4d409b0c601fcd0fb069d4bdae51955a5b92f7192102c5b30d846f91d77e1182402df42de9ba5379dd228b6d9 + languageName: node + linkType: hard + +"postcss-env-function@npm:^2.0.2": + version: 2.0.2 + resolution: "postcss-env-function@npm:2.0.2" + dependencies: + postcss: ^7.0.2 + postcss-values-parser: ^2.0.0 + checksum: 1cba45f90af655de776ed51a3672995130e5c9c3eab59a8bfa062e4e8bedce03faf63900fd0da69f701a2ab4c4bcf61698535526bf8996ab16920a16c2186426 + languageName: node + linkType: hard + +"postcss-focus-visible@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-focus-visible@npm:4.0.0" + dependencies: + postcss: ^7.0.2 + checksum: df9f0b029cd4770b5f7e803e9cd098a36dc8e06415adc735eb87da07d459e1704ce972f7db4e2674e9b01e45add3dd0689a8628b6784c7a22833576025ca9b60 + languageName: node + linkType: hard + +"postcss-focus-within@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-focus-within@npm:3.0.0" + dependencies: + postcss: ^7.0.2 + checksum: 9339299c411a3707309f1eb91919564be2f698c96920b3d93ab81ad6737318a30f2b383780682c173647b76392c11eba446746973e98213379f1f6ce4f522c88 + languageName: node + linkType: hard + +"postcss-font-variant@npm:^4.0.0": + version: 4.0.1 + resolution: "postcss-font-variant@npm:4.0.1" + dependencies: + postcss: ^7.0.2 + checksum: b811d488ae357fa73756cbca72eb29235a81e767488cdb9b378271045a4146f828a465e255936dc45aea1b47760cbce5cbdea906b41033cb3b7c6c863d02c582 + languageName: node + linkType: hard + +"postcss-gap-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "postcss-gap-properties@npm:2.0.0" + dependencies: + postcss: ^7.0.2 + checksum: fa8be8b253cd479f5e3c050796f6250c27e7cce69965535c694ad6093f21adcf83e90bbb4b63c472628d42d1089d43bf9aeac8df4b4d29709f78d4b49dc29fb2 + languageName: node + linkType: hard + +"postcss-image-set-function@npm:^3.0.1": + version: 3.0.1 + resolution: "postcss-image-set-function@npm:3.0.1" + dependencies: + postcss: ^7.0.2 + postcss-values-parser: ^2.0.0 + checksum: e5612a60755963cd8270c8d793fcc246ec02e2387d5e8faf8ee4e871b65aea3625ebf7d3382db826e8ed44b0922d3f53a9a3b317fe4187e837ae045d6721eb49 + languageName: node + linkType: hard + +"postcss-initial@npm:^3.0.0": + version: 3.0.4 + resolution: "postcss-initial@npm:3.0.4" + dependencies: + postcss: ^7.0.2 + checksum: 84abb31b41ca2934082cc73a6bacafa375af93082ae076cad5fb9a6d6709e6ff6a815f2647e36c76f398358afbc95b723ec70cbc0a18af3b5d5ccfaf3d4554d0 + languageName: node + linkType: hard + +"postcss-lab-function@npm:^2.0.1": + version: 2.0.1 + resolution: "postcss-lab-function@npm:2.0.1" + dependencies: + "@csstools/convert-colors": ^1.4.0 + postcss: ^7.0.2 + postcss-values-parser: ^2.0.0 + checksum: 034195cfd91b0f817ccbb1dc2ed6d7c75134ceacaebb270ee7f5a78e110bc753af9e3235a58614b32961f6e8781151206ee8703221b5d75b3e2ccdff7f261dea + languageName: node + linkType: hard + +"postcss-loader@npm:^4.1.0": + version: 4.3.0 + resolution: "postcss-loader@npm:4.3.0" dependencies: cosmiconfig: ^7.0.0 klona: ^2.0.4 + loader-utils: ^2.0.0 + schema-utils: ^3.0.0 semver: ^7.3.4 peerDependencies: postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - checksum: fd7a1a673b0e8f238392b3d449f2727767522febb2f60bfc9bb5cd4e373b07ba8df621f4e2fad92bf085765dcdea0f049497ae799ce1c9f1a592820275cc7e65 + webpack: ^4.0.0 || ^5.0.0 + checksum: 95cfab2b63e7f981c2365989316a5f155525c07770381971d258a56b4ddbad23127fcaea5debd32231f45a87d5a88943a79c65f66733d8506ec8f11421ddee59 languageName: node linkType: hard -"postcss-merge-idents@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-merge-idents@npm:5.0.0" +"postcss-logical@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-logical@npm:3.0.0" dependencies: - cssnano-utils: ^2.0.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 4bd6ac4818ee44c125e88c37e9fbef051d670286960e2b9ea1257e92324eecf1adf29ac8e39ce56b15e569c14f56f5b6b9168c9d101b9bcae84a85a71c2f236b + postcss: ^7.0.2 + checksum: fdd9f0519bf3a2cc283991b5f31b45f44eac4803af605f4dac4ccdb7379a4362a4f89b1c3303ad511c68d08ca005e32ffc58768aadd8a1f925dfda78c774a07d languageName: node linkType: hard -"postcss-merge-longhand@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-merge-longhand@npm:5.0.1" +"postcss-media-minmax@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-media-minmax@npm:4.0.0" dependencies: - css-color-names: ^1.0.1 - postcss-value-parser: ^4.1.0 - stylehacks: ^5.0.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 98aea255c33a27e1c1c2d09ca93d1c032ce639e620283470ec8180368ef84d22a7ff647947eb9b1f3dbdd2d095e86272bbe2a16c88bc09c9ed68a9f33c83d6b8 + postcss: ^7.0.2 + checksum: 9b4953f4a5ec61c2d451b06a7e475515b128955404750270fdfd4d84ab3c2cf9a6573e33617d0036278855e04782d09623d2391f056b18dc87cc71f2df62c4b7 languageName: node linkType: hard -"postcss-merge-rules@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-merge-rules@npm:5.0.0" +"postcss-merge-idents@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-merge-idents@npm:4.0.1" + dependencies: + cssnano-util-same-parent: ^4.0.0 + has: ^1.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 101e56785c87aee30a2772a02d651b41284178ee564f79b725c14f2ee094b7833bfdb7fdf405aa7807101506599a78fd8156b4c5f3ccf01646b3edadb1edf57c + languageName: node + linkType: hard + +"postcss-merge-longhand@npm:^4.0.11": + version: 4.0.11 + resolution: "postcss-merge-longhand@npm:4.0.11" + dependencies: + css-color-names: 0.0.4 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + stylehacks: ^4.0.0 + checksum: f6ae3d8f2b07d30de78b17d7f58828571bf161d1a1d99d9371a59e1f0b18f13b7b684b34bf2b4c0d5c28e2d0eb0901a57b8c69ad558660aa3c81b9af16702cf6 + languageName: node + linkType: hard + +"postcss-merge-rules@npm:^4.0.3": + version: 4.0.3 + resolution: "postcss-merge-rules@npm:4.0.3" dependencies: - browserslist: ^4.16.0 + browserslist: ^4.0.0 caniuse-api: ^3.0.0 - cssnano-utils: ^2.0.0 - postcss-selector-parser: ^6.0.4 - vendors: ^1.0.3 - peerDependencies: - postcss: ^8.2.1 - checksum: fbca9f7c9ac9072bafdfb211b05509900bf54f63739fbd5104c407440090c4af5fd5a3d553bedcecbfa3127922180c3fcf8aab8143db3a87764f606956ba5b02 + cssnano-util-same-parent: ^4.0.0 + postcss: ^7.0.0 + postcss-selector-parser: ^3.0.0 + vendors: ^1.0.0 + checksum: 18907817119fa00c5b016631c5e623d59061a0ae2a5e54069b19af0c09cde66ed11db8f585f33be0231f55a925beb13edc17b5336c3421050ce8e7d5708b27b9 languageName: node linkType: hard -"postcss-minify-font-values@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-minify-font-values@npm:5.0.0" +"postcss-minify-font-values@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-minify-font-values@npm:4.0.2" dependencies: - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 3e52cf797d44a17e304345312708cab2357c149cf268249a8305c6c32420776cb7fce32001ec67996d45bf03b9eb13e801dc5af2791b366dfd5ee6f5461e062f + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 9fc541821f5235f4ea38fdd2671bd1d624894375e044e3f4de3bb161217a4f1501da72f4485e130b8b750c0c6d32ba36cd82ec3d252a07943006b62308938a3c languageName: node linkType: hard -"postcss-minify-gradients@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-minify-gradients@npm:5.0.0" +"postcss-minify-gradients@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-minify-gradients@npm:4.0.2" dependencies: - cssnano-utils: ^2.0.0 - is-color-stop: ^1.1.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: f15e226d185cd2f40bd4bbef48362e84f4c04867e385348541cbf6708acc90d3ab1ec4aa31f90ddc8a718ec78fe67d9c358dca3bb1ad5464582a559da295c47f + cssnano-util-get-arguments: ^4.0.0 + is-color-stop: ^1.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 4c54f4fa49c8b7568b92c2e29bb15602e384837f95f278efb1792f3d650a2b7ff0a2115f62d90b18bc77b94f0bab9a9035ce1fb73953d6046e14e754ae8680af languageName: node linkType: hard -"postcss-minify-params@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-minify-params@npm:5.0.0" +"postcss-minify-params@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-minify-params@npm:4.0.2" dependencies: - alphanum-sort: ^1.0.2 - browserslist: ^4.16.0 - cssnano-utils: ^2.0.0 - postcss-value-parser: ^4.1.0 + alphanum-sort: ^1.0.0 + browserslist: ^4.0.0 + cssnano-util-get-arguments: ^4.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 uniqs: ^2.0.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 1a5356b703fc6ea299c6d213213e2315a5a2fa712f782b02bb331af4a26d1116a3b628be866b9d512446c19b65b2093aa254ebe4457292edd94271d3f65cdafb + checksum: dbcb82b7b16fece458fa677d1a9da5f5b4984a1880ef51a50f554d31e1825c52e33b08357fef3a4077faa06e78cdc765dc8757482ca18703e72e2826694d4937 languageName: node linkType: hard -"postcss-minify-selectors@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-minify-selectors@npm:5.0.0" +"postcss-minify-selectors@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-minify-selectors@npm:4.0.2" dependencies: - alphanum-sort: ^1.0.2 - postcss-selector-parser: ^3.1.2 - peerDependencies: - postcss: ^8.2.1 - checksum: 218caf138945b594d880df9fd0978d2ce7dd3ef5cab0e2fa7b7b27eb1ba42e9d5dda9067a0972cf2c7a63293e16b7e874c880cfd15bfa8f5334437893da4524e + alphanum-sort: ^1.0.0 + has: ^1.0.0 + postcss: ^7.0.0 + postcss-selector-parser: ^3.0.0 + checksum: 8fde92b5561ceb5dfbede1000457a022b231634daccfec0afeda799aedf21cb0ab52e38dc4c16110aed557c4cbc91570f71c3d5f58de419fd662ccb0656cd43d languageName: node linkType: hard @@ -17279,157 +18245,272 @@ fsevents@^1.2.7: languageName: node linkType: hard -"postcss-normalize-charset@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-charset@npm:5.0.0" - peerDependencies: - postcss: ^8.2.1 - checksum: 1f7b874a51df106dd4d2001f28fa6429b6b416778413b2e1f5112ca0f3aa8a1b3417309981fb0c2cb3daf14973cca8d16cd134cbabda92a1f9b08f9a65c06a2a +"postcss-nesting@npm:^7.0.0": + version: 7.0.1 + resolution: "postcss-nesting@npm:7.0.1" + dependencies: + postcss: ^7.0.2 + checksum: ffc3c12f831b83f3276be86d6cf4d7e897146cbd7d40c01765ff8b25bcc238e9503741a63acd157e8a54df588f8a5a6d46aa6c2c27ab242985503b4d2208ddab languageName: node linkType: hard -"postcss-normalize-display-values@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-display-values@npm:5.0.0" +"postcss-normalize-charset@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-normalize-charset@npm:4.0.1" dependencies: - cssnano-utils: ^2.0.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 512972d1b45ada6657ecfbb42ddb3d8a48b0c1e9ccecdd64b6f317102306caea0409b628c677687e7f2cc63cc07c62c639b01364fbac1148ed6d85b5603f52b0 + postcss: ^7.0.0 + checksum: 4e40b321c45c1d8428ac9e6d7bc63ca92be5d4f65747e9b2d34e8d59bcc42a6b1a6fa9f0781e45f29c8fa0221299a61dc8b2b2a7314653e9841c6512d7820e79 languageName: node linkType: hard -"postcss-normalize-positions@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-positions@npm:5.0.0" +"postcss-normalize-display-values@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-normalize-display-values@npm:4.0.2" dependencies: - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 9c43c7a23b5bea5d79543a7ec4277025d68b45c90279fea5c612fd1be29e5d89714332b71a56b588d1b4246767451b6eac5f247f9c7a94c9f806958889df2100 + cssnano-util-get-match: ^4.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 4bd5952f1c0a5cf2a731a84b1ce218f6d9df7d2304233449bb82aa7a54c5a150cbdcb4160297206b017dce03b170e7e1a5c85a75a470b878c85b3eeabf652626 languageName: node linkType: hard -"postcss-normalize-repeat-style@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-repeat-style@npm:5.0.0" +"postcss-normalize-positions@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-normalize-positions@npm:4.0.2" dependencies: - cssnano-utils: ^2.0.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 8f9eb099a269793269fac90f151d15efc3449f96164439ede8dcfdd3cf7a54fa7fc118529c8917685d27730df6746a5688932e30ce815928ca082931d669b3c5 + cssnano-util-get-arguments: ^4.0.0 + has: ^1.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 9d7d79703adeede66302169559603ef314b02acada5f9ff99748d54d6b91386ca0d39ffc0d13c203e8b09fe106ee55504aa5b693d9928766ba2487dd67e0c48d languageName: node linkType: hard -"postcss-normalize-string@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-string@npm:5.0.0" +"postcss-normalize-repeat-style@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-normalize-repeat-style@npm:4.0.2" dependencies: - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: e552202d3069aada547cff754d6372ee7e9348d79c96ae16520f55edad24e0334420cd81b76bd9d93a03aab120129087c60e2962ff1024361e67c3576b76c399 + cssnano-util-get-arguments: ^4.0.0 + cssnano-util-get-match: ^4.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: dcb89339fd8e2411e0f14dec0b22976459b1ad8ced45d5e0a7cc9f8b4ce2a0562dc92f850192c089387541bc931d9cc7cac105cc85f6e5918b80c27669e3f68d languageName: node linkType: hard -"postcss-normalize-timing-functions@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-timing-functions@npm:5.0.0" +"postcss-normalize-string@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-normalize-string@npm:4.0.2" dependencies: - cssnano-utils: ^2.0.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: a865df52d78d136981813846ff4a420cb1002c3464b3fe492e484cb7fae405655bede98d6ed84c90bba85b84cfe81162b9a3f9a26e98402957a4c320b7e3300b + has: ^1.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 91116aa9c6c85b3b2ba09f85e31c1e23650e4204ce8936dfd3b46585d7c69e19b6359aa87415ad8b6041a87b7b218cd2c732e5a7b7b5be754e95a41ad6439696 languageName: node linkType: hard -"postcss-normalize-unicode@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-unicode@npm:5.0.0" +"postcss-normalize-timing-functions@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-normalize-timing-functions@npm:4.0.2" dependencies: - browserslist: ^4.16.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: d17e84bcbe09442f1210c72f0b2fcc25f1b0ce3cc42ef9ba59fecff81eb9835c04812d091816924407eae3c2c7076976946f6aa1ef5c701ff7ce558338c02dee + cssnano-util-get-match: ^4.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 92bca529aacd9cc0189cf809a2de77d3f4d035ceea6c63365cb6247516ab6cc6525b826a1288c8d77ed1ed21f2f24eb052dd570fb38e95f89e95d2c0eefa82b7 languageName: node linkType: hard -"postcss-normalize-url@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-url@npm:5.0.0" +"postcss-normalize-unicode@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-normalize-unicode@npm:4.0.1" dependencies: - is-absolute-url: ^3.0.3 - normalize-url: ^4.5.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 9ce359dc15c0da91ab05c988ea6bd98db0ff64d710109d45ab90e362e34b19d0c2d2985288b759b069fdba5eb938a9e63ae7c3afe7c10175549decd002c4dc00 + browserslist: ^4.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 84714ba7c1d0d304d7227ddf53f754b3dde4f6f00d7d4456d925e504e986c1210786a1a4b59e1d127b4a8d1786a9def716f13868b5a622d078f7950404c69392 languageName: node linkType: hard -"postcss-normalize-whitespace@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-normalize-whitespace@npm:5.0.0" +"postcss-normalize-url@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-normalize-url@npm:4.0.1" dependencies: - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 392055cf5e59dfd8102a9e9e0fc6f5dd45009c27e7f6d1b165dd662580285feaf4ae026d0bc3341767776b8c92d33b4669dce29c00d850ae60ee1f5f930459c7 + is-absolute-url: ^2.0.0 + normalize-url: ^3.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 76d75e27e95a563a6f698c83bff4254d7bae916f48ff1b28b4750dc7f07b4fd67699fb3737bc0c9b077ed5ed676a19993597d4208c20d773fcbfa48b39cd9066 languageName: node linkType: hard -"postcss-ordered-values@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-ordered-values@npm:5.0.0" +"postcss-normalize-whitespace@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-normalize-whitespace@npm:4.0.2" dependencies: - cssnano-utils: ^2.0.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: b58bdc6498cdc9751f86789926e90f4a7a25cb7356513a4b7456e0cd187f0ce037d12fa3e4c3df95f77fe9f83d9c8553d1ac86824e99d45c8f28d474d52b1972 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 7093ca8313659807290f6b039e9064787e777002cf7c84f896667c2c9cf6d349c32b809153dcf5475145ae6a6c2d198a769681ec16321ca227db4b682a5f5344 languageName: node linkType: hard -"postcss-reduce-idents@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-reduce-idents@npm:5.0.0" +"postcss-ordered-values@npm:^4.1.2": + version: 4.1.2 + resolution: "postcss-ordered-values@npm:4.1.2" dependencies: - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: fe83e9d38086cb222c23a48b26d736dc9bc468056e40fcf951216cf342fec062afc0bd8008f1b0e1ada154ddfafd5403d3ef4a0c93c7a588627b3504f0d0f307 + cssnano-util-get-arguments: ^4.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 6f394641453559d51aecbd61301293b9a274cb5774c47de7488d559597354924c7b11ea66ec009b960d80f0945fc92fde33c3380463b039e8d00b8a0e57037ab languageName: node linkType: hard -"postcss-reduce-initial@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-reduce-initial@npm:5.0.0" +"postcss-overflow-shorthand@npm:^2.0.0": + version: 2.0.0 + resolution: "postcss-overflow-shorthand@npm:2.0.0" dependencies: - browserslist: ^4.16.0 + postcss: ^7.0.2 + checksum: 4e47823ea03539ad6aefed9ccd5e6e47d364310af7ac38007cfe5ac3ae5bb3cbcfe92f6edc02b8be60f65af4b7f4f349f284df089836b2f463022708a0355b9a + languageName: node + linkType: hard + +"postcss-page-break@npm:^2.0.0": + version: 2.0.0 + resolution: "postcss-page-break@npm:2.0.0" + dependencies: + postcss: ^7.0.2 + checksum: 6e8fcbad5252bbb61df1c89ebaa43c5d8c15a73002bb3d93de4d2d1d805d47d90291dc9a7fc785ef7a82f563c7fd33c24761e5253326639402f875f25e161d65 + languageName: node + linkType: hard + +"postcss-place@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-place@npm:4.0.1" + dependencies: + postcss: ^7.0.2 + postcss-values-parser: ^2.0.0 + checksum: db35406cb7166d9883a8875897ec21fefe8b23e036b7ecd4dca9ed374e7deefecc983c9dacf60ccff20e0a5b8e11c6dee33216527f840943381a11aaaa41c453 + languageName: node + linkType: hard + +"postcss-preset-env@npm:^6.7.0": + version: 6.7.0 + resolution: "postcss-preset-env@npm:6.7.0" + dependencies: + autoprefixer: ^9.6.1 + browserslist: ^4.6.4 + caniuse-lite: ^1.0.30000981 + css-blank-pseudo: ^0.1.4 + css-has-pseudo: ^0.10.0 + css-prefers-color-scheme: ^3.1.1 + cssdb: ^4.4.0 + postcss: ^7.0.17 + postcss-attribute-case-insensitive: ^4.0.1 + postcss-color-functional-notation: ^2.0.1 + postcss-color-gray: ^5.0.0 + postcss-color-hex-alpha: ^5.0.3 + postcss-color-mod-function: ^3.0.3 + postcss-color-rebeccapurple: ^4.0.1 + postcss-custom-media: ^7.0.8 + postcss-custom-properties: ^8.0.11 + postcss-custom-selectors: ^5.1.2 + postcss-dir-pseudo-class: ^5.0.0 + postcss-double-position-gradients: ^1.0.0 + postcss-env-function: ^2.0.2 + postcss-focus-visible: ^4.0.0 + postcss-focus-within: ^3.0.0 + postcss-font-variant: ^4.0.0 + postcss-gap-properties: ^2.0.0 + postcss-image-set-function: ^3.0.1 + postcss-initial: ^3.0.0 + postcss-lab-function: ^2.0.1 + postcss-logical: ^3.0.0 + postcss-media-minmax: ^4.0.0 + postcss-nesting: ^7.0.0 + postcss-overflow-shorthand: ^2.0.0 + postcss-page-break: ^2.0.0 + postcss-place: ^4.0.1 + postcss-pseudo-class-any-link: ^6.0.0 + postcss-replace-overflow-wrap: ^3.0.0 + postcss-selector-matches: ^4.0.0 + postcss-selector-not: ^4.0.0 + checksum: 2867000f4da242b1b966b9fdb93962d6ba29943a99fee6809504469420a57b8021dbe468a4f0e188d0f6a0582894c312c45774d80fba730fb9da3c2d0acb81a7 + languageName: node + linkType: hard + +"postcss-pseudo-class-any-link@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-pseudo-class-any-link@npm:6.0.0" + dependencies: + postcss: ^7.0.2 + postcss-selector-parser: ^5.0.0-rc.3 + checksum: ee673573fb1c7f47788534599bf991bf33f364583432632d1d6f811fce0be081975e27850f51ec8c928fa6cb03998ab6c0af1a85d7627a384b7fe6da104dc23f + languageName: node + linkType: hard + +"postcss-reduce-idents@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-reduce-idents@npm:4.0.2" + dependencies: + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 8209184e3a9e86dfeebbe8993b8c542e358e5aa2326e3902a41f4eb46680050fee4c106637f96a8b6bb9cd99434c7a16feba9dde9b85b3415f158bc82eafade8 + languageName: node + linkType: hard + +"postcss-reduce-initial@npm:^4.0.3": + version: 4.0.3 + resolution: "postcss-reduce-initial@npm:4.0.3" + dependencies: + browserslist: ^4.0.0 caniuse-api: ^3.0.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 90873342dbbca59f2594cda27cab540f7f9ce9510de0f86d5c269ec778323c22d538cb66b088b8719f6726e420c9d6f35375e8a6fd1d0a015962e74c29fa33f1 + has: ^1.0.0 + postcss: ^7.0.0 + checksum: ed276a820860d13cccd794954ed759af1e2278bfa2c863bb120ebd307404b2f8a1525e307b5ef9295d2b02ee72b1a8b31bfc2cf33d377ec0c7ca77d225298c3e languageName: node linkType: hard -"postcss-reduce-transforms@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-reduce-transforms@npm:5.0.0" +"postcss-reduce-transforms@npm:^4.0.2": + version: 4.0.2 + resolution: "postcss-reduce-transforms@npm:4.0.2" dependencies: - cssnano-utils: ^2.0.0 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 0dcde656d436c8238f80aa45e43d0a563a4a9235f28fff9fd67c7876689a69f1fcc85fb395a667a691111aeed78e5944d40c05c70a5831b055345854f8317577 + cssnano-util-get-match: ^4.0.0 + has: ^1.0.0 + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + checksum: 2bf993ff44b4e7b1c242955cf437d502447b93dcadfd812cecca0b4aa7ed8779b8c27c09a8c244b957aaef54ebdcd525a3f67b800a0c9a081775a31b245340ba + languageName: node + linkType: hard + +"postcss-replace-overflow-wrap@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-replace-overflow-wrap@npm:3.0.0" + dependencies: + postcss: ^7.0.2 + checksum: b9b6f604b80b81b62206a4aad0743ebdad3afbac0e1e906f9223573eb8e9eaf20cde7f7f55aa3e8fd2a7075a67386f85d74f04a029bb6ad8729463401239ac36 languageName: node linkType: hard -"postcss-selector-parser@npm:^3.1.2": +"postcss-selector-matches@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-selector-matches@npm:4.0.0" + dependencies: + balanced-match: ^1.0.0 + postcss: ^7.0.2 + checksum: 8445f6453b60a94c657fc56c7673a46abbaa91ca270d97e53a8555ac0b9cc5ab75a9a88fa9163a5b0cbe9b0214d1578722f18c8bcab4d2c1ded5c8b6da6e5d53 + languageName: node + linkType: hard + +"postcss-selector-not@npm:^4.0.0": + version: 4.0.1 + resolution: "postcss-selector-not@npm:4.0.1" + dependencies: + balanced-match: ^1.0.0 + postcss: ^7.0.2 + checksum: df0b0f2ebe137ea23faaf7f27584f795bd1772b1d8dfbbac3b1538491a57eb2d6ea18921b6a91e276358e315ef53bed170e426eaac1d5a94ab69b00ba88246fb + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^3.0.0": version: 3.1.2 resolution: "postcss-selector-parser@npm:3.1.2" dependencies: @@ -17440,6 +18521,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"postcss-selector-parser@npm:^5.0.0-rc.3, postcss-selector-parser@npm:^5.0.0-rc.4": + version: 5.0.0 + resolution: "postcss-selector-parser@npm:5.0.0" + dependencies: + cssesc: ^2.0.0 + indexes-of: ^1.0.1 + uniq: ^1.0.1 + checksum: eabe69f66f66c7469d7c1618821235d474c9f96d77d7247cb1d5e7481d0ad9b2f632bf5dd8a8a895f1a00df93b10b6c02a61e6f276406d61503ffb0bd67cf5cd + languageName: node + linkType: hard + "postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": version: 6.0.6 resolution: "postcss-selector-parser@npm:6.0.6" @@ -17450,39 +18542,42 @@ fsevents@^1.2.7: languageName: node linkType: hard -"postcss-sort-media-queries@npm:^3.8.9": - version: 3.9.10 - resolution: "postcss-sort-media-queries@npm:3.9.10" +"postcss-sort-media-queries@npm:^1.7.26": + version: 1.31.21 + resolution: "postcss-sort-media-queries@npm:1.31.21" dependencies: - sort-css-media-queries: 1.5.4 - peerDependencies: - postcss: ^8.2.13 - checksum: 992ad8ac112f790b9482e2f18ea6dced7c3e63345ea5e26a3088e557244214472cf2c02c829cd3af8cdea6788304c4e1ce1768090673024e25eb85505c0ac2c2 + postcss: ^7.0.27 + sort-css-media-queries: 1.5.0 + checksum: 2fba8b0da5308b6c4d3ab8387e8c8aeacb139e185857ca06f0b6099eb20b58dced57c4d3b22762d09b90a9587e68d0c0d57c4c6a8f2d88adce501caed5d935b5 languageName: node linkType: hard -"postcss-svgo@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-svgo@npm:5.0.0" +"postcss-svgo@npm:^4.0.3": + version: 4.0.3 + resolution: "postcss-svgo@npm:4.0.3" dependencies: - postcss-value-parser: ^4.1.0 - svgo: ^2.3.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 73880f0d15a2e7a67fc093f501af3f669db0518a73166311d76203aab2e170255f43288d6dd8121461e57c322e8b347a990430035922235019c3f11dd465b14b + postcss: ^7.0.0 + postcss-value-parser: ^3.0.0 + svgo: ^1.0.0 + checksum: a04f0852f5fdb7d130216ef5c3f5c788c57d38f3dbecf8aa6d92edddb36eeba32b32b385b5e83ab06a75d77b43b7afb926dccc351a2943bde0fa3aba206b5602 languageName: node linkType: hard -"postcss-unique-selectors@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-unique-selectors@npm:5.0.0" +"postcss-unique-selectors@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-unique-selectors@npm:4.0.1" dependencies: - alphanum-sort: ^1.0.2 - postcss-selector-parser: ^6.0.2 + alphanum-sort: ^1.0.0 + postcss: ^7.0.0 uniqs: ^2.0.0 - peerDependencies: - postcss: ^8.2.1 - checksum: c5a219f224b362c6925fccbd2807f28ee4b98f1362ed7e32cb0e960741725047ef1fcdf2dd22e3c4351212601a68b4af7100c7201a36d28176c99ff12e231e00 + checksum: 1f1fdc108654b6d08e499b1b4227a8023f01376ca15f461fe5c62a07bc2b553e688ca2d7e60c7443ce372d09c8121d79a402272d6880785c8659067922622c2a + languageName: node + linkType: hard + +"postcss-value-parser@npm:^3.0.0": + version: 3.3.1 + resolution: "postcss-value-parser@npm:3.3.1" + checksum: 834603f6bd822846cc20b1f95e648dea67353eb506898cc5fb540b32e9a956c1030754b9503270eb00c61c3734409d7ec94fba2b4f0a89954bc855bad7e9267c languageName: node linkType: hard @@ -17493,26 +18588,58 @@ fsevents@^1.2.7: languageName: node linkType: hard -"postcss-zindex@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-zindex@npm:5.0.0" +"postcss-values-parser@npm:^2.0.0, postcss-values-parser@npm:^2.0.1": + version: 2.0.1 + resolution: "postcss-values-parser@npm:2.0.1" dependencies: - has: ^1.0.3 + flatten: ^1.0.2 + indexes-of: ^1.0.1 + uniq: ^1.0.1 + checksum: dfc25618bed3ba74da9adb4df9535dc0edd03e4618fb6774d0327934970876f93f565071bce97faa96ef236da2ce43ec2efeae240fc2eedc0e764e379b3e9441 + languageName: node + linkType: hard + +"postcss-zindex@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-zindex@npm:4.0.1" + dependencies: + has: ^1.0.0 + postcss: ^7.0.0 uniqs: ^2.0.0 - peerDependencies: - postcss: ^8.2.1 - checksum: 8dd3e5e1f378db841bca2f486252bf27a9c5129fed9fe92b2b9dcd84aca558721418e6edc6a9a5bd0eb15fb2e8e693a52625190ac18d07951d19f144452b1c76 + checksum: 17b74ff8e2349caadaff4802e4a71a14ac72694997be1584dc8a5713740c607fde31a4f2a1cb89a320623007cb2e6acfd46fb2ca7b2d3cd19802c21f87543475 languageName: node linkType: hard -"postcss@npm:^8.2.10, postcss@npm:^8.2.4, postcss@npm:^8.2.9": - version: 8.2.15 - resolution: "postcss@npm:8.2.15" +"postcss@npm:^6.0.23": + version: 6.0.23 + resolution: "postcss@npm:6.0.23" + dependencies: + chalk: ^2.4.1 + source-map: ^0.6.1 + supports-color: ^5.4.0 + checksum: 9b61abdfb366491debc6a633ba3703ae43c674b6c1c64def54e131c8ec01862fc95b3271bde221db805389fc76c3b3f1447b5a9c1d0b332c53cfcc9bfe1b1fa6 + languageName: node + linkType: hard + +"postcss@npm:^7.0.0, postcss@npm:^7.0.1, postcss@npm:^7.0.14, postcss@npm:^7.0.17, postcss@npm:^7.0.2, postcss@npm:^7.0.27, postcss@npm:^7.0.32, postcss@npm:^7.0.5, postcss@npm:^7.0.6": + version: 7.0.35 + resolution: "postcss@npm:7.0.35" + dependencies: + chalk: ^2.4.2 + source-map: ^0.6.1 + supports-color: ^6.1.0 + checksum: 8a979ea9799dd48399337708a395ddb8cf0e328515201ed35c99f5ba5eaa7688eae65764c570bf49b5be0b106226e2f222abc210de068b3d3da9a9a3bbb70567 + languageName: node + linkType: hard + +"postcss@npm:^8.2.10, postcss@npm:^8.2.7": + version: 8.3.0 + resolution: "postcss@npm:8.3.0" dependencies: colorette: ^1.2.2 nanoid: ^3.1.23 - source-map: ^0.6.1 - checksum: 2d26bc29dedd7656d1f53fa002374a014a8c2c7b9f1538d0fafadb9eae2494f5b037c87de4390d620f622b31d7f15c8c8d88de2bd682e206104fb44e781737df + source-map-js: ^0.6.2 + checksum: 438f9b9ea5a1ad66a36c944c77a55218ea0ac9d07ba63891854e8597b1a3b7710caa25d01f7783a6b8f4a3a8d52c295da422b92e546b37d6896909c19c7d4975 languageName: node linkType: hard @@ -17530,6 +18657,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"prepend-http@npm:^1.0.0": + version: 1.0.4 + resolution: "prepend-http@npm:1.0.4" + checksum: f723f34a23394b568a9ff0cd502bdda244b343c03b12a259343566eab1184cf41a6c7e9975d9e6010ccb2901b7c428d296e56a67a72d0a6ecb0f13531a3fa44e + languageName: node + linkType: hard + "prepend-http@npm:^2.0.0": version: 2.0.0 resolution: "prepend-http@npm:2.0.0" @@ -17662,6 +18796,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: ed93a85e9185b40fb01788c588a87c1a9da0eb925ef7cebebbe1b8bbf0eba1802130366603a29e3b689c116969d4fe018de6aed3474bbeb5aefb3716b85d6449 + languageName: node + linkType: hard + "progress@npm:^2.0.0": version: 2.0.3 resolution: "progress@npm:2.0.3" @@ -17792,6 +18933,30 @@ fsevents@^1.2.7: languageName: node linkType: hard +"public-encrypt@npm:^4.0.0": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" + dependencies: + bn.js: ^4.1.0 + browserify-rsa: ^4.0.0 + create-hash: ^1.1.0 + parse-asn1: ^5.0.0 + randombytes: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: 85b1be24b589d3ec4e39c2cc8542d6bf914e04d60278bd1ca0b4c36c678971b9f43303288c90e80cdd82ef20f2ec1fcd2726c8f093ba88187779acd82559b208 + languageName: node + linkType: hard + +"pump@npm:^2.0.0": + version: 2.0.1 + resolution: "pump@npm:2.0.1" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: 25c657a8f65bb7a8c3c9f806bd282c70a71b4ce41fab66800519fc0ed6b9ab05304569c2d0a1a5711bf39216392c4a583930c582e8fc760391f9f7b2fc6fe14e + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -17802,6 +18967,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pumpify@npm:^1.3.3": + version: 1.5.1 + resolution: "pumpify@npm:1.5.1" + dependencies: + duplexify: ^3.6.0 + inherits: ^2.0.3 + pump: ^2.0.0 + checksum: c143607284efa8b91baf8e199e90a6560cf599bdb7928686d1f33d3d8bbf71f3bc8c673ed6747ed36b8771982376faa0d5dafc0580eb433c73a825031016aa77 + languageName: node + linkType: hard + "punycode@npm:1.3.2": version: 1.3.2 resolution: "punycode@npm:1.3.2" @@ -17809,7 +18985,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"punycode@npm:^1.3.2": +"punycode@npm:^1.2.4, punycode@npm:^1.3.2": version: 1.4.1 resolution: "punycode@npm:1.4.1" checksum: 5ce1e044cee2b12f1c65ccd523d7e71d6578f2c77f5c21c2e7a9d588535559c9508571d42638c131dab93cbe9a7b37bce1a7475d43fc8236c99dfe1efc36cfa5 @@ -17876,6 +19052,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"query-string@npm:^4.1.0": + version: 4.3.4 + resolution: "query-string@npm:4.3.4" + dependencies: + object-assign: ^4.1.0 + strict-uri-encode: ^1.0.0 + checksum: fcdbc2e76024a3afd0c5ea3addda75311d5d10402ddb5a03542dec430d36dbc44c87a11765ffa952d53e0b96e187298929561b88cc196a828f8728d2a3545ab8 + languageName: node + linkType: hard + "query-string@npm:^6.13.8": version: 6.14.1 resolution: "query-string@npm:6.14.1" @@ -17888,6 +19074,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"querystring-es3@npm:^0.2.0": + version: 0.2.1 + resolution: "querystring-es3@npm:0.2.1" + checksum: 3c388906aa5644e55cdbede78f99a4d05a6e36a45b06929ad8713a2020a5cefeb6ec23adaa27584d968cf658e5d237b5e216f5e48930d040cd6b810679714741 + languageName: node + linkType: hard + "querystring@npm:0.2.0": version: 0.2.0 resolution: "querystring@npm:0.2.0" @@ -17949,7 +19142,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"randombytes@npm:^2.1.0": +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: @@ -17958,6 +19151,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"randomfill@npm:^1.0.3": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" + dependencies: + randombytes: ^2.0.5 + safe-buffer: ^5.1.0 + checksum: 24658ce99e0a325f27d157fbff9b111f9fa2f56876031ac9a09bcd6c5ae53d3c3f1b124d7e1b813803ee1b09e50dd1561ac7f7a8ba2930319cbcda5e827602ab + languageName: node + linkType: hard + "range-parser@npm:1.2.0": version: 1.2.0 resolution: "range-parser@npm:1.2.0" @@ -18152,15 +19355,15 @@ fsevents@^1.2.7: languageName: node linkType: hard -"react-loadable-ssr-addon-v5-slorber@npm:^1.0.1": - version: 1.0.1 - resolution: "react-loadable-ssr-addon-v5-slorber@npm:1.0.1" +"react-loadable-ssr-addon@npm:^0.3.0": + version: 0.3.0 + resolution: "react-loadable-ssr-addon@npm:0.3.0" dependencies: "@babel/runtime": ^7.10.3 peerDependencies: react-loadable: "*" - webpack: ">=4.41.1 || 5.x" - checksum: 0e43f53b42318f7134d89783d6f2764b5b5fb41c589f99bfc4875601db83c2b80374bee4d9d5b9d0d0d394ca772d5cbd3a8c1e4f6b18b43f5c86765d5b78ef61 + webpack: ">=4.41.1" + checksum: 95fbe3b2167429388c6427b41d8b6a65cb37f65bb52b9158cd64b56a27477dcb8c372bbabef8bef865d0888fc5e9c643c7f77961e018633d24528a89a2a1f861 languageName: node linkType: hard @@ -18413,6 +19616,19 @@ react-native@0.64.0: languageName: node linkType: hard +"react-toggle@npm:^4.1.1": + version: 4.1.2 + resolution: "react-toggle@npm:4.1.2" + dependencies: + classnames: ^2.2.5 + peerDependencies: + prop-types: ">= 15.3.0 < 18" + react: ">= 15.3.0 < 18" + react-dom: ">= 15.3.0 < 18" + checksum: 8aae3db12a0c53802ab5dad3c4d53964568908d5346cf8566e6b4dfbf2615166bb04bd51c160f677eef8e7034e7b577a8021d0a1fd288f72940fe778225a1c4d + languageName: node + linkType: hard + "react@npm:*, react@npm:17.0.1, react@npm:^17.0.1": version: 17.0.1 resolution: "react@npm:17.0.1" @@ -18581,18 +19797,7 @@ react-native@0.64.0: languageName: node linkType: hard -"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: f178b1daa80d9e58ebba71dbb08486430aa6f0dea3a22a1b7401f3f6983077d0bc0edea43099db06b8d006c9ad48d6383e8fb72c05d5b187670aeaf1b9b44f00 - languageName: node - linkType: hard - -"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.6, readable-stream@npm:^2.3.5, readable-stream@npm:~2.3.6": +"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.6, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -18607,6 +19812,17 @@ react-native@0.64.0: languageName: node linkType: hard +"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": + version: 3.6.0 + resolution: "readable-stream@npm:3.6.0" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: f178b1daa80d9e58ebba71dbb08486430aa6f0dea3a22a1b7401f3f6983077d0bc0edea43099db06b8d006c9ad48d6383e8fb72c05d5b187670aeaf1b9b44f00 + languageName: node + linkType: hard + "readdir-scoped-modules@npm:^1.0.0": version: 1.1.0 resolution: "readdir-scoped-modules@npm:1.1.0" @@ -19263,6 +20479,16 @@ react-native@0.64.0: languageName: node linkType: hard +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": + version: 2.0.2 + resolution: "ripemd160@npm:2.0.2" + dependencies: + hash-base: ^3.0.0 + inherits: ^2.0.1 + checksum: e0370fbe779b1f15d74c3e7dffc0ce40b57b845fc7e431fab8a571958d5fd9c91eb0038a252604600e20786d117badea0cc4cf8816b8a6be6b9166b565ad6797 + languageName: node + linkType: hard + "rollup-plugin-terser@npm:^7.0.0": version: 7.0.2 resolution: "rollup-plugin-terser@npm:7.0.2" @@ -19308,27 +20534,18 @@ react-native@0.64.0: languageName: node linkType: hard -"rtl-detect@npm:^1.0.2": - version: 1.0.3 - resolution: "rtl-detect@npm:1.0.3" - checksum: 8ec281630d1e7fc5c1d409f65dc7e9637e9c81527f96420c439f44a5d73d0fe8b8936867a9628d4198ecac39d4f5cc8b4b04c3681d3fb3aa49bffe2f87bd4c95 - languageName: node - linkType: hard - -"rtlcss@npm:^3.1.2": - version: 3.1.2 - resolution: "rtlcss@npm:3.1.2" +"rtlcss@npm:^2.6.2": + version: 2.6.2 + resolution: "rtlcss@npm:2.6.2" dependencies: - chalk: ^4.1.0 - find-up: ^5.0.0 - mkdirp: ^1.0.4 - postcss: ^8.2.4 - strip-json-comments: ^3.1.1 - peerDependencies: - postcss: ^8.2.4 + "@choojs/findup": ^0.2.1 + chalk: ^2.4.2 + mkdirp: ^0.5.1 + postcss: ^6.0.23 + strip-json-comments: ^2.0.0 bin: - rtlcss: bin/rtlcss.js - checksum: d770111cf66f9b66c9d4f9a50ac89b6f8e68d6f59be96c469851101bf7f4992e45fcdfd37ed5375760db8e9a06edad97b1174b1ee002a72e2c1e627639070b16 + rtlcss: ./bin/rtlcss.js + checksum: cabebb18e961bdf48d6ff03cf1c00b01ff5abe4503476eb060c4270e0bcdb97e32ce551eab2c819cb70be565b0e5d42d22b21b443418653ea140024e84e40c61 languageName: node linkType: hard @@ -19348,6 +20565,15 @@ react-native@0.64.0: languageName: node linkType: hard +"run-queue@npm:^1.0.0, run-queue@npm:^1.0.3": + version: 1.0.3 + resolution: "run-queue@npm:1.0.3" + dependencies: + aproba: ^1.1.1 + checksum: ffc37a7b55630b3d878c77be5125ba71c4f38345bf9ee83f2a122d546cc3fc74985f8e639d926fcfb33f475bf4a0ae122791bd8dd24bce5355eed0968420ba34 + languageName: node + linkType: hard + "rxjs@npm:^6.5.3, rxjs@npm:^6.6.0, rxjs@npm:^6.6.3": version: 6.6.7 resolution: "rxjs@npm:6.6.7" @@ -19364,7 +20590,7 @@ react-native@0.64.0: languageName: node linkType: hard -"safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 0bb57f0d8f9d1fa4fe35ad8a2db1f83a027d48f2822d59ede88fd5cd4ddad83c0b497213feb7a70fbf90597a70c5217f735b0eb1850df40ce9b4ae81dd22b3f9 @@ -19462,7 +20688,7 @@ react-native@0.64.0: languageName: node linkType: hard -"schema-utils@npm:^2.6.5": +"schema-utils@npm:^2.0.0, schema-utils@npm:^2.6.5": version: 2.7.1 resolution: "schema-utils@npm:2.7.1" dependencies: @@ -19682,7 +20908,7 @@ react-native@0.64.0: languageName: node linkType: hard -"setimmediate@npm:^1.0.5": +"setimmediate@npm:^1.0.4, setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" checksum: 87884d8add4779fe47ccf763396a5bf875640ae34d80a10802da4de5c25d87647c12f6e7748fd5b8c143b57201caf2a5a781631456c228825f166ca305c12f20 @@ -19703,6 +20929,18 @@ react-native@0.64.0: languageName: node linkType: hard +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + bin: + sha.js: ./bin.js + checksum: 7554240ab76e683f7115123eb4815aae16b5fc6f2cdff97009831ad5b17b107ffcef022526211f7306957bce7a67fa4d0ccad79a3040c5073414365595e90516 + languageName: node + linkType: hard + "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -19978,10 +21216,19 @@ react-native@0.64.0: languageName: node linkType: hard -"sort-css-media-queries@npm:1.5.4": - version: 1.5.4 - resolution: "sort-css-media-queries@npm:1.5.4" - checksum: d45cfe2578438bdc88dae0aed9f6d6bca98ae62f0bc4ac8e27dd753a75a7676116b97a5b959aad6c2b0bc71f12b8cc8713cdc170bd251b99c0a1c33d663ad75b +"sort-css-media-queries@npm:1.5.0": + version: 1.5.0 + resolution: "sort-css-media-queries@npm:1.5.0" + checksum: 6a2878582ac54e58a5f6a424d195bf28227b7c0692bbc48f464875512f2265286e99c1e733a8f02c677450bc3d85253bd9832d4cd41e4e661ff4e995ee25db1e + languageName: node + linkType: hard + +"sort-keys@npm:^1.0.0": + version: 1.1.2 + resolution: "sort-keys@npm:1.1.2" + dependencies: + is-plain-obj: ^1.0.0 + checksum: 78d9165ed35a19591685375cf85b7f45d94d0538af8cf162dec9ae67e6c631468169f9242e06f799a5bbb4207e90413f32dc528323f1f5d8edb0be51bf9f8880 languageName: node linkType: hard @@ -20003,13 +21250,20 @@ react-native@0.64.0: languageName: node linkType: hard -"source-list-map@npm:^2.0.0, source-list-map@npm:^2.0.1": +"source-list-map@npm:^2.0.0": version: 2.0.1 resolution: "source-list-map@npm:2.0.1" checksum: d8d45f29987d00d995ccda308dcc78b710031a9958fdb5d26674d32220c952eb7a8562062638d91896628ae4eef30e1cd112a6a547563dfda0b013024c2a9bf7 languageName: node linkType: hard +"source-map-js@npm:^0.6.2": + version: 0.6.2 + resolution: "source-map-js@npm:0.6.2" + checksum: 8e2f992cfbedb71286fa6f6e011e2fa756b7f4d944ea4b0f49e9ff6ea34ad0a17dc655f067fdddb32efa7b45000e8c59e47a2e875d91744c86a56329b5f58b32 + languageName: node + linkType: hard + "source-map-resolve@npm:^0.5.0": version: 0.5.3 resolution: "source-map-resolve@npm:0.5.3" @@ -20226,6 +21480,15 @@ react-native@0.64.0: languageName: node linkType: hard +"ssri@npm:^6.0.1": + version: 6.0.2 + resolution: "ssri@npm:6.0.2" + dependencies: + figgy-pudding: ^3.5.1 + checksum: 5010f97e90b3776f5d3596fade9d404960da8c077afd5522f8f1b6e29a76d97cc59eedcefa17d0b9854a9ab08180eec7b885bb1f0fb49b62aa36c5eff76cb3d1 + languageName: node + linkType: hard + "ssri@npm:^8.0.0, ssri@npm:^8.0.1": version: 8.0.1 resolution: "ssri@npm:8.0.1" @@ -20307,6 +21570,16 @@ react-native@0.64.0: languageName: node linkType: hard +"stream-browserify@npm:^2.0.1": + version: 2.0.2 + resolution: "stream-browserify@npm:2.0.2" + dependencies: + inherits: ~2.0.1 + readable-stream: ^2.0.2 + checksum: d50d9a28df714f2d599f416388541de445bfa417039a4808a1ca68381f0152205b8e50dbc04e39959b3b1a9c5e561cab1ecb1bdf4f6ab2f66f6b1450000049d9 + languageName: node + linkType: hard + "stream-buffers@npm:~2.2.0": version: 2.2.0 resolution: "stream-buffers@npm:2.2.0" @@ -20314,6 +21587,16 @@ react-native@0.64.0: languageName: node linkType: hard +"stream-each@npm:^1.1.0": + version: 1.2.3 + resolution: "stream-each@npm:1.2.3" + dependencies: + end-of-stream: ^1.1.0 + stream-shift: ^1.0.0 + checksum: 2b64a88075c48ab3f97f11a940118d529d09c2470bd582e19dc3136ccf372d9cba17c7e96f09abcf5644d124ce994b6e4bbb14925b78e5836ed46059a0af2991 + languageName: node + linkType: hard + "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -20323,6 +21606,33 @@ react-native@0.64.0: languageName: node linkType: hard +"stream-http@npm:^2.7.2": + version: 2.8.3 + resolution: "stream-http@npm:2.8.3" + dependencies: + builtin-status-codes: ^3.0.0 + inherits: ^2.0.1 + readable-stream: ^2.3.6 + to-arraybuffer: ^1.0.0 + xtend: ^4.0.0 + checksum: 7ef9e10567b1a49d6c05730427280ef7623a6b407df3981d5d14d30d56225c4d64857d7473ab8eca93dbcaaf897e4f4fda8b5b482cf26255e26f1a31d696c1b8 + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.0": + version: 1.0.1 + resolution: "stream-shift@npm:1.0.1" + checksum: 5d777b222e460dc660ee29acad4f99649eb8d0051d3cb648fc92f3f77557b33d0a8ad656291c2cfa87703204191534a6003c2b035606a699674d0bb600353ad3 + languageName: node + linkType: hard + +"strict-uri-encode@npm:^1.0.0": + version: 1.1.0 + resolution: "strict-uri-encode@npm:1.1.0" + checksum: 6c80f6998a45414d7c124772383cc10ce7bd22586af80762407cded1569666564fb8c0a4c9c997ac39a1116d46dfffc5d57135e759a0acb66a4da1191f5a3a4a + languageName: node + linkType: hard + "strict-uri-encode@npm:^2.0.0": version: 2.0.0 resolution: "strict-uri-encode@npm:2.0.0" @@ -20414,7 +21724,7 @@ react-native@0.64.0: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -20550,6 +21860,13 @@ react-native@0.64.0: languageName: node linkType: hard +"strip-json-comments@npm:^2.0.0, strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: e60d99aa2849c27a04dce0620334f45822197df6b83664dd3746971e9a0a766d989dbb8d87f9cb7350725d2b5df401a2343222ad06e36a1ba7d62c6633267fcb + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -20557,13 +21874,6 @@ react-native@0.64.0: languageName: node linkType: hard -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: e60d99aa2849c27a04dce0620334f45822197df6b83664dd3746971e9a0a766d989dbb8d87f9cb7350725d2b5df401a2343222ad06e36a1ba7d62c6633267fcb - languageName: node - linkType: hard - "strong-log-transformer@npm:^2.1.0": version: 2.1.0 resolution: "strong-log-transformer@npm:2.1.0" @@ -20593,15 +21903,14 @@ react-native@0.64.0: languageName: node linkType: hard -"stylehacks@npm:^5.0.0": - version: 5.0.0 - resolution: "stylehacks@npm:5.0.0" +"stylehacks@npm:^4.0.0": + version: 4.0.3 + resolution: "stylehacks@npm:4.0.3" dependencies: - browserslist: ^4.16.0 - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.2.1 - checksum: abef26f38fb3e45eb1cc3b7a2b40963a0264a793cac09ba5b813200c5dc6bd86ad9887bc63c2a2b87cb2e7843ebf991264d68dcb87595228eaedcc57d8285730 + browserslist: ^4.0.0 + postcss: ^7.0.0 + postcss-selector-parser: ^3.0.0 + checksum: 1345ad348db3c98f7d0423762e13e816a8c1ba0b1d90d79f3528513be429f1cf68b7fa9c9d379870208586e7ff4cfb68b4121bbd904df03b17e84d62efcff288 languageName: node linkType: hard @@ -20612,7 +21921,7 @@ react-native@0.64.0: languageName: node linkType: hard -"supports-color@npm:^5.3.0": +"supports-color@npm:^5.3.0, supports-color@npm:^5.4.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" dependencies: @@ -20665,7 +21974,7 @@ react-native@0.64.0: languageName: node linkType: hard -"svgo@npm:^1.2.2": +"svgo@npm:^1.0.0, svgo@npm:^1.2.2": version: 1.3.2 resolution: "svgo@npm:1.3.2" dependencies: @@ -20688,23 +21997,6 @@ react-native@0.64.0: languageName: node linkType: hard -"svgo@npm:^2.3.0": - version: 2.3.0 - resolution: "svgo@npm:2.3.0" - dependencies: - "@trysound/sax": 0.1.1 - chalk: ^4.1.0 - commander: ^7.1.0 - css-select: ^3.1.2 - css-tree: ^1.1.2 - csso: ^4.2.0 - stable: ^0.1.8 - bin: - svgo: bin/svgo - checksum: 8580eddbab54079813531f9fd8c246662eea6f3f7554d7a6082dce010c25b4a8e8e92ae4ee52b2c80b514abc54ecd0e2bd1ef3011693d5daf473adefc5b48180 - languageName: node - linkType: hard - "symbol-tree@npm:^3.2.4": version: 3.2.4 resolution: "symbol-tree@npm:3.2.4" @@ -20726,20 +22018,13 @@ react-native@0.64.0: languageName: node linkType: hard -"tapable@npm:^1.0.0": +"tapable@npm:^1.0.0, tapable@npm:^1.1.3": version: 1.1.3 resolution: "tapable@npm:1.1.3" checksum: b2c2ab20260394b867fd249d8b6ab3e4645e00f9cce16b558b0de5a86291ef05f536f578744549d1618c9032c7f99bc1d6f68967e4aa11cb0dca4461dc4714bc languageName: node linkType: hard -"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0": - version: 2.2.0 - resolution: "tapable@npm:2.2.0" - checksum: f8ed725aedb3d777bf908ff06c02d1a2108667d3e64af87dd45354ac8de67e7e4fe1a567e215057fb1a2a5437b31d80cc5e5ddbb8327f7280afd4494967a9a93 - languageName: node - linkType: hard - "tar-stream@npm:^2.1.4": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" @@ -20883,23 +22168,45 @@ react-native@0.64.0: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.1.1": - version: 5.1.2 - resolution: "terser-webpack-plugin@npm:5.1.2" +"terser-webpack-plugin@npm:^1.4.3": + version: 1.4.5 + resolution: "terser-webpack-plugin@npm:1.4.5" dependencies: - jest-worker: ^26.6.2 - p-limit: ^3.1.0 + cacache: ^12.0.2 + find-cache-dir: ^2.1.0 + is-wsl: ^1.1.0 + schema-utils: ^1.0.0 + serialize-javascript: ^4.0.0 + source-map: ^0.6.1 + terser: ^4.1.2 + webpack-sources: ^1.4.0 + worker-farm: ^1.7.0 + peerDependencies: + webpack: ^4.0.0 + checksum: 8fadaece64d2e67bc5794e8fc2944d693f644c899a489e78ca64e5b90dfed1148f171a084e738df6770c102553d6b4a5dfe582d98b3560004f2b91bca6ad919e + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^4.1.0": + version: 4.2.3 + resolution: "terser-webpack-plugin@npm:4.2.3" + dependencies: + cacache: ^15.0.5 + find-cache-dir: ^3.3.1 + jest-worker: ^26.5.0 + p-limit: ^3.0.2 schema-utils: ^3.0.0 serialize-javascript: ^5.0.1 source-map: ^0.6.1 - terser: ^5.7.0 + terser: ^5.3.4 + webpack-sources: ^1.4.3 peerDependencies: - webpack: ^5.1.0 - checksum: f65229fc603a23b550283da3344adf23a81526e55c830ff437c8e8769fc64f4d48dbc6a7845b3aa85b5ce37eb00834829341d00cad9fa4a65186ebeda6ce61de + webpack: ^4.0.0 || ^5.0.0 + checksum: d628fb7978add1bb862cd75bc875919d5281d0db92440731eb3b52d810ee02a71cbe61a58699f0eb918aa34f5ce36e82cc422cfc9a7ec4a460ed48f080a9af84 languageName: node linkType: hard -"terser@npm:^4.6.3": +"terser@npm:^4.1.2, terser@npm:^4.6.3": version: 4.8.0 resolution: "terser@npm:4.8.0" dependencies: @@ -20912,7 +22219,7 @@ react-native@0.64.0: languageName: node linkType: hard -"terser@npm:^5.0.0, terser@npm:^5.7.0": +"terser@npm:^5.0.0, terser@npm:^5.3.4": version: 5.7.0 resolution: "terser@npm:5.7.0" dependencies: @@ -20997,6 +22304,15 @@ react-native@0.64.0: languageName: node linkType: hard +"timers-browserify@npm:^2.0.4": + version: 2.0.12 + resolution: "timers-browserify@npm:2.0.12" + dependencies: + setimmediate: ^1.0.4 + checksum: 9e10d036d61b81eef9679b8ed452000eecbc309ea67067120a124a451b58ac4e5d348ca24152351770b5058117732dc8c665fff0b984f8eb0d857b9e13c33f42 + languageName: node + linkType: hard + "timsort@npm:^0.3.0": version: 0.3.0 resolution: "timsort@npm:0.3.0" @@ -21050,6 +22366,13 @@ react-native@0.64.0: languageName: node linkType: hard +"to-arraybuffer@npm:^1.0.0": + version: 1.0.1 + resolution: "to-arraybuffer@npm:1.0.1" + checksum: 23e72a6636e32fa992a4ad952564af136460b8b9ac603737fd8e7ecefe762284c4368f3f455b4252c95401cb2d3c8e356da1ef915a7c40152b62592ee38911c4 + languageName: node + linkType: hard + "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -21227,6 +22550,16 @@ react-native@0.64.0: languageName: node linkType: hard +"ts-pnp@npm:^1.1.6": + version: 1.2.0 + resolution: "ts-pnp@npm:1.2.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 78341a27939de565e2754ff65ebb689743c16e3295528089d143c08d91842cf9029c3d6b3c95a9a20854a114a7904329d02c710d63f7ce4dbf671b8a3e560ac1 + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.9.0": version: 3.9.0 resolution: "tsconfig-paths@npm:3.9.0" @@ -21264,6 +22597,13 @@ react-native@0.64.0: languageName: node linkType: hard +"tty-browserify@npm:0.0.0": + version: 0.0.0 + resolution: "tty-browserify@npm:0.0.0" + checksum: ef28fe256a17bac17d094e0120a042aee441efca0a44734082caa697b8326cc9888a8042b754cb6830205b65fe716960ba159597fdbcb8b53abf08ae5c9acd7f + languageName: node + linkType: hard + "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -21997,6 +23337,16 @@ react-native@0.64.0: languageName: node linkType: hard +"util.promisify@npm:1.0.0": + version: 1.0.0 + resolution: "util.promisify@npm:1.0.0" + dependencies: + define-properties: ^1.1.2 + object.getownpropertydescriptors: ^2.0.3 + checksum: 0dffbe1af61c9c034b5e7b411461e46c17c788d855fb02bcbf96cd0f603c086eb83160a3c878c4d69bede9a42118a7ce2b3cc05ed5a235e1c1c04c93bd5608e7 + languageName: node + linkType: hard + "util.promisify@npm:~1.0.0": version: 1.0.1 resolution: "util.promisify@npm:1.0.1" @@ -22009,6 +23359,24 @@ react-native@0.64.0: languageName: node linkType: hard +"util@npm:0.10.3": + version: 0.10.3 + resolution: "util@npm:0.10.3" + dependencies: + inherits: 2.0.1 + checksum: 05c1a09f3af90250365386331b3986c0753af1900f20279f9302409b27e9d9d3c03a9cf4efba48aae859d04348ebfe56d68f89688113f61171da9c4fbe6baaca + languageName: node + linkType: hard + +"util@npm:^0.11.0": + version: 0.11.1 + resolution: "util@npm:0.11.1" + dependencies: + inherits: 2.0.3 + checksum: f05afc3d9a284eff28017d8bd474d56fbd27e7a5ad81f44720341b02ae5554ac9c06d0d08034aaf537d56116624232123054e58ec3873133144bda3b521de9ef + languageName: node + linkType: hard + "utila@npm:~0.4": version: 0.4.0 resolution: "utila@npm:0.4.0" @@ -22099,7 +23467,7 @@ react-native@0.64.0: languageName: node linkType: hard -"vendors@npm:^1.0.3": +"vendors@npm:^1.0.0": version: 1.0.4 resolution: "vendors@npm:1.0.4" checksum: f49cf918e866901eb36e0dc85970fde99929a3f298e1c55b4e20517eda18e16fb57da3eee72801e7d371f9b33684492879ed5ceebae4d1bed48c6e1a62ef6e58 @@ -22181,6 +23549,13 @@ react-native@0.64.0: languageName: node linkType: hard +"vm-browserify@npm:^1.0.1": + version: 1.1.2 + resolution: "vm-browserify@npm:1.1.2" + checksum: fc571a62d2cf797ae8773ebb3cb0d2bea50ed02059e128dd9087975929fce4c80a6485ce1aaf7d44ef69db99dfdcde50b6be5d5eb73b296660d761c32fb544fe + languageName: node + linkType: hard + "w3c-hr-time@npm:^1.0.2": version: 1.0.2 resolution: "w3c-hr-time@npm:1.0.2" @@ -22223,13 +23598,29 @@ react-native@0.64.0: languageName: node linkType: hard -"watchpack@npm:^2.0.0": - version: 2.1.1 - resolution: "watchpack@npm:2.1.1" +"watchpack-chokidar2@npm:^2.0.1": + version: 2.0.1 + resolution: "watchpack-chokidar2@npm:2.0.1" dependencies: - glob-to-regexp: ^0.4.1 + chokidar: ^2.1.8 + checksum: 72cd744a97fab10d9e6e3a3414b09ac6e32d2693f062d73da9525d282f8a74515a6b406282d43569ca709247908554723d5459301465047361230d3a88b18d10 + languageName: node + linkType: hard + +"watchpack@npm:^1.7.4": + version: 1.7.5 + resolution: "watchpack@npm:1.7.5" + dependencies: + chokidar: ^3.4.1 graceful-fs: ^4.1.2 - checksum: 1aa185936b2e3ec29a41a65776f4e002da95206a14f5cca0856fbddf157f025dc29191598508082bab4cfc026e69ad8e7774f34680e9c479b5a25bbf9d9f1a1c + neo-async: ^2.5.0 + watchpack-chokidar2: ^2.0.1 + dependenciesMeta: + chokidar: + optional: true + watchpack-chokidar2: + optional: true + checksum: 93bb20dd955adf48daca67e6906ff9518f181e83d2183038e9a2573549a0d4badd23672d3ac542be9d5b766bd27da4baebba5d2d2522a7e05575c7cf7702c60b languageName: node linkType: hard @@ -22383,17 +23774,16 @@ react-native@0.64.0: languageName: node linkType: hard -"webpack-merge@npm:^5.7.3": - version: 5.7.3 - resolution: "webpack-merge@npm:5.7.3" +"webpack-merge@npm:^4.2.2": + version: 4.2.2 + resolution: "webpack-merge@npm:4.2.2" dependencies: - clone-deep: ^4.0.1 - wildcard: ^2.0.0 - checksum: 5e28f66f597cb34ac5f7ca0881cd3f106265091e47d7cda9ae00f4902283efdfdab36a70e34a9cf7b1467aac021178981513393b7dcddbb84caf11920f269379 + lodash: ^4.17.15 + checksum: 038c6d8ba45f538ce8e4505a8a3d90fbd2e554ba2065bacffe4d7cff0229cce9f0d983bf56061f8e0fef86c711da7232f88681aab285c06673b3916b1040cd9e languageName: node linkType: hard -"webpack-sources@npm:^1.1.0, webpack-sources@npm:^1.4.3": +"webpack-sources@npm:^1.1.0, webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1, webpack-sources@npm:^1.4.3": version: 1.4.3 resolution: "webpack-sources@npm:1.4.3" dependencies: @@ -22403,49 +23793,41 @@ react-native@0.64.0: languageName: node linkType: hard -"webpack-sources@npm:^2.1.1": - version: 2.2.0 - resolution: "webpack-sources@npm:2.2.0" - dependencies: - source-list-map: ^2.0.1 - source-map: ^0.6.1 - checksum: 7c4b797fa90d310872b70469dc04254e35571fb34530280a47b93edbe9cd6b0ffb79cf2b7565f4a18ff5b70315ff245d465ad35f952366cfd93c55d6445e2378 - languageName: node - linkType: hard - -"webpack@npm:^5.28.0": - version: 5.37.0 - resolution: "webpack@npm:5.37.0" +"webpack@npm:^4.44.1": + version: 4.46.0 + resolution: "webpack@npm:4.46.0" dependencies: - "@types/eslint-scope": ^3.7.0 - "@types/estree": ^0.0.47 - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/wasm-edit": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - acorn: ^8.2.1 - browserslist: ^4.14.5 + "@webassemblyjs/ast": 1.9.0 + "@webassemblyjs/helper-module-context": 1.9.0 + "@webassemblyjs/wasm-edit": 1.9.0 + "@webassemblyjs/wasm-parser": 1.9.0 + acorn: ^6.4.1 + ajv: ^6.10.2 + ajv-keywords: ^3.4.1 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.8.0 - es-module-lexer: ^0.4.0 - eslint-scope: ^5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.4 + enhanced-resolve: ^4.5.0 + eslint-scope: ^4.0.3 json-parse-better-errors: ^1.0.2 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.0.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.1 - watchpack: ^2.0.0 - webpack-sources: ^2.1.1 + loader-runner: ^2.4.0 + loader-utils: ^1.2.3 + memory-fs: ^0.4.1 + micromatch: ^3.1.10 + mkdirp: ^0.5.3 + neo-async: ^2.6.1 + node-libs-browser: ^2.2.1 + schema-utils: ^1.0.0 + tapable: ^1.1.3 + terser-webpack-plugin: ^1.4.3 + watchpack: ^1.7.4 + webpack-sources: ^1.4.1 peerDependenciesMeta: webpack-cli: optional: true + webpack-command: + optional: true bin: webpack: bin/webpack.js - checksum: 50c9ce5d9f8d274aa11a57581a2f21b2305f48a96eb7f380a6dab629392fea2b842764f94e7e91cbc28026d69facd5d1456c843b41ba7508f716ff8caacf4214 + checksum: 1e3bc97c01c19e96946be044cd9e323a476844b147c270185f7224bc8e0eda91946defbc120cb262f14e517e4c3071c6c90097e1a8b71a6a7afcacf37992763f languageName: node linkType: hard @@ -22590,13 +23972,6 @@ react-native@0.64.0: languageName: node linkType: hard -"wildcard@npm:^2.0.0": - version: 2.0.0 - resolution: "wildcard@npm:2.0.0" - checksum: 207baede4d6d41fc1aefcc4727c95ca6f29eaaf4d66478665fe0ac17232709637426ae96fd79deb3b68da3564e7bde7f2be63e5c3665ac8f63ee92364c0a2dd3 - languageName: node - linkType: hard - "word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": version: 1.2.3 resolution: "word-wrap@npm:1.2.3" @@ -22798,7 +24173,7 @@ react-native@0.64.0: languageName: node linkType: hard -"worker-farm@npm:^1.6.0": +"worker-farm@npm:^1.6.0, worker-farm@npm:^1.7.0": version: 1.7.0 resolution: "worker-farm@npm:1.7.0" dependencies: @@ -23052,7 +24427,7 @@ react-native@0.64.0: languageName: node linkType: hard -"yallist@npm:^3.0.0, yallist@npm:^3.0.3": +"yallist@npm:^3.0.0, yallist@npm:^3.0.2, yallist@npm:^3.0.3": version: 3.1.1 resolution: "yallist@npm:3.1.1" checksum: f352c93b92f601bb0399210bca37272e669c961e9bd886bac545380598765cbfdfb4f166e7b6c57ca4ec8a5af4ab3fa0fd78a47f9a7d655a3d580ff0fc9e7d79 From 472760e4bea190781097440387e34f049fce6259 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 10:55:18 +0200 Subject: [PATCH 32/65] chore: use specific node version in netlify --- netlify.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netlify.toml b/netlify.toml index 6f3cc77322f1..d421e10887da 100644 --- a/netlify.toml +++ b/netlify.toml @@ -6,7 +6,7 @@ base = "/" command = "yarn workspace jest-website netlify:ci:production" publish = "/website/build" - environment = { NODE_VERSION = "14.x" } + environment = { NODE_VERSION = "v14.17.0" } [context.production] From 52c6c5360a5466b75337058a70b45040ece9a5d2 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 10:58:19 +0200 Subject: [PATCH 33/65] chore(website): do not ignore changes to netlify config --- netlify.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netlify.toml b/netlify.toml index d421e10887da..aa87a075b98c 100644 --- a/netlify.toml +++ b/netlify.toml @@ -11,7 +11,7 @@ [context.production] # Do not build the site if there's no site-related changes - ignore = "git diff --quiet HEAD^ HEAD -- website/ docs/" + ignore = "git diff --quiet HEAD^ HEAD -- website/ docs/ netlify.toml" # deploy preview build (faster config) [context.deploy-preview] From 4659d451784735609d4da6d193309992a8cedf02 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 11:59:04 +0200 Subject: [PATCH 34/65] chore: bump jsdom (#11442) --- CHANGELOG.md | 2 + package.json | 1 - packages/jest-environment-jsdom/package.json | 2 +- testSetupFile.js | 3 - yarn.lock | 85 +++++++------------- 5 files changed, 30 insertions(+), 63 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 586d6e08db85..9f1c8738fb6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixes +- `[jest-environment-jsdom]` Bump version of JSDOM to avoid deprecated `request` package ([#11442](https://github.com/facebook/jest/pull/11442)) + ### Chore & Maintenance ### Performance diff --git a/package.json b/package.json index f95239f50366..247e770e3235 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,6 @@ "rimraf": "^3.0.0", "semver": "^7.3.2", "slash": "^3.0.0", - "stealthy-require": "^1.1.1", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.1", diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json index 7f68b3b0aeb7..4308486b9f7c 100644 --- a/packages/jest-environment-jsdom/package.json +++ b/packages/jest-environment-jsdom/package.json @@ -20,7 +20,7 @@ "@types/node": "*", "jest-mock": "^27.0.0-next.10", "jest-util": "^27.0.0-next.11", - "jsdom": "^16.4.0" + "jsdom": "^16.6.0" }, "devDependencies": { "@jest/test-utils": "^27.0.0", diff --git a/testSetupFile.js b/testSetupFile.js index 7f73aec1ef96..ef9ed18680f6 100644 --- a/testSetupFile.js +++ b/testSetupFile.js @@ -8,6 +8,3 @@ // Some of the `jest-runtime` tests are very slow and cause // timeouts on travis jest.setTimeout(70000); - -// this module does some funky stuff with `require.cache`, flooding the terminal with output -jest.mock('stealthy-require', () => (_, m) => m()); diff --git a/yarn.lock b/yarn.lock index 91f7990a60a5..eae8f77926af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2659,7 +2659,6 @@ __metadata: rimraf: ^3.0.0 semver: ^7.3.2 slash: ^3.0.0 - stealthy-require: ^1.1.1 string-length: ^4.0.1 strip-ansi: ^6.0.0 strip-json-comments: ^3.1.1 @@ -4747,9 +4746,9 @@ __metadata: linkType: hard "@types/node@npm:^14.0.27, @types/node@npm:^14.14.28": - version: 14.14.45 - resolution: "@types/node@npm:14.14.45" - checksum: b9ad381a8cc5273bfd75d5870f57eed2b0978a5afe9e7e0347fcdb955e9fed502277a374c2837c3e1fe6a7ade58d53a460d954dbbe50e2f18bdd7e86075ffca9 + version: 14.17.1 + resolution: "@types/node@npm:14.17.1" + checksum: 3ab1180ff2579f4039aa2416087df03e4e8b5f930b64e024ad2b2ae73e546f6054c3bae0324180d425944c7c408c02fdf6ca71f5a265ed05f28aeaae0a2c3599 languageName: node linkType: hard @@ -5459,7 +5458,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.1.0": +"acorn@npm:^8.0.4, acorn@npm:^8.2.4": version: 8.2.4 resolution: "acorn@npm:8.2.4" bin: @@ -12968,7 +12967,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-potential-custom-element-name@npm:^1.0.0": +"is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" checksum: 25520ce8de393b87c8a2ce4d410c424d16baab0d5a43cbf76af148940725e489dbf3541a43371bcc0881fcb186d9a4ed18b774a11ac8743dd064303cea8de50d @@ -13413,7 +13412,7 @@ fsevents@^1.2.7: "@types/node": "*" jest-mock: ^27.0.0-next.10 jest-util: ^27.0.0-next.11 - jsdom: ^16.4.0 + jsdom: ^16.6.0 languageName: unknown linkType: soft @@ -14150,12 +14149,12 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jsdom@npm:^16.4.0": - version: 16.5.3 - resolution: "jsdom@npm:16.5.3" +"jsdom@npm:^16.6.0": + version: 16.6.0 + resolution: "jsdom@npm:16.6.0" dependencies: abab: ^2.0.5 - acorn: ^8.1.0 + acorn: ^8.2.4 acorn-globals: ^6.0.0 cssom: ^0.4.4 cssstyle: ^2.3.0 @@ -14163,12 +14162,13 @@ fsevents@^1.2.7: decimal.js: ^10.2.1 domexception: ^2.0.1 escodegen: ^2.0.0 + form-data: ^3.0.0 html-encoding-sniffer: ^2.0.1 - is-potential-custom-element-name: ^1.0.0 + http-proxy-agent: ^4.0.1 + https-proxy-agent: ^5.0.0 + is-potential-custom-element-name: ^1.0.1 nwsapi: ^2.2.0 parse5: 6.0.1 - request: ^2.88.2 - request-promise-native: ^1.0.9 saxes: ^5.0.1 symbol-tree: ^3.2.4 tough-cookie: ^4.0.0 @@ -14178,14 +14178,14 @@ fsevents@^1.2.7: whatwg-encoding: ^1.0.5 whatwg-mimetype: ^2.3.0 whatwg-url: ^8.5.0 - ws: ^7.4.4 + ws: ^7.4.5 xml-name-validator: ^3.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 02f6e3b5bb6c75f70b256f9fb522ce67cdf035c8e073a61f152876570d29453f164a4f1ea38a62e419511f81f6f75ced793e6332b66a647dc8012daacff27b8e + checksum: ee0c9ef2cf499d01d6186622a3788df72fa970a2eb695a237efebace6d99875a3402062842420badddad02cf1e90a0de88c65a266366721a45732144f7616db6 languageName: node linkType: hard @@ -20213,30 +20213,6 @@ react-native@0.64.0: languageName: node linkType: hard -"request-promise-core@npm:1.1.4": - version: 1.1.4 - resolution: "request-promise-core@npm:1.1.4" - dependencies: - lodash: ^4.17.19 - peerDependencies: - request: ^2.34 - checksum: 7c9c90bf00158f6669e7167425cd113edadaca44b5aebc7c6a7969d9f50d93bfae8275038bdf6389b4e94f1cacacca7e5830d28701692818bdfba353eeb2ddfd - languageName: node - linkType: hard - -"request-promise-native@npm:^1.0.9": - version: 1.0.9 - resolution: "request-promise-native@npm:1.0.9" - dependencies: - request-promise-core: 1.1.4 - stealthy-require: ^1.1.1 - tough-cookie: ^2.3.3 - peerDependencies: - request: ^2.34 - checksum: 532570f00559f826ad372d36a152c3cf1aa184d0876b04ed7c18a9fa391fa2108978eca837ae1fb681d2dab63bd6c74c6660022b82ecdb2682d77859314d0b6e - languageName: node - linkType: hard - "request@npm:^2.88.0, request@npm:^2.88.2": version: 2.88.2 resolution: "request@npm:2.88.2" @@ -21563,13 +21539,6 @@ react-native@0.64.0: languageName: node linkType: hard -"stealthy-require@npm:^1.1.1": - version: 1.1.1 - resolution: "stealthy-require@npm:1.1.1" - checksum: f24a9bc613817dea37afcbf64578f2ba0195916d906ebdaa1c1d5b8e9d51fd462cbf4c61ae04217babd0cf662e6c0115fd972dffa8e62a7f6f44f3109fb4c796 - languageName: node - linkType: hard - "stream-browserify@npm:^2.0.1": version: 2.0.2 resolution: "stream-browserify@npm:2.0.2" @@ -22441,16 +22410,6 @@ react-native@0.64.0: languageName: node linkType: hard -"tough-cookie@npm:^2.3.3, tough-cookie@npm:~2.5.0": - version: 2.5.0 - resolution: "tough-cookie@npm:2.5.0" - dependencies: - psl: ^1.1.28 - punycode: ^2.1.1 - checksum: bf5d6fac5ce0bebc5876cb9b9a79d3d9ea21c9e4099f3d3e64701d6ba170a052cb88cece6737ec2473bac4f0a4f6c75d46ec17985be8587c6bbdd38d91625cb4 - languageName: node - linkType: hard - "tough-cookie@npm:^4.0.0": version: 4.0.0 resolution: "tough-cookie@npm:4.0.0" @@ -22462,6 +22421,16 @@ react-native@0.64.0: languageName: node linkType: hard +"tough-cookie@npm:~2.5.0": + version: 2.5.0 + resolution: "tough-cookie@npm:2.5.0" + dependencies: + psl: ^1.1.28 + punycode: ^2.1.1 + checksum: bf5d6fac5ce0bebc5876cb9b9a79d3d9ea21c9e4099f3d3e64701d6ba170a052cb88cece6737ec2473bac4f0a4f6c75d46ec17985be8587c6bbdd38d91625cb4 + languageName: node + linkType: hard + "tr46@npm:^1.0.1": version: 1.0.1 resolution: "tr46@npm:1.0.1" @@ -24312,7 +24281,7 @@ react-native@0.64.0: languageName: node linkType: hard -"ws@npm:^7, ws@npm:^7.3.1, ws@npm:^7.4.4": +"ws@npm:^7, ws@npm:^7.3.1, ws@npm:^7.4.5": version: 7.4.5 resolution: "ws@npm:7.4.5" peerDependencies: From 7c9441b68cd255f7745f57475b59b961454b12f2 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 12:04:38 +0200 Subject: [PATCH 35/65] chore: update changelog for release --- CHANGELOG.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f1c8738fb6a..30737c46d947 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,16 @@ ### Fixes -- `[jest-environment-jsdom]` Bump version of JSDOM to avoid deprecated `request` package ([#11442](https://github.com/facebook/jest/pull/11442)) - ### Chore & Maintenance ### Performance +## 27.0.1 + +### Fixes + +- `[jest-environment-jsdom]` Bump version of JSDOM to avoid deprecated `request` package ([#11442](https://github.com/facebook/jest/pull/11442)) + ## 27.0.0 ### Features From 2cb20e945a26b2c9867b30b787e81f6317e59aa1 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 12:06:16 +0200 Subject: [PATCH 36/65] v27.0.1 --- lerna.json | 2 +- packages/babel-jest/package.json | 10 ++--- packages/babel-plugin-jest-hoist/package.json | 2 +- packages/babel-preset-jest/package.json | 4 +- packages/diff-sequences/package.json | 2 +- packages/expect/package.json | 14 +++---- packages/jest-changed-files/package.json | 4 +- packages/jest-circus/package.json | 28 ++++++------- packages/jest-cli/package.json | 16 +++---- packages/jest-config/package.json | 28 ++++++------- packages/jest-console/package.json | 10 ++--- packages/jest-core/package.json | 42 +++++++++---------- .../package.json | 6 +-- packages/jest-diff/package.json | 10 ++--- packages/jest-docblock/package.json | 2 +- packages/jest-each/package.json | 10 ++--- packages/jest-environment-jsdom/package.json | 14 +++---- packages/jest-environment-node/package.json | 14 +++---- packages/jest-environment/package.json | 8 ++-- packages/jest-fake-timers/package.json | 10 ++--- packages/jest-get-type/package.json | 2 +- packages/jest-globals/package.json | 8 ++-- packages/jest-haste-map/package.json | 14 +++---- packages/jest-jasmine2/package.json | 26 ++++++------ packages/jest-leak-detector/package.json | 6 +-- packages/jest-matcher-utils/package.json | 10 ++--- packages/jest-message-util/package.json | 6 +-- packages/jest-mock/package.json | 4 +- packages/jest-phabricator/package.json | 4 +- packages/jest-regex-util/package.json | 2 +- packages/jest-repl/package.json | 20 ++++----- packages/jest-reporters/package.json | 20 ++++----- .../jest-resolve-dependencies/package.json | 16 +++---- packages/jest-resolve/package.json | 8 ++-- packages/jest-runner/package.json | 32 +++++++------- packages/jest-runtime/package.json | 38 ++++++++--------- packages/jest-serializer/package.json | 2 +- packages/jest-snapshot/package.json | 26 ++++++------ packages/jest-source-map/package.json | 2 +- packages/jest-test-result/package.json | 6 +-- packages/jest-test-sequencer/package.json | 10 ++--- packages/jest-transform/package.json | 12 +++--- packages/jest-types/package.json | 2 +- packages/jest-util/package.json | 4 +- packages/jest-validate/package.json | 8 ++-- packages/jest-watcher/package.json | 8 ++-- packages/jest-worker/package.json | 4 +- packages/jest/package.json | 6 +-- packages/pretty-format/package.json | 6 +-- packages/test-utils/package.json | 6 +-- 50 files changed, 277 insertions(+), 277 deletions(-) diff --git a/lerna.json b/lerna.json index 22857c0021e5..158bc39dfd17 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "27.0.0", + "version": "27.0.1", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json index 8a63e7c408e2..3d299cdb4a83 100644 --- a/packages/babel-jest/package.json +++ b/packages/babel-jest/package.json @@ -1,7 +1,7 @@ { "name": "babel-jest", "description": "Jest plugin to use babel for transformation.", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,18 +15,18 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/transform": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/transform": "^27.0.1", + "@jest/types": "^27.0.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.0.0-next.10", + "babel-preset-jest": "^27.0.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "slash": "^3.0.0" }, "devDependencies": { "@babel/core": "^7.1.0", - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/graceful-fs": "^4.1.3" }, "peerDependencies": { diff --git a/packages/babel-plugin-jest-hoist/package.json b/packages/babel-plugin-jest-hoist/package.json index a87340cf77f5..7eb504dd35f2 100644 --- a/packages/babel-plugin-jest-hoist/package.json +++ b/packages/babel-plugin-jest-hoist/package.json @@ -1,6 +1,6 @@ { "name": "babel-plugin-jest-hoist", - "version": "27.0.0-next.10", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/babel-preset-jest/package.json b/packages/babel-preset-jest/package.json index ff1ad081722f..0b1487018739 100644 --- a/packages/babel-preset-jest/package.json +++ b/packages/babel-preset-jest/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-jest", - "version": "27.0.0-next.10", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -13,7 +13,7 @@ "./package.json": "./package.json" }, "dependencies": { - "babel-plugin-jest-hoist": "^27.0.0-next.10", + "babel-plugin-jest-hoist": "^27.0.1", "babel-preset-current-node-syntax": "^1.0.0" }, "peerDependencies": { diff --git a/packages/diff-sequences/package.json b/packages/diff-sequences/package.json index 779ab47f022a..7c751b4098cc 100644 --- a/packages/diff-sequences/package.json +++ b/packages/diff-sequences/package.json @@ -1,6 +1,6 @@ { "name": "diff-sequences", - "version": "27.0.0-next.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/expect/package.json b/packages/expect/package.json index 353fb851adbd..8d2831eb2458 100644 --- a/packages/expect/package.json +++ b/packages/expect/package.json @@ -1,6 +1,6 @@ { "name": "expect", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,15 +15,15 @@ "./build/utils": "./build/utils.js" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.0-next.9", - "jest-matcher-utils": "^27.0.0", - "jest-message-util": "^27.0.0", - "jest-regex-util": "^27.0.0-next.0" + "jest-get-type": "^27.0.1", + "jest-matcher-utils": "^27.0.1", + "jest-message-util": "^27.0.1", + "jest-regex-util": "^27.0.1" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "chalk": "^4.0.0", "fast-check": "^2.0.0", "immutable": "^4.0.0-rc.12" diff --git a/packages/jest-changed-files/package.json b/packages/jest-changed-files/package.json index 8423b645d7d8..fe5e15e5c728 100644 --- a/packages/jest-changed-files/package.json +++ b/packages/jest-changed-files/package.json @@ -1,6 +1,6 @@ { "name": "jest-changed-files", - "version": "27.0.0-next.10", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "execa": "^5.0.0", "throat": "^6.0.1" }, diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index c79bba8f929d..405a01807abd 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -1,6 +1,6 @@ { "name": "jest-circus", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,30 +15,30 @@ "./runner": "./runner.js" }, "dependencies": { - "@jest/environment": "^27.0.0", - "@jest/test-result": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/environment": "^27.0.1", + "@jest/test-result": "^27.0.1", + "@jest/types": "^27.0.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.0.0", + "expect": "^27.0.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.0", - "jest-matcher-utils": "^27.0.0", - "jest-message-util": "^27.0.0", - "jest-runner": "^27.0.0", - "jest-runtime": "^27.0.0", - "jest-snapshot": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "pretty-format": "^27.0.0", + "jest-each": "^27.0.1", + "jest-matcher-utils": "^27.0.1", + "jest-message-util": "^27.0.1", + "jest-runner": "^27.0.1", + "jest-runtime": "^27.0.1", + "jest-snapshot": "^27.0.1", + "jest-util": "^27.0.1", + "pretty-format": "^27.0.1", "stack-utils": "^2.0.3", "throat": "^6.0.1" }, "devDependencies": { "@babel/core": "^7.1.0", "@babel/register": "^7.0.0", - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/co": "^4.6.0", "@types/dedent": "^0.7.0", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index 4ee08906df4d..7df7b91ebc53 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -1,7 +1,7 @@ { "name": "jest-cli", "description": "Delightful JavaScript Testing.", - "version": "27.0.0", + "version": "27.0.1", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,21 +10,21 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^27.0.0", - "@jest/test-result": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/core": "^27.0.1", + "@jest/test-result": "^27.0.1", + "@jest/types": "^27.0.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0", + "jest-config": "^27.0.1", + "jest-util": "^27.0.1", + "jest-validate": "^27.0.1", "prompts": "^2.0.1", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.3", "@types/prompts": "^2.0.1", diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index 5d7e9320cb59..329b5d01924f 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -1,6 +1,6 @@ { "name": "jest-config", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -23,25 +23,25 @@ }, "dependencies": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.0.0", - "@jest/types": "^27.0.0-next.10", - "babel-jest": "^27.0.0", + "@jest/test-sequencer": "^27.0.1", + "@jest/types": "^27.0.1", + "babel-jest": "^27.0.1", "chalk": "^4.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", "is-ci": "^3.0.0", - "jest-circus": "^27.0.0", - "jest-environment-jsdom": "^27.0.0", - "jest-environment-node": "^27.0.0", - "jest-get-type": "^27.0.0-next.9", - "jest-jasmine2": "^27.0.0", - "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0", + "jest-circus": "^27.0.1", + "jest-environment-jsdom": "^27.0.1", + "jest-environment-node": "^27.0.1", + "jest-get-type": "^27.0.1", + "jest-jasmine2": "^27.0.1", + "jest-regex-util": "^27.0.1", + "jest-resolve": "^27.0.1", + "jest-util": "^27.0.1", + "jest-validate": "^27.0.1", "micromatch": "^4.0.4", - "pretty-format": "^27.0.0" + "pretty-format": "^27.0.1" }, "devDependencies": { "@types/babel__core": "^7.0.4", diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json index f38fc63b2b3f..d2109bc443af 100644 --- a/packages/jest-console/package.json +++ b/packages/jest-console/package.json @@ -1,6 +1,6 @@ { "name": "@jest/console", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.0.0", - "jest-util": "^27.0.0-next.11", + "jest-message-util": "^27.0.1", + "jest-util": "^27.0.1", "slash": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/node": "*" }, "engines": { diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index e26da1559fdf..ada8d21c0898 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -1,7 +1,7 @@ { "name": "@jest/core", "description": "Delightful JavaScript Testing.", - "version": "27.0.0", + "version": "27.0.1", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -9,30 +9,30 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0", - "@jest/reporters": "^27.0.0", - "@jest/test-result": "^27.0.0", - "@jest/transform": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/console": "^27.0.1", + "@jest/reporters": "^27.0.1", + "@jest/test-result": "^27.0.1", + "@jest/transform": "^27.0.1", + "@jest/types": "^27.0.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.0.0-next.10", - "jest-config": "^27.0.0", - "jest-haste-map": "^27.0.0", - "jest-message-util": "^27.0.0", - "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0", - "jest-resolve-dependencies": "^27.0.0", - "jest-runner": "^27.0.0", - "jest-runtime": "^27.0.0", - "jest-snapshot": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0", - "jest-watcher": "^27.0.0", + "jest-changed-files": "^27.0.1", + "jest-config": "^27.0.1", + "jest-haste-map": "^27.0.1", + "jest-message-util": "^27.0.1", + "jest-regex-util": "^27.0.1", + "jest-resolve": "^27.0.1", + "jest-resolve-dependencies": "^27.0.1", + "jest-runner": "^27.0.1", + "jest-runtime": "^27.0.1", + "jest-snapshot": "^27.0.1", + "jest-util": "^27.0.1", + "jest-validate": "^27.0.1", + "jest-watcher": "^27.0.1", "micromatch": "^4.0.4", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", @@ -40,8 +40,8 @@ "strip-ansi": "^6.0.0" }, "devDependencies": { - "@jest/test-sequencer": "^27.0.0", - "@jest/test-utils": "^27.0.0", + "@jest/test-sequencer": "^27.0.1", + "@jest/test-utils": "^27.0.1", "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/micromatch": "^4.0.1", diff --git a/packages/jest-create-cache-key-function/package.json b/packages/jest-create-cache-key-function/package.json index bd8effe74eed..1fa0d16fabc7 100644 --- a/packages/jest-create-cache-key-function/package.json +++ b/packages/jest-create-cache-key-function/package.json @@ -1,17 +1,17 @@ { "name": "@jest/create-cache-key-function", - "version": "27.0.0-next.11", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", "directory": "packages/jest-create-cache-key-function" }, "dependencies": { - "@jest/types": "^27.0.0-next.10" + "@jest/types": "^27.0.1" }, "devDependencies": { "@types/node": "*", - "jest-util": "^27.0.0-next.11" + "jest-util": "^27.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json index 4bc4bb722703..fb9754f12b6d 100644 --- a/packages/jest-diff/package.json +++ b/packages/jest-diff/package.json @@ -1,6 +1,6 @@ { "name": "jest-diff", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,12 +15,12 @@ }, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.0-next.0", - "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0" + "diff-sequences": "^27.0.1", + "jest-get-type": "^27.0.1", + "pretty-format": "^27.0.1" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "strip-ansi": "^6.0.0" }, "engines": { diff --git a/packages/jest-docblock/package.json b/packages/jest-docblock/package.json index 1c9b8f1b259c..67eba7a10ef0 100644 --- a/packages/jest-docblock/package.json +++ b/packages/jest-docblock/package.json @@ -1,6 +1,6 @@ { "name": "jest-docblock", - "version": "27.0.0-next.10", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-each/package.json b/packages/jest-each/package.json index ce1056f619f6..7acc376844a9 100644 --- a/packages/jest-each/package.json +++ b/packages/jest-each/package.json @@ -1,6 +1,6 @@ { "name": "jest-each", - "version": "27.0.0", + "version": "27.0.1", "description": "Parameterised tests for Jest", "main": "./build/index.js", "types": "./build/index.d.ts", @@ -22,11 +22,11 @@ "author": "Matt Phillips (mattphillips)", "license": "MIT", "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "chalk": "^4.0.0", - "jest-get-type": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.11", - "pretty-format": "^27.0.0" + "jest-get-type": "^27.0.1", + "jest-util": "^27.0.1", + "pretty-format": "^27.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json index 4308486b9f7c..3b94ef40cd95 100644 --- a/packages/jest-environment-jsdom/package.json +++ b/packages/jest-environment-jsdom/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-jsdom", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,16 +14,16 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0", - "@jest/fake-timers": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/environment": "^27.0.1", + "@jest/fake-timers": "^27.0.1", + "@jest/types": "^27.0.1", "@types/node": "*", - "jest-mock": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.11", + "jest-mock": "^27.0.1", + "jest-util": "^27.0.1", "jsdom": "^16.6.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/jsdom": "^16.2.4" }, "engines": { diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json index bfb248eab319..66add48496ba 100644 --- a/packages/jest-environment-node/package.json +++ b/packages/jest-environment-node/package.json @@ -1,6 +1,6 @@ { "name": "jest-environment-node", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0", - "@jest/fake-timers": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/environment": "^27.0.1", + "@jest/fake-timers": "^27.0.1", + "@jest/types": "^27.0.1", "@types/node": "*", - "jest-mock": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.11" + "jest-mock": "^27.0.1", + "jest-util": "^27.0.1" }, "devDependencies": { - "@jest/test-utils": "^27.0.0" + "@jest/test-utils": "^27.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json index 344abe9ce16b..f473abb53a51 100644 --- a/packages/jest-environment/package.json +++ b/packages/jest-environment/package.json @@ -1,6 +1,6 @@ { "name": "@jest/environment", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,10 +14,10 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/fake-timers": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/fake-timers": "^27.0.1", + "@jest/types": "^27.0.1", "@types/node": "*", - "jest-mock": "^27.0.0-next.10" + "jest-mock": "^27.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json index deae7700ea00..b4ab75e8cf95 100644 --- a/packages/jest-fake-timers/package.json +++ b/packages/jest-fake-timers/package.json @@ -1,6 +1,6 @@ { "name": "@jest/fake-timers", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,12 +14,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "@sinonjs/fake-timers": "^7.0.2", "@types/node": "*", - "jest-message-util": "^27.0.0", - "jest-mock": "^27.0.0-next.10", - "jest-util": "^27.0.0-next.11" + "jest-message-util": "^27.0.1", + "jest-mock": "^27.0.1", + "jest-util": "^27.0.1" }, "devDependencies": { "@types/sinonjs__fake-timers": "^6.0.1", diff --git a/packages/jest-get-type/package.json b/packages/jest-get-type/package.json index c958e66f048a..f3e292d6d754 100644 --- a/packages/jest-get-type/package.json +++ b/packages/jest-get-type/package.json @@ -1,7 +1,7 @@ { "name": "jest-get-type", "description": "A utility function to get the type of a value", - "version": "27.0.0-next.9", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-globals/package.json b/packages/jest-globals/package.json index 6eede5341c75..8a0c98fe6e10 100644 --- a/packages/jest-globals/package.json +++ b/packages/jest-globals/package.json @@ -1,6 +1,6 @@ { "name": "@jest/globals", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -17,9 +17,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/environment": "^27.0.0", - "@jest/types": "^27.0.0-next.10", - "expect": "^27.0.0" + "@jest/environment": "^27.0.1", + "@jest/types": "^27.0.1", + "expect": "^27.0.1" }, "publishConfig": { "access": "public" diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index a79a5165a320..26b14e96160f 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -1,6 +1,6 @@ { "name": "jest-haste-map", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,21 +14,21 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.0-next.0", - "jest-serializer": "^27.0.0-next.9", - "jest-util": "^27.0.0-next.11", - "jest-worker": "^27.0.0", + "jest-regex-util": "^27.0.1", + "jest-serializer": "^27.0.1", + "jest-util": "^27.0.1", + "jest-worker": "^27.0.1", "micromatch": "^4.0.4", "walker": "^1.0.7" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/anymatch": "^1.3.1", "@types/fb-watchman": "^2.0.0", "@types/micromatch": "^4.0.1", diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json index 18c1d9089f29..36923b3eb5f7 100644 --- a/packages/jest-jasmine2/package.json +++ b/packages/jest-jasmine2/package.json @@ -1,6 +1,6 @@ { "name": "jest-jasmine2", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,22 +15,22 @@ }, "dependencies": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.0.0", - "@jest/source-map": "^27.0.0-next.3", - "@jest/test-result": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/environment": "^27.0.1", + "@jest/source-map": "^27.0.1", + "@jest/test-result": "^27.0.1", + "@jest/types": "^27.0.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.0.0", + "expect": "^27.0.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.0", - "jest-matcher-utils": "^27.0.0", - "jest-message-util": "^27.0.0", - "jest-runtime": "^27.0.0", - "jest-snapshot": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "pretty-format": "^27.0.0", + "jest-each": "^27.0.1", + "jest-matcher-utils": "^27.0.1", + "jest-message-util": "^27.0.1", + "jest-runtime": "^27.0.1", + "jest-snapshot": "^27.0.1", + "jest-util": "^27.0.1", + "pretty-format": "^27.0.1", "throat": "^6.0.1" }, "devDependencies": { diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json index 16020e8cfa6d..8f32a24a24ae 100644 --- a/packages/jest-leak-detector/package.json +++ b/packages/jest-leak-detector/package.json @@ -1,6 +1,6 @@ { "name": "jest-leak-detector", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,8 +14,8 @@ "./package.json": "./package.json" }, "dependencies": { - "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0" + "jest-get-type": "^27.0.1", + "pretty-format": "^27.0.1" }, "devDependencies": { "@types/weak-napi": "^2.0.0", diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json index af7524ebf054..5d1822052d19 100644 --- a/packages/jest-matcher-utils/package.json +++ b/packages/jest-matcher-utils/package.json @@ -1,7 +1,7 @@ { "name": "jest-matcher-utils", "description": "A set of utility functions for expect and related packages", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -19,12 +19,12 @@ }, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.0.0", - "jest-get-type": "^27.0.0-next.9", - "pretty-format": "^27.0.0" + "jest-diff": "^27.0.1", + "jest-get-type": "^27.0.1", + "pretty-format": "^27.0.1" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/node": "*" }, "publishConfig": { diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index 94f65c12353a..cbf19cb27d1f 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-message-util", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -18,12 +18,12 @@ }, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.0.0", + "pretty-format": "^27.0.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, diff --git a/packages/jest-mock/package.json b/packages/jest-mock/package.json index 83b02ef0631b..a0f8ed0f472f 100644 --- a/packages/jest-mock/package.json +++ b/packages/jest-mock/package.json @@ -1,6 +1,6 @@ { "name": "jest-mock", - "version": "27.0.0-next.10", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -10,7 +10,7 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "@types/node": "*" }, "license": "MIT", diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json index 30578ec8afbb..4158f2825170 100644 --- a/packages/jest-phabricator/package.json +++ b/packages/jest-phabricator/package.json @@ -1,6 +1,6 @@ { "name": "jest-phabricator", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -12,7 +12,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0" + "@jest/test-result": "^27.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-regex-util/package.json b/packages/jest-regex-util/package.json index b14889bd7a55..0931e5f10cc4 100644 --- a/packages/jest-regex-util/package.json +++ b/packages/jest-regex-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-regex-util", - "version": "27.0.0-next.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-repl/package.json b/packages/jest-repl/package.json index 4af9e6a27135..9dc2eb2b2b6b 100644 --- a/packages/jest-repl/package.json +++ b/packages/jest-repl/package.json @@ -1,6 +1,6 @@ { "name": "jest-repl", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,20 +16,20 @@ "./bin/jest-runtime-cli": "./bin/jest-runtime-cli.js" }, "dependencies": { - "@jest/console": "^27.0.0", - "@jest/environment": "^27.0.0", - "@jest/transform": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/console": "^27.0.1", + "@jest/environment": "^27.0.1", + "@jest/transform": "^27.0.1", + "@jest/types": "^27.0.1", "chalk": "^4.0.0", - "jest-config": "^27.0.0", - "jest-runtime": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0", + "jest-config": "^27.0.1", + "jest-runtime": "^27.0.1", + "jest-util": "^27.0.1", + "jest-validate": "^27.0.1", "repl": "^0.1.3", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/yargs": "^16.0.0", "execa": "^5.0.0" }, diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index 70701f3bbeb8..82fe335ce9a7 100644 --- a/packages/jest-reporters/package.json +++ b/packages/jest-reporters/package.json @@ -1,7 +1,7 @@ { "name": "@jest/reporters", "description": "Jest's reporters", - "version": "27.0.0", + "version": "27.0.1", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -10,10 +10,10 @@ }, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.0.0", - "@jest/test-result": "^27.0.0", - "@jest/transform": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/console": "^27.0.1", + "@jest/test-result": "^27.0.1", + "@jest/transform": "^27.0.1", + "@jest/types": "^27.0.1", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", @@ -24,10 +24,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.0.0", - "jest-resolve": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "jest-worker": "^27.0.0", + "jest-haste-map": "^27.0.1", + "jest-resolve": "^27.0.1", + "jest-util": "^27.0.1", + "jest-worker": "^27.0.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -35,7 +35,7 @@ "v8-to-istanbul": "^7.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.3", diff --git a/packages/jest-resolve-dependencies/package.json b/packages/jest-resolve-dependencies/package.json index 445888f58323..3cbd5d2d4efd 100644 --- a/packages/jest-resolve-dependencies/package.json +++ b/packages/jest-resolve-dependencies/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve-dependencies", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,15 +14,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", - "jest-regex-util": "^27.0.0-next.0", - "jest-snapshot": "^27.0.0" + "@jest/types": "^27.0.1", + "jest-regex-util": "^27.0.1", + "jest-snapshot": "^27.0.1" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", - "jest-haste-map": "^27.0.0", - "jest-resolve": "^27.0.0", - "jest-runtime": "^27.0.0" + "@jest/test-utils": "^27.0.1", + "jest-haste-map": "^27.0.1", + "jest-resolve": "^27.0.1", + "jest-runtime": "^27.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index e96d86cdbd6e..7d786f335169 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -1,6 +1,6 @@ { "name": "jest-resolve", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,19 +14,19 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "chalk": "^4.0.0", "escalade": "^3.1.1", "graceful-fs": "^4.2.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.0.0-next.11", + "jest-util": "^27.0.1", "resolve": "^1.20.0", "slash": "^3.0.0" }, "devDependencies": { "@types/graceful-fs": "^4.1.3", "@types/resolve": "^1.20.0", - "jest-haste-map": "^27.0.0" + "jest-haste-map": "^27.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 4e3f4f3dde83..bee44a69ae61 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -1,6 +1,6 @@ { "name": "jest-runner", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,25 +14,25 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0", - "@jest/environment": "^27.0.0", - "@jest/test-result": "^27.0.0", - "@jest/transform": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/console": "^27.0.1", + "@jest/environment": "^27.0.1", + "@jest/test-result": "^27.0.1", + "@jest/transform": "^27.0.1", + "@jest/types": "^27.0.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-config": "^27.0.0", - "jest-docblock": "^27.0.0-next.10", - "jest-haste-map": "^27.0.0", - "jest-leak-detector": "^27.0.0", - "jest-message-util": "^27.0.0", - "jest-resolve": "^27.0.0", - "jest-runtime": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "jest-worker": "^27.0.0", + "jest-config": "^27.0.1", + "jest-docblock": "^27.0.1", + "jest-haste-map": "^27.0.1", + "jest-leak-detector": "^27.0.1", + "jest-message-util": "^27.0.1", + "jest-resolve": "^27.0.1", + "jest-runtime": "^27.0.1", + "jest-util": "^27.0.1", + "jest-worker": "^27.0.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -40,7 +40,7 @@ "@types/exit": "^0.1.30", "@types/graceful-fs": "^4.1.2", "@types/source-map-support": "^0.5.0", - "jest-jasmine2": "^27.0.0" + "jest-jasmine2": "^27.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index 8fe3aac550dc..b803f8ec8621 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -1,6 +1,6 @@ { "name": "jest-runtime", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,14 +14,14 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0", - "@jest/environment": "^27.0.0", - "@jest/fake-timers": "^27.0.0", - "@jest/globals": "^27.0.0", - "@jest/source-map": "^27.0.0-next.3", - "@jest/test-result": "^27.0.0", - "@jest/transform": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/console": "^27.0.1", + "@jest/environment": "^27.0.1", + "@jest/fake-timers": "^27.0.1", + "@jest/globals": "^27.0.1", + "@jest/source-map": "^27.0.1", + "@jest/test-result": "^27.0.1", + "@jest/transform": "^27.0.1", + "@jest/types": "^27.0.1", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", @@ -29,26 +29,26 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0", - "jest-message-util": "^27.0.0", - "jest-mock": "^27.0.0-next.10", - "jest-regex-util": "^27.0.0-next.0", - "jest-resolve": "^27.0.0", - "jest-snapshot": "^27.0.0", - "jest-util": "^27.0.0-next.11", - "jest-validate": "^27.0.0", + "jest-haste-map": "^27.0.1", + "jest-message-util": "^27.0.1", + "jest-mock": "^27.0.1", + "jest-regex-util": "^27.0.1", + "jest-resolve": "^27.0.1", + "jest-snapshot": "^27.0.1", + "jest-util": "^27.0.1", + "jest-validate": "^27.0.1", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.0.3" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", "@types/graceful-fs": "^4.1.2", "@types/node": "^14.0.27", "execa": "^5.0.0", - "jest-environment-node": "^27.0.0", + "jest-environment-node": "^27.0.1", "jest-snapshot-serializer-raw": "^1.1.0" }, "engines": { diff --git a/packages/jest-serializer/package.json b/packages/jest-serializer/package.json index bbbdbd42f9b6..7801f3c99805 100644 --- a/packages/jest-serializer/package.json +++ b/packages/jest-serializer/package.json @@ -1,6 +1,6 @@ { "name": "jest-serializer", - "version": "27.0.0-next.9", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json index 5df287aafc92..bbfc16723746 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -1,6 +1,6 @@ { "name": "jest-snapshot", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -20,29 +20,29 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/transform": "^27.0.1", + "@jest/types": "^27.0.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.0.0", + "expect": "^27.0.1", "graceful-fs": "^4.2.4", - "jest-diff": "^27.0.0", - "jest-get-type": "^27.0.0-next.9", - "jest-haste-map": "^27.0.0", - "jest-matcher-utils": "^27.0.0", - "jest-message-util": "^27.0.0", - "jest-resolve": "^27.0.0", - "jest-util": "^27.0.0-next.11", + "jest-diff": "^27.0.1", + "jest-get-type": "^27.0.1", + "jest-haste-map": "^27.0.1", + "jest-matcher-utils": "^27.0.1", + "jest-message-util": "^27.0.1", + "jest-resolve": "^27.0.1", + "jest-util": "^27.0.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.0.0", + "pretty-format": "^27.0.1", "semver": "^7.3.2" }, "devDependencies": { "@babel/preset-flow": "^7.7.2", "@babel/preset-react": "^7.7.2", - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/graceful-fs": "^4.1.3", "@types/natural-compare": "^1.4.0", "@types/semver": "^7.1.0", diff --git a/packages/jest-source-map/package.json b/packages/jest-source-map/package.json index 4371c5fa1f55..f33950b8de16 100644 --- a/packages/jest-source-map/package.json +++ b/packages/jest-source-map/package.json @@ -1,6 +1,6 @@ { "name": "@jest/source-map", - "version": "27.0.0-next.3", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-test-result/package.json b/packages/jest-test-result/package.json index e0268d6cf3bd..2db9b7a83fe5 100644 --- a/packages/jest-test-result/package.json +++ b/packages/jest-test-result/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-result", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,8 +14,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/console": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/console": "^27.0.1", + "@jest/types": "^27.0.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json index 08f7539f950b..c1e6ace6c674 100644 --- a/packages/jest-test-sequencer/package.json +++ b/packages/jest-test-sequencer/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-sequencer", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,11 +14,11 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0", + "@jest/test-result": "^27.0.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0", - "jest-runner": "^27.0.0", - "jest-runtime": "^27.0.0" + "jest-haste-map": "^27.0.1", + "jest-runner": "^27.0.1", + "jest-runtime": "^27.0.1" }, "devDependencies": { "@types/graceful-fs": "^4.1.3" diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index fb6b7bd1efe8..fca2de79b35a 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -1,6 +1,6 @@ { "name": "@jest/transform", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -15,15 +15,15 @@ }, "dependencies": { "@babel/core": "^7.1.0", - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.0", - "jest-regex-util": "^27.0.0-next.0", - "jest-util": "^27.0.0-next.11", + "jest-haste-map": "^27.0.1", + "jest-regex-util": "^27.0.1", + "jest-util": "^27.0.1", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -31,7 +31,7 @@ "write-file-atomic": "^3.0.0" }, "devDependencies": { - "@jest/test-utils": "^27.0.0", + "@jest/test-utils": "^27.0.1", "@types/babel__core": "^7.1.0", "@types/convert-source-map": "^1.5.1", "@types/fast-json-stable-stringify": "^2.0.0", diff --git a/packages/jest-types/package.json b/packages/jest-types/package.json index ead2b1f6f1fa..1ed50bb11e7e 100644 --- a/packages/jest-types/package.json +++ b/packages/jest-types/package.json @@ -1,6 +1,6 @@ { "name": "@jest/types", - "version": "27.0.0-next.10", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json index eeec59f0caa3..4c103dd8e05e 100644 --- a/packages/jest-util/package.json +++ b/packages/jest-util/package.json @@ -1,6 +1,6 @@ { "name": "jest-util", - "version": "27.0.0-next.11", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,7 +14,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json index 5c9609a534cb..8a68cee30105 100644 --- a/packages/jest-validate/package.json +++ b/packages/jest-validate/package.json @@ -1,6 +1,6 @@ { "name": "jest-validate", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -14,12 +14,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.0-next.9", + "jest-get-type": "^27.0.1", "leven": "^3.1.0", - "pretty-format": "^27.0.0" + "pretty-format": "^27.0.1" }, "devDependencies": { "@types/yargs": "^16.0.0" diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json index f829f04c2d8b..bec5c42d3408 100644 --- a/packages/jest-watcher/package.json +++ b/packages/jest-watcher/package.json @@ -1,7 +1,7 @@ { "name": "jest-watcher", "description": "Delightful JavaScript Testing.", - "version": "27.0.0", + "version": "27.0.1", "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { @@ -9,12 +9,12 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/test-result": "^27.0.0", - "@jest/types": "^27.0.0-next.10", + "@jest/test-result": "^27.0.1", + "@jest/types": "^27.0.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.0.0-next.11", + "jest-util": "^27.0.1", "string-length": "^4.0.1" }, "repository": { diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json index 021b050ee756..d7585d56cb9a 100644 --- a/packages/jest-worker/package.json +++ b/packages/jest-worker/package.json @@ -1,6 +1,6 @@ { "name": "jest-worker", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -22,7 +22,7 @@ "@types/merge-stream": "^1.1.2", "@types/supports-color": "^8.1.0", "get-stream": "^6.0.0", - "jest-leak-detector": "^27.0.0", + "jest-leak-detector": "^27.0.1", "worker-farm": "^1.6.0" }, "engines": { diff --git a/packages/jest/package.json b/packages/jest/package.json index f4f037783d69..98d3d7991fd5 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -1,7 +1,7 @@ { "name": "jest", "description": "Delightful JavaScript Testing.", - "version": "27.0.0", + "version": "27.0.1", "main": "./build/jest.js", "types": "./build/jest.d.ts", "exports": { @@ -10,9 +10,9 @@ "./bin/jest": "./bin/jest.js" }, "dependencies": { - "@jest/core": "^27.0.0", + "@jest/core": "^27.0.1", "import-local": "^3.0.2", - "jest-cli": "^27.0.0" + "jest-cli": "^27.0.1" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0" diff --git a/packages/pretty-format/package.json b/packages/pretty-format/package.json index 9952065ded3b..1c2474aab7e3 100644 --- a/packages/pretty-format/package.json +++ b/packages/pretty-format/package.json @@ -1,6 +1,6 @@ { "name": "pretty-format", - "version": "27.0.0", + "version": "27.0.1", "repository": { "type": "git", "url": "https://github.com/facebook/jest.git", @@ -16,7 +16,7 @@ }, "author": "James Kyle ", "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -26,7 +26,7 @@ "@types/react-is": "^17.0.0", "@types/react-test-renderer": "*", "immutable": "4.0.0-rc.9", - "jest-util": "^27.0.0-next.11", + "jest-util": "^27.0.1", "react": "*", "react-dom": "*", "react-test-renderer": "*" diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 0143cb6635e5..3ae1646a648c 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@jest/test-utils", - "version": "27.0.0", + "version": "27.0.1", "private": true, "license": "MIT", "main": "./build/index.js", @@ -10,13 +10,13 @@ "./package.json": "./package.json" }, "dependencies": { - "@jest/types": "^27.0.0-next.10", + "@jest/types": "^27.0.1", "@types/jest": "*", "@types/node": "*", "@types/semver": "^7.1.0", "ansi-regex": "^5.0.0", "ansi-styles": "^5.0.0", - "pretty-format": "^27.0.0", + "pretty-format": "^27.0.1", "semver": "^7.3.2" }, "engines": { From fab392e5e98adf22b539f9623493f0b2efa04f2c Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 12:07:49 +0200 Subject: [PATCH 37/65] chore: update lockfile after publish --- yarn.lock | 540 +++++++++++++++++++++++++++--------------------------- 1 file changed, 270 insertions(+), 270 deletions(-) diff --git a/yarn.lock b/yarn.lock index eae8f77926af..3a10d67d66db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2464,16 +2464,16 @@ __metadata: languageName: node linkType: hard -"@jest/console@^27.0.0, @jest/console@workspace:packages/jest-console": +"@jest/console@^27.0.1, @jest/console@workspace:packages/jest-console": version: 0.0.0-use.local resolution: "@jest/console@workspace:packages/jest-console" dependencies: - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^27.0.0 - jest-util: ^27.0.0-next.11 + jest-message-util: ^27.0.1 + jest-util: ^27.0.1 slash: ^3.0.0 languageName: unknown linkType: soft @@ -2492,17 +2492,17 @@ __metadata: languageName: node linkType: hard -"@jest/core@^27.0.0, @jest/core@workspace:packages/jest-core": +"@jest/core@^27.0.1, @jest/core@workspace:packages/jest-core": version: 0.0.0-use.local resolution: "@jest/core@workspace:packages/jest-core" dependencies: - "@jest/console": ^27.0.0 - "@jest/reporters": ^27.0.0 - "@jest/test-result": ^27.0.0 - "@jest/test-sequencer": ^27.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/transform": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/console": ^27.0.1 + "@jest/reporters": ^27.0.1 + "@jest/test-result": ^27.0.1 + "@jest/test-sequencer": ^27.0.1 + "@jest/test-utils": ^27.0.1 + "@jest/transform": ^27.0.1 + "@jest/types": ^27.0.1 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 "@types/micromatch": ^4.0.1 @@ -2513,20 +2513,20 @@ __metadata: emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-changed-files: ^27.0.0-next.10 - jest-config: ^27.0.0 - jest-haste-map: ^27.0.0 - jest-message-util: ^27.0.0 - jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0 - jest-resolve-dependencies: ^27.0.0 - jest-runner: ^27.0.0 - jest-runtime: ^27.0.0 - jest-snapshot: ^27.0.0 + jest-changed-files: ^27.0.1 + jest-config: ^27.0.1 + jest-haste-map: ^27.0.1 + jest-message-util: ^27.0.1 + jest-regex-util: ^27.0.1 + jest-resolve: ^27.0.1 + jest-resolve-dependencies: ^27.0.1 + jest-runner: ^27.0.1 + jest-runtime: ^27.0.1 + jest-snapshot: ^27.0.1 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0 - jest-watcher: ^27.0.0 + jest-util: ^27.0.1 + jest-validate: ^27.0.1 + jest-watcher: ^27.0.1 micromatch: ^4.0.4 p-each-series: ^2.1.0 rimraf: ^3.0.0 @@ -2544,45 +2544,45 @@ __metadata: version: 0.0.0-use.local resolution: "@jest/create-cache-key-function@workspace:packages/jest-create-cache-key-function" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@types/node": "*" - jest-util: ^27.0.0-next.11 + jest-util: ^27.0.1 languageName: unknown linkType: soft -"@jest/environment@^27.0.0, @jest/environment@workspace:packages/jest-environment": +"@jest/environment@^27.0.1, @jest/environment@workspace:packages/jest-environment": version: 0.0.0-use.local resolution: "@jest/environment@workspace:packages/jest-environment" dependencies: - "@jest/fake-timers": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/fake-timers": ^27.0.1 + "@jest/types": ^27.0.1 "@types/node": "*" - jest-mock: ^27.0.0-next.10 + jest-mock: ^27.0.1 languageName: unknown linkType: soft -"@jest/fake-timers@^27.0.0, @jest/fake-timers@workspace:packages/jest-fake-timers": +"@jest/fake-timers@^27.0.1, @jest/fake-timers@workspace:packages/jest-fake-timers": version: 0.0.0-use.local resolution: "@jest/fake-timers@workspace:packages/jest-fake-timers" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@sinonjs/fake-timers": ^7.0.2 "@types/node": "*" "@types/sinonjs__fake-timers": ^6.0.1 - jest-message-util: ^27.0.0 - jest-mock: ^27.0.0-next.10 + jest-message-util: ^27.0.1 + jest-mock: ^27.0.1 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.11 + jest-util: ^27.0.1 languageName: unknown linkType: soft -"@jest/globals@^27.0.0, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": +"@jest/globals@^27.0.1, @jest/globals@workspace:*, @jest/globals@workspace:packages/jest-globals": version: 0.0.0-use.local resolution: "@jest/globals@workspace:packages/jest-globals" dependencies: - "@jest/environment": ^27.0.0 - "@jest/types": ^27.0.0-next.10 - expect: ^27.0.0 + "@jest/environment": ^27.0.1 + "@jest/types": ^27.0.1 + expect: ^27.0.1 languageName: unknown linkType: soft @@ -2671,16 +2671,16 @@ __metadata: languageName: unknown linkType: soft -"@jest/reporters@^27.0.0, @jest/reporters@workspace:packages/jest-reporters": +"@jest/reporters@^27.0.1, @jest/reporters@workspace:packages/jest-reporters": version: 0.0.0-use.local resolution: "@jest/reporters@workspace:packages/jest-reporters" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.0.0 - "@jest/test-result": ^27.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/transform": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/console": ^27.0.1 + "@jest/test-result": ^27.0.1 + "@jest/test-utils": ^27.0.1 + "@jest/transform": ^27.0.1 + "@jest/types": ^27.0.1 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 @@ -2700,10 +2700,10 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^27.0.0 - jest-resolve: ^27.0.0 - jest-util: ^27.0.0-next.11 - jest-worker: ^27.0.0 + jest-haste-map: ^27.0.1 + jest-resolve: ^27.0.1 + jest-util: ^27.0.1 + jest-worker: ^27.0.1 mock-fs: ^4.4.1 slash: ^3.0.0 source-map: ^0.6.0 @@ -2719,7 +2719,7 @@ __metadata: languageName: unknown linkType: soft -"@jest/source-map@^27.0.0-next.3, @jest/source-map@workspace:packages/jest-source-map": +"@jest/source-map@^27.0.1, @jest/source-map@workspace:packages/jest-source-map": version: 0.0.0-use.local resolution: "@jest/source-map@workspace:packages/jest-source-map" dependencies: @@ -2730,12 +2730,12 @@ __metadata: languageName: unknown linkType: soft -"@jest/test-result@^27.0.0, @jest/test-result@workspace:packages/jest-test-result": +"@jest/test-result@^27.0.1, @jest/test-result@workspace:packages/jest-test-result": version: 0.0.0-use.local resolution: "@jest/test-result@workspace:packages/jest-test-result" dependencies: - "@jest/console": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/console": ^27.0.1 + "@jest/types": ^27.0.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 languageName: unknown @@ -2753,41 +2753,41 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@^27.0.0, @jest/test-sequencer@workspace:packages/jest-test-sequencer": +"@jest/test-sequencer@^27.0.1, @jest/test-sequencer@workspace:packages/jest-test-sequencer": version: 0.0.0-use.local resolution: "@jest/test-sequencer@workspace:packages/jest-test-sequencer" dependencies: - "@jest/test-result": ^27.0.0 + "@jest/test-result": ^27.0.1 "@types/graceful-fs": ^4.1.3 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0 - jest-runner: ^27.0.0 - jest-runtime: ^27.0.0 + jest-haste-map: ^27.0.1 + jest-runner: ^27.0.1 + jest-runtime: ^27.0.1 languageName: unknown linkType: soft -"@jest/test-utils@^27.0.0, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": +"@jest/test-utils@^27.0.1, @jest/test-utils@workspace:*, @jest/test-utils@workspace:packages/test-utils": version: 0.0.0-use.local resolution: "@jest/test-utils@workspace:packages/test-utils" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@types/jest": "*" "@types/node": "*" "@types/semver": ^7.1.0 ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 - pretty-format: ^27.0.0 + pretty-format: ^27.0.1 semver: ^7.3.2 languageName: unknown linkType: soft -"@jest/transform@^27.0.0, @jest/transform@workspace:packages/jest-transform": +"@jest/transform@^27.0.1, @jest/transform@workspace:packages/jest-transform": version: 0.0.0-use.local resolution: "@jest/transform@workspace:packages/jest-transform" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 "@types/babel__core": ^7.1.0 "@types/convert-source-map": ^1.5.1 "@types/fast-json-stable-stringify": ^2.0.0 @@ -2800,10 +2800,10 @@ __metadata: dedent: ^0.7.0 fast-json-stable-stringify: ^2.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0 - jest-regex-util: ^27.0.0-next.0 + jest-haste-map: ^27.0.1 + jest-regex-util: ^27.0.1 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.11 + jest-util: ^27.0.1 micromatch: ^4.0.4 pirates: ^4.0.1 slash: ^3.0.0 @@ -2812,7 +2812,7 @@ __metadata: languageName: unknown linkType: soft -"@jest/types@^27.0.0-next.10, @jest/types@workspace:packages/jest-types": +"@jest/types@^27.0.1, @jest/types@workspace:packages/jest-types": version: 0.0.0-use.local resolution: "@jest/types@workspace:packages/jest-types" dependencies: @@ -6198,13 +6198,13 @@ __metadata: resolution: "babel-jest@workspace:packages/babel-jest" dependencies: "@babel/core": ^7.1.0 - "@jest/test-utils": ^27.0.0 - "@jest/transform": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.1 + "@jest/transform": ^27.0.1 + "@jest/types": ^27.0.1 "@types/babel__core": ^7.1.14 "@types/graceful-fs": ^4.1.3 babel-plugin-istanbul: ^6.0.0 - babel-preset-jest: ^27.0.0-next.10 + babel-preset-jest: ^27.0.1 chalk: ^4.0.0 graceful-fs: ^4.2.4 slash: ^3.0.0 @@ -6280,7 +6280,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@^27.0.0-next.10, babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist": +"babel-plugin-jest-hoist@^27.0.1, babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist": version: 0.0.0-use.local resolution: "babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist" dependencies: @@ -6430,11 +6430,11 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@^27.0.0-next.10, babel-preset-jest@workspace:packages/babel-preset-jest": +"babel-preset-jest@^27.0.1, babel-preset-jest@workspace:packages/babel-preset-jest": version: 0.0.0-use.local resolution: "babel-preset-jest@workspace:packages/babel-preset-jest" dependencies: - babel-plugin-jest-hoist: ^27.0.0-next.10 + babel-plugin-jest-hoist: ^27.0.1 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 @@ -9018,7 +9018,7 @@ __metadata: languageName: node linkType: hard -"diff-sequences@^27.0.0-next.0, diff-sequences@workspace:packages/diff-sequences": +"diff-sequences@^27.0.1, diff-sequences@workspace:packages/diff-sequences": version: 0.0.0-use.local resolution: "diff-sequences@workspace:packages/diff-sequences" dependencies: @@ -10306,20 +10306,20 @@ __metadata: languageName: node linkType: hard -"expect@^27.0.0, expect@workspace:packages/expect": +"expect@^27.0.1, expect@workspace:packages/expect": version: 0.0.0-use.local resolution: "expect@workspace:packages/expect" dependencies: - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 ansi-styles: ^5.0.0 chalk: ^4.0.0 fast-check: ^2.0.0 immutable: ^4.0.0-rc.12 - jest-get-type: ^27.0.0-next.9 - jest-matcher-utils: ^27.0.0 - jest-message-util: ^27.0.0 - jest-regex-util: ^27.0.0-next.0 + jest-get-type: ^27.0.1 + jest-matcher-utils: ^27.0.1 + jest-message-util: ^27.0.1 + jest-regex-util: ^27.0.1 languageName: unknown linkType: soft @@ -13227,26 +13227,26 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-changed-files@^27.0.0-next.10, jest-changed-files@workspace:*, jest-changed-files@workspace:packages/jest-changed-files": +"jest-changed-files@^27.0.1, jest-changed-files@workspace:*, jest-changed-files@workspace:packages/jest-changed-files": version: 0.0.0-use.local resolution: "jest-changed-files@workspace:packages/jest-changed-files" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 execa: ^5.0.0 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-circus@^27.0.0, jest-circus@workspace:packages/jest-circus": +"jest-circus@^27.0.1, jest-circus@workspace:packages/jest-circus": version: 0.0.0-use.local resolution: "jest-circus@workspace:packages/jest-circus" dependencies: "@babel/core": ^7.1.0 "@babel/register": ^7.0.0 - "@jest/environment": ^27.0.0 - "@jest/test-result": ^27.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/environment": ^27.0.1 + "@jest/test-result": ^27.0.1 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 "@types/co": ^4.6.0 "@types/dedent": ^0.7.0 "@types/graceful-fs": ^4.1.3 @@ -13256,31 +13256,31 @@ fsevents@^1.2.7: co: ^4.6.0 dedent: ^0.7.0 execa: ^5.0.0 - expect: ^27.0.0 + expect: ^27.0.1 graceful-fs: ^4.2.4 is-generator-fn: ^2.0.0 - jest-each: ^27.0.0 - jest-matcher-utils: ^27.0.0 - jest-message-util: ^27.0.0 - jest-runner: ^27.0.0 - jest-runtime: ^27.0.0 - jest-snapshot: ^27.0.0 + jest-each: ^27.0.1 + jest-matcher-utils: ^27.0.1 + jest-message-util: ^27.0.1 + jest-runner: ^27.0.1 + jest-runtime: ^27.0.1 + jest-snapshot: ^27.0.1 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.11 - pretty-format: ^27.0.0 + jest-util: ^27.0.1 + pretty-format: ^27.0.1 stack-utils: ^2.0.3 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-cli@^27.0.0, jest-cli@workspace:packages/jest-cli": +"jest-cli@^27.0.1, jest-cli@workspace:packages/jest-cli": version: 0.0.0-use.local resolution: "jest-cli@workspace:packages/jest-cli" dependencies: - "@jest/core": ^27.0.0 - "@jest/test-result": ^27.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/core": ^27.0.1 + "@jest/test-result": ^27.0.1 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.3 "@types/prompts": ^2.0.1 @@ -13289,9 +13289,9 @@ fsevents@^1.2.7: exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - jest-config: ^27.0.0 - jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0 + jest-config: ^27.0.1 + jest-util: ^27.0.1 + jest-validate: ^27.0.1 prompts: ^2.0.1 yargs: ^16.0.3 peerDependencies: @@ -13304,36 +13304,36 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-config@^27.0.0, jest-config@workspace:packages/jest-config": +"jest-config@^27.0.1, jest-config@workspace:packages/jest-config": version: 0.0.0-use.local resolution: "jest-config@workspace:packages/jest-config" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/test-sequencer": ^27.0.1 + "@jest/types": ^27.0.1 "@types/babel__core": ^7.0.4 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.3 "@types/is-ci": ^3.0.0 "@types/micromatch": ^4.0.1 - babel-jest: ^27.0.0 + babel-jest: ^27.0.1 chalk: ^4.0.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 is-ci: ^3.0.0 - jest-circus: ^27.0.0 - jest-environment-jsdom: ^27.0.0 - jest-environment-node: ^27.0.0 - jest-get-type: ^27.0.0-next.9 - jest-jasmine2: ^27.0.0 - jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0 + jest-circus: ^27.0.1 + jest-environment-jsdom: ^27.0.1 + jest-environment-node: ^27.0.1 + jest-get-type: ^27.0.1 + jest-jasmine2: ^27.0.1 + jest-regex-util: ^27.0.1 + jest-resolve: ^27.0.1 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0 + jest-util: ^27.0.1 + jest-validate: ^27.0.1 micromatch: ^4.0.4 - pretty-format: ^27.0.0 + pretty-format: ^27.0.1 strip-ansi: ^6.0.0 ts-node: ^9.0.0 typescript: ^4.0.3 @@ -13345,15 +13345,15 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-diff@^27.0.0, jest-diff@workspace:packages/jest-diff": +"jest-diff@^27.0.1, jest-diff@workspace:packages/jest-diff": version: 0.0.0-use.local resolution: "jest-diff@workspace:packages/jest-diff" dependencies: - "@jest/test-utils": ^27.0.0 + "@jest/test-utils": ^27.0.1 chalk: ^4.0.0 - diff-sequences: ^27.0.0-next.0 - jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0 + diff-sequences: ^27.0.1 + jest-get-type: ^27.0.1 + pretty-format: ^27.0.1 strip-ansi: ^6.0.0 languageName: unknown linkType: soft @@ -13370,7 +13370,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-docblock@^27.0.0-next.10, jest-docblock@workspace:packages/jest-docblock": +"jest-docblock@^27.0.1, jest-docblock@workspace:packages/jest-docblock": version: 0.0.0-use.local resolution: "jest-docblock@workspace:packages/jest-docblock" dependencies: @@ -13388,30 +13388,30 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-each@^27.0.0, jest-each@workspace:packages/jest-each": +"jest-each@^27.0.1, jest-each@workspace:packages/jest-each": version: 0.0.0-use.local resolution: "jest-each@workspace:packages/jest-each" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 chalk: ^4.0.0 - jest-get-type: ^27.0.0-next.9 - jest-util: ^27.0.0-next.11 - pretty-format: ^27.0.0 + jest-get-type: ^27.0.1 + jest-util: ^27.0.1 + pretty-format: ^27.0.1 languageName: unknown linkType: soft -"jest-environment-jsdom@^27.0.0, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": +"jest-environment-jsdom@^27.0.1, jest-environment-jsdom@workspace:packages/jest-environment-jsdom": version: 0.0.0-use.local resolution: "jest-environment-jsdom@workspace:packages/jest-environment-jsdom" dependencies: - "@jest/environment": ^27.0.0 - "@jest/fake-timers": ^27.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/environment": ^27.0.1 + "@jest/fake-timers": ^27.0.1 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 "@types/jsdom": ^16.2.4 "@types/node": "*" - jest-mock: ^27.0.0-next.10 - jest-util: ^27.0.0-next.11 + jest-mock: ^27.0.1 + jest-util: ^27.0.1 jsdom: ^16.6.0 languageName: unknown linkType: soft @@ -13420,17 +13420,17 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-environment-node@workspace:packages/jest-environment-node" dependencies: - "@jest/environment": ^27.0.0 - "@jest/fake-timers": ^27.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/environment": ^27.0.1 + "@jest/fake-timers": ^27.0.1 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 "@types/node": "*" - jest-mock: ^27.0.0-next.10 - jest-util: ^27.0.0-next.11 + jest-mock: ^27.0.1 + jest-util: ^27.0.1 languageName: unknown linkType: soft -"jest-get-type@^27.0.0-next.9, jest-get-type@workspace:packages/jest-get-type": +"jest-get-type@^27.0.1, jest-get-type@workspace:packages/jest-get-type": version: 0.0.0-use.local resolution: "jest-get-type@workspace:packages/jest-get-type" languageName: unknown @@ -13450,12 +13450,12 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-haste-map@^27.0.0, jest-haste-map@workspace:packages/jest-haste-map": +"jest-haste-map@^27.0.1, jest-haste-map@workspace:packages/jest-haste-map": version: 0.0.0-use.local resolution: "jest-haste-map@workspace:packages/jest-haste-map" dependencies: - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 "@types/anymatch": ^1.3.1 "@types/fb-watchman": ^2.0.0 "@types/graceful-fs": ^4.1.2 @@ -13465,11 +13465,11 @@ fsevents@^1.2.7: fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.4 - jest-regex-util: ^27.0.0-next.0 - jest-serializer: ^27.0.0-next.9 + jest-regex-util: ^27.0.1 + jest-serializer: ^27.0.1 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.11 - jest-worker: ^27.0.0 + jest-util: ^27.0.1 + jest-worker: ^27.0.1 micromatch: ^4.0.4 slash: ^3.0.0 walker: ^1.0.7 @@ -13504,29 +13504,29 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-jasmine2@^27.0.0, jest-jasmine2@workspace:packages/jest-jasmine2": +"jest-jasmine2@^27.0.1, jest-jasmine2@workspace:packages/jest-jasmine2": version: 0.0.0-use.local resolution: "jest-jasmine2@workspace:packages/jest-jasmine2" dependencies: "@babel/traverse": ^7.1.0 - "@jest/environment": ^27.0.0 - "@jest/source-map": ^27.0.0-next.3 - "@jest/test-result": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/environment": ^27.0.1 + "@jest/source-map": ^27.0.1 + "@jest/test-result": ^27.0.1 + "@jest/types": ^27.0.1 "@types/babel__traverse": ^7.0.4 "@types/co": ^4.6.2 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - expect: ^27.0.0 + expect: ^27.0.1 is-generator-fn: ^2.0.0 - jest-each: ^27.0.0 - jest-matcher-utils: ^27.0.0 - jest-message-util: ^27.0.0 - jest-runtime: ^27.0.0 - jest-snapshot: ^27.0.0 - jest-util: ^27.0.0-next.11 - pretty-format: ^27.0.0 + jest-each: ^27.0.1 + jest-matcher-utils: ^27.0.1 + jest-message-util: ^27.0.1 + jest-runtime: ^27.0.1 + jest-snapshot: ^27.0.1 + jest-util: ^27.0.1 + pretty-format: ^27.0.1 throat: ^6.0.1 languageName: unknown linkType: soft @@ -13543,36 +13543,36 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-leak-detector@^27.0.0, jest-leak-detector@workspace:packages/jest-leak-detector": +"jest-leak-detector@^27.0.1, jest-leak-detector@workspace:packages/jest-leak-detector": version: 0.0.0-use.local resolution: "jest-leak-detector@workspace:packages/jest-leak-detector" dependencies: "@types/weak-napi": ^2.0.0 - jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0 + jest-get-type: ^27.0.1 + pretty-format: ^27.0.1 weak-napi: ^2.0.1 languageName: unknown linkType: soft -"jest-matcher-utils@^27.0.0, jest-matcher-utils@workspace:packages/jest-matcher-utils": +"jest-matcher-utils@^27.0.1, jest-matcher-utils@workspace:packages/jest-matcher-utils": version: 0.0.0-use.local resolution: "jest-matcher-utils@workspace:packages/jest-matcher-utils" dependencies: - "@jest/test-utils": ^27.0.0 + "@jest/test-utils": ^27.0.1 "@types/node": "*" chalk: ^4.0.0 - jest-diff: ^27.0.0 - jest-get-type: ^27.0.0-next.9 - pretty-format: ^27.0.0 + jest-diff: ^27.0.1 + jest-get-type: ^27.0.1 + pretty-format: ^27.0.1 languageName: unknown linkType: soft -"jest-message-util@^27.0.0, jest-message-util@workspace:packages/jest-message-util": +"jest-message-util@^27.0.1, jest-message-util@workspace:packages/jest-message-util": version: 0.0.0-use.local resolution: "jest-message-util@workspace:packages/jest-message-util" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@types/babel__code-frame": ^7.0.0 "@types/graceful-fs": ^4.1.3 "@types/micromatch": ^4.0.1 @@ -13580,7 +13580,7 @@ fsevents@^1.2.7: chalk: ^4.0.0 graceful-fs: ^4.2.4 micromatch: ^4.0.4 - pretty-format: ^27.0.0 + pretty-format: ^27.0.1 slash: ^3.0.0 stack-utils: ^2.0.3 languageName: unknown @@ -13603,11 +13603,11 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-mock@^27.0.0-next.10, jest-mock@workspace:*, jest-mock@workspace:packages/jest-mock": +"jest-mock@^27.0.1, jest-mock@workspace:*, jest-mock@workspace:packages/jest-mock": version: 0.0.0-use.local resolution: "jest-mock@workspace:packages/jest-mock" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@types/node": "*" languageName: unknown linkType: soft @@ -13616,7 +13616,7 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-phabricator@workspace:packages/jest-phabricator" dependencies: - "@jest/test-result": ^27.0.0 + "@jest/test-result": ^27.0.1 languageName: unknown linkType: soft @@ -13632,7 +13632,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-regex-util@^27.0.0-next.0, jest-regex-util@workspace:packages/jest-regex-util": +"jest-regex-util@^27.0.1, jest-regex-util@workspace:packages/jest-regex-util": version: 0.0.0-use.local resolution: "jest-regex-util@workspace:packages/jest-regex-util" dependencies: @@ -13651,18 +13651,18 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest-repl@workspace:packages/jest-repl" dependencies: - "@jest/console": ^27.0.0 - "@jest/environment": ^27.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/transform": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/console": ^27.0.1 + "@jest/environment": ^27.0.1 + "@jest/test-utils": ^27.0.1 + "@jest/transform": ^27.0.1 + "@jest/types": ^27.0.1 "@types/yargs": ^16.0.0 chalk: ^4.0.0 execa: ^5.0.0 - jest-config: ^27.0.0 - jest-runtime: ^27.0.0 - jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0 + jest-config: ^27.0.1 + jest-runtime: ^27.0.1 + jest-util: ^27.0.1 + jest-validate: ^27.0.1 repl: ^0.1.3 yargs: ^16.0.3 bin: @@ -13671,33 +13671,33 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-resolve-dependencies@^27.0.0, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": +"jest-resolve-dependencies@^27.0.1, jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies": version: 0.0.0-use.local resolution: "jest-resolve-dependencies@workspace:packages/jest-resolve-dependencies" dependencies: - "@jest/test-utils": ^27.0.0 - "@jest/types": ^27.0.0-next.10 - jest-haste-map: ^27.0.0 - jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0 - jest-runtime: ^27.0.0 - jest-snapshot: ^27.0.0 + "@jest/test-utils": ^27.0.1 + "@jest/types": ^27.0.1 + jest-haste-map: ^27.0.1 + jest-regex-util: ^27.0.1 + jest-resolve: ^27.0.1 + jest-runtime: ^27.0.1 + jest-snapshot: ^27.0.1 languageName: unknown linkType: soft -"jest-resolve@^27.0.0, jest-resolve@workspace:packages/jest-resolve": +"jest-resolve@^27.0.1, jest-resolve@workspace:packages/jest-resolve": version: 0.0.0-use.local resolution: "jest-resolve@workspace:packages/jest-resolve" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@types/graceful-fs": ^4.1.3 "@types/resolve": ^1.20.0 chalk: ^4.0.0 escalade: ^3.1.1 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.0 + jest-haste-map: ^27.0.1 jest-pnp-resolver: ^1.2.2 - jest-util: ^27.0.0-next.11 + jest-util: ^27.0.1 resolve: ^1.20.0 slash: ^3.0.0 languageName: unknown @@ -13714,15 +13714,15 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-runner@^27.0.0, jest-runner@workspace:packages/jest-runner": +"jest-runner@^27.0.1, jest-runner@workspace:packages/jest-runner": version: 0.0.0-use.local resolution: "jest-runner@workspace:packages/jest-runner" dependencies: - "@jest/console": ^27.0.0 - "@jest/environment": ^27.0.0 - "@jest/test-result": ^27.0.0 - "@jest/transform": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/console": ^27.0.1 + "@jest/environment": ^27.0.1 + "@jest/test-result": ^27.0.1 + "@jest/transform": ^27.0.1 + "@jest/types": ^27.0.1 "@types/exit": ^0.1.30 "@types/graceful-fs": ^4.1.2 "@types/node": "*" @@ -13731,34 +13731,34 @@ fsevents@^1.2.7: emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-config: ^27.0.0 - jest-docblock: ^27.0.0-next.10 - jest-haste-map: ^27.0.0 - jest-jasmine2: ^27.0.0 - jest-leak-detector: ^27.0.0 - jest-message-util: ^27.0.0 - jest-resolve: ^27.0.0 - jest-runtime: ^27.0.0 - jest-util: ^27.0.0-next.11 - jest-worker: ^27.0.0 + jest-config: ^27.0.1 + jest-docblock: ^27.0.1 + jest-haste-map: ^27.0.1 + jest-jasmine2: ^27.0.1 + jest-leak-detector: ^27.0.1 + jest-message-util: ^27.0.1 + jest-resolve: ^27.0.1 + jest-runtime: ^27.0.1 + jest-util: ^27.0.1 + jest-worker: ^27.0.1 source-map-support: ^0.5.6 throat: ^6.0.1 languageName: unknown linkType: soft -"jest-runtime@^27.0.0, jest-runtime@workspace:packages/jest-runtime": +"jest-runtime@^27.0.1, jest-runtime@workspace:packages/jest-runtime": version: 0.0.0-use.local resolution: "jest-runtime@workspace:packages/jest-runtime" dependencies: - "@jest/console": ^27.0.0 - "@jest/environment": ^27.0.0 - "@jest/fake-timers": ^27.0.0 - "@jest/globals": ^27.0.0 - "@jest/source-map": ^27.0.0-next.3 - "@jest/test-result": ^27.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/transform": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/console": ^27.0.1 + "@jest/environment": ^27.0.1 + "@jest/fake-timers": ^27.0.1 + "@jest/globals": ^27.0.1 + "@jest/source-map": ^27.0.1 + "@jest/test-result": ^27.0.1 + "@jest/test-utils": ^27.0.1 + "@jest/transform": ^27.0.1 + "@jest/types": ^27.0.1 "@types/exit": ^0.1.30 "@types/glob": ^7.1.1 "@types/graceful-fs": ^4.1.2 @@ -13771,23 +13771,23 @@ fsevents@^1.2.7: exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-environment-node: ^27.0.0 - jest-haste-map: ^27.0.0 - jest-message-util: ^27.0.0 - jest-mock: ^27.0.0-next.10 - jest-regex-util: ^27.0.0-next.0 - jest-resolve: ^27.0.0 - jest-snapshot: ^27.0.0 + jest-environment-node: ^27.0.1 + jest-haste-map: ^27.0.1 + jest-message-util: ^27.0.1 + jest-mock: ^27.0.1 + jest-regex-util: ^27.0.1 + jest-resolve: ^27.0.1 + jest-snapshot: ^27.0.1 jest-snapshot-serializer-raw: ^1.1.0 - jest-util: ^27.0.0-next.11 - jest-validate: ^27.0.0 + jest-util: ^27.0.1 + jest-validate: ^27.0.1 slash: ^3.0.0 strip-bom: ^4.0.0 yargs: ^16.0.3 languageName: unknown linkType: soft -"jest-serializer@^27.0.0-next.9, jest-serializer@workspace:packages/jest-serializer": +"jest-serializer@^27.0.1, jest-serializer@workspace:packages/jest-serializer": version: 0.0.0-use.local resolution: "jest-serializer@workspace:packages/jest-serializer" dependencies: @@ -13824,7 +13824,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-snapshot@^27.0.0, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": +"jest-snapshot@^27.0.1, jest-snapshot@workspace:*, jest-snapshot@workspace:packages/jest-snapshot": version: 0.0.0-use.local resolution: "jest-snapshot@workspace:packages/jest-snapshot" dependencies: @@ -13836,9 +13836,9 @@ fsevents@^1.2.7: "@babel/preset-react": ^7.7.2 "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 - "@jest/test-utils": ^27.0.0 - "@jest/transform": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/test-utils": ^27.0.1 + "@jest/transform": ^27.0.1 + "@jest/types": ^27.0.1 "@types/babel__traverse": ^7.0.4 "@types/graceful-fs": ^4.1.3 "@types/natural-compare": ^1.4.0 @@ -13848,27 +13848,27 @@ fsevents@^1.2.7: ansi-styles: ^5.0.0 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^27.0.0 + expect: ^27.0.1 graceful-fs: ^4.2.4 - jest-diff: ^27.0.0 - jest-get-type: ^27.0.0-next.9 - jest-haste-map: ^27.0.0 - jest-matcher-utils: ^27.0.0 - jest-message-util: ^27.0.0 - jest-resolve: ^27.0.0 - jest-util: ^27.0.0-next.11 + jest-diff: ^27.0.1 + jest-get-type: ^27.0.1 + jest-haste-map: ^27.0.1 + jest-matcher-utils: ^27.0.1 + jest-message-util: ^27.0.1 + jest-resolve: ^27.0.1 + jest-util: ^27.0.1 natural-compare: ^1.4.0 prettier: ^2.0.0 - pretty-format: ^27.0.0 + pretty-format: ^27.0.1 semver: ^7.3.2 languageName: unknown linkType: soft -"jest-util@^27.0.0-next.11, jest-util@workspace:packages/jest-util": +"jest-util@^27.0.1, jest-util@workspace:packages/jest-util": version: 0.0.0-use.local resolution: "jest-util@workspace:packages/jest-util" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@types/graceful-fs": ^4.1.2 "@types/is-ci": ^3.0.0 "@types/micromatch": ^4.0.1 @@ -13895,17 +13895,17 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-validate@^27.0.0, jest-validate@workspace:packages/jest-validate": +"jest-validate@^27.0.1, jest-validate@workspace:packages/jest-validate": version: 0.0.0-use.local resolution: "jest-validate@workspace:packages/jest-validate" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@types/yargs": ^16.0.0 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^27.0.0-next.9 + jest-get-type: ^27.0.1 leven: ^3.1.0 - pretty-format: ^27.0.0 + pretty-format: ^27.0.1 languageName: unknown linkType: soft @@ -13940,16 +13940,16 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-watcher@^27.0.0, jest-watcher@workspace:packages/jest-watcher": +"jest-watcher@^27.0.1, jest-watcher@workspace:packages/jest-watcher": version: 0.0.0-use.local resolution: "jest-watcher@workspace:packages/jest-watcher" dependencies: - "@jest/test-result": ^27.0.0 - "@jest/types": ^27.0.0-next.10 + "@jest/test-result": ^27.0.1 + "@jest/types": ^27.0.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - jest-util: ^27.0.0-next.11 + jest-util: ^27.0.1 string-length: ^4.0.1 languageName: unknown linkType: soft @@ -13992,7 +13992,7 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"jest-worker@^27.0.0, jest-worker@workspace:packages/jest-worker": +"jest-worker@^27.0.1, jest-worker@workspace:packages/jest-worker": version: 0.0.0-use.local resolution: "jest-worker@workspace:packages/jest-worker" dependencies: @@ -14000,7 +14000,7 @@ fsevents@^1.2.7: "@types/node": "*" "@types/supports-color": ^8.1.0 get-stream: ^6.0.0 - jest-leak-detector: ^27.0.0 + jest-leak-detector: ^27.0.1 merge-stream: ^2.0.0 supports-color: ^8.0.0 worker-farm: ^1.6.0 @@ -14041,9 +14041,9 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "jest@workspace:packages/jest" dependencies: - "@jest/core": ^27.0.0 + "@jest/core": ^27.0.1 import-local: ^3.0.2 - jest-cli: ^27.0.0 + jest-cli: ^27.0.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 peerDependenciesMeta: @@ -18706,18 +18706,18 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pretty-format@^27.0.0, pretty-format@workspace:packages/pretty-format": +"pretty-format@^27.0.1, pretty-format@workspace:packages/pretty-format": version: 0.0.0-use.local resolution: "pretty-format@workspace:packages/pretty-format" dependencies: - "@jest/types": ^27.0.0-next.10 + "@jest/types": ^27.0.1 "@types/react": "*" "@types/react-is": ^17.0.0 "@types/react-test-renderer": "*" ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 immutable: 4.0.0-rc.9 - jest-util: ^27.0.0-next.11 + jest-util: ^27.0.1 react: "*" react-dom: "*" react-is: ^17.0.1 From d5aaedee2739f1c73c667c579a8aee4fdde0f0ee Mon Sep 17 00:00:00 2001 From: Forresst Date: Tue, 25 May 2021 14:43:02 +0200 Subject: [PATCH 38/65] docs(blog): fix typo Jest 27 blog post (#11443) --- website/blog/2021-05-25-jest-27.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2021-05-25-jest-27.md b/website/blog/2021-05-25-jest-27.md index 122bd9101a56..1cd79c946531 100644 --- a/website/blog/2021-05-25-jest-27.md +++ b/website/blog/2021-05-25-jest-27.md @@ -21,7 +21,7 @@ Speaking of snapshots, one of the more exciting features we've shipped in recent And so for most of these years, we've had a [pull request](https://github.com/facebook/jest/pull/7792) in the pipeline to eliminate this restriction and allow using **Inline Snapshots without Prettier**. It has amassed well above a hundred comments, not even taking into account PRs split out from it and landed first, and even changed owner once after the initial submission by another first-time contributor, [@mmkal](https://github.com/mmkal) under the hilarious working title 'Uglier Inline Snapshots'. With the stellar rise of Prettier in recent times, this improvement is now maybe less needed than back in 2018, but still, we know that feeling of getting into a project that does not use Prettier, and suddenly not being able to use inline snapshots anymore. Nevermore! The main reason why it took us so long to land this was, somewhat surprisingly, an out of memory error on our build pipeline. It turns out that the dependencies we load for each test file to perform the parsing, snapshot insertion, and printing do incur a significant time and memory overhead. -So with some [tricks](https://github.com/facebook/jest/issues/9898), we've **sped up the initialization per test file** by roughly 70% compared to Jest 26. Note that you will almost certainly not see this big of a performance improvement on your project—you would need a lot of test files that each run very quickly to best notice this, and the overhead when using a [JSDOM environment](/docs/configuration#testenvironment-string) dwarfs any such improvement. +So with some [tricks](https://github.com/facebook/jest/issues/9898), we've **speed up the initialization per test file** by roughly 70% compared to Jest 26. Note that you will almost certainly not see this big of a performance improvement on your project—you would need a lot of test files that each run very quickly to best notice this, and the overhead when using a [JSDOM environment](/docs/configuration#testenvironment-string) dwarfs any such improvement. In other news, the [native ESM support](https://github.com/facebook/jest/issues/9430) is progressing, but some major complexities, for instance around mocking, are still ahead of us, and we continue to observe the migration to ESM as a huge ecosystem effort, where Node and a lot of crucial tools and packages all have to rely on each other to deliver an overall compelling experience. ESM support [for plugging modules into Jest](https://github.com/facebook/jest/issues/11167) is more advanced—custom runners, reporters, watch plugins, and many other modules can already be loaded as ES modules. From a6368fbd2d39b75649d4f7e7ab69d3661a5716ae Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 25 May 2021 17:04:26 +0200 Subject: [PATCH 39/65] chore: roll new version of the docs (#11445) --- .prettierignore | 1 + website/docusaurus.config.js | 2 +- .../version-27.0/Architecture.md | 8 + .../version-27.0/BypassingModuleMocks.md | 59 + website/versioned_docs/version-27.0/CLI.md | 374 +++++ .../version-27.0/CodeTransformation.md | 110 ++ .../version-27.0/Configuration.md | 1403 +++++++++++++++++ .../versioned_docs/version-27.0/DynamoDB.md | 81 + .../version-27.0/ECMAScriptModules.md | 31 + .../version-27.0/EnvironmentVariables.md | 14 + .../version-27.0/Es6ClassMocks.md | 363 +++++ .../versioned_docs/version-27.0/ExpectAPI.md | 1374 ++++++++++++++++ .../version-27.0/GettingStarted.md | 181 +++ .../versioned_docs/version-27.0/GlobalAPI.md | 880 +++++++++++ .../version-27.0/JestCommunity.md | 19 + .../version-27.0/JestObjectAPI.md | 686 ++++++++ .../version-27.0/JestPlatform.md | 174 ++ .../version-27.0/ManualMocks.md | 167 ++ .../version-27.0/MigrationGuide.md | 22 + .../version-27.0/MockFunctionAPI.md | 450 ++++++ .../version-27.0/MockFunctions.md | 281 ++++ .../versioned_docs/version-27.0/MongoDB.md | 61 + .../version-27.0/MoreResources.md | 24 + .../versioned_docs/version-27.0/Puppeteer.md | 173 ++ .../version-27.0/SetupAndTeardown.md | 190 +++ .../version-27.0/SnapshotTesting.md | 314 ++++ .../version-27.0/TestingAsyncCode.md | 129 ++ .../version-27.0/TestingFrameworks.md | 45 + .../versioned_docs/version-27.0/TimerMocks.md | 178 +++ .../version-27.0/Troubleshooting.md | 210 +++ .../version-27.0/TutorialAsync.md | 165 ++ .../version-27.0/TutorialReact.md | 322 ++++ .../version-27.0/TutorialReactNative.md | 208 +++ .../version-27.0/TutorialjQuery.md | 68 + .../version-27.0/UsingMatchers.md | 164 ++ .../version-27.0/WatchPlugins.md | 231 +++ .../versioned_docs/version-27.0/Webpack.md | 233 +++ .../version-27.0-sidebars.json | 167 ++ website/versions.json | 6 +- 39 files changed, 9566 insertions(+), 2 deletions(-) create mode 100644 website/versioned_docs/version-27.0/Architecture.md create mode 100644 website/versioned_docs/version-27.0/BypassingModuleMocks.md create mode 100644 website/versioned_docs/version-27.0/CLI.md create mode 100644 website/versioned_docs/version-27.0/CodeTransformation.md create mode 100644 website/versioned_docs/version-27.0/Configuration.md create mode 100644 website/versioned_docs/version-27.0/DynamoDB.md create mode 100644 website/versioned_docs/version-27.0/ECMAScriptModules.md create mode 100644 website/versioned_docs/version-27.0/EnvironmentVariables.md create mode 100644 website/versioned_docs/version-27.0/Es6ClassMocks.md create mode 100644 website/versioned_docs/version-27.0/ExpectAPI.md create mode 100644 website/versioned_docs/version-27.0/GettingStarted.md create mode 100644 website/versioned_docs/version-27.0/GlobalAPI.md create mode 100644 website/versioned_docs/version-27.0/JestCommunity.md create mode 100644 website/versioned_docs/version-27.0/JestObjectAPI.md create mode 100644 website/versioned_docs/version-27.0/JestPlatform.md create mode 100644 website/versioned_docs/version-27.0/ManualMocks.md create mode 100644 website/versioned_docs/version-27.0/MigrationGuide.md create mode 100644 website/versioned_docs/version-27.0/MockFunctionAPI.md create mode 100644 website/versioned_docs/version-27.0/MockFunctions.md create mode 100644 website/versioned_docs/version-27.0/MongoDB.md create mode 100644 website/versioned_docs/version-27.0/MoreResources.md create mode 100644 website/versioned_docs/version-27.0/Puppeteer.md create mode 100644 website/versioned_docs/version-27.0/SetupAndTeardown.md create mode 100644 website/versioned_docs/version-27.0/SnapshotTesting.md create mode 100644 website/versioned_docs/version-27.0/TestingAsyncCode.md create mode 100644 website/versioned_docs/version-27.0/TestingFrameworks.md create mode 100644 website/versioned_docs/version-27.0/TimerMocks.md create mode 100644 website/versioned_docs/version-27.0/Troubleshooting.md create mode 100644 website/versioned_docs/version-27.0/TutorialAsync.md create mode 100644 website/versioned_docs/version-27.0/TutorialReact.md create mode 100644 website/versioned_docs/version-27.0/TutorialReactNative.md create mode 100644 website/versioned_docs/version-27.0/TutorialjQuery.md create mode 100644 website/versioned_docs/version-27.0/UsingMatchers.md create mode 100644 website/versioned_docs/version-27.0/WatchPlugins.md create mode 100644 website/versioned_docs/version-27.0/Webpack.md create mode 100644 website/versioned_sidebars/version-27.0-sidebars.json diff --git a/.prettierignore b/.prettierignore index 6b1fe09e1fdf..9d00ca73631b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,3 +2,4 @@ fixtures/failing-jsons/ packages/jest-diff/src/cleanupSemantic.ts packages/jest-config/src/__tests__/jest-preset.json packages/pretty-format/perf/world.geo.json +website/versions.json diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 2a5c3627695a..9561790369e8 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -37,7 +37,7 @@ module.exports = { return `https://github.com/facebook/jest/edit/master/website/${versionDocsDirPath}/${docPath}`; }, path: '../docs', - sidebarPath: './sidebars.json', + sidebarPath: path.resolve(__dirname, './sidebars.json'), }, blog: { path: 'blog', diff --git a/website/versioned_docs/version-27.0/Architecture.md b/website/versioned_docs/version-27.0/Architecture.md new file mode 100644 index 000000000000..f069ea953eb7 --- /dev/null +++ b/website/versioned_docs/version-27.0/Architecture.md @@ -0,0 +1,8 @@ +--- +id: architecture +title: Architecture +--- + +If you are interested in learning more about how Jest works, what the architecture behind the framework is, and how Jest is split up into individual reusable packages, check out this video: + + diff --git a/website/versioned_docs/version-27.0/BypassingModuleMocks.md b/website/versioned_docs/version-27.0/BypassingModuleMocks.md new file mode 100644 index 000000000000..5e48a05b9fb4 --- /dev/null +++ b/website/versioned_docs/version-27.0/BypassingModuleMocks.md @@ -0,0 +1,59 @@ +--- +id: bypassing-module-mocks +title: Bypassing module mocks +--- + +Jest allows you to mock out whole modules in your tests, which can be useful for testing if your code is calling functions from that module correctly. However, sometimes you may want to use parts of a mocked module in your _test file_, in which case you want to access the original implementation, rather than a mocked version. + +Consider writing a test case for this `createUser` function: + +```javascript +// createUser.js +import fetch from 'node-fetch'; + +export const createUser = async () => { + const response = await fetch('http://website.com/users', {method: 'POST'}); + const userId = await response.text(); + return userId; +}; +``` + +Your test will want to mock the `fetch` function so that we can be sure that it gets called without actually making the network request. However, you'll also need to mock the return value of `fetch` with a `Response` (wrapped in a `Promise`), as our function uses it to grab the created user's ID. So you might initially try writing a test like this: + +```javascript +jest.mock('node-fetch'); + +import fetch, {Response} from 'node-fetch'; +import {createUser} from './createUser'; + +test('createUser calls fetch with the right args and returns the user id', async () => { + fetch.mockReturnValue(Promise.resolve(new Response('4'))); + + const userId = await createUser(); + + expect(fetch).toHaveBeenCalledTimes(1); + expect(fetch).toHaveBeenCalledWith('http://website.com/users', { + method: 'POST', + }); + expect(userId).toBe('4'); +}); +``` + +However, if you ran that test you would find that the `createUser` function would fail, throwing the error: `TypeError: response.text is not a function`. This is because the `Response` class you've imported from `node-fetch` has been mocked (due to the `jest.mock` call at the top of the test file) so it no longer behaves the way it should. + +To get around problems like this, Jest provides the `jest.requireActual` helper. To make the above test work, make the following change to the imports in the test file: + +```javascript +// BEFORE +jest.mock('node-fetch'); +import fetch, {Response} from 'node-fetch'; +``` + +```javascript +// AFTER +jest.mock('node-fetch'); +import fetch from 'node-fetch'; +const {Response} = jest.requireActual('node-fetch'); +``` + +This allows your test file to import the actual `Response` object from `node-fetch`, rather than a mocked version. This means the test will now pass correctly. diff --git a/website/versioned_docs/version-27.0/CLI.md b/website/versioned_docs/version-27.0/CLI.md new file mode 100644 index 000000000000..4479ccb8e180 --- /dev/null +++ b/website/versioned_docs/version-27.0/CLI.md @@ -0,0 +1,374 @@ +--- +id: cli +title: Jest CLI Options +--- + +The `jest` command line runner has a number of useful options. You can run `jest --help` to view all available options. Many of the options shown below can also be used together to run tests exactly the way you want. Every one of Jest's [Configuration](Configuration.md) options can also be specified through the CLI. + +Here is a brief overview: + +## Running from the command line + +Run all tests (default): + +```bash +jest +``` + +Run only the tests that were specified with a pattern or filename: + +```bash +jest my-test #or +jest path/to/my-test.js +``` + +Run tests related to changed files based on hg/git (uncommitted files): + +```bash +jest -o +``` + +Run tests related to `path/to/fileA.js` and `path/to/fileB.js`: + +```bash +jest --findRelatedTests path/to/fileA.js path/to/fileB.js +``` + +Run tests that match this spec name (match against the name in `describe` or `test`, basically). + +```bash +jest -t name-of-spec +``` + +Run watch mode: + +```bash +jest --watch #runs jest -o by default +jest --watchAll #runs all tests +``` + +Watch mode also enables to specify the name or path to a file to focus on a specific set of tests. + +## Using with yarn + +If you run Jest via `yarn test`, you can pass the command line arguments directly as Jest arguments. + +Instead of: + +```bash +jest -u -t="ColorPicker" +``` + +you can use: + +```bash +yarn test -u -t="ColorPicker" +``` + +## Using with npm scripts + +If you run Jest via `npm test`, you can still use the command line arguments by inserting a `--` between `npm test` and the Jest arguments. + +Instead of: + +```bash +jest -u -t="ColorPicker" +``` + +you can use: + +```bash +npm test -- -u -t="ColorPicker" +``` + +## Camelcase & dashed args support + +Jest supports both camelcase and dashed arg formats. The following examples will have an equal result: + +```bash +jest --collect-coverage +jest --collectCoverage +``` + +Arguments can also be mixed: + +```bash +jest --update-snapshot --detectOpenHandles +``` + +## Options + +_Note: CLI options take precedence over values from the [Configuration](Configuration.md)._ + +import TOCInline from "@theme/TOCInline" + + + +--- + +## Reference + +### `jest ` + +When you run `jest` with an argument, that argument is treated as a regular expression to match against files in your project. It is possible to run test suites by providing a pattern. Only the files that the pattern matches will be picked up and executed. Depending on your terminal, you may need to quote this argument: `jest "my.*(complex)?pattern"`. On Windows, you will need to use `/` as a path separator or escape `\` as `\\`. + +### `--bail` + +Alias: `-b`. Exit the test suite immediately upon `n` number of failing test suite. Defaults to `1`. + +### `--cache` + +Whether to use the cache. Defaults to true. Disable the cache using `--no-cache`. _Note: the cache should only be disabled if you are experiencing caching related problems. On average, disabling the cache makes Jest at least two times slower._ + +If you want to inspect the cache, use `--showConfig` and look at the `cacheDirectory` value. If you need to clear the cache, use `--clearCache`. + +### `--changedFilesWithAncestor` + +Runs tests related to the current changes and the changes made in the last commit. Behaves similarly to `--onlyChanged`. + +### `--changedSince` + +Runs tests related to the changes since the provided branch or commit hash. If the current branch has diverged from the given branch, then only changes made locally will be tested. Behaves similarly to `--onlyChanged`. + +### `--ci` + +When this option is provided, Jest will assume it is running in a CI environment. This changes the behavior when a new snapshot is encountered. Instead of the regular behavior of storing a new snapshot automatically, it will fail the test and require Jest to be run with `--updateSnapshot`. + +### `--clearCache` + +Deletes the Jest cache directory and then exits without running tests. Will delete `cacheDirectory` if the option is passed, or Jest's default cache directory. The default cache directory can be found by calling `jest --showConfig`. _Note: clearing the cache will reduce performance._ + +### `--collectCoverageFrom=` + +A glob pattern relative to `rootDir` matching the files that coverage info needs to be collected from. + +### `--colors` + +Forces test results output highlighting even if stdout is not a TTY. + +### `--config=` + +Alias: `-c`. The path to a Jest config file specifying how to find and execute tests. If no `rootDir` is set in the config, the directory containing the config file is assumed to be the `rootDir` for the project. This can also be a JSON-encoded value which Jest will use as configuration. + +### `--coverage[=]` + +Alias: `--collectCoverage`. Indicates that test coverage information should be collected and reported in the output. Optionally pass `` to override option set in configuration. + +### `--coverageProvider=` + +Indicates which provider should be used to instrument code for coverage. Allowed values are `babel` (default) or `v8`. + +Note that using `v8` is considered experimental. This uses V8's builtin code coverage rather than one based on Babel. It is not as well tested, and it has also improved in the last few releases of Node. Using the latest versions of node (v14 at the time of this writing) will yield better results. + +### `--debug` + +Print debugging info about your Jest config. + +### `--detectOpenHandles` + +Attempt to collect and print open handles preventing Jest from exiting cleanly. Use this in cases where you need to use `--forceExit` in order for Jest to exit to potentially track down the reason. This implies `--runInBand`, making tests run serially. Implemented using [`async_hooks`](https://nodejs.org/api/async_hooks.html). This option has a significant performance penalty and should only be used for debugging. + +### `--env=` + +The test environment used for all tests. This can point to any file or node module. Examples: `jsdom`, `node` or `path/to/my-environment.js`. + +### `--errorOnDeprecated` + +Make calling deprecated APIs throw helpful error messages. Useful for easing the upgrade process. + +### `--expand` + +Alias: `-e`. Use this flag to show full diffs and errors instead of a patch. + +### `--filter=` + +Path to a module exporting a filtering function. This method receives a list of tests which can be manipulated to exclude tests from running. Especially useful when used in conjunction with a testing infrastructure to filter known broken. + +### `--findRelatedTests ` + +Find and run the tests that cover a space separated list of source files that were passed in as arguments. Useful for pre-commit hook integration to run the minimal amount of tests necessary. Can be used together with `--coverage` to include a test coverage for the source files, no duplicate `--collectCoverageFrom` arguments needed. + +### `--forceExit` + +Force Jest to exit after all tests have completed running. This is useful when resources set up by test code cannot be adequately cleaned up. _Note: This feature is an escape-hatch. If Jest doesn't exit at the end of a test run, it means external resources are still being held on to or timers are still pending in your code. It is advised to tear down external resources after each test to make sure Jest can shut down cleanly. You can use `--detectOpenHandles` to help track it down._ + +### `--help` + +Show the help information, similar to this page. + +### `--init` + +Generate a basic configuration file. Based on your project, Jest will ask you a few questions that will help to generate a `jest.config.js` file with a short description for each option. + +### `--injectGlobals` + +Insert Jest's globals (`expect`, `test`, `describe`, `beforeEach` etc.) into the global environment. If you set this to `false`, you should import from `@jest/globals`, e.g. + +```ts +import {expect, jest, test} from '@jest/globals'; + +jest.useFakeTimers(); + +test('some test', () => { + expect(Date.now()).toBe(0); +}); +``` + +_Note: This option is only supported using the default `jest-circus` test runner._ + +### `--json` + +Prints the test results in JSON. This mode will send all other test output and user messages to stderr. + +### `--outputFile=` + +Write test results to a file when the `--json` option is also specified. The returned JSON structure is documented in [testResultsProcessor](Configuration.md#testresultsprocessor-string). + +### `--lastCommit` + +Run all tests affected by file changes in the last commit made. Behaves similarly to `--onlyChanged`. + +### `--listTests` + +Lists all tests as JSON that Jest will run given the arguments, and exits. This can be used together with `--findRelatedTests` to know which tests Jest will run. + +### `--logHeapUsage` + +Logs the heap usage after every test. Useful to debug memory leaks. Use together with `--runInBand` and `--expose-gc` in node. + +### `--maxConcurrency=` + +Prevents Jest from executing more than the specified amount of tests at the same time. Only affects tests that use `test.concurrent`. + +### `--maxWorkers=|` + +Alias: `-w`. Specifies the maximum number of workers the worker-pool will spawn for running tests. In single run mode, this defaults to the number of the cores available on your machine minus one for the main thread. In watch mode, this defaults to half of the available cores on your machine to ensure Jest is unobtrusive and does not grind your machine to a halt. It may be useful to adjust this in resource limited environments like CIs but the defaults should be adequate for most use-cases. + +For environments with variable CPUs available, you can use percentage based configuration: `--maxWorkers=50%` + +### `--noStackTrace` + +Disables stack trace in test results output. + +### `--notify` + +Activates notifications for test results. Good for when you don't want your consciousness to be able to focus on anything except JavaScript testing. + +### `--onlyChanged` + +Alias: `-o`. Attempts to identify which tests to run based on which files have changed in the current repository. Only works if you're running tests in a git/hg repository at the moment and requires a static dependency graph (ie. no dynamic requires). + +### `--passWithNoTests` + +Allows the test suite to pass when no files are found. + +### `--projects ... ` + +Run tests from one or more projects, found in the specified paths; also takes path globs. This option is the CLI equivalent of the [`projects`](configuration#projects-arraystring--projectconfig) configuration option. Note that if configuration files are found in the specified paths, _all_ projects specified within those configuration files will be run. + +### `--reporters` + +Run tests with specified reporters. [Reporter options](configuration#reporters-arraymodulename--modulename-options) are not available via CLI. Example with multiple reporters: + +`jest --reporters="default" --reporters="jest-junit"` + +### `--roots` + +A list of paths to directories that Jest should use to search for files in. + +### `--runInBand` + +Alias: `-i`. Run all tests serially in the current process, rather than creating a worker pool of child processes that run tests. This can be useful for debugging. + +### `--selectProjects ... ` + +Run only the tests of the specified projects. Jest uses the attribute `displayName` in the configuration to identify each project. If you use this option, you should provide a `displayName` to all your projects. + +### `--runTestsByPath` + +Run only the tests that were specified with their exact paths. + +_Note: The default regex matching works fine on small runs, but becomes slow if provided with multiple patterns and/or against a lot of tests. This option replaces the regex matching logic and by that optimizes the time it takes Jest to filter specific test files_ + +### `--setupTestFrameworkScriptFile=` + +The path to a module that runs some code to configure or set up the testing framework before each test. Beware that files imported by the setup script will not be mocked during testing. + +### `--showConfig` + +Print your Jest config and then exits. + +### `--silent` + +Prevent tests from printing messages through the console. + +### `--testNamePattern=` + +Alias: `-t`. Run only tests with a name that matches the regex. For example, suppose you want to run only tests related to authorization which will have names like `"GET /api/posts with auth"`, then you can use `jest -t=auth`. + +_Note: The regex is matched against the full name, which is a combination of the test name and all its surrounding describe blocks._ + +### `--testLocationInResults` + +Adds a `location` field to test results. Useful if you want to report the location of a test in a reporter. + +Note that `column` is 0-indexed while `line` is not. + +```json +{ + "column": 4, + "line": 5 +} +``` + +### `--testPathPattern=` + +A regexp pattern string that is matched against all tests paths before executing the test. On Windows, you will need to use `/` as a path separator or escape `\` as `\\`. + +### `--testPathIgnorePatterns=|[array]` + +A single or array of regexp pattern strings that are tested against all tests paths before executing the test. Contrary to `--testPathPattern`, it will only run those tests with a path that does not match with the provided regexp expressions. + +To pass as an array use escaped parentheses and space delimited regexps such as `\(/node_modules/ /tests/e2e/\)`. Alternatively, you can omit parentheses by combining regexps into a single regexp like `/node_modules/|/tests/e2e/`. These two examples are equivalent. + +### `--testRunner=` + +Lets you specify a custom test runner. + +### `--testSequencer=` + +Lets you specify a custom test sequencer. Please refer to the documentation of the corresponding configuration property for details. + +### `--testTimeout=` + +Default timeout of a test in milliseconds. Default value: 5000. + +### `--updateSnapshot` + +Alias: `-u`. Use this flag to re-record every snapshot that fails during this test run. Can be used together with a test suite pattern or with `--testNamePattern` to re-record snapshots. + +### `--useStderr` + +Divert all output to stderr. + +### `--verbose` + +Display individual test results with the test suite hierarchy. + +### `--version` + +Alias: `-v`. Print the version and exit. + +### `--watch` + +Watch files for changes and rerun tests related to changed files. If you want to re-run all tests when a file has changed, use the `--watchAll` option instead. + +### `--watchAll` + +Watch files for changes and rerun all tests when something changes. If you want to re-run only the tests that depend on the changed files, use the `--watch` option. + +Use `--watchAll=false` to explicitly disable the watch mode. Note that in most CI environments, this is automatically handled for you. + +### `--watchman` + +Whether to use [`watchman`](https://facebook.github.io/watchman/) for file crawling. Defaults to `true`. Disable using `--no-watchman`. diff --git a/website/versioned_docs/version-27.0/CodeTransformation.md b/website/versioned_docs/version-27.0/CodeTransformation.md new file mode 100644 index 000000000000..a6982041f338 --- /dev/null +++ b/website/versioned_docs/version-27.0/CodeTransformation.md @@ -0,0 +1,110 @@ +--- +id: code-transformation +title: Code Transformation +--- + +Jest runs the code in your project as JavaScript, but if you use some syntax not supported by Node.js out of the box (such as JSX, types from TypeScript, Vue templates etc.) then you'll need to transform that code into plain JavaScript, similar to what you would do when building for browsers. + +Jest supports this via the [`transform` configuration option](Configuration.md#transform-objectstring-pathtotransformer--pathtotransformer-object). + +A transformer is a module that provides a synchronous function for transforming source files. For example, if you wanted to be able to use a new language feature in your modules or tests that aren't yet supported by Node, you might plug in one of many compilers that compile a future version of JavaScript to a current one. + +Jest will cache the result of a transformation and attempt to invalidate that result based on a number of factors, such as the source of the file being transformed and changing configuration. + +## Defaults + +Jest ships with one transformer out of the box - `babel-jest`. It will automatically load your project's Babel configuration and transform any file matching the following RegEx: `/\.[jt]sx?$/` meaning any `.js`, `.jsx`, `.ts` and `.tsx` file. In addition, `babel-jest` will inject the Babel plugin necessary for mock hoisting talked about in [ES Module mocking](ManualMocks.md#using-with-es-module-imports). + +If you override the `transform` configuration option `babel-jest` will no longer be active, and you'll need to add it manually if you wish to use Babel. + +## Writing custom transformers + +You can write you own transformer. The API of a transformer is as follows: + +```ts +interface Transformer { + /** + * Indicates if the transformer is capabale of instrumenting the code for code coverage. + * + * If V8 coverage is _not_ active, and this is `true`, Jest will assume the code is instrumented. + * If V8 coverage is _not_ active, and this is `false`. Jest will instrument the code returned by this transformer using Babel. + */ + canInstrument?: boolean; + createTransformer?: (options?: OptionType) => Transformer; + + getCacheKey?: ( + sourceText: string, + sourcePath: string, + options: TransformOptions, + ) => string; + + process: ( + sourceText: string, + sourcePath: string, + options: TransformOptions, + ) => TransformedSource; +} + +interface TransformOptions { + /** + * If a transformer does module resolution and reads files, it should populate `cacheFS` so that + * Jest avoids reading the same files again, improving performance. `cacheFS` stores entries of + * + */ + cacheFS: Map; + config: Config.ProjectConfig; + /** A stringified version of the configuration - useful in cache busting */ + configString: string; + instrument: boolean; + // names are copied from babel: https://babeljs.io/docs/en/options#caller + supportsDynamicImport: boolean; + supportsExportNamespaceFrom: boolean; + supportsStaticESM: boolean; + supportsTopLevelAwait: boolean; + /** the options passed through Jest's config by the user */ + transformerConfig: OptionType; +} + +type TransformedSource = + | {code: string; map?: RawSourceMap | string | null} + | string; + +// Config.ProjectConfig can be seen in in code [here](https://github.com/facebook/jest/blob/v26.6.3/packages/jest-types/src/Config.ts#L323) +// RawSourceMap comes from [`source-map`](https://github.com/mozilla/source-map/blob/0.6.1/source-map.d.ts#L6-L12) +``` + +As can be seen, only `process` is mandatory to implement, although we highly recommend implementing `getCacheKey` as well, so we don't waste resources transpiling the same source file when we can read its previous result from disk. You can use [`@jest/create-cache-key-function`](https://www.npmjs.com/package/@jest/create-cache-key-function) to help implement it. + +Note that [ECMAScript module](ECMAScriptModules.md) support is indicated by the passed in `supports*` options. Specifically `supportsDynamicImport: true` means the transformer can return `import()` expressions, which is supported by both ESM and CJS. If `supportsStaticESM: true` it means top level `import` statements are supported and the code will be interpreted as ESM and not CJS. See [Node's docs](https://nodejs.org/api/esm.html#esm_differences_between_es_modules_and_commonjs) for details on the differences. + +### Examples + +### TypeScript with type checking + +While `babel-jest` by default will transpile TypeScript files, Babel will not verify the types. If you want that you can use [`ts-jest`](https://github.com/kulshekhar/ts-jest). + +#### Transforming images to their path + +Importing images is a way to include them in your browser bundle, but they are not valid JavaScript. One way of handling it in Jest is to replace the imported value with its filename. + +```js +// fileTransformer.js +const path = require('path'); + +module.exports = { + process(src, filename, config, options) { + return 'module.exports = ' + JSON.stringify(path.basename(filename)) + ';'; + }, +}; +``` + +```js +// jest.config.js + +module.exports = { + transform: { + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': + '/fileTransformer.js', + }, +}; +``` diff --git a/website/versioned_docs/version-27.0/Configuration.md b/website/versioned_docs/version-27.0/Configuration.md new file mode 100644 index 000000000000..5d4c0eee8ca2 --- /dev/null +++ b/website/versioned_docs/version-27.0/Configuration.md @@ -0,0 +1,1403 @@ +--- +id: configuration +title: Configuring Jest +--- + +Jest's configuration can be defined in the `package.json` file of your project, or through a `jest.config.js`, or `jest.config.ts` file or through the `--config ` option. If you'd like to use your `package.json` to store Jest's config, the `"jest"` key should be used on the top level so Jest will know how to find your settings: + +```json +{ + "name": "my-project", + "jest": { + "verbose": true + } +} +``` + +Or through JavaScript: + +```js +// jest.config.js +// Sync object +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + verbose: true, +}; + +module.exports = config; + +// Or async function +module.exports = async () => { + return { + verbose: true, + }; +}; +``` + +Or through TypeScript (if `ts-node` is installed): + +```ts +// jest.config.ts +import type {Config} from '@jest/types'; + +// Sync object +const config: Config.InitialOptions = { + verbose: true, +}; +export default config; + +// Or async function +export default async (): Promise => { + return { + verbose: true, + }; +}; +``` + +Please keep in mind that the resulting configuration must be JSON-serializable. + +When using the `--config` option, the JSON file must not contain a "jest" key: + +```json +{ + "bail": 1, + "verbose": true +} +``` + +## Options + +These options let you control Jest's behavior in your `package.json` file. The Jest philosophy is to work great by default, but sometimes you just need more configuration power. + +### Defaults + +You can retrieve Jest's default options to expand them if needed: + +```js +// jest.config.js +const {defaults} = require('jest-config'); +module.exports = { + // ... + moduleFileExtensions: [...defaults.moduleFileExtensions, 'ts', 'tsx'], + // ... +}; +``` + +import TOCInline from "@theme/TOCInline" + + + +--- + +## Reference + +### `automock` \[boolean] + +Default: `false` + +This option tells Jest that all imported modules in your tests should be mocked automatically. All modules used in your tests will have a replacement implementation, keeping the API surface. + +Example: + +```js +// utils.js +export default { + authorize: () => { + return 'token'; + }, + isAuthorized: secret => secret === 'wizard', +}; +``` + +```js +//__tests__/automocking.test.js +import utils from '../utils'; + +test('if utils mocked automatically', () => { + // Public methods of `utils` are now mock functions + expect(utils.authorize.mock).toBeTruthy(); + expect(utils.isAuthorized.mock).toBeTruthy(); + + // You can provide them with your own implementation + // or pass the expected return value + utils.authorize.mockReturnValue('mocked_token'); + utils.isAuthorized.mockReturnValue(true); + + expect(utils.authorize()).toBe('mocked_token'); + expect(utils.isAuthorized('not_wizard')).toBeTruthy(); +}); +``` + +_Note: Node modules are automatically mocked when you have a manual mock in place (e.g.: `__mocks__/lodash.js`). More info [here](manual-mocks#mocking-node-modules)._ + +_Note: Core modules, like `fs`, are not mocked by default. They can be mocked explicitly, like `jest.mock('fs')`._ + +### `bail` \[number | boolean] + +Default: `0` + +By default, Jest runs all tests and produces all errors into the console upon completion. The bail config option can be used here to have Jest stop running tests after `n` failures. Setting bail to `true` is the same as setting bail to `1`. + +### `cacheDirectory` \[string] + +Default: `"/tmp/"` + +The directory where Jest should store its cached dependency information. + +Jest attempts to scan your dependency tree once (up-front) and cache it in order to ease some of the filesystem raking that needs to happen while running tests. This config option lets you customize where Jest stores that cache data on disk. + +### `clearMocks` \[boolean] + +Default: `false` + +Automatically clear mock calls and instances before every test. Equivalent to calling `jest.clearAllMocks()` before each test. This does not remove any mock implementation that may have been provided. + +### `collectCoverage` \[boolean] + +Default: `false` + +Indicates whether the coverage information should be collected while executing the test. Because this retrofits all executed files with coverage collection statements, it may significantly slow down your tests. + +### `collectCoverageFrom` \[array] + +Default: `undefined` + +An array of [glob patterns](https://github.com/micromatch/micromatch) indicating a set of files for which coverage information should be collected. If a file matches the specified glob pattern, coverage information will be collected for it even if no tests exist for this file and it's never required in the test suite. + +Example: + +```json +{ + "collectCoverageFrom": [ + "**/*.{js,jsx}", + "!**/node_modules/**", + "!**/vendor/**" + ] +} +``` + +This will collect coverage information for all the files inside the project's `rootDir`, except the ones that match `**/node_modules/**` or `**/vendor/**`. + +_Note: Each glob pattern is applied in the order they are specified in the config. (For example `["!**/__tests__/**", "**/*.js"]` will not exclude `__tests__` because the negation is overwritten with the second pattern. In order to make the negated glob work in this example it has to come after `**/*.js`.)_ + +_Note: This option requires `collectCoverage` to be set to true or Jest to be invoked with `--coverage`._ + +

+ Help: + If you are seeing coverage output such as... + +``` +=============================== Coverage summary =============================== +Statements : Unknown% ( 0/0 ) +Branches : Unknown% ( 0/0 ) +Functions : Unknown% ( 0/0 ) +Lines : Unknown% ( 0/0 ) +================================================================================ +Jest: Coverage data for global was not found. +``` + +Most likely your glob patterns are not matching any files. Refer to the [micromatch](https://github.com/micromatch/micromatch) documentation to ensure your globs are compatible. + +
+ +### `coverageDirectory` \[string] + +Default: `undefined` + +The directory where Jest should output its coverage files. + +### `coveragePathIgnorePatterns` \[array<string>] + +Default: `["/node_modules/"]` + +An array of regexp pattern strings that are matched against all file paths before executing the test. If the file path matches any of the patterns, coverage information will be skipped. + +These pattern strings match against the full path. Use the `` string token to include the path to your project's root directory to prevent it from accidentally ignoring all of your files in different environments that may have different root directories. Example: `["/build/", "/node_modules/"]`. + +### `coverageProvider` \[string] + +Indicates which provider should be used to instrument code for coverage. Allowed values are `babel` (default) or `v8`. + +Note that using `v8` is considered experimental. This uses V8's builtin code coverage rather than one based on Babel. It is not as well tested, and it has also improved in the last few releases of Node. Using the latest versions of node (v14 at the time of this writing) will yield better results. + +### `coverageReporters` \[array<string *| \[*string, options]>] + +Default: `["json", "lcov", "text", "clover"]` + +A list of reporter names that Jest uses when writing coverage reports. Any [istanbul reporter](https://github.com/istanbuljs/istanbuljs/tree/master/packages/istanbul-reports/lib) can be used. + +_Note: Setting this option overwrites the default values. Add `"text"` or `"text-summary"` to see a coverage summary in the console output._ + +_Note: You can pass additional options to the istanbul reporter using the tuple form. For example:_ + +```json +["json", ["lcov", {"projectRoot": "../../"}]] +``` + +For the additional information about the options object shape you can refer to `CoverageReporterWithOptions` type in the [type definitions](https://github.com/facebook/jest/tree/master/packages/jest-types/src/Config.ts). + +### `coverageThreshold` \[object] + +Default: `undefined` + +This will be used to configure minimum threshold enforcement for coverage results. Thresholds can be specified as `global`, as a [glob](https://github.com/isaacs/node-glob#glob-primer), and as a directory or file path. If thresholds aren't met, jest will fail. Thresholds specified as a positive number are taken to be the minimum percentage required. Thresholds specified as a negative number represent the maximum number of uncovered entities allowed. + +For example, with the following configuration jest will fail if there is less than 80% branch, line, and function coverage, or if there are more than 10 uncovered statements: + +```json +{ + ... + "jest": { + "coverageThreshold": { + "global": { + "branches": 80, + "functions": 80, + "lines": 80, + "statements": -10 + } + } + } +} +``` + +If globs or paths are specified alongside `global`, coverage data for matching paths will be subtracted from overall coverage and thresholds will be applied independently. Thresholds for globs are applied to all files matching the glob. If the file specified by path is not found, an error is returned. + +For example, with the following configuration: + +```json +{ + ... + "jest": { + "coverageThreshold": { + "global": { + "branches": 50, + "functions": 50, + "lines": 50, + "statements": 50 + }, + "./src/components/": { + "branches": 40, + "statements": 40 + }, + "./src/reducers/**/*.js": { + "statements": 90 + }, + "./src/api/very-important-module.js": { + "branches": 100, + "functions": 100, + "lines": 100, + "statements": 100 + } + } + } +} +``` + +Jest will fail if: + +- The `./src/components` directory has less than 40% branch or statement coverage. +- One of the files matching the `./src/reducers/**/*.js` glob has less than 90% statement coverage. +- The `./src/api/very-important-module.js` file has less than 100% coverage. +- Every remaining file combined has less than 50% coverage (`global`). + +### `dependencyExtractor` \[string] + +Default: `undefined` + +This option allows the use of a custom dependency extractor. It must be a node module that exports an object with an `extract` function. E.g.: + +```javascript +const crypto = require('crypto'); +const fs = require('fs'); + +module.exports = { + extract(code, filePath, defaultExtract) { + const deps = defaultExtract(code, filePath); + // Scan the file and add dependencies in `deps` (which is a `Set`) + return deps; + }, + getCacheKey() { + return crypto + .createHash('md5') + .update(fs.readFileSync(__filename)) + .digest('hex'); + }, +}; +``` + +The `extract` function should return an iterable (`Array`, `Set`, etc.) with the dependencies found in the code. + +That module can also contain a `getCacheKey` function to generate a cache key to determine if the logic has changed and any cached artifacts relying on it should be discarded. + +### `displayName` \[string, object] + +default: `undefined` + +Allows for a label to be printed alongside a test while it is running. This becomes more useful in multi-project repositories where there can be many jest configuration files. This visually tells which project a test belongs to. Here are sample valid values. + +```js +module.exports = { + displayName: 'CLIENT', +}; +``` + +or + +```js +module.exports = { + displayName: { + name: 'CLIENT', + color: 'blue', + }, +}; +``` + +As a secondary option, an object with the properties `name` and `color` can be passed. This allows for a custom configuration of the background color of the displayName. `displayName` defaults to white when its value is a string. Jest uses [chalk](https://github.com/chalk/chalk) to provide the color. As such, all of the valid options for colors supported by chalk are also supported by jest. + +### `errorOnDeprecated` \[boolean] + +Default: `false` + +Make calling deprecated APIs throw helpful error messages. Useful for easing the upgrade process. + +### `extensionsToTreatAsEsm` \[array<string>] + +Default: `[]` + +Jest will run `.mjs` and `.js` files with nearest `package.json`'s `type` field set to `module` as ECMAScript Modules. If you have any other files that should run with native ESM, you need to specify their file extension here. + +> Note: Jest's ESM support is still experimental, see [its docs for more details](ECMAScriptModules.md). + +```json +{ + ... + "jest": { + "extensionsToTreatAsEsm": [".ts"] + } +} +``` + +### `extraGlobals` \[array<string>] + +Default: `undefined` + +Test files run inside a [vm](https://nodejs.org/api/vm.html), which slows calls to global context properties (e.g. `Math`). With this option you can specify extra properties to be defined inside the vm for faster lookups. + +For example, if your tests call `Math` often, you can pass it by setting `extraGlobals`. + +```json +{ + ... + "jest": { + "extraGlobals": ["Math"] + } +} +``` + +### `forceCoverageMatch` \[array<string>] + +Default: `['']` + +Test files are normally ignored from collecting code coverage. With this option, you can overwrite this behavior and include otherwise ignored files in code coverage. + +For example, if you have tests in source files named with `.t.js` extension as following: + +```javascript +// sum.t.js + +export function sum(a, b) { + return a + b; +} + +if (process.env.NODE_ENV === 'test') { + test('sum', () => { + expect(sum(1, 2)).toBe(3); + }); +} +``` + +You can collect coverage from those files with setting `forceCoverageMatch`. + +```json +{ + ... + "jest": { + "forceCoverageMatch": ["**/*.t.js"] + } +} +``` + +### `globals` \[object] + +Default: `{}` + +A set of global variables that need to be available in all test environments. + +For example, the following would create a global `__DEV__` variable set to `true` in all test environments: + +```json +{ + ... + "jest": { + "globals": { + "__DEV__": true + } + } +} +``` + +Note that, if you specify a global reference value (like an object or array) here, and some code mutates that value in the midst of running a test, that mutation will _not_ be persisted across test runs for other test files. In addition, the `globals` object must be json-serializable, so it can't be used to specify global functions. For that, you should use `setupFiles`. + +### `globalSetup` \[string] + +Default: `undefined` + +This option allows the use of a custom global setup module which exports an async function that is triggered once before all test suites. This function gets Jest's `globalConfig` object as a parameter. + +_Note: A global setup module configured in a project (using multi-project runner) will be triggered only when you run at least one test from this project._ + +_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 +// setup.js +module.exports = async () => { + // ... + // Set reference to mongod in order to close the server during teardown. + global.__MONGOD__ = mongod; +}; +``` + +```js +// teardown.js +module.exports = async function () { + await global.__MONGOD__.stop(); +}; +``` + +### `globalTeardown` \[string] + +Default: `undefined` + +This option allows the use of a custom global teardown module which exports an async function that is triggered once after all test suites. This function gets Jest's `globalConfig` object as a parameter. + +_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._ + +_Note: The same caveat concerning transformation of `node_modules` as for `globalSetup` applies to `globalTeardown`._ + +### `haste` \[object] + +Default: `undefined` + +This will be used to configure the behavior of `jest-haste-map`, Jest's internal file crawler/cache system. The following options are supported: + +```ts +type HasteConfig = { + /** Whether to hash files using SHA-1. */ + computeSha1?: boolean; + /** The platform to use as the default, e.g. 'ios'. */ + defaultPlatform?: string | null; + /** Force use of Node's `fs` APIs rather than shelling out to `find` */ + forceNodeFilesystemAPI?: boolean; + /** + * Whether to follow symlinks when crawling for files. + * This options cannot be used in projects which use watchman. + * Projects with `watchman` set to true will error if this option is set to true. + */ + enableSymlinks?: boolean; + /** Path to a custom implementation of Haste. */ + hasteImplModulePath?: string; + /** All platforms to target, e.g ['ios', 'android']. */ + platforms?: Array; + /** Whether to throw on error on module collision. */ + throwOnModuleCollision?: boolean; + /** Custom HasteMap module */ + hasteMapModulePath?: string; +}; +``` + +### `injectGlobals` \[boolean] + +Default: `true` + +Insert Jest's globals (`expect`, `test`, `describe`, `beforeEach` etc.) into the global environment. If you set this to `false`, you should import from `@jest/globals`, e.g. + +```ts +import {expect, jest, test} from '@jest/globals'; + +jest.useFakeTimers(); + +test('some test', () => { + expect(Date.now()).toBe(0); +}); +``` + +_Note: This option is only supported using the default `jest-circus`. test runner_ + +### `maxConcurrency` \[number] + +Default: `5` + +A number limiting the number of tests that are allowed to run at the same time when using `test.concurrent`. Any test above this limit will be queued and executed once a slot is released. + +### `maxWorkers` \[number | string] + +Specifies the maximum number of workers the worker-pool will spawn for running tests. In single run mode, this defaults to the number of the cores available on your machine minus one for the main thread. In watch mode, this defaults to half of the available cores on your machine to ensure Jest is unobtrusive and does not grind your machine to a halt. It may be useful to adjust this in resource limited environments like CIs but the defaults should be adequate for most use-cases. + +For environments with variable CPUs available, you can use percentage based configuration: `"maxWorkers": "50%"` + +### `moduleDirectories` \[array<string>] + +Default: `["node_modules"]` + +An array of directory names to be searched recursively up from the requiring module's location. Setting this option will _override_ the default, if you wish to still search `node_modules` for packages include it along with any other options: `["node_modules", "bower_components"]` + +### `moduleFileExtensions` \[array<string>] + +Default: `["js", "jsx", "ts", "tsx", "json", "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, 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<string, string | array<string>>] + +Default: `null` + +A map from regular expressions to module names or to arrays of module names that allow to stub out resources, like images or styles with a single module. + +Modules that are mapped to an alias are unmocked by default, regardless of whether automocking is enabled or not. + +Use `` string token to refer to [`rootDir`](#rootdir-string) value if you want to use file paths. + +Additionally, you can substitute captured regex groups using numbered backreferences. + +Example: + +```json +{ + "moduleNameMapper": { + "^image![a-zA-Z0-9$_-]+$": "GlobalImageStub", + "^[./a-zA-Z0-9$_-]+\\.png$": "/RelativeImageStub.js", + "module_name_(.*)": "/substituted_module_$1.js", + "assets/(.*)": [ + "/images/$1", + "/photos/$1", + "/recipes/$1" + ] + } +} +``` + +The order in which the mappings are defined matters. Patterns are checked one by one until one fits. The most specific rule should be listed first. This is true for arrays of module names as well. + +_Note: If you provide module name without boundaries `^$` it may cause hard to spot errors. E.g. `relay` will replace all modules which contain `relay` as a substring in its name: `relay`, `react-relay` and `graphql-relay` will all be pointed to your stub._ + +### `modulePathIgnorePatterns` \[array<string>] + +Default: `[]` + +An array of regexp pattern strings that are matched against all module paths before those paths are to be considered 'visible' to the module loader. If a given module's path matches any of the patterns, it will not be `require()`-able in the test environment. + +These pattern strings match against the full path. Use the `` string token to include the path to your project's root directory to prevent it from accidentally ignoring all of your files in different environments that may have different root directories. Example: `["/build/"]`. + +### `modulePaths` \[array<string>] + +Default: `[]` + +An alternative API to setting the `NODE_PATH` env variable, `modulePaths` is an array of absolute paths to additional locations to search when resolving modules. Use the `` string token to include the path to your project's root directory. Example: `["/app/"]`. + +### `notify` \[boolean] + +Default: `false` + +Activates notifications for test results. + +**Beware:** Jest uses [node-notifier](https://github.com/mikaelbr/node-notifier) to display desktop notifications. On Windows, it creates a new start menu entry on the first use and not display the notification. Notifications will be properly displayed on subsequent runs + +### `notifyMode` \[string] + +Default: `failure-change` + +Specifies notification mode. Requires `notify: true`. + +#### Modes + +- `always`: always send a notification. +- `failure`: send a notification when tests fail. +- `success`: send a notification when tests pass. +- `change`: send a notification when the status changed. +- `success-change`: send a notification when tests pass or once when it fails. +- `failure-change`: send a notification when tests fail or once when it passes. + +### `preset` \[string] + +Default: `undefined` + +A preset that is used as a base for Jest's configuration. A preset should point to an npm module that has a `jest-preset.json`, `jest-preset.js`, `jest-preset.cjs` or `jest-preset.mjs` file at the root. + +For example, this preset `foo-bar/jest-preset.js` will be configured as follows: + +```json +{ + "preset": "foo-bar" +} +``` + +Presets may also be relative to filesystem paths. + +```json +{ + "preset": "./node_modules/foo-bar/jest-preset.js" +} +``` + +### `prettierPath` \[string] + +Default: `'prettier'` + +Sets the path to the [`prettier`](https://prettier.io/) node module used to update inline snapshots. + +### `projects` \[array<string | ProjectConfig>] + +Default: `undefined` + +When the `projects` configuration is provided with an array of paths or glob patterns, Jest will run tests in all of the specified projects at the same time. This is great for monorepos or when working on multiple projects at the same time. + +```json +{ + "projects": ["", "/examples/*"] +} +``` + +This example configuration will run Jest in the root directory as well as in every folder in the examples directory. You can have an unlimited amount of projects running in the same Jest instance. + +The projects feature can also be used to run multiple configurations or multiple [runners](#runner-string). For this purpose, you can pass an array of configuration objects. For example, to run both tests and ESLint (via [jest-runner-eslint](https://github.com/jest-community/jest-runner-eslint)) in the same invocation of Jest: + +```json +{ + "projects": [ + { + "displayName": "test" + }, + { + "displayName": "lint", + "runner": "jest-runner-eslint", + "testMatch": ["/**/*.js"] + } + ] +} +``` + +_Note: When using multi-project runner, it's recommended to add a `displayName` for each project. This will show the `displayName` of a project next to its tests._ + +### `reporters` \[array<moduleName | \[moduleName, options]>] + +Default: `undefined` + +Use this configuration option to add custom reporters to Jest. A custom reporter is a class that implements `onRunStart`, `onTestStart`, `onTestResult`, `onRunComplete` methods that will be called when any of those events occurs. + +If custom reporters are specified, the default Jest reporters will be overridden. To keep default reporters, `default` can be passed as a module name. + +This will override default reporters: + +```json +{ + "reporters": ["/my-custom-reporter.js"] +} +``` + +This will use custom reporter in addition to default reporters that Jest provides: + +```json +{ + "reporters": ["default", "/my-custom-reporter.js"] +} +``` + +Additionally, custom reporters can be configured by passing an `options` object as a second argument: + +```json +{ + "reporters": [ + "default", + ["/my-custom-reporter.js", {"banana": "yes", "pineapple": "no"}] + ] +} +``` + +Custom reporter modules must define a class that takes a `GlobalConfig` and reporter options as constructor arguments: + +Example reporter: + +```js +// my-custom-reporter.js +class MyCustomReporter { + constructor(globalConfig, options) { + this._globalConfig = globalConfig; + this._options = options; + } + + onRunComplete(contexts, results) { + console.log('Custom reporter output:'); + console.log('GlobalConfig: ', this._globalConfig); + console.log('Options: ', this._options); + } +} + +module.exports = MyCustomReporter; +// or export default MyCustomReporter; +``` + +Custom reporters can also force Jest to exit with non-0 code by returning an Error from `getLastError()` methods + +```js +class MyCustomReporter { + // ... + getLastError() { + if (this._shouldFail) { + return new Error('my-custom-reporter.js reported an error'); + } + } +} +``` + +For the full list of methods and argument types see `Reporter` interface in [packages/jest-reporters/src/types.ts](https://github.com/facebook/jest/blob/master/packages/jest-reporters/src/types.ts) + +### `resetMocks` \[boolean] + +Default: `false` + +Automatically reset mock state before every test. Equivalent to calling `jest.resetAllMocks()` before each test. This will lead to any mocks having their fake implementations removed but does not restore their initial implementation. + +### `resetModules` \[boolean] + +Default: `false` + +By default, each test file gets its own independent module registry. Enabling `resetModules` goes a step further and resets the module registry before running each individual test. This is useful to isolate modules for every test so that the local module state doesn't conflict between tests. This can be done programmatically using [`jest.resetModules()`](JestObjectAPI.md#jestresetmodules). + +### `resolver` \[string] + +Default: `undefined` + +This option allows the use of a custom resolver. This resolver must be a node module that exports a function expecting a string as the first argument for the path to resolve and an object with the following structure as the second argument: + +```json +{ + "basedir": string, + "defaultResolver": "function(request, options)", + "extensions": [string], + "moduleDirectory": [string], + "paths": [string], + "packageFilter": "function(pkg, pkgdir)", + "rootDir": [string] +} +``` + +The function should either return a path to the module that should be resolved or throw an error if the module can't be found. + +Note: the defaultResolver passed as an option is the Jest default resolver which might be useful when you write your custom one. It takes the same arguments as your custom one, e.g. `(request, options)`. + +For example, if you want to respect Browserify's [`"browser"` field](https://github.com/browserify/browserify-handbook/blob/master/readme.markdown#browser-field), you can use the following configuration: + +```json +{ + ... + "jest": { + "resolver": "/resolver.js" + } +} +``` + +```js +// resolver.js +const browserResolve = require('browser-resolve'); + +module.exports = browserResolve.sync; +``` + +By combining `defaultResolver` and `packageFilter` we can implement a `package.json` "pre-processor" that allows us to change how the default resolver will resolve modules. For example, imagine we want to use the field `"module"` if it is present, otherwise fallback to `"main"`: + +```json +{ + ... + "jest": { + "resolver": "my-module-resolve" + } +} +``` + +```js +// my-module-resolve package + +module.exports = (request, options) => { + // Call the defaultResolver, so we leverage its cache, error handling, etc. + return options.defaultResolver(request, { + ...options, + // Use packageFilter to process parsed `package.json` before the resolution (see https://www.npmjs.com/package/resolve#resolveid-opts-cb) + packageFilter: pkg => { + return { + ...pkg, + // Alter the value of `main` before resolving the package + main: pkg.module || pkg.main, + }; + }, + }); +}; +``` + +### `restoreMocks` \[boolean] + +Default: `false` + +Automatically restore mock state before every test. Equivalent to calling `jest.restoreAllMocks()` before each test. This will lead to any mocks having their fake implementations removed and restores their initial implementation. + +### `rootDir` \[string] + +Default: The root of the directory containing your Jest [config file](#) _or_ the `package.json` _or_ the [`pwd`](http://en.wikipedia.org/wiki/Pwd) if no `package.json` is found + +The root directory that Jest should scan for tests and modules within. If you put your Jest config inside your `package.json` and want the root directory to be the root of your repo, the value for this config param will default to the directory of the `package.json`. + +Oftentimes, you'll want to set this to `'src'` or `'lib'`, corresponding to where in your repository the code is stored. + +_Note that using `''` as a string token in any other path-based config settings will refer back to this value. So, for example, if you want your [`setupFiles`](#setupfiles-array) config entry to point at the `env-setup.js` file at the root of your project, you could set its value to `["/env-setup.js"]`._ + +### `roots` \[array<string>] + +Default: `[""]` + +A list of paths to directories that Jest should use to search for files in. + +There are times where you only want Jest to search in a single sub-directory (such as cases where you have a `src/` directory in your repo), but prevent it from accessing the rest of the repo. + +_Note: While `rootDir` is mostly used as a token to be re-used in other configuration options, `roots` is used by the internals of Jest to locate **test files and source files**. This applies also when searching for manual mocks for modules from `node_modules` (`__mocks__` will need to live in one of the `roots`)._ + +_Note: By default, `roots` has a single entry `` but there are cases where you may want to have multiple roots within one project, for example `roots: ["/src/", "/tests/"]`._ + +### `runner` \[string] + +Default: `"jest-runner"` + +This option allows you to use a custom runner instead of Jest's default test runner. Examples of runners include: + +- [`jest-runner-eslint`](https://github.com/jest-community/jest-runner-eslint) +- [`jest-runner-mocha`](https://github.com/rogeliog/jest-runner-mocha) +- [`jest-runner-tsc`](https://github.com/azz/jest-runner-tsc) +- [`jest-runner-prettier`](https://github.com/keplersj/jest-runner-prettier) + +_Note: The `runner` property value can omit the `jest-runner-` prefix of the package name._ + +To write a test-runner, export a class with which accepts `globalConfig` in the constructor, and has a `runTests` method with the signature: + +```ts +async runTests( + tests: Array, + watcher: TestWatcher, + onStart: OnTestStart, + onResult: OnTestSuccess, + onFailure: OnTestFailure, + options: TestRunnerOptions, +): Promise +``` + +If you need to restrict your test-runner to only run in serial rather than being executed in parallel your class should have the property `isSerial` to be set as `true`. + +### `setupFiles` \[array] + +Default: `[]` + +A list of paths to modules that run some code to configure or set up the testing environment. Each setupFile will be run once per test file. Since every test runs in its own environment, these scripts will be executed in the testing environment immediately before executing the test code itself. + +It's also worth noting that `setupFiles` will execute _before_ [`setupFilesAfterEnv`](#setupfilesafterenv-array). + +### `setupFilesAfterEnv` \[array] + +Default: `[]` + +A list of paths to modules that run some code to configure or set up the testing framework before each test file in the suite is executed. Since [`setupFiles`](#setupfiles-array) executes before the test framework is installed in the environment, this script file presents you the opportunity of running some code immediately after the test framework has been installed in the environment. + +If you want a path to be [relative to the root directory of your project](#rootdir-string), please include `` inside a path's string, like `"/a-configs-folder"`. + +For example, Jest ships with several plug-ins to `jasmine` that work by monkey-patching the jasmine API. If you wanted to add even more jasmine plugins to the mix (or if you wanted some custom, project-wide matchers for example), you could do so in these modules. + +_Note: `setupTestFrameworkScriptFile` is deprecated in favor of `setupFilesAfterEnv`._ + +Example `setupFilesAfterEnv` array in a jest.config.js: + +```js +module.exports = { + setupFilesAfterEnv: ['./jest.setup.js'], +}; +``` + +Example `jest.setup.js` file + +```js +jest.setTimeout(10000); // in milliseconds +``` + +### `slowTestThreshold` \[number] + +Default: `5` + +The number of seconds after which a test is considered as slow and reported as such in the results. + +### `snapshotResolver` \[string] + +Default: `undefined` + +The path to a module that can resolve test<->snapshot path. This config option lets you customize where Jest stores snapshot files on disk. + +Example snapshot resolver module: + +```js +module.exports = { + // resolves from test to snapshot path + resolveSnapshotPath: (testPath, snapshotExtension) => + testPath.replace('__tests__', '__snapshots__') + snapshotExtension, + + // resolves from snapshot to test path + resolveTestPath: (snapshotFilePath, snapshotExtension) => + snapshotFilePath + .replace('__snapshots__', '__tests__') + .slice(0, -snapshotExtension.length), + + // Example test path, used for preflight consistency check of the implementation above + testPathForConsistencyCheck: 'some/__tests__/example.test.js', +}; +``` + +### `snapshotSerializers` \[array<string>] + +Default: `[]` + +A list of paths to snapshot serializer modules Jest should use for snapshot testing. + +Jest has default serializers for built-in JavaScript types, HTML elements (Jest 20.0.0+), ImmutableJS (Jest 20.0.0+) and for React elements. See [snapshot test tutorial](TutorialReactNative.md#snapshot-test) for more information. + +Example serializer module: + +```js +// my-serializer-module +module.exports = { + serialize(val, config, indentation, depth, refs, printer) { + return 'Pretty foo: ' + printer(val.foo); + }, + + test(val) { + return val && val.hasOwnProperty('foo'); + }, +}; +``` + +`printer` is a function that serializes a value using existing plugins. + +To use `my-serializer-module` as a serializer, configuration would be as follows: + +```json +{ + ... + "jest": { + "snapshotSerializers": ["my-serializer-module"] + } +} +``` + +Finally tests would look as follows: + +```js +test(() => { + const bar = { + foo: { + x: 1, + y: 2, + }, + }; + + expect(bar).toMatchSnapshot(); +}); +``` + +Rendered snapshot: + +```json +Pretty foo: Object { + "x": 1, + "y": 2, +} +``` + +To make a dependency explicit instead of implicit, you can call [`expect.addSnapshotSerializer`](ExpectAPI.md#expectaddsnapshotserializerserializer) to add a module for an individual test file instead of adding its path to `snapshotSerializers` in Jest configuration. + +More about serializers API can be found [here](https://github.com/facebook/jest/tree/master/packages/pretty-format/README.md#serialize). + +### `testEnvironment` \[string] + +Default: `"node"` + +The test environment that will be used for testing. The default environment in Jest is a Node.js environment. If you are building a web app, you can use a browser-like environment through [`jsdom`](https://github.com/jsdom/jsdom) instead. + +By adding a `@jest-environment` docblock at the top of the file, you can specify another environment to be used for all tests in that file: + +```js +/** + * @jest-environment jsdom + */ + +test('use jsdom in this test file', () => { + const element = document.createElement('div'); + expect(element).not.toBeNull(); +}); +``` + +You can create your own module that will be used for setting up the test environment. The module must export a class with `setup`, `teardown` and `getVmContext` methods. You can also pass variables from this module to your test suites by assigning them to `this.global` object – this will make them available in your test suites as global variables. + +The class may optionally expose an asynchronous `handleTestEvent` method to bind to events fired by [`jest-circus`](https://github.com/facebook/jest/tree/master/packages/jest-circus). Normally, `jest-circus` test runner would pause until a promise returned from `handleTestEvent` gets fulfilled, **except for the next events**: `start_describe_definition`, `finish_describe_definition`, `add_hook`, `add_test` or `error` (for the up-to-date list you can look at [SyncEvent type in the types definitions](https://github.com/facebook/jest/tree/master/packages/jest-types/src/Circus.ts)). That is caused by backward compatibility reasons and `process.on('unhandledRejection', callback)` signature, but that usually should not be a problem for most of the use cases. + +Any docblock pragmas in test files will be passed to the environment constructor and can be used for per-test configuration. If the pragma does not have a value, it will be present in the object with its value set to an empty string. If the pragma is not present, it will not be present in the object. + +To use this class as your custom environment, refer to it by its full path within the project. For example, if your class is stored in `my-custom-environment.js` in some subfolder of your project, then the annotation might looke like this: + +```js +/** + * @jest-environment ./src/test/my-custom-environment + */ +``` + +_Note: TestEnvironment is sandboxed. Each test suite will trigger setup/teardown in their own TestEnvironment._ + +Example: + +```js +// my-custom-environment +const NodeEnvironment = require('jest-environment-node'); + +class CustomEnvironment extends NodeEnvironment { + constructor(config, context) { + super(config, context); + this.testPath = context.testPath; + this.docblockPragmas = context.docblockPragmas; + } + + async setup() { + await super.setup(); + await someSetupTasks(this.testPath); + this.global.someGlobalObject = createGlobalObject(); + + // Will trigger if docblock contains @my-custom-pragma my-pragma-value + if (this.docblockPragmas['my-custom-pragma'] === 'my-pragma-value') { + // ... + } + } + + async teardown() { + this.global.someGlobalObject = destroyGlobalObject(); + await someTeardownTasks(); + await super.teardown(); + } + + getVmContext() { + return super.getVmContext(); + } + + async handleTestEvent(event, state) { + if (event.name === 'test_start') { + // ... + } + } +} + +module.exports = CustomEnvironment; +``` + +```js +// my-test-suite +/** + * @jest-environment ./my-custom-environment + */ +let someGlobalObject; + +beforeAll(() => { + someGlobalObject = global.someGlobalObject; +}); +``` + +### `testEnvironmentOptions` \[Object] + +Default: `{}` + +Test environment options that will be passed to the `testEnvironment`. The relevant options depend on the environment. For example, you can override options given to [jsdom](https://github.com/jsdom/jsdom) such as `{userAgent: "Agent/007"}`. + +### `testFailureExitCode` \[number] + +Default: `1` + +The exit code Jest returns on test failure. + +_Note: This does not change the exit code in the case of Jest errors (e.g. invalid configuration)._ + +### `testMatch` \[array<string>] + +(default: `[ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]`) + +The glob patterns Jest uses to detect test files. By default it looks for `.js`, `.jsx`, `.ts` and `.tsx` files inside of `__tests__` folders, as well as any files with a suffix of `.test` or `.spec` (e.g. `Component.test.js` or `Component.spec.js`). It will also find files called `test.js` or `spec.js`. + +See the [micromatch](https://github.com/micromatch/micromatch) package for details of the patterns you can specify. + +See also [`testRegex` [string | array<string>]](#testregex-string--arraystring), but note that you cannot specify both options. + +_Note: Each glob pattern is applied in the order they are specified in the config. (For example `["!**/__fixtures__/**", "**/__tests__/**/*.js"]` will not exclude `__fixtures__` because the negation is overwritten with the second pattern. In order to make the negated glob work in this example it has to come after `**/__tests__/**/*.js`.)_ + +### `testPathIgnorePatterns` \[array<string>] + +Default: `["/node_modules/"]` + +An array of regexp pattern strings that are matched against all test paths before executing the test. If the test path matches any of the patterns, it will be skipped. + +These pattern strings match against the full path. Use the `` string token to include the path to your project's root directory to prevent it from accidentally ignoring all of your files in different environments that may have different root directories. Example: `["/build/", "/node_modules/"]`. + +### `testRegex` \[string | array<string>] + +Default: `(/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$` + +The pattern or patterns Jest uses to detect test files. By default it looks for `.js`, `.jsx`, `.ts` and `.tsx` files inside of `__tests__` folders, as well as any files with a suffix of `.test` or `.spec` (e.g. `Component.test.js` or `Component.spec.js`). It will also find files called `test.js` or `spec.js`. See also [`testMatch` [array<string>]](#testmatch-arraystring), but note that you cannot specify both options. + +The following is a visualization of the default regex: + +```bash +├── __tests__ +│ └── component.spec.js # test +│ └── anything # test +├── package.json # not test +├── foo.test.js # test +├── bar.spec.jsx # test +└── component.js # not test +``` + +_Note: `testRegex` will try to detect test files using the **absolute file path**, therefore, having a folder with a name that matches it will run all the files as tests_ + +### `testResultsProcessor` \[string] + +Default: `undefined` + +This option allows the use of a custom results processor. This processor must be a node module that exports a function expecting an object with the following structure as the first argument and return it: + +```json +{ + "success": boolean, + "startTime": epoch, + "numTotalTestSuites": number, + "numPassedTestSuites": number, + "numFailedTestSuites": number, + "numRuntimeErrorTestSuites": number, + "numTotalTests": number, + "numPassedTests": number, + "numFailedTests": number, + "numPendingTests": number, + "numTodoTests": number, + "openHandles": Array, + "testResults": [{ + "numFailingTests": number, + "numPassingTests": number, + "numPendingTests": number, + "testResults": [{ + "title": string (message in it block), + "status": "failed" | "pending" | "passed", + "ancestorTitles": [string (message in describe blocks)], + "failureMessages": [string], + "numPassingAsserts": number, + "location": { + "column": number, + "line": number + } + }, + ... + ], + "perfStats": { + "start": epoch, + "end": epoch + }, + "testFilePath": absolute path to test file, + "coverage": {} + }, + ... + ] +} +``` + +### `testRunner` \[string] + +Default: `jest-circus/runner` + +This option allows the use of a custom test runner. The default is `jest-circus`. A custom test runner can be provided by specifying a path to a test runner implementation. + +The test runner module must export a function with the following signature: + +```ts +function testRunner( + globalConfig: GlobalConfig, + config: ProjectConfig, + environment: Environment, + runtime: Runtime, + testPath: string, +): Promise; +``` + +An example of such function can be found in our default [jasmine2 test runner package](https://github.com/facebook/jest/blob/master/packages/jest-jasmine2/src/index.ts). + +### `testSequencer` \[string] + +Default: `@jest/test-sequencer` + +This option allows you to use a custom sequencer instead of Jest's default. `sort` may optionally return a Promise. + +Example: + +Sort test path alphabetically. + +```js +// testSequencer.js +const Sequencer = require('@jest/test-sequencer').default; + +class CustomSequencer extends Sequencer { + sort(tests) { + // Test structure information + // https://github.com/facebook/jest/blob/6b8b1404a1d9254e7d5d90a8934087a9c9899dab/packages/jest-runner/src/types.ts#L17-L21 + const copyTests = Array.from(tests); + return copyTests.sort((testA, testB) => (testA.path > testB.path ? 1 : -1)); + } +} + +module.exports = CustomSequencer; +``` + +Use it in your Jest config file like this: + +```json +{ + "testSequencer": "path/to/testSequencer.js" +} +``` + +### `testTimeout` \[number] + +Default: `5000` + +Default timeout of a test in milliseconds. + +### `testURL` \[string] + +Default: `http://localhost` + +This option sets the URL for the jsdom environment. It is reflected in properties such as `location.href`. + +### `timers` \[string] + +Default: `real` + +Setting this value to `fake` or `modern` enables fake timers for all tests by default. Fake timers are useful when a piece of code sets a long timeout that we don't want to wait for in a test. You can learn more about fake timers [here](JestObjectAPI.md#jestusefaketimersimplementation-modern--legacy). + +If the value is `legacy`, the old implementation will be used as implementation instead of one backed by [`@sinonjs/fake-timers`](https://github.com/sinonjs/fake-timers). + +### `transform` \[object<string, pathToTransformer | \[pathToTransformer, object]>] + +Default: `{"\\.[jt]sx?$": "babel-jest"}` + +A map from regular expressions to paths to transformers. A transformer is a module that provides a synchronous function for transforming source files. For example, if you wanted to be able to use a new language feature in your modules or tests that aren't yet supported by node, you might plug in one of many compilers that compile a future version of JavaScript to a current one. Example: see the [examples/typescript](https://github.com/facebook/jest/blob/master/examples/typescript/package.json#L16) example or the [webpack tutorial](Webpack.md). + +Examples of such compilers include: + +- [Babel](https://babeljs.io/) +- [TypeScript](http://www.typescriptlang.org/) +- To build your own please visit the [Custom Transformer](CodeTransformation.md#writing-custom-transformers) section + +You can pass configuration to a transformer like `{filePattern: ['path-to-transformer', {options}]}` For example, to configure babel-jest for non-default behavior, `{"\\.js$": ['babel-jest', {rootMode: "upward"}]}` + +_Note: a transformer is only run once per file unless the file has changed. During the development of a transformer it can be useful to run Jest with `--no-cache` to frequently [delete Jest's cache](Troubleshooting.md#caching-issues)._ + +_Note: when adding additional code transformers, this will overwrite the default config and `babel-jest` is no longer automatically loaded. If you want to use it to compile JavaScript or Typescript, it has to be explicitly defined by adding `{"\\.[jt]sx?$": "babel-jest"}` to the transform property. See [babel-jest plugin](https://github.com/facebook/jest/tree/master/packages/babel-jest#setup)_ + +A transformer must be an object with at least a `process` function, and it's also recommended to include a `getCacheKey` function. If your transformer is written in ESM you should have a default export with that object. + +If the tests are written using [native ESM](ECMAScriptModules.md) the transformer can export `processAsync` and `getCacheKeyAsync` instead or in addition to the synchronous variants. + +### `transformIgnorePatterns` \[array<string>] + +Default: `["/node_modules/", "\\.pnp\\.[^\\\/]+$"]` + +An array of regexp pattern strings that are matched against all source file paths before transformation. If the file path matches any of the patterns, it will not be transformed. + +These pattern strings match against the full path. Use the `` string token to include the path to your project's root directory to prevent it from accidentally ignoring all of your files in different environments that may have different root directories. + +Example: `["/bower_components/", "/node_modules/"]`. + +Sometimes it happens (especially in React Native or TypeScript projects) that 3rd party modules are published as untranspiled. Since all files inside `node_modules` are not transformed by default, Jest will not understand the code in these modules, resulting in syntax errors. To overcome this, you may use `transformIgnorePatterns` to allow transpiling such modules. You'll find a good example of this use case in [React Native Guide](/docs/tutorial-react-native#transformignorepatterns-customization). + +### `unmockedModulePathPatterns` \[array<string>] + +Default: `[]` + +An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them. If a module's path matches any of the patterns in this list, it will not be automatically mocked by the module loader. + +This is useful for some commonly used 'utility' modules that are almost always used as implementation details almost all the time (like underscore/lo-dash, etc). It's generally a best practice to keep this list as small as possible and always use explicit `jest.mock()`/`jest.unmock()` calls in individual tests. Explicit per-test setup is far easier for other readers of the test to reason about the environment the test will run in. + +It is possible to override this setting in individual tests by explicitly calling `jest.mock()` at the top of the test file. + +### `verbose` \[boolean] + +Default: `false` + +Indicates whether each individual test should be reported during the run. All errors will also still be shown on the bottom after execution. Note that if there is only one test file being run it will default to `true`. + +### `watchPathIgnorePatterns` \[array<string>] + +Default: `[]` + +An array of RegExp patterns that are matched against all source file paths before re-running tests in watch mode. If the file path matches any of the patterns, when it is updated, it will not trigger a re-run of tests. + +These patterns match against the full path. Use the `` string token to include the path to your project's root directory to prevent it from accidentally ignoring all of your files in different environments that may have different root directories. Example: `["/node_modules/"]`. + +Even if nothing is specified here, the watcher will ignore changes to any hidden files and directories, i.e. files and folders that begin with a dot (`.`). + +### `watchPlugins` \[array<string | \[string, Object]>] + +Default: `[]` + +This option allows you to use custom watch plugins. Read more about watch plugins [here](watch-plugins). + +Examples of watch plugins include: + +- [`jest-watch-master`](https://github.com/rickhanlonii/jest-watch-master) +- [`jest-watch-select-projects`](https://github.com/rogeliog/jest-watch-select-projects) +- [`jest-watch-suspend`](https://github.com/unional/jest-watch-suspend) +- [`jest-watch-typeahead`](https://github.com/jest-community/jest-watch-typeahead) +- [`jest-watch-yarn-workspaces`](https://github.com/cameronhunter/jest-watch-directories/tree/master/packages/jest-watch-yarn-workspaces) + +_Note: The values in the `watchPlugins` property value can omit the `jest-watch-` prefix of the package name._ + +### `watchman` \[boolean] + +Default: `true` + +Whether to use [`watchman`](https://facebook.github.io/watchman/) for file crawling. + +### `//` \[string] + +No default + +This option allows comments in `package.json`. Include the comment text as the value of this key anywhere in `package.json`. + +Example: + +```json +{ + "name": "my-project", + "jest": { + "//": "Comment goes here", + "verbose": true + } +} +``` diff --git a/website/versioned_docs/version-27.0/DynamoDB.md b/website/versioned_docs/version-27.0/DynamoDB.md new file mode 100644 index 000000000000..a5abd9147aed --- /dev/null +++ b/website/versioned_docs/version-27.0/DynamoDB.md @@ -0,0 +1,81 @@ +--- +id: dynamodb +title: Using with DynamoDB +--- + +With the [Global Setup/Teardown](Configuration.md#globalsetup-string) and [Async Test Environment](Configuration.md#testenvironment-string) APIs, Jest can work smoothly with [DynamoDB](https://aws.amazon.com/dynamodb/). + +## Use jest-dynamodb Preset + +[Jest DynamoDB](https://github.com/shelfio/jest-dynamodb) provides all required configuration to run your tests using DynamoDB. + +1. First, install `@shelf/jest-dynamodb` + +``` +yarn add @shelf/jest-dynamodb --dev +``` + +2. Specify preset in your Jest configuration: + +```json +{ + "preset": "@shelf/jest-dynamodb" +} +``` + +3. Create `jest-dynamodb-config.js` and define DynamoDB tables + +See [Create Table API](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#createTable-property) + +```js +module.exports = { + tables: [ + { + TableName: `files`, + KeySchema: [{AttributeName: 'id', KeyType: 'HASH'}], + AttributeDefinitions: [{AttributeName: 'id', AttributeType: 'S'}], + ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}, + }, + // etc + ], +}; +``` + +4. Configure DynamoDB client + +```js +const {DocumentClient} = require('aws-sdk/clients/dynamodb'); + +const isTest = process.env.JEST_WORKER_ID; +const config = { + convertEmptyValues: true, + ...(isTest && { + endpoint: 'localhost:8000', + sslEnabled: false, + region: 'local-env', + }), +}; + +const ddb = new DocumentClient(config); +``` + +5. Write tests + +```js +it('should insert item into table', async () => { + await ddb + .put({TableName: 'files', Item: {id: '1', hello: 'world'}}) + .promise(); + + const {Item} = await ddb.get({TableName: 'files', Key: {id: '1'}}).promise(); + + expect(Item).toEqual({ + id: '1', + hello: 'world', + }); +}); +``` + +There's no need to load any dependencies. + +See [documentation](https://github.com/shelfio/jest-dynamodb) for details. diff --git a/website/versioned_docs/version-27.0/ECMAScriptModules.md b/website/versioned_docs/version-27.0/ECMAScriptModules.md new file mode 100644 index 000000000000..61855ea5fa9c --- /dev/null +++ b/website/versioned_docs/version-27.0/ECMAScriptModules.md @@ -0,0 +1,31 @@ +--- +id: ecmascript-modules +title: ECMAScript Modules +--- + +Jest ships with _experimental_ support for ECMAScript Modules (ESM). + +> Note that due to its experimental nature there are many bugs and missing features in Jest's implementation, both known and unknown. You should check out the [tracking issue](https://github.com/facebook/jest/issues/9430) and the [label](https://github.com/facebook/jest/labels/ES%20Modules) on the issue tracker for the latest status. + +> Also note that the APIs Jest uses to implement ESM support is still [considered experimental by Node](https://nodejs.org/api/vm.html#vm_class_vm_module) (as of version `14.13.1`). + +With the warnings out of the way, this is how you activate ESM support in your tests. + +1. Ensure you either disable [code transforms](./configuration#transform-objectstring-pathtotransformer--pathtotransformer-object) by passing `transform: {}` or otherwise configure your transformer to emit ESM rather than the default CommonJS (CJS). +1. Execute `node` with `--experimental-vm-modules`, e.g. `node --experimental-vm-modules node_modules/.bin/jest` or `NODE_OPTIONS=--experimental-vm-modules npx jest` etc.. On Windows, you can use [`cross-env`](https://github.com/kentcdodds/cross-env) to be able to set environment variables. +1. Beyond that, we attempt to follow `node`'s logic for activating "ESM mode" (such as looking at `type` in `package.json` or `mjs` files), see [their docs](https://nodejs.org/api/esm.html#esm_enabling) for details. +1. If you want to treat other file extensions (such as `ts`) as ESM, please use the [`extensionsToTreatAsEsm` option](Configuration.md#extensionstotreatasesm-arraystring). + +## Differences between ESM and CommonJS + +Most of the differences are explained in [Node's documentation](https://nodejs.org/api/esm.html#esm_differences_between_es_modules_and_commonjs), but in addition to the things mentioned there, Jest injects a special variable into all executed files - the [`jest` object](JestObjectAPI.md). To access this object in ESM, you need to import it from the `@jest/globals` module. + +```js +import {jest} from '@jest/globals'; + +jest.useFakeTimers(); + +// etc. +``` + +Please note that we currently don't support `jest.mock` in a clean way in ESM, but that is something we intend to add proper support for in the future. Follow [this issue](https://github.com/facebook/jest/issues/10025) for updates. diff --git a/website/versioned_docs/version-27.0/EnvironmentVariables.md b/website/versioned_docs/version-27.0/EnvironmentVariables.md new file mode 100644 index 000000000000..fb50c3e72d08 --- /dev/null +++ b/website/versioned_docs/version-27.0/EnvironmentVariables.md @@ -0,0 +1,14 @@ +--- +id: environment-variables +title: Environment Variables +--- + +Jest sets the following environment variables: + +### `NODE_ENV` + +Set to `'test'` if it's not already set to something else. + +### `JEST_WORKER_ID` + +Each worker process is assigned a unique id (index-based that starts with `1`). This is set to `1` for all tests when [`runInBand`](CLI.md#--runinband) is set to true. diff --git a/website/versioned_docs/version-27.0/Es6ClassMocks.md b/website/versioned_docs/version-27.0/Es6ClassMocks.md new file mode 100644 index 000000000000..334e98a8a83f --- /dev/null +++ b/website/versioned_docs/version-27.0/Es6ClassMocks.md @@ -0,0 +1,363 @@ +--- +id: es6-class-mocks +title: ES6 Class Mocks +--- + +Jest can be used to mock ES6 classes that are imported into files you want to test. + +ES6 classes are constructor functions with some syntactic sugar. Therefore, any mock for an ES6 class must be a function or an actual ES6 class (which is, again, another function). So you can mock them using [mock functions](MockFunctions.md). + +## An ES6 Class Example + +We'll use a contrived example of a class that plays sound files, `SoundPlayer`, and a consumer class which uses that class, `SoundPlayerConsumer`. We'll mock `SoundPlayer` in our tests for `SoundPlayerConsumer`. + +```javascript +// sound-player.js +export default class SoundPlayer { + constructor() { + this.foo = 'bar'; + } + + playSoundFile(fileName) { + console.log('Playing sound file ' + fileName); + } +} +``` + +```javascript +// sound-player-consumer.js +import SoundPlayer from './sound-player'; + +export default class SoundPlayerConsumer { + constructor() { + this.soundPlayer = new SoundPlayer(); + } + + playSomethingCool() { + const coolSoundFileName = 'song.mp3'; + this.soundPlayer.playSoundFile(coolSoundFileName); + } +} +``` + +## The 4 ways to create an ES6 class mock + +### Automatic mock + +Calling `jest.mock('./sound-player')` returns a useful "automatic mock" you can use to spy on calls to the class constructor and all of its methods. It replaces the ES6 class with a mock constructor, and replaces all of its methods with [mock functions](MockFunctions.md) that always return `undefined`. Method calls are saved in `theAutomaticMock.mock.instances[index].methodName.mock.calls`. + +Please note that if you use arrow functions in your classes, they will _not_ be part of the mock. The reason for that is that arrow functions are not present on the object's prototype, they are merely properties holding a reference to a function. + +If you don't need to replace the implementation of the class, this is the easiest option to set up. For example: + +```javascript +import SoundPlayer from './sound-player'; +import SoundPlayerConsumer from './sound-player-consumer'; +jest.mock('./sound-player'); // SoundPlayer is now a mock constructor + +beforeEach(() => { + // Clear all instances and calls to constructor and all methods: + SoundPlayer.mockClear(); +}); + +it('We can check if the consumer called the class constructor', () => { + const soundPlayerConsumer = new SoundPlayerConsumer(); + expect(SoundPlayer).toHaveBeenCalledTimes(1); +}); + +it('We can check if the consumer called a method on the class instance', () => { + // Show that mockClear() is working: + expect(SoundPlayer).not.toHaveBeenCalled(); + + const soundPlayerConsumer = new SoundPlayerConsumer(); + // Constructor should have been called again: + expect(SoundPlayer).toHaveBeenCalledTimes(1); + + const coolSoundFileName = 'song.mp3'; + soundPlayerConsumer.playSomethingCool(); + + // mock.instances is available with automatic mocks: + const mockSoundPlayerInstance = SoundPlayer.mock.instances[0]; + const mockPlaySoundFile = mockSoundPlayerInstance.playSoundFile; + expect(mockPlaySoundFile.mock.calls[0][0]).toEqual(coolSoundFileName); + // Equivalent to above check: + expect(mockPlaySoundFile).toHaveBeenCalledWith(coolSoundFileName); + expect(mockPlaySoundFile).toHaveBeenCalledTimes(1); +}); +``` + +### Manual mock + +Create a [manual mock](ManualMocks.md) by saving a mock implementation in the `__mocks__` folder. This allows you to specify the implementation, and it can be used across test files. + +```javascript +// __mocks__/sound-player.js + +// Import this named export into your test file: +export const mockPlaySoundFile = jest.fn(); +const mock = jest.fn().mockImplementation(() => { + return {playSoundFile: mockPlaySoundFile}; +}); + +export default mock; +``` + +Import the mock and the mock method shared by all instances: + +```javascript +// sound-player-consumer.test.js +import SoundPlayer, {mockPlaySoundFile} from './sound-player'; +import SoundPlayerConsumer from './sound-player-consumer'; +jest.mock('./sound-player'); // SoundPlayer is now a mock constructor + +beforeEach(() => { + // Clear all instances and calls to constructor and all methods: + SoundPlayer.mockClear(); + mockPlaySoundFile.mockClear(); +}); + +it('We can check if the consumer called the class constructor', () => { + const soundPlayerConsumer = new SoundPlayerConsumer(); + expect(SoundPlayer).toHaveBeenCalledTimes(1); +}); + +it('We can check if the consumer called a method on the class instance', () => { + const soundPlayerConsumer = new SoundPlayerConsumer(); + const coolSoundFileName = 'song.mp3'; + soundPlayerConsumer.playSomethingCool(); + expect(mockPlaySoundFile).toHaveBeenCalledWith(coolSoundFileName); +}); +``` + +### Calling [`jest.mock()`](JestObjectAPI.md#jestmockmodulename-factory-options) with the module factory parameter + +`jest.mock(path, moduleFactory)` takes a **module factory** argument. A module factory is a function that returns the mock. + +In order to mock a constructor function, the module factory must return a constructor function. In other words, the module factory must be a function that returns a function - a higher-order function (HOF). + +```javascript +import SoundPlayer from './sound-player'; +const mockPlaySoundFile = jest.fn(); +jest.mock('./sound-player', () => { + return jest.fn().mockImplementation(() => { + return {playSoundFile: mockPlaySoundFile}; + }); +}); +``` + +A limitation with the factory parameter is that, since calls to `jest.mock()` are hoisted to the top of the file, it's not possible to first define a variable and then use it in the factory. An exception is made for variables that start with the word 'mock'. It's up to you to guarantee that they will be initialized on time! For example, the following will throw an out-of-scope error due to the use of 'fake' instead of 'mock' in the variable declaration: + +```javascript +// Note: this will fail +import SoundPlayer from './sound-player'; +const fakePlaySoundFile = jest.fn(); +jest.mock('./sound-player', () => { + return jest.fn().mockImplementation(() => { + return {playSoundFile: fakePlaySoundFile}; + }); +}); +``` + +### Replacing the mock using [`mockImplementation()`](MockFunctionAPI.md#mockfnmockimplementationfn) or [`mockImplementationOnce()`](MockFunctionAPI.md#mockfnmockimplementationoncefn) + +You can replace all of the above mocks in order to change the implementation, for a single test or all tests, by calling `mockImplementation()` on the existing mock. + +Calls to jest.mock are hoisted to the top of the code. You can specify a mock later, e.g. in `beforeAll()`, by calling `mockImplementation()` (or `mockImplementationOnce()`) on the existing mock instead of using the factory parameter. This also allows you to change the mock between tests, if needed: + +```javascript +import SoundPlayer from './sound-player'; +import SoundPlayerConsumer from './sound-player-consumer'; + +jest.mock('./sound-player'); + +describe('When SoundPlayer throws an error', () => { + beforeAll(() => { + SoundPlayer.mockImplementation(() => { + return { + playSoundFile: () => { + throw new Error('Test error'); + }, + }; + }); + }); + + it('Should throw an error when calling playSomethingCool', () => { + const soundPlayerConsumer = new SoundPlayerConsumer(); + expect(() => soundPlayerConsumer.playSomethingCool()).toThrow(); + }); +}); +``` + +## In depth: Understanding mock constructor functions + +Building your constructor function mock using `jest.fn().mockImplementation()` makes mocks appear more complicated than they really are. This section shows how you can create your own mocks to illustrate how mocking works. + +### Manual mock that is another ES6 class + +If you define an ES6 class using the same filename as the mocked class in the `__mocks__` folder, it will serve as the mock. This class will be used in place of the real class. This allows you to inject a test implementation for the class, but does not provide a way to spy on calls. + +For the contrived example, the mock might look like this: + +```javascript +// __mocks__/sound-player.js +export default class SoundPlayer { + constructor() { + console.log('Mock SoundPlayer: constructor was called'); + } + + playSoundFile() { + console.log('Mock SoundPlayer: playSoundFile was called'); + } +} +``` + +### Mock using module factory parameter + +The module factory function passed to `jest.mock(path, moduleFactory)` can be a HOF that returns a function\*. This will allow calling `new` on the mock. Again, this allows you to inject different behavior for testing, but does not provide a way to spy on calls. + +#### \* Module factory function must return a function + +In order to mock a constructor function, the module factory must return a constructor function. In other words, the module factory must be a function that returns a function - a higher-order function (HOF). + +```javascript +jest.mock('./sound-player', () => { + return function () { + return {playSoundFile: () => {}}; + }; +}); +``` + +**_Note: Arrow functions won't work_** + +Note that the mock can't be an arrow function because calling `new` on an arrow function is not allowed in JavaScript. So this won't work: + +```javascript +jest.mock('./sound-player', () => { + return () => { + // Does not work; arrow functions can't be called with new + return {playSoundFile: () => {}}; + }; +}); +``` + +This will throw **_TypeError: \_soundPlayer2.default is not a constructor_**, unless the code is transpiled to ES5, e.g. by `@babel/preset-env`. (ES5 doesn't have arrow functions nor classes, so both will be transpiled to plain functions.) + +## Keeping track of usage (spying on the mock) + +Injecting a test implementation is helpful, but you will probably also want to test whether the class constructor and methods are called with the correct parameters. + +### Spying on the constructor + +In order to track calls to the constructor, replace the function returned by the HOF with a Jest mock function. Create it with [`jest.fn()`](JestObjectAPI.md#jestfnimplementation), and then specify its implementation with `mockImplementation()`. + +```javascript +import SoundPlayer from './sound-player'; +jest.mock('./sound-player', () => { + // Works and lets you check for constructor calls: + return jest.fn().mockImplementation(() => { + return {playSoundFile: () => {}}; + }); +}); +``` + +This will let us inspect usage of our mocked class, using `SoundPlayer.mock.calls`: `expect(SoundPlayer).toHaveBeenCalled();` or near-equivalent: `expect(SoundPlayer.mock.calls.length).toEqual(1);` + +### Mocking non-default class exports + +If the class is **not** the default export from the module then you need to return an object with the key that is the same as the class export name. + +```javascript +import {SoundPlayer} from './sound-player'; +jest.mock('./sound-player', () => { + // Works and lets you check for constructor calls: + return { + SoundPlayer: jest.fn().mockImplementation(() => { + return {playSoundFile: () => {}}; + }), + }; +}); +``` + +### Spying on methods of our class + +Our mocked class will need to provide any member functions (`playSoundFile` in the example) that will be called during our tests, or else we'll get an error for calling a function that doesn't exist. But we'll probably want to also spy on calls to those methods, to ensure that they were called with the expected parameters. + +A new object will be created each time the mock constructor function is called during tests. To spy on method calls in all of these objects, we populate `playSoundFile` with another mock function, and store a reference to that same mock function in our test file, so it's available during tests. + +```javascript +import SoundPlayer from './sound-player'; +const mockPlaySoundFile = jest.fn(); +jest.mock('./sound-player', () => { + return jest.fn().mockImplementation(() => { + return {playSoundFile: mockPlaySoundFile}; + // Now we can track calls to playSoundFile + }); +}); +``` + +The manual mock equivalent of this would be: + +```javascript +// __mocks__/sound-player.js + +// Import this named export into your test file +export const mockPlaySoundFile = jest.fn(); +const mock = jest.fn().mockImplementation(() => { + return {playSoundFile: mockPlaySoundFile}; +}); + +export default mock; +``` + +Usage is similar to the module factory function, except that you can omit the second argument from `jest.mock()`, and you must import the mocked method into your test file, since it is no longer defined there. Use the original module path for this; don't include `__mocks__`. + +### Cleaning up between tests + +To clear the record of calls to the mock constructor function and its methods, we call [`mockClear()`](MockFunctionAPI.md#mockfnmockclear) in the `beforeEach()` function: + +```javascript +beforeEach(() => { + SoundPlayer.mockClear(); + mockPlaySoundFile.mockClear(); +}); +``` + +## Complete example + +Here's a complete test file which uses the module factory parameter to `jest.mock`: + +```javascript +// sound-player-consumer.test.js +import SoundPlayer from './sound-player'; +import SoundPlayerConsumer from './sound-player-consumer'; + +const mockPlaySoundFile = jest.fn(); +jest.mock('./sound-player', () => { + return jest.fn().mockImplementation(() => { + return {playSoundFile: mockPlaySoundFile}; + }); +}); + +beforeEach(() => { + SoundPlayer.mockClear(); + mockPlaySoundFile.mockClear(); +}); + +it('The consumer should be able to call new() on SoundPlayer', () => { + const soundPlayerConsumer = new SoundPlayerConsumer(); + // Ensure constructor created the object: + expect(soundPlayerConsumer).toBeTruthy(); +}); + +it('We can check if the consumer called the class constructor', () => { + const soundPlayerConsumer = new SoundPlayerConsumer(); + expect(SoundPlayer).toHaveBeenCalledTimes(1); +}); + +it('We can check if the consumer called a method on the class instance', () => { + const soundPlayerConsumer = new SoundPlayerConsumer(); + const coolSoundFileName = 'song.mp3'; + soundPlayerConsumer.playSomethingCool(); + expect(mockPlaySoundFile.mock.calls[0][0]).toEqual(coolSoundFileName); +}); +``` diff --git a/website/versioned_docs/version-27.0/ExpectAPI.md b/website/versioned_docs/version-27.0/ExpectAPI.md new file mode 100644 index 000000000000..43a39820e975 --- /dev/null +++ b/website/versioned_docs/version-27.0/ExpectAPI.md @@ -0,0 +1,1374 @@ +--- +id: expect +title: Expect +--- + +When you're writing tests, you often need to check that values meet certain conditions. `expect` gives you access to a number of "matchers" that let you validate different things. + +For additional Jest matchers maintained by the Jest Community check out [`jest-extended`](https://github.com/jest-community/jest-extended). + +## Methods + +import TOCInline from "@theme/TOCInline" + + + +--- + +## Reference + +### `expect(value)` + +The `expect` function is used every time you want to test a value. You will rarely call `expect` by itself. Instead, you will use `expect` along with a "matcher" function to assert something about a value. + +It's easier to understand this with an example. Let's say you have a method `bestLaCroixFlavor()` which is supposed to return the string `'grapefruit'`. Here's how you would test that: + +```js +test('the best flavor is grapefruit', () => { + expect(bestLaCroixFlavor()).toBe('grapefruit'); +}); +``` + +In this case, `toBe` is the matcher function. There are a lot of different matcher functions, documented below, to help you test different things. + +The argument to `expect` should be the value that your code produces, and any argument to the matcher should be the correct value. If you mix them up, your tests will still work, but the error messages on failing tests will look strange. + +### `expect.extend(matchers)` + +You can use `expect.extend` to add your own matchers to Jest. For example, let's say that you're testing a number utility library and you're frequently asserting that numbers appear within particular ranges of other numbers. You could abstract that into a `toBeWithinRange` matcher: + +```js +expect.extend({ + toBeWithinRange(received, floor, ceiling) { + const pass = received >= floor && received <= ceiling; + if (pass) { + return { + message: () => + `expected ${received} not to be within range ${floor} - ${ceiling}`, + pass: true, + }; + } else { + return { + message: () => + `expected ${received} to be within range ${floor} - ${ceiling}`, + pass: false, + }; + } + }, +}); + +test('numeric ranges', () => { + expect(100).toBeWithinRange(90, 110); + expect(101).not.toBeWithinRange(0, 100); + expect({apples: 6, bananas: 3}).toEqual({ + apples: expect.toBeWithinRange(1, 10), + bananas: expect.not.toBeWithinRange(11, 20), + }); +}); +``` + +_Note_: In TypeScript, when using `@types/jest` for example, you can declare the new `toBeWithinRange` matcher in the imported module like this: + +```ts +declare global { + namespace jest { + interface Matchers { + toBeWithinRange(a: number, b: number): R; + } + } +} +``` + +#### Async Matchers + +`expect.extend` also supports async matchers. Async matchers return a Promise so you will need to await the returned value. Let's use an example matcher to illustrate the usage of them. We are going to implement a matcher called `toBeDivisibleByExternalValue`, where the divisible number is going to be pulled from an external source. + +```js +expect.extend({ + async toBeDivisibleByExternalValue(received) { + const externalValue = await getExternalValueFromRemoteSource(); + const pass = received % externalValue == 0; + if (pass) { + return { + message: () => + `expected ${received} not to be divisible by ${externalValue}`, + pass: true, + }; + } else { + return { + message: () => + `expected ${received} to be divisible by ${externalValue}`, + pass: false, + }; + } + }, +}); + +test('is divisible by external value', async () => { + await expect(100).toBeDivisibleByExternalValue(); + await expect(101).not.toBeDivisibleByExternalValue(); +}); +``` + +#### Custom Matchers API + +Matchers should return an object (or a Promise of an object) with two keys. `pass` indicates whether there was a match or not, and `message` provides a function with no arguments that returns an error message in case of failure. Thus, when `pass` is false, `message` should return the error message for when `expect(x).yourMatcher()` fails. And when `pass` is true, `message` should return the error message for when `expect(x).not.yourMatcher()` fails. + +Matchers are called with the argument passed to `expect(x)` followed by the arguments passed to `.yourMatcher(y, z)`: + +```js +expect.extend({ + yourMatcher(x, y, z) { + return { + pass: true, + message: () => '', + }; + }, +}); +``` + +These helper functions and properties can be found on `this` inside a custom matcher: + +#### `this.isNot` + +A boolean to let you know this matcher was called with the negated `.not` modifier allowing you to display a clear and correct matcher hint (see example code). + +#### `this.promise` + +A string allowing you to display a clear and correct matcher hint: + +- `'rejects'` if matcher was called with the promise `.rejects` modifier +- `'resolves'` if matcher was called with the promise `.resolves` modifier +- `''` if matcher was not called with a promise modifier + +#### `this.equals(a, b)` + +This is a deep-equality function that will return `true` if two objects have the same values (recursively). + +#### `this.expand` + +A boolean to let you know this matcher was called with an `expand` option. When Jest is called with the `--expand` flag, `this.expand` can be used to determine if Jest is expected to show full diffs and errors. + +#### `this.utils` + +There are a number of helpful tools exposed on `this.utils` primarily consisting of the exports from [`jest-matcher-utils`](https://github.com/facebook/jest/tree/master/packages/jest-matcher-utils). + +The most useful ones are `matcherHint`, `printExpected` and `printReceived` to format the error messages nicely. For example, take a look at the implementation for the `toBe` matcher: + +```js +const {diff} = require('jest-diff'); +expect.extend({ + toBe(received, expected) { + const options = { + comment: 'Object.is equality', + isNot: this.isNot, + promise: this.promise, + }; + + const pass = Object.is(received, expected); + + const message = pass + ? () => + this.utils.matcherHint('toBe', undefined, undefined, options) + + '\n\n' + + `Expected: not ${this.utils.printExpected(expected)}\n` + + `Received: ${this.utils.printReceived(received)}` + : () => { + const diffString = diff(expected, received, { + expand: this.expand, + }); + return ( + this.utils.matcherHint('toBe', undefined, undefined, options) + + '\n\n' + + (diffString && diffString.includes('- Expect') + ? `Difference:\n\n${diffString}` + : `Expected: ${this.utils.printExpected(expected)}\n` + + `Received: ${this.utils.printReceived(received)}`) + ); + }; + + return {actual: received, message, pass}; + }, +}); +``` + +This will print something like this: + +```bash + expect(received).toBe(expected) + + Expected value to be (using Object.is): + "banana" + Received: + "apple" +``` + +When an assertion fails, the error message should give as much signal as necessary to the user so they can resolve their issue quickly. You should craft a precise failure message to make sure users of your custom assertions have a good developer experience. + +#### Custom snapshot matchers + +To use snapshot testing inside of your custom matcher you can import `jest-snapshot` and use it from within your matcher. + +Here's a snapshot matcher that trims a string to store for a given length, `.toMatchTrimmedSnapshot(length)`: + +```js +const {toMatchSnapshot} = require('jest-snapshot'); + +expect.extend({ + toMatchTrimmedSnapshot(received, length) { + return toMatchSnapshot.call( + this, + received.substring(0, length), + 'toMatchTrimmedSnapshot', + ); + }, +}); + +it('stores only 10 characters', () => { + expect('extra long string oh my gerd').toMatchTrimmedSnapshot(10); +}); + +/* +Stored snapshot will look like: + +exports[`stores only 10 characters: toMatchTrimmedSnapshot 1`] = `"extra long"`; +*/ +``` + +It's also possible to create custom matchers for inline snapshots, the snapshots will be correctly added to the custom matchers. However, inline snapshot will always try to append to the first argument or the second when the first argument is the property matcher, so it's not possible to accept custom arguments in the custom matchers. + +```js +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + toMatchTrimmedInlineSnapshot(received, ...rest) { + return toMatchInlineSnapshot.call(this, received.substring(0, 10), ...rest); + }, +}); + +it('stores only 10 characters', () => { + expect('extra long string oh my gerd').toMatchTrimmedInlineSnapshot(); + /* + The snapshot will be added inline like + expect('extra long string oh my gerd').toMatchTrimmedInlineSnapshot( + `"extra long"` + ); + */ +}); +``` + +#### async + +If your custom inline snapshot matcher is async i.e. uses `async`-`await` you might encounter an error like "Multiple inline snapshots for the same call are not supported". Jest needs additional context information to find where the custom inline snapshot matcher was used to update the snapshots properly. + +```js +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + async toMatchObservationInlineSnapshot(fn, ...rest) { + // The error (and its stacktrace) must be created before any `await` + this.error = new Error(); + + // The implementation of `observe` doesn't matter. + // It only matters that the custom snapshot matcher is async. + const observation = await observe(async () => { + await fn(); + }); + + return toMatchInlineSnapshot.call(this, recording, ...rest); + }, +}); + +it('observes something', async () => { + await expect(async () => { + return 'async action'; + }).toMatchTrimmedInlineSnapshot(); + /* + The snapshot will be added inline like + await expect(async () => { + return 'async action'; + }).toMatchTrimmedInlineSnapshot(`"async action"`); + */ +}); +``` + +#### Bail out + +Usually `jest` tries to match every snapshot that is expected in a test. + +Sometimes it might not make sense to continue the test if a prior snapshot failed. For example, when you make snapshots of a state-machine after various transitions you can abort the test once one transition produced the wrong state. + +In that case you can implement a custom snapshot matcher that throws on the first mismatch instead of collecting every mismatch. + +```js +const {toMatchInlineSnapshot} = require('jest-snapshot'); + +expect.extend({ + toMatchStateInlineSnapshot(...args) { + this.dontThrow = () => {}; + + return toMatchInlineSnapshot.call(this, ...args); + }, +}); + +let state = 'initial'; + +function transition() { + // Typo in the implementation should cause the test to fail + if (state === 'INITIAL') { + state = 'pending'; + } else if (state === 'pending') { + state = 'done'; + } +} + +it('transitions as expected', () => { + expect(state).toMatchStateInlineSnapshot(`"initial"`); + + transition(); + // Already produces a mismatch. No point in continuing the test. + expect(state).toMatchStateInlineSnapshot(`"loading"`); + + transition(); + expect(state).toMatchStateInlineSnapshot(`"done"`); +}); +``` + +### `expect.anything()` + +`expect.anything()` matches anything but `null` or `undefined`. You can use it inside `toEqual` or `toBeCalledWith` instead of a literal value. For example, if you want to check that a mock function is called with a non-null argument: + +```js +test('map calls its argument with a non-null argument', () => { + const mock = jest.fn(); + [1].map(x => mock(x)); + expect(mock).toBeCalledWith(expect.anything()); +}); +``` + +### `expect.any(constructor)` + +`expect.any(constructor)` matches anything that was created with the given constructor. You can use it inside `toEqual` or `toBeCalledWith` instead of a literal value. For example, if you want to check that a mock function is called with a number: + +```js +function randocall(fn) { + return fn(Math.floor(Math.random() * 6 + 1)); +} + +test('randocall calls its callback with a number', () => { + const mock = jest.fn(); + randocall(mock); + expect(mock).toBeCalledWith(expect.any(Number)); +}); +``` + +### `expect.arrayContaining(array)` + +`expect.arrayContaining(array)` matches a received array which contains all of the elements in the expected array. That is, the expected array is a **subset** of the received array. Therefore, it matches a received array which contains elements that are **not** in the expected array. + +You can use it instead of a literal value: + +- in `toEqual` or `toBeCalledWith` +- to match a property in `objectContaining` or `toMatchObject` + +```js +describe('arrayContaining', () => { + const expected = ['Alice', 'Bob']; + it('matches even if received contains additional elements', () => { + expect(['Alice', 'Bob', 'Eve']).toEqual(expect.arrayContaining(expected)); + }); + it('does not match if received does not contain expected elements', () => { + expect(['Bob', 'Eve']).not.toEqual(expect.arrayContaining(expected)); + }); +}); +``` + +```js +describe('Beware of a misunderstanding! A sequence of dice rolls', () => { + const expected = [1, 2, 3, 4, 5, 6]; + it('matches even with an unexpected number 7', () => { + expect([4, 1, 6, 7, 3, 5, 2, 5, 4, 6]).toEqual( + expect.arrayContaining(expected), + ); + }); + it('does not match without an expected number 2', () => { + expect([4, 1, 6, 7, 3, 5, 7, 5, 4, 6]).not.toEqual( + expect.arrayContaining(expected), + ); + }); +}); +``` + +### `expect.assertions(number)` + +`expect.assertions(number)` verifies that a certain number of assertions are called during a test. This is often useful when testing asynchronous code, in order to make sure that assertions in a callback actually got called. + +For example, let's say that we have a function `doAsync` that receives two callbacks `callback1` and `callback2`, it will asynchronously call both of them in an unknown order. We can test this with: + +```js +test('doAsync calls both callbacks', () => { + expect.assertions(2); + function callback1(data) { + expect(data).toBeTruthy(); + } + function callback2(data) { + expect(data).toBeTruthy(); + } + + doAsync(callback1, callback2); +}); +``` + +The `expect.assertions(2)` call ensures that both callbacks actually get called. + +### `expect.hasAssertions()` + +`expect.hasAssertions()` verifies that at least one assertion is called during a test. This is often useful when testing asynchronous code, in order to make sure that assertions in a callback actually got called. + +For example, let's say that we have a few functions that all deal with state. `prepareState` calls a callback with a state object, `validateState` runs on that state object, and `waitOnState` returns a promise that waits until all `prepareState` callbacks complete. We can test this with: + +```js +test('prepareState prepares a valid state', () => { + expect.hasAssertions(); + prepareState(state => { + expect(validateState(state)).toBeTruthy(); + }); + return waitOnState(); +}); +``` + +The `expect.hasAssertions()` call ensures that the `prepareState` callback actually gets called. + +### `expect.not.arrayContaining(array)` + +`expect.not.arrayContaining(array)` matches a received array which does not contain all of the elements in the expected array. That is, the expected array **is not a subset** of the received array. + +It is the inverse of `expect.arrayContaining`. + +```js +describe('not.arrayContaining', () => { + const expected = ['Samantha']; + + it('matches if the actual array does not contain the expected elements', () => { + expect(['Alice', 'Bob', 'Eve']).toEqual( + expect.not.arrayContaining(expected), + ); + }); +}); +``` + +### `expect.not.objectContaining(object)` + +`expect.not.objectContaining(object)` matches any received object that does not recursively match the expected properties. That is, the expected object **is not a subset** of the received object. Therefore, it matches a received object which contains properties that are **not** in the expected object. + +It is the inverse of `expect.objectContaining`. + +```js +describe('not.objectContaining', () => { + const expected = {foo: 'bar'}; + + it('matches if the actual object does not contain expected key: value pairs', () => { + expect({bar: 'baz'}).toEqual(expect.not.objectContaining(expected)); + }); +}); +``` + +### `expect.not.stringContaining(string)` + +`expect.not.stringContaining(string)` matches the received value if it is not a string or if it is a string that does not contain the exact expected string. + +It is the inverse of `expect.stringContaining`. + +```js +describe('not.stringContaining', () => { + const expected = 'Hello world!'; + + it('matches if the received value does not contain the expected substring', () => { + expect('How are you?').toEqual(expect.not.stringContaining(expected)); + }); +}); +``` + +### `expect.not.stringMatching(string | regexp)` + +`expect.not.stringMatching(string | regexp)` matches the received value if it is not a string or if it is a string that does not match the expected string or regular expression. + +It is the inverse of `expect.stringMatching`. + +```js +describe('not.stringMatching', () => { + const expected = /Hello world!/; + + it('matches if the received value does not match the expected regex', () => { + expect('How are you?').toEqual(expect.not.stringMatching(expected)); + }); +}); +``` + +### `expect.objectContaining(object)` + +`expect.objectContaining(object)` matches any received object that recursively matches the expected properties. That is, the expected object is a **subset** of the received object. Therefore, it matches a received object which contains properties that **are present** in the expected object. + +Instead of literal property values in the expected object, you can use matchers, `expect.anything()`, and so on. + +For example, let's say that we expect an `onPress` function to be called with an `Event` object, and all we need to verify is that the event has `event.x` and `event.y` properties. We can do that with: + +```js +test('onPress gets called with the right thing', () => { + const onPress = jest.fn(); + simulatePresses(onPress); + expect(onPress).toBeCalledWith( + expect.objectContaining({ + x: expect.any(Number), + y: expect.any(Number), + }), + ); +}); +``` + +### `expect.stringContaining(string)` + +`expect.stringContaining(string)` matches the received value if it is a string that contains the exact expected string. + +### `expect.stringMatching(string | regexp)` + +`expect.stringMatching(string | regexp)` matches the received value if it is a string that matches the expected string or regular expression. + +You can use it instead of a literal value: + +- in `toEqual` or `toBeCalledWith` +- to match an element in `arrayContaining` +- to match a property in `objectContaining` or `toMatchObject` + +This example also shows how you can nest multiple asymmetric matchers, with `expect.stringMatching` inside the `expect.arrayContaining`. + +```js +describe('stringMatching in arrayContaining', () => { + const expected = [ + expect.stringMatching(/^Alic/), + expect.stringMatching(/^[BR]ob/), + ]; + it('matches even if received contains additional elements', () => { + expect(['Alicia', 'Roberto', 'Evelina']).toEqual( + expect.arrayContaining(expected), + ); + }); + it('does not match if received does not contain expected elements', () => { + expect(['Roberto', 'Evelina']).not.toEqual( + expect.arrayContaining(expected), + ); + }); +}); +``` + +### `expect.addSnapshotSerializer(serializer)` + +You can call `expect.addSnapshotSerializer` to add a module that formats application-specific data structures. + +For an individual test file, an added module precedes any modules from `snapshotSerializers` configuration, which precede the default snapshot serializers for built-in JavaScript types and for React elements. The last module added is the first module tested. + +```js +import serializer from 'my-serializer-module'; +expect.addSnapshotSerializer(serializer); + +// affects expect(value).toMatchSnapshot() assertions in the test file +``` + +If you add a snapshot serializer in individual test files instead of adding it to `snapshotSerializers` configuration: + +- You make the dependency explicit instead of implicit. +- You avoid limits to configuration that might cause you to eject from [create-react-app](https://github.com/facebookincubator/create-react-app). + +See [configuring Jest](Configuration.md#snapshotserializers-arraystring) for more information. + +### `.not` + +If you know how to test something, `.not` lets you test its opposite. For example, this code tests that the best La Croix flavor is not coconut: + +```js +test('the best flavor is not coconut', () => { + expect(bestLaCroixFlavor()).not.toBe('coconut'); +}); +``` + +### `.resolves` + +Use `resolves` to unwrap the value of a fulfilled promise so any other matcher can be chained. If the promise is rejected the assertion fails. + +For example, this code tests that the promise resolves and that the resulting value is `'lemon'`: + +```js +test('resolves to lemon', () => { + // make sure to add a return statement + return expect(Promise.resolve('lemon')).resolves.toBe('lemon'); +}); +``` + +Note that, since you are still testing promises, the test is still asynchronous. Hence, you will need to [tell Jest to wait](TestingAsyncCode.md#promises) by returning the unwrapped assertion. + +Alternatively, you can use `async/await` in combination with `.resolves`: + +```js +test('resolves to lemon', async () => { + await expect(Promise.resolve('lemon')).resolves.toBe('lemon'); + await expect(Promise.resolve('lemon')).resolves.not.toBe('octopus'); +}); +``` + +### `.rejects` + +Use `.rejects` to unwrap the reason of a rejected promise so any other matcher can be chained. If the promise is fulfilled the assertion fails. + +For example, this code tests that the promise rejects with reason `'octopus'`: + +```js +test('rejects to octopus', () => { + // make sure to add a return statement + return expect(Promise.reject(new Error('octopus'))).rejects.toThrow( + 'octopus', + ); +}); +``` + +Note that, since you are still testing promises, the test is still asynchronous. Hence, you will need to [tell Jest to wait](TestingAsyncCode.md#promises) by returning the unwrapped assertion. + +Alternatively, you can use `async/await` in combination with `.rejects`. + +```js +test('rejects to octopus', async () => { + await expect(Promise.reject(new Error('octopus'))).rejects.toThrow('octopus'); +}); +``` + +### `.toBe(value)` + +Use `.toBe` to compare primitive values or to check referential identity of object instances. It calls `Object.is` to compare values, which is even better for testing than `===` strict equality operator. + +For example, this code will validate some properties of the `can` object: + +```js +const can = { + name: 'pamplemousse', + ounces: 12, +}; + +describe('the can', () => { + test('has 12 ounces', () => { + expect(can.ounces).toBe(12); + }); + + test('has a sophisticated name', () => { + expect(can.name).toBe('pamplemousse'); + }); +}); +``` + +Don't use `.toBe` with floating-point numbers. For example, due to rounding, in JavaScript `0.2 + 0.1` is not strictly equal to `0.3`. If you have floating point numbers, try `.toBeCloseTo` instead. + +Although the `.toBe` matcher **checks** referential identity, it **reports** a deep comparison of values if the assertion fails. If differences between properties do not help you to understand why a test fails, especially if the report is large, then you might move the comparison into the `expect` function. For example, to assert whether or not elements are the same instance: + +- rewrite `expect(received).toBe(expected)` as `expect(Object.is(received, expected)).toBe(true)` +- rewrite `expect(received).not.toBe(expected)` as `expect(Object.is(received, expected)).toBe(false)` + +### `.toHaveBeenCalled()` + +Also under the alias: `.toBeCalled()` + +Use `.toHaveBeenCalled` to ensure that a mock function got called. + +For example, let's say you have a `drinkAll(drink, flavour)` function that takes a `drink` function and applies it to all available beverages. You might want to check that `drink` gets called for `'lemon'`, but not for `'octopus'`, because `'octopus'` flavour is really weird and why would anything be octopus-flavoured? You can do that with this test suite: + +```js +function drinkAll(callback, flavour) { + if (flavour !== 'octopus') { + callback(flavour); + } +} + +describe('drinkAll', () => { + test('drinks something lemon-flavoured', () => { + const drink = jest.fn(); + drinkAll(drink, 'lemon'); + expect(drink).toHaveBeenCalled(); + }); + + test('does not drink something octopus-flavoured', () => { + const drink = jest.fn(); + drinkAll(drink, 'octopus'); + expect(drink).not.toHaveBeenCalled(); + }); +}); +``` + +### `.toHaveBeenCalledTimes(number)` + +Also under the alias: `.toBeCalledTimes(number)` + +Use `.toHaveBeenCalledTimes` to ensure that a mock function got called exact number of times. + +For example, let's say you have a `drinkEach(drink, Array)` function that takes a `drink` function and applies it to array of passed beverages. You might want to check that drink function was called exact number of times. You can do that with this test suite: + +```js +test('drinkEach drinks each drink', () => { + const drink = jest.fn(); + drinkEach(drink, ['lemon', 'octopus']); + expect(drink).toHaveBeenCalledTimes(2); +}); +``` + +### `.toHaveBeenCalledWith(arg1, arg2, ...)` + +Also under the alias: `.toBeCalledWith()` + +Use `.toHaveBeenCalledWith` to ensure that a mock function was called with specific arguments. + +For example, let's say that you can register a beverage with a `register` function, and `applyToAll(f)` should apply the function `f` to all registered beverages. To make sure this works, you could write: + +```js +test('registration applies correctly to orange La Croix', () => { + const beverage = new LaCroix('orange'); + register(beverage); + const f = jest.fn(); + applyToAll(f); + expect(f).toHaveBeenCalledWith(beverage); +}); +``` + +### `.toHaveBeenLastCalledWith(arg1, arg2, ...)` + +Also under the alias: `.lastCalledWith(arg1, arg2, ...)` + +If you have a mock function, you can use `.toHaveBeenLastCalledWith` to test what arguments it was last called with. For example, let's say you have a `applyToAllFlavors(f)` function that applies `f` to a bunch of flavors, and you want to ensure that when you call it, the last flavor it operates on is `'mango'`. You can write: + +```js +test('applying to all flavors does mango last', () => { + const drink = jest.fn(); + applyToAllFlavors(drink); + expect(drink).toHaveBeenLastCalledWith('mango'); +}); +``` + +### `.toHaveBeenNthCalledWith(nthCall, arg1, arg2, ....)` + +Also under the alias: `.nthCalledWith(nthCall, arg1, arg2, ...)` + +If you have a mock function, you can use `.toHaveBeenNthCalledWith` to test what arguments it was nth called with. For example, let's say you have a `drinkEach(drink, Array)` function that applies `f` to a bunch of flavors, and you want to ensure that when you call it, the first flavor it operates on is `'lemon'` and the second one is `'octopus'`. You can write: + +```js +test('drinkEach drinks each drink', () => { + const drink = jest.fn(); + drinkEach(drink, ['lemon', 'octopus']); + expect(drink).toHaveBeenNthCalledWith(1, 'lemon'); + expect(drink).toHaveBeenNthCalledWith(2, 'octopus'); +}); +``` + +Note: the nth argument must be positive integer starting from 1. + +### `.toHaveReturned()` + +Also under the alias: `.toReturn()` + +If you have a mock function, you can use `.toHaveReturned` to test that the mock function successfully returned (i.e., did not throw an error) at least one time. For example, let's say you have a mock `drink` that returns `true`. You can write: + +```js +test('drinks returns', () => { + const drink = jest.fn(() => true); + + drink(); + + expect(drink).toHaveReturned(); +}); +``` + +### `.toHaveReturnedTimes(number)` + +Also under the alias: `.toReturnTimes(number)` + +Use `.toHaveReturnedTimes` to ensure that a mock function returned successfully (i.e., did not throw an error) an exact number of times. Any calls to the mock function that throw an error are not counted toward the number of times the function returned. + +For example, let's say you have a mock `drink` that returns `true`. You can write: + +```js +test('drink returns twice', () => { + const drink = jest.fn(() => true); + + drink(); + drink(); + + expect(drink).toHaveReturnedTimes(2); +}); +``` + +### `.toHaveReturnedWith(value)` + +Also under the alias: `.toReturnWith(value)` + +Use `.toHaveReturnedWith` to ensure that a mock function returned a specific value. + +For example, let's say you have a mock `drink` that returns the name of the beverage that was consumed. You can write: + +```js +test('drink returns La Croix', () => { + const beverage = {name: 'La Croix'}; + const drink = jest.fn(beverage => beverage.name); + + drink(beverage); + + expect(drink).toHaveReturnedWith('La Croix'); +}); +``` + +### `.toHaveLastReturnedWith(value)` + +Also under the alias: `.lastReturnedWith(value)` + +Use `.toHaveLastReturnedWith` to test the specific value that a mock function last returned. If the last call to the mock function threw an error, then this matcher will fail no matter what value you provided as the expected return value. + +For example, let's say you have a mock `drink` that returns the name of the beverage that was consumed. You can write: + +```js +test('drink returns La Croix (Orange) last', () => { + const beverage1 = {name: 'La Croix (Lemon)'}; + const beverage2 = {name: 'La Croix (Orange)'}; + const drink = jest.fn(beverage => beverage.name); + + drink(beverage1); + drink(beverage2); + + expect(drink).toHaveLastReturnedWith('La Croix (Orange)'); +}); +``` + +### `.toHaveNthReturnedWith(nthCall, value)` + +Also under the alias: `.nthReturnedWith(nthCall, value)` + +Use `.toHaveNthReturnedWith` to test the specific value that a mock function returned for the nth call. If the nth call to the mock function threw an error, then this matcher will fail no matter what value you provided as the expected return value. + +For example, let's say you have a mock `drink` that returns the name of the beverage that was consumed. You can write: + +```js +test('drink returns expected nth calls', () => { + const beverage1 = {name: 'La Croix (Lemon)'}; + const beverage2 = {name: 'La Croix (Orange)'}; + const drink = jest.fn(beverage => beverage.name); + + drink(beverage1); + drink(beverage2); + + expect(drink).toHaveNthReturnedWith(1, 'La Croix (Lemon)'); + expect(drink).toHaveNthReturnedWith(2, 'La Croix (Orange)'); +}); +``` + +Note: the nth argument must be positive integer starting from 1. + +### `.toHaveLength(number)` + +Use `.toHaveLength` to check that an object has a `.length` property and it is set to a certain numeric value. + +This is especially useful for checking arrays or strings size. + +```js +expect([1, 2, 3]).toHaveLength(3); +expect('abc').toHaveLength(3); +expect('').not.toHaveLength(5); +``` + +### `.toHaveProperty(keyPath, value?)` + +Use `.toHaveProperty` to check if property at provided reference `keyPath` exists for an object. For checking deeply nested properties in an object you may use [dot notation](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors) or an array containing the keyPath for deep references. + +You can provide an optional `value` argument to compare the received property value (recursively for all properties of object instances, also known as deep equality, like the `toEqual` matcher). + +The following example contains a `houseForSale` object with nested properties. We are using `toHaveProperty` to check for the existence and values of various properties in the object. + +```js +// Object containing house features to be tested +const houseForSale = { + bath: true, + bedrooms: 4, + kitchen: { + amenities: ['oven', 'stove', 'washer'], + area: 20, + wallColor: 'white', + 'nice.oven': true, + }, + 'ceiling.height': 2, +}; + +test('this house has my desired features', () => { + // Example Referencing + expect(houseForSale).toHaveProperty('bath'); + expect(houseForSale).toHaveProperty('bedrooms', 4); + + expect(houseForSale).not.toHaveProperty('pool'); + + // Deep referencing using dot notation + expect(houseForSale).toHaveProperty('kitchen.area', 20); + expect(houseForSale).toHaveProperty('kitchen.amenities', [ + 'oven', + 'stove', + 'washer', + ]); + + expect(houseForSale).not.toHaveProperty('kitchen.open'); + + // Deep referencing using an array containing the keyPath + expect(houseForSale).toHaveProperty(['kitchen', 'area'], 20); + expect(houseForSale).toHaveProperty( + ['kitchen', 'amenities'], + ['oven', 'stove', 'washer'], + ); + expect(houseForSale).toHaveProperty(['kitchen', 'amenities', 0], 'oven'); + expect(houseForSale).toHaveProperty(['kitchen', 'nice.oven']); + expect(houseForSale).not.toHaveProperty(['kitchen', 'open']); + + // Referencing keys with dot in the key itself + expect(houseForSale).toHaveProperty(['ceiling.height'], 'tall'); +}); +``` + +### `.toBeCloseTo(number, numDigits?)` + +Use `toBeCloseTo` to compare floating point numbers for approximate equality. + +The optional `numDigits` argument limits the number of digits to check **after** the decimal point. For the default value `2`, the test criterion is `Math.abs(expected - received) < 0.005` (that is, `10 ** -2 / 2`). + +Intuitive equality comparisons often fail, because arithmetic on decimal (base 10) values often have rounding errors in limited precision binary (base 2) representation. For example, this test fails: + +```js +test('adding works sanely with decimals', () => { + expect(0.2 + 0.1).toBe(0.3); // Fails! +}); +``` + +It fails because in JavaScript, `0.2 + 0.1` is actually `0.30000000000000004`. + +For example, this test passes with a precision of 5 digits: + +```js +test('adding works sanely with decimals', () => { + expect(0.2 + 0.1).toBeCloseTo(0.3, 5); +}); +``` + +Because floating point errors are the problem that `toBeCloseTo` solves, it does not support big integer values. + +### `.toBeDefined()` + +Use `.toBeDefined` to check that a variable is not undefined. For example, if you want to check that a function `fetchNewFlavorIdea()` returns _something_, you can write: + +```js +test('there is a new flavor idea', () => { + expect(fetchNewFlavorIdea()).toBeDefined(); +}); +``` + +You could write `expect(fetchNewFlavorIdea()).not.toBe(undefined)`, but it's better practice to avoid referring to `undefined` directly in your code. + +### `.toBeFalsy()` + +Use `.toBeFalsy` when you don't care what a value is and you want to ensure a value is false in a boolean context. For example, let's say you have some application code that looks like: + +```js +drinkSomeLaCroix(); +if (!getErrors()) { + drinkMoreLaCroix(); +} +``` + +You may not care what `getErrors` returns, specifically - it might return `false`, `null`, or `0`, and your code would still work. So if you want to test there are no errors after drinking some La Croix, you could write: + +```js +test('drinking La Croix does not lead to errors', () => { + drinkSomeLaCroix(); + expect(getErrors()).toBeFalsy(); +}); +``` + +In JavaScript, there are six falsy values: `false`, `0`, `''`, `null`, `undefined`, and `NaN`. Everything else is truthy. + +### `.toBeGreaterThan(number | bigint)` + +Use `toBeGreaterThan` to compare `received > expected` for number or big integer values. For example, test that `ouncesPerCan()` returns a value of more than 10 ounces: + +```js +test('ounces per can is more than 10', () => { + expect(ouncesPerCan()).toBeGreaterThan(10); +}); +``` + +### `.toBeGreaterThanOrEqual(number | bigint)` + +Use `toBeGreaterThanOrEqual` to compare `received >= expected` for number or big integer values. For example, test that `ouncesPerCan()` returns a value of at least 12 ounces: + +```js +test('ounces per can is at least 12', () => { + expect(ouncesPerCan()).toBeGreaterThanOrEqual(12); +}); +``` + +### `.toBeLessThan(number | bigint)` + +Use `toBeLessThan` to compare `received < expected` for number or big integer values. For example, test that `ouncesPerCan()` returns a value of less than 20 ounces: + +```js +test('ounces per can is less than 20', () => { + expect(ouncesPerCan()).toBeLessThan(20); +}); +``` + +### `.toBeLessThanOrEqual(number | bigint)` + +Use `toBeLessThanOrEqual` to compare `received <= expected` for number or big integer values. For example, test that `ouncesPerCan()` returns a value of at most 12 ounces: + +```js +test('ounces per can is at most 12', () => { + expect(ouncesPerCan()).toBeLessThanOrEqual(12); +}); +``` + +### `.toBeInstanceOf(Class)` + +Use `.toBeInstanceOf(Class)` to check that an object is an instance of a class. This matcher uses `instanceof` underneath. + +```js +class A {} + +expect(new A()).toBeInstanceOf(A); +expect(() => {}).toBeInstanceOf(Function); +expect(new A()).toBeInstanceOf(Function); // throws +``` + +### `.toBeNull()` + +`.toBeNull()` is the same as `.toBe(null)` but the error messages are a bit nicer. So use `.toBeNull()` when you want to check that something is null. + +```js +function bloop() { + return null; +} + +test('bloop returns null', () => { + expect(bloop()).toBeNull(); +}); +``` + +### `.toBeTruthy()` + +Use `.toBeTruthy` when you don't care what a value is and you want to ensure a value is true in a boolean context. For example, let's say you have some application code that looks like: + +```js +drinkSomeLaCroix(); +if (thirstInfo()) { + drinkMoreLaCroix(); +} +``` + +You may not care what `thirstInfo` returns, specifically - it might return `true` or a complex object, and your code would still work. So if you want to test that `thirstInfo` will be truthy after drinking some La Croix, you could write: + +```js +test('drinking La Croix leads to having thirst info', () => { + drinkSomeLaCroix(); + expect(thirstInfo()).toBeTruthy(); +}); +``` + +In JavaScript, there are six falsy values: `false`, `0`, `''`, `null`, `undefined`, and `NaN`. Everything else is truthy. + +### `.toBeUndefined()` + +Use `.toBeUndefined` to check that a variable is undefined. For example, if you want to check that a function `bestDrinkForFlavor(flavor)` returns `undefined` for the `'octopus'` flavor, because there is no good octopus-flavored drink: + +```js +test('the best drink for octopus flavor is undefined', () => { + expect(bestDrinkForFlavor('octopus')).toBeUndefined(); +}); +``` + +You could write `expect(bestDrinkForFlavor('octopus')).toBe(undefined)`, but it's better practice to avoid referring to `undefined` directly in your code. + +### `.toBeNaN()` + +Use `.toBeNaN` when checking a value is `NaN`. + +```js +test('passes when value is NaN', () => { + expect(NaN).toBeNaN(); + expect(1).not.toBeNaN(); +}); +``` + +### `.toContain(item)` + +Use `.toContain` when you want to check that an item is in an array. For testing the items in the array, this uses `===`, a strict equality check. `.toContain` can also check whether a string is a substring of another string. + +For example, if `getAllFlavors()` returns an array of flavors and you want to be sure that `lime` is in there, you can write: + +```js +test('the flavor list contains lime', () => { + expect(getAllFlavors()).toContain('lime'); +}); +``` + +### `.toContainEqual(item)` + +Use `.toContainEqual` when you want to check that an item with a specific structure and values is contained in an array. For testing the items in the array, this matcher recursively checks the equality of all fields, rather than checking for object identity. + +```js +describe('my beverage', () => { + test('is delicious and not sour', () => { + const myBeverage = {delicious: true, sour: false}; + expect(myBeverages()).toContainEqual(myBeverage); + }); +}); +``` + +### `.toEqual(value)` + +Use `.toEqual` to compare recursively all properties of object instances (also known as "deep" equality). It calls `Object.is` to compare primitive values, which is even better for testing than `===` strict equality operator. + +For example, `.toEqual` and `.toBe` behave differently in this test suite, so all the tests pass: + +```js +const can1 = { + flavor: 'grapefruit', + ounces: 12, +}; +const can2 = { + flavor: 'grapefruit', + ounces: 12, +}; + +describe('the La Croix cans on my desk', () => { + test('have all the same properties', () => { + expect(can1).toEqual(can2); + }); + test('are not the exact same can', () => { + expect(can1).not.toBe(can2); + }); +}); +``` + +> Note: `.toEqual` won't perform a _deep equality_ check for two errors. Only the `message` property of an Error is considered for equality. It is recommended to use the `.toThrow` matcher for testing against errors. + +If differences between properties do not help you to understand why a test fails, especially if the report is large, then you might move the comparison into the `expect` function. For example, use `equals` method of `Buffer` class to assert whether or not buffers contain the same content: + +- rewrite `expect(received).toEqual(expected)` as `expect(received.equals(expected)).toBe(true)` +- rewrite `expect(received).not.toEqual(expected)` as `expect(received.equals(expected)).toBe(false)` + +### `.toMatch(regexp | string)` + +Use `.toMatch` to check that a string matches a regular expression. + +For example, you might not know what exactly `essayOnTheBestFlavor()` returns, but you know it's a really long string, and the substring `grapefruit` should be in there somewhere. You can test this with: + +```js +describe('an essay on the best flavor', () => { + test('mentions grapefruit', () => { + expect(essayOnTheBestFlavor()).toMatch(/grapefruit/); + expect(essayOnTheBestFlavor()).toMatch(new RegExp('grapefruit')); + }); +}); +``` + +This matcher also accepts a string, which it will try to match: + +```js +describe('grapefruits are healthy', () => { + test('grapefruits are a fruit', () => { + expect('grapefruits').toMatch('fruit'); + }); +}); +``` + +### `.toMatchObject(object)` + +Use `.toMatchObject` to check that a JavaScript object matches a subset of the properties of an object. It will match received objects with properties that are **not** in the expected object. + +You can also pass an array of objects, in which case the method will return true only if each object in the received array matches (in the `toMatchObject` sense described above) the corresponding object in the expected array. This is useful if you want to check that two arrays match in their number of elements, as opposed to `arrayContaining`, which allows for extra elements in the received array. + +You can match properties against values or against matchers. + +```js +const houseForSale = { + bath: true, + bedrooms: 4, + kitchen: { + amenities: ['oven', 'stove', 'washer'], + area: 20, + wallColor: 'white', + }, +}; +const desiredHouse = { + bath: true, + kitchen: { + amenities: ['oven', 'stove', 'washer'], + wallColor: expect.stringMatching(/white|yellow/), + }, +}; + +test('the house has my desired features', () => { + expect(houseForSale).toMatchObject(desiredHouse); +}); +``` + +```js +describe('toMatchObject applied to arrays', () => { + test('the number of elements must match exactly', () => { + expect([{foo: 'bar'}, {baz: 1}]).toMatchObject([{foo: 'bar'}, {baz: 1}]); + }); + + test('.toMatchObject is called for each elements, so extra object properties are okay', () => { + expect([{foo: 'bar'}, {baz: 1, extra: 'quux'}]).toMatchObject([ + {foo: 'bar'}, + {baz: 1}, + ]); + }); +}); +``` + +### `.toMatchSnapshot(propertyMatchers?, hint?)` + +This ensures that a value matches the most recent snapshot. Check out [the Snapshot Testing guide](SnapshotTesting.md) for more information. + +You can provide an optional `propertyMatchers` object argument, which has asymmetric matchers as values of a subset of expected properties, **if** the received value will be an **object** instance. It is like `toMatchObject` with flexible criteria for a subset of properties, followed by a snapshot test as exact criteria for the rest of the properties. + +You can provide an optional `hint` string argument that is appended to the test name. Although Jest always appends a number at the end of a snapshot name, short descriptive hints might be more useful than numbers to differentiate **multiple** snapshots in a **single** `it` or `test` block. Jest sorts snapshots by name in the corresponding `.snap` file. + +### `.toMatchInlineSnapshot(propertyMatchers?, inlineSnapshot)` + +Ensures that a value matches the most recent snapshot. + +You can provide an optional `propertyMatchers` object argument, which has asymmetric matchers as values of a subset of expected properties, **if** the received value will be an **object** instance. It is like `toMatchObject` with flexible criteria for a subset of properties, followed by a snapshot test as exact criteria for the rest of the properties. + +Jest adds the `inlineSnapshot` string argument to the matcher in the test file (instead of an external `.snap` file) the first time that the test runs. + +Check out the section on [Inline Snapshots](SnapshotTesting.md#inline-snapshots) for more info. + +### `.toStrictEqual(value)` + +Use `.toStrictEqual` to test that objects have the same types as well as structure. + +Differences from `.toEqual`: + +- Keys with `undefined` properties are checked. e.g. `{a: undefined, b: 2}` does not match `{b: 2}` when using `.toStrictEqual`. +- Array sparseness is checked. e.g. `[, 1]` does not match `[undefined, 1]` when using `.toStrictEqual`. +- Object types are checked to be equal. e.g. A class instance with fields `a` and `b` will not equal a literal object with fields `a` and `b`. + +```js +class LaCroix { + constructor(flavor) { + this.flavor = flavor; + } +} + +describe('the La Croix cans on my desk', () => { + test('are not semantically the same', () => { + expect(new LaCroix('lemon')).toEqual({flavor: 'lemon'}); + expect(new LaCroix('lemon')).not.toStrictEqual({flavor: 'lemon'}); + }); +}); +``` + +### `.toThrow(error?)` + +Also under the alias: `.toThrowError(error?)` + +Use `.toThrow` to test that a function throws when it is called. For example, if we want to test that `drinkFlavor('octopus')` throws, because octopus flavor is too disgusting to drink, we could write: + +```js +test('throws on octopus', () => { + expect(() => { + drinkFlavor('octopus'); + }).toThrow(); +}); +``` + +> Note: You must wrap the code in a function, otherwise the error will not be caught and the assertion will fail. + +You can provide an optional argument to test that a specific error is thrown: + +- 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) { + if (flavor == 'octopus') { + throw new DisgustingFlavorError('yuck, octopus flavor'); + } + // Do some other stuff +} +``` + +We could test this error gets thrown in several ways: + +```js +test('throws on octopus', () => { + function drinkOctopus() { + drinkFlavor('octopus'); + } + + // Test that the error message says "yuck" somewhere: these are equivalent + expect(drinkOctopus).toThrowError(/yuck/); + expect(drinkOctopus).toThrowError('yuck'); + + // 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); +}); +``` + +### `.toThrowErrorMatchingSnapshot(hint?)` + +Use `.toThrowErrorMatchingSnapshot` to test that a function throws an error matching the most recent snapshot when it is called. + +You can provide an optional `hint` string argument that is appended to the test name. Although Jest always appends a number at the end of a snapshot name, short descriptive hints might be more useful than numbers to differentiate **multiple** snapshots in a **single** `it` or `test` block. Jest sorts snapshots by name in the corresponding `.snap` file. + +For example, let's say you have a `drinkFlavor` function that throws whenever the flavor is `'octopus'`, and is coded like this: + +```js +function drinkFlavor(flavor) { + if (flavor == 'octopus') { + throw new DisgustingFlavorError('yuck, octopus flavor'); + } + // Do some other stuff +} +``` + +The test for this function will look this way: + +```js +test('throws on octopus', () => { + function drinkOctopus() { + drinkFlavor('octopus'); + } + + expect(drinkOctopus).toThrowErrorMatchingSnapshot(); +}); +``` + +And it will generate the following snapshot: + +```js +exports[`drinking flavors throws on octopus 1`] = `"yuck, octopus flavor"`; +``` + +Check out [React Tree Snapshot Testing](/blog/2016/07/27/jest-14) for more information on snapshot testing. + +### `.toThrowErrorMatchingInlineSnapshot(inlineSnapshot)` + +Use `.toThrowErrorMatchingInlineSnapshot` to test that a function throws an error matching the most recent snapshot when it is called. + +Jest adds the `inlineSnapshot` string argument to the matcher in the test file (instead of an external `.snap` file) the first time that the test runs. + +Check out the section on [Inline Snapshots](SnapshotTesting.md#inline-snapshots) for more info. diff --git a/website/versioned_docs/version-27.0/GettingStarted.md b/website/versioned_docs/version-27.0/GettingStarted.md new file mode 100644 index 000000000000..fa317619a57b --- /dev/null +++ b/website/versioned_docs/version-27.0/GettingStarted.md @@ -0,0 +1,181 @@ +--- +id: getting-started +title: Getting Started +--- + +Install Jest using [`yarn`](https://yarnpkg.com/en/package/jest): + +```bash +yarn add --dev jest +``` + +Or [`npm`](https://www.npmjs.com/package/jest): + +```bash +npm install --save-dev jest +``` + +Note: Jest documentation uses `yarn` commands, but `npm` will also work. You can compare `yarn` and `npm` commands in the [yarn docs, here](https://yarnpkg.com/en/docs/migrating-from-npm#toc-cli-commands-comparison). + +Let's get started by writing a test for a hypothetical function that adds two numbers. First, create a `sum.js` file: + +```javascript +function sum(a, b) { + return a + b; +} +module.exports = sum; +``` + +Then, create a file named `sum.test.js`. This will contain our actual test: + +```javascript +const sum = require('./sum'); + +test('adds 1 + 2 to equal 3', () => { + expect(sum(1, 2)).toBe(3); +}); +``` + +Add the following section to your `package.json`: + +```json +{ + "scripts": { + "test": "jest" + } +} +``` + +Finally, run `yarn test` or `npm run test` and Jest will print this message: + +```bash +PASS ./sum.test.js +✓ adds 1 + 2 to equal 3 (5ms) +``` + +**You just successfully wrote your first test using Jest!** + +This test used `expect` and `toBe` to test that two values were exactly identical. To learn about the other things that Jest can test, see [Using Matchers](UsingMatchers.md). + +## Running from command line + +You can run Jest directly from the CLI (if it's globally available in your `PATH`, e.g. by `yarn global add jest` or `npm install jest --global`) with a variety of useful options. + +Here's how to run Jest on files matching `my-test`, using `config.json` as a configuration file and display a native OS notification after the run: + +```bash +jest my-test --notify --config=config.json +``` + +If you'd like to learn more about running `jest` through the command line, take a look at the [Jest CLI Options](CLI.md) page. + +## Additional Configuration + +### Generate a basic configuration file + +Based on your project, Jest will ask you a few questions and will create a basic configuration file with a short description for each option: + +```bash +jest --init +``` + +### Using Babel + +To use [Babel](https://babeljs.io/), install required dependencies via `yarn`: + +```bash +yarn add --dev babel-jest @babel/core @babel/preset-env +``` + +Configure Babel to target your current version of Node by creating a `babel.config.js` file in the root of your project: + +```javascript +// babel.config.js +module.exports = { + presets: [['@babel/preset-env', {targets: {node: 'current'}}]], +}; +``` + +_The ideal configuration for Babel will depend on your project._ See [Babel's docs](https://babeljs.io/docs/en/) for more details. + +
Making your Babel config jest-aware + +Jest will set `process.env.NODE_ENV` to `'test'` if it's not set to something else. You can use that in your configuration to conditionally setup only the compilation needed for Jest, e.g. + +```javascript +// babel.config.js +module.exports = api => { + const isTest = api.env('test'); + // You can use isTest to determine what presets and plugins to use. + + return { + // ... + }; +}; +``` + +> Note: `babel-jest` is automatically installed when installing Jest and will automatically transform files if a babel configuration exists in your project. To avoid this behavior, you can explicitly reset the `transform` configuration option: + +```javascript +// jest.config.js +module.exports = { + transform: {}, +}; +``` + +
+ +
Babel 6 support + +Jest 24 dropped support for Babel 6. We highly recommend you to upgrade to Babel 7, which is actively maintained. However, if you cannot upgrade to Babel 7, either keep using Jest 23 or upgrade to Jest 24 with `babel-jest` locked at version 23, like in the example below: + +``` +"dependencies": { + "babel-core": "^6.26.3", + "babel-jest": "^23.6.0", + "babel-preset-env": "^1.7.0", + "jest": "^24.0.0" +} +``` + +While we generally recommend using the same version of every Jest package, this workaround will allow you to continue using the latest version of Jest with Babel 6 for now. + +
+ +### Using webpack + +Jest can be used in projects that use [webpack](https://webpack.js.org/) to manage assets, styles, and compilation. webpack does offer some unique challenges over other tools. Refer to the [webpack guide](Webpack.md) to get started. + +### Using parcel + +Jest can be used in projects that use [parcel-bundler](https://parceljs.org/) to manage assets, styles, and compilation similar to webpack. Parcel requires zero configuration. Refer to the official [docs](https://parceljs.org/getting_started.html) to get started. + +### Using TypeScript + +Jest supports TypeScript, via Babel. First, make sure you followed the instructions on [using Babel](#using-babel) above. Next, install the `@babel/preset-typescript` via `yarn`: + +```bash +yarn add --dev @babel/preset-typescript +``` + +Then add `@babel/preset-typescript` to the list of presets in your `babel.config.js`. + +```diff +// babel.config.js +module.exports = { + presets: [ + ['@babel/preset-env', {targets: {node: 'current'}}], ++ '@babel/preset-typescript', + ], +}; +``` + +However, there are some [caveats](https://babeljs.io/docs/en/babel-plugin-transform-typescript#caveats) to using TypeScript with Babel. Because TypeScript support in Babel is purely transpilation, Jest will not type-check your tests as they are run. If you want that, you can use [ts-jest](https://github.com/kulshekhar/ts-jest) instead, or just run the TypeScript compiler [tsc](https://www.typescriptlang.org/docs/handbook/compiler-options.html) separately (or as part of your build process). + +You may also want to install the [`@types/jest`](https://www.npmjs.com/package/@types/jest) module for the version of Jest you're using. This will help provide full typing when writing your tests with TypeScript. + +> For `@types/*` modules it's recommended to try to match the version of the associated module. For example, if you are using `26.4.0` of `jest` then using `26.4.x` of `@types/jest` is ideal. In general, try to match the major (`26`) and minor (`4`) version as closely as possible. + +```bash +yarn add --dev @types/jest +``` diff --git a/website/versioned_docs/version-27.0/GlobalAPI.md b/website/versioned_docs/version-27.0/GlobalAPI.md new file mode 100644 index 000000000000..775efe6125fa --- /dev/null +++ b/website/versioned_docs/version-27.0/GlobalAPI.md @@ -0,0 +1,880 @@ +--- +id: api +title: Globals +--- + +In your test files, Jest puts each of these methods and objects into the global environment. You don't have to require or import anything to use them. However, if you prefer explicit imports, you can do `import {describe, expect, test} from '@jest/globals'`. + +## Methods + +import TOCInline from "@theme/TOCInline" + + + +--- + +## Reference + +### `afterAll(fn, timeout)` + +Runs a function after all the tests in this file have completed. If the function returns a promise or is a generator, Jest waits for that promise to resolve before continuing. + +Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait before aborting. _Note: The default timeout is 5 seconds._ + +This is often useful if you want to clean up some global setup state that is shared across tests. + +For example: + +```js +const globalDatabase = makeGlobalDatabase(); + +function cleanUpDatabase(db) { + db.cleanUp(); +} + +afterAll(() => { + cleanUpDatabase(globalDatabase); +}); + +test('can find things', () => { + return globalDatabase.find('thing', {}, results => { + expect(results.length).toBeGreaterThan(0); + }); +}); + +test('can insert a thing', () => { + return globalDatabase.insert('thing', makeThing(), response => { + expect(response.success).toBeTruthy(); + }); +}); +``` + +Here the `afterAll` ensures that `cleanUpDatabase` is called after all tests run. + +If `afterAll` is inside a `describe` block, it runs at the end of the describe block. + +If you want to run some cleanup after every test instead of after all tests, use `afterEach` instead. + +### `afterEach(fn, timeout)` + +Runs a function after each one of the tests in this file completes. If the function returns a promise or is a generator, Jest waits for that promise to resolve before continuing. + +Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait before aborting. _Note: The default timeout is 5 seconds._ + +This is often useful if you want to clean up some temporary state that is created by each test. + +For example: + +```js +const globalDatabase = makeGlobalDatabase(); + +function cleanUpDatabase(db) { + db.cleanUp(); +} + +afterEach(() => { + cleanUpDatabase(globalDatabase); +}); + +test('can find things', () => { + return globalDatabase.find('thing', {}, results => { + expect(results.length).toBeGreaterThan(0); + }); +}); + +test('can insert a thing', () => { + return globalDatabase.insert('thing', makeThing(), response => { + expect(response.success).toBeTruthy(); + }); +}); +``` + +Here the `afterEach` ensures that `cleanUpDatabase` is called after each test runs. + +If `afterEach` is inside a `describe` block, it only runs after the tests that are inside this describe block. + +If you want to run some cleanup just once, after all of the tests run, use `afterAll` instead. + +### `beforeAll(fn, timeout)` + +Runs a function before any of the tests in this file run. If the function returns a promise or is a generator, Jest waits for that promise to resolve before running tests. + +Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait before aborting. _Note: The default timeout is 5 seconds._ + +This is often useful if you want to set up some global state that will be used by many tests. + +For example: + +```js +const globalDatabase = makeGlobalDatabase(); + +beforeAll(() => { + // Clears the database and adds some testing data. + // Jest will wait for this promise to resolve before running tests. + return globalDatabase.clear().then(() => { + return globalDatabase.insert({testData: 'foo'}); + }); +}); + +// Since we only set up the database once in this example, it's important +// that our tests don't modify it. +test('can find things', () => { + return globalDatabase.find('thing', {}, results => { + expect(results.length).toBeGreaterThan(0); + }); +}); +``` + +Here the `beforeAll` ensures that the database is set up before tests run. If setup was synchronous, you could do this without `beforeAll`. The key is that Jest will wait for a promise to resolve, so you can have asynchronous setup as well. + +If `beforeAll` is inside a `describe` block, it runs at the beginning of the describe block. + +If you want to run something before every test instead of before any test runs, use `beforeEach` instead. + +### `beforeEach(fn, timeout)` + +Runs a function before each of the tests in this file runs. If the function returns a promise or is a generator, Jest waits for that promise to resolve before running the test. + +Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait before aborting. _Note: The default timeout is 5 seconds._ + +This is often useful if you want to reset some global state that will be used by many tests. + +For example: + +```js +const globalDatabase = makeGlobalDatabase(); + +beforeEach(() => { + // Clears the database and adds some testing data. + // Jest will wait for this promise to resolve before running tests. + return globalDatabase.clear().then(() => { + return globalDatabase.insert({testData: 'foo'}); + }); +}); + +test('can find things', () => { + return globalDatabase.find('thing', {}, results => { + expect(results.length).toBeGreaterThan(0); + }); +}); + +test('can insert a thing', () => { + return globalDatabase.insert('thing', makeThing(), response => { + expect(response.success).toBeTruthy(); + }); +}); +``` + +Here the `beforeEach` ensures that the database is reset for each test. + +If `beforeEach` is inside a `describe` block, it runs for each test in the describe block. + +If you only need to run some setup code once, before any tests run, use `beforeAll` instead. + +### `describe(name, fn)` + +`describe(name, fn)` creates a block that groups together several related tests. For example, if you have a `myBeverage` object that is supposed to be delicious but not sour, you could test it with: + +```js +const myBeverage = { + delicious: true, + sour: false, +}; + +describe('my beverage', () => { + test('is delicious', () => { + expect(myBeverage.delicious).toBeTruthy(); + }); + + test('is not sour', () => { + expect(myBeverage.sour).toBeFalsy(); + }); +}); +``` + +This isn't required - you can write the `test` blocks directly at the top level. But this can be handy if you prefer your tests to be organized into groups. + +You can also nest `describe` blocks if you have a hierarchy of tests: + +```js +const binaryStringToNumber = binString => { + if (!/^[01]+$/.test(binString)) { + throw new CustomError('Not a binary number.'); + } + + return parseInt(binString, 2); +}; + +describe('binaryStringToNumber', () => { + describe('given an invalid binary string', () => { + test('composed of non-numbers throws CustomError', () => { + expect(() => binaryStringToNumber('abc')).toThrowError(CustomError); + }); + + test('with extra whitespace throws CustomError', () => { + expect(() => binaryStringToNumber(' 100')).toThrowError(CustomError); + }); + }); + + describe('given a valid binary string', () => { + test('returns the correct number', () => { + expect(binaryStringToNumber('100')).toBe(4); + }); + }); +}); +``` + +### `describe.each(table)(name, fn, timeout)` + +Use `describe.each` if you keep duplicating the same test suites with different data. `describe.each` allows you to write the test suite once and pass data in. + +`describe.each` is available with two APIs: + +#### 1. `describe.each(table)(name, fn, timeout)` + +- `table`: `Array` of Arrays with the arguments that are passed into the `fn` for each row. + - _Note_ If you pass in a 1D array of primitives, internally it will be mapped to a table i.e. `[1, 2, 3] -> [[1], [2], [3]]` +- `name`: `String` the title of the test suite. + - Generate unique test titles by positionally injecting parameters with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args): + - `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format). + - `%s`- String. + - `%d`- Number. + - `%i` - Integer. + - `%f` - Floating point value. + - `%j` - JSON. + - `%o` - Object. + - `%#` - Index of the test case. + - `%%` - single percent sign ('%'). This does not consume an argument. + - Or generate unique test titles by injecting properties of test case object with `$variable` + - To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value` + - You can use `$#` to inject the index of the test case + - You cannot use `$variable` with the `printf` formatting except for `%%` +- `fn`: `Function` the suite of tests to be ran, this is the function that will receive the parameters in each row as function arguments. +- Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait for each row before aborting. _Note: The default timeout is 5 seconds._ + +Example: + +```js +describe.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', (a, b, expected) => { + test(`returns ${expected}`, () => { + expect(a + b).toBe(expected); + }); + + test(`returned value not be greater than ${expected}`, () => { + expect(a + b).not.toBeGreaterThan(expected); + }); + + test(`returned value not be less than ${expected}`, () => { + expect(a + b).not.toBeLessThan(expected); + }); +}); +``` + +```js +describe.each([ + {a: 1, b: 1, expected: 2}, + {a: 1, b: 2, expected: 3}, + {a: 2, b: 1, expected: 3}, +])('.add($a, $b)', ({a, b, expected}) => { + test(`returns ${expected}`, () => { + expect(a + b).toBe(expected); + }); + + test(`returned value not be greater than ${expected}`, () => { + expect(a + b).not.toBeGreaterThan(expected); + }); + + test(`returned value not be less than ${expected}`, () => { + expect(a + b).not.toBeLessThan(expected); + }); +}); +``` + +#### 2. `` describe.each`table`(name, fn, timeout) `` + +- `table`: `Tagged Template Literal` + - First row of variable name column headings separated with `|` + - One or more subsequent rows of data supplied as template literal expressions using `${value}` syntax. +- `name`: `String` the title of the test suite, use `$variable` to inject test data into the suite title from the tagged template expressions, and `$#` for the index of the row. + - To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value` +- `fn`: `Function` the suite of tests to be ran, this is the function that will receive the test data object. +- Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait for each row before aborting. _Note: The default timeout is 5 seconds._ + +Example: + +```js +describe.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('$a + $b', ({a, b, expected}) => { + test(`returns ${expected}`, () => { + expect(a + b).toBe(expected); + }); + + test(`returned value not be greater than ${expected}`, () => { + expect(a + b).not.toBeGreaterThan(expected); + }); + + test(`returned value not be less than ${expected}`, () => { + expect(a + b).not.toBeLessThan(expected); + }); +}); +``` + +### `describe.only(name, fn)` + +Also under the alias: `fdescribe(name, fn)` + +You can use `describe.only` if you want to run only one describe block: + +```js +describe.only('my beverage', () => { + test('is delicious', () => { + expect(myBeverage.delicious).toBeTruthy(); + }); + + test('is not sour', () => { + expect(myBeverage.sour).toBeFalsy(); + }); +}); + +describe('my other beverage', () => { + // ... will be skipped +}); +``` + +### `describe.only.each(table)(name, fn)` + +Also under the aliases: `fdescribe.each(table)(name, fn)` and `` fdescribe.each`table`(name, fn) `` + +Use `describe.only.each` if you want to only run specific tests suites of data driven tests. + +`describe.only.each` is available with two APIs: + +#### `describe.only.each(table)(name, fn)` + +```js +describe.only.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', (a, b, expected) => { + test(`returns ${expected}`, () => { + expect(a + b).toBe(expected); + }); +}); + +test('will not be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +#### `` describe.only.each`table`(name, fn) `` + +```js +describe.only.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('returns $expected when $a is added $b', ({a, b, expected}) => { + test('passes', () => { + expect(a + b).toBe(expected); + }); +}); + +test('will not be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +### `describe.skip(name, fn)` + +Also under the alias: `xdescribe(name, fn)` + +You can use `describe.skip` if you do not want to run a particular describe block: + +```js +describe('my beverage', () => { + test('is delicious', () => { + expect(myBeverage.delicious).toBeTruthy(); + }); + + test('is not sour', () => { + expect(myBeverage.sour).toBeFalsy(); + }); +}); + +describe.skip('my other beverage', () => { + // ... will be skipped +}); +``` + +Using `describe.skip` is often a cleaner alternative to temporarily commenting out a chunk of tests. + +### `describe.skip.each(table)(name, fn)` + +Also under the aliases: `xdescribe.each(table)(name, fn)` and `` xdescribe.each`table`(name, fn) `` + +Use `describe.skip.each` if you want to stop running a suite of data driven tests. + +`describe.skip.each` is available with two APIs: + +#### `describe.skip.each(table)(name, fn)` + +```js +describe.skip.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', (a, b, expected) => { + test(`returns ${expected}`, () => { + expect(a + b).toBe(expected); // will not be ran + }); +}); + +test('will be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +#### `` describe.skip.each`table`(name, fn) `` + +```js +describe.skip.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('returns $expected when $a is added $b', ({a, b, expected}) => { + test('will not be ran', () => { + expect(a + b).toBe(expected); // will not be ran + }); +}); + +test('will be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +### `test(name, fn, timeout)` + +Also under the alias: `it(name, fn, timeout)` + +All you need in a test file is the `test` method which runs a test. For example, let's say there's a function `inchesOfRain()` that should be zero. Your whole test could be: + +```js +test('did not rain', () => { + expect(inchesOfRain()).toBe(0); +}); +``` + +The first argument is the test name; the second argument is a function that contains the expectations to test. The third argument (optional) is `timeout` (in milliseconds) for specifying how long to wait before aborting. _Note: The default timeout is 5 seconds._ + +> Note: If a **promise is returned** from `test`, Jest will wait for the promise to resolve before letting the test complete. Jest will also wait if you **provide an argument to the test function**, usually called `done`. This could be handy when you want to test callbacks. See how to test async code [here](TestingAsyncCode.md#callbacks). + +For example, let's say `fetchBeverageList()` returns a promise that is supposed to resolve to a list that has `lemon` in it. You can test this with: + +```js +test('has lemon in it', () => { + return fetchBeverageList().then(list => { + expect(list).toContain('lemon'); + }); +}); +``` + +Even though the call to `test` will return right away, the test doesn't complete until the promise resolves as well. + +### `test.concurrent(name, fn, timeout)` + +Also under the alias: `it.concurrent(name, fn, timeout)` + +Use `test.concurrent` if you want the test to run concurrently. + +> Note: `test.concurrent` is considered experimental - see [here](https://github.com/facebook/jest/labels/Area%3A%20Concurrent) for details on missing features and other issues + +The first argument is the test name; the second argument is an asynchronous function that contains the expectations to test. The third argument (optional) is `timeout` (in milliseconds) for specifying how long to wait before aborting. _Note: The default timeout is 5 seconds._ + +``` +test.concurrent('addition of 2 numbers', async () => { + expect(5 + 3).toBe(8); +}); + +test.concurrent('subtraction 2 numbers', async () => { + expect(5 - 3).toBe(2); +}); +``` + +> Note: Use `maxConcurrency` in configuration to prevents Jest from executing more than the specified amount of tests at the same time + +### `test.concurrent.each(table)(name, fn, timeout)` + +Also under the alias: `it.concurrent.each(table)(name, fn, timeout)` + +Use `test.concurrent.each` if you keep duplicating the same test with different data. `test.each` allows you to write the test once and pass data in, the tests are all run asynchronously. + +`test.concurrent.each` is available with two APIs: + +#### 1. `test.concurrent.each(table)(name, fn, timeout)` + +- `table`: `Array` of Arrays with the arguments that are passed into the test `fn` for each row. + - _Note_ If you pass in a 1D array of primitives, internally it will be mapped to a table i.e. `[1, 2, 3] -> [[1], [2], [3]]` +- `name`: `String` the title of the test block. + - Generate unique test titles by positionally injecting parameters with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args): + - `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format). + - `%s`- String. + - `%d`- Number. + - `%i` - Integer. + - `%f` - Floating point value. + - `%j` - JSON. + - `%o` - Object. + - `%#` - Index of the test case. + - `%%` - single percent sign ('%'). This does not consume an argument. +- `fn`: `Function` the test to be ran, this is the function that will receive the parameters in each row as function arguments, **this will have to be an asynchronous function**. +- Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait for each row before aborting. _Note: The default timeout is 5 seconds._ + +Example: + +```js +test.concurrent.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', async (a, b, expected) => { + expect(a + b).toBe(expected); +}); +``` + +#### 2. `` test.concurrent.each`table`(name, fn, timeout) `` + +- `table`: `Tagged Template Literal` + - First row of variable name column headings separated with `|` + - One or more subsequent rows of data supplied as template literal expressions using `${value}` syntax. +- `name`: `String` the title of the test, use `$variable` to inject test data into the test title from the tagged template expressions. + - To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value` +- `fn`: `Function` the test to be ran, this is the function that will receive the test data object, **this will have to be an asynchronous function**. +- Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait for each row before aborting. _Note: The default timeout is 5 seconds._ + +Example: + +```js +test.concurrent.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('returns $expected when $a is added $b', async ({a, b, expected}) => { + expect(a + b).toBe(expected); +}); +``` + +### `test.concurrent.only.each(table)(name, fn)` + +Also under the alias: `it.concurrent.only.each(table)(name, fn)` + +Use `test.concurrent.only.each` if you want to only run specific tests with different test data concurrently. + +`test.concurrent.only.each` is available with two APIs: + +#### `test.concurrent.only.each(table)(name, fn)` + +```js +test.concurrent.only.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', async (a, b, expected) => { + expect(a + b).toBe(expected); +}); + +test('will not be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +#### `` test.only.each`table`(name, fn) `` + +```js +test.concurrent.only.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('returns $expected when $a is added $b', async ({a, b, expected}) => { + expect(a + b).toBe(expected); +}); + +test('will not be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +### `test.concurrent.skip.each(table)(name, fn)` + +Also under the alias: `it.concurrent.skip.each(table)(name, fn)` + +Use `test.concurrent.skip.each` if you want to stop running a collection of asynchronous data driven tests. + +`test.concurrent.skip.each` is available with two APIs: + +#### `test.concurrent.skip.each(table)(name, fn)` + +```js +test.concurrent.skip.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', async (a, b, expected) => { + expect(a + b).toBe(expected); // will not be ran +}); + +test('will be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +#### `` test.concurrent.skip.each`table`(name, fn) `` + +```js +test.concurrent.skip.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('returns $expected when $a is added $b', async ({a, b, expected}) => { + expect(a + b).toBe(expected); // will not be ran +}); + +test('will be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +### `test.each(table)(name, fn, timeout)` + +Also under the alias: `it.each(table)(name, fn)` and `` it.each`table`(name, fn) `` + +Use `test.each` if you keep duplicating the same test with different data. `test.each` allows you to write the test once and pass data in. + +`test.each` is available with two APIs: + +#### 1. `test.each(table)(name, fn, timeout)` + +- `table`: `Array` of Arrays with the arguments that are passed into the test `fn` for each row. + - _Note_ If you pass in a 1D array of primitives, internally it will be mapped to a table i.e. `[1, 2, 3] -> [[1], [2], [3]]` +- `name`: `String` the title of the test block. + - Generate unique test titles by positionally injecting parameters with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args): + - `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format). + - `%s`- String. + - `%d`- Number. + - `%i` - Integer. + - `%f` - Floating point value. + - `%j` - JSON. + - `%o` - Object. + - `%#` - Index of the test case. + - `%%` - single percent sign ('%'). This does not consume an argument. + - Or generate unique test titles by injecting properties of test case object with `$variable` + - To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value` + - You can use `$#` to inject the index of the test case + - You cannot use `$variable` with the `printf` formatting except for `%%` +- `fn`: `Function` the test to be ran, this is the function that will receive the parameters in each row as function arguments. +- Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait for each row before aborting. _Note: The default timeout is 5 seconds._ + +Example: + +```js +test.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', (a, b, expected) => { + expect(a + b).toBe(expected); +}); +``` + +```js +test.each([ + {a: 1, b: 1, expected: 2}, + {a: 1, b: 2, expected: 3}, + {a: 2, b: 1, expected: 3}, +])('.add($a, $b)', ({a, b, expected}) => { + expect(a + b).toBe(expected); +}); +``` + +#### 2. `` test.each`table`(name, fn, timeout) `` + +- `table`: `Tagged Template Literal` + - First row of variable name column headings separated with `|` + - One or more subsequent rows of data supplied as template literal expressions using `${value}` syntax. +- `name`: `String` the title of the test, use `$variable` to inject test data into the test title from the tagged template expressions. + - To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value` +- `fn`: `Function` the test to be ran, this is the function that will receive the test data object. +- Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait for each row before aborting. _Note: The default timeout is 5 seconds._ + +Example: + +```js +test.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('returns $expected when $a is added $b', ({a, b, expected}) => { + expect(a + b).toBe(expected); +}); +``` + +### `test.only(name, fn, timeout)` + +Also under the aliases: `it.only(name, fn, timeout)`, and `fit(name, fn, timeout)` + +When you are debugging a large test file, you will often only want to run a subset of tests. You can use `.only` to specify which tests are the only ones you want to run in that test file. + +Optionally, you can provide a `timeout` (in milliseconds) for specifying how long to wait before aborting. _Note: The default timeout is 5 seconds._ + +For example, let's say you had these tests: + +```js +test.only('it is raining', () => { + expect(inchesOfRain()).toBeGreaterThan(0); +}); + +test('it is not snowing', () => { + expect(inchesOfSnow()).toBe(0); +}); +``` + +Only the "it is raining" test will run in that test file, since it is run with `test.only`. + +Usually you wouldn't check code using `test.only` into source control - you would use it for debugging, and remove it once you have fixed the broken tests. + +### `test.only.each(table)(name, fn)` + +Also under the aliases: `it.only.each(table)(name, fn)`, `fit.each(table)(name, fn)`, `` it.only.each`table`(name, fn) `` and `` fit.each`table`(name, fn) `` + +Use `test.only.each` if you want to only run specific tests with different test data. + +`test.only.each` is available with two APIs: + +#### `test.only.each(table)(name, fn)` + +```js +test.only.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', (a, b, expected) => { + expect(a + b).toBe(expected); +}); + +test('will not be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +#### `` test.only.each`table`(name, fn) `` + +```js +test.only.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('returns $expected when $a is added $b', ({a, b, expected}) => { + expect(a + b).toBe(expected); +}); + +test('will not be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +### `test.skip(name, fn)` + +Also under the aliases: `it.skip(name, fn)`, `xit(name, fn)`, and `xtest(name, fn)` + +When you are maintaining a large codebase, you may sometimes find a test that is temporarily broken for some reason. If you want to skip running this test, but you don't want to delete this code, you can use `test.skip` to specify some tests to skip. + +For example, let's say you had these tests: + +```js +test('it is raining', () => { + expect(inchesOfRain()).toBeGreaterThan(0); +}); + +test.skip('it is not snowing', () => { + expect(inchesOfSnow()).toBe(0); +}); +``` + +Only the "it is raining" test will run, since the other test is run with `test.skip`. + +You could comment the test out, but it's often a bit nicer to use `test.skip` because it will maintain indentation and syntax highlighting. + +### `test.skip.each(table)(name, fn)` + +Also under the aliases: `it.skip.each(table)(name, fn)`, `xit.each(table)(name, fn)`, `xtest.each(table)(name, fn)`, `` it.skip.each`table`(name, fn) ``, `` xit.each`table`(name, fn) `` and `` xtest.each`table`(name, fn) `` + +Use `test.skip.each` if you want to stop running a collection of data driven tests. + +`test.skip.each` is available with two APIs: + +#### `test.skip.each(table)(name, fn)` + +```js +test.skip.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])('.add(%i, %i)', (a, b, expected) => { + expect(a + b).toBe(expected); // will not be ran +}); + +test('will be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +#### `` test.skip.each`table`(name, fn) `` + +```js +test.skip.each` + a | b | expected + ${1} | ${1} | ${2} + ${1} | ${2} | ${3} + ${2} | ${1} | ${3} +`('returns $expected when $a is added $b', ({a, b, expected}) => { + expect(a + b).toBe(expected); // will not be ran +}); + +test('will be ran', () => { + expect(1 / 0).toBe(Infinity); +}); +``` + +### `test.todo(name)` + +Also under the alias: `it.todo(name)` + +Use `test.todo` when you are planning on writing tests. These tests will be highlighted in the summary output at the end so you know how many tests you still need todo. + +_Note_: If you supply a test callback function then the `test.todo` will throw an error. If you have already implemented the test and it is broken and you do not want it to run, then use `test.skip` instead. + +#### API + +- `name`: `String` the title of the test plan. + +Example: + +```js +const add = (a, b) => a + b; + +test.todo('add should be associative'); +``` diff --git a/website/versioned_docs/version-27.0/JestCommunity.md b/website/versioned_docs/version-27.0/JestCommunity.md new file mode 100644 index 000000000000..35783bec9abd --- /dev/null +++ b/website/versioned_docs/version-27.0/JestCommunity.md @@ -0,0 +1,19 @@ +--- +title: Jest Community +id: jest-community +--- + +The community around Jest is working hard to make the testing experience even greater. + +[jest-community](https://github.com/jest-community) is a new GitHub organization for high quality Jest additions curated by Jest maintainers and collaborators. It already features some of our favorite projects, to name a few: + +- [vscode-jest](https://github.com/jest-community/vscode-jest) +- [jest-extended](https://github.com/jest-community/jest-extended) +- [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) +- [awesome-jest](https://github.com/jest-community/awesome-jest) + +Community projects under one organisation are a great way for Jest to experiment with new ideas/techniques and approaches. Encourage contributions from the community and publish contributions independently at a faster pace. + +The jest-community org maintains an [awesome-jest](https://github.com/jest-community/awesome-jest) list of great projects and resources related to Jest, this includes all projects not just the ones in the jest-community org. + +If you have something awesome to share, feel free to reach out to us! We'd love to share your project on the awesome-jest list ([send a PR here](https://github.com/jest-community/awesome-jest/pulls)) or if you would like to transfer your project to the jest-community org reach out to one of the owners of the org. diff --git a/website/versioned_docs/version-27.0/JestObjectAPI.md b/website/versioned_docs/version-27.0/JestObjectAPI.md new file mode 100644 index 000000000000..a7b45df77980 --- /dev/null +++ b/website/versioned_docs/version-27.0/JestObjectAPI.md @@ -0,0 +1,686 @@ +--- +id: jest-object +title: The Jest Object +--- + +The `jest` object is automatically in scope within every test file. The methods in the `jest` object help create mocks and let you control Jest's overall behavior. It can also be imported explicitly by via `import {jest} from '@jest/globals'`. + +## Mock Modules + +### `jest.disableAutomock()` + +Disables automatic mocking in the module loader. + +> See `automock` section of [configuration](Configuration.md#automock-boolean) for more information + +After this method is called, all `require()`s will return the real versions of each module (rather than a mocked version). + +Jest configuration: + +```json +{ + "automock": true +} +``` + +Example: + +```js +// utils.js +export default { + authorize: () => { + return 'token'; + }, +}; +``` + +```js +// __tests__/disableAutomocking.js +import utils from '../utils'; + +jest.disableAutomock(); + +test('original implementation', () => { + // now we have the original implementation, + // even if we set the automocking in a jest configuration + expect(utils.authorize()).toBe('token'); +}); +``` + +This is usually useful when you have a scenario where the number of dependencies you want to mock is far less than the number of dependencies that you don't. For example, if you're writing a test for a module that uses a large number of dependencies that can be reasonably classified as "implementation details" of the module, then you likely do not want to mock them. + +Examples of dependencies that might be considered "implementation details" are things ranging from language built-ins (e.g. Array.prototype methods) to highly common utility methods (e.g. underscore/lo-dash, array utilities, etc) and entire libraries like React.js. + +Returns the `jest` object for chaining. + +_Note: this method was previously called `autoMockOff`. When using `babel-jest`, calls to `disableAutomock` will automatically be hoisted to the top of the code block. Use `autoMockOff` if you want to explicitly avoid this behavior._ + +### `jest.enableAutomock()` + +Enables automatic mocking in the module loader. + +Returns the `jest` object for chaining. + +> See `automock` section of [configuration](Configuration.md#automock-boolean) for more information + +Example: + +```js +// utils.js +export default { + authorize: () => { + return 'token'; + }, + isAuthorized: secret => secret === 'wizard', +}; +``` + +```js +// __tests__/enableAutomocking.js +jest.enableAutomock(); + +import utils from '../utils'; + +test('original implementation', () => { + // now we have the mocked implementation, + expect(utils.authorize._isMockFunction).toBeTruthy(); + expect(utils.isAuthorized._isMockFunction).toBeTruthy(); +}); +``` + +_Note: this method was previously called `autoMockOn`. When using `babel-jest`, calls to `enableAutomock` will automatically be hoisted to the top of the code block. Use `autoMockOn` if you want to explicitly avoid this behavior._ + +### `jest.createMockFromModule(moduleName)` + +##### renamed in Jest **26.0.0+** + +Also under the alias: `.genMockFromModule(moduleName)` + +Given the name of a module, use the automatic mocking system to generate a mocked version of the module for you. + +This is useful when you want to create a [manual mock](ManualMocks.md) that extends the automatic mock's behavior. + +Example: + +```js +// utils.js +export default { + authorize: () => { + return 'token'; + }, + isAuthorized: secret => secret === 'wizard', +}; +``` + +```js +// __tests__/createMockFromModule.test.js +const utils = jest.createMockFromModule('../utils').default; +utils.isAuthorized = jest.fn(secret => secret === 'not wizard'); + +test('implementation created by jest.createMockFromModule', () => { + expect(utils.authorize.mock).toBeTruthy(); + expect(utils.isAuthorized('not wizard')).toEqual(true); +}); +``` + +This is how `createMockFromModule` will mock the following data types: + +#### `Function` + +Creates a new [mock function](mock-functions). The new function has no formal parameters and when called will return `undefined`. This functionality also applies to `async` functions. + +#### `Class` + +Creates a new class. The interface of the original class is maintained, all of the class member functions and properties will be mocked. + +#### `Object` + +Creates a new deeply cloned object. The object keys are maintained and their values are mocked. + +#### `Array` + +Creates a new empty array, ignoring the original. + +#### `Primitives` + +Creates a new property with the same primitive value as the original property. + +Example: + +``` +// example.js +module.exports = { + function: function square(a, b) { + return a * b; + }, + asyncFunction: async function asyncSquare(a, b) { + const result = await a * b; + return result; + }, + class: new class Bar { + constructor() { + this.array = [1, 2, 3]; + } + foo() {} + }, + object: { + baz: 'foo', + bar: { + fiz: 1, + buzz: [1, 2, 3], + }, + }, + array: [1, 2, 3], + number: 123, + string: 'baz', + boolean: true, + symbol: Symbol.for('a.b.c'), +}; +``` + +```js +// __tests__/example.test.js +const example = jest.createMockFromModule('./example'); + +test('should run example code', () => { + // creates a new mocked function with no formal arguments. + expect(example.function.name).toEqual('square'); + expect(example.function.length).toEqual(0); + + // async functions get the same treatment as standard synchronous functions. + expect(example.asyncFunction.name).toEqual('asyncSquare'); + expect(example.asyncFunction.length).toEqual(0); + + // creates a new class with the same interface, member functions and properties are mocked. + expect(example.class.constructor.name).toEqual('Bar'); + expect(example.class.foo.name).toEqual('foo'); + expect(example.class.array.length).toEqual(0); + + // creates a deeply cloned version of the original object. + expect(example.object).toEqual({ + baz: 'foo', + bar: { + fiz: 1, + buzz: [], + }, + }); + + // creates a new empty array, ignoring the original array. + expect(example.array.length).toEqual(0); + + // creates a new property with the same primitive value as the original property. + expect(example.number).toEqual(123); + expect(example.string).toEqual('baz'); + expect(example.boolean).toEqual(true); + expect(example.symbol).toEqual(Symbol.for('a.b.c')); +}); +``` + +### `jest.mock(moduleName, factory, options)` + +Mocks a module with an auto-mocked version when it is being required. `factory` and `options` are optional. For example: + +```js +// banana.js +module.exports = () => 'banana'; + +// __tests__/test.js +jest.mock('../banana'); + +const banana = require('../banana'); // banana will be explicitly mocked. + +banana(); // will return 'undefined' because the function is auto-mocked. +``` + +The second argument can be used to specify an explicit module factory that is being run instead of using Jest's automocking feature: + +```js +jest.mock('../moduleName', () => { + return jest.fn(() => 42); +}); + +// This runs the function specified as second argument to `jest.mock`. +const moduleName = require('../moduleName'); +moduleName(); // Will return '42'; +``` + +When using the `factory` parameter for an ES6 module with a default export, the `__esModule: true` property needs to be specified. This property is normally generated by Babel / TypeScript, but here it needs to be set manually. When importing a default export, it's an instruction to import the property named `default` from the export object: + +```js +import moduleName, {foo} from '../moduleName'; + +jest.mock('../moduleName', () => { + return { + __esModule: true, + default: jest.fn(() => 42), + foo: jest.fn(() => 43), + }; +}); + +moduleName(); // Will return 42 +foo(); // Will return 43 +``` + +The third argument can be used to create virtual mocks – mocks of modules that don't exist anywhere in the system: + +```js +jest.mock( + '../moduleName', + () => { + /* + * Custom implementation of a module that doesn't exist in JS, + * like a generated module or a native module in react-native. + */ + }, + {virtual: true}, +); +``` + +> **Warning:** Importing a module in a setup file (as specified by `setupTestFrameworkScriptFile`) will prevent mocking for the module in question, as well as all the modules that it imports. + +Modules that are mocked with `jest.mock` are mocked only for the file that calls `jest.mock`. Another file that imports the module will get the original implementation even if it runs after the test file that mocks the module. + +Returns the `jest` object for chaining. + +### `jest.unmock(moduleName)` + +Indicates that the module system should never return a mocked version of the specified module from `require()` (e.g. that it should always return the real module). + +The most common use of this API is for specifying the module a given test intends to be testing (and thus doesn't want automatically mocked). + +Returns the `jest` object for chaining. + +### `jest.doMock(moduleName, factory, options)` + +When using `babel-jest`, calls to `mock` will automatically be hoisted to the top of the code block. Use this method if you want to explicitly avoid this behavior. + +One example when this is useful is when you want to mock a module differently within the same file: + +```js +beforeEach(() => { + jest.resetModules(); +}); + +test('moduleName 1', () => { + jest.doMock('../moduleName', () => { + return jest.fn(() => 1); + }); + const moduleName = require('../moduleName'); + expect(moduleName()).toEqual(1); +}); + +test('moduleName 2', () => { + jest.doMock('../moduleName', () => { + return jest.fn(() => 2); + }); + const moduleName = require('../moduleName'); + expect(moduleName()).toEqual(2); +}); +``` + +Using `jest.doMock()` with ES6 imports requires additional steps. Follow these if you don't want to use `require` in your tests: + +- We have to specify the `__esModule: true` property (see the [`jest.mock()`](#jestmockmodulename-factory-options) API for more information). +- Static ES6 module imports are hoisted to the top of the file, so instead we have to import them dynamically using `import()`. +- Finally, we need an environment which supports dynamic importing. Please see [Using Babel](GettingStarted.md#using-babel) for the initial setup. Then add the plugin [babel-plugin-dynamic-import-node](https://www.npmjs.com/package/babel-plugin-dynamic-import-node), or an equivalent, to your Babel config to enable dynamic importing in Node. + +```js +beforeEach(() => { + jest.resetModules(); +}); + +test('moduleName 1', () => { + jest.doMock('../moduleName', () => { + return { + __esModule: true, + default: 'default1', + foo: 'foo1', + }; + }); + return import('../moduleName').then(moduleName => { + expect(moduleName.default).toEqual('default1'); + expect(moduleName.foo).toEqual('foo1'); + }); +}); + +test('moduleName 2', () => { + jest.doMock('../moduleName', () => { + return { + __esModule: true, + default: 'default2', + foo: 'foo2', + }; + }); + return import('../moduleName').then(moduleName => { + expect(moduleName.default).toEqual('default2'); + expect(moduleName.foo).toEqual('foo2'); + }); +}); +``` + +Returns the `jest` object for chaining. + +### `jest.dontMock(moduleName)` + +When using `babel-jest`, calls to `unmock` will automatically be hoisted to the top of the code block. Use this method if you want to explicitly avoid this behavior. + +Returns the `jest` object for chaining. + +### `jest.setMock(moduleName, moduleExports)` + +Explicitly supplies the mock object that the module system should return for the specified module. + +On occasion, there are times where the automatically generated mock the module system would normally provide you isn't adequate enough for your testing needs. Normally under those circumstances you should write a [manual mock](ManualMocks.md) that is more adequate for the module in question. However, on extremely rare occasions, even a manual mock isn't suitable for your purposes and you need to build the mock yourself inside your test. + +In these rare scenarios you can use this API to manually fill the slot in the module system's mock-module registry. + +Returns the `jest` object for chaining. + +_Note It is recommended to use [`jest.mock()`](#jestmockmodulename-factory-options) instead. The `jest.mock` API's second argument is a module factory instead of the expected exported module object._ + +### `jest.requireActual(moduleName)` + +Returns the actual module instead of a mock, bypassing all checks on whether the module should receive a mock implementation or not. + +Example: + +```js +jest.mock('../myModule', () => { + // Require the original module to not be mocked... + const originalModule = jest.requireActual('../myModule'); + + return { + __esModule: true, // Use it when dealing with esModules + ...originalModule, + getRandom: jest.fn().mockReturnValue(10), + }; +}); + +const getRandom = require('../myModule').getRandom; + +getRandom(); // Always returns 10 +``` + +### `jest.requireMock(moduleName)` + +Returns a mock module instead of the actual module, bypassing all checks on whether the module should be required normally or not. + +### `jest.resetModules()` + +Resets the module registry - the cache of all required modules. This is useful to isolate modules where local state might conflict between tests. + +Example: + +```js +const sum1 = require('../sum'); +jest.resetModules(); +const sum2 = require('../sum'); +sum1 === sum2; +// > false (Both sum modules are separate "instances" of the sum module.) +``` + +Example in a test: + +```js +beforeEach(() => { + jest.resetModules(); +}); + +test('works', () => { + const sum = require('../sum'); +}); + +test('works too', () => { + const sum = require('../sum'); + // sum is a different copy of the sum module from the previous test. +}); +``` + +Returns the `jest` object for chaining. + +### `jest.isolateModules(fn)` + +`jest.isolateModules(fn)` goes a step further than `jest.resetModules()` and creates a sandbox registry for the modules that are loaded inside the callback function. This is useful to isolate specific modules for every test so that local module state doesn't conflict between tests. + +```js +let myModule; +jest.isolateModules(() => { + myModule = require('myModule'); +}); + +const otherCopyOfMyModule = require('myModule'); +``` + +## Mock functions + +### `jest.fn(implementation)` + +Returns a new, unused [mock function](MockFunctionAPI.md). Optionally takes a mock implementation. + +```js +const mockFn = jest.fn(); +mockFn(); +expect(mockFn).toHaveBeenCalled(); + +// With a mock implementation: +const returnsTrue = jest.fn(() => true); +console.log(returnsTrue()); // true; +``` + +### `jest.isMockFunction(fn)` + +Determines if the given function is a mocked function. + +### `jest.spyOn(object, methodName)` + +Creates a mock function similar to `jest.fn` but also tracks calls to `object[methodName]`. Returns a Jest [mock function](MockFunctionAPI.md). + +_Note: By default, `jest.spyOn` also calls the **spied** method. This is different behavior from most other test libraries. If you want to overwrite the original function, you can use `jest.spyOn(object, methodName).mockImplementation(() => customImplementation)` or `object[methodName] = jest.fn(() => customImplementation);`_ + +Example: + +```js +const video = { + play() { + return true; + }, +}; + +module.exports = video; +``` + +Example test: + +```js +const video = require('./video'); + +test('plays video', () => { + const spy = jest.spyOn(video, 'play'); + const isPlaying = video.play(); + + expect(spy).toHaveBeenCalled(); + expect(isPlaying).toBe(true); + + spy.mockRestore(); +}); +``` + +### `jest.spyOn(object, methodName, accessType?)` + +Since Jest 22.1.0+, the `jest.spyOn` method takes an optional third argument of `accessType` that can be either `'get'` or `'set'`, which proves to be useful when you want to spy on a getter or a setter, respectively. + +Example: + +```js +const video = { + // it's a getter! + get play() { + return true; + }, +}; + +module.exports = video; + +const audio = { + _volume: false, + // it's a setter! + set volume(value) { + this._volume = value; + }, + get volume() { + return this._volume; + }, +}; + +module.exports = audio; +``` + +Example test: + +```js +const audio = require('./audio'); +const video = require('./video'); + +test('plays video', () => { + const spy = jest.spyOn(video, 'play', 'get'); // we pass 'get' + const isPlaying = video.play; + + expect(spy).toHaveBeenCalled(); + expect(isPlaying).toBe(true); + + spy.mockRestore(); +}); + +test('plays audio', () => { + const spy = jest.spyOn(audio, 'volume', 'set'); // we pass 'set' + audio.volume = 100; + + expect(spy).toHaveBeenCalled(); + expect(audio.volume).toBe(100); + + spy.mockRestore(); +}); +``` + +### `jest.clearAllMocks()` + +Clears the `mock.calls` and `mock.instances` properties of all mocks. Equivalent to calling [`.mockClear()`](MockFunctionAPI.md#mockfnmockclear) on every mocked function. + +Returns the `jest` object for chaining. + +### `jest.resetAllMocks()` + +Resets the state of all mocks. Equivalent to calling [`.mockReset()`](MockFunctionAPI.md#mockfnmockreset) on every mocked function. + +Returns the `jest` object for chaining. + +### `jest.restoreAllMocks()` + +Restores all mocks back to their original value. Equivalent to calling [`.mockRestore()`](MockFunctionAPI.md#mockfnmockrestore) on every mocked function. Beware that `jest.restoreAllMocks()` only works when the mock was created with `jest.spyOn`; other mocks will require you to manually restore them. + +## Mock timers + +### `jest.useFakeTimers(implementation?: 'modern' | 'legacy')` + +Instructs Jest to use fake versions of the standard timer functions (`setTimeout`, `setInterval`, `clearTimeout`, `clearInterval`, `nextTick`, `setImmediate` and `clearImmediate` as well as `Date`). + +If you pass `'legacy'` as an argument, Jest's legacy implementation will be used rather than one based on [`@sinonjs/fake-timers`](https://github.com/sinonjs/fake-timers). + +Returns the `jest` object for chaining. + +### `jest.useRealTimers()` + +Instructs Jest to use the real versions of the standard timer functions. + +Returns the `jest` object for chaining. + +### `jest.runAllTicks()` + +Exhausts the **micro**-task queue (usually interfaced in node via `process.nextTick`). + +When this API is called, all pending micro-tasks that have been queued via `process.nextTick` will be executed. Additionally, if those micro-tasks themselves schedule new micro-tasks, those will be continually exhausted until there are no more micro-tasks remaining in the queue. + +### `jest.runAllTimers()` + +Exhausts both the **macro**-task queue (i.e., all tasks queued by `setTimeout()`, `setInterval()`, and `setImmediate()`) and the **micro**-task queue (usually interfaced in node via `process.nextTick`). + +When this API is called, all pending macro-tasks and micro-tasks will be executed. If those tasks themselves schedule new tasks, those will be continually exhausted until there are no more tasks remaining in the queue. + +This is often useful for synchronously executing setTimeouts during a test in order to synchronously assert about some behavior that would only happen after the `setTimeout()` or `setInterval()` callbacks executed. See the [Timer mocks](TimerMocks.md) doc for more information. + +### `jest.runAllImmediates()` + +Exhausts all tasks queued by `setImmediate()`. + +> Note: This function is not available when using modern fake timers implementation + +### `jest.advanceTimersByTime(msToRun)` + +Executes only the macro task queue (i.e. all tasks queued by `setTimeout()` or `setInterval()` and `setImmediate()`). + +When this API is called, all timers are advanced by `msToRun` milliseconds. All pending "macro-tasks" that have been queued via `setTimeout()` or `setInterval()`, and would be executed within this time frame will be executed. Additionally, if those macro-tasks schedule new macro-tasks that would be executed within the same time frame, those will be executed until there are no more macro-tasks remaining in the queue, that should be run within `msToRun` milliseconds. + +### `jest.runOnlyPendingTimers()` + +Executes only the macro-tasks that are currently pending (i.e., only the tasks that have been queued by `setTimeout()` or `setInterval()` up to this point). If any of the currently pending macro-tasks schedule new macro-tasks, those new tasks will not be executed by this call. + +This is useful for scenarios such as one where the module being tested schedules a `setTimeout()` whose callback schedules another `setTimeout()` recursively (meaning the scheduling never stops). In these scenarios, it's useful to be able to run forward in time by a single step at a time. + +### `jest.advanceTimersToNextTimer(steps)` + +Advances all timers by the needed milliseconds so that only the next timeouts/intervals will run. + +Optionally, you can provide `steps`, so it will run `steps` amount of next timeouts/intervals. + +### `jest.clearAllTimers()` + +Removes any pending timers from the timer system. + +This means, if any timers have been scheduled (but have not yet executed), they will be cleared and will never have the opportunity to execute in the future. + +### `jest.getTimerCount()` + +Returns the number of fake timers still left to run. + +### `jest.setSystemTime(now?: number | Date)` + +Set the current system time used by fake timers. Simulates a user changing the system clock while your program is running. It affects the current time but it does not in itself cause e.g. timers to fire; they will fire exactly as they would have done without the call to `jest.setSystemTime()`. + +> Note: This function is only available when using modern fake timers implementation + +### `jest.getRealSystemTime()` + +When mocking time, `Date.now()` will also be mocked. If you for some reason need access to the real current time, you can invoke this function. + +> Note: This function is only available when using modern fake timers implementation + +## Misc + +### `jest.setTimeout(timeout)` + +Set the default timeout interval for tests and before/after hooks in milliseconds. This only affects the test file from which this function is called. + +_Note: The default timeout interval is 5 seconds if this method is not called._ + +_Note: If you want to set the timeout for all test files, a good place to do this is in `setupFilesAfterEnv`._ + +Example: + +```js +jest.setTimeout(1000); // 1 second +``` + +### `jest.retryTimes()` + +Runs failed tests n-times until they pass or until the max number of retries is exhausted. This only works with the default [jest-circus](https://github.com/facebook/jest/tree/master/packages/jest-circus) runner! + +Example in a test: + +```js +jest.retryTimes(3); +test('will fail', () => { + expect(true).toBe(false); +}); +``` + +Returns the `jest` object for chaining. diff --git a/website/versioned_docs/version-27.0/JestPlatform.md b/website/versioned_docs/version-27.0/JestPlatform.md new file mode 100644 index 000000000000..cfadad5dced2 --- /dev/null +++ b/website/versioned_docs/version-27.0/JestPlatform.md @@ -0,0 +1,174 @@ +--- +id: jest-platform +title: Jest Platform +--- + +You can cherry pick specific features of Jest and use them as standalone packages. Here's a list of the available packages: + +## jest-changed-files + +Tool for identifying modified files in a git/hg repository. Exports two functions: + +- `getChangedFilesForRoots` returns a promise that resolves to an object with the changed files and repos. +- `findRepos` returns a promise that resolves to a set of repositories contained in the specified path. + +### Example + +```javascript +const {getChangedFilesForRoots} = require('jest-changed-files'); + +// print the set of modified files since last commit in the current repo +getChangedFilesForRoots(['./'], { + lastCommit: true, +}).then(result => console.log(result.changedFiles)); +``` + +You can read more about `jest-changed-files` in the [readme file](https://github.com/facebook/jest/blob/master/packages/jest-changed-files/README.md). + +## jest-diff + +Tool for visualizing changes in data. Exports a function that compares two values of any type and returns a "pretty-printed" string illustrating the difference between the two arguments. + +### Example + +```javascript +const {diff} = require('jest-diff'); + +const a = {a: {b: {c: 5}}}; +const b = {a: {b: {c: 6}}}; + +const result = diff(a, b); + +// print diff +console.log(result); +``` + +## jest-docblock + +Tool for extracting and parsing the comments at the top of a JavaScript file. Exports various functions to manipulate the data inside the comment block. + +### Example + +```javascript +const {parseWithComments} = require('jest-docblock'); + +const code = ` +/** + * This is a sample + * + * @flow + */ + + console.log('Hello World!'); +`; + +const parsed = parseWithComments(code); + +// prints an object with two attributes: comments and pragmas. +console.log(parsed); +``` + +You can read more about `jest-docblock` in the [readme file](https://github.com/facebook/jest/blob/master/packages/jest-docblock/README.md). + +## jest-get-type + +Module that identifies the primitive type of any JavaScript value. Exports a function that returns a string with the type of the value passed as argument. + +### Example + +```javascript +const {getType} = require('jest-get-type'); + +const array = [1, 2, 3]; +const nullValue = null; +const undefinedValue = undefined; + +// prints 'array' +console.log(getType(array)); +// prints 'null' +console.log(getType(nullValue)); +// prints 'undefined' +console.log(getType(undefinedValue)); +``` + +## jest-validate + +Tool for validating configurations submitted by users. Exports a function that takes two arguments: the user's configuration and an object containing an example configuration and other options. The return value is an object with two attributes: + +- `hasDeprecationWarnings`, a boolean indicating whether the submitted configuration has deprecation warnings, +- `isValid`, a boolean indicating whether the configuration is correct or not. + +### Example + +```javascript +const {validate} = require('jest-validate'); + +const configByUser = { + transform: '/node_modules/my-custom-transform', +}; + +const result = validate(configByUser, { + comment: ' Documentation: http://custom-docs.com', + exampleConfig: {transform: '/node_modules/babel-jest'}, +}); + +console.log(result); +``` + +You can read more about `jest-validate` in the [readme file](https://github.com/facebook/jest/blob/master/packages/jest-validate/README.md). + +## jest-worker + +Module used for parallelization of tasks. Exports a class `JestWorker` that takes the path of Node.js module and lets you call the module's exported methods as if they were class methods, returning a promise that resolves when the specified method finishes its execution in a forked process. + +### Example + +```javascript +// heavy-task.js + +module.exports = { + myHeavyTask: args => { + // long running CPU intensive task. + }, +}; +``` + +```javascript +// main.js + +async function main() { + const worker = new Worker(require.resolve('./heavy-task.js')); + + // run 2 tasks in parallel with different arguments + const results = await Promise.all([ + worker.myHeavyTask({foo: 'bar'}), + worker.myHeavyTask({bar: 'foo'}), + ]); + + console.log(results); +} + +main(); +``` + +You can read more about `jest-worker` in the [readme file](https://github.com/facebook/jest/blob/master/packages/jest-worker/README.md). + +## pretty-format + +Exports a function that converts any JavaScript value into a human-readable string. Supports all built-in JavaScript types out of the box and allows extension for application-specific types via user-defined plugins. + +### Example + +```javascript +const {format: prettyFormat} = require('pretty-format'); + +const val = {object: {}}; +val.circularReference = val; +val[Symbol('foo')] = 'foo'; +val.map = new Map([['prop', 'value']]); +val.array = [-0, Infinity, NaN]; + +console.log(prettyFormat(val)); +``` + +You can read more about `pretty-format` in the [readme file](https://github.com/facebook/jest/blob/master/packages/pretty-format/README.md). diff --git a/website/versioned_docs/version-27.0/ManualMocks.md b/website/versioned_docs/version-27.0/ManualMocks.md new file mode 100644 index 000000000000..4732d3d10cd4 --- /dev/null +++ b/website/versioned_docs/version-27.0/ManualMocks.md @@ -0,0 +1,167 @@ +--- +id: manual-mocks +title: Manual Mocks +--- + +Manual mocks are used to stub out functionality with mock data. For example, instead of accessing a remote resource like a website or a database, you might want to create a manual mock that allows you to use fake data. This ensures your tests will be fast and not flaky. + +## Mocking user modules + +Manual mocks are defined by writing a module in a `__mocks__/` subdirectory immediately adjacent to the module. For example, to mock a module called `user` in the `models` directory, create a file called `user.js` and put it in the `models/__mocks__` directory. Note that the `__mocks__` folder is case-sensitive, so naming the directory `__MOCKS__` will break on some systems. + +> When we require that module in our tests (meaning we want to use the manual mock instead of the real implementation), explicitly calling `jest.mock('./moduleName')` is **required**. + +## Mocking Node modules + +If the module you are mocking is a Node module (e.g.: `lodash`), the mock should be placed in the `__mocks__` directory adjacent to `node_modules` (unless you configured [`roots`](Configuration.md#roots-arraystring) to point to a folder other than the project root) and will be **automatically** mocked. There's no need to explicitly call `jest.mock('module_name')`. + +Scoped modules (also known as [scoped packages](https://docs.npmjs.com/cli/v6/using-npm/scope)) can be mocked by creating a file in a directory structure that matches the name of the scoped module. For example, to mock a scoped module called `@scope/project-name`, create a file at `__mocks__/@scope/project-name.js`, creating the `@scope/` directory accordingly. + +> Warning: If we want to mock Node's core modules (e.g.: `fs` or `path`), then explicitly calling e.g. `jest.mock('path')` is **required**, because core Node modules are not mocked by default. + +## Examples + +```bash +. +├── config +├── __mocks__ +│   └── fs.js +├── models +│   ├── __mocks__ +│   │   └── user.js +│   └── user.js +├── node_modules +└── views +``` + +When a manual mock exists for a given module, Jest's module system will use that module when explicitly calling `jest.mock('moduleName')`. However, when `automock` is set to `true`, the manual mock implementation will be used instead of the automatically created mock, even if `jest.mock('moduleName')` is not called. To opt out of this behavior you will need to explicitly call `jest.unmock('moduleName')` in tests that should use the actual module implementation. + +> Note: In order to mock properly, Jest needs `jest.mock('moduleName')` to be in the same scope as the `require/import` statement. + +Here's a contrived example where we have a module that provides a summary of all the files in a given directory. In this case, we use the core (built in) `fs` module. + +```javascript +// FileSummarizer.js +'use strict'; + +const fs = require('fs'); + +function summarizeFilesInDirectorySync(directory) { + return fs.readdirSync(directory).map(fileName => ({ + directory, + fileName, + })); +} + +exports.summarizeFilesInDirectorySync = summarizeFilesInDirectorySync; +``` + +Since we'd like our tests to avoid actually hitting the disk (that's pretty slow and fragile), we create a manual mock for the `fs` module by extending an automatic mock. Our manual mock will implement custom versions of the `fs` APIs that we can build on for our tests: + +```javascript +// __mocks__/fs.js +'use strict'; + +const path = require('path'); + +const fs = jest.createMockFromModule('fs'); + +// This is a custom function that our tests can use during setup to specify +// what the files on the "mock" filesystem should look like when any of the +// `fs` APIs are used. +let mockFiles = Object.create(null); +function __setMockFiles(newMockFiles) { + mockFiles = Object.create(null); + for (const file in newMockFiles) { + const dir = path.dirname(file); + + if (!mockFiles[dir]) { + mockFiles[dir] = []; + } + mockFiles[dir].push(path.basename(file)); + } +} + +// A custom version of `readdirSync` that reads from the special mocked out +// file list set via __setMockFiles +function readdirSync(directoryPath) { + return mockFiles[directoryPath] || []; +} + +fs.__setMockFiles = __setMockFiles; +fs.readdirSync = readdirSync; + +module.exports = fs; +``` + +Now we write our test. Note that we need to explicitly tell that we want to mock the `fs` module because it’s a core Node module: + +```javascript +// __tests__/FileSummarizer-test.js +'use strict'; + +jest.mock('fs'); + +describe('listFilesInDirectorySync', () => { + const MOCK_FILE_INFO = { + '/path/to/file1.js': 'console.log("file1 contents");', + '/path/to/file2.txt': 'file2 contents', + }; + + beforeEach(() => { + // Set up some mocked out file info before each test + require('fs').__setMockFiles(MOCK_FILE_INFO); + }); + + test('includes all files in the directory in the summary', () => { + const FileSummarizer = require('../FileSummarizer'); + const fileSummary = + FileSummarizer.summarizeFilesInDirectorySync('/path/to'); + + expect(fileSummary.length).toBe(2); + }); +}); +``` + +The example mock shown here uses [`jest.createMockFromModule`](JestObjectAPI.md#jestcreatemockfrommodulemodulename) to generate an automatic mock, and overrides its default behavior. This is the recommended approach, but is completely optional. If you do not want to use the automatic mock at all, you can export your own functions from the mock file. One downside to fully manual mocks is that they're manual – meaning you have to manually update them any time the module they are mocking changes. Because of this, it's best to use or extend the automatic mock when it works for your needs. + +To ensure that a manual mock and its real implementation stay in sync, it might be useful to require the real module using [`jest.requireActual(moduleName)`](JestObjectAPI.md#jestrequireactualmodulename) in your manual mock and amending it with mock functions before exporting it. + +The code for this example is available at [examples/manual-mocks](https://github.com/facebook/jest/tree/master/examples/manual-mocks). + +## Using with ES module imports + +If you're using [ES module imports](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) then you'll normally be inclined to put your `import` statements at the top of the test file. But often you need to instruct Jest to use a mock before modules use it. For this reason, Jest will automatically hoist `jest.mock` calls to the top of the module (before any imports). To learn more about this and see it in action, see [this repo](https://github.com/kentcdodds/how-jest-mocking-works). + +## Mocking methods which are not implemented in JSDOM + +If some code uses a method which JSDOM (the DOM implementation used by Jest) hasn't implemented yet, testing it is not easily possible. This is e.g. the case with `window.matchMedia()`. Jest returns `TypeError: window.matchMedia is not a function` and doesn't properly execute the test. + +In this case, mocking `matchMedia` in the test file should solve the issue: + +```js +Object.defineProperty(window, 'matchMedia', { + writable: true, + value: jest.fn().mockImplementation(query => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), // deprecated + removeListener: jest.fn(), // deprecated + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + })), +}); +``` + +This works if `window.matchMedia()` is used in a function (or method) which is invoked in the test. If `window.matchMedia()` is executed directly in the tested file, Jest reports the same error. In this case, the solution is to move the manual mock into a separate file and include this one in the test **before** the tested file: + +```js +import './matchMedia.mock'; // Must be imported before the tested file +import {myMethod} from './file-to-test'; + +describe('myMethod()', () => { + // Test the method here... +}); +``` diff --git a/website/versioned_docs/version-27.0/MigrationGuide.md b/website/versioned_docs/version-27.0/MigrationGuide.md new file mode 100644 index 000000000000..13d0bed5674d --- /dev/null +++ b/website/versioned_docs/version-27.0/MigrationGuide.md @@ -0,0 +1,22 @@ +--- +id: migration-guide +title: Migrating to Jest +--- + +If you'd like to try out Jest with an existing codebase, there are a number of ways to convert to Jest: + +- If you are using Jasmine, or a Jasmine like API (for example [Mocha](https://mochajs.org)), Jest should be mostly compatible, which makes it less complicated to migrate to. +- If you are using AVA, Expect.js (by Automattic), Jasmine, Mocha, proxyquire, Should.js or Tape you can automatically migrate with Jest Codemods (see below). +- If you like [chai](http://chaijs.com/), you can upgrade to Jest and continue using chai. However, we recommend trying out Jest's assertions and their failure messages. Jest Codemods can migrate from chai (see below). + +## jest-codemods + +If you are using [AVA](https://github.com/avajs/ava), [Chai](https://github.com/chaijs/chai), [Expect.js (by Automattic)](https://github.com/Automattic/expect.js), [Jasmine](https://github.com/jasmine/jasmine), [Mocha](https://github.com/mochajs/mocha), [proxyquire](https://github.com/thlorenz/proxyquire), [Should.js](https://github.com/shouldjs/should.js) or [Tape](https://github.com/substack/tape) you can use the third-party [jest-codemods](https://github.com/skovhus/jest-codemods) to do most of the dirty migration work. It runs a code transformation on your codebase using [jscodeshift](https://github.com/facebook/jscodeshift). + +To transform your existing tests, navigate to the project containing the tests and run: + +```bash +npx jest-codemods +``` + +More information can be found at [https://github.com/skovhus/jest-codemods](https://github.com/skovhus/jest-codemods). diff --git a/website/versioned_docs/version-27.0/MockFunctionAPI.md b/website/versioned_docs/version-27.0/MockFunctionAPI.md new file mode 100644 index 000000000000..fb2672b08fa6 --- /dev/null +++ b/website/versioned_docs/version-27.0/MockFunctionAPI.md @@ -0,0 +1,450 @@ +--- +id: mock-function-api +title: Mock Functions +--- + +Mock functions are also known as "spies", because they let you spy on the behavior of a function that is called indirectly by some other code, rather than only testing the output. You can create a mock function with `jest.fn()`. If no implementation is given, the mock function will return `undefined` when invoked. + +## Methods + +import TOCInline from "@theme/TOCInline" + + + +--- + +## Reference + +### `mockFn.getMockName()` + +Returns the mock name string set by calling `mockFn.mockName(value)`. + +### `mockFn.mock.calls` + +An array containing the call arguments of all calls that have been made to this mock function. Each item in the array is an array of arguments that were passed during the call. + +For example: A mock function `f` that has been called twice, with the arguments `f('arg1', 'arg2')`, and then with the arguments `f('arg3', 'arg4')`, would have a `mock.calls` array that looks like this: + +```js +[ + ['arg1', 'arg2'], + ['arg3', 'arg4'], +]; +``` + +### `mockFn.mock.results` + +An array containing the results of all calls that have been made to this mock function. Each entry in this array is an object containing a `type` property, and a `value` property. `type` will be one of the following: + +- `'return'` - Indicates that the call completed by returning normally. +- `'throw'` - Indicates that the call completed by throwing a value. +- `'incomplete'` - Indicates that the call has not yet completed. This occurs if you test the result from within the mock function itself, or from within a function that was called by the mock. + +The `value` property contains the value that was thrown or returned. `value` is undefined when `type === 'incomplete'`. + +For example: A mock function `f` that has been called three times, returning `'result1'`, throwing an error, and then returning `'result2'`, would have a `mock.results` array that looks like this: + +```js +[ + { + type: 'return', + value: 'result1', + }, + { + type: 'throw', + value: { + /* Error instance */ + }, + }, + { + type: 'return', + value: 'result2', + }, +]; +``` + +### `mockFn.mock.instances` + +An array that contains all the object instances that have been instantiated from this mock function using `new`. + +For example: A mock function that has been instantiated twice would have the following `mock.instances` array: + +```js +const mockFn = jest.fn(); + +const a = new mockFn(); +const b = new mockFn(); + +mockFn.mock.instances[0] === a; // true +mockFn.mock.instances[1] === b; // true +``` + +### `mockFn.mockClear()` + +Resets all information stored in the [`mockFn.mock.calls`](#mockfnmockcalls) and [`mockFn.mock.instances`](#mockfnmockinstances) arrays. + +Often this is useful when you want to clean up a mock's usage data between two assertions. + +Beware that `mockClear` will replace `mockFn.mock`, not just [`mockFn.mock.calls`](#mockfnmockcalls) and [`mockFn.mock.instances`](#mockfnmockinstances). You should, therefore, avoid assigning `mockFn.mock` to other variables, temporary or not, to make sure you don't access stale data. + +The [`clearMocks`](configuration#clearmocks-boolean) configuration option is available to clear mocks automatically between tests. + +### `mockFn.mockReset()` + +Does everything that [`mockFn.mockClear()`](#mockfnmockclear) does, and also removes any mocked return values or implementations. + +This is useful when you want to completely reset a _mock_ back to its initial state. (Note that resetting a _spy_ will result in a function with no return value). + +Beware that `mockReset` will replace `mockFn.mock`, not just [`mockFn.mock.calls`](#mockfnmockcalls) and [`mockFn.mock.instances`](#mockfnmockinstances). You should, therefore, avoid assigning `mockFn.mock` to other variables, temporary or not, to make sure you don't access stale data. + +### `mockFn.mockRestore()` + +Does everything that [`mockFn.mockReset()`](#mockfnmockreset) does, and also restores the original (non-mocked) implementation. + +This is useful when you want to mock functions in certain test cases and restore the original implementation in others. + +Beware that `mockFn.mockRestore` only works when the mock was created with `jest.spyOn`. Thus you have to take care of restoration yourself when manually assigning `jest.fn()`. + +The [`restoreMocks`](configuration#restoremocks-boolean) configuration option is available to restore mocks automatically between tests. + +### `mockFn.mockImplementation(fn)` + +Accepts a function that should be used as the implementation of the mock. The mock itself will still record all calls that go into and instances that come from itself – the only difference is that the implementation will also be executed when the mock is called. + +_Note: `jest.fn(implementation)` is a shorthand for `jest.fn().mockImplementation(implementation)`._ + +For example: + +```js +const mockFn = jest.fn().mockImplementation(scalar => 42 + scalar); +// or: jest.fn(scalar => 42 + scalar); + +const a = mockFn(0); +const b = mockFn(1); + +a === 42; // true +b === 43; // true + +mockFn.mock.calls[0][0] === 0; // true +mockFn.mock.calls[1][0] === 1; // true +``` + +`mockImplementation` can also be used to mock class constructors: + +```js +// SomeClass.js +module.exports = class SomeClass { + m(a, b) {} +}; + +// OtherModule.test.js +jest.mock('./SomeClass'); // this happens automatically with automocking +const SomeClass = require('./SomeClass'); +const mMock = jest.fn(); +SomeClass.mockImplementation(() => { + return { + m: mMock, + }; +}); + +const some = new SomeClass(); +some.m('a', 'b'); +console.log('Calls to m: ', mMock.mock.calls); +``` + +### `mockFn.mockImplementationOnce(fn)` + +Accepts a function that will be used as an implementation of the mock for one call to the mocked function. Can be chained so that multiple function calls produce different results. + +```js +const myMockFn = jest + .fn() + .mockImplementationOnce(cb => cb(null, true)) + .mockImplementationOnce(cb => cb(null, false)); + +myMockFn((err, val) => console.log(val)); // true + +myMockFn((err, val) => console.log(val)); // false +``` + +When the mocked function runs out of implementations defined with mockImplementationOnce, it will execute the default implementation set with `jest.fn(() => defaultValue)` or `.mockImplementation(() => defaultValue)` if they were called: + +```js +const myMockFn = jest + .fn(() => 'default') + .mockImplementationOnce(() => 'first call') + .mockImplementationOnce(() => 'second call'); + +// 'first call', 'second call', 'default', 'default' +console.log(myMockFn(), myMockFn(), myMockFn(), myMockFn()); +``` + +### `mockFn.mockName(value)` + +Accepts a string to use in test result output in place of "jest.fn()" to indicate which mock function is being referenced. + +For example: + +```js +const mockFn = jest.fn().mockName('mockedFunction'); +// mockFn(); +expect(mockFn).toHaveBeenCalled(); +``` + +Will result in this error: + +``` +expect(mockedFunction).toHaveBeenCalled() + +Expected mock function "mockedFunction" to have been called, but it was not called. +``` + +### `mockFn.mockReturnThis()` + +Syntactic sugar function for: + +```js +jest.fn(function () { + return this; +}); +``` + +### `mockFn.mockReturnValue(value)` + +Accepts a value that will be returned whenever the mock function is called. + +```js +const mock = jest.fn(); +mock.mockReturnValue(42); +mock(); // 42 +mock.mockReturnValue(43); +mock(); // 43 +``` + +### `mockFn.mockReturnValueOnce(value)` + +Accepts a value that will be returned for one call to the mock function. Can be chained so that successive calls to the mock function return different values. When there are no more `mockReturnValueOnce` values to use, calls will return a value specified by `mockReturnValue`. + +```js +const myMockFn = jest + .fn() + .mockReturnValue('default') + .mockReturnValueOnce('first call') + .mockReturnValueOnce('second call'); + +// 'first call', 'second call', 'default', 'default' +console.log(myMockFn(), myMockFn(), myMockFn(), myMockFn()); +``` + +### `mockFn.mockResolvedValue(value)` + +Syntactic sugar function for: + +```js +jest.fn().mockImplementation(() => Promise.resolve(value)); +``` + +Useful to mock async functions in async tests: + +```js +test('async test', async () => { + const asyncMock = jest.fn().mockResolvedValue(43); + + await asyncMock(); // 43 +}); +``` + +### `mockFn.mockResolvedValueOnce(value)` + +Syntactic sugar function for: + +```js +jest.fn().mockImplementationOnce(() => Promise.resolve(value)); +``` + +Useful to resolve different values over multiple async calls: + +```js +test('async test', async () => { + const asyncMock = jest + .fn() + .mockResolvedValue('default') + .mockResolvedValueOnce('first call') + .mockResolvedValueOnce('second call'); + + await asyncMock(); // first call + await asyncMock(); // second call + await asyncMock(); // default + await asyncMock(); // default +}); +``` + +### `mockFn.mockRejectedValue(value)` + +Syntactic sugar function for: + +```js +jest.fn().mockImplementation(() => Promise.reject(value)); +``` + +Useful to create async mock functions that will always reject: + +```js +test('async test', async () => { + const asyncMock = jest.fn().mockRejectedValue(new Error('Async error')); + + await asyncMock(); // throws "Async error" +}); +``` + +### `mockFn.mockRejectedValueOnce(value)` + +Syntactic sugar function for: + +```js +jest.fn().mockImplementationOnce(() => Promise.reject(value)); +``` + +Example usage: + +```js +test('async test', async () => { + const asyncMock = jest + .fn() + .mockResolvedValueOnce('first call') + .mockRejectedValueOnce(new Error('Async error')); + + await asyncMock(); // first call + await asyncMock(); // throws "Async error" +}); +``` + +## TypeScript + +Jest itself is written in [TypeScript](https://www.typescriptlang.org). + +If you are using [Create React App](https://create-react-app.dev) then the [TypeScript template](https://create-react-app.dev/docs/adding-typescript/) has everything you need to start writing tests in TypeScript. + +Otherwise, please see our [Getting Started](GettingStarted.md#using-typescript) guide for to get setup with TypeScript. + +You can see an example of using Jest with TypeScript in our [GitHub repository](https://github.com/facebook/jest/tree/master/examples/typescript). + +### `jest.MockedFunction` + +> `jest.MockedFunction` is available in the `@types/jest` module from version `24.9.0`. + +The following examples will assume you have an understanding of how [Jest mock functions work with JavaScript](MockFunctions.md). + +You can use `jest.MockedFunction` to represent a function that has been replaced by a Jest mock. + +Example using [automatic `jest.mock`](JestObjectAPI.md#jestmockmodulename-factory-options): + +```ts +// Assume `add` is imported and used within `calculate`. +import add from './add'; +import calculate from './calc'; + +jest.mock('./add'); + +// Our mock of `add` is now fully typed +const mockAdd = add as jest.MockedFunction; + +test('calculate calls add', () => { + calculate('Add', 1, 2); + + expect(mockAdd).toBeCalledTimes(1); + expect(mockAdd).toBeCalledWith(1, 2); +}); +``` + +Example using [`jest.fn`](JestObjectAPI.md#jestfnimplementation): + +```ts +// Here `add` is imported for its type +import add from './add'; +import calculate from './calc'; + +test('calculate calls add', () => { + // Create a new mock that can be used in place of `add`. + const mockAdd = jest.fn() as jest.MockedFunction; + + // Note: You can use the `jest.fn` type directly like this if you want: + // const mockAdd = jest.fn, Parameters>(); + // `jest.MockedFunction` is a more friendly shortcut. + + // Now we can easily set up mock implementations. + // All the `.mock*` API can now give you proper types for `add`. + // https://jestjs.io/docs/mock-function-api + + // `.mockImplementation` can now infer that `a` and `b` are `number` + // and that the returned value is a `number`. + mockAdd.mockImplementation((a, b) => { + // Yes, this mock is still adding two numbers but imagine this + // was a complex function we are mocking. + return a + b; + }); + + // `mockAdd` is properly typed and therefore accepted by + // anything requiring `add`. + calculate(mockAdd, 1, 2); + + expect(mockAdd).toBeCalledTimes(1); + expect(mockAdd).toBeCalledWith(1, 2); +}); +``` + +### `jest.MockedClass` + +> `jest.MockedClass` is available in the `@types/jest` module from version `24.9.0`. + +The following examples will assume you have an understanding of how [Jest mock classes work with JavaScript](Es6ClassMocks.md). + +You can use `jest.MockedClass` to represent a class that has been replaced by a Jest mock. + +Converting the [ES6 Class automatic mock example](Es6ClassMocks.md#automatic-mock) would look like this: + +```ts +import SoundPlayer from '../sound-player'; +import SoundPlayerConsumer from '../sound-player-consumer'; + +jest.mock('../sound-player'); // SoundPlayer is now a mock constructor + +const SoundPlayerMock = SoundPlayer as jest.MockedClass; + +beforeEach(() => { + // Clear all instances and calls to constructor and all methods: + SoundPlayerMock.mockClear(); +}); + +it('We can check if the consumer called the class constructor', () => { + const soundPlayerConsumer = new SoundPlayerConsumer(); + expect(SoundPlayerMock).toHaveBeenCalledTimes(1); +}); + +it('We can check if the consumer called a method on the class instance', () => { + // Show that mockClear() is working: + expect(SoundPlayerMock).not.toHaveBeenCalled(); + + const soundPlayerConsumer = new SoundPlayerConsumer(); + // Constructor should have been called again: + expect(SoundPlayerMock).toHaveBeenCalledTimes(1); + + const coolSoundFileName = 'song.mp3'; + soundPlayerConsumer.playSomethingCool(); + + // mock.instances is available with automatic mocks: + const mockSoundPlayerInstance = SoundPlayerMock.mock.instances[0]; + + // However, it will not allow access to `.mock` in TypeScript as it + // is returning `SoundPlayer`. Instead, you can check the calls to a + // method like this fully typed: + expect(SoundPlayerMock.prototype.playSoundFile.mock.calls[0][0]).toEqual( + coolSoundFileName, + ); + // Equivalent to above check: + expect(SoundPlayerMock.prototype.playSoundFile).toHaveBeenCalledWith( + coolSoundFileName, + ); + expect(SoundPlayerMock.prototype.playSoundFile).toHaveBeenCalledTimes(1); +}); +``` diff --git a/website/versioned_docs/version-27.0/MockFunctions.md b/website/versioned_docs/version-27.0/MockFunctions.md new file mode 100644 index 000000000000..3e2ccf7a3d15 --- /dev/null +++ b/website/versioned_docs/version-27.0/MockFunctions.md @@ -0,0 +1,281 @@ +--- +id: mock-functions +title: Mock Functions +--- + +Mock functions allow you to test the links between code by erasing the actual implementation of a function, capturing calls to the function (and the parameters passed in those calls), capturing instances of constructor functions when instantiated with `new`, and allowing test-time configuration of return values. + +There are two ways to mock functions: Either by creating a mock function to use in test code, or writing a [`manual mock`](ManualMocks.md) to override a module dependency. + +## Using a mock function + +Let's imagine we're testing an implementation of a function `forEach`, which invokes a callback for each item in a supplied array. + +```javascript +function forEach(items, callback) { + for (let index = 0; index < items.length; index++) { + callback(items[index]); + } +} +``` + +To test this function, we can use a mock function, and inspect the mock's state to ensure the callback is invoked as expected. + +```javascript +const mockCallback = jest.fn(x => 42 + x); +forEach([0, 1], mockCallback); + +// The mock function is called twice +expect(mockCallback.mock.calls.length).toBe(2); + +// The first argument of the first call to the function was 0 +expect(mockCallback.mock.calls[0][0]).toBe(0); + +// The first argument of the second call to the function was 1 +expect(mockCallback.mock.calls[1][0]).toBe(1); + +// The return value of the first call to the function was 42 +expect(mockCallback.mock.results[0].value).toBe(42); +``` + +## `.mock` property + +All mock functions have this special `.mock` property, which is where data about how the function has been called and what the function returned is kept. The `.mock` property also tracks the value of `this` for each call, so it is possible to inspect this as well: + +```javascript +const myMock = jest.fn(); + +const a = new myMock(); +const b = {}; +const bound = myMock.bind(b); +bound(); + +console.log(myMock.mock.instances); +// > [
, ] +``` + +These mock members are very useful in tests to assert how these functions get called, instantiated, or what they returned: + +```javascript +// The function was called exactly once +expect(someMockFunction.mock.calls.length).toBe(1); + +// The first arg of the first call to the function was 'first arg' +expect(someMockFunction.mock.calls[0][0]).toBe('first arg'); + +// The second arg of the first call to the function was 'second arg' +expect(someMockFunction.mock.calls[0][1]).toBe('second arg'); + +// The return value of the first call to the function was 'return value' +expect(someMockFunction.mock.results[0].value).toBe('return value'); + +// This function was instantiated exactly twice +expect(someMockFunction.mock.instances.length).toBe(2); + +// The object returned by the first instantiation of this function +// had a `name` property whose value was set to 'test' +expect(someMockFunction.mock.instances[0].name).toEqual('test'); +``` + +## Mock Return Values + +Mock functions can also be used to inject test values into your code during a test: + +```javascript +const myMock = jest.fn(); +console.log(myMock()); +// > undefined + +myMock.mockReturnValueOnce(10).mockReturnValueOnce('x').mockReturnValue(true); + +console.log(myMock(), myMock(), myMock(), myMock()); +// > 10, 'x', true, true +``` + +Mock functions are also very effective in code that uses a functional continuation-passing style. Code written in this style helps avoid the need for complicated stubs that recreate the behavior of the real component they're standing in for, in favor of injecting values directly into the test right before they're used. + +```javascript +const filterTestFn = jest.fn(); + +// Make the mock return `true` for the first call, +// and `false` for the second call +filterTestFn.mockReturnValueOnce(true).mockReturnValueOnce(false); + +const result = [11, 12].filter(num => filterTestFn(num)); + +console.log(result); +// > [11] +console.log(filterTestFn.mock.calls[0][0]); // 11 +console.log(filterTestFn.mock.calls[0][1]); // 12 +``` + +Most real-world examples actually involve getting ahold of a mock function on a dependent component and configuring that, but the technique is the same. In these cases, try to avoid the temptation to implement logic inside of any function that's not directly being tested. + +## Mocking Modules + +Suppose we have a class that fetches users from our API. The class uses [axios](https://github.com/axios/axios) to call the API then returns the `data` attribute which contains all the users: + +```js +// users.js +import axios from 'axios'; + +class Users { + static all() { + return axios.get('/users.json').then(resp => resp.data); + } +} + +export default Users; +``` + +Now, in order to test this method without actually hitting the API (and thus creating slow and fragile tests), we can use the `jest.mock(...)` function to automatically mock the axios module. + +Once we mock the module we can provide a `mockResolvedValue` for `.get` that returns the data we want our test to assert against. In effect, we are saying that we want `axios.get('/users.json')` to return a fake response. + +```js +// users.test.js +import axios from 'axios'; +import Users from './users'; + +jest.mock('axios'); + +test('should fetch users', () => { + const users = [{name: 'Bob'}]; + const resp = {data: users}; + axios.get.mockResolvedValue(resp); + + // or you could use the following depending on your use case: + // axios.get.mockImplementation(() => Promise.resolve(resp)) + + return Users.all().then(data => expect(data).toEqual(users)); +}); +``` + +## Mock Implementations + +Still, there are cases where it's useful to go beyond the ability to specify return values and full-on replace the implementation of a mock function. This can be done with `jest.fn` or the `mockImplementationOnce` method on mock functions. + +```javascript +const myMockFn = jest.fn(cb => cb(null, true)); + +myMockFn((err, val) => console.log(val)); +// > true +``` + +The `mockImplementation` method is useful when you need to define the default implementation of a mock function that is created from another module: + +```js +// foo.js +module.exports = function () { + // some implementation; +}; + +// test.js +jest.mock('../foo'); // this happens automatically with automocking +const foo = require('../foo'); + +// foo is a mock function +foo.mockImplementation(() => 42); +foo(); +// > 42 +``` + +When you need to recreate a complex behavior of a mock function such that multiple function calls produce different results, use the `mockImplementationOnce` method: + +```javascript +const myMockFn = jest + .fn() + .mockImplementationOnce(cb => cb(null, true)) + .mockImplementationOnce(cb => cb(null, false)); + +myMockFn((err, val) => console.log(val)); +// > true + +myMockFn((err, val) => console.log(val)); +// > false +``` + +When the mocked function runs out of implementations defined with `mockImplementationOnce`, it will execute the default implementation set with `jest.fn` (if it is defined): + +```javascript +const myMockFn = jest + .fn(() => 'default') + .mockImplementationOnce(() => 'first call') + .mockImplementationOnce(() => 'second call'); + +console.log(myMockFn(), myMockFn(), myMockFn(), myMockFn()); +// > 'first call', 'second call', 'default', 'default' +``` + +For cases where we have methods that are typically chained (and thus always need to return `this`), we have a sugary API to simplify this in the form of a `.mockReturnThis()` function that also sits on all mocks: + +```javascript +const myObj = { + myMethod: jest.fn().mockReturnThis(), +}; + +// is the same as + +const otherObj = { + myMethod: jest.fn(function () { + return this; + }), +}; +``` + +## Mock Names + +You can optionally provide a name for your mock functions, which will be displayed instead of "jest.fn()" in the test error output. Use this if you want to be able to quickly identify the mock function reporting an error in your test output. + +```javascript +const myMockFn = jest + .fn() + .mockReturnValue('default') + .mockImplementation(scalar => 42 + scalar) + .mockName('add42'); +``` + +## Custom Matchers + +Finally, in order to make it less demanding to assert how mock functions have been called, we've added some custom matcher functions for you: + +```javascript +// The mock function was called at least once +expect(mockFunc).toHaveBeenCalled(); + +// The mock function was called at least once with the specified args +expect(mockFunc).toHaveBeenCalledWith(arg1, arg2); + +// The last call to the mock function was called with the specified args +expect(mockFunc).toHaveBeenLastCalledWith(arg1, arg2); + +// All calls and the name of the mock is written as a snapshot +expect(mockFunc).toMatchSnapshot(); +``` + +These matchers are sugar for common forms of inspecting the `.mock` property. You can always do this manually yourself if that's more to your taste or if you need to do something more specific: + +```javascript +// The mock function was called at least once +expect(mockFunc.mock.calls.length).toBeGreaterThan(0); + +// The mock function was called at least once with the specified args +expect(mockFunc.mock.calls).toContainEqual([arg1, arg2]); + +// The last call to the mock function was called with the specified args +expect(mockFunc.mock.calls[mockFunc.mock.calls.length - 1]).toEqual([ + arg1, + arg2, +]); + +// The first arg of the last call to the mock function was `42` +// (note that there is no sugar helper for this specific of an assertion) +expect(mockFunc.mock.calls[mockFunc.mock.calls.length - 1][0]).toBe(42); + +// A snapshot will check that a mock was invoked the same number of times, +// in the same order, with the same arguments. It will also assert on the name. +expect(mockFunc.mock.calls).toEqual([[arg1, arg2]]); +expect(mockFunc.getMockName()).toBe('a mock name'); +``` + +For a complete list of matchers, check out the [reference docs](ExpectAPI.md). diff --git a/website/versioned_docs/version-27.0/MongoDB.md b/website/versioned_docs/version-27.0/MongoDB.md new file mode 100644 index 000000000000..3610da622673 --- /dev/null +++ b/website/versioned_docs/version-27.0/MongoDB.md @@ -0,0 +1,61 @@ +--- +id: mongodb +title: Using with MongoDB +--- + +With the [Global Setup/Teardown](Configuration.md#globalsetup-string) and [Async Test Environment](Configuration.md#testenvironment-string) APIs, Jest can work smoothly with [MongoDB](https://www.mongodb.com/). + +## Use jest-mongodb Preset + +[Jest MongoDB](https://github.com/shelfio/jest-mongodb) provides all required configuration to run your tests using MongoDB. + +1. First install `@shelf/jest-mongodb` + +``` +yarn add @shelf/jest-mongodb --dev +``` + +2. Specify preset in your Jest configuration: + +```json +{ + "preset": "@shelf/jest-mongodb" +} +``` + +3. Write your test + +```js +const {MongoClient} = require('mongodb'); + +describe('insert', () => { + let connection; + let db; + + beforeAll(async () => { + connection = await MongoClient.connect(global.__MONGO_URI__, { + useNewUrlParser: true, + }); + db = await connection.db(global.__MONGO_DB_NAME__); + }); + + afterAll(async () => { + await connection.close(); + await db.close(); + }); + + it('should insert a doc into collection', async () => { + const users = db.collection('users'); + + const mockUser = {_id: 'some-user-id', name: 'John'}; + await users.insertOne(mockUser); + + const insertedUser = await users.findOne({_id: 'some-user-id'}); + expect(insertedUser).toEqual(mockUser); + }); +}); +``` + +There's no need to load any dependencies. + +See [documentation](https://github.com/shelfio/jest-mongodb) for details (configuring MongoDB version, etc). diff --git a/website/versioned_docs/version-27.0/MoreResources.md b/website/versioned_docs/version-27.0/MoreResources.md new file mode 100644 index 000000000000..eae5e5120b9f --- /dev/null +++ b/website/versioned_docs/version-27.0/MoreResources.md @@ -0,0 +1,24 @@ +--- +id: more-resources +title: More Resources +--- + +By now you should have a good idea of how Jest can help you test your applications. If you're interested in learning more, here's some related stuff you might want to check out. + +## Browse the docs + +- Learn about [Snapshot Testing](SnapshotTesting.md), [Mock Functions](MockFunctions.md), and more in our in-depth guides. +- Migrate your existing tests to Jest by following our [migration guide](MigrationGuide.md). +- Learn how to [configure Jest](Configuration.md). +- Look at the full [API Reference](GlobalAPI.md). +- [Troubleshoot](Troubleshooting.md) problems with Jest. + +## Learn by example + +You will find a number of example test cases in the [`examples`](https://github.com/facebook/jest/tree/master/examples) folder on GitHub. You can also learn from the excellent tests used by the [React](https://github.com/facebook/react/tree/master/packages/react/src/__tests__), [Relay](https://github.com/facebook/relay/tree/master/packages/react-relay/__tests__), and [React Native](https://github.com/facebook/react-native/tree/master/Libraries/Animated/src/__tests__) projects. + +## Join the community + +Ask questions and find answers from other Jest users like you. [Reactiflux](https://discord.gg/j6FKKQQrW9) is a Discord chat where a lot of Jest discussion happens. Check out the `#testing` channel. + +Follow the [Jest Twitter account](https://twitter.com/fbjest) and [blog](/blog/) to find out what's happening in the world of Jest. diff --git a/website/versioned_docs/version-27.0/Puppeteer.md b/website/versioned_docs/version-27.0/Puppeteer.md new file mode 100644 index 000000000000..237d7dcce664 --- /dev/null +++ b/website/versioned_docs/version-27.0/Puppeteer.md @@ -0,0 +1,173 @@ +--- +id: puppeteer +title: Using with puppeteer +--- + +With the [Global Setup/Teardown](Configuration.md#globalsetup-string) and [Async Test Environment](Configuration.md#testenvironment-string) APIs, Jest can work smoothly with [puppeteer](https://github.com/GoogleChrome/puppeteer). + +> Generating code coverage for test files using Puppeteer is currently not possible if your test uses `page.$eval`, `page.$$eval` or `page.evaluate` as the passed function is executed outside of Jest's scope. Check out [issue #7962](https://github.com/facebook/jest/issues/7962#issuecomment-495272339) on GitHub for a workaround. + +## Use jest-puppeteer Preset + +[Jest Puppeteer](https://github.com/smooth-code/jest-puppeteer) provides all required configuration to run your tests using Puppeteer. + +1. First, install `jest-puppeteer` + +``` +yarn add --dev jest-puppeteer +``` + +2. Specify preset in your [Jest configuration](Configuration.md): + +```json +{ + "preset": "jest-puppeteer" +} +``` + +3. Write your test + +```js +describe('Google', () => { + beforeAll(async () => { + await page.goto('https://google.com'); + }); + + it('should be titled "Google"', async () => { + await expect(page.title()).resolves.toMatch('Google'); + }); +}); +``` + +There's no need to load any dependencies. Puppeteer's `page` and `browser` classes will automatically be exposed + +See [documentation](https://github.com/smooth-code/jest-puppeteer). + +## Custom example without jest-puppeteer preset + +You can also hook up puppeteer from scratch. The basic idea is to: + +1. launch & file the websocket endpoint of puppeteer with Global Setup +2. connect to puppeteer from each Test Environment +3. close puppeteer with Global Teardown + +Here's an example of the GlobalSetup script + +```js +// setup.js +const fs = require('fs'); +const os = require('os'); +const path = require('path'); +const mkdirp = require('mkdirp'); +const puppeteer = require('puppeteer'); + +const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup'); + +module.exports = async function () { + const browser = await puppeteer.launch(); + // store the browser instance so we can teardown it later + // this global is only available in the teardown but not in TestEnvironments + global.__BROWSER_GLOBAL__ = browser; + + // use the file system to expose the wsEndpoint for TestEnvironments + mkdirp.sync(DIR); + fs.writeFileSync(path.join(DIR, 'wsEndpoint'), browser.wsEndpoint()); +}; +``` + +Then we need a custom Test Environment for puppeteer + +```js +// puppeteer_environment.js +const fs = require('fs'); +const os = require('os'); +const path = require('path'); +const puppeteer = require('puppeteer'); +const NodeEnvironment = require('jest-environment-node'); + +const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup'); + +class PuppeteerEnvironment extends NodeEnvironment { + constructor(config) { + super(config); + } + + async setup() { + await super.setup(); + // get the wsEndpoint + const wsEndpoint = fs.readFileSync(path.join(DIR, 'wsEndpoint'), 'utf8'); + if (!wsEndpoint) { + throw new Error('wsEndpoint not found'); + } + + // connect to puppeteer + this.global.__BROWSER__ = await puppeteer.connect({ + browserWSEndpoint: wsEndpoint, + }); + } + + async teardown() { + await super.teardown(); + } + + getVmContext() { + return super.getVmContext(); + } +} + +module.exports = PuppeteerEnvironment; +``` + +Finally, we can close the puppeteer instance and clean-up the file + +```js +// teardown.js +const os = require('os'); +const path = require('path'); +const rimraf = require('rimraf'); + +const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup'); +module.exports = async function () { + // close the browser instance + await global.__BROWSER_GLOBAL__.close(); + + // clean-up the wsEndpoint file + rimraf.sync(DIR); +}; +``` + +With all the things set up, we can now write our tests like this: + +```js +// test.js +const timeout = 5000; + +describe( + '/ (Home Page)', + () => { + let page; + beforeAll(async () => { + page = await global.__BROWSER__.newPage(); + await page.goto('https://google.com'); + }, timeout); + + it('should load without error', async () => { + const text = await page.evaluate(() => document.body.textContent); + expect(text).toContain('google'); + }); + }, + timeout, +); +``` + +Finally, set `jest.config.js` to read from these files. (The `jest-puppeteer` preset does something like this under the hood.) + +```js +module.exports = { + globalSetup: './setup.js', + globalTeardown: './teardown.js', + testEnvironment: './puppeteer_environment.js', +}; +``` + +Here's the code of [full working example](https://github.com/xfumihiro/jest-puppeteer-example). diff --git a/website/versioned_docs/version-27.0/SetupAndTeardown.md b/website/versioned_docs/version-27.0/SetupAndTeardown.md new file mode 100644 index 000000000000..464e9ecccab0 --- /dev/null +++ b/website/versioned_docs/version-27.0/SetupAndTeardown.md @@ -0,0 +1,190 @@ +--- +id: setup-teardown +title: Setup and Teardown +--- + +Often while writing tests you have some setup work that needs to happen before tests run, and you have some finishing work that needs to happen after tests run. Jest provides helper functions to handle this. + +## Repeating Setup For Many Tests + +If you have some work you need to do repeatedly for many tests, you can use `beforeEach` and `afterEach`. + +For example, let's say that several tests interact with a database of cities. You have a method `initializeCityDatabase()` that must be called before each of these tests, and a method `clearCityDatabase()` that must be called after each of these tests. You can do this with: + +```js +beforeEach(() => { + initializeCityDatabase(); +}); + +afterEach(() => { + clearCityDatabase(); +}); + +test('city database has Vienna', () => { + expect(isCity('Vienna')).toBeTruthy(); +}); + +test('city database has San Juan', () => { + expect(isCity('San Juan')).toBeTruthy(); +}); +``` + +`beforeEach` and `afterEach` can handle asynchronous code in the same ways that [tests can handle asynchronous code](TestingAsyncCode.md) - they can either take a `done` parameter or return a promise. For example, if `initializeCityDatabase()` returned a promise that resolved when the database was initialized, we would want to return that promise: + +```js +beforeEach(() => { + return initializeCityDatabase(); +}); +``` + +## One-Time Setup + +In some cases, you only need to do setup once, at the beginning of a file. This can be especially bothersome when the setup is asynchronous, so you can't do it inline. Jest provides `beforeAll` and `afterAll` to handle this situation. + +For example, if both `initializeCityDatabase` and `clearCityDatabase` returned promises, and the city database could be reused between tests, we could change our test code to: + +```js +beforeAll(() => { + return initializeCityDatabase(); +}); + +afterAll(() => { + return clearCityDatabase(); +}); + +test('city database has Vienna', () => { + expect(isCity('Vienna')).toBeTruthy(); +}); + +test('city database has San Juan', () => { + expect(isCity('San Juan')).toBeTruthy(); +}); +``` + +## Scoping + +By default, the `before` and `after` blocks apply to every test in a file. You can also group tests together using a `describe` block. When they are inside a `describe` block, the `before` and `after` blocks only apply to the tests within that `describe` block. + +For example, let's say we had not just a city database, but also a food database. We could do different setup for different tests: + +```js +// Applies to all tests in this file +beforeEach(() => { + return initializeCityDatabase(); +}); + +test('city database has Vienna', () => { + expect(isCity('Vienna')).toBeTruthy(); +}); + +test('city database has San Juan', () => { + expect(isCity('San Juan')).toBeTruthy(); +}); + +describe('matching cities to foods', () => { + // Applies only to tests in this describe block + beforeEach(() => { + return initializeFoodDatabase(); + }); + + test('Vienna <3 veal', () => { + expect(isValidCityFoodPair('Vienna', 'Wiener Schnitzel')).toBe(true); + }); + + test('San Juan <3 plantains', () => { + expect(isValidCityFoodPair('San Juan', 'Mofongo')).toBe(true); + }); +}); +``` + +Note that the top-level `beforeEach` is executed before the `beforeEach` inside the `describe` block. It may help to illustrate the order of execution of all hooks. + +```js +beforeAll(() => console.log('1 - beforeAll')); +afterAll(() => console.log('1 - afterAll')); +beforeEach(() => console.log('1 - beforeEach')); +afterEach(() => console.log('1 - afterEach')); +test('', () => console.log('1 - test')); +describe('Scoped / Nested block', () => { + beforeAll(() => console.log('2 - beforeAll')); + afterAll(() => console.log('2 - afterAll')); + beforeEach(() => console.log('2 - beforeEach')); + afterEach(() => console.log('2 - afterEach')); + test('', () => console.log('2 - test')); +}); + +// 1 - beforeAll +// 1 - beforeEach +// 1 - test +// 1 - afterEach +// 2 - beforeAll +// 1 - beforeEach +// 2 - beforeEach +// 2 - test +// 2 - afterEach +// 1 - afterEach +// 2 - afterAll +// 1 - afterAll +``` + +## Order of execution of describe and test blocks + +Jest executes all describe handlers in a test file _before_ it executes any of the actual tests. This is another reason to do setup and teardown inside `before*` and `after*` handlers rather than inside the describe blocks. Once the describe blocks are complete, by default Jest runs all the tests serially in the order they were encountered in the collection phase, waiting for each to finish and be tidied up before moving on. + +Consider the following illustrative test file and output: + +```js +describe('outer', () => { + console.log('describe outer-a'); + + describe('describe inner 1', () => { + console.log('describe inner 1'); + test('test 1', () => { + console.log('test for describe inner 1'); + expect(true).toEqual(true); + }); + }); + + console.log('describe outer-b'); + + test('test 1', () => { + console.log('test for describe outer'); + expect(true).toEqual(true); + }); + + describe('describe inner 2', () => { + console.log('describe inner 2'); + test('test for describe inner 2', () => { + console.log('test for describe inner 2'); + expect(false).toEqual(false); + }); + }); + + console.log('describe outer-c'); +}); + +// describe outer-a +// describe inner 1 +// describe outer-b +// describe inner 2 +// describe outer-c +// test for describe inner 1 +// test for describe outer +// test for describe inner 2 +``` + +## General Advice + +If a test is failing, one of the first things to check should be whether the test is failing when it's the only test that runs. To run only one test with Jest, temporarily change that `test` command to a `test.only`: + +```js +test.only('this will be the only test that runs', () => { + expect(true).toBe(false); +}); + +test('this test will not run', () => { + expect('A').toBe('A'); +}); +``` + +If you have a test that often fails when it's run as part of a larger suite, but doesn't fail when you run it alone, it's a good bet that something from a different test is interfering with this one. You can often fix this by clearing some shared state with `beforeEach`. If you're not sure whether some shared state is being modified, you can also try a `beforeEach` that logs data. diff --git a/website/versioned_docs/version-27.0/SnapshotTesting.md b/website/versioned_docs/version-27.0/SnapshotTesting.md new file mode 100644 index 000000000000..1d7947fc7f75 --- /dev/null +++ b/website/versioned_docs/version-27.0/SnapshotTesting.md @@ -0,0 +1,314 @@ +--- +id: snapshot-testing +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 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 + +A similar approach can be taken when it comes to testing your React components. Instead of rendering the graphical UI, which would require building the entire app, you can use a test renderer to quickly generate a serializable value for your React tree. Consider this [example test](https://github.com/facebook/jest/blob/master/examples/snapshot/__tests__/link.react.test.js) for a [Link component](https://github.com/facebook/jest/blob/master/examples/snapshot/Link.react.js): + +```tsx +import React from 'react'; +import renderer from 'react-test-renderer'; +import Link from '../Link.react'; + +it('renders correctly', () => { + const tree = renderer + .create(Facebook) + .toJSON(); + expect(tree).toMatchSnapshot(); +}); +``` + +The first time this test is run, Jest creates a [snapshot file](https://github.com/facebook/jest/blob/master/examples/snapshot/__tests__/__snapshots__/link.react.test.js.snap) that looks like this: + +```javascript +exports[`renders correctly 1`] = ` + + Facebook + +`; +``` + +The snapshot artifact should be committed alongside code changes, and reviewed as part of your code review process. Jest uses [pretty-format](https://github.com/facebook/jest/tree/master/packages/pretty-format) to make snapshots human-readable during code review. On subsequent test runs, Jest will compare the rendered output with the previous snapshot. If they match, the test will pass. If they don't match, either the test runner found a bug in your code (in the `` component in this case) that should be fixed, or the implementation has changed and the snapshot needs to be updated. + +> Note: The snapshot is directly scoped to the data you render – in our example the `` component with `page` prop passed to it. This implies that even if any other file has missing props (Say, `App.js`) in the `` component, it will still pass the test as the test doesn't know the usage of `` component and it's scoped only to the `Link.react.js`. Also, Rendering the same component with different props in other snapshot tests will not affect the first one, as the tests don't know about each other. + +More information on how snapshot testing works and why we built it can be found on the [release blog post](/blog/2016/07/27/jest-14). We recommend reading [this blog post](http://benmccormick.org/2016/09/19/testing-with-jest-snapshots-first-impressions/) to get a good sense of when you should use snapshot testing. We also recommend watching this [egghead video](https://egghead.io/lessons/javascript-use-jest-s-snapshot-testing-feature?pl=testing-javascript-with-jest-a36c4074) on Snapshot Testing with Jest. + +### Updating Snapshots + +It's straightforward to spot when a snapshot test fails after a bug has been introduced. When that happens, go ahead and fix the issue and make sure your snapshot tests are passing again. Now, let's talk about the case when a snapshot test is failing due to an intentional implementation change. + +One such situation can arise if we intentionally change the address the Link component in our example is pointing to. + +```tsx +// Updated test case with a Link to a different address +it('renders correctly', () => { + const tree = renderer + .create(Instagram) + .toJSON(); + expect(tree).toMatchSnapshot(); +}); +``` + +In that case, Jest will print this output: + +![](/img/content/failedSnapshotTest.png) + +Since we just updated our component to point to a different address, it's reasonable to expect changes in the snapshot for this component. Our snapshot test case is failing because the snapshot for our updated component no longer matches the snapshot artifact for this test case. + +To resolve this, we will need to update our snapshot artifacts. You can run Jest with a flag that will tell it to re-generate snapshots: + +```bash +jest --updateSnapshot +``` + +Go ahead and accept the changes by running the above command. You may also use the equivalent single-character `-u` flag to re-generate snapshots if you prefer. This will re-generate snapshot artifacts for all failing snapshot tests. If we had any additional failing snapshot tests due to an unintentional bug, we would need to fix the bug before re-generating snapshots to avoid recording snapshots of the buggy behavior. + +If you'd like to limit which snapshot test cases get re-generated, you can pass an additional `--testNamePattern` flag to re-record snapshots only for those tests that match the pattern. + +You can try out this functionality by cloning the [snapshot example](https://github.com/facebook/jest/tree/master/examples/snapshot), modifying the `Link` component, and running Jest. + +### Interactive Snapshot Mode + +Failed snapshots can also be updated interactively in watch mode: + +![](/img/content/interactiveSnapshot.png) + +Once you enter Interactive Snapshot Mode, Jest will step you through the failed snapshots one test at a time and give you the opportunity to review the failed output. + +From here you can choose to update that snapshot or skip to the next: + +![](/img/content/interactiveSnapshotUpdate.gif) + +Once you're finished, Jest will give you a summary before returning back to watch mode: + +![](/img/content/interactiveSnapshotDone.png) + +### Inline Snapshots + +Inline snapshots behave identically to external snapshots (`.snap` files), except the snapshot values are written automatically back into the source code. This means you can get the benefits of automatically generated snapshots without having to switch to an external file to make sure the correct value was written. + +**Example:** + +First, you write a test, calling `.toMatchInlineSnapshot()` with no arguments: + +```tsx +it('renders correctly', () => { + const tree = renderer + .create(Example Site) + .toJSON(); + expect(tree).toMatchInlineSnapshot(); +}); +``` + +The next time you run Jest, `tree` will be evaluated, and a snapshot will be written as an argument to `toMatchInlineSnapshot`: + +```tsx +it('renders correctly', () => { + const tree = renderer + .create(Example Site) + .toJSON(); + expect(tree).toMatchInlineSnapshot(` + + Example Site + +`); +}); +``` + +That's all there is to it! You can even update the snapshots with `--updateSnapshot` or using the `u` key in `--watch` mode. + +### Property Matchers + +Often there are fields in the object you want to snapshot which are generated (like IDs and Dates). If you try to snapshot these objects, they will force the snapshot to fail on every run: + +```javascript +it('will fail every time', () => { + const user = { + createdAt: new Date(), + id: Math.floor(Math.random() * 20), + name: 'LeBron James', + }; + + expect(user).toMatchSnapshot(); +}); + +// Snapshot +exports[`will fail every time 1`] = ` +Object { + "createdAt": 2018-05-19T23:36:09.816Z, + "id": 3, + "name": "LeBron James", +} +`; +``` + +For these cases, Jest allows providing an asymmetric matcher for any property. These matchers are checked before the snapshot is written or tested, and then saved to the snapshot file instead of the received value: + +```javascript +it('will check the matchers and pass', () => { + const user = { + createdAt: new Date(), + id: Math.floor(Math.random() * 20), + name: 'LeBron James', + }; + + expect(user).toMatchSnapshot({ + createdAt: expect.any(Date), + id: expect.any(Number), + }); +}); + +// Snapshot +exports[`will check the matchers and pass 1`] = ` +Object { + "createdAt": Any, + "id": Any, + "name": "LeBron James", +} +`; +``` + +Any given value that is not a matcher will be checked exactly and saved to the snapshot: + +```javascript +it('will check the values and pass', () => { + const user = { + createdAt: new Date(), + name: 'Bond... James Bond', + }; + + expect(user).toMatchSnapshot({ + createdAt: expect.any(Date), + name: 'Bond... James Bond', + }); +}); + +// Snapshot +exports[`will check the values and pass 1`] = ` +Object { + "createdAt": Any, + "name": 'Bond... James Bond', +} +`; +``` + +## Best Practices + +Snapshots are a fantastic tool for identifying unexpected interface changes within your application – whether that interface is an API response, UI, logs, or error messages. As with any testing strategy, there are some best-practices you should be aware of, and guidelines you should follow, in order to use them effectively. + +### 1. Treat snapshots as code + +Commit snapshots and review them as part of your regular code review process. This means treating snapshots as you would any other type of test or code in your project. + +Ensure that your snapshots are readable by keeping them focused, short, and by using tools that enforce these stylistic conventions. + +As mentioned previously, Jest uses [`pretty-format`](https://yarnpkg.com/en/package/pretty-format) to make snapshots human-readable, but you may find it useful to introduce additional tools, like [`eslint-plugin-jest`](https://yarnpkg.com/en/package/eslint-plugin-jest) with its [`no-large-snapshots`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/no-large-snapshots.md) option, or [`snapshot-diff`](https://yarnpkg.com/en/package/snapshot-diff) with its component snapshot comparison feature, to promote committing short, focused assertions. + +The goal is to make it easy to review snapshots in pull requests, and fight against the habit of regenerating snapshots when test suites fail instead of examining the root causes of their failure. + +### 2. Tests should be deterministic + +Your tests should be deterministic. Running the same tests multiple times on a component that has not changed should produce the same results every time. You're responsible for making sure your generated snapshots do not include platform specific or other non-deterministic data. + +For example, if you have a [Clock](https://github.com/facebook/jest/blob/master/examples/snapshot/Clock.react.js) component that uses `Date.now()`, the snapshot generated from this component will be different every time the test case is run. In this case we can [mock the Date.now() method](MockFunctions.md) to return a consistent value every time the test is run: + +```js +Date.now = jest.fn(() => 1482363367071); +``` + +Now, every time the snapshot test case runs, `Date.now()` will return `1482363367071` consistently. This will result in the same snapshot being generated for this component regardless of when the test is run. + +### 3. Use descriptive snapshot names + +Always strive to use descriptive test and/or snapshot names for snapshots. The best names describe the expected snapshot content. This makes it easier for reviewers to verify the snapshots during review, and for anyone to know whether or not an outdated snapshot is the correct behavior before updating. + +For example, compare: + +```js +exports[` should handle some test case`] = `null`; + +exports[` should handle some other test case`] = ` +
+ Alan Turing +
+`; +``` + +To: + +```js +exports[` should render null`] = `null`; + +exports[` should render Alan Turing`] = ` +
+ Alan Turing +
+`; +``` + +Since the later describes exactly what's expected in the output, it's more clear to see when it's wrong: + +```js +exports[` should render null`] = ` +
+ Alan Turing +
+`; + +exports[` should render Alan Turing`] = `null`; +``` + +## Frequently Asked Questions + +### Are snapshots written automatically on Continuous Integration (CI) systems? + +No, as of Jest 20, snapshots in Jest are not automatically written when Jest is run in a CI system without explicitly passing `--updateSnapshot`. It is expected that all snapshots are part of the code that is run on CI and since new snapshots automatically pass, they should not pass a test run on a CI system. It is recommended to always commit all snapshots and to keep them in version control. + +### Should snapshot files be committed? + +Yes, all snapshot files should be committed alongside the modules they are covering and their tests. They should be considered part of a test, similar to the value of any other assertion in Jest. In fact, snapshots represent the state of the source modules at any given point in time. In this way, when the source modules are modified, Jest can tell what changed from the previous version. It can also provide a lot of additional context during code review in which reviewers can study your changes better. + +### Does snapshot testing only work with React components? + +[React](TutorialReact.md) and [React Native](TutorialReactNative.md) components are a good use case for snapshot testing. However, snapshots can capture any serializable value and should be used anytime the goal is testing whether the output is correct. The Jest repository contains many examples of testing the output of Jest itself, the output of Jest's assertion library as well as log messages from various parts of the Jest codebase. See an example of [snapshotting CLI output](https://github.com/facebook/jest/blob/master/e2e/__tests__/console.test.ts) in the Jest repo. + +### What's the difference between snapshot testing and visual regression testing? + +Snapshot testing and visual regression testing are two distinct ways of testing UIs, and they serve different purposes. Visual regression testing tools take screenshots of web pages and compare the resulting images pixel by pixel. With Snapshot testing values are serialized, stored within text files, and compared using a diff algorithm. There are different trade-offs to consider and we listed the reasons why snapshot testing was built in the [Jest blog](/blog/2016/07/27/jest-14#why-snapshot-testing). + +### Does snapshot testing replace unit testing? + +Snapshot testing is only one of more than 20 assertions that ship with Jest. The aim of snapshot testing is not to replace existing unit tests, but to provide additional value and make testing painless. In some scenarios, snapshot testing can potentially remove the need for unit testing for a particular set of functionalities (e.g. React components), but they can work together as well. + +### What is the performance of snapshot testing regarding speed and size of the generated files? + +Jest has been rewritten with performance in mind, and snapshot testing is not an exception. Since snapshots are stored within text files, this way of testing is fast and reliable. Jest generates a new file for each test file that invokes the `toMatchSnapshot` matcher. The size of the snapshots is pretty small: For reference, the size of all snapshot files in the Jest codebase itself is less than 300 KB. + +### How do I resolve conflicts within snapshot files? + +Snapshot files must always represent the current state of the modules they are covering. Therefore, if you are merging two branches and encounter a conflict in the snapshot files, you can either resolve the conflict manually or update the snapshot file by running Jest and inspecting the result. + +### Is it possible to apply test-driven development principles with snapshot testing? + +Although it is possible to write snapshot files manually, that is usually not approachable. Snapshots help to figure out whether the output of the modules covered by tests is changed, rather than giving guidance to design the code in the first place. + +### Does code coverage work with snapshot testing? + +Yes, as well as with any other test. diff --git a/website/versioned_docs/version-27.0/TestingAsyncCode.md b/website/versioned_docs/version-27.0/TestingAsyncCode.md new file mode 100644 index 000000000000..2352de9a38c3 --- /dev/null +++ b/website/versioned_docs/version-27.0/TestingAsyncCode.md @@ -0,0 +1,129 @@ +--- +id: asynchronous +title: Testing Asynchronous Code +--- + +It's common in JavaScript for code to run asynchronously. When you have code that runs asynchronously, Jest needs to know when the code it is testing has completed, before it can move on to another test. Jest has several ways to handle this. + +## Callbacks + +The most common asynchronous pattern is callbacks. + +For example, let's say that you have a `fetchData(callback)` function that fetches some data and calls `callback(data)` when it is complete. You want to test that this returned data is the string `'peanut butter'`. + +By default, Jest tests complete once they reach the end of their execution. That means this test will _not_ work as intended: + +```js +// Don't do this! +test('the data is peanut butter', () => { + function callback(data) { + expect(data).toBe('peanut butter'); + } + + fetchData(callback); +}); +``` + +The problem is that the test will complete as soon as `fetchData` completes, before ever calling the callback. + +There is an alternate form of `test` that fixes this. Instead of putting the test in a function with an empty argument, use a single argument called `done`. Jest will wait until the `done` callback is called before finishing the test. + +```js +test('the data is peanut butter', done => { + function callback(data) { + try { + expect(data).toBe('peanut butter'); + done(); + } catch (error) { + done(error); + } + } + + fetchData(callback); +}); +``` + +If `done()` is never called, the test will fail (with timeout error), which is what you want to happen. + +If the `expect` statement fails, it throws an error and `done()` is not called. If we want to see in the test log why it failed, we have to wrap `expect` in a `try` block and pass the error in the `catch` block to `done`. Otherwise, we end up with an opaque timeout error that doesn't show what value was received by `expect(data)`. + +## Promises + +If your code uses promises, there is a more straightforward way to handle asynchronous tests. Return a promise from your test, and Jest will wait for that promise to resolve. If the promise is rejected, the test will automatically fail. + +For example, let's say that `fetchData`, instead of using a callback, returns a promise that is supposed to resolve to the string `'peanut butter'`. We could test it with: + +```js +test('the data is peanut butter', () => { + return fetchData().then(data => { + expect(data).toBe('peanut butter'); + }); +}); +``` + +Be sure to return the promise - if you omit this `return` statement, your test will complete before the promise returned from `fetchData` resolves and then() has a chance to execute the callback. + +If you expect a promise to be rejected, use the `.catch` method. Make sure to add `expect.assertions` to verify that a certain number of assertions are called. Otherwise, a fulfilled promise would not fail the test. + +```js +test('the fetch fails with an error', () => { + expect.assertions(1); + return fetchData().catch(e => expect(e).toMatch('error')); +}); +``` + +## `.resolves` / `.rejects` + +You can also use the `.resolves` matcher in your expect statement, and Jest will wait for that promise to resolve. If the promise is rejected, the test will automatically fail. + +```js +test('the data is peanut butter', () => { + return expect(fetchData()).resolves.toBe('peanut butter'); +}); +``` + +Be sure to return the assertion—if you omit this `return` statement, your test will complete before the promise returned from `fetchData` is resolved and then() has a chance to execute the callback. + +If you expect a promise to be rejected, use the `.rejects` matcher. It works analogically to the `.resolves` matcher. If the promise is fulfilled, the test will automatically fail. + +```js +test('the fetch fails with an error', () => { + return expect(fetchData()).rejects.toMatch('error'); +}); +``` + +## Async/Await + +Alternatively, you can use `async` and `await` in your tests. To write an async test, use the `async` keyword in front of the function passed to `test`. For example, the same `fetchData` scenario can be tested with: + +```js +test('the data is peanut butter', async () => { + const data = await fetchData(); + expect(data).toBe('peanut butter'); +}); + +test('the fetch fails with an error', async () => { + expect.assertions(1); + try { + await fetchData(); + } catch (e) { + expect(e).toMatch('error'); + } +}); +``` + +You can combine `async` and `await` with `.resolves` or `.rejects`. + +```js +test('the data is peanut butter', async () => { + await expect(fetchData()).resolves.toBe('peanut butter'); +}); + +test('the fetch fails with an error', async () => { + await expect(fetchData()).rejects.toMatch('error'); +}); +``` + +In these cases, `async` and `await` are effectively syntactic sugar for the same logic as the promises example uses. + +None of these forms is particularly superior to the others, and you can mix and match them across a codebase or even in a single file. It just depends on which style you feel makes your tests simpler. diff --git a/website/versioned_docs/version-27.0/TestingFrameworks.md b/website/versioned_docs/version-27.0/TestingFrameworks.md new file mode 100644 index 000000000000..5b085c8658a3 --- /dev/null +++ b/website/versioned_docs/version-27.0/TestingFrameworks.md @@ -0,0 +1,45 @@ +--- +id: testing-frameworks +title: Testing Web Frameworks +--- + +Jest is a universal testing platform, with the ability to adapt to any JavaScript library or framework. In this section, we'd like to link to community posts and articles about integrating Jest into popular JS libraries. + +## React + +- [Testing ReactJS components with Jest](https://testing-library.com/docs/react-testing-library/example-intro) by Kent C. Dodds ([@kentcdodds](https://twitter.com/kentcdodds)) + +## Vue.js + +- [Testing Vue.js components with Jest](https://alexjoverm.github.io/series/Unit-Testing-Vue-js-Components-with-the-Official-Vue-Testing-Tools-and-Jest/) by Alex Jover Morales ([@alexjoverm](https://twitter.com/alexjoverm)) +- [Jest for all: Episode 1 — Vue.js](https://medium.com/@kentaromiura_the_js_guy/jest-for-all-episode-1-vue-js-d616bccbe186#.d573vrce2) by Cristian Carlesso ([@kentaromiura](https://twitter.com/kentaromiura)) + +## AngularJS + +- [Testing an AngularJS app with Jest](https://medium.com/aya-experience/testing-an-angularjs-app-with-jest-3029a613251) by Matthieu Lux ([@Swiip](https://twitter.com/Swiip)) +- [Running AngularJS Tests with Jest](https://engineering.talentpair.com/running-angularjs-tests-with-jest-49d0cc9c6d26) by Ben Brandt ([@benjaminbrandt](https://twitter.com/benjaminbrandt)) +- [AngularJS Unit Tests with Jest Actions (Traditional Chinese)](https://dwatow.github.io/2019/08-14-angularjs/angular-jest/?fbclid=IwAR2SrqYg_o6uvCQ79FdNPeOxs86dUqB6pPKgd9BgnHt1kuIDRyRM-ch11xg) by Chris Wang ([@dwatow](https://github.com/dwatow)) + +## Angular + +- [Testing Angular faster with Jest](https://www.xfive.co/blog/testing-angular-faster-jest/) by Michał Pierzchała ([@thymikee](https://twitter.com/thymikee)) + +## MobX + +- [How to Test React and MobX with Jest](https://semaphoreci.com/community/tutorials/how-to-test-react-and-mobx-with-jest) by Will Stern ([@willsterndev](https://twitter.com/willsterndev)) + +## Redux + +- [Writing Tests](https://redux.js.org/recipes/writing-tests) by Redux docs + +## Express.js + +- [How to test Express.js with Jest and Supertest](http://www.albertgao.xyz/2017/05/24/how-to-test-expressjs-with-jest-and-supertest/) by Albert Gao ([@albertgao](https://twitter.com/albertgao)) + +## GatsbyJS + +- [Unit Testing](https://www.gatsbyjs.org/docs/unit-testing/) by GatsbyJS docs + +## Hapi.js + +- [Testing Hapi.js With Jest](http://niralar.com/testing-hapi-js-with-jest/) by Niralar ([Sivasankar](http://sivasankar.in/)) diff --git a/website/versioned_docs/version-27.0/TimerMocks.md b/website/versioned_docs/version-27.0/TimerMocks.md new file mode 100644 index 000000000000..5170e399a977 --- /dev/null +++ b/website/versioned_docs/version-27.0/TimerMocks.md @@ -0,0 +1,178 @@ +--- +id: timer-mocks +title: Timer Mocks +--- + +The native timer functions (i.e., `setTimeout`, `setInterval`, `clearTimeout`, `clearInterval`) are less than ideal for a testing environment since they depend on real time to elapse. Jest can swap out timers with functions that allow you to control the passage of time. [Great Scott!](https://www.youtube.com/watch?v=QZoJ2Pt27BY) + +```javascript +// timerGame.js +'use strict'; + +function timerGame(callback) { + console.log('Ready....go!'); + setTimeout(() => { + console.log("Time's up -- stop!"); + callback && callback(); + }, 1000); +} + +module.exports = timerGame; +``` + +```javascript +// __tests__/timerGame-test.js +'use strict'; + +jest.useFakeTimers(); + +test('waits 1 second before ending the game', () => { + const timerGame = require('../timerGame'); + timerGame(); + + expect(setTimeout).toHaveBeenCalledTimes(1); + expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 1000); +}); +``` + +Here we enable fake timers by calling `jest.useFakeTimers()`. This mocks out `setTimeout` and other timer functions with mock functions. Timers can be restored to their normal behavior with `jest.useRealTimers()`. + +While you can call `jest.useFakeTimers()` or `jest.useRealTimers()` from anywhere (top level, inside an `it` block, etc.), it is a **global operation** and will affect other tests within the same file. Additionally, you need to call `jest.useFakeTimers()` to reset internal counters before each test. If you plan to not use fake timers in all your tests, you will want to clean up manually, as otherwise the faked timers will leak across tests: + +```javascript +afterEach(() => { + jest.useRealTimers(); +}); + +test('do something with fake timers', () => { + jest.useFakeTimers(); + // ... +}); + +test('do something with real timers', () => { + // ... +}); +``` + +## Run All Timers + +Another test we might want to write for this module is one that asserts that the callback is called after 1 second. To do this, we're going to use Jest's timer control APIs to fast-forward time right in the middle of the test: + +```javascript +test('calls the callback after 1 second', () => { + const timerGame = require('../timerGame'); + const callback = jest.fn(); + + timerGame(callback); + + // At this point in time, the callback should not have been called yet + expect(callback).not.toBeCalled(); + + // Fast-forward until all timers have been executed + jest.runAllTimers(); + + // Now our callback should have been called! + expect(callback).toBeCalled(); + expect(callback).toHaveBeenCalledTimes(1); +}); +``` + +## Run Pending Timers + +There are also scenarios where you might have a recursive timer -- that is a timer that sets a new timer in its own callback. For these, running all the timers would be an endless loop… so something like `jest.runAllTimers()` is not desirable. For these cases you might use `jest.runOnlyPendingTimers()`: + +```javascript +// infiniteTimerGame.js +'use strict'; + +function infiniteTimerGame(callback) { + console.log('Ready....go!'); + + setTimeout(() => { + console.log("Time's up! 10 seconds before the next game starts..."); + callback && callback(); + + // Schedule the next game in 10 seconds + setTimeout(() => { + infiniteTimerGame(callback); + }, 10000); + }, 1000); +} + +module.exports = infiniteTimerGame; +``` + +```javascript +// __tests__/infiniteTimerGame-test.js +'use strict'; + +jest.useFakeTimers(); + +describe('infiniteTimerGame', () => { + test('schedules a 10-second timer after 1 second', () => { + const infiniteTimerGame = require('../infiniteTimerGame'); + const callback = jest.fn(); + + infiniteTimerGame(callback); + + // At this point in time, there should have been a single call to + // setTimeout to schedule the end of the game in 1 second. + expect(setTimeout).toHaveBeenCalledTimes(1); + expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 1000); + + // Fast forward and exhaust only currently pending timers + // (but not any new timers that get created during that process) + jest.runOnlyPendingTimers(); + + // At this point, our 1-second timer should have fired it's callback + expect(callback).toBeCalled(); + + // And it should have created a new timer to start the game over in + // 10 seconds + expect(setTimeout).toHaveBeenCalledTimes(2); + expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 10000); + }); +}); +``` + +## Advance Timers by Time + +Another possibility is use `jest.advanceTimersByTime(msToRun)`. When this API is called, all timers are advanced by `msToRun` milliseconds. All pending "macro-tasks" that have been queued via setTimeout() or setInterval(), and would be executed during this time frame, will be executed. Additionally, if those macro-tasks schedule new macro-tasks that would be executed within the same time frame, those will be executed until there are no more macro-tasks remaining in the queue that should be run within msToRun milliseconds. + +```javascript +// timerGame.js +'use strict'; + +function timerGame(callback) { + console.log('Ready....go!'); + setTimeout(() => { + console.log("Time's up -- stop!"); + callback && callback(); + }, 1000); +} + +module.exports = timerGame; +``` + +```javascript +it('calls the callback after 1 second via advanceTimersByTime', () => { + const timerGame = require('../timerGame'); + const callback = jest.fn(); + + timerGame(callback); + + // At this point in time, the callback should not have been called yet + expect(callback).not.toBeCalled(); + + // Fast-forward until all timers have been executed + jest.advanceTimersByTime(1000); + + // Now our callback should have been called! + expect(callback).toBeCalled(); + expect(callback).toHaveBeenCalledTimes(1); +}); +``` + +Lastly, it may occasionally be useful in some tests to be able to clear all of the pending timers. For this, we have `jest.clearAllTimers()`. + +The code for this example is available at [examples/timer](https://github.com/facebook/jest/tree/master/examples/timer). diff --git a/website/versioned_docs/version-27.0/Troubleshooting.md b/website/versioned_docs/version-27.0/Troubleshooting.md new file mode 100644 index 000000000000..52ca0f3358e4 --- /dev/null +++ b/website/versioned_docs/version-27.0/Troubleshooting.md @@ -0,0 +1,210 @@ +--- +id: troubleshooting +title: Troubleshooting +--- + +Uh oh, something went wrong? Use this guide to resolve issues with Jest. + +## Tests are Failing and You Don't Know Why + +Try using the debugging support built into Node. Note: This will only work in Node.js 8+. + +Place a `debugger;` statement in any of your tests, and then, in your project's directory, run: + +```bash +node --inspect-brk node_modules/.bin/jest --runInBand [any other arguments here] +or on Windows +node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand [any other arguments here] +``` + +This will run Jest in a Node process that an external debugger can connect to. Note that the process will pause until the debugger has connected to it. + +To debug in Google Chrome (or any Chromium-based browser), open your browser and go to `chrome://inspect` and click on "Open Dedicated DevTools for Node", which will give you a list of available node instances you can connect to. Click on the address displayed in the terminal (usually something like `localhost:9229`) after running the above command, and you will be able to debug Jest using Chrome's DevTools. + +The Chrome Developer Tools will be displayed, and a breakpoint will be set at the first line of the Jest CLI script (this is done to give you time to open the developer tools and to prevent Jest from executing before you have time to do so). Click the button that looks like a "play" button in the upper right hand side of the screen to continue execution. When Jest executes the test that contains the `debugger` statement, execution will pause and you can examine the current scope and call stack. + +> Note: the `--runInBand` cli option makes sure Jest runs the test in the same process rather than spawning processes for individual tests. Normally Jest parallelizes test runs across processes but it is hard to debug many processes at the same time. + +## Debugging in VS Code + +There are multiple ways to debug Jest tests with [Visual Studio Code's](https://code.visualstudio.com) built-in [debugger](https://code.visualstudio.com/docs/nodejs/nodejs-debugging). + +To attach the built-in debugger, run your tests as aforementioned: + +```bash +node --inspect-brk node_modules/.bin/jest --runInBand [any other arguments here] +or on Windows +node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand [any other arguments here] +``` + +Then attach VS Code's debugger using the following `launch.json` config: + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "attach", + "name": "Attach", + "port": 9229 + } + ] +} +``` + +To automatically launch and attach to a process running your tests, use the following configuration: + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Jest Tests", + "type": "node", + "request": "launch", + "runtimeArgs": [ + "--inspect-brk", + "${workspaceRoot}/node_modules/.bin/jest", + "--runInBand" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "port": 9229 + } + ] +} +``` + +or the following for Windows: + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Jest Tests", + "type": "node", + "request": "launch", + "runtimeArgs": [ + "--inspect-brk", + "${workspaceRoot}/node_modules/jest/bin/jest.js", + "--runInBand" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "port": 9229 + } + ] +} +``` + +If you are using Facebook's [`create-react-app`](https://github.com/facebookincubator/create-react-app), you can debug your Jest tests with the following configuration: + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug CRA Tests", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/react-scripts", + "args": ["test", "--runInBand", "--no-cache", "--env=jsdom"], + "cwd": "${workspaceRoot}", + "protocol": "inspector", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + } + ] +} +``` + +More information on Node debugging can be found [here](https://nodejs.org/api/debugger.html). + +## Debugging in WebStorm + +The easiest way to debug Jest tests in [WebStorm](https://www.jetbrains.com/webstorm/) is using `Jest run/debug configuration`. It will launch tests and automatically attach debugger. + +In the WebStorm menu `Run` select `Edit Configurations...`. Then click `+` and select `Jest`. Optionally specify the Jest configuration file, additional options, and environment variables. Save the configuration, put the breakpoints in the code, then click the green debug icon to start debugging. + +If you are using Facebook's [`create-react-app`](https://github.com/facebookincubator/create-react-app), in the Jest run/debug configuration specify the path to the `react-scripts` package in the Jest package field and add `--env=jsdom` to the Jest options field. + +## Caching Issues + +The transform script was changed or Babel was updated and the changes aren't being recognized by Jest? + +Retry with [`--no-cache`](CLI.md#--cache). Jest caches transformed module files to speed up test execution. If you are using your own custom transformer, consider adding a `getCacheKey` function to it: [getCacheKey in Relay](https://github.com/facebook/relay/blob/58cf36c73769690f0bbf90562707eadb062b029d/scripts/jest/preprocessor.js#L56-L61). + +## Unresolved Promises + +If a promise doesn't resolve at all, this error might be thrown: + +```bash +- Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.` +``` + +Most commonly this is being caused by conflicting Promise implementations. Consider replacing the global promise implementation with your own, for example `global.Promise = jest.requireActual('promise');` and/or consolidate the used Promise libraries to a single one. + +If your test is long running, you may want to consider to increase the timeout by calling `jest.setTimeout` + +```js +jest.setTimeout(10000); // 10 second timeout +``` + +## Watchman Issues + +Try running Jest with [`--no-watchman`](CLI.md#--watchman) or set the `watchman` configuration option to `false`. + +Also see [watchman troubleshooting](https://facebook.github.io/watchman/docs/troubleshooting). + +## Tests are Extremely Slow on Docker and/or Continuous Integration (CI) server. + +While Jest is most of the time extremely fast on modern multi-core computers with fast SSDs, it may be slow on certain setups as our users [have](https://github.com/facebook/jest/issues/1395) [discovered](https://github.com/facebook/jest/issues/1524#issuecomment-260246008). + +Based on the [findings](https://github.com/facebook/jest/issues/1524#issuecomment-262366820), one way to mitigate this issue and improve the speed by up to 50% is to run tests sequentially. + +In order to do this you can run tests in the same thread using [`--runInBand`](CLI.md#--runinband): + +```bash +# Using Jest CLI +jest --runInBand + +# Using yarn test (e.g. with create-react-app) +yarn test --runInBand +``` + +Another alternative to expediting test execution time on Continuous Integration Servers such as Travis-CI is to set the max worker pool to ~_4_. Specifically on Travis-CI, this can reduce test execution time in half. Note: The Travis CI _free_ plan available for open source projects only includes 2 CPU cores. + +```bash +# Using Jest CLI +jest --maxWorkers=4 + +# Using yarn test (e.g. with create-react-app) +yarn test --maxWorkers=4 +``` + +## `coveragePathIgnorePatterns` seems to not have any effect. + +Make sure you are not using the `babel-plugin-istanbul` plugin. Jest wraps Istanbul, and therefore also tells Istanbul what files to instrument with coverage collection. When using `babel-plugin-istanbul`, every file that is processed by Babel will have coverage collection code, hence it is not being ignored by `coveragePathIgnorePatterns`. + +## Defining Tests + +Tests must be defined synchronously for Jest to be able to collect your tests. + +As an example to show why this is the case, imagine we wrote a test like so: + +```js +// Don't do this it will not work +setTimeout(() => { + it('passes', () => expect(1).toBe(1)); +}, 0); +``` + +When Jest runs your test to collect the `test`s it will not find any because we have set the definition to happen asynchronously on the next tick of the event loop. + +_Note:_ This means when you are using `test.each` you cannot set the table asynchronously within a `beforeEach` / `beforeAll`. + +## Still unresolved? + +See [Help](/help). diff --git a/website/versioned_docs/version-27.0/TutorialAsync.md b/website/versioned_docs/version-27.0/TutorialAsync.md new file mode 100644 index 000000000000..aea53809b0cf --- /dev/null +++ b/website/versioned_docs/version-27.0/TutorialAsync.md @@ -0,0 +1,165 @@ +--- +id: tutorial-async +title: An Async Example +--- + +First, enable Babel support in Jest as documented in the [Getting Started](GettingStarted.md#using-babel) guide. + +Let's implement a module that fetches user data from an API and returns the user name. + +```js +// user.js +import request from './request'; + +export function getUserName(userID) { + return request('/users/' + userID).then(user => user.name); +} +``` + +In the above implementation, we expect the `request.js` module to return a promise. We chain a call to `then` to receive the user name. + +Now imagine an implementation of `request.js` that goes to the network and fetches some user data: + +```js +// request.js +const http = require('http'); + +export default function request(url) { + return new Promise(resolve => { + // This is an example of an http request, for example to fetch + // user data from an API. + // This module is being mocked in __mocks__/request.js + http.get({path: url}, response => { + let data = ''; + response.on('data', _data => (data += _data)); + response.on('end', () => resolve(data)); + }); + }); +} +``` + +Because we don't want to go to the network in our test, we are going to create a manual mock for our `request.js` module in the `__mocks__` folder (the folder is case-sensitive, `__MOCKS__` will not work). It could look something like this: + +```js +// __mocks__/request.js +const users = { + 4: {name: 'Mark'}, + 5: {name: 'Paul'}, +}; + +export default function request(url) { + return new Promise((resolve, reject) => { + const userID = parseInt(url.substr('/users/'.length), 10); + process.nextTick(() => + users[userID] + ? resolve(users[userID]) + : reject({ + error: 'User with ' + userID + ' not found.', + }), + ); + }); +} +``` + +Now let's write a test for our async functionality. + +```js +// __tests__/user-test.js +jest.mock('../request'); + +import * as user from '../user'; + +// The assertion for a promise must be returned. +it('works with promises', () => { + expect.assertions(1); + return user.getUserName(4).then(data => expect(data).toEqual('Mark')); +}); +``` + +We call `jest.mock('../request')` to tell Jest to use our manual mock. `it` expects the return value to be a Promise that is going to be resolved. You can chain as many Promises as you like and call `expect` at any time, as long as you return a Promise at the end. + +## `.resolves` + +There is a less verbose way using `resolves` to unwrap the value of a fulfilled promise together with any other matcher. If the promise is rejected, the assertion will fail. + +```js +it('works with resolves', () => { + expect.assertions(1); + return expect(user.getUserName(5)).resolves.toEqual('Paul'); +}); +``` + +## `async`/`await` + +Writing tests using the `async`/`await` syntax is also possible. Here is how you'd write the same examples from before: + +```js +// async/await can be used. +it('works with async/await', async () => { + expect.assertions(1); + const data = await user.getUserName(4); + expect(data).toEqual('Mark'); +}); + +// async/await can also be used with `.resolves`. +it('works with async/await and resolves', async () => { + expect.assertions(1); + await expect(user.getUserName(5)).resolves.toEqual('Paul'); +}); +``` + +To enable async/await in your project, install [`@babel/preset-env`](https://babeljs.io/docs/en/babel-preset-env) and enable the feature in your `babel.config.js` file. + +## Error handling + +Errors can be handled using the `.catch` method. Make sure to add `expect.assertions` to verify that a certain number of assertions are called. Otherwise a fulfilled promise would not fail the test: + +```js +// Testing for async errors using Promise.catch. +it('tests error with promises', () => { + expect.assertions(1); + return user.getUserName(2).catch(e => + expect(e).toEqual({ + error: 'User with 2 not found.', + }), + ); +}); + +// Or using async/await. +it('tests error with async/await', async () => { + expect.assertions(1); + try { + await user.getUserName(1); + } catch (e) { + expect(e).toEqual({ + error: 'User with 1 not found.', + }); + } +}); +``` + +## `.rejects` + +The`.rejects` helper works like the `.resolves` helper. If the promise is fulfilled, the test will automatically fail. `expect.assertions(number)` is not required but recommended to verify that a certain number of [assertions](expect#expectassertionsnumber) are called during a test. It is otherwise easy to forget to `return`/`await` the `.resolves` assertions. + +```js +// Testing for async errors using `.rejects`. +it('tests error with rejects', () => { + expect.assertions(1); + return expect(user.getUserName(3)).rejects.toEqual({ + error: 'User with 3 not found.', + }); +}); + +// Or using async/await with `.rejects`. +it('tests error with async/await and rejects', async () => { + expect.assertions(1); + await expect(user.getUserName(3)).rejects.toEqual({ + error: 'User with 3 not found.', + }); +}); +``` + +The code for this example is available at [examples/async](https://github.com/facebook/jest/tree/master/examples/async). + +If you'd like to test timers, like `setTimeout`, take a look at the [Timer mocks](TimerMocks.md) documentation. diff --git a/website/versioned_docs/version-27.0/TutorialReact.md b/website/versioned_docs/version-27.0/TutorialReact.md new file mode 100644 index 000000000000..838918fa8e4a --- /dev/null +++ b/website/versioned_docs/version-27.0/TutorialReact.md @@ -0,0 +1,322 @@ +--- +id: tutorial-react +title: Testing React Apps +--- + +At Facebook, we use Jest to test [React](https://reactjs.org/) applications. + +## Setup + +### Setup with Create React App + +If you are new to React, we recommend using [Create React App](https://create-react-app.dev/). It is ready to use and [ships with Jest](https://create-react-app.dev/docs/running-tests/#docsNav)! You will only need to add `react-test-renderer` for rendering snapshots. + +Run + +```bash +yarn add --dev react-test-renderer +``` + +### Setup without Create React App + +If you have an existing application you'll need to install a few packages to make everything work well together. We are using the `babel-jest` package and the `react` babel preset to transform our code inside of the test environment. Also see [using babel](GettingStarted.md#using-babel). + +Run + +```bash +yarn add --dev jest babel-jest @babel/preset-env @babel/preset-react react-test-renderer +``` + +Your `package.json` should look something like this (where `` is the actual latest version number for the package). Please add the scripts and jest configuration entries: + +```json + "dependencies": { + "react": "", + "react-dom": "" + }, + "devDependencies": { + "@babel/preset-env": "", + "@babel/preset-react": "", + "babel-jest": "", + "jest": "", + "react-test-renderer": "" + }, + "scripts": { + "test": "jest" + } +``` + +```js +// babel.config.js +module.exports = { + presets: ['@babel/preset-env', '@babel/preset-react'], +}; +``` + +**And you're good to go!** + +### Snapshot Testing + +Let's create a [snapshot test](SnapshotTesting.md) for a Link component that renders hyperlinks: + +```tsx +// Link.react.js +import React, {useState} from 'react'; + +const STATUS = { + HOVERED: 'hovered', + NORMAL: 'normal', +}; + +const Link = ({page, children}) => { + const [status, setStatus] = useState(STATUS.NORMAL); + + const onMouseEnter = () => { + setStatus(STATUS.HOVERED); + }; + + const onMouseLeave = () => { + setStatus(STATUS.NORMAL); + }; + + return ( + + {children} + + ); +}; + +export default Link; +``` + +> Note: Examples are using Function components, but Class components can be tested in the same way. See [React: Function and Class Components](https://reactjs.org/docs/components-and-props.html#function-and-class-components). **Reminders** that with Class components, we expect Jest to be used to test props and not methods directly. + +Now let's use React's test renderer and Jest's snapshot feature to interact with the component and capture the rendered output and create a snapshot file: + +```tsx +// Link.react.test.js +import React from 'react'; +import renderer from 'react-test-renderer'; +import Link from '../Link.react'; + +test('Link changes the class when hovered', () => { + const component = renderer.create( + Facebook, + ); + let tree = component.toJSON(); + expect(tree).toMatchSnapshot(); + + // manually trigger the callback + tree.props.onMouseEnter(); + // re-rendering + tree = component.toJSON(); + expect(tree).toMatchSnapshot(); + + // manually trigger the callback + tree.props.onMouseLeave(); + // re-rendering + tree = component.toJSON(); + expect(tree).toMatchSnapshot(); +}); +``` + +When you run `yarn test` or `jest`, this will produce an output file like this: + +```javascript +// __tests__/__snapshots__/Link.react.test.js.snap +exports[`Link changes the class when hovered 1`] = ` + + Facebook + +`; + +exports[`Link changes the class when hovered 2`] = ` + + Facebook + +`; + +exports[`Link changes the class when hovered 3`] = ` + + Facebook + +`; +``` + +The next time you run the tests, the rendered output will be compared to the previously created snapshot. The snapshot should be committed along with code changes. When a snapshot test fails, you need to inspect whether it is an intended or unintended change. If the change is expected you can invoke Jest with `jest -u` to overwrite the existing snapshot. + +The code for this example is available at [examples/snapshot](https://github.com/facebook/jest/tree/master/examples/snapshot). + +#### Snapshot Testing with Mocks, Enzyme and React 16 + +There's a caveat around snapshot testing when using Enzyme and React 16+. If you mock out a module using the following style: + +```js +jest.mock('../SomeDirectory/SomeComponent', () => 'SomeComponent'); +``` + +Then you will see warnings in the console: + +```bash +Warning: is using uppercase HTML. Always use lowercase HTML tags in React. + +# Or: +Warning: The tag is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter. +``` + +React 16 triggers these warnings due to how it checks element types, and the mocked module fails these checks. Your options are: + +1. Render as text. This way you won't see the props passed to the mock component in the snapshot, but it's straightforward: + ```js + jest.mock('./SomeComponent', () => () => 'SomeComponent'); + ``` +2. Render as a custom element. DOM "custom elements" aren't checked for anything and shouldn't fire warnings. They are lowercase and have a dash in the name. + ```tsx + jest.mock('./Widget', () => () => ); + ``` +3. Use `react-test-renderer`. The test renderer doesn't care about element types and will happily accept e.g. `SomeComponent`. You could check snapshots using the test renderer, and check component behavior separately using Enzyme. +4. Disable warnings all together (should be done in your jest setup file): + ```js + jest.mock('fbjs/lib/warning', () => require('fbjs/lib/emptyFunction')); + ``` + This shouldn't normally be your option of choice as useful warnings could be lost. However, in some cases, for example when testing react-native's components we are rendering react-native tags into the DOM and many warnings are irrelevant. Another option is to swizzle the console.warn and suppress specific warnings. + +### DOM Testing + +If you'd like to assert, and manipulate your rendered components you can use [react-testing-library](https://github.com/kentcdodds/react-testing-library), [Enzyme](http://airbnb.io/enzyme/), or React's [TestUtils](https://reactjs.org/docs/test-utils.html). The following two examples use react-testing-library and Enzyme. + +#### react-testing-library + +You have to run `yarn add --dev @testing-library/react` to use react-testing-library. + +Let's implement a checkbox which swaps between two labels: + +```tsx +// CheckboxWithLabel.js +import React, {useState} from 'react'; + +const CheckboxWithLabel = ({labelOn, labelOff}) => { + const [isChecked, setIsChecked] = useState(false); + + const onChange = () => { + setIsChecked(!isChecked); + }; + + return ( + + ); +}; + +export default CheckboxWithLabel; +``` + +```tsx +// __tests__/CheckboxWithLabel-test.js +import React from 'react'; +import {cleanup, fireEvent, render} from '@testing-library/react'; +import CheckboxWithLabel from '../CheckboxWithLabel'; + +// Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher +// unmount and cleanup DOM after the test is finished. +afterEach(cleanup); + +it('CheckboxWithLabel changes the text after click', () => { + const {queryByLabelText, getByLabelText} = render( + , + ); + + expect(queryByLabelText(/off/i)).toBeTruthy(); + + fireEvent.click(getByLabelText(/off/i)); + + expect(queryByLabelText(/on/i)).toBeTruthy(); +}); +``` + +The code for this example is available at [examples/react-testing-library](https://github.com/facebook/jest/tree/master/examples/react-testing-library). + +#### Enzyme + +You have to run `yarn add --dev enzyme` to use Enzyme. If you are using a React version below 15.5.0, you will also need to install `react-addons-test-utils`. + +Let's rewrite the test from above using Enzyme instead of react-testing-library. We use Enzyme's [shallow renderer](http://airbnb.io/enzyme/docs/api/shallow.html) in this example. + +```tsx +// __tests__/CheckboxWithLabel-test.js + +import React from 'react'; +import {shallow} from 'enzyme'; +import CheckboxWithLabel from '../CheckboxWithLabel'; + +test('CheckboxWithLabel changes the text after click', () => { + // Render a checkbox with label in the document + const checkbox = shallow(); + + expect(checkbox.text()).toEqual('Off'); + + checkbox.find('input').simulate('change'); + + expect(checkbox.text()).toEqual('On'); +}); +``` + +The code for this example is available at [examples/enzyme](https://github.com/facebook/jest/tree/master/examples/enzyme). + +### Custom transformers + +If you need more advanced functionality, you can also build your own transformer. Instead of using `babel-jest`, here is an example of using `@babel/core`: + +```javascript +// custom-transformer.js +'use strict'; + +const {transform} = require('@babel/core'); +const jestPreset = require('babel-preset-jest'); + +module.exports = { + process(src, filename) { + const result = transform(src, { + filename, + presets: [jestPreset], + }); + + return result || src; + }, +}; +``` + +Don't forget to install the `@babel/core` and `babel-preset-jest` packages for this example to work. + +To make this work with Jest you need to update your Jest configuration with this: `"transform": {"\\.js$": "path/to/custom-transformer.js"}`. + +If you'd like to build a transformer with babel support, you can also use `babel-jest` to compose one and pass in your custom configuration options: + +```javascript +const babelJest = require('babel-jest'); + +module.exports = babelJest.createTransformer({ + presets: ['my-custom-preset'], +}); +``` + +See [dedicated docs](CodeTransformation.md#writing-custom-transformers) for more details. diff --git a/website/versioned_docs/version-27.0/TutorialReactNative.md b/website/versioned_docs/version-27.0/TutorialReactNative.md new file mode 100644 index 000000000000..bba83bf1c291 --- /dev/null +++ b/website/versioned_docs/version-27.0/TutorialReactNative.md @@ -0,0 +1,208 @@ +--- +id: tutorial-react-native +title: Testing React Native Apps +--- + +At Facebook, we use Jest to test [React Native](https://reactnative.dev/) applications. + +Get a deeper insight into testing a working React Native app example by reading the following series: [Part 1: Jest – Snapshot come into play](https://callstack.com/blog/testing-react-native-with-the-new-jest-part-1-snapshots-come-into-play/) and [Part 2: Jest – Redux Snapshots for your Actions and Reducers](https://callstack.com/blog/testing-react-native-with-the-new-jest-part-2-redux-snapshots-for-your-actions-and-reducers/). + +## Setup + +Starting from react-native version 0.38, a Jest setup is included by default when running `react-native init`. The following configuration should be automatically added to your package.json file: + +```json +{ + "scripts": { + "test": "jest" + }, + "jest": { + "preset": "react-native" + } +} +``` + +_Note: If you are upgrading your react-native application and previously used the `jest-react-native` preset, remove the dependency from your `package.json` file and change the preset to `react-native` instead._ + +Run `yarn test` to run tests with Jest. + +## Snapshot Test + +Let's create a [snapshot test](SnapshotTesting.md) for a small intro component with a few views and text components and some styles: + +```tsx +// Intro.js +import React, {Component} from 'react'; +import {StyleSheet, Text, View} from 'react-native'; + +class Intro extends Component { + render() { + return ( + + Welcome to React Native! + + This is a React Native snapshot test. + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + backgroundColor: '#F5FCFF', + flex: 1, + justifyContent: 'center', + }, + instructions: { + color: '#333333', + marginBottom: 5, + textAlign: 'center', + }, + welcome: { + fontSize: 20, + margin: 10, + textAlign: 'center', + }, +}); + +export default Intro; +``` + +Now let's use React's test renderer and Jest's snapshot feature to interact with the component and capture the rendered output and create a snapshot file: + +```tsx +// __tests__/Intro-test.js +import React from 'react'; +import renderer from 'react-test-renderer'; +import Intro from '../Intro'; + +test('renders correctly', () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); +}); +``` + +When you run `yarn test` or `jest`, this will produce an output file like this: + +```javascript +// __tests__/__snapshots__/Intro-test.js.snap +exports[`Intro renders correctly 1`] = ` + + + Welcome to React Native! + + + This is a React Native snapshot test. + + +`; +``` + +The next time you run the tests, the rendered output will be compared to the previously created snapshot. The snapshot should be committed along with code changes. When a snapshot test fails, you need to inspect whether it is an intended or unintended change. If the change is expected you can invoke Jest with `jest -u` to overwrite the existing snapshot. + +The code for this example is available at [examples/react-native](https://github.com/facebook/jest/tree/master/examples/react-native). + +## Preset configuration + +The preset sets up the environment and is very opinionated and based on what we found to be useful at Facebook. All of the configuration options can be overwritten just as they can be customized when no preset is used. + +### Environment + +`react-native` ships with a Jest preset, so the `jest.preset` field of your `package.json` should point to `react-native`. The preset is a node environment that mimics the environment of a React Native app. Because it doesn't load any DOM or browser APIs, it greatly improves Jest's startup time. + +### transformIgnorePatterns customization + +The [`transformIgnorePatterns`](configuration#transformignorepatterns-arraystring) option can be used to specify which files shall be transformed by Babel. Many react-native npm modules unfortunately don't pre-compile their source code before publishing. + +By default the jest-react-native preset only processes the project's own source files and react-native. If you have npm dependencies that have to be transformed you can customize this configuration option by including modules other than react-native: + +```json +{ + "transformIgnorePatterns": [ + "node_modules/(?!(react-native|my-project|react-native-button)/)" + ] +} +``` + +### setupFiles + +If you'd like to provide additional configuration for every test file, the [`setupFiles` configuration option](configuration#setupfiles-array) can be used to specify setup scripts. + +### moduleNameMapper + +The [`moduleNameMapper`](configuration#modulenamemapper-objectstring-string--arraystring) can be used to map a module path to a different module. By default the preset maps all images to an image stub module but if a module cannot be found this configuration option can help: + +```json +{ + "moduleNameMapper": { + "my-module.js": "/path/to/my-module.js" + } +} +``` + +## Tips + +### Mock native modules using jest.mock + +The Jest preset built into `react-native` comes with a few default mocks that are applied on a react-native repository. However, some react-native components or third party components rely on native code to be rendered. In such cases, Jest's manual mocking system can help to mock out the underlying implementation. + +For example, if your code depends on a third party native video component called `react-native-video` you might want to stub it out with a manual mock like this: + +```js +jest.mock('react-native-video', () => 'Video'); +``` + +This will render the component as `