diff --git a/.circleci/config.yml b/.circleci/config.yml
index fe35a4fc5a7f..7280fa057c1d 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -59,5 +59,5 @@ workflows:
matrix:
parameters:
# For some reason, v20 fails to run yarn install…
- node-version: ['14', '16', '18', '19']
+ node-version: ['16', '18']
- test-jest-jasmine
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 7151330e720d..7777974cb712 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -385,7 +385,7 @@ module.exports = {
parserOptions: {
sourceType: 'module',
},
- plugins: ['import', 'jsdoc'],
+ plugins: ['import', 'jsdoc', 'unicorn'],
rules: {
'accessor-pairs': ['warn', {setWithoutGet: true}],
'block-scoped-var': 'off',
@@ -590,6 +590,12 @@ module.exports = {
'wrap-iife': 'off',
'wrap-regex': 'off',
yoda: 'off',
+
+ 'unicorn/explicit-length-check': 'error',
+ 'unicorn/no-negated-condition': 'error',
+ 'unicorn/prefer-default-parameters': 'error',
+ 'unicorn/prefer-includes': 'error',
+ 'unicorn/template-indent': 'error',
},
settings: {
'import/ignore': ['react-native'],
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
new file mode 100644
index 000000000000..b49828e1cf0d
--- /dev/null
+++ b/.github/workflows/nightly.yml
@@ -0,0 +1,52 @@
+name: Node Nightly CI
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '0 12 * * *'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read # to fetch code (actions/checkout)
+
+jobs:
+ prepare-yarn-cache-ubuntu:
+ uses: ./.github/workflows/prepare-cache.yml
+ with:
+ os: ubuntu-latest
+ prepare-yarn-cache-macos:
+ uses: ./.github/workflows/prepare-cache.yml
+ with:
+ os: macos-latest
+ prepare-yarn-cache-windows:
+ uses: ./.github/workflows/prepare-cache.yml
+ with:
+ os: windows-latest
+
+ test-ubuntu:
+ uses: ./.github/workflows/test-nightly.yml
+ needs: prepare-yarn-cache-ubuntu
+ with:
+ os: ubuntu-latest
+ test-macos:
+ uses: ./.github/workflows/test-nightly.yml
+ needs: prepare-yarn-cache-macos
+ with:
+ os: macos-latest
+ test-windows:
+ uses: ./.github/workflows/test-nightly.yml
+ needs: prepare-yarn-cache-windows
+ with:
+ os: windows-latest
+ notify:
+ name: Notify failed build
+ needs: [test-ubuntu, test-macos, test-windows]
+ if: failure()
+ runs-on: ubuntu-latest
+ steps:
+ - uses: jayqi/failed-build-issue-action@v1
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml
index e22167c6bde7..4b3c97752772 100644
--- a/.github/workflows/nodejs.yml
+++ b/.github/workflows/nodejs.yml
@@ -5,8 +5,7 @@ on:
branches:
- main
pull_request:
- branches:
- - '**'
+ merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
diff --git a/.github/workflows/test-nightly.yml b/.github/workflows/test-nightly.yml
new file mode 100644
index 000000000000..5e5a4f52f4a4
--- /dev/null
+++ b/.github/workflows/test-nightly.yml
@@ -0,0 +1,63 @@
+name: Test
+
+on:
+ workflow_call:
+ inputs:
+ os:
+ required: true
+ type: string
+
+jobs:
+ test:
+ strategy:
+ fail-fast: false
+ matrix:
+ shard: ['1/4', '2/4', '3/4', '4/4']
+ name: Node nightly on ${{ inputs.os }} (${{ matrix.shard }})
+ runs-on: ${{ inputs.os }}
+
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: 21-nightly
+ cache: yarn
+ - name: install
+ run: yarn --immutable
+ - name: build
+ run: yarn build:js
+ - name: Get number of CPU cores
+ id: cpu-cores
+ uses: SimenB/github-actions-cpu-cores@v2
+ - name: run tests
+ run: yarn test-ci-partial:parallel --max-workers ${{ steps.cpu-cores.outputs.count }} --shard=${{ matrix.shard }}
+
+ test-jasmine:
+ strategy:
+ fail-fast: false
+ matrix:
+ shard: ['1/4', '2/4', '3/4', '4/4']
+ name: Node Nightly on ${{ inputs.os }} using jest-jasmine2 (${{ matrix.shard }})
+ runs-on: ${{ inputs.os }}
+
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+ - name: Use Node.js LTS
+ uses: actions/setup-node@v3
+ with:
+ node-version: 21-nightly
+ cache: yarn
+ - name: install
+ run: yarn --immutable
+ - name: build
+ run: yarn build:js
+ - name: Get number of CPU cores
+ id: cpu-cores
+ uses: SimenB/github-actions-cpu-cores@v2
+ - name: run tests using jest-jasmine
+ run: yarn jest-jasmine-ci --max-workers ${{ steps.cpu-cores.outputs.count }} --shard=${{ matrix.shard }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index dc7c7a2458ae..91f24574562b 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -12,7 +12,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- node-version: [14.x, 16.x, 18.x, 19.x, 20.x]
+ node-version: [16.x, 18.x, 20.x]
shard: ['1/4', '2/4', '3/4', '4/4']
name: Node v${{ matrix.node-version }} on ${{ inputs.os }} (${{ matrix.shard }})
runs-on: ${{ inputs.os }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5308c935122a..8f4f31fc98e6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,12 +2,18 @@
### Features
+- `[@jest/test-sequencer, jest-core]` [**BREAKING**] Exposes `globalConfig` & `contexts` to `TestSequencer` ([#14535](https://github.com/jestjs/jest/pull/14535), & [#14543](https://github.com/jestjs/jest/pull/14543))
+
### Fixes
+- `[jest-leak-detector]` Make leak-detector more aggressive when running GC ([#14526](https://github.com/jestjs/jest/pull/14526))
+
### Performance
### Chore & Maintenance
+- `[*]` [**BREAKING**] Drop support for Node.js versions 14 and 19 ([#14460](https://github.com/jestjs/jest/pull/14460))
+
## 29.7.0
### Features
diff --git a/constraints.pro b/constraints.pro
index 88abcbdd71f8..eb59863a1c6c 100644
--- a/constraints.pro
+++ b/constraints.pro
@@ -57,7 +57,7 @@ gen_enforced_field(WorkspaceCwd, 'publishConfig.access', null) :-
workspace_field(WorkspaceCwd, 'private', true).
% Enforces the engines.node field for public workspace
-gen_enforced_field(WorkspaceCwd, 'engines.node', '^14.15.0 || ^16.10.0 || >=18.0.0') :-
+gen_enforced_field(WorkspaceCwd, 'engines.node', '^16.10.0 || ^18.12.0 || >=20.0.0') :-
\+ workspace_field(WorkspaceCwd, 'private', true).
% Enforces the main and types field to start with ./
diff --git a/docs/Configuration.md b/docs/Configuration.md
index acb52e2746a7..4a95c468b3f5 100644
--- a/docs/Configuration.md
+++ b/docs/Configuration.md
@@ -1739,14 +1739,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/docs/ExpectAPI.md b/docs/ExpectAPI.md
index 46b2c361585e..3596d28d5588 100644
--- a/docs/ExpectAPI.md
+++ b/docs/ExpectAPI.md
@@ -1186,10 +1186,10 @@ function areVolumesEqual(a, b) {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1243,10 +1243,10 @@ function areVolumesEqual(a: unknown, b: unknown): boolean | undefined {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1297,10 +1297,10 @@ function areAuthorEqual(a, b) {
if (isAAuthor && isBAuthor) {
// Authors are equal if they have the same name
return a.name === b.name;
- } else if (isAAuthor !== isBAuthor) {
- return false;
- } else {
+ } else if (isAAuthor === isBAuthor) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1315,10 +1315,10 @@ function areBooksEqual(a, b, customTesters) {
return (
a.name === b.name && this.equals(a.authors, b.authors, customTesters)
);
- } else if (isABook !== isBBook) {
- return false;
- } else {
+ } else if (isABook === isBBook) {
return undefined;
+ } else {
+ return false;
}
}
diff --git a/docs/SnapshotTesting.md b/docs/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/docs/SnapshotTesting.md
+++ b/docs/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/e2e/__tests__/__snapshots__/wrongEnv.test.ts.snap b/e2e/__tests__/__snapshots__/wrongEnv.test.ts.snap
index e8f4df3c52a8..39a5cfa26c16 100644
--- a/e2e/__tests__/__snapshots__/wrongEnv.test.ts.snap
+++ b/e2e/__tests__/__snapshots__/wrongEnv.test.ts.snap
@@ -1,5 +1,29 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`Wrong globals for environment on node <21 print useful error for navigator 1`] = `
+"FAIL __tests__/node.js
+ ✕ use navigator
+ ○ skipped use document
+ ○ skipped use window
+
+ ● use navigator
+
+ The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
+ Consider using the "jsdom" test environment.
+
+ ReferenceError: navigator is not defined
+
+ 30 |
+ 31 | test('use navigator', () => {
+ > 32 | const userAgent = navigator.userAgent;
+ | ^
+ 33 |
+ 34 | console.log(userAgent);
+ 35 |
+
+ at Object.navigator (__tests__/node.js:32:21)"
+`;
+
exports[`Wrong globals for environment print useful error for document 1`] = `
"FAIL __tests__/node.js
✕ use document
@@ -24,30 +48,6 @@ exports[`Wrong globals for environment print useful error for document 1`] = `
at Object.document (__tests__/node.js:16:15)"
`;
-exports[`Wrong globals for environment print useful error for navigator 1`] = `
-"FAIL __tests__/node.js
- ✕ use navigator
- ○ skipped use document
- ○ skipped use window
-
- ● use navigator
-
- The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
- Consider using the "jsdom" test environment.
-
- ReferenceError: navigator is not defined
-
- 30 |
- 31 | test('use navigator', () => {
- > 32 | const userAgent = navigator.userAgent;
- | ^
- 33 |
- 34 | console.log(userAgent);
- 35 |
-
- at Object.navigator (__tests__/node.js:32:21)"
-`;
-
exports[`Wrong globals for environment print useful error for unref 1`] = `
"FAIL __tests__/jsdom.js
✕ use unref
diff --git a/e2e/__tests__/customInlineSnapshotMatchers.test.ts b/e2e/__tests__/customInlineSnapshotMatchers.test.ts
index 49b5783e6929..07c241c5e907 100644
--- a/e2e/__tests__/customInlineSnapshotMatchers.test.ts
+++ b/e2e/__tests__/customInlineSnapshotMatchers.test.ts
@@ -19,7 +19,7 @@ test('works with custom inline snapshot matchers', () => {
rest = rest
.split('\n')
- .filter(line => line.indexOf('at Error (native)') < 0)
+ .filter(line => !line.includes('at Error (native)'))
.join('\n');
expect(rest).toMatchSnapshot();
@@ -36,7 +36,7 @@ test('can bail with a custom inline snapshot matcher', () => {
rest = rest
.split('\n')
- .filter(line => line.indexOf('at Error (native)') < 0)
+ .filter(line => !line.includes('at Error (native)'))
.join('\n');
expect(rest).toMatchSnapshot();
diff --git a/e2e/__tests__/customMatcherStackTrace.test.ts b/e2e/__tests__/customMatcherStackTrace.test.ts
index 2d0a3e816de4..0f6e0cf8493e 100644
--- a/e2e/__tests__/customMatcherStackTrace.test.ts
+++ b/e2e/__tests__/customMatcherStackTrace.test.ts
@@ -15,7 +15,7 @@ test('works with custom matchers', () => {
rest = rest
.split('\n')
- .filter(line => line.indexOf('at Error (native)') < 0)
+ .filter(line => !line.includes('at Error (native)'))
.join('\n');
expect(rest).toMatchSnapshot();
diff --git a/e2e/__tests__/customTestSequencers.test.ts b/e2e/__tests__/customTestSequencers.test.ts
index 40f0c43fc3cf..575822f9b8ac 100644
--- a/e2e/__tests__/customTestSequencers.test.ts
+++ b/e2e/__tests__/customTestSequencers.test.ts
@@ -79,3 +79,55 @@ test('run failed tests async', () => {
.split('\n');
expect(sequence).toEqual(['./c.test.js', './d.test.js']);
});
+
+test('run tests based on even seed', () => {
+ const result = runJest(
+ dir,
+ [
+ '-i',
+ '--config',
+ JSON.stringify({
+ testSequencer: '/testSequencerWithSeed.js',
+ }),
+ '--seed=2',
+ ],
+ {},
+ );
+ expect(result.exitCode).toBe(0);
+ const sequence = extractSummary(result.stderr)
+ .rest.replace(/PASS /g, '')
+ .split('\n');
+ expect(sequence).toEqual([
+ './a.test.js',
+ './b.test.js',
+ './c.test.js',
+ './d.test.js',
+ './e.test.js',
+ ]);
+});
+
+test('run tests based on odd seed', () => {
+ const result = runJest(
+ dir,
+ [
+ '-i',
+ '--config',
+ JSON.stringify({
+ testSequencer: '/testSequencerWithSeed.js',
+ }),
+ '--seed=1',
+ ],
+ {},
+ );
+ expect(result.exitCode).toBe(0);
+ const sequence = extractSummary(result.stderr)
+ .rest.replace(/PASS /g, '')
+ .split('\n');
+ expect(sequence).toEqual([
+ './e.test.js',
+ './d.test.js',
+ './c.test.js',
+ './b.test.js',
+ './a.test.js',
+ ]);
+});
diff --git a/e2e/__tests__/expectAsyncMatcher.test.ts b/e2e/__tests__/expectAsyncMatcher.test.ts
index ca9a9c584323..695d1eade3cc 100644
--- a/e2e/__tests__/expectAsyncMatcher.test.ts
+++ b/e2e/__tests__/expectAsyncMatcher.test.ts
@@ -27,7 +27,7 @@ test('shows the correct errors in stderr when failing tests', () => {
const rest = extractSummary(result.stderr)
.rest.split('\n')
- .filter(line => line.indexOf('packages/expect/build/index.js') === -1)
+ .filter(line => !line.includes('packages/expect/build/index.js'))
.join('\n');
expect(rest).toMatchSnapshot();
diff --git a/e2e/__tests__/failures.test.ts b/e2e/__tests__/failures.test.ts
index 031035e624ca..bd717a9eac3a 100644
--- a/e2e/__tests__/failures.test.ts
+++ b/e2e/__tests__/failures.test.ts
@@ -58,7 +58,7 @@ test('works with async failures', () => {
const rest = cleanStderr(stderr)
.split('\n')
- .filter(line => line.indexOf('packages/expect/build/index.js') === -1)
+ .filter(line => !line.includes('packages/expect/build/index.js'))
.join('\n');
// Remove replacements when jasmine is gone
diff --git a/e2e/__tests__/wrongEnv.test.ts b/e2e/__tests__/wrongEnv.test.ts
index 502bdf2791bc..b8563a1c21e8 100644
--- a/e2e/__tests__/wrongEnv.test.ts
+++ b/e2e/__tests__/wrongEnv.test.ts
@@ -5,6 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
+import {onNodeVersions} from '@jest/test-utils';
import {extractSummary} from '../Utils';
import runJest from '../runJest';
@@ -23,8 +24,10 @@ describe('Wrong globals for environment', () => {
assertFailuresAndSnapshot(['node', '-t=document']);
});
- it('print useful error for navigator', () => {
- assertFailuresAndSnapshot(['node', '-t=navigator']);
+ onNodeVersions('<21', () => {
+ it('print useful error for navigator', () => {
+ assertFailuresAndSnapshot(['node', '-t=navigator']);
+ });
});
it('print useful error for unref', () => {
diff --git a/e2e/custom-matcher-stack-trace/__tests__/sync.test.js b/e2e/custom-matcher-stack-trace/__tests__/sync.test.js
index 51c0610637e9..4397e97004d5 100644
--- a/e2e/custom-matcher-stack-trace/__tests__/sync.test.js
+++ b/e2e/custom-matcher-stack-trace/__tests__/sync.test.js
@@ -10,13 +10,13 @@
function toCustomMatch(callback, expectation) {
const actual = callback();
- if (actual !== expectation) {
+ if (actual === expectation) {
+ return {pass: true};
+ } else {
return {
message: () => `Expected "${expectation}" but got "${actual}"`,
pass: false,
};
- } else {
- return {pass: true};
}
}
diff --git a/e2e/custom-reporters/reporters/TestCaseStartReporter.js b/e2e/custom-reporters/reporters/TestCaseStartReporter.js
index 096957ddefae..a0396b317b16 100644
--- a/e2e/custom-reporters/reporters/TestCaseStartReporter.js
+++ b/e2e/custom-reporters/reporters/TestCaseStartReporter.js
@@ -14,7 +14,7 @@
class TestCaseStartReporter {
onTestCaseStart(test, testCaseStartInfo) {
const mode =
- testCaseStartInfo.mode != null ? testCaseStartInfo.mode : 'undefined';
+ testCaseStartInfo.mode == null ? 'undefined' : testCaseStartInfo.mode;
console.log(
`onTestCaseStart: ${testCaseStartInfo.title}, ` +
`mode: ${mode}, ` +
diff --git a/e2e/custom-test-sequencer/testSequencerWithSeed.js b/e2e/custom-test-sequencer/testSequencerWithSeed.js
new file mode 100644
index 000000000000..1ed6db6cffeb
--- /dev/null
+++ b/e2e/custom-test-sequencer/testSequencerWithSeed.js
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+const Sequencer = require('@jest/test-sequencer').default;
+
+class CustomSequencer extends Sequencer {
+ constructor(_options) {
+ super(_options);
+ this.globalConfig = _options.globalConfig;
+ }
+
+ sort(tests) {
+ const copyTests = Array.from(tests);
+ const seed = this.globalConfig.seed;
+ const sortedTests = copyTests.sort((testA, testB) =>
+ testA.path > testB.path ? 1 : -1,
+ );
+
+ if (seed % 2 === 0) {
+ return sortedTests;
+ } else {
+ return sortedTests.reverse();
+ }
+ }
+}
+
+module.exports = CustomSequencer;
diff --git a/e2e/filter/my-broken-setup-filter.js b/e2e/filter/my-broken-setup-filter.js
index 75459689dc61..a360c67d5541 100644
--- a/e2e/filter/my-broken-setup-filter.js
+++ b/e2e/filter/my-broken-setup-filter.js
@@ -9,7 +9,7 @@
module.exports = function (tests) {
return {
- filtered: tests.filter(t => t.indexOf('foo') !== -1).map(test => ({test})),
+ filtered: tests.filter(t => t.includes('foo')).map(test => ({test})),
};
};
diff --git a/e2e/filter/my-filter.js b/e2e/filter/my-filter.js
index 83bcbd7bd213..10c71b83630c 100644
--- a/e2e/filter/my-filter.js
+++ b/e2e/filter/my-filter.js
@@ -12,7 +12,7 @@ module.exports = function (tests) {
setTimeout(() => {
resolve({
filtered: tests
- .filter(t => t.indexOf('foo') !== -1)
+ .filter(t => t.includes('foo'))
.map(test => ({message: 'some message', test})),
});
}, 100);
diff --git a/e2e/filter/my-secondary-filter.js b/e2e/filter/my-secondary-filter.js
index 39eba9edc194..b6551712ee42 100644
--- a/e2e/filter/my-secondary-filter.js
+++ b/e2e/filter/my-secondary-filter.js
@@ -9,6 +9,6 @@
module.exports = function (tests) {
return {
- filtered: tests.filter(t => t.indexOf('foo') !== -1).map(test => ({test})),
+ filtered: tests.filter(t => t.includes('foo')).map(test => ({test})),
};
};
diff --git a/e2e/filter/my-setup-filter.js b/e2e/filter/my-setup-filter.js
index 70b8cb0efd0f..751568123d9e 100644
--- a/e2e/filter/my-setup-filter.js
+++ b/e2e/filter/my-setup-filter.js
@@ -14,7 +14,7 @@ const setupData = {
module.exports = function (tests) {
return {
filtered: tests
- .filter(t => t.indexOf(setupData.filterText) !== -1)
+ .filter(t => t.includes(setupData.filterText))
.map(test => ({test})),
};
};
diff --git a/e2e/resolve/__tests__/resolve.test.js b/e2e/resolve/__tests__/resolve.test.js
index 7e6297a631c0..ec03a86fa673 100644
--- a/e2e/resolve/__tests__/resolve.test.js
+++ b/e2e/resolve/__tests__/resolve.test.js
@@ -112,7 +112,7 @@ test('should throw module not found error if the module has dependencies that ca
requiresUnexistingModule.js
Test7.js
__tests__/resolve.test.js\n
- `,
+ `,
}),
);
});
diff --git a/e2e/resolve/hasteImpl.js b/e2e/resolve/hasteImpl.js
index 68b024315255..c02806ad4eb1 100644
--- a/e2e/resolve/hasteImpl.js
+++ b/e2e/resolve/hasteImpl.js
@@ -12,7 +12,7 @@ const path = require('path');
module.exports = {
getHasteName(filePath) {
const name = path.parse(filePath).name;
- const isMock = filePath.indexOf('__mocks__') !== -1;
+ const isMock = filePath.includes('__mocks__');
// Mocks are automatically parsed by Jest already.
return name.startsWith('Test') && !isMock ? name : null;
diff --git a/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js b/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js
index 56938c7b28bd..3763d9914bcf 100644
--- a/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js
+++ b/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js
@@ -13,14 +13,14 @@ describe('snapshot serializer', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
- {
- "hello": "Danger",
- },
- ],
-}
-`);
+ {
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
it('uses 8 chars for indent, and shows no prototypes for object and array in a snapshot', () => {
diff --git a/package.json b/package.json
index 0754a8516b56..ac6b3fce29c6 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
"@types/babel__core": "^7.1.14",
"@types/babel__generator": "^7.0.0",
"@types/babel__template": "^7.0.2",
- "@types/node": "~14.14.45",
+ "@types/node": "^16.10.0",
"@types/which": "^3.0.0",
"@types/ws": "8.5.1",
"@typescript-eslint/eslint-plugin": "^5.14.0",
@@ -41,6 +41,7 @@
"eslint-plugin-local": "link:./.eslintplugin",
"eslint-plugin-markdown": "^3.0.0",
"eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-unicorn": "^46.0.0",
"execa": "^5.0.0",
"find-process": "^1.4.1",
"glob": "^10.0.0",
@@ -169,10 +170,10 @@
"logo": "https://opencollective.com/jest/logo.txt"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"resolutions": {
- "@types/node": "~14.14.45",
+ "@types/node": "~16.18.0",
"@types/react": "^18.2.21",
"ansi-escapes/type-fest": "^2.0.0",
"babel-jest": "workspace:^",
diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json
index 8a52ffc627ca..b783f4f16809 100644
--- a/packages/babel-jest/package.json
+++ b/packages/babel-jest/package.json
@@ -35,7 +35,7 @@
"@babel/core": "^7.8.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/babel-jest/src/__tests__/getCacheKey.test.ts b/packages/babel-jest/src/__tests__/getCacheKey.test.ts
index fbe3a0b34b0c..eb9b2da1107b 100644
--- a/packages/babel-jest/src/__tests__/getCacheKey.test.ts
+++ b/packages/babel-jest/src/__tests__/getCacheKey.test.ts
@@ -20,6 +20,7 @@ afterEach(() => {
jest.resetModules();
if (process.version === 'new-node-version') {
+ // @ts-expect-error: Testing purpose
process.version = processVersion;
}
@@ -194,6 +195,7 @@ describe('getCacheKey', () => {
test('if node version is changing', () => {
// @ts-expect-error: Testing purpose
delete process.version;
+ // @ts-expect-error: Testing purpose
process.version = 'new-node-version';
const newCacheKey = getCacheKey!(sourceText, sourcePath, transformOptions);
diff --git a/packages/babel-plugin-jest-hoist/package.json b/packages/babel-plugin-jest-hoist/package.json
index 486107b0be41..9708b66d2490 100644
--- a/packages/babel-plugin-jest-hoist/package.json
+++ b/packages/babel-plugin-jest-hoist/package.json
@@ -7,7 +7,7 @@
"directory": "packages/babel-plugin-jest-hoist"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/babel-preset-jest/package.json b/packages/babel-preset-jest/package.json
index e2e05eaf9129..0fda8bd9bf32 100644
--- a/packages/babel-preset-jest/package.json
+++ b/packages/babel-preset-jest/package.json
@@ -20,7 +20,7 @@
"@babel/core": "^7.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/create-jest/package.json b/packages/create-jest/package.json
index f0a1d456b9d8..627bad9a629a 100644
--- a/packages/create-jest/package.json
+++ b/packages/create-jest/package.json
@@ -29,7 +29,7 @@
"prompts": "^2.0.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/create-jest/src/runCreate.ts b/packages/create-jest/src/runCreate.ts
index 7a8d2fbb0538..4a4d67af43ab 100644
--- a/packages/create-jest/src/runCreate.ts
+++ b/packages/create-jest/src/runCreate.ts
@@ -131,9 +131,9 @@ export async function runCreate(rootDir = process.cwd()): Promise {
// Determine Jest config path
const jestConfigPath =
- existingJestConfigExt != null
- ? getConfigFilename(existingJestConfigExt)
- : path.join(rootDir, getConfigFilename(jestConfigFileExt));
+ existingJestConfigExt == null
+ ? path.join(rootDir, getConfigFilename(jestConfigFileExt))
+ : getConfigFilename(existingJestConfigExt);
const shouldModifyScripts = results.scripts;
diff --git a/packages/diff-sequences/package.json b/packages/diff-sequences/package.json
index 9f5ac6018011..ad26c505acfe 100644
--- a/packages/diff-sequences/package.json
+++ b/packages/diff-sequences/package.json
@@ -16,7 +16,7 @@
"diff"
],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"main": "./build/index.js",
"types": "./build/index.d.ts",
diff --git a/packages/expect-utils/package.json b/packages/expect-utils/package.json
index dc6404127b89..d5197659c9db 100644
--- a/packages/expect-utils/package.json
+++ b/packages/expect-utils/package.json
@@ -26,7 +26,7 @@
"tsd-lite": "^0.7.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/expect-utils/src/utils.ts b/packages/expect-utils/src/utils.ts
index ed5c2e36bf74..b1375c1d53b6 100644
--- a/packages/expect-utils/src/utils.ts
+++ b/packages/expect-utils/src/utils.ts
@@ -60,7 +60,7 @@ export const getPath = (
propertyPath = pathAsArray(propertyPath);
}
- if (propertyPath.length) {
+ if (propertyPath.length > 0) {
const lastProp = propertyPath.length === 1;
const prop = propertyPath[0];
const newObject = object[prop];
@@ -482,7 +482,7 @@ export const isError = (value: unknown): value is Error => {
};
export function emptyObject(obj: unknown): boolean {
- return obj && typeof obj === 'object' ? !Object.keys(obj).length : false;
+ return obj && typeof obj === 'object' ? Object.keys(obj).length === 0 : false;
}
const MULTILINE_REGEXP = /[\r\n]/;
diff --git a/packages/expect/__typetests__/expect.test.ts b/packages/expect/__typetests__/expect.test.ts
index 4e1d2bb72b5d..325c909840fc 100644
--- a/packages/expect/__typetests__/expect.test.ts
+++ b/packages/expect/__typetests__/expect.test.ts
@@ -174,7 +174,7 @@ const allowOmittingExpected: MatcherFunction = (
actual: unknown,
...expect: Array
) => {
- if (expect.length !== 0) {
+ if (expect.length > 0) {
throw new Error('This matcher does not take any expected argument.');
}
@@ -194,7 +194,7 @@ const toHaveContext: MatcherFunction = function (
) {
expectType(this);
- if (expect.length !== 0) {
+ if (expect.length > 0) {
throw new Error('This matcher does not take any expected argument.');
}
@@ -215,7 +215,7 @@ const customContext: MatcherFunctionWithContext = function (
expectType(this);
expectType(this.customMethod());
- if (expect.length !== 0) {
+ if (expect.length > 0) {
throw new Error('This matcher does not take any expected argument.');
}
diff --git a/packages/expect/package.json b/packages/expect/package.json
index 3ea031a6a517..96fb564168c7 100644
--- a/packages/expect/package.json
+++ b/packages/expect/package.json
@@ -34,7 +34,7 @@
"tsd-lite": "^0.7.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/expect/src/__tests__/customEqualityTesters.test.ts b/packages/expect/src/__tests__/customEqualityTesters.test.ts
index dda50297e641..7e04abb42485 100644
--- a/packages/expect/src/__tests__/customEqualityTesters.test.ts
+++ b/packages/expect/src/__tests__/customEqualityTesters.test.ts
@@ -50,10 +50,10 @@ const areVolumesEqual: Tester = (
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
};
diff --git a/packages/expect/src/__tests__/customEqualityTestersRecursive.test.ts b/packages/expect/src/__tests__/customEqualityTestersRecursive.test.ts
index bf6762b74d90..82aeaab43cfa 100644
--- a/packages/expect/src/__tests__/customEqualityTestersRecursive.test.ts
+++ b/packages/expect/src/__tests__/customEqualityTestersRecursive.test.ts
@@ -45,10 +45,10 @@ const areAuthorsEqual: Tester = (a: unknown, b: unknown) => {
if (isAAuthor && isBAuthor) {
return a.name === b.name;
- } else if (isAAuthor !== isBAuthor) {
- return false;
- } else {
+ } else if (isAAuthor === isBAuthor) {
return undefined;
+ } else {
+ return false;
}
};
@@ -64,10 +64,10 @@ const areBooksEqual: Tester = function (
return (
a.name === b.name && this.equals(a.authors, b.authors, customTesters)
);
- } else if (isABook !== isBBook) {
- return false;
- } else {
+ } else if (isABook === isBBook) {
return undefined;
+ } else {
+ return false;
}
};
diff --git a/packages/expect/src/index.ts b/packages/expect/src/index.ts
index 5cc2cd68f6c3..6b80867dbd7b 100644
--- a/packages/expect/src/index.ts
+++ b/packages/expect/src/index.ts
@@ -100,7 +100,7 @@ const getPromiseMatcher = (name: string, matcher: RawMatcherFn) => {
};
export const expect: Expect = (actual: any, ...rest: Array) => {
- if (rest.length !== 0) {
+ if (rest.length > 0) {
throw new Error('Expect takes at most one argument.');
}
diff --git a/packages/expect/src/matchers.ts b/packages/expect/src/matchers.ts
index 0ea9c04501ae..923938f4c026 100644
--- a/packages/expect/src/matchers.ts
+++ b/packages/expect/src/matchers.ts
@@ -120,11 +120,11 @@ const matchers: MatchersObject = {
// eslint-disable-next-line prefer-template
matcherHint(matcherName, undefined, undefined, options) +
'\n\n' +
- (deepEqualityName !== null
- ? `${DIM_COLOR(
+ (deepEqualityName === null
+ ? ''
+ : `${DIM_COLOR(
`If it should pass with deep equality, replace "${matcherName}" with "${deepEqualityName}"`,
- )}\n\n`
- : '') +
+ )}\n\n`) +
printDiffOrStringify(
expected,
received,
@@ -330,12 +330,12 @@ const matchers: MatchersObject = {
? `\nReceived value has no prototype\nReceived value: ${printReceived(
received,
)}`
- : typeof received.constructor !== 'function'
- ? `\nReceived value: ${printReceived(received)}`
- : printReceivedConstructorName(
+ : typeof received.constructor === 'function'
+ ? printReceivedConstructorName(
'Received constructor',
received.constructor,
- ));
+ )
+ : `\nReceived value: ${printReceived(received)}`);
return {message, pass};
},
@@ -628,9 +628,9 @@ const matchers: MatchersObject = {
matcherHint(matcherName, undefined, undefined, options) +
'\n\n' +
`Expected: not ${printExpected(expected)}\n` +
- (stringify(expected) !== stringify(received)
- ? `Received: ${printReceived(received)}`
- : '')
+ (stringify(expected) === stringify(received)
+ ? ''
+ : `Received: ${printReceived(received)}`)
: () =>
// eslint-disable-next-line prefer-template
matcherHint(matcherName, undefined, undefined, options) +
@@ -777,9 +777,9 @@ const matchers: MatchersObject = {
(hasValue
? `Expected path: ${printExpected(expectedPath)}\n\n` +
`Expected value: not ${printExpected(expectedValue)}${
- stringify(expectedValue) !== stringify(receivedValue)
- ? `\nReceived value: ${printReceived(receivedValue)}`
- : ''
+ stringify(expectedValue) === stringify(receivedValue)
+ ? ''
+ : `\nReceived value: ${printReceived(receivedValue)}`
}`
: `Expected path: not ${printExpected(expectedPath)}\n\n` +
`Received value: ${printReceived(receivedValue)}`)
@@ -926,9 +926,9 @@ const matchers: MatchersObject = {
matcherHint(matcherName, undefined, undefined, options) +
'\n\n' +
`Expected: not ${printExpected(expected)}` +
- (stringify(expected) !== stringify(received)
- ? `\nReceived: ${printReceived(received)}`
- : '')
+ (stringify(expected) === stringify(received)
+ ? ''
+ : `\nReceived: ${printReceived(received)}`)
: () =>
// eslint-disable-next-line prefer-template
matcherHint(matcherName, undefined, undefined, options) +
@@ -965,9 +965,9 @@ const matchers: MatchersObject = {
matcherHint(matcherName, undefined, undefined, options) +
'\n\n' +
`Expected: not ${printExpected(expected)}\n` +
- (stringify(expected) !== stringify(received)
- ? `Received: ${printReceived(received)}`
- : '')
+ (stringify(expected) === stringify(received)
+ ? ''
+ : `Received: ${printReceived(received)}`)
: () =>
// eslint-disable-next-line prefer-template
matcherHint(matcherName, undefined, undefined, options) +
diff --git a/packages/expect/src/print.ts b/packages/expect/src/print.ts
index 167ef57ca25e..c07a80589c55 100644
--- a/packages/expect/src/print.ts
+++ b/packages/expect/src/print.ts
@@ -109,9 +109,9 @@ export const printReceivedConstructorNameNot = (
expected: Function,
): string =>
typeof expected.name === 'string' &&
- expected.name.length !== 0 &&
+ expected.name.length > 0 &&
typeof received.name === 'string' &&
- received.name.length !== 0
+ received.name.length > 0
? `${printConstructorName(label, received, true, false)} ${
Object.getPrototypeOf(received) === expected
? 'extends'
@@ -125,12 +125,12 @@ const printConstructorName = (
isNot: boolean,
isExpected: boolean,
): string =>
- typeof constructor.name !== 'string'
- ? `${label} name is not a string`
- : constructor.name.length === 0
- ? `${label} name is an empty string`
- : `${label}: ${!isNot ? '' : isExpected ? 'not ' : ' '}${
- isExpected
- ? EXPECTED_COLOR(constructor.name)
- : RECEIVED_COLOR(constructor.name)
- }`;
+ typeof constructor.name === 'string'
+ ? constructor.name.length === 0
+ ? `${label} name is an empty string`
+ : `${label}: ${isNot ? (isExpected ? 'not ' : ' ') : ''}${
+ isExpected
+ ? EXPECTED_COLOR(constructor.name)
+ : RECEIVED_COLOR(constructor.name)
+ }`
+ : `${label} name is not a string`;
diff --git a/packages/expect/src/spyMatchers.ts b/packages/expect/src/spyMatchers.ts
index a57482e0cc69..a2d0c94952d3 100644
--- a/packages/expect/src/spyMatchers.ts
+++ b/packages/expect/src/spyMatchers.ts
@@ -82,9 +82,9 @@ const printNumberOfReturns = (
countCalls: number,
): string =>
`\nNumber of returns: ${printReceived(countReturns)}${
- countCalls !== countReturns
- ? `\nNumber of calls: ${printReceived(countCalls)}`
- : ''
+ countCalls === countReturns
+ ? ''
+ : `\nNumber of calls: ${printReceived(countCalls)}`
}`;
type PrintLabel = (string: string, isExpectedCall: boolean) => string;
@@ -439,22 +439,22 @@ const createToReturnMatcher = (
return lines;
}, [])
.join('\n') +
- (received.mock.calls.length !== count
- ? `\n\nReceived number of calls: ${printReceived(
+ (received.mock.calls.length === count
+ ? ''
+ : `\n\nReceived number of calls: ${printReceived(
received.mock.calls.length,
- )}`
- : '')
+ )}`)
: () =>
// eslint-disable-next-line prefer-template
matcherHint(matcherName, receivedName, expectedArgument, options) +
'\n\n' +
`Expected number of returns: >= ${printExpected(1)}\n` +
`Received number of returns: ${printReceived(count)}` +
- (received.mock.calls.length !== count
- ? `\nReceived number of calls: ${printReceived(
+ (received.mock.calls.length === count
+ ? ''
+ : `\nReceived number of calls: ${printReceived(
received.mock.calls.length,
- )}`
- : '');
+ )}`);
return {message, pass};
};
@@ -523,22 +523,22 @@ const createToReturnTimesMatcher = (
matcherHint(matcherName, receivedName, expectedArgument, options) +
'\n\n' +
`Expected number of returns: not ${printExpected(expected)}` +
- (received.mock.calls.length !== count
- ? `\n\nReceived number of calls: ${printReceived(
+ (received.mock.calls.length === count
+ ? ''
+ : `\n\nReceived number of calls: ${printReceived(
received.mock.calls.length,
- )}`
- : '')
+ )}`)
: () =>
// eslint-disable-next-line prefer-template
matcherHint(matcherName, receivedName, expectedArgument, options) +
'\n\n' +
`Expected number of returns: ${printExpected(expected)}\n` +
`Received number of returns: ${printReceived(count)}` +
- (received.mock.calls.length !== count
- ? `\nReceived number of calls: ${printReceived(
+ (received.mock.calls.length === count
+ ? ''
+ : `\nReceived number of calls: ${printReceived(
received.mock.calls.length,
- )}`
- : '');
+ )}`);
return {message, pass};
};
diff --git a/packages/expect/src/toThrowMatchers.ts b/packages/expect/src/toThrowMatchers.ts
index 77eff9008e8b..43799cddc7de 100644
--- a/packages/expect/src/toThrowMatchers.ts
+++ b/packages/expect/src/toThrowMatchers.ts
@@ -88,7 +88,13 @@ export const createMatcher = (
if (fromPromise && isError(received)) {
thrown = getThrown(received);
} else {
- if (typeof received !== 'function') {
+ if (typeof received === 'function') {
+ try {
+ received();
+ } catch (e) {
+ thrown = getThrown(e);
+ }
+ } else {
if (!fromPromise) {
const placeholder = expected === undefined ? '' : 'expected';
throw new Error(
@@ -99,12 +105,6 @@ export const createMatcher = (
),
);
}
- } else {
- try {
- received();
- } catch (e) {
- thrown = getThrown(e);
- }
}
}
@@ -227,7 +227,7 @@ const toThrowExpectedObject = (
): SyncExpectationResult => {
const expectedMessageAndCause = createMessageAndCause(expected);
const thrownMessageAndCause =
- thrown !== null ? createMessageAndCause(thrown.value) : null;
+ thrown === null ? null : createMessageAndCause(thrown.value);
const pass =
thrown !== null &&
thrown.message === expected.message &&
diff --git a/packages/jest-changed-files/package.json b/packages/jest-changed-files/package.json
index 7f1256a2d71e..18981b9a9837 100644
--- a/packages/jest-changed-files/package.json
+++ b/packages/jest-changed-files/package.json
@@ -22,7 +22,7 @@
"p-limit": "^3.1.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json
index 364586ac8c74..738eb54e7f9c 100644
--- a/packages/jest-circus/package.json
+++ b/packages/jest-circus/package.json
@@ -50,7 +50,7 @@
"tempy": "^1.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-circus/src/eventHandler.ts b/packages/jest-circus/src/eventHandler.ts
index 4c401cada760..8a7e2403e52b 100644
--- a/packages/jest-circus/src/eventHandler.ts
+++ b/packages/jest-circus/src/eventHandler.ts
@@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
-import type {Circus} from '@jest/types';
+import type {Circus, Global} from '@jest/types';
import {invariant} from 'jest-util';
import {
injectGlobalErrorHandlers,
@@ -217,7 +217,7 @@ const eventHandler: Circus.EventHandler = (event, state) => {
case 'test_retry': {
const logErrorsBeforeRetry: boolean =
// eslint-disable-next-line no-restricted-globals
- global[LOG_ERRORS_BEFORE_RETRY] || false;
+ ((global as Global.Global)[LOG_ERRORS_BEFORE_RETRY] as any) || false;
if (logErrorsBeforeRetry) {
event.test.retryReasons.push(...event.test.errors);
}
@@ -227,8 +227,11 @@ const eventHandler: Circus.EventHandler = (event, state) => {
case 'run_start': {
state.hasStarted = true;
/* eslint-disable no-restricted-globals */
- global[TEST_TIMEOUT_SYMBOL] &&
- (state.testTimeout = global[TEST_TIMEOUT_SYMBOL]);
+ if ((global as Global.Global)[TEST_TIMEOUT_SYMBOL]) {
+ state.testTimeout = (global as Global.Global)[
+ TEST_TIMEOUT_SYMBOL
+ ] as number;
+ }
/* eslint-enable */
break;
}
diff --git a/packages/jest-circus/src/formatNodeAssertErrors.ts b/packages/jest-circus/src/formatNodeAssertErrors.ts
index c3dc4b0f911e..de81bdfbf181 100644
--- a/packages/jest-circus/src/formatNodeAssertErrors.ts
+++ b/packages/jest-circus/src/formatNodeAssertErrors.ts
@@ -50,14 +50,14 @@ const formatNodeAssertErrors = (
if (originalError == null) {
error = asyncError;
- } else if (!originalError.stack) {
+ } else if (originalError.stack) {
+ error = originalError;
+ } else {
error = asyncError;
error.message = originalError.message
? originalError.message
: `thrown: ${prettyFormat(originalError, {maxDepth: 3})}`;
- } else {
- error = originalError;
}
} else {
error = errors;
diff --git a/packages/jest-circus/src/globalErrorHandlers.ts b/packages/jest-circus/src/globalErrorHandlers.ts
index 27146fc4a1f2..317ae3d41d52 100644
--- a/packages/jest-circus/src/globalErrorHandlers.ts
+++ b/packages/jest-circus/src/globalErrorHandlers.ts
@@ -5,6 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
+import type * as Process from 'process';
import type {Circus} from '@jest/types';
import {dispatchSync} from './state';
@@ -14,7 +15,7 @@ const uncaught: NodeJS.UncaughtExceptionListener &
};
export const injectGlobalErrorHandlers = (
- parentProcess: NodeJS.Process,
+ parentProcess: typeof Process,
): Circus.GlobalErrorHandlers => {
const uncaughtException = process.listeners('uncaughtException').slice();
const unhandledRejection = process.listeners('unhandledRejection').slice();
@@ -26,7 +27,7 @@ export const injectGlobalErrorHandlers = (
};
export const restoreGlobalErrorHandlers = (
- parentProcess: NodeJS.Process,
+ parentProcess: typeof Process,
originalErrorHandlers: Circus.GlobalErrorHandlers,
): void => {
parentProcess.removeListener('uncaughtException', uncaught);
diff --git a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts
index 80b4503621b7..5be34097c451 100644
--- a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts
+++ b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts
@@ -128,7 +128,7 @@ const _addSnapshotData = (
results.snapshot.matched = snapshotState.matched;
results.snapshot.unmatched = snapshotState.unmatched;
results.snapshot.updated = snapshotState.updated;
- results.snapshot.unchecked = !status.deleted ? uncheckedCount : 0;
+ results.snapshot.unchecked = status.deleted ? 0 : uncheckedCount;
// Copy the array to prevent memory leaks
results.snapshot.uncheckedKeys = Array.from(uncheckedKeys);
};
diff --git a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts
index f9ac8076bd55..01c121317d97 100644
--- a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts
+++ b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts
@@ -5,6 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
+import type * as Process from 'process';
import type {JestEnvironment} from '@jest/environment';
import {JestExpect, jestExpect} from '@jest/expect';
import {
@@ -51,7 +52,7 @@ export const initialize = async ({
globalConfig: Config.GlobalConfig;
localRequire: (path: string) => T;
testPath: string;
- parentProcess: NodeJS.Process;
+ parentProcess: typeof Process;
sendMessageToJest?: TestFileEvent;
setGlobalsForRuntime: (globals: RuntimeGlobals) => void;
}): Promise<{
@@ -158,7 +159,7 @@ export const runAndTransformResultsToJestFormat = async ({
} else if (testResult.status === 'todo') {
status = 'todo';
numTodoTests += 1;
- } else if (testResult.errors.length) {
+ } else if (testResult.errors.length > 0) {
status = 'failed';
numFailingTests += 1;
} else {
@@ -197,7 +198,7 @@ export const runAndTransformResultsToJestFormat = async ({
);
let testExecError;
- if (runResult.unhandledErrors.length) {
+ if (runResult.unhandledErrors.length > 0) {
testExecError = {
message: '',
stack: runResult.unhandledErrors.join('\n'),
@@ -261,7 +262,7 @@ const _addExpectedAssertionErrors = (test: Circus.TestEntry) => {
const _addSuppressedErrors = (test: Circus.TestEntry) => {
const {suppressedErrors} = jestExpect.getState();
jestExpect.setState({suppressedErrors: []});
- if (suppressedErrors.length) {
+ if (suppressedErrors.length > 0) {
test.errors = test.errors.concat(suppressedErrors);
}
};
diff --git a/packages/jest-circus/src/run.ts b/packages/jest-circus/src/run.ts
index eac6a20b06e6..c2cd6063cd1e 100644
--- a/packages/jest-circus/src/run.ts
+++ b/packages/jest-circus/src/run.ts
@@ -8,7 +8,7 @@
import {AsyncLocalStorage} from 'async_hooks';
import pLimit = require('p-limit');
import {jestExpect} from '@jest/expect';
-import type {Circus} from '@jest/types';
+import type {Circus, Global} from '@jest/types';
import {invariant} from 'jest-util';
import shuffleArray, {RandomNumberGenerator, rngBuilder} from './shuffleArray';
import {dispatch, getState} from './state';
@@ -61,8 +61,9 @@ const _runTestsForDescribeBlock = async (
}
// Tests that fail and are retried we run after other tests
- // eslint-disable-next-line no-restricted-globals
- const retryTimes = parseInt(global[RETRY_TIMES], 10) || 0;
+ const retryTimes =
+ // eslint-disable-next-line no-restricted-globals
+ parseInt((global as Global.Global)[RETRY_TIMES] as string, 10) || 0;
const deferredRetryTests = [];
if (rng) {
@@ -186,7 +187,7 @@ const _runTest = async (
const {afterEach, beforeEach} = getEachHooksForTest(test);
for (const hook of beforeEach) {
- if (test.errors.length) {
+ if (test.errors.length > 0) {
// If any of the before hooks failed already, we don't run any
// hooks after that.
break;
@@ -239,7 +240,7 @@ const _callCircusTest = async (
const timeout = test.timeout || getState().testTimeout;
invariant(test.fn, "Tests with no 'fn' should have 'mode' set to 'skipped'");
- if (test.errors.length) {
+ if (test.errors.length > 0) {
return; // We don't run the test if there's already an error in before hooks.
}
diff --git a/packages/jest-circus/src/state.ts b/packages/jest-circus/src/state.ts
index 0540dfd41116..ecd94cbf14c1 100644
--- a/packages/jest-circus/src/state.ts
+++ b/packages/jest-circus/src/state.ts
@@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
-import type {Circus} from '@jest/types';
+import type {Circus, Global} from '@jest/types';
import eventHandler from './eventHandler';
import formatNodeAssertErrors from './formatNodeAssertErrors';
import {STATE_SYM} from './types';
@@ -39,14 +39,15 @@ const createState = (): Circus.State => {
/* eslint-disable no-restricted-globals */
export const resetState = (): void => {
- global[STATE_SYM] = createState();
+ (global as Global.Global)[STATE_SYM] = createState();
};
resetState();
-export const getState = (): Circus.State => global[STATE_SYM];
+export const getState = (): Circus.State =>
+ (global as Global.Global)[STATE_SYM] as Circus.State;
export const setState = (state: Circus.State): Circus.State =>
- (global[STATE_SYM] = state);
+ ((global as Global.Global)[STATE_SYM] = state);
/* eslint-enable */
export const dispatch = async (event: Circus.AsyncEvent): Promise => {
diff --git a/packages/jest-circus/src/types.ts b/packages/jest-circus/src/types.ts
index 6af26152b661..704a35b3733d 100644
--- a/packages/jest-circus/src/types.ts
+++ b/packages/jest-circus/src/types.ts
@@ -5,22 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
-import type {Circus} from '@jest/types';
-
export const STATE_SYM = Symbol('JEST_STATE_SYMBOL');
export const RETRY_TIMES = Symbol.for('RETRY_TIMES');
// To pass this value from Runtime object to state we need to use global[sym]
export const TEST_TIMEOUT_SYMBOL = Symbol.for('TEST_TIMEOUT_SYMBOL');
export const LOG_ERRORS_BEFORE_RETRY = Symbol.for('LOG_ERRORS_BEFORE_RETRY');
-
-declare global {
- // eslint-disable-next-line @typescript-eslint/no-namespace
- namespace NodeJS {
- interface Global {
- [STATE_SYM]: Circus.State;
- [RETRY_TIMES]: string;
- [TEST_TIMEOUT_SYMBOL]: number;
- [LOG_ERRORS_BEFORE_RETRY]: boolean;
- }
- }
-}
diff --git a/packages/jest-circus/src/utils.ts b/packages/jest-circus/src/utils.ts
index fa45f4fbb744..931f28adb64d 100644
--- a/packages/jest-circus/src/utils.ts
+++ b/packages/jest-circus/src/utils.ts
@@ -236,9 +236,9 @@ export const callAsyncCircusFn = (
Promise.resolve().then(() => {
if (returnedValue !== undefined) {
asyncError.message = dedent`
- Test functions cannot both take a 'done' callback and return something. Either use a 'done' callback, or return a promise.
- Returned value: ${prettyFormat(returnedValue, {maxDepth: 3})}
- `;
+ Test functions cannot both take a 'done' callback and return something. Either use a 'done' callback, or return a promise.
+ Returned value: ${prettyFormat(returnedValue, {maxDepth: 3})}
+ `;
return reject(asyncError);
}
@@ -289,9 +289,9 @@ export const callAsyncCircusFn = (
reject(
new Error(
dedent`
- test functions can only return Promise or undefined.
- Returned value: ${prettyFormat(returnedValue, {maxDepth: 3})}
- `,
+ test functions can only return Promise or undefined.
+ Returned value: ${prettyFormat(returnedValue, {maxDepth: 3})}
+ `,
),
);
return;
diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json
index 16d61c11ecae..8022f9b9c09c 100644
--- a/packages/jest-cli/package.json
+++ b/packages/jest-cli/package.json
@@ -42,7 +42,7 @@
"jest": "./bin/jest.js"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"repository": {
"type": "git",
diff --git a/packages/jest-cli/src/run.ts b/packages/jest-cli/src/run.ts
index 98fa78cd175a..3c6babcbe921 100644
--- a/packages/jest-cli/src/run.ts
+++ b/packages/jest-cli/src/run.ts
@@ -85,7 +85,7 @@ const getProjectListFromCLIArgs = (argv: Config.Argv, project?: string) => {
projects.push(project);
}
- if (!projects.length && process.platform === 'win32') {
+ if (projects.length === 0 && process.platform === 'win32') {
try {
projects.push(tryRealpath(process.cwd()));
} catch {
@@ -94,7 +94,7 @@ const getProjectListFromCLIArgs = (argv: Config.Argv, project?: string) => {
}
}
- if (!projects.length) {
+ if (projects.length === 0) {
projects.push(process.cwd());
}
diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json
index e9b914245428..d0903e0e6a0b 100644
--- a/packages/jest-config/package.json
+++ b/packages/jest-config/package.json
@@ -62,7 +62,7 @@
"typescript": "^5.0.4"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-config/src/__tests__/normalize.test.ts b/packages/jest-config/src/__tests__/normalize.test.ts
index afbfe417a222..968b7537a177 100644
--- a/packages/jest-config/src/__tests__/normalize.test.ts
+++ b/packages/jest-config/src/__tests__/normalize.test.ts
@@ -828,9 +828,9 @@ describe('babel-jest', () => {
Resolver = (require('jest-resolve') as typeof import('jest-resolve'))
.default;
Resolver.findNodeModule = jest.fn((name: string) =>
- name.indexOf('babel-jest') === -1
- ? `${path.sep}node_modules${path.sep}${name}`
- : name,
+ name.includes('babel-jest')
+ ? name
+ : `${path.sep}node_modules${path.sep}${name}`,
);
});
diff --git a/packages/jest-config/src/index.ts b/packages/jest-config/src/index.ts
index 43093fd91f92..886e32003df9 100644
--- a/packages/jest-config/src/index.ts
+++ b/packages/jest-config/src/index.ts
@@ -357,7 +357,7 @@ export async function readConfigs(
hasDeprecationWarnings = parsedConfig.hasDeprecationWarnings;
globalConfig = parsedConfig.globalConfig;
configs = [parsedConfig.projectConfig];
- if (globalConfig.projects && globalConfig.projects.length) {
+ if (globalConfig.projects && globalConfig.projects.length > 0) {
// Even though we had one project in CLI args, there might be more
// projects defined in the config.
// In other words, if this was a single project,
@@ -418,7 +418,7 @@ export async function readConfigs(
}
}
- if (!globalConfig || !configs.length) {
+ if (!globalConfig || configs.length === 0) {
throw new Error('jest: No configuration found for any project.');
}
diff --git a/packages/jest-config/src/normalize.ts b/packages/jest-config/src/normalize.ts
index 496d413deb3c..60e7de2945dd 100644
--- a/packages/jest-config/src/normalize.ts
+++ b/packages/jest-config/src/normalize.ts
@@ -255,7 +255,9 @@ const normalizeCollectCoverageFrom = (
value = [];
}
- if (!Array.isArray(initialCollectCoverageFrom)) {
+ if (Array.isArray(initialCollectCoverageFrom)) {
+ value = initialCollectCoverageFrom;
+ } else {
try {
value = JSON.parse(initialCollectCoverageFrom);
} catch {}
@@ -263,8 +265,6 @@ const normalizeCollectCoverageFrom = (
if (options[key] && !Array.isArray(value)) {
value = [initialCollectCoverageFrom];
}
- } else {
- value = initialCollectCoverageFrom;
}
if (value) {
@@ -759,7 +759,7 @@ export default async function normalize(
const globMatches =
typeof project === 'string' ? glob(project) : [];
return projects.concat(
- globMatches.length ? globMatches : project,
+ globMatches.length > 0 ? globMatches : project,
);
},
[],
diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json
index 0393e203b536..27b8f139ad63 100644
--- a/packages/jest-console/package.json
+++ b/packages/jest-console/package.json
@@ -28,7 +28,7 @@
"@jest/test-utils": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-console/src/BufferedConsole.ts b/packages/jest-console/src/BufferedConsole.ts
index 2ab7d73688ed..400a79267439 100644
--- a/packages/jest-console/src/BufferedConsole.ts
+++ b/packages/jest-console/src/BufferedConsole.ts
@@ -43,7 +43,7 @@ export default class BufferedConsole extends Console {
message: LogMessage,
level?: number | null,
): ConsoleBuffer {
- const stackLevel = level != null ? level : 2;
+ const stackLevel = level == null ? 2 : level;
const rawStack = new ErrorWithStack(undefined, BufferedConsole.write).stack;
invariant(rawStack != null, 'always have a stack trace');
@@ -177,6 +177,6 @@ export default class BufferedConsole extends Console {
}
getBuffer(): ConsoleBuffer | undefined {
- return this._buffer.length ? this._buffer : undefined;
+ return this._buffer.length > 0 ? this._buffer : undefined;
}
}
diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json
index 4544fbce2175..6f2e036df8a3 100644
--- a/packages/jest-core/package.json
+++ b/packages/jest-core/package.json
@@ -57,7 +57,7 @@
}
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"repository": {
"type": "git",
diff --git a/packages/jest-core/src/ReporterDispatcher.ts b/packages/jest-core/src/ReporterDispatcher.ts
index 2ab01253315d..b019682548b5 100644
--- a/packages/jest-core/src/ReporterDispatcher.ts
+++ b/packages/jest-core/src/ReporterDispatcher.ts
@@ -112,6 +112,6 @@ export default class ReporterDispatcher {
}
hasErrors(): boolean {
- return this.getErrors().length !== 0;
+ return this.getErrors().length > 0;
}
}
diff --git a/packages/jest-core/src/SearchSource.ts b/packages/jest-core/src/SearchSource.ts
index 5428d71c7c9b..7c83ba570139 100644
--- a/packages/jest-core/src/SearchSource.ts
+++ b/packages/jest-core/src/SearchSource.ts
@@ -72,14 +72,14 @@ export default class SearchSource {
stat: 'roots',
});
- if (config.testMatch.length) {
+ if (config.testMatch.length > 0) {
this._testPathCases.push({
isMatch: globsToMatcher(config.testMatch),
stat: 'testMatch',
});
}
- if (config.testPathIgnorePatterns.length) {
+ if (config.testPathIgnorePatterns.length > 0) {
const testIgnorePatternsRegex = new RegExp(
config.testPathIgnorePatterns.join('|'),
);
@@ -89,7 +89,7 @@ export default class SearchSource {
});
}
- if (config.testRegex.length) {
+ if (config.testRegex.length > 0) {
this._testPathCases.push({
isMatch: regexToMatcher(config.testRegex),
stat: 'testRegex',
@@ -239,7 +239,7 @@ export default class SearchSource {
paths: Array,
collectCoverage: boolean,
): Promise {
- if (Array.isArray(paths) && paths.length) {
+ if (Array.isArray(paths) && paths.length > 0) {
const resolvedPaths = paths.map(p =>
path.resolve(this._context.config.cwd, p),
);
@@ -280,17 +280,17 @@ export default class SearchSource {
paths = this.filterPathsWin32(paths);
}
- if (globalConfig.runTestsByPath && paths && paths.length) {
+ if (globalConfig.runTestsByPath && paths && paths.length > 0) {
return this.findTestsByPaths(paths);
- } else if (globalConfig.findRelatedTests && paths && paths.length) {
+ } else if (globalConfig.findRelatedTests && paths && paths.length > 0) {
return this.findRelatedTestsFromPattern(
paths,
globalConfig.collectCoverage,
);
- } else if (globalConfig.testPathPattern != null) {
- return this.findMatchingTests(globalConfig.testPathPattern);
- } else {
+ } else if (globalConfig.testPathPattern == null) {
return {tests: []};
+ } else {
+ return this.findMatchingTests(globalConfig.testPathPattern);
}
}
diff --git a/packages/jest-core/src/SnapshotInteractiveMode.ts b/packages/jest-core/src/SnapshotInteractiveMode.ts
index 74b7b33c961e..0f9ec0a886b5 100644
--- a/packages/jest-core/src/SnapshotInteractiveMode.ts
+++ b/packages/jest-core/src/SnapshotInteractiveMode.ts
@@ -235,7 +235,7 @@ export default class SnapshotInteractiveMode {
shouldUpdateSnapshot: boolean,
) => unknown,
): void {
- if (!failedSnapshotTestAssertions.length) {
+ if (failedSnapshotTestAssertions.length === 0) {
return;
}
diff --git a/packages/jest-core/src/cli/index.ts b/packages/jest-core/src/cli/index.ts
index 20236a5c2d35..3cbea529ff1c 100644
--- a/packages/jest-core/src/cli/index.ts
+++ b/packages/jest-core/src/cli/index.ts
@@ -121,7 +121,7 @@ export async function runCLI(
const {openHandles} = results;
- if (openHandles && openHandles.length) {
+ if (openHandles && openHandles.length > 0) {
const formatted = formatHandleErrors(openHandles, configs[0]);
const openHandlesString = pluralize('open handle', formatted.length, 's');
diff --git a/packages/jest-core/src/lib/handleDeprecationWarnings.ts b/packages/jest-core/src/lib/handleDeprecationWarnings.ts
index 9cd0fd62ef82..b196edeb05f1 100644
--- a/packages/jest-core/src/lib/handleDeprecationWarnings.ts
+++ b/packages/jest-core/src/lib/handleDeprecationWarnings.ts
@@ -30,7 +30,7 @@ export default function handleDeprecationWarnings(
if (key === KEYS.ENTER) {
resolve();
} else if (
- [KEYS.ESCAPE, KEYS.CONTROL_C, KEYS.CONTROL_D].indexOf(key) !== -1
+ [KEYS.ESCAPE, KEYS.CONTROL_C, KEYS.CONTROL_D].includes(key)
) {
reject();
}
diff --git a/packages/jest-core/src/plugins/UpdateSnapshotsInteractive.ts b/packages/jest-core/src/plugins/UpdateSnapshotsInteractive.ts
index 8d135f55ecc5..7315f4125ad3 100644
--- a/packages/jest-core/src/plugins/UpdateSnapshotsInteractive.ts
+++ b/packages/jest-core/src/plugins/UpdateSnapshotsInteractive.ts
@@ -62,7 +62,7 @@ class UpdateSnapshotInteractivePlugin extends BaseWatchPlugin {
_globalConfig: Config.GlobalConfig,
updateConfigAndRun: Function,
): Promise {
- if (this._failedSnapshotTestAssertions.length) {
+ if (this._failedSnapshotTestAssertions.length > 0) {
return new Promise(res => {
this._snapshotInteractiveMode.run(
this._failedSnapshotTestAssertions,
diff --git a/packages/jest-core/src/runJest.ts b/packages/jest-core/src/runJest.ts
index 45b31137d292..f6d533251fc0 100644
--- a/packages/jest-core/src/runJest.ts
+++ b/packages/jest-core/src/runJest.ts
@@ -43,7 +43,7 @@ const getTestPaths = async (
) => {
const data = await source.getTestPaths(globalConfig, changedFiles, filter);
- if (!data.tests.length && globalConfig.onlyChanged && data.noSCM) {
+ if (data.tests.length === 0 && globalConfig.onlyChanged && data.noSCM) {
new CustomConsole(outputStream, outputStream).log(
'Jest can only find uncommitted changed files in a git or hg ' +
'repository. If you make your project a git or hg ' +
@@ -159,7 +159,7 @@ export default async function runJest({
const Sequencer: typeof TestSequencer = await requireOrImportModule(
globalConfig.testSequencer,
);
- const sequencer = new Sequencer();
+ const sequencer = new Sequencer({contexts, globalConfig});
let allTests: Array = [];
if (changedFilesPromise && globalConfig.watch) {
@@ -294,7 +294,6 @@ export default async function runJest({
...testSchedulerContext,
});
- // @ts-expect-error - second arg is unsupported (but harmless) in Node 14
performance.mark('jest/scheduleAndRun:start', {
detail: {numTests: allTests.length},
});
diff --git a/packages/jest-core/src/watch.ts b/packages/jest-core/src/watch.ts
index 5671e2b5be2b..2c9502cd03e1 100644
--- a/packages/jest-core/src/watch.ts
+++ b/packages/jest-core/src/watch.ts
@@ -243,7 +243,7 @@ export default async function watch(
isValidPath(globalConfig, filePath),
);
- if (validPaths.length) {
+ if (validPaths.length > 0) {
const context = (contexts[index] = createContext(
contexts[index].config,
{hasteFS, moduleMap},
diff --git a/packages/jest-create-cache-key-function/package.json b/packages/jest-create-cache-key-function/package.json
index ff03ba21cd99..ebb08c2fb08f 100644
--- a/packages/jest-create-cache-key-function/package.json
+++ b/packages/jest-create-cache-key-function/package.json
@@ -14,7 +14,7 @@
"jest-util": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json
index ca4584498f3a..eb182798db4d 100644
--- a/packages/jest-diff/package.json
+++ b/packages/jest-diff/package.json
@@ -27,7 +27,7 @@
"strip-ansi": "^6.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-diff/src/getAlignedDiffs.ts b/packages/jest-diff/src/getAlignedDiffs.ts
index fe22d66d1fe8..fbda1a3e6a0e 100644
--- a/packages/jest-diff/src/getAlignedDiffs.ts
+++ b/packages/jest-diff/src/getAlignedDiffs.ts
@@ -22,7 +22,7 @@ const concatenateRelevantDiffs = (
reduced +
(diff[0] === DIFF_EQUAL
? diff[1]
- : diff[0] === op && diff[1].length !== 0 // empty if change is newline
+ : diff[0] === op && diff[1].length > 0 // empty if change is newline
? changeColor(diff[1])
: ''),
'',
@@ -31,8 +31,8 @@ const concatenateRelevantDiffs = (
// Encapsulate change lines until either a common newline or the end.
class ChangeBuffer {
private readonly op: number;
- private line: Array; // incomplete line
- private lines: Array; // complete lines
+ private readonly line: Array; // incomplete line
+ private readonly lines: Array; // complete lines
private readonly changeColor: DiffOptionsColor;
constructor(op: number, changeColor: DiffOptionsColor) {
@@ -54,14 +54,14 @@ class ChangeBuffer {
// therefore change diffs have change color;
// otherwise then it has line color only.
this.lines.push(
- this.line.length !== 1
- ? new Diff(
+ this.line.length === 1
+ ? this.line[0][0] === this.op
+ ? this.line[0] // can use instance
+ : new Diff(this.op, this.line[0][1])
+ : new Diff(
this.op,
concatenateRelevantDiffs(this.op, this.line, this.changeColor),
- )
- : this.line[0][0] === this.op
- ? this.line[0] // can use instance
- : new Diff(this.op, this.line[0][1]), // was common diff
+ ), // was common diff
);
this.line.length = 0;
}
@@ -88,7 +88,7 @@ class ChangeBuffer {
// A middle substring is a change line.
this.pushSubstring(substring);
this.pushLine();
- } else if (substring.length !== 0) {
+ } else if (substring.length > 0) {
// The last substring starts a change line, if it is not empty.
// Important: This non-empty condition also automatically omits
// the newline appended to the end of expected and received strings.
@@ -173,7 +173,7 @@ class CommonBuffer {
} else if (i < iLast) {
// A middle substring is a common line.
this.pushDiffCommonLine(new Diff(op, substring));
- } else if (substring.length !== 0) {
+ } else if (substring.length > 0) {
// The last substring starts a change line, if it is not empty.
// Important: This non-empty condition also automatically omits
// the newline appended to the end of expected and received strings.
diff --git a/packages/jest-diff/src/joinAlignedDiffs.ts b/packages/jest-diff/src/joinAlignedDiffs.ts
index 0568033c7f5b..4df47d6b69fb 100644
--- a/packages/jest-diff/src/joinAlignedDiffs.ts
+++ b/packages/jest-diff/src/joinAlignedDiffs.ts
@@ -21,15 +21,15 @@ const printDiffLine = (
trailingSpaceFormatter: DiffOptionsColor,
emptyFirstOrLastLinePlaceholder: string,
): string =>
- line.length !== 0
- ? color(
+ line.length === 0
+ ? indicator === ' '
+ ? isFirstOrLast && emptyFirstOrLastLinePlaceholder.length > 0
+ ? color(`${indicator} ${emptyFirstOrLastLinePlaceholder}`)
+ : ''
+ : color(indicator)
+ : color(
`${indicator} ${formatTrailingSpaces(line, trailingSpaceFormatter)}`,
- )
- : indicator !== ' '
- ? color(indicator)
- : isFirstOrLast && emptyFirstOrLastLinePlaceholder.length !== 0
- ? color(`${indicator} ${emptyFirstOrLastLinePlaceholder}`)
- : '';
+ );
const printDeleteLine = (
line: string,
diff --git a/packages/jest-diff/src/printDiffs.ts b/packages/jest-diff/src/printDiffs.ts
index b32acd5c90a1..bd545490cbac 100644
--- a/packages/jest-diff/src/printDiffs.ts
+++ b/packages/jest-diff/src/printDiffs.ts
@@ -31,7 +31,7 @@ export const diffStringsUnified = (
b: string,
options?: DiffOptions,
): string => {
- if (a !== b && a.length !== 0 && b.length !== 0) {
+ if (a !== b && a.length > 0 && b.length > 0) {
const isMultiline = a.includes('\n') || b.includes('\n');
// getAlignedDiffs assumes that a newline was appended to the strings.
diff --git a/packages/jest-docblock/package.json b/packages/jest-docblock/package.json
index 31b48fd0632f..0497db933410 100644
--- a/packages/jest-docblock/package.json
+++ b/packages/jest-docblock/package.json
@@ -23,7 +23,7 @@
"@types/node": "*"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-docblock/src/index.ts b/packages/jest-docblock/src/index.ts
index e91df794e081..31a253e52e89 100644
--- a/packages/jest-docblock/src/index.ts
+++ b/packages/jest-docblock/src/index.ts
@@ -115,7 +115,7 @@ export function print({
head +
line +
(comments ? printedComments : '') +
- (comments && keys.length ? start + line : '') +
+ (comments && keys.length > 0 ? start + line : '') +
printedObject +
tail
);
diff --git a/packages/jest-each/package.json b/packages/jest-each/package.json
index 06a9f85ea004..751eeb2610c2 100644
--- a/packages/jest-each/package.json
+++ b/packages/jest-each/package.json
@@ -32,7 +32,7 @@
"pretty-format": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json
index a987fc6058ff..033614f3d268 100644
--- a/packages/jest-environment-jsdom/package.json
+++ b/packages/jest-environment-jsdom/package.json
@@ -38,7 +38,7 @@
}
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-environment-jsdom/src/index.ts b/packages/jest-environment-jsdom/src/index.ts
index 2dbc4caaad5d..994108dd2005 100644
--- a/packages/jest-environment-jsdom/src/index.ts
+++ b/packages/jest-environment-jsdom/src/index.ts
@@ -38,7 +38,7 @@ export default class JSDOMEnvironment implements JestEnvironment {
private errorEventListener: ((event: Event & {error: Error}) => void) | null;
moduleMocker: ModuleMocker | null;
customExportConditions = ['browser'];
- private _configuredExportConditions?: Array;
+ private readonly _configuredExportConditions?: Array;
constructor(config: JestEnvironmentConfig, context: EnvironmentContext) {
const {projectConfig} = config;
@@ -73,7 +73,7 @@ export default class JSDOMEnvironment implements JestEnvironment {
throw new Error('JSDOM did not return a Window object');
}
- // @ts-expect-error - for "universal" code (code should use `globalThis`)
+ // TODO: remove at some point - for "universal" code (code should use `globalThis`)
global.global = global;
// Node's error-message stack size is limited at 10, but it's pretty useful
diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json
index 96ce939089fa..b2a7ee424f70 100644
--- a/packages/jest-environment-node/package.json
+++ b/packages/jest-environment-node/package.json
@@ -28,7 +28,7 @@
"@jest/test-utils": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-environment-node/src/index.ts b/packages/jest-environment-node/src/index.ts
index 13be75062742..9510fdba8246 100644
--- a/packages/jest-environment-node/src/index.ts
+++ b/packages/jest-environment-node/src/index.ts
@@ -67,7 +67,7 @@ export default class NodeEnvironment implements JestEnvironment {
global: Global.Global;
moduleMocker: ModuleMocker | null;
customExportConditions = ['node', 'node-addons'];
- private _configuredExportConditions?: Array;
+ private readonly _configuredExportConditions?: Array;
// while `context` is unused, it should always be passed
constructor(config: JestEnvironmentConfig, _context: EnvironmentContext) {
@@ -129,7 +129,6 @@ export default class NodeEnvironment implements JestEnvironment {
}
}
- // @ts-expect-error - Buffer and gc is "missing"
global.global = global;
global.Buffer = Buffer;
global.ArrayBuffer = ArrayBuffer;
diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json
index 3e91305448d7..eae4c483baa4 100644
--- a/packages/jest-environment/package.json
+++ b/packages/jest-environment/package.json
@@ -23,7 +23,7 @@
"jest-mock": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-expect/package.json b/packages/jest-expect/package.json
index c4c8f6f5dcbb..3ec6a7497efe 100644
--- a/packages/jest-expect/package.json
+++ b/packages/jest-expect/package.json
@@ -25,7 +25,7 @@
"tsd-lite": "^0.7.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json
index 4d38a871cb14..29279d9695d1 100644
--- a/packages/jest-fake-timers/package.json
+++ b/packages/jest-fake-timers/package.json
@@ -29,7 +29,7 @@
"@types/sinonjs__fake-timers": "^8.1.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-fake-timers/src/legacyFakeTimers.ts b/packages/jest-fake-timers/src/legacyFakeTimers.ts
index e4e05fec7618..5aad100821ed 100644
--- a/packages/jest-fake-timers/src/legacyFakeTimers.ts
+++ b/packages/jest-fake-timers/src/legacyFakeTimers.ts
@@ -70,7 +70,7 @@ export default class FakeTimers {
private _disposed: boolean;
private _fakeTimerAPIs!: FakeTimerAPI;
private _fakingTime = false;
- private _global: typeof globalThis;
+ private readonly _global: typeof globalThis;
private _immediates!: Array;
private readonly _maxLoops: number;
private readonly _moduleMocker: ModuleMocker;
@@ -224,11 +224,11 @@ export default class FakeTimers {
// Some of the immediate calls could be enqueued
// during the previous handling of the timers, we should
// run them as well.
- if (this._immediates.length) {
+ if (this._immediates.length > 0) {
this.runAllImmediates();
}
- if (this._ticks.length) {
+ if (this._ticks.length > 0) {
this.runAllTicks();
}
}
diff --git a/packages/jest-get-type/package.json b/packages/jest-get-type/package.json
index 356782c0248c..5daa3eff7b9f 100644
--- a/packages/jest-get-type/package.json
+++ b/packages/jest-get-type/package.json
@@ -8,7 +8,7 @@
"directory": "packages/jest-get-type"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/jest-globals/package.json b/packages/jest-globals/package.json
index 13bbc5daedd5..097c20179b65 100644
--- a/packages/jest-globals/package.json
+++ b/packages/jest-globals/package.json
@@ -7,7 +7,7 @@
"directory": "packages/jest-globals"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json
index b645bce08752..bfe0c5e2e4ac 100644
--- a/packages/jest-haste-map/package.json
+++ b/packages/jest-haste-map/package.json
@@ -38,7 +38,7 @@
"fsevents": "^2.3.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-haste-map/src/crawlers/node.ts b/packages/jest-haste-map/src/crawlers/node.ts
index 8555eeb7b415..12ae165422ed 100644
--- a/packages/jest-haste-map/src/crawlers/node.ts
+++ b/packages/jest-haste-map/src/crawlers/node.ts
@@ -105,7 +105,7 @@ function find(
search(file);
} else {
const ext = path.extname(file).substr(1);
- if (extensions.indexOf(ext) !== -1) {
+ if (extensions.includes(ext)) {
result.push([file, stat.mtime.getTime(), stat.size]);
}
}
@@ -144,7 +144,7 @@ function findNative(
args.push('-type', 'f');
}
- if (extensions.length) {
+ if (extensions.length > 0) {
args.push('(');
}
extensions.forEach((ext, index) => {
@@ -154,7 +154,7 @@ function findNative(
args.push('-iname');
args.push(`*.${ext}`);
});
- if (extensions.length) {
+ if (extensions.length > 0) {
args.push(')');
}
@@ -175,9 +175,7 @@ function findNative(
.filter(x => !ignore(x));
const result: Result = [];
let count = lines.length;
- if (!count) {
- callback([]);
- } else {
+ if (count) {
lines.forEach(path => {
fs.stat(path, (err, stat) => {
// Filter out symlinks that describe directories
@@ -189,6 +187,8 @@ function findNative(
}
});
});
+ } else {
+ callback([]);
}
});
}
diff --git a/packages/jest-haste-map/src/crawlers/watchman.ts b/packages/jest-haste-map/src/crawlers/watchman.ts
index ef5b63ca0059..e795050fd0f7 100644
--- a/packages/jest-haste-map/src/crawlers/watchman.ts
+++ b/packages/jest-haste-map/src/crawlers/watchman.ts
@@ -135,7 +135,7 @@ export async function watchmanCrawl(options: CrawlerOptions): Promise<{
'list-capabilities',
);
- if (capabilities.indexOf('field-content.sha1hex') !== -1) {
+ if (capabilities.includes('field-content.sha1hex')) {
fields.push('content.sha1hex');
}
}
@@ -210,11 +210,11 @@ export async function watchmanCrawl(options: CrawlerOptions): Promise<{
const since = clocks.get(fastPath.relative(rootDir, root));
const query =
- since !== undefined
+ since === undefined
? // Use the `since` generator if we have a clock available
- {expression, fields, since}
+ {expression, fields, glob, glob_includedotfiles: true}
: // Otherwise use the `glob` filter
- {expression, fields, glob, glob_includedotfiles: true};
+ {expression, fields, since};
const response = await cmd(
'query',
diff --git a/packages/jest-haste-map/src/index.ts b/packages/jest-haste-map/src/index.ts
index 37d7c0e2b171..ef5fec266827 100644
--- a/packages/jest-haste-map/src/index.ts
+++ b/packages/jest-haste-map/src/index.ts
@@ -215,7 +215,7 @@ class HasteMap extends EventEmitter implements IHasteMap {
private _changeInterval?: ReturnType;
private readonly _console: Console;
private _isWatchmanInstalledPromise: Promise | null = null;
- private _options: InternalOptions;
+ private readonly _options: InternalOptions;
private _watchers: Array = [];
private _worker: JestWorkerFarm | HasteWorker | null = null;
@@ -670,7 +670,7 @@ class HasteMap extends EventEmitter implements IHasteMap {
let map: ModuleMapData;
let mocks: MockData;
let filesToProcess: FileData;
- if (changedFiles === undefined || removedFiles.size) {
+ if (changedFiles === undefined || removedFiles.size > 0) {
map = new Map();
mocks = new Map();
filesToProcess = hasteMap.files;
@@ -852,7 +852,7 @@ class HasteMap extends EventEmitter implements IHasteMap {
};
const emitChange = () => {
- if (eventsQueue.length) {
+ if (eventsQueue.length > 0) {
mustCopy = true;
const changeEvent: ChangeEvent = {
eventsQueue,
@@ -1077,7 +1077,7 @@ class HasteMap extends EventEmitter implements IHasteMap {
clearInterval(this._changeInterval);
}
- if (!this._watchers.length) {
+ if (this._watchers.length === 0) {
return;
}
diff --git a/packages/jest-haste-map/src/lib/getPlatformExtension.ts b/packages/jest-haste-map/src/lib/getPlatformExtension.ts
index 079470b62bb0..2048e1624216 100644
--- a/packages/jest-haste-map/src/lib/getPlatformExtension.ts
+++ b/packages/jest-haste-map/src/lib/getPlatformExtension.ts
@@ -20,7 +20,7 @@ export default function getPlatformExtension(
const platform = file.substring(secondToLast + 1, last);
// If an overriding platform array is passed, check that first
- if (platforms && platforms.indexOf(platform) !== -1) {
+ if (platforms && platforms.includes(platform)) {
return platform;
}
return SUPPORTED_PLATFORM_EXTS.has(platform) ? platform : null;
diff --git a/packages/jest-haste-map/src/watchers/FSEventsWatcher.ts b/packages/jest-haste-map/src/watchers/FSEventsWatcher.ts
index ec529bf87baf..77536c183a8f 100644
--- a/packages/jest-haste-map/src/watchers/FSEventsWatcher.ts
+++ b/packages/jest-haste-map/src/watchers/FSEventsWatcher.ts
@@ -140,7 +140,7 @@ export class FSEventsWatcher extends EventEmitter {
if (this.doIgnore(relativePath)) {
return false;
}
- return this.glob.length
+ return this.glob.length > 0
? micromatch([relativePath], this.glob, {dot: this.dot}).length > 0
: this.dot || micromatch([relativePath], '**/*').length > 0;
}
diff --git a/packages/jest-haste-map/src/watchers/NodeWatcher.js b/packages/jest-haste-map/src/watchers/NodeWatcher.js
index dfc08a8ae31d..0168fe35ba9c 100644
--- a/packages/jest-haste-map/src/watchers/NodeWatcher.js
+++ b/packages/jest-haste-map/src/watchers/NodeWatcher.js
@@ -254,14 +254,14 @@ module.exports = class NodeWatcher extends EventEmitter {
*/
normalizeChange(dir, event, file) {
- if (!file) {
+ if (file) {
+ this.processChange(dir, event, path.normalize(file));
+ } else {
this.detectChangedFile(dir, event, actualFile => {
if (actualFile) {
this.processChange(dir, event, actualFile);
}
});
- } else {
- this.processChange(dir, event, path.normalize(file));
}
}
diff --git a/packages/jest-haste-map/src/watchers/WatchmanWatcher.js b/packages/jest-haste-map/src/watchers/WatchmanWatcher.js
index bbbf6c86de4f..e068a8458cdf 100644
--- a/packages/jest-haste-map/src/watchers/WatchmanWatcher.js
+++ b/packages/jest-haste-map/src/watchers/WatchmanWatcher.js
@@ -230,9 +230,7 @@ WatchmanWatcher.prototype.handleFileChange = function (changeDescriptor) {
return;
}
- if (!changeDescriptor.exists) {
- self.emitEvent(DELETE_EVENT, relativePath, self.root);
- } else {
+ if (changeDescriptor.exists) {
fs.lstat(absPath, (error, stat) => {
// Files can be deleted between the event and the lstat call
// the most reliable thing to do here is to ignore the event.
@@ -251,6 +249,8 @@ WatchmanWatcher.prototype.handleFileChange = function (changeDescriptor) {
self.emitEvent(eventType, relativePath, self.root, stat);
}
});
+ } else {
+ self.emitEvent(DELETE_EVENT, relativePath, self.root);
}
};
@@ -294,11 +294,11 @@ WatchmanWatcher.prototype.close = function () {
*/
function handleError(self, error) {
- if (error != null) {
+ if (error == null) {
+ return false;
+ } else {
self.emit('error', error);
return true;
- } else {
- return false;
}
}
diff --git a/packages/jest-haste-map/src/watchers/common.js b/packages/jest-haste-map/src/watchers/common.js
index 514e94aa49a2..883e613f57e7 100644
--- a/packages/jest-haste-map/src/watchers/common.js
+++ b/packages/jest-haste-map/src/watchers/common.js
@@ -60,7 +60,7 @@ exports.isFileIncluded = function (globs, dot, doIgnore, relativePath) {
if (doIgnore(relativePath)) {
return false;
}
- return globs.length
+ return globs.length > 0
? micromatch.some(relativePath, globs, {dot})
: dot || micromatch.some(relativePath, '**/*');
};
diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json
index 62e7b06cb1dd..2b9e44b7846e 100644
--- a/packages/jest-jasmine2/package.json
+++ b/packages/jest-jasmine2/package.json
@@ -39,7 +39,7 @@
"@types/co": "^4.6.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-jasmine2/src/index.ts b/packages/jest-jasmine2/src/index.ts
index 1f877cbf60c4..edbd92cb857f 100644
--- a/packages/jest-jasmine2/src/index.ts
+++ b/packages/jest-jasmine2/src/index.ts
@@ -225,7 +225,7 @@ const addSnapshotData = (results: TestResult, snapshotState: SnapshotState) => {
results.snapshot.matched = snapshotState.matched;
results.snapshot.unmatched = snapshotState.unmatched;
results.snapshot.updated = snapshotState.updated;
- results.snapshot.unchecked = !status.deleted ? uncheckedCount : 0;
+ results.snapshot.unchecked = status.deleted ? 0 : uncheckedCount;
// Copy the array to prevent memory leaks
results.snapshot.uncheckedKeys = Array.from(uncheckedKeys);
diff --git a/packages/jest-jasmine2/src/jasmine/CallTracker.ts b/packages/jest-jasmine2/src/jasmine/CallTracker.ts
index fa138e0f7f42..030d95fb2da3 100644
--- a/packages/jest-jasmine2/src/jasmine/CallTracker.ts
+++ b/packages/jest-jasmine2/src/jasmine/CallTracker.ts
@@ -54,7 +54,7 @@ class CallTracker {
};
this.any = function () {
- return !!calls.length;
+ return calls.length > 0;
};
this.count = function () {
diff --git a/packages/jest-jasmine2/src/jasmine/Env.ts b/packages/jest-jasmine2/src/jasmine/Env.ts
index 8418e689c7da..32ff7a1b54b0 100644
--- a/packages/jest-jasmine2/src/jasmine/Env.ts
+++ b/packages/jest-jasmine2/src/jasmine/Env.ts
@@ -295,7 +295,7 @@ export default function jasmineEnv(j$: Jasmine) {
this.execute = async function (runnablesToRun, suiteTree = topSuite) {
if (!runnablesToRun) {
- if (focusedRunnables.length) {
+ if (focusedRunnables.length > 0) {
runnablesToRun = focusedRunnables;
} else {
runnablesToRun = [suiteTree.id];
@@ -688,9 +688,9 @@ export default function jasmineEnv(j$: Jasmine) {
const check = isError(error);
checkIsError = check.isError;
- message = check.message;
+ message = check.message || undefined;
}
- const errorAsErrorObject = checkIsError ? error : new Error(message!);
+ const errorAsErrorObject = checkIsError ? error : new Error(message);
const runnable = currentRunnable();
if (!runnable) {
diff --git a/packages/jest-jasmine2/src/jasmine/Spec.ts b/packages/jest-jasmine2/src/jasmine/Spec.ts
index c04dc85203a9..6ca9ceee8a01 100644
--- a/packages/jest-jasmine2/src/jasmine/Spec.ts
+++ b/packages/jest-jasmine2/src/jasmine/Spec.ts
@@ -103,7 +103,7 @@ export default class Spec {
return !!(
e &&
e.toString &&
- e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1
+ e.toString().includes(Spec.pendingSpecExceptionMessage)
);
}
diff --git a/packages/jest-jasmine2/src/jasmine/jasmineLight.ts b/packages/jest-jasmine2/src/jasmine/jasmineLight.ts
index 3a1cb0b66c1e..9146bde3e1cc 100644
--- a/packages/jest-jasmine2/src/jasmine/jasmineLight.ts
+++ b/packages/jest-jasmine2/src/jasmine/jasmineLight.ts
@@ -30,6 +30,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/* eslint-disable sort-keys, local/prefer-spread-eventually, local/prefer-rest-params-eventually */
+import type {Global} from '@jest/types';
import type {Jasmine, SpecDefinitionsFn} from '../types';
import Env from './Env';
import JsApiReporter from './JsApiReporter';
@@ -58,12 +59,16 @@ export const create = function (createOptions: Record): Jasmine {
configurable: true,
enumerable: true,
get() {
- // eslint-disable-next-line no-restricted-globals
- return global[testTimeoutSymbol] || createOptions.testTimeout || 5000;
+ return (
+ // eslint-disable-next-line no-restricted-globals
+ (global as Global.Global)[testTimeoutSymbol] ||
+ createOptions.testTimeout ||
+ 5000
+ );
},
set(value) {
// eslint-disable-next-line no-restricted-globals
- global[testTimeoutSymbol] = value;
+ (global as Global.Global)[testTimeoutSymbol] = value;
},
});
diff --git a/packages/jest-jasmine2/src/jestExpect.ts b/packages/jest-jasmine2/src/jestExpect.ts
index 4444ae59c834..c1d15059d161 100644
--- a/packages/jest-jasmine2/src/jestExpect.ts
+++ b/packages/jest-jasmine2/src/jestExpect.ts
@@ -8,15 +8,16 @@
/* eslint-disable local/prefer-spread-eventually */
import {jestExpect} from '@jest/expect';
+import type {Global} from '@jest/types';
import type {JasmineMatchersObject} from './types';
export default function jestExpectAdapter(config: {expand: boolean}): void {
// eslint-disable-next-line no-restricted-globals
- global.expect = jestExpect;
+ (global as Global.Global).expect = jestExpect;
jestExpect.setState({expand: config.expand});
// eslint-disable-next-line no-restricted-globals
- const jasmine = global.jasmine;
+ const jasmine = (global as Global.Global).jasmine;
jasmine.anything = jestExpect.anything;
jasmine.any = jestExpect.any;
jasmine.objectContaining = jestExpect.objectContaining;
diff --git a/packages/jest-jasmine2/src/setup_jest_globals.ts b/packages/jest-jasmine2/src/setup_jest_globals.ts
index 2ec09f3d587d..15a04434515d 100644
--- a/packages/jest-jasmine2/src/setup_jest_globals.ts
+++ b/packages/jest-jasmine2/src/setup_jest_globals.ts
@@ -32,7 +32,7 @@ export type SetupOptions = {
const addSuppressedErrors = (result: SpecResult) => {
const {suppressedErrors} = jestExpect.getState();
jestExpect.setState({suppressedErrors: []});
- if (suppressedErrors.length) {
+ if (suppressedErrors.length > 0) {
result.status = 'failed';
result.failedExpectations = suppressedErrors.map(error => ({
@@ -50,7 +50,7 @@ const addSuppressedErrors = (result: SpecResult) => {
const addAssertionErrors = (result: SpecResult) => {
const assertionErrors = jestExpect.extractExpectedAssertionsErrors();
- if (assertionErrors.length) {
+ if (assertionErrors.length > 0) {
const jasmineErrors = assertionErrors.map(({actual, error, expected}) => ({
actual,
expected,
diff --git a/packages/jest-jasmine2/src/treeProcessor.ts b/packages/jest-jasmine2/src/treeProcessor.ts
index 6a8924471c92..960336c50600 100644
--- a/packages/jest-jasmine2/src/treeProcessor.ts
+++ b/packages/jest-jasmine2/src/treeProcessor.ts
@@ -33,7 +33,7 @@ export default function treeProcessor(options: Options): void {
options;
function isEnabled(node: TreeNode, parentEnabled: boolean) {
- return parentEnabled || runnableIds.indexOf(node.id) !== -1;
+ return parentEnabled || runnableIds.includes(node.id);
}
function getNodeHandler(node: TreeNode, parentEnabled: boolean) {
diff --git a/packages/jest-jasmine2/src/types.ts b/packages/jest-jasmine2/src/types.ts
index d2d74fae84f9..6ed1323b8ada 100644
--- a/packages/jest-jasmine2/src/types.ts
+++ b/packages/jest-jasmine2/src/types.ts
@@ -6,6 +6,7 @@
*/
import type {AssertionError} from 'assert';
+import type * as Process from 'process';
import type {AsymmetricMatchers, JestExpect} from '@jest/expect';
import type CallTracker from './jasmine/CallTracker';
import type Env from './jasmine/Env';
@@ -69,7 +70,7 @@ export type Jasmine = {
version: string;
testPath: string;
addMatchers: (matchers: JasmineMatchersObject) => void;
-} & AsymmetricMatchers & {process: NodeJS.Process};
+} & AsymmetricMatchers & {process: typeof Process};
declare global {
// eslint-disable-next-line @typescript-eslint/no-namespace
diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json
index 5c95b96765c3..ab718b7282a5 100644
--- a/packages/jest-leak-detector/package.json
+++ b/packages/jest-leak-detector/package.json
@@ -24,7 +24,7 @@
"@types/node": "*"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-leak-detector/src/__tests__/index.test.ts b/packages/jest-leak-detector/src/__tests__/index.test.ts
index 62f9afcb2777..dd5a97dbf2bb 100644
--- a/packages/jest-leak-detector/src/__tests__/index.test.ts
+++ b/packages/jest-leak-detector/src/__tests__/index.test.ts
@@ -7,6 +7,11 @@
import LeakDetector from '../index';
+jest.mock('v8', () => ({
+ ...(jest.requireActual('v8') as Record),
+ getHeapSnapshot: jest.fn(),
+}));
+
const gc = globalThis.gc;
// Some tests override the "gc" value. Let's make sure we roll it back to its
diff --git a/packages/jest-leak-detector/src/index.ts b/packages/jest-leak-detector/src/index.ts
index 2a4ec55b09d2..bea46b4a45e9 100644
--- a/packages/jest-leak-detector/src/index.ts
+++ b/packages/jest-leak-detector/src/index.ts
@@ -7,7 +7,7 @@
///
import {promisify} from 'util';
-import {setFlagsFromString} from 'v8';
+import {getHeapSnapshot, setFlagsFromString} from 'v8';
import {runInNewContext} from 'vm';
import {isPrimitive} from 'jest-get-type';
import {format as prettyFormat} from 'pretty-format';
@@ -48,11 +48,21 @@ export default class LeakDetector {
await tick();
}
+ if (this._isReferenceBeingHeld) {
+ // triggering a heap snapshot is more aggressive than just `global.gc()`,
+ // but it's also quite slow, so only do it if we still think we're leaking.
+ // https://github.com/nodejs/node/pull/48510#issuecomment-1719289759
+ getHeapSnapshot();
+
+ for (let i = 0; i < 10; i++) {
+ await tick();
+ }
+ }
+
return this._isReferenceBeingHeld;
}
private _runGarbageCollector() {
- // @ts-expect-error: not a function on `globalThis`
const isGarbageCollectorHidden = globalThis.gc == null;
// GC is usually hidden, so we have to expose it before running.
diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json
index 5756520c26a3..9c276aeba99a 100644
--- a/packages/jest-matcher-utils/package.json
+++ b/packages/jest-matcher-utils/package.json
@@ -8,7 +8,7 @@
"directory": "packages/jest-matcher-utils"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/jest-matcher-utils/src/index.ts b/packages/jest-matcher-utils/src/index.ts
index e910f7a99039..665cff92539f 100644
--- a/packages/jest-matcher-utils/src/index.ts
+++ b/packages/jest-matcher-utils/src/index.ts
@@ -262,11 +262,11 @@ const getCommonAndChangedSubstrings = (
reduced +
(diff[0] === DIFF_EQUAL
? diff[1]
- : diff[0] !== op
- ? ''
- : hasCommonDiff
- ? INVERTED_COLOR(diff[1])
- : diff[1]),
+ : diff[0] === op
+ ? hasCommonDiff
+ ? INVERTED_COLOR(diff[1])
+ : diff[1]
+ : ''),
'',
);
@@ -285,8 +285,8 @@ const isLineDiffable = (expected: unknown, received: unknown): boolean => {
return (
typeof expected === 'string' &&
typeof received === 'string' &&
- expected.length !== 0 &&
- received.length !== 0 &&
+ expected.length > 0 &&
+ received.length > 0 &&
(MULTILINE_REGEXP.test(expected) || MULTILINE_REGEXP.test(received))
);
}
@@ -325,8 +325,8 @@ export const printDiffOrStringify = (
if (
typeof expected === 'string' &&
typeof received === 'string' &&
- expected.length !== 0 &&
- received.length !== 0 &&
+ expected.length > 0 &&
+ received.length > 0 &&
expected.length <= MAX_DIFF_STRING_LENGTH &&
received.length <= MAX_DIFF_STRING_LENGTH &&
expected !== received
diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json
index d372d571eedd..a363234e6594 100644
--- a/packages/jest-message-util/package.json
+++ b/packages/jest-message-util/package.json
@@ -7,7 +7,7 @@
"directory": "packages/jest-message-util"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/jest-message-util/src/index.ts b/packages/jest-message-util/src/index.ts
index 9455f9b4fb0f..a91a0b5fef75 100644
--- a/packages/jest-message-util/src/index.ts
+++ b/packages/jest-message-util/src/index.ts
@@ -301,7 +301,7 @@ export const formatPath = (
// highlight paths from the current test file
if (
(config.testMatch &&
- config.testMatch.length &&
+ config.testMatch.length > 0 &&
micromatch([filePath], config.testMatch).length > 0) ||
filePath === relativeTestPath
) {
@@ -474,7 +474,7 @@ export const formatResultsErrors = (
[],
);
- if (!failedResults.length) {
+ if (failedResults.length === 0) {
return null;
}
@@ -489,7 +489,7 @@ export const formatResultsErrors = (
TITLE_INDENT +
TITLE_BULLET +
result.ancestorTitles.join(ANCESTRY_SEPARATOR) +
- (result.ancestorTitles.length ? ANCESTRY_SEPARATOR : '') +
+ (result.ancestorTitles.length > 0 ? ANCESTRY_SEPARATOR : '') +
result.title,
)}\n`;
diff --git a/packages/jest-mock/package.json b/packages/jest-mock/package.json
index d76b64721833..24c2cb7e68be 100644
--- a/packages/jest-mock/package.json
+++ b/packages/jest-mock/package.json
@@ -26,7 +26,7 @@
"tsd-lite": "^0.7.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-mock/src/index.ts b/packages/jest-mock/src/index.ts
index 296934a66a85..e58679739ded 100644
--- a/packages/jest-mock/src/index.ts
+++ b/packages/jest-mock/src/index.ts
@@ -651,98 +651,101 @@ export class ModuleMocker {
const prototypeSlots = this._getSlots(prototype);
// eslint-disable-next-line @typescript-eslint/no-this-alias
const mocker = this;
- const mockConstructor = matchArity(function (
- this: ReturnType,
- ...args: Parameters
- ) {
- const mockState = mocker._ensureMockState(f);
- const mockConfig = mocker._ensureMockConfig(f);
- mockState.instances.push(this);
- mockState.contexts.push(this);
- mockState.calls.push(args);
- // Create and record an "incomplete" mock result immediately upon
- // calling rather than waiting for the mock to return. This avoids
- // issues caused by recursion where results can be recorded in the
- // wrong order.
- const mockResult: MockFunctionResult = {
- type: 'incomplete',
- value: undefined,
- };
- mockState.results.push(mockResult);
- mockState.invocationCallOrder.push(mocker._invocationCallCounter++);
-
- // Will be set to the return value of the mock if an error is not thrown
- let finalReturnValue;
- // Will be set to the error that is thrown by the mock (if it throws)
- let thrownError;
- // Will be set to true if the mock throws an error. The presence of a
- // value in `thrownError` is not a 100% reliable indicator because a
- // function could throw a value of undefined.
- let callDidThrowError = false;
-
- try {
- // The bulk of the implementation is wrapped in an immediately
- // executed arrow function so the return value of the mock function
- // can be easily captured and recorded, despite the many separate
- // return points within the logic.
- finalReturnValue = (() => {
- if (this instanceof f) {
- // This is probably being called as a constructor
- prototypeSlots.forEach(slot => {
- // Copy prototype methods to the instance to make
- // it easier to interact with mock instance call and
- // return values
- if (prototype[slot].type === 'function') {
- // @ts-expect-error no index signature
- const protoImpl = this[slot];
- // @ts-expect-error no index signature
- this[slot] = mocker.generateFromMetadata(prototype[slot]);
- // @ts-expect-error no index signature
- this[slot]._protoImpl = protoImpl;
- }
- });
-
- // Run the mock constructor implementation
- const mockImpl = mockConfig.specificMockImpls.length
- ? mockConfig.specificMockImpls.shift()
- : mockConfig.mockImpl;
- return mockImpl && mockImpl.apply(this, arguments);
- }
-
- // If mockImplementationOnce()/mockImplementation() is last set,
- // implementation use the mock
- let specificMockImpl = mockConfig.specificMockImpls.shift();
- if (specificMockImpl === undefined) {
- specificMockImpl = mockConfig.mockImpl;
- }
- if (specificMockImpl) {
- return specificMockImpl.apply(this, arguments);
- }
- // Otherwise use prototype implementation
- if (f._protoImpl) {
- return f._protoImpl.apply(this, arguments);
- }
-
- return undefined;
- })();
- } catch (error) {
- // Store the thrown error so we can record it, then re-throw it.
- thrownError = error;
- callDidThrowError = true;
- throw error;
- } finally {
- // Record the result of the function.
- // NOTE: Intentionally NOT pushing/indexing into the array of mock
- // results here to avoid corrupting results data if mockClear()
- // is called during the execution of the mock.
- // @ts-expect-error reassigning 'incomplete'
- mockResult.type = callDidThrowError ? 'throw' : 'return';
- mockResult.value = callDidThrowError ? thrownError : finalReturnValue;
- }
+ const mockConstructor = matchArity(
+ function (this: ReturnType, ...args: Parameters) {
+ const mockState = mocker._ensureMockState(f);
+ const mockConfig = mocker._ensureMockConfig(f);
+ mockState.instances.push(this);
+ mockState.contexts.push(this);
+ mockState.calls.push(args);
+ // Create and record an "incomplete" mock result immediately upon
+ // calling rather than waiting for the mock to return. This avoids
+ // issues caused by recursion where results can be recorded in the
+ // wrong order.
+ const mockResult: MockFunctionResult = {
+ type: 'incomplete',
+ value: undefined,
+ };
+ mockState.results.push(mockResult);
+ mockState.invocationCallOrder.push(mocker._invocationCallCounter++);
+
+ // Will be set to the return value of the mock if an error is not thrown
+ let finalReturnValue;
+ // Will be set to the error that is thrown by the mock (if it throws)
+ let thrownError;
+ // Will be set to true if the mock throws an error. The presence of a
+ // value in `thrownError` is not a 100% reliable indicator because a
+ // function could throw a value of undefined.
+ let callDidThrowError = false;
+
+ try {
+ // The bulk of the implementation is wrapped in an immediately
+ // executed arrow function so the return value of the mock function
+ // can be easily captured and recorded, despite the many separate
+ // return points within the logic.
+ finalReturnValue = (() => {
+ if (this instanceof f) {
+ // This is probably being called as a constructor
+ prototypeSlots.forEach(slot => {
+ // Copy prototype methods to the instance to make
+ // it easier to interact with mock instance call and
+ // return values
+ if (prototype[slot].type === 'function') {
+ // @ts-expect-error no index signature
+ const protoImpl = this[slot];
+ // @ts-expect-error no index signature
+ this[slot] = mocker.generateFromMetadata(prototype[slot]);
+ // @ts-expect-error no index signature
+ this[slot]._protoImpl = protoImpl;
+ }
+ });
+
+ // Run the mock constructor implementation
+ const mockImpl =
+ mockConfig.specificMockImpls.length > 0
+ ? mockConfig.specificMockImpls.shift()
+ : mockConfig.mockImpl;
+ return mockImpl && mockImpl.apply(this, arguments);
+ }
+
+ // If mockImplementationOnce()/mockImplementation() is last set,
+ // implementation use the mock
+ let specificMockImpl = mockConfig.specificMockImpls.shift();
+ if (specificMockImpl === undefined) {
+ specificMockImpl = mockConfig.mockImpl;
+ }
+ if (specificMockImpl) {
+ return specificMockImpl.apply(this, arguments);
+ }
+ // Otherwise use prototype implementation
+ if (f._protoImpl) {
+ return f._protoImpl.apply(this, arguments);
+ }
+
+ return undefined;
+ })();
+ } catch (error) {
+ // Store the thrown error so we can record it, then re-throw it.
+ thrownError = error;
+ callDidThrowError = true;
+ throw error;
+ } finally {
+ // Record the result of the function.
+ // NOTE: Intentionally NOT pushing/indexing into the array of mock
+ // results here to avoid corrupting results data if mockClear()
+ // is called during the execution of the mock.
+ // @ts-expect-error reassigning 'incomplete'
+ mockResult.type = callDidThrowError ? 'throw' : 'return';
+ mockResult.value = callDidThrowError
+ ? thrownError
+ : finalReturnValue;
+ }
- return finalReturnValue;
- },
- metadata.length || 0);
+ return finalReturnValue;
+ },
+ // eslint-disable-next-line unicorn/explicit-length-check
+ metadata.length || 0,
+ );
const f = this._createMockFunction(metadata, mockConstructor) as Mock;
f._isMockFunction = true;
@@ -953,14 +956,14 @@ export class ModuleMocker {
this._getSlots(metadata.members).forEach(slot => {
const slotMetadata = (metadata.members && metadata.members[slot]) || {};
- if (slotMetadata.ref != null) {
+ if (slotMetadata.ref == null) {
+ mock[slot] = this._generateMock(slotMetadata, callbacks, refs);
+ } else {
callbacks.push(
(function (ref) {
return () => (mock[slot] = refs[ref]);
})(slotMetadata.ref),
);
- } else {
- mock[slot] = this._generateMock(slotMetadata, callbacks, refs);
}
});
@@ -1170,11 +1173,11 @@ export class ModuleMocker {
)}\` property because it is not a function; ${this._typeOf(
original,
)} given instead.${
- typeof original !== 'object'
- ? ` If you are trying to mock a property, use \`jest.replaceProperty(object, '${String(
+ typeof original === 'object'
+ ? ''
+ : ` If you are trying to mock a property, use \`jest.replaceProperty(object, '${String(
methodKey,
)}', value)\` instead.`
- : ''
}`,
);
}
@@ -1267,11 +1270,11 @@ export class ModuleMocker {
)} property because it is not a function; ${this._typeOf(
original,
)} given instead.${
- typeof original !== 'object'
- ? ` If you are trying to mock a property, use \`jest.replaceProperty(object, '${String(
+ typeof original === 'object'
+ ? ''
+ : ` If you are trying to mock a property, use \`jest.replaceProperty(object, '${String(
propertyKey,
)}', value)\` instead.`
- : ''
}`,
);
}
diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json
index 08aeb664e3f8..8adfa79ebb71 100644
--- a/packages/jest-phabricator/package.json
+++ b/packages/jest-phabricator/package.json
@@ -18,7 +18,7 @@
"@jest/test-result": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/jest-regex-util/package.json b/packages/jest-regex-util/package.json
index 7c7efc628aed..0edb37ecb2de 100644
--- a/packages/jest-regex-util/package.json
+++ b/packages/jest-regex-util/package.json
@@ -10,7 +10,7 @@
"@types/node": "*"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/jest-repl/package.json b/packages/jest-repl/package.json
index 5202f7bf064c..173a70e98116 100644
--- a/packages/jest-repl/package.json
+++ b/packages/jest-repl/package.json
@@ -40,7 +40,7 @@
"jest-runtime": "./bin/jest-runtime-cli.js"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-repl/src/cli/runtime-cli.ts b/packages/jest-repl/src/cli/runtime-cli.ts
index 4b4a438ef424..7a35879cfe6b 100644
--- a/packages/jest-repl/src/cli/runtime-cli.ts
+++ b/packages/jest-repl/src/cli/runtime-cli.ts
@@ -52,7 +52,7 @@ export async function run(
return;
}
- if (!argv._.length) {
+ if (argv._.length === 0) {
console.log('Please provide a path to a script. (See --help for details)');
process.on('exit', () => (process.exitCode = 1));
return;
diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json
index 893b486b1d68..5ebf6cfb7403 100644
--- a/packages/jest-reporters/package.json
+++ b/packages/jest-reporters/package.json
@@ -63,7 +63,7 @@
}
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"repository": {
"type": "git",
diff --git a/packages/jest-reporters/src/CoverageReporter.ts b/packages/jest-reporters/src/CoverageReporter.ts
index 953c4ed4be51..390b793d355b 100644
--- a/packages/jest-reporters/src/CoverageReporter.ts
+++ b/packages/jest-reporters/src/CoverageReporter.ts
@@ -75,7 +75,7 @@ export default class CoverageReporter extends BaseReporter {
try {
const coverageReporters = this._globalConfig.coverageReporters || [];
- if (!this._globalConfig.useStderr && coverageReporters.length < 1) {
+ if (!this._globalConfig.useStderr && coverageReporters.length === 0) {
coverageReporters.push('text-summary');
}
coverageReporters.forEach(reporter => {
@@ -113,7 +113,7 @@ export default class CoverageReporter extends BaseReporter {
const config = context.config;
if (
this._globalConfig.collectCoverageFrom &&
- this._globalConfig.collectCoverageFrom.length
+ this._globalConfig.collectCoverageFrom.length > 0
) {
context.hasteFS
.matchFilesWithGlob(
@@ -129,7 +129,7 @@ export default class CoverageReporter extends BaseReporter {
}
});
- if (!files.length) {
+ if (files.length === 0) {
return;
}
@@ -303,7 +303,7 @@ export default class CoverageReporter extends BaseReporter {
.map(filePath => path.resolve(filePath));
}
- if (filesByGlob[absoluteThresholdGroup].indexOf(file) > -1) {
+ if (filesByGlob[absoluteThresholdGroup].includes(file)) {
groupTypeByThresholdGroup[thresholdGroup] =
THRESHOLD_GROUP_TYPES.GLOB;
return agg.concat([[file, thresholdGroup]]);
@@ -317,7 +317,7 @@ export default class CoverageReporter extends BaseReporter {
}
// Neither a glob or a path? Toss it in global if there's a global threshold:
- if (thresholdGroups.indexOf(THRESHOLD_GROUP_TYPES.GLOBAL) > -1) {
+ if (thresholdGroups.includes(THRESHOLD_GROUP_TYPES.GLOBAL)) {
groupTypeByThresholdGroup[THRESHOLD_GROUP_TYPES.GLOBAL] =
THRESHOLD_GROUP_TYPES.GLOBAL;
return files.concat([[file, THRESHOLD_GROUP_TYPES.GLOBAL]]);
diff --git a/packages/jest-reporters/src/NotifyReporter.ts b/packages/jest-reporters/src/NotifyReporter.ts
index acb9f14dc6f2..5b17d9edb734 100644
--- a/packages/jest-reporters/src/NotifyReporter.ts
+++ b/packages/jest-reporters/src/NotifyReporter.ts
@@ -21,7 +21,7 @@ const icon = path.resolve(__dirname, '../assets/jest_logo.png');
export default class NotifyReporter extends BaseReporter {
private readonly _notifier = loadNotifier();
private readonly _globalConfig: Config.GlobalConfig;
- private _context: ReporterContext;
+ private readonly _context: ReporterContext;
static readonly filename = __filename;
@@ -44,19 +44,19 @@ export default class NotifyReporter extends BaseReporter {
firstContext && firstContext.value && firstContext.value.hasteFS;
let packageName;
- if (hasteFS != null) {
+ if (hasteFS == null) {
+ packageName = this._globalConfig.rootDir;
+ } else {
// assuming root package.json is the first one
const [filePath] = hasteFS.matchFiles('package.json');
packageName =
- filePath != null
- ? hasteFS.getModuleName(filePath)
- : this._globalConfig.rootDir;
- } else {
- packageName = this._globalConfig.rootDir;
+ filePath == null
+ ? this._globalConfig.rootDir
+ : hasteFS.getModuleName(filePath);
}
- packageName = packageName != null ? `${packageName} - ` : '';
+ packageName = packageName == null ? '' : `${packageName} - `;
const notifyMode = this._globalConfig.notifyMode;
const statusChanged =
@@ -111,15 +111,7 @@ export default class NotifyReporter extends BaseReporter {
const restartAnswer = 'Run again';
const quitAnswer = 'Exit tests';
- if (!watchMode) {
- this._notifier.notify({
- hint: 'int:transient:1',
- icon,
- message,
- timeout: false,
- title,
- });
- } else {
+ if (watchMode) {
this._notifier.notify(
{
// @ts-expect-error - not all options are supported by all systems (specifically `actions` and `hint`)
@@ -147,6 +139,14 @@ export default class NotifyReporter extends BaseReporter {
}
},
);
+ } else {
+ this._notifier.notify({
+ hint: 'int:transient:1',
+ icon,
+ message,
+ timeout: false,
+ title,
+ });
}
}
diff --git a/packages/jest-reporters/src/Status.ts b/packages/jest-reporters/src/Status.ts
index f1d89b81602b..46099055fe8c 100644
--- a/packages/jest-reporters/src/Status.ts
+++ b/packages/jest-reporters/src/Status.ts
@@ -41,10 +41,10 @@ class CurrentTestList {
add(testPath: string, config: Config.ProjectConfig) {
const index = this._array.indexOf(null);
const record = {config, testPath};
- if (index !== -1) {
- this._array[index] = record;
- } else {
+ if (index === -1) {
this._array.push(record);
+ } else {
+ this._array[index] = record;
}
}
@@ -118,19 +118,19 @@ export default class Status {
addTestCaseResult(test: Test, testCaseResult: TestCaseResult): void {
this._currentTestCases.push({test, testCaseResult});
- if (!this._showStatus) {
- this._emit();
- } else {
+ if (this._showStatus) {
this._debouncedEmit();
+ } else {
+ this._emit();
}
}
testStarted(testPath: string, config: Config.ProjectConfig): void {
this._currentTests.add(testPath, config);
- if (!this._showStatus) {
- this._emit();
- } else {
+ if (this._showStatus) {
this._debouncedEmit();
+ } else {
+ this._emit();
}
}
diff --git a/packages/jest-reporters/src/__tests__/GitHubActionsReporter.test.ts b/packages/jest-reporters/src/__tests__/GitHubActionsReporter.test.ts
index 609b5697a5e4..f4e849b0425d 100644
--- a/packages/jest-reporters/src/__tests__/GitHubActionsReporter.test.ts
+++ b/packages/jest-reporters/src/__tests__/GitHubActionsReporter.test.ts
@@ -90,7 +90,7 @@ describe('annotations', () => {
describe('logs error annotation', () => {
test('when an expectation fails to pass', () => {
- reporter['generateAnnotations'](testMeta, {
+ reporter.generateAnnotations(testMeta, {
testResults: [
{
...testCaseResult,
@@ -104,7 +104,7 @@ describe('annotations', () => {
});
test('when a test has reference error', () => {
- reporter['generateAnnotations'](
+ reporter.generateAnnotations(
{...testMeta, path: '/user/project/__tests__/example.test.js:25:12'},
{
testResults: [
@@ -121,7 +121,7 @@ describe('annotations', () => {
});
test('when test is wrapped in describe block', () => {
- reporter['generateAnnotations'](testMeta, {
+ reporter.generateAnnotations(testMeta, {
testResults: [
{
...testCaseResult,
@@ -137,7 +137,7 @@ describe('annotations', () => {
describe('logs warning annotation before logging errors', () => {
test('when test result includes retry reasons', () => {
- reporter['generateAnnotations'](testMeta, {
+ reporter.generateAnnotations(testMeta, {
testResults: [
{
...testCaseResult,
@@ -198,7 +198,7 @@ describe('logs', () => {
silent: false,
});
- const generated = gha['getResultTree'](testResults, '/', suitePerf);
+ const generated = gha.getResultTree(testResults, '/', suitePerf);
expect(mockedStderrWrite).not.toHaveBeenCalled();
expect(generated).toEqual(expectedResults);
@@ -241,7 +241,7 @@ describe('logs', () => {
silent: false,
});
- const generated = gha['getResultTree'](testResults, '/', suitePerf);
+ const generated = gha.getResultTree(testResults, '/', suitePerf);
expect(mockedStderrWrite).not.toHaveBeenCalled();
expect(generated).toEqual(expectedResults);
@@ -290,7 +290,7 @@ describe('logs', () => {
silent: false,
});
- const generated = gha['getResultTree'](testResults, '/', suitePerf);
+ const generated = gha.getResultTree(testResults, '/', suitePerf);
expect(mockedStderrWrite).not.toHaveBeenCalled();
expect(generated).toEqual(expectedResults);
@@ -339,7 +339,7 @@ describe('logs', () => {
silent: false,
});
- const generated = gha['getResultTree'](testResults, '/', suitePerf);
+ const generated = gha.getResultTree(testResults, '/', suitePerf);
expect(mockedStderrWrite).not.toHaveBeenCalled();
expect(generated).toEqual(expectedResults);
@@ -400,7 +400,7 @@ describe('logs', () => {
silent: false,
});
- const generated = gha['getResultTree'](testResults, '/', suitePerf);
+ const generated = gha.getResultTree(testResults, '/', suitePerf);
expect(mockedStderrWrite).not.toHaveBeenCalled();
expect(generated).toEqual(expectedResults);
@@ -431,7 +431,7 @@ describe('logs', () => {
silent: false,
});
- gha['printResultTree'](generatedTree);
+ gha.printResultTree(generatedTree);
expect(mockedStderrWrite.mock.calls).toMatchSnapshot();
});
@@ -459,7 +459,7 @@ describe('logs', () => {
silent: false,
});
- gha['printResultTree'](generatedTree);
+ gha.printResultTree(generatedTree);
expect(mockedStderrWrite.mock.calls).toMatchSnapshot();
});
@@ -493,7 +493,7 @@ describe('logs', () => {
silent: false,
});
- gha['printResultTree'](generatedTree);
+ gha.printResultTree(generatedTree);
expect(mockedStderrWrite.mock.calls).toMatchSnapshot();
});
@@ -527,7 +527,7 @@ describe('logs', () => {
silent: false,
});
- gha['printResultTree'](generatedTree);
+ gha.printResultTree(generatedTree);
expect(mockedStderrWrite.mock.calls).toMatchSnapshot();
});
@@ -561,7 +561,7 @@ describe('logs', () => {
silent: false,
});
- gha['printResultTree'](generatedTree);
+ gha.printResultTree(generatedTree);
expect(mockedStderrWrite.mock.calls).toMatchSnapshot();
});
@@ -595,7 +595,7 @@ describe('logs', () => {
silent: false,
});
- gha['printResultTree'](generatedTree);
+ gha.printResultTree(generatedTree);
expect(mockedStderrWrite.mock.calls).toMatchSnapshot();
});
@@ -633,7 +633,7 @@ describe('logs', () => {
const gha = new GitHubActionsReporter({} as Config.GlobalConfig, {
silent: false,
});
- gha['generateAnnotations'] = jest.fn();
+ gha.generateAnnotations = jest.fn();
gha.onTestResult(
mockTest as Test,
@@ -677,7 +677,7 @@ describe('logs', () => {
const gha = new GitHubActionsReporter({} as Config.GlobalConfig, {
silent: false,
});
- gha['generateAnnotations'] = jest.fn();
+ gha.generateAnnotations = jest.fn();
gha.onTestResult(
mockTest as Test,
diff --git a/packages/jest-reporters/src/getResultHeader.ts b/packages/jest-reporters/src/getResultHeader.ts
index ac8ad70acd74..9126143918c6 100644
--- a/packages/jest-reporters/src/getResultHeader.ts
+++ b/packages/jest-reporters/src/getResultHeader.ts
@@ -56,5 +56,5 @@ export default function getResultHeader(
return `${status} ${projectDisplayName}${formatTestPath(
projectConfig ?? globalConfig,
testPath,
- )}${testDetail.length ? ` (${testDetail.join(', ')})` : ''}`;
+ )}${testDetail.length > 0 ? ` (${testDetail.join(', ')})` : ''}`;
}
diff --git a/packages/jest-reporters/src/getSnapshotSummary.ts b/packages/jest-reporters/src/getSnapshotSummary.ts
index 18b4be46085d..988dd97429bb 100644
--- a/packages/jest-reporters/src/getSnapshotSummary.ts
+++ b/packages/jest-reporters/src/getSnapshotSummary.ts
@@ -86,7 +86,7 @@ export default function getSnapshotSummary(
);
}
}
- if (snapshots.filesRemovedList && snapshots.filesRemovedList.length) {
+ if (snapshots.filesRemovedList && snapshots.filesRemovedList.length > 0) {
const [head, ...tail] = snapshots.filesRemovedList;
summary.push(` ${DOWN_ARROW} ${DOT}${formatTestPath(globalConfig, head)}`);
diff --git a/packages/jest-reporters/src/getSummary.ts b/packages/jest-reporters/src/getSummary.ts
index f0b6f2ab260f..d01b15d1b2f7 100644
--- a/packages/jest-reporters/src/getSummary.ts
+++ b/packages/jest-reporters/src/getSummary.ts
@@ -131,7 +131,7 @@ export default function getSummary(
? `${chalk.bold.yellow(`${suitesPending} skipped`)}, `
: '') +
(suitesPassed ? `${chalk.bold.green(`${suitesPassed} passed`)}, ` : '') +
- (suitesRun !== suitesTotal ? `${suitesRun} of ${suitesTotal}` : suitesTotal)
+ (suitesRun === suitesTotal ? suitesTotal : `${suitesRun} of ${suitesTotal}`)
} total`;
const updatedTestsFailed =
diff --git a/packages/jest-reporters/src/wrapAnsiString.ts b/packages/jest-reporters/src/wrapAnsiString.ts
index c0d2901e9235..a5cf57ddcff3 100644
--- a/packages/jest-reporters/src/wrapAnsiString.ts
+++ b/packages/jest-reporters/src/wrapAnsiString.ts
@@ -42,7 +42,7 @@ export default function wrapAnsiString(
(lines, [kind, token]) => {
if (kind === 'string') {
if (lastLineLength + token.length > terminalWidth) {
- while (token.length) {
+ while (token.length > 0) {
const chunk = token.slice(0, terminalWidth - lastLineLength);
const remaining = token.slice(
terminalWidth - lastLineLength,
@@ -51,7 +51,7 @@ export default function wrapAnsiString(
lines[lines.length - 1] += chunk;
lastLineLength += chunk.length;
token = remaining;
- if (token.length) {
+ if (token.length > 0) {
lines.push('');
lastLineLength = 0;
}
diff --git a/packages/jest-resolve-dependencies/package.json b/packages/jest-resolve-dependencies/package.json
index 403e37aabe8b..11934ebc3214 100644
--- a/packages/jest-resolve-dependencies/package.json
+++ b/packages/jest-resolve-dependencies/package.json
@@ -28,7 +28,7 @@
"jest-runtime": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-resolve-dependencies/src/index.ts b/packages/jest-resolve-dependencies/src/index.ts
index 99c53d2ea464..651ef494fbd1 100644
--- a/packages/jest-resolve-dependencies/src/index.ts
+++ b/packages/jest-resolve-dependencies/src/index.ts
@@ -101,7 +101,7 @@ export class DependencyResolver {
filter: (file: string) => boolean,
options?: ResolveModuleConfig,
): Array {
- if (!paths.size) {
+ if (paths.size === 0) {
return [];
}
@@ -112,7 +112,7 @@ export class DependencyResolver {
) => {
const visitedModules = new Set();
const result: Array = [];
- while (changed.size) {
+ while (changed.size > 0) {
changed = new Set(
moduleMap.reduce>((acc, module) => {
if (
diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json
index e12d745556e3..11b49ce48523 100644
--- a/packages/jest-resolve/package.json
+++ b/packages/jest-resolve/package.json
@@ -35,7 +35,7 @@
"tsd-lite": "^0.7.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-resolve/src/fileWalkers.ts b/packages/jest-resolve/src/fileWalkers.ts
index 0228a8a723c3..6821310439fb 100644
--- a/packages/jest-resolve/src/fileWalkers.ts
+++ b/packages/jest-resolve/src/fileWalkers.ts
@@ -30,7 +30,6 @@ function statSyncCached(path: string): IPathType {
let stat;
try {
- // @ts-expect-error TS2554 - throwIfNoEntry is only available in recent version of node, but inclusion of the option is a backward compatible no-op.
stat = fs.statSync(path, {throwIfNoEntry: false});
} catch (e: any) {
if (!(e && (e.code === 'ENOENT' || e.code === 'ENOTDIR'))) {
diff --git a/packages/jest-resolve/src/resolver.ts b/packages/jest-resolve/src/resolver.ts
index 359acc774faf..9adef706f0d8 100644
--- a/packages/jest-resolve/src/resolver.ts
+++ b/packages/jest-resolve/src/resolver.ts
@@ -648,18 +648,18 @@ export default class Resolver {
}
private _getMockPath(from: string, moduleName: string): string | null {
- return !this.isCoreModule(moduleName)
- ? this.getMockModule(from, moduleName)
- : null;
+ return this.isCoreModule(moduleName)
+ ? null
+ : this.getMockModule(from, moduleName);
}
private async _getMockPathAsync(
from: string,
moduleName: string,
): Promise {
- return !this.isCoreModule(moduleName)
- ? this.getMockModuleAsync(from, moduleName)
- : null;
+ return this.isCoreModule(moduleName)
+ ? null
+ : this.getMockModuleAsync(from, moduleName);
}
private _getVirtualMockPath(
diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json
index 92319a0dc596..bd0ec7b49e1a 100644
--- a/packages/jest-runner/package.json
+++ b/packages/jest-runner/package.json
@@ -49,7 +49,7 @@
"tsd-lite": "^0.7.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-runner/src/runTest.ts b/packages/jest-runner/src/runTest.ts
index f6cc8a35d1ef..ffb458157587 100644
--- a/packages/jest-runner/src/runTest.ts
+++ b/packages/jest-runner/src/runTest.ts
@@ -340,7 +340,7 @@ async function runTestInternal(
const coverage = runtime.getAllCoverageInfoCopy();
if (coverage) {
const coverageKeys = Object.keys(coverage);
- if (coverageKeys.length) {
+ if (coverageKeys.length > 0) {
result.coverage = coverage;
}
}
@@ -353,7 +353,6 @@ async function runTestInternal(
}
if (globalConfig.logHeapUsage) {
- // @ts-expect-error - doesn't exist on globalThis
globalThis.gc?.();
result.memoryUsage = process.memoryUsage().heapUsed;
diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json
index a3713d5ccb17..228a14bdad8e 100644
--- a/packages/jest-runtime/package.json
+++ b/packages/jest-runtime/package.json
@@ -47,7 +47,7 @@
"jest-environment-node": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-runtime/src/__mocks__/createRuntime.js b/packages/jest-runtime/src/__mocks__/createRuntime.js
index fc8b1dde17b7..a391f8eba3b6 100644
--- a/packages/jest-runtime/src/__mocks__/createRuntime.js
+++ b/packages/jest-runtime/src/__mocks__/createRuntime.js
@@ -74,7 +74,7 @@ module.exports = async function createRuntime(filename, projectConfig) {
transform,
});
- if (!projectConfig.roots.length) {
+ if (projectConfig.roots.length === 0) {
projectConfig.roots = [projectConfig.rootDir];
}
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 639e4c4503f5..46bd064769e8 100644
--- a/packages/jest-runtime/src/__tests__/runtime_require_module.test.js
+++ b/packages/jest-runtime/src/__tests__/runtime_require_module.test.js
@@ -41,6 +41,7 @@ describe('Runtime requireModule', () => {
'exports',
'filename',
'id',
+ 'isPreloading',
'loaded',
'path',
'parent',
@@ -60,6 +61,7 @@ describe('Runtime requireModule', () => {
'exports',
'filename',
'id',
+ 'isPreloading',
'loaded',
'path',
'parent',
diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts
index 9b5647215101..61074414b2b5 100644
--- a/packages/jest-runtime/src/index.ts
+++ b/packages/jest-runtime/src/index.ts
@@ -129,7 +129,7 @@ const NODE_MODULES = `${path.sep}node_modules${path.sep}`;
const getModuleNameMapper = (config: Config.ProjectConfig) => {
if (
Array.isArray(config.moduleNameMapper) &&
- config.moduleNameMapper.length
+ config.moduleNameMapper.length > 0
) {
return config.moduleNameMapper.map(([regex, moduleName]) => ({
moduleName,
@@ -942,6 +942,7 @@ export default class Runtime {
exports: {},
filename: modulePath,
id: modulePath,
+ isPreloading: false,
loaded: false,
path: path.dirname(modulePath),
};
@@ -966,9 +967,7 @@ export default class Runtime {
requireInternalModule(from: string, to?: string): T {
if (to) {
- const require = (
- nativeModule.createRequire ?? nativeModule.createRequireFromPath
- )(from);
+ const require = nativeModule.createRequire(from);
if (INTERNAL_MODULE_REQUIRE_OUTSIDE_OPTIMIZED_MODULES.has(to)) {
return require(to);
}
@@ -1054,6 +1053,7 @@ export default class Runtime {
exports: {},
filename: modulePath,
id: modulePath,
+ isPreloading: false,
loaded: false,
path: path.dirname(modulePath),
};
@@ -1467,7 +1467,7 @@ export default class Runtime {
'The first argument to require.resolve.paths must be a string. Received null or undefined.',
);
}
- if (!moduleName.length) {
+ if (moduleName.length === 0) {
throw new Error(
'The first argument to require.resolve.paths must not be the empty string.',
);
@@ -1803,6 +1803,7 @@ export default class Runtime {
exports: {},
filename,
id: filename,
+ isPreloading: false,
loaded: false,
path: path.dirname(filename),
});
@@ -1821,24 +1822,6 @@ export default class Runtime {
if ('createRequire' in nativeModule) {
Module.createRequire = createRequire;
}
- if ('createRequireFromPath' in nativeModule) {
- Module.createRequireFromPath = function createRequireFromPath(
- filename: string | URL,
- ) {
- if (typeof filename !== 'string') {
- const error: NodeJS.ErrnoException = new TypeError(
- `The argument 'filename' must be string. Received '${filename}'.${
- filename instanceof URL
- ? ' Use createRequire for URL filename.'
- : ''
- }`,
- );
- error.code = 'ERR_INVALID_ARG_TYPE';
- throw error;
- }
- return createRequire(filename);
- };
- }
if ('syncBuiltinESMExports' in nativeModule) {
// cast since TS seems very confused about whether it exists or not
(Module as any).syncBuiltinESMExports =
@@ -2408,7 +2391,7 @@ export default class Runtime {
const originalStack = new ReferenceError(`${errorMessage}${testPath}`)
.stack!.split('\n')
// Remove this file from the stack (jest-message-utils will keep one line)
- .filter(line => line.indexOf(__filename) === -1)
+ .filter(line => !line.includes(__filename))
.join('\n');
const {message, stack} = separateMessageFromStack(originalStack);
diff --git a/packages/jest-schemas/package.json b/packages/jest-schemas/package.json
index 977931d88965..7ed94363463e 100644
--- a/packages/jest-schemas/package.json
+++ b/packages/jest-schemas/package.json
@@ -20,7 +20,7 @@
"@sinclair/typebox": "^0.27.8"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json
index 7dcdf317de3c..c53b6317fec1 100644
--- a/packages/jest-snapshot/package.json
+++ b/packages/jest-snapshot/package.json
@@ -54,7 +54,7 @@
"tsd-lite": "^0.7.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-snapshot/src/InlineSnapshots.ts b/packages/jest-snapshot/src/InlineSnapshots.ts
index 2fc26394ee03..ebdf2724fcce 100644
--- a/packages/jest-snapshot/src/InlineSnapshots.ts
+++ b/packages/jest-snapshot/src/InlineSnapshots.ts
@@ -223,7 +223,10 @@ const indent = (snapshot: string, numIndents: number, indentation: string) => {
if (index === 0) {
// First line is either a 1-line snapshot or a blank line.
return line;
- } else if (index !== lines.length - 1) {
+ } else if (index === lines.length - 1) {
+ // The last line should be placed on the same level as the expect call.
+ return indentation.repeat(numIndents) + line;
+ } else {
// Do not indent empty lines.
if (line === '') {
return line;
@@ -231,9 +234,6 @@ const indent = (snapshot: string, numIndents: number, indentation: string) => {
// Not last line, indent one level deeper than expect call.
return indentation.repeat(numIndents + 1) + line;
- } else {
- // The last line should be placed on the same level as the expect call.
- return indentation.repeat(numIndents) + line;
}
})
.join('\n');
@@ -291,7 +291,7 @@ const traverseAst = (
}
});
- if (remainingSnapshots.size) {
+ if (remainingSnapshots.size > 0) {
throw new Error("Jest: Couldn't locate all inline snapshots.");
}
};
diff --git a/packages/jest-snapshot/src/State.ts b/packages/jest-snapshot/src/State.ts
index 99b9a8e2371f..efa6fba2d1c0 100644
--- a/packages/jest-snapshot/src/State.ts
+++ b/packages/jest-snapshot/src/State.ts
@@ -152,7 +152,7 @@ export default class SnapshotState {
saved: false,
};
- if ((this._dirty || this._uncheckedKeys.size) && !isEmpty) {
+ if ((this._dirty || this._uncheckedKeys.size > 0) && !isEmpty) {
if (hasExternalSnapshots) {
saveSnapshotFile(this._snapshotData, this._snapshotPath);
}
@@ -175,6 +175,7 @@ export default class SnapshotState {
}
getUncheckedCount(): number {
+ // eslint-disable-next-line unicorn/explicit-length-check
return this._uncheckedKeys.size || 0;
}
@@ -183,7 +184,7 @@ export default class SnapshotState {
}
removeUncheckedKeys(): void {
- if (this._updateSnapshot === 'all' && this._uncheckedKeys.size) {
+ if (this._updateSnapshot === 'all' && this._uncheckedKeys.size > 0) {
this._dirty = true;
this._uncheckedKeys.forEach(key => delete this._snapshotData[key]);
this._uncheckedKeys.clear();
@@ -243,15 +244,15 @@ export default class SnapshotState {
(this._updateSnapshot === 'new' || this._updateSnapshot === 'all'))
) {
if (this._updateSnapshot === 'all') {
- if (!pass) {
+ if (pass) {
+ this.matched++;
+ } else {
if (hasSnapshot) {
this.updated++;
} else {
this.added++;
}
this._addSnapshot(key, receivedSerialized, {error, isInline});
- } else {
- this.matched++;
}
} else {
this._addSnapshot(key, receivedSerialized, {error, isInline});
@@ -266,26 +267,26 @@ export default class SnapshotState {
pass: true,
};
} else {
- if (!pass) {
- this.unmatched++;
+ if (pass) {
+ this.matched++;
return {
- actual: removeExtraLineBreaks(receivedSerialized),
+ actual: '',
count,
- expected:
- expected !== undefined
- ? removeExtraLineBreaks(expected)
- : undefined,
+ expected: '',
key,
- pass: false,
+ pass: true,
};
} else {
- this.matched++;
+ this.unmatched++;
return {
- actual: '',
+ actual: removeExtraLineBreaks(receivedSerialized),
count,
- expected: '',
+ expected:
+ expected === undefined
+ ? undefined
+ : removeExtraLineBreaks(expected),
key,
- pass: true,
+ pass: false,
};
}
}
diff --git a/packages/jest-snapshot/src/index.ts b/packages/jest-snapshot/src/index.ts
index a0344a7daccc..a77f80a3c64b 100644
--- a/packages/jest-snapshot/src/index.ts
+++ b/packages/jest-snapshot/src/index.ts
@@ -57,8 +57,8 @@ const printSnapshotName = (
hint = '',
count: number,
): string => {
- const hasNames = concatenatedBlockNames.length !== 0;
- const hasHint = hint.length !== 0;
+ const hasNames = concatenatedBlockNames.length > 0;
+ const hasHint = hint.length > 0;
return `Snapshot name: \`${
hasNames ? escapeBacktickString(concatenatedBlockNames) : ''
@@ -262,9 +262,9 @@ export const toMatchInlineSnapshot: MatcherFunctionWithContext<
return _toMatchSnapshot({
context: this,
inlineSnapshot:
- inlineSnapshot !== undefined
- ? stripAddedIndentation(inlineSnapshot)
- : undefined,
+ inlineSnapshot === undefined
+ ? undefined
+ : stripAddedIndentation(inlineSnapshot),
isInline: true,
matcherName,
properties,
@@ -328,7 +328,9 @@ const _toMatchSnapshot = (config: MatchSnapshotConfig) => {
context.utils.subsetEquality,
]);
- if (!propertyPass) {
+ if (propertyPass) {
+ received = deepMerge(received, properties);
+ } else {
const key = snapshotState.fail(fullTestName, received);
const matched = /(\d+)$/.exec(key);
const count = matched === null ? 1 : Number(matched[1]);
@@ -349,8 +351,6 @@ const _toMatchSnapshot = (config: MatchSnapshotConfig) => {
name: matcherName,
pass: false,
};
- } else {
- received = deepMerge(received, properties);
}
}
@@ -454,9 +454,9 @@ export const toThrowErrorMatchingInlineSnapshot: MatcherFunctionWithContext<
{
context: this,
inlineSnapshot:
- inlineSnapshot !== undefined
- ? stripAddedIndentation(inlineSnapshot)
- : undefined,
+ inlineSnapshot === undefined
+ ? undefined
+ : stripAddedIndentation(inlineSnapshot),
isInline: true,
matcherName,
received,
diff --git a/packages/jest-snapshot/src/mockSerializer.ts b/packages/jest-snapshot/src/mockSerializer.ts
index bdc0c7338132..40266e8cd14d 100644
--- a/packages/jest-snapshot/src/mockSerializer.ts
+++ b/packages/jest-snapshot/src/mockSerializer.ts
@@ -20,7 +20,7 @@ export const serialize: NewPlugin['serialize'] = (
const nameString = name === 'jest.fn()' ? '' : ` ${name}`;
let callsString = '';
- if (val.mock.calls.length !== 0) {
+ if (val.mock.calls.length > 0) {
const indentationNext = indentation + config.indent;
callsString = ` {${config.spacingOuter}${indentationNext}"calls": ${printer(
val.mock.calls,
diff --git a/packages/jest-snapshot/src/printSnapshot.ts b/packages/jest-snapshot/src/printSnapshot.ts
index c989182e56a9..9ac63e795f9a 100644
--- a/packages/jest-snapshot/src/printSnapshot.ts
+++ b/packages/jest-snapshot/src/printSnapshot.ts
@@ -114,7 +114,7 @@ export const matcherHintFromConfig = (
options.expectedColor = noColor;
}
- if (typeof hint === 'string' && hint.length !== 0) {
+ if (typeof hint === 'string' && hint.length > 0) {
options.secondArgument = HINT_ARG;
options.secondArgumentColor = BOLD_WEIGHT;
} else if (typeof inlineSnapshot === 'string') {
@@ -126,7 +126,7 @@ export const matcherHintFromConfig = (
}
}
} else {
- if (typeof hint === 'string' && hint.length !== 0) {
+ if (typeof hint === 'string' && hint.length > 0) {
expectedArgument = HINT_ARG;
options.expectedColor = BOLD_WEIGHT;
} else if (typeof inlineSnapshot === 'string') {
@@ -155,11 +155,11 @@ const joinDiffs = (
reduced +
(diff[0] === DIFF_EQUAL
? diff[1]
- : diff[0] !== op
- ? ''
- : hasCommon
- ? INVERTED_COLOR(diff[1])
- : diff[1]),
+ : diff[0] === op
+ ? hasCommon
+ ? INVERTED_COLOR(diff[1])
+ : diff[1]
+ : ''),
'',
);
diff --git a/packages/jest-snapshot/src/utils.ts b/packages/jest-snapshot/src/utils.ts
index ddcbf14cf206..e7e9edfd9b17 100644
--- a/packages/jest-snapshot/src/utils.ts
+++ b/packages/jest-snapshot/src/utils.ts
@@ -251,8 +251,11 @@ export const deepMerge = (target: any, source: any): any => {
Object.keys(source).forEach(key => {
if (isObject(source[key]) && !source[key].$$typeof) {
- if (!(key in target)) Object.assign(mergedOutput, {[key]: source[key]});
- else mergedOutput[key] = deepMerge(target[key], source[key]);
+ if (key in target) {
+ mergedOutput[key] = deepMerge(target[key], source[key]);
+ } else {
+ Object.assign(mergedOutput, {[key]: source[key]});
+ }
} else if (Array.isArray(source[key])) {
mergedOutput[key] = deepMergeArray(target[key], source[key]);
} else {
diff --git a/packages/jest-source-map/package.json b/packages/jest-source-map/package.json
index b7a2d05b9134..8a65f241f086 100644
--- a/packages/jest-source-map/package.json
+++ b/packages/jest-source-map/package.json
@@ -25,7 +25,7 @@
"@types/graceful-fs": "^4.1.3"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-test-result/package.json b/packages/jest-test-result/package.json
index 1e4c68eafdec..909516fbbd5d 100644
--- a/packages/jest-test-result/package.json
+++ b/packages/jest-test-result/package.json
@@ -27,7 +27,7 @@
"jest-resolve": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-test-result/src/formatTestResults.ts b/packages/jest-test-result/src/formatTestResults.ts
index 6347d0582171..e0eb7c7ce540 100644
--- a/packages/jest-test-result/src/formatTestResults.ts
+++ b/packages/jest-test-result/src/formatTestResults.ts
@@ -52,9 +52,9 @@ const formatTestResult = (
return {
assertionResults: testResult.testResults,
coverage:
- codeCoverageFormatter != null
- ? codeCoverageFormatter(testResult.coverage, reporter)
- : testResult.coverage,
+ codeCoverageFormatter == null
+ ? testResult.coverage
+ : codeCoverageFormatter(testResult.coverage, reporter),
endTime: testResult.perfStats.end,
message: testResult.failureMessage ?? '',
name: testResult.testFilePath,
diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json
index c6a4018e3b20..95d7b5c02fa4 100644
--- a/packages/jest-test-sequencer/package.json
+++ b/packages/jest-test-sequencer/package.json
@@ -27,7 +27,7 @@
"@types/graceful-fs": "^4.1.3"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.ts b/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.ts
index 93601bffd481..cb6a03bdf518 100644
--- a/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.ts
+++ b/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.ts
@@ -8,7 +8,7 @@
import * as path from 'path';
import * as mockedFs from 'graceful-fs';
import type {AggregatedResult, Test, TestContext} from '@jest/test-result';
-import {makeProjectConfig} from '@jest/test-utils';
+import {makeGlobalConfig, makeProjectConfig} from '@jest/test-utils';
import TestSequencer from '../index';
jest.mock('graceful-fs', () => ({
@@ -56,7 +56,10 @@ const toTests = (paths: Array) =>
beforeEach(() => {
jest.clearAllMocks();
- sequencer = new TestSequencer();
+ sequencer = new TestSequencer({
+ contexts: [],
+ globalConfig: makeGlobalConfig(),
+ });
});
test('sorts by file size if there is no timing information', () => {
diff --git a/packages/jest-test-sequencer/src/index.ts b/packages/jest-test-sequencer/src/index.ts
index 0a8239e8ce63..9495c3d49470 100644
--- a/packages/jest-test-sequencer/src/index.ts
+++ b/packages/jest-test-sequencer/src/index.ts
@@ -10,11 +10,17 @@ import * as path from 'path';
import * as fs from 'graceful-fs';
import slash = require('slash');
import type {AggregatedResult, Test, TestContext} from '@jest/test-result';
+import type {Config} from '@jest/types';
import HasteMap from 'jest-haste-map';
const FAIL = 0;
const SUCCESS = 1;
+export type TestSequencerOptions = {
+ contexts: ReadonlyArray;
+ globalConfig: Config.GlobalConfig;
+};
+
type Cache = {
[key: string]:
| [testStatus: typeof FAIL | typeof SUCCESS, testDuration: number]
@@ -46,6 +52,9 @@ type ShardPositionOptions = ShardOptions & {
export default class TestSequencer {
private readonly _cache = new Map();
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ constructor(_options: TestSequencerOptions) {}
+
_getCachePath(testContext: TestContext): string {
const {config} = testContext;
const HasteMapClass = HasteMap.getStatic(config);
diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json
index 75a2a459fc3e..ac40d75b3942 100644
--- a/packages/jest-transform/package.json
+++ b/packages/jest-transform/package.json
@@ -43,7 +43,7 @@
"dedent": "^1.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-transform/src/ScriptTransformer.ts b/packages/jest-transform/src/ScriptTransformer.ts
index 8ee6aa12d8f1..b0c61a587d06 100644
--- a/packages/jest-transform/src/ScriptTransformer.ts
+++ b/packages/jest-transform/src/ScriptTransformer.ts
@@ -459,15 +459,15 @@ class ScriptTransformer {
code = transformed.code;
}
- if (map != null) {
+ if (map == null) {
+ sourceMapPath = null;
+ } else {
const sourceMapContent =
typeof map === 'string' ? map : JSON.stringify(map);
invariant(sourceMapPath, 'We should always have default sourceMapPath');
writeCacheFile(sourceMapPath, sourceMapContent);
- } else {
- sourceMapPath = null;
}
writeCodeCacheFile(cacheFilePath, code);
@@ -840,7 +840,7 @@ class ScriptTransformer {
const ignoreRegexp = this._cache.ignorePatternsRegExp;
const isIgnored = ignoreRegexp ? ignoreRegexp.test(filename) : false;
- return this._config.transform.length !== 0 && !isIgnored;
+ return this._config.transform.length > 0 && !isIgnored;
}
}
@@ -1019,7 +1019,7 @@ const calcIgnorePatternRegExp = (config: Config.ProjectConfig) => {
};
const calcTransformRegExp = (config: Config.ProjectConfig) => {
- if (!config.transform.length) {
+ if (config.transform.length === 0) {
return undefined;
}
diff --git a/packages/jest-transform/src/shouldInstrument.ts b/packages/jest-transform/src/shouldInstrument.ts
index 2c1a5b796f51..56c44b9aac22 100644
--- a/packages/jest-transform/src/shouldInstrument.ts
+++ b/packages/jest-transform/src/shouldInstrument.ts
@@ -41,7 +41,7 @@ export default function shouldInstrument(
}
if (
- config.forceCoverageMatch.length &&
+ config.forceCoverageMatch.length > 0 &&
micromatch.any(filename, config.forceCoverageMatch)
) {
return true;
@@ -71,7 +71,7 @@ export default function shouldInstrument(
if (
// still cover if `only` is specified
- options.collectCoverageFrom.length &&
+ options.collectCoverageFrom.length > 0 &&
!globsToMatcher(options.collectCoverageFrom)(
replacePathSepForGlob(path.relative(config.rootDir, filename)),
)
diff --git a/packages/jest-types/package.json b/packages/jest-types/package.json
index fa55541874b9..1ac21a8a3759 100644
--- a/packages/jest-types/package.json
+++ b/packages/jest-types/package.json
@@ -7,7 +7,7 @@
"directory": "packages/jest-types"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"license": "MIT",
"main": "./build/index.js",
diff --git a/packages/jest-types/src/Circus.ts b/packages/jest-types/src/Circus.ts
index 2b27c314f541..31906d9b7f95 100644
--- a/packages/jest-types/src/Circus.ts
+++ b/packages/jest-types/src/Circus.ts
@@ -5,9 +5,10 @@
* LICENSE file in the root directory of this source tree.
*/
+import type * as ProcessModule from 'process';
import type * as Global from './Global';
-type Process = NodeJS.Process;
+type Process = typeof ProcessModule;
export type DoneFn = Global.DoneFn;
export type BlockFn = Global.BlockFn;
@@ -213,10 +214,8 @@ export type RunResult = {
export type TestResults = Array;
export type GlobalErrorHandlers = {
- uncaughtException: Array<(exception: Exception) => void>;
- unhandledRejection: Array<
- (exception: Exception, promise: Promise) => void
- >;
+ uncaughtException: Array;
+ unhandledRejection: Array;
};
export type State = {
diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json
index f03ffcb52d74..b65d0c5391a5 100644
--- a/packages/jest-util/package.json
+++ b/packages/jest-util/package.json
@@ -29,7 +29,7 @@
"@types/picomatch": "^2.2.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-util/src/createProcessObject.ts b/packages/jest-util/src/createProcessObject.ts
index 252b121275be..baa6916a64fe 100644
--- a/packages/jest-util/src/createProcessObject.ts
+++ b/packages/jest-util/src/createProcessObject.ts
@@ -5,6 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
+import type * as Process from 'process';
import deepCyclicCopy from './deepCyclicCopy';
const BLACKLIST = new Set(['env', 'mainModule', '_events']);
@@ -79,7 +80,7 @@ function createProcessEnv(): NodeJS.ProcessEnv {
return Object.assign(proxy, process.env);
}
-export default function createProcessObject(): NodeJS.Process {
+export default function createProcessObject(): typeof Process {
const process = require('process');
const newProcess = deepCyclicCopy(process, {
blacklist: BLACKLIST,
diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json
index 6799e164205d..43df3220f431 100644
--- a/packages/jest-validate/package.json
+++ b/packages/jest-validate/package.json
@@ -28,7 +28,7 @@
"@types/yargs": "^17.0.8"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-validate/src/validateCLIOptions.ts b/packages/jest-validate/src/validateCLIOptions.ts
index 0e227ce872e2..5cb8ddce950a 100644
--- a/packages/jest-validate/src/validateCLIOptions.ts
+++ b/packages/jest-validate/src/validateCLIOptions.ts
@@ -106,7 +106,7 @@ export default function validateCLIOptions(
.filter(arg => deprecations.has(arg) && argv[arg] != null)
.map(arg => ({fatal: !allowedOptions.has(arg), name: arg}));
- if (deprecatedOptions.length) {
+ if (deprecatedOptions.length > 0) {
validateDeprecatedOptions(deprecatedOptions, CLIDeprecations, argv);
}
@@ -114,11 +114,11 @@ export default function validateCLIOptions(
arg =>
!allowedOptions.has(camelcase(arg, {locale: 'en-US'})) &&
!allowedOptions.has(arg) &&
- (!rawArgv.length || rawArgv.includes(arg)),
+ (rawArgv.length === 0 || rawArgv.includes(arg)),
[],
);
- if (unrecognizedOptions.length) {
+ if (unrecognizedOptions.length > 0) {
throw createCLIValidationError(unrecognizedOptions, allowedOptions);
}
diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json
index e8f15f73282f..eef1adf555e3 100644
--- a/packages/jest-watcher/package.json
+++ b/packages/jest-watcher/package.json
@@ -30,7 +30,7 @@
"url": "https://github.com/jestjs/jest/issues"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"homepage": "https://jestjs.io/",
"license": "MIT",
diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json
index f3d805750f5c..1dbe257653ea 100644
--- a/packages/jest-worker/package.json
+++ b/packages/jest-worker/package.json
@@ -33,7 +33,7 @@
"worker-farm": "^1.6.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/jest-worker/src/workers/ChildProcessWorker.ts b/packages/jest-worker/src/workers/ChildProcessWorker.ts
index 395cf1477444..8040ed953150 100644
--- a/packages/jest-worker/src/workers/ChildProcessWorker.ts
+++ b/packages/jest-worker/src/workers/ChildProcessWorker.ts
@@ -408,9 +408,9 @@ export default class ChildProcessWorker
// was killed externally. Log this fact so it's more clear to users that
// something went wrong externally, rather than a bug in Jest itself.
const error = new Error(
- signal != null
- ? `A jest worker process (pid=${this._child.pid}) was terminated by another process: signal=${signal}, exitCode=${exitCode}. Operating system logs may contain more information on why this occurred.`
- : `A jest worker process (pid=${this._child.pid}) crashed for an unknown reason: exitCode=${exitCode}`,
+ signal == null
+ ? `A jest worker process (pid=${this._child.pid}) crashed for an unknown reason: exitCode=${exitCode}`
+ : `A jest worker process (pid=${this._child.pid}) was terminated by another process: signal=${signal}, exitCode=${exitCode}. Operating system logs may contain more information on why this occurred.`,
);
this._onProcessEnd(error, null);
@@ -486,7 +486,7 @@ export default class ChildProcessWorker
* @returns Process id.
*/
getWorkerSystemId(): number {
- return this._child.pid;
+ return this._child.pid!;
}
getStdout(): NodeJS.ReadableStream | null {
diff --git a/packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.ts b/packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.ts
index d98b5e887f6b..01f1a898e2c1 100644
--- a/packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.ts
+++ b/packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.ts
@@ -159,8 +159,8 @@ it('provides stdout and stderr from the child processes', async () => {
workerPath: '/tmp/foo',
} as WorkerOptions);
- const stdout = worker.getStdout() as NodeJS.ReadableStream;
- const stderr = worker.getStderr() as NodeJS.ReadableStream;
+ const stdout = worker.getStdout()!;
+ const stderr = worker.getStderr()!;
(forkInterface.stdout as PassThrough).end('Hello ', 'utf8');
(forkInterface.stderr as PassThrough).end('Jest ', 'utf8');
diff --git a/packages/jest-worker/src/workers/__tests__/WorkerEdgeCases.test.ts b/packages/jest-worker/src/workers/__tests__/WorkerEdgeCases.test.ts
index 3b283cc9c925..21f1b0d74864 100644
--- a/packages/jest-worker/src/workers/__tests__/WorkerEdgeCases.test.ts
+++ b/packages/jest-worker/src/workers/__tests__/WorkerEdgeCases.test.ts
@@ -52,7 +52,7 @@ afterAll(async () => {
test.each(filesToBuild)('%s.js should exist', file => {
const path = join(writeDestination, `${file}.js`);
- expect(async () => await access(path)).not.toThrow();
+ expect(async () => access(path)).not.toThrow();
});
async function closeWorkerAfter(
@@ -310,9 +310,9 @@ describe.each([
});
test('worker stays dead', async () => {
- await expect(
- async () => await worker.waitForWorkerReady(),
- ).rejects.toThrow('Worker state means it will never be ready: shut-down');
+ await expect(async () => worker.waitForWorkerReady()).rejects.toThrow(
+ 'Worker state means it will never be ready: shut-down',
+ );
expect(worker.isWorkerRunning()).toBeFalsy();
});
diff --git a/packages/jest-worker/src/workers/__tests__/threadChild.test.ts b/packages/jest-worker/src/workers/__tests__/threadChild.test.ts
index b7637963969f..1f1433db8b0b 100644
--- a/packages/jest-worker/src/workers/__tests__/threadChild.test.ts
+++ b/packages/jest-worker/src/workers/__tests__/threadChild.test.ts
@@ -114,7 +114,7 @@ beforeEach(() => {
);
messagePort = (require('worker_threads') as typeof import('worker_threads'))
- .parentPort as MessagePort;
+ .parentPort!;
// Require the child!
require('../threadChild');
diff --git a/packages/jest/package.json b/packages/jest/package.json
index bdfbcbb6ae07..21e2081c9fe7 100644
--- a/packages/jest/package.json
+++ b/packages/jest/package.json
@@ -32,7 +32,7 @@
},
"bin": "./bin/jest.js",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"repository": {
"type": "git",
diff --git a/packages/pretty-format/__benchmarks__/test.js b/packages/pretty-format/__benchmarks__/test.js
index b5f31f179f3d..c648cbace774 100644
--- a/packages/pretty-format/__benchmarks__/test.js
+++ b/packages/pretty-format/__benchmarks__/test.js
@@ -114,10 +114,10 @@ function test(name, value, ignoreResult, prettyFormatOpts) {
message = chalk.bgRed.black(message);
} else if (diff > winner.time * 0.65) {
message = chalk.bgYellow.black(message);
- } else if (!current.error) {
- message = chalk.bgGreen.black(message);
- } else {
+ } else if (current.error) {
message = chalk.dim(message);
+ } else {
+ message = chalk.bgGreen.black(message);
}
console.log(` ${message}`);
diff --git a/packages/pretty-format/package.json b/packages/pretty-format/package.json
index cdcde312bc77..7c510b886789 100644
--- a/packages/pretty-format/package.json
+++ b/packages/pretty-format/package.json
@@ -34,7 +34,7 @@
"react-test-renderer": "17.0.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/pretty-format/src/__tests__/Immutable.test.ts b/packages/pretty-format/src/__tests__/Immutable.test.ts
index c0562680bb3e..c9a285289a96 100644
--- a/packages/pretty-format/src/__tests__/Immutable.test.ts
+++ b/packages/pretty-format/src/__tests__/Immutable.test.ts
@@ -929,7 +929,7 @@ describe('Immutable.Seq', () => {
describe('Immutable.Seq lazy entries', () => {
const expected = 'Immutable.Seq {…}';
const object = {key0: '', key1: '1'};
- const filterer = (value: string) => value.length !== 0;
+ const filterer = (value: string) => value.length > 0;
// undefined size confirms correct criteria for lazy Seq
test('from object properties', () => {
@@ -947,7 +947,7 @@ describe('Immutable.Seq lazy entries', () => {
describe('Immutable.Seq lazy values', () => {
const expected = 'Immutable.Seq […]';
const array = ['', '1', '22'];
- const filterer = (item: string) => item.length !== 0;
+ const filterer = (item: string) => item.length > 0;
test('from Immutable.Range', () => {
const val = Immutable.Range(1, Infinity);
diff --git a/packages/pretty-format/src/__tests__/setPrettyPrint.ts b/packages/pretty-format/src/__tests__/setPrettyPrint.ts
index 6e41c818c9aa..bd585430385b 100644
--- a/packages/pretty-format/src/__tests__/setPrettyPrint.ts
+++ b/packages/pretty-format/src/__tests__/setPrettyPrint.ts
@@ -43,7 +43,7 @@ const setPrettyPrint = (plugins: Plugins) => {
` ${this.utils.printExpected(expected)}\n` +
'Received:\n' +
` ${this.utils.printReceived(prettyFormatted)}${
- diffString != null ? `\n\nDifference:\n\n${diffString}` : ''
+ diffString == null ? '' : `\n\nDifference:\n\n${diffString}`
}`
);
},
diff --git a/packages/pretty-format/src/collections.ts b/packages/pretty-format/src/collections.ts
index c287b984410a..d5911ba05ff5 100644
--- a/packages/pretty-format/src/collections.ts
+++ b/packages/pretty-format/src/collections.ts
@@ -14,7 +14,7 @@ const getKeysOfEnumerableProperties = (
) => {
const rawKeys = Object.keys(object);
const keys: Array =
- compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;
+ compareKeys === null ? rawKeys : rawKeys.sort(compareKeys);
if (Object.getOwnPropertySymbols) {
Object.getOwnPropertySymbols(object).forEach(symbol => {
@@ -155,7 +155,7 @@ export function printListItems(
): string {
let result = '';
- if (list.length) {
+ if (list.length > 0) {
result += config.spacingOuter;
const indentationNext = indentation + config.indent;
@@ -201,7 +201,7 @@ export function printObjectProperties(
let result = '';
const keys = getKeysOfEnumerableProperties(val, config.compareKeys);
- if (keys.length) {
+ if (keys.length > 0) {
result += config.spacingOuter;
const indentationNext = indentation + config.indent;
diff --git a/packages/pretty-format/src/index.ts b/packages/pretty-format/src/index.ts
index fe59d3f33e29..d0522eec5f62 100644
--- a/packages/pretty-format/src/index.ts
+++ b/packages/pretty-format/src/index.ts
@@ -207,7 +207,7 @@ function printComplexValue(
refs: Refs,
hasCalledToJSON?: boolean,
): string {
- if (refs.indexOf(val) !== -1) {
+ if (refs.includes(val)) {
return '[Circular]';
}
refs = refs.slice();
diff --git a/packages/pretty-format/src/plugins/DOMCollection.ts b/packages/pretty-format/src/plugins/DOMCollection.ts
index 40b27e2005bd..29beb8b61f64 100644
--- a/packages/pretty-format/src/plugins/DOMCollection.ts
+++ b/packages/pretty-format/src/plugins/DOMCollection.ts
@@ -14,7 +14,7 @@ const OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];
const ARRAY_REGEXP = /^(HTML\w*Collection|NodeList)$/;
const testName = (name: any) =>
- OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);
+ OBJECT_NAMES.includes(name) || ARRAY_REGEXP.test(name);
export const test: NewPlugin['test'] = (val: object) =>
val &&
@@ -40,7 +40,7 @@ export const serialize: NewPlugin['serialize'] = (
return (
(config.min ? '' : name + SPACE) +
- (OBJECT_NAMES.indexOf(name) !== -1
+ (OBJECT_NAMES.includes(name)
? `{${printObjectProperties(
isNamedNodeMap(collection)
? Array.from(collection).reduce>(
diff --git a/packages/pretty-format/src/plugins/ReactElement.ts b/packages/pretty-format/src/plugins/ReactElement.ts
index 8f1f6713c9f1..d073c77651b1 100644
--- a/packages/pretty-format/src/plugins/ReactElement.ts
+++ b/packages/pretty-format/src/plugins/ReactElement.ts
@@ -58,14 +58,14 @@ const getType = (element: any) => {
const functionName = type.render.displayName || type.render.name || '';
- return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';
+ return functionName === '' ? 'ForwardRef' : `ForwardRef(${functionName})`;
}
if (ReactIs.isMemo(element)) {
const functionName =
type.displayName || type.type.displayName || type.type.name || '';
- return functionName !== '' ? `Memo(${functionName})` : 'Memo';
+ return functionName === '' ? 'Memo' : `Memo(${functionName})`;
}
}
return 'UNDEFINED';
diff --git a/packages/pretty-format/src/plugins/lib/markup.ts b/packages/pretty-format/src/plugins/lib/markup.ts
index 923c6f839649..ce30921d6205 100644
--- a/packages/pretty-format/src/plugins/lib/markup.ts
+++ b/packages/pretty-format/src/plugins/lib/markup.ts
@@ -26,7 +26,7 @@ export const printProps = (
let printed = printer(value, config, indentationNext, depth, refs);
if (typeof value !== 'string') {
- if (printed.indexOf('\n') !== -1) {
+ if (printed.includes('\n')) {
printed =
config.spacingOuter +
indentationNext +
diff --git a/packages/test-globals/package.json b/packages/test-globals/package.json
index abac51998540..720062e2d994 100644
--- a/packages/test-globals/package.json
+++ b/packages/test-globals/package.json
@@ -18,6 +18,6 @@
"jest-mock": "workspace:^"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
}
}
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index b76b9b58f291..4239cd8439c1 100644
--- a/packages/test-utils/package.json
+++ b/packages/test-utils/package.json
@@ -24,6 +24,6 @@
"@types/semver": "^7.1.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
}
}
diff --git a/scripts/build.mjs b/scripts/build.mjs
index b0494d20bf16..804185c1d257 100644
--- a/scripts/build.mjs
+++ b/scripts/build.mjs
@@ -149,7 +149,7 @@ function buildFile(file, silent) {
const files = process.argv.slice(2);
-if (files.length) {
+if (files.length > 0) {
files.forEach(file => buildFile(file));
} else {
const packages = getPackages();
diff --git a/scripts/buildTs.mjs b/scripts/buildTs.mjs
index 674e4dac4f34..4580c85390dd 100644
--- a/scripts/buildTs.mjs
+++ b/scripts/buildTs.mjs
@@ -43,8 +43,11 @@ packagesWithTs.forEach(({packageDir, pkg}) => {
const jestDependenciesOfPackage = Object.keys(pkg.dependencies || {})
.concat(Object.keys(pkg.devDependencies || {}))
- .filter(dep => workspacesWithTs.has(dep))
.filter(dep => {
+ if (!workspacesWithTs.has(dep)) {
+ return false;
+ }
+
// nothing should depend on these
if (dep === 'jest-circus' || dep === 'jest-jasmine2') {
return false;
@@ -116,9 +119,10 @@ packagesWithTs.forEach(({packageDir, pkg}) => {
const tsConfig = JSON.parse(
stripJsonComments(fs.readFileSync(tsConfigPath, 'utf8')),
);
- const references = tsConfig.references.map(({path}) => path);
- return references.some(reference => /test-utils$/.test(reference));
+ return tsConfig.references.some(
+ ({path}) => path && path.endsWith('test-utils'),
+ );
});
if (hasJestTestUtils && testUtilsReferences.length === 0) {
diff --git a/scripts/lintTs.mjs b/scripts/lintTs.mjs
index 11caec1c8f0b..a7e1a3d47a81 100644
--- a/scripts/lintTs.mjs
+++ b/scripts/lintTs.mjs
@@ -23,37 +23,51 @@ const cpus = Math.max(
const mutex = pLimit(cpus);
-const fix = process.argv.slice(2).some(arg => arg === '--fix');
+const fix = process.argv.slice(2).includes('--fix');
const monorepoRoot = path.resolve(url.fileURLToPath(import.meta.url), '../..');
// TODO: remove this list at some point and run against all packages
-const packagesToTest = [
- 'babel-jest',
- 'babel-plugin-jest-hoist',
- 'diff-sequences',
- 'jest',
- 'jest-changed-files',
- 'jest-console',
- 'jest-docblock',
- 'jest-environment',
- 'jest-globals',
- 'jest-resolve-dependencies',
- 'jest-schemas',
- 'jest-source-map',
- 'jest-test-result',
- 'jest-test-sequencer',
- 'jest-transform',
- 'jest-types',
- 'jest-watcher',
- 'test-globals',
- 'test-utils',
+const packagesNotToTest = [
+ 'expect',
+ 'expect-utils',
+ 'jest-circus',
+ 'jest-cli',
+ 'jest-config',
+ 'jest-core',
+ 'jest-create-cache-key-function',
+ 'jest-diff',
+ 'jest-each',
+ 'jest-environment-jsdom',
+ 'jest-environment-node',
+ 'jest-fake-timers',
+ 'jest-get-type',
+ 'jest-haste-map',
+ 'jest-jasmine2',
+ 'jest-leak-detector',
+ 'jest-matcher-utils',
+ 'jest-message-util',
+ 'jest-mock',
+ 'jest-phabricator',
+ 'jest-regex-util',
+ 'jest-repl',
+ 'jest-reporters',
+ 'jest-resolve',
+ 'jest-runner',
+ 'jest-runtime',
+ 'jest-snapshot',
+ 'jest-util',
+ 'jest-validate',
+ 'jest-worker',
+ 'pretty-format',
];
const packagesWithTs = getPackagesWithTsConfig()
.map(({packageDir}) => packageDir)
- .concat(path.resolve(monorepoRoot, 'e2e'))
- .filter(packageDir => packagesToTest.some(pkg => packageDir.endsWith(pkg)));
+ .filter(
+ packageDir => !packagesNotToTest.some(pkg => packageDir.endsWith(pkg)),
+ );
+// .concat(path.resolve(monorepoRoot, 'e2e'));
const allLintResults = [];
diff --git a/scripts/verifyPnP.mjs b/scripts/verifyPnP.mjs
index 6ee16cc3db03..31ace2088a11 100644
--- a/scripts/verifyPnP.mjs
+++ b/scripts/verifyPnP.mjs
@@ -52,21 +52,21 @@ try {
fs.writeFileSync(
path.join(cwd, 'jsdom.test.js'),
dedent`
- /*
- * @jest-environment jsdom
- */
+ /*
+ * @jest-environment jsdom
+ */
- test('dummy', () => {
- expect(window).toBeDefined();
- });
+ test('dummy', () => {
+ expect(window).toBeDefined();
+ });
`,
);
fs.writeFileSync(
path.join(cwd, 'node.test.js'),
dedent`
- test('dummy', () => {
- expect(typeof window).toBe('undefined');
- });
+ test('dummy', () => {
+ expect(typeof window).toBe('undefined');
+ });
`,
);
execa.sync('yarn', ['link', '--private', '--all', rootDirectory], {
diff --git a/scripts/watch.mjs b/scripts/watch.mjs
index 9c82e3019c58..7d834f0d3621 100644
--- a/scripts/watch.mjs
+++ b/scripts/watch.mjs
@@ -72,7 +72,7 @@ chokidar
setInterval(() => {
const files = Array.from(filesToBuild.keys());
- if (files.length) {
+ if (files.length > 0) {
filesToBuild = new Map();
try {
execSync(`${BUILD_CMD} ${files.join(' ')}`, {stdio: [0, 1, 2]});
diff --git a/website/package.json b/website/package.json
index 5597449e68a2..ec01543f4eb4 100644
--- a/website/package.json
+++ b/website/package.json
@@ -32,11 +32,11 @@
]
},
"dependencies": {
- "@docusaurus/core": "0.0.0-5658",
- "@docusaurus/plugin-client-redirects": "0.0.0-5658",
- "@docusaurus/plugin-pwa": "0.0.0-5658",
- "@docusaurus/preset-classic": "0.0.0-5658",
- "@docusaurus/remark-plugin-npm2yarn": "0.0.0-5658",
+ "@docusaurus/core": "^3.0.0-beta.0",
+ "@docusaurus/plugin-client-redirects": "3.0.0-beta.0",
+ "@docusaurus/plugin-pwa": "3.0.0-beta.0",
+ "@docusaurus/preset-classic": "3.0.0-beta.0",
+ "@docusaurus/remark-plugin-npm2yarn": "3.0.0-beta.0",
"clsx": "^2.0.0",
"docusaurus-remark-plugin-tab-blocks": "^2.0.0-beta",
"react": "^18.2.0",
@@ -48,8 +48,8 @@
"devDependencies": {
"@babel/core": "^7.11.6",
"@crowdin/cli": "^3.5.2",
- "@docusaurus/module-type-aliases": "0.0.0-5658",
- "@docusaurus/tsconfig": "0.0.0-5658",
+ "@docusaurus/module-type-aliases": "3.0.0-beta.0",
+ "@docusaurus/tsconfig": "3.0.0-beta.0",
"@types/react": "^18.2.21",
"graphql": "^16.3.0",
"graphql-request": "^6.0.0",
diff --git a/website/src/components/v1/Container.js b/website/src/components/v1/Container.js
index c96a9caa7298..660f7b01a9ec 100644
--- a/website/src/components/v1/Container.js
+++ b/website/src/components/v1/Container.js
@@ -13,11 +13,11 @@ export default function Container(props) {
darkBackground: props.background === 'dark',
highlightBackground: props.background === 'highlight',
lightBackground: props.background === 'light',
- paddingAll: props.padding.indexOf('all') >= 0,
- paddingBottom: props.padding.indexOf('bottom') >= 0,
- paddingLeft: props.padding.indexOf('left') >= 0,
- paddingRight: props.padding.indexOf('right') >= 0,
- paddingTop: props.padding.indexOf('top') >= 0,
+ paddingAll: props.padding.includes('all'),
+ paddingBottom: props.padding.includes('bottom'),
+ paddingLeft: props.padding.includes('left'),
+ paddingRight: props.padding.includes('right'),
+ paddingTop: props.padding.includes('top'),
});
let wrappedChildren;
diff --git a/website/src/pages/animations/_landingAnimation.js b/website/src/pages/animations/_landingAnimation.js
index b673c38213bb..fcdab2783baa 100644
--- a/website/src/pages/animations/_landingAnimation.js
+++ b/website/src/pages/animations/_landingAnimation.js
@@ -35,8 +35,7 @@ export function setupLandingAnimation() {
const results = [];
const timeouts = [];
- function resolveRun(card, index, minTime) {
- minTime = minTime || 500;
+ function resolveRun(card, index, minTime = 500) {
setTimeout(() => {
if (index === 2) {
results[index] = null;
diff --git a/website/versioned_docs/version-29.4/Configuration.md b/website/versioned_docs/version-29.4/Configuration.md
index eee704668bda..74387886377f 100644
--- a/website/versioned_docs/version-29.4/Configuration.md
+++ b/website/versioned_docs/version-29.4/Configuration.md
@@ -1668,14 +1668,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/website/versioned_docs/version-29.4/ExpectAPI.md b/website/versioned_docs/version-29.4/ExpectAPI.md
index 46b2c361585e..3596d28d5588 100644
--- a/website/versioned_docs/version-29.4/ExpectAPI.md
+++ b/website/versioned_docs/version-29.4/ExpectAPI.md
@@ -1186,10 +1186,10 @@ function areVolumesEqual(a, b) {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1243,10 +1243,10 @@ function areVolumesEqual(a: unknown, b: unknown): boolean | undefined {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1297,10 +1297,10 @@ function areAuthorEqual(a, b) {
if (isAAuthor && isBAuthor) {
// Authors are equal if they have the same name
return a.name === b.name;
- } else if (isAAuthor !== isBAuthor) {
- return false;
- } else {
+ } else if (isAAuthor === isBAuthor) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1315,10 +1315,10 @@ function areBooksEqual(a, b, customTesters) {
return (
a.name === b.name && this.equals(a.authors, b.authors, customTesters)
);
- } else if (isABook !== isBBook) {
- return false;
- } else {
+ } else if (isABook === isBBook) {
return undefined;
+ } else {
+ return false;
}
}
diff --git a/website/versioned_docs/version-29.4/SnapshotTesting.md b/website/versioned_docs/version-29.4/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/website/versioned_docs/version-29.4/SnapshotTesting.md
+++ b/website/versioned_docs/version-29.4/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/website/versioned_docs/version-29.5/Configuration.md b/website/versioned_docs/version-29.5/Configuration.md
index fcd772627605..632fe800cd5a 100644
--- a/website/versioned_docs/version-29.5/Configuration.md
+++ b/website/versioned_docs/version-29.5/Configuration.md
@@ -1703,14 +1703,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/website/versioned_docs/version-29.5/ExpectAPI.md b/website/versioned_docs/version-29.5/ExpectAPI.md
index 46b2c361585e..3596d28d5588 100644
--- a/website/versioned_docs/version-29.5/ExpectAPI.md
+++ b/website/versioned_docs/version-29.5/ExpectAPI.md
@@ -1186,10 +1186,10 @@ function areVolumesEqual(a, b) {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1243,10 +1243,10 @@ function areVolumesEqual(a: unknown, b: unknown): boolean | undefined {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1297,10 +1297,10 @@ function areAuthorEqual(a, b) {
if (isAAuthor && isBAuthor) {
// Authors are equal if they have the same name
return a.name === b.name;
- } else if (isAAuthor !== isBAuthor) {
- return false;
- } else {
+ } else if (isAAuthor === isBAuthor) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1315,10 +1315,10 @@ function areBooksEqual(a, b, customTesters) {
return (
a.name === b.name && this.equals(a.authors, b.authors, customTesters)
);
- } else if (isABook !== isBBook) {
- return false;
- } else {
+ } else if (isABook === isBBook) {
return undefined;
+ } else {
+ return false;
}
}
diff --git a/website/versioned_docs/version-29.5/SnapshotTesting.md b/website/versioned_docs/version-29.5/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/website/versioned_docs/version-29.5/SnapshotTesting.md
+++ b/website/versioned_docs/version-29.5/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/website/versioned_docs/version-29.6/Configuration.md b/website/versioned_docs/version-29.6/Configuration.md
index acb52e2746a7..4a95c468b3f5 100644
--- a/website/versioned_docs/version-29.6/Configuration.md
+++ b/website/versioned_docs/version-29.6/Configuration.md
@@ -1739,14 +1739,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/website/versioned_docs/version-29.6/ExpectAPI.md b/website/versioned_docs/version-29.6/ExpectAPI.md
index 46b2c361585e..3596d28d5588 100644
--- a/website/versioned_docs/version-29.6/ExpectAPI.md
+++ b/website/versioned_docs/version-29.6/ExpectAPI.md
@@ -1186,10 +1186,10 @@ function areVolumesEqual(a, b) {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1243,10 +1243,10 @@ function areVolumesEqual(a: unknown, b: unknown): boolean | undefined {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1297,10 +1297,10 @@ function areAuthorEqual(a, b) {
if (isAAuthor && isBAuthor) {
// Authors are equal if they have the same name
return a.name === b.name;
- } else if (isAAuthor !== isBAuthor) {
- return false;
- } else {
+ } else if (isAAuthor === isBAuthor) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1315,10 +1315,10 @@ function areBooksEqual(a, b, customTesters) {
return (
a.name === b.name && this.equals(a.authors, b.authors, customTesters)
);
- } else if (isABook !== isBBook) {
- return false;
- } else {
+ } else if (isABook === isBBook) {
return undefined;
+ } else {
+ return false;
}
}
diff --git a/website/versioned_docs/version-29.6/SnapshotTesting.md b/website/versioned_docs/version-29.6/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/website/versioned_docs/version-29.6/SnapshotTesting.md
+++ b/website/versioned_docs/version-29.6/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/website/versioned_docs/version-29.7/Configuration.md b/website/versioned_docs/version-29.7/Configuration.md
index acb52e2746a7..4a95c468b3f5 100644
--- a/website/versioned_docs/version-29.7/Configuration.md
+++ b/website/versioned_docs/version-29.7/Configuration.md
@@ -1739,14 +1739,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/website/versioned_docs/version-29.7/ExpectAPI.md b/website/versioned_docs/version-29.7/ExpectAPI.md
index 46b2c361585e..3596d28d5588 100644
--- a/website/versioned_docs/version-29.7/ExpectAPI.md
+++ b/website/versioned_docs/version-29.7/ExpectAPI.md
@@ -1186,10 +1186,10 @@ function areVolumesEqual(a, b) {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1243,10 +1243,10 @@ function areVolumesEqual(a: unknown, b: unknown): boolean | undefined {
if (isAVolume && isBVolume) {
return a.equals(b);
- } else if (isAVolume !== isBVolume) {
- return false;
- } else {
+ } else if (isAVolume === isBVolume) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1297,10 +1297,10 @@ function areAuthorEqual(a, b) {
if (isAAuthor && isBAuthor) {
// Authors are equal if they have the same name
return a.name === b.name;
- } else if (isAAuthor !== isBAuthor) {
- return false;
- } else {
+ } else if (isAAuthor === isBAuthor) {
return undefined;
+ } else {
+ return false;
}
}
@@ -1315,10 +1315,10 @@ function areBooksEqual(a, b, customTesters) {
return (
a.name === b.name && this.equals(a.authors, b.authors, customTesters)
);
- } else if (isABook !== isBBook) {
- return false;
- } else {
+ } else if (isABook === isBBook) {
return undefined;
+ } else {
+ return false;
}
}
diff --git a/website/versioned_docs/version-29.7/SnapshotTesting.md b/website/versioned_docs/version-29.7/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/website/versioned_docs/version-29.7/SnapshotTesting.md
+++ b/website/versioned_docs/version-29.7/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/yarn.lock b/yarn.lock
index 0c0e57fcab75..65694401a3c1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -544,10 +544,10 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-validator-identifier@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/helper-validator-identifier@npm:7.22.5"
- checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea
+"@babel/helper-validator-identifier@npm:^7.19.1, @babel/helper-validator-identifier@npm:^7.22.5":
+ version: 7.22.15
+ resolution: "@babel/helper-validator-identifier@npm:7.22.15"
+ checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c
languageName: node
linkType: hard
@@ -2022,9 +2022,9 @@ __metadata:
languageName: node
linkType: hard
-"@docusaurus/core@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/core@npm:0.0.0-5658"
+"@docusaurus/core@npm:3.0.0-beta.0, @docusaurus/core@npm:^3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/core@npm:3.0.0-beta.0"
dependencies:
"@babel/core": ^7.22.9
"@babel/generator": ^7.22.9
@@ -2036,13 +2036,13 @@ __metadata:
"@babel/runtime": ^7.22.6
"@babel/runtime-corejs3": ^7.22.6
"@babel/traverse": ^7.22.8
- "@docusaurus/cssnano-preset": 0.0.0-5658
- "@docusaurus/logger": 0.0.0-5658
- "@docusaurus/mdx-loader": 0.0.0-5658
+ "@docusaurus/cssnano-preset": 3.0.0-beta.0
+ "@docusaurus/logger": 3.0.0-beta.0
+ "@docusaurus/mdx-loader": 3.0.0-beta.0
"@docusaurus/react-loadable": 5.5.2
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-common": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-common": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
"@slorber/static-site-generator-webpack-plugin": ^4.0.7
"@svgr/webpack": ^6.5.1
autoprefixer: ^10.4.14
@@ -2102,41 +2102,41 @@ __metadata:
react-dom: ^18.0.0
bin:
docusaurus: bin/docusaurus.mjs
- checksum: ca0a9cdaba4565dee15a4ee0ecb2edb956a98948de3883efdf9924328104b3c4e4b7b3a151f09467edd13c96f6df3f06e0141babc71f1f51f5c624fe1e8f023b
+ checksum: 1f85d5e6d36133bd0000dbed38ce2eefa3fa7391ad7404aa2585b7f549e8f1b1ddaf4fff827989b52000e998b245da0b4d3ba9fd9ba502a2c7e2d1e3724969c5
languageName: node
linkType: hard
-"@docusaurus/cssnano-preset@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/cssnano-preset@npm:0.0.0-5658"
+"@docusaurus/cssnano-preset@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/cssnano-preset@npm:3.0.0-beta.0"
dependencies:
cssnano-preset-advanced: ^5.3.10
postcss: ^8.4.26
postcss-sort-media-queries: ^4.4.1
tslib: ^2.6.0
- checksum: b0ec956748c7fa1df23ee752ad76aeefdc8d4253027ba64f2a9c0de7f7eee1a3eefea827d14dacf18274b4cdc4a162919aa6c72e92c5d080758d4fe48aa51d00
+ checksum: 010f54e69fc40f7258706a0ef6bb961d6369eb8289cec06e969195918a995cf9d92c55a95528fab1eb6cf1ca5e2f1b03b9c870990cf95a37497fde860d021574
languageName: node
linkType: hard
-"@docusaurus/logger@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/logger@npm:0.0.0-5658"
+"@docusaurus/logger@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/logger@npm:3.0.0-beta.0"
dependencies:
chalk: ^4.1.2
tslib: ^2.6.0
- checksum: 689bf09c76a440cb5ed3add22f9ec95732c52c22d51d45d1f5e885346e92f403c32cb3dc0232790ca732719bcce1543c672f686a20035a7db86679bc4e89dc37
+ checksum: 135000691a33f88964e2fadb76e3a0f4351875b95ca3781f0729b2bfddb0444f8fb75f91c2c1863ecb21f302f8344fa37de55c1c2b124a2fe537fc0f29f2b09c
languageName: node
linkType: hard
-"@docusaurus/mdx-loader@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/mdx-loader@npm:0.0.0-5658"
+"@docusaurus/mdx-loader@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/mdx-loader@npm:3.0.0-beta.0"
dependencies:
"@babel/parser": ^7.22.7
"@babel/traverse": ^7.22.8
- "@docusaurus/logger": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/logger": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
"@mdx-js/mdx": ^2.1.5
"@slorber/remark-comment": ^1.0.0
escape-html: ^1.0.3
@@ -2160,16 +2160,16 @@ __metadata:
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 17fa7a20e1c1a4cd0f2ef7c2c333e139cd361e9dbd9676fc054ff5e47ef53652200d162b03fd4fa4ea9613f7118b74f40fe05cef8169652793d1be70ed6ec8a5
+ checksum: 994314af4972f27dc1a49a4543839897c6c1ab0b09268034af98a4a2f142b3235223e88bfa8f151fa3fae6db51216349768f31f5c2244c878a2db917bb925030
languageName: node
linkType: hard
-"@docusaurus/module-type-aliases@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/module-type-aliases@npm:0.0.0-5658"
+"@docusaurus/module-type-aliases@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/module-type-aliases@npm:3.0.0-beta.0"
dependencies:
"@docusaurus/react-loadable": 5.5.2
- "@docusaurus/types": 0.0.0-5658
+ "@docusaurus/types": 3.0.0-beta.0
"@types/history": ^4.7.11
"@types/react": "*"
"@types/react-router-config": "*"
@@ -2179,19 +2179,19 @@ __metadata:
peerDependencies:
react: "*"
react-dom: "*"
- checksum: a6c7e5527fdda5ac56db3d20156904358fc6e02a2b06b07be55bf5f223e29e8bd8e35ead13395e467790f168e16204882a3422d914157219388e8c72fdc337f6
+ checksum: 2a195e55bb1c9e5d29f5c52bd92e13379e23da354f4b5c8875b0aedfc3252319d0cbeac559633f89a9eb015a8471ffb468f2de90082e41dfa09af7cb5e63f94f
languageName: node
linkType: hard
-"@docusaurus/plugin-client-redirects@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-client-redirects@npm:0.0.0-5658"
+"@docusaurus/plugin-client-redirects@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-client-redirects@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/logger": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-common": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/logger": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-common": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
eta: ^2.2.0
fs-extra: ^11.1.1
lodash: ^4.17.21
@@ -2199,21 +2199,21 @@ __metadata:
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 19a7d9bb89d7e6aa141db3848e1f70e2f2f5dc40adf77634352840d893b30762a1cea675bfaa4ed514f883025d8caabc43c09981f3c35eb88572d3b546eb646c
+ checksum: d7b353be0c1e57b1c95c2e0d7dfaa53071e53c3a12490614e9e847b7849995ae2c8324529c88851f8280960d3eaf8246bcaf0647be6143b3fc1232fa49779f46
languageName: node
linkType: hard
-"@docusaurus/plugin-content-blog@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-content-blog@npm:0.0.0-5658"
+"@docusaurus/plugin-content-blog@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-content-blog@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/logger": 0.0.0-5658
- "@docusaurus/mdx-loader": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-common": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/logger": 3.0.0-beta.0
+ "@docusaurus/mdx-loader": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-common": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
cheerio: ^1.0.0-rc.12
feed: ^4.2.2
fs-extra: ^11.1.1
@@ -2227,21 +2227,21 @@ __metadata:
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 0bd7890e8782268819ddf695d6f12cd48a2b8a3e775d68e66f5d2083e727b5b863cb6ad779e6b88b0a2b93821f49a2dd137011c28716112eab0eed4577d429e2
+ checksum: 30d485f7482e1e6102546b44475a5d735ba00877b69abb924d360e11402ea6925b3366b103e4bdbe22990c9a4d5a553dfa5536dc1c5d4fe7fcdea10b840db635
languageName: node
linkType: hard
-"@docusaurus/plugin-content-docs@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-content-docs@npm:0.0.0-5658"
+"@docusaurus/plugin-content-docs@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-content-docs@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/logger": 0.0.0-5658
- "@docusaurus/mdx-loader": 0.0.0-5658
- "@docusaurus/module-type-aliases": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/logger": 3.0.0-beta.0
+ "@docusaurus/mdx-loader": 3.0.0-beta.0
+ "@docusaurus/module-type-aliases": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
"@types/react-router-config": ^5.0.7
combine-promises: ^1.1.0
fs-extra: ^11.1.1
@@ -2254,104 +2254,104 @@ __metadata:
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: bc8a6ed0fd1d7c53a8f86d8494da31479f2c2cf84f12ab79fe07a15143ced9b07351dabf85d6bca06f24654b3f1e99d6edf735efb6314a584b4cc2a03e05e695
+ checksum: 9c1ebf1bc091a52231aaa1e3cf2456ce4fb1e085ba51c7c7aff9284581eb3bcada9bdf6eca0ddbc1d1501a812b4819cb050096715310656892e7f6f57d4c59a4
languageName: node
linkType: hard
-"@docusaurus/plugin-content-pages@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-content-pages@npm:0.0.0-5658"
+"@docusaurus/plugin-content-pages@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-content-pages@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/mdx-loader": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/mdx-loader": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
fs-extra: ^11.1.1
tslib: ^2.6.0
webpack: ^5.88.1
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: ef0c5bd3c2702266100f07e1adae4be45156a4fb75a249dde2c21fb8bb007f1b3a75f64d6f0c14df1c29417af4d8f0a59ec7dff8e6ba981cce99d35e43d6ca0e
+ checksum: 68b77bae49eaac3343776a16812e50a77f799424ecb19b7e14266cb8f1554a07df64cc9ed692250863c8026ad18556ecc8ac3c8a7cc26722a3d30274a70430be
languageName: node
linkType: hard
-"@docusaurus/plugin-debug@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-debug@npm:0.0.0-5658"
+"@docusaurus/plugin-debug@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-debug@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
"@microlink/react-json-view": ^1.22.2
fs-extra: ^11.1.1
tslib: ^2.6.0
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 9d91448b8ae3794efa8a4a38be24e2b83b45bc6d993a452f0ea799391b85520ddf79afd901d0253798038edc476a67ff593690b01bedfae3e88e5bd0f78c9611
+ checksum: a1b5084dd1c44f5bb90ed598e707a28ec98de1d02cef1ff4f1be08d41c53527ac5e8d8a6deccc52d63ddeee43a6b5abbe84981b031c67c9e8431a7d4b5426782
languageName: node
linkType: hard
-"@docusaurus/plugin-google-analytics@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-google-analytics@npm:0.0.0-5658"
+"@docusaurus/plugin-google-analytics@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-google-analytics@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
tslib: ^2.6.0
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 7ba81b8ce2c0ab50c100eae37c91a29569b6316893563422f90fce49229659aad7f006364dc72cfd387cf8c196411c3f6ad8112a1e55040cc641fcfd66b2b7a5
+ checksum: a30672280d72a0f7dd53e115e619ea0c11e6acc1efea62dec7ca92155ec7e3aa12231868eaea34c8a35810d9d712b7e48a890e7ea9d8a7f3864b26e015453b15
languageName: node
linkType: hard
-"@docusaurus/plugin-google-gtag@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-google-gtag@npm:0.0.0-5658"
+"@docusaurus/plugin-google-gtag@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-google-gtag@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
"@types/gtag.js": ^0.0.12
tslib: ^2.6.0
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 9c052ff6af252df81612af98012175c81a9997d640c47063e911ba8434bed625ece28e4b8e4bc239986ed85b7fa00ea44d77e8b6a2c408dcbbedf14c4acb08e2
+ checksum: 327fe291dbf53f7e315e715d9a1c1c57e2b87a7314e56f9e4e15d55621267405535f5f969e2be73fe0b3f8bf63fae72a3a94be372520afb677c3138634db945b
languageName: node
linkType: hard
-"@docusaurus/plugin-google-tag-manager@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-google-tag-manager@npm:0.0.0-5658"
+"@docusaurus/plugin-google-tag-manager@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-google-tag-manager@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
tslib: ^2.6.0
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: e102d6d3016ee807daa576ecc10e8758d1ecc868214206a543926fbb44e6081ad13ee87e6dc42a99725c28a346b6765ec65839cc5585b731f4a5c3a230c96faf
+ checksum: 12c4bcd2a7ec7b0b99ab8b823add17e6d64bdef27476ebb16633bf2f2185e670b6ee0f23d8e0543b84ff521a8821b2fa284147b4ac5f4ee5c915724700dc165e
languageName: node
linkType: hard
-"@docusaurus/plugin-pwa@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-pwa@npm:0.0.0-5658"
+"@docusaurus/plugin-pwa@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-pwa@npm:3.0.0-beta.0"
dependencies:
"@babel/core": ^7.22.9
"@babel/preset-env": ^7.22.9
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/theme-common": 0.0.0-5658
- "@docusaurus/theme-translations": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/theme-common": 3.0.0-beta.0
+ "@docusaurus/theme-translations": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
babel-loader: ^9.1.3
clsx: ^1.2.1
core-js: ^3.31.1
@@ -2366,51 +2366,51 @@ __metadata:
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: f75dbd1a502117fbeb27b8b52f0e7dd71f5db15d1a283c5d3b0f32a9f568d8a8501d2d57ff34cfdc253868f1ed361ca09f268fd6df87c39e851b2050123bd998
+ checksum: 208883cb1a40c5b93e085967260bc2714367d9287fe3364994b21b83b5cd7c1f68183df1d81f2d0e572f929b85decb0bf06b599103a2a5f233d1baf0f772490e
languageName: node
linkType: hard
-"@docusaurus/plugin-sitemap@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/plugin-sitemap@npm:0.0.0-5658"
+"@docusaurus/plugin-sitemap@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/plugin-sitemap@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/logger": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-common": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/logger": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-common": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
fs-extra: ^11.1.1
sitemap: ^7.1.1
tslib: ^2.6.0
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 090ee64f1b66f6737208158756067d9086060550f51aea76acc50459dffb0c34c9a4ebb2798f66e7a375197421488f30aec39ebb8bf7d9a7e3ca5dba10832e06
+ checksum: f8a583d3d9ad6a4fdeadd39dbc371e1a86e93c29926cc2ea932cdf902a7bca3a14338ffa5cfb5292d01def4b2e407434fe17f5253568136bbe8bf3ea4a135179
languageName: node
linkType: hard
-"@docusaurus/preset-classic@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/preset-classic@npm:0.0.0-5658"
+"@docusaurus/preset-classic@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/preset-classic@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/plugin-content-blog": 0.0.0-5658
- "@docusaurus/plugin-content-docs": 0.0.0-5658
- "@docusaurus/plugin-content-pages": 0.0.0-5658
- "@docusaurus/plugin-debug": 0.0.0-5658
- "@docusaurus/plugin-google-analytics": 0.0.0-5658
- "@docusaurus/plugin-google-gtag": 0.0.0-5658
- "@docusaurus/plugin-google-tag-manager": 0.0.0-5658
- "@docusaurus/plugin-sitemap": 0.0.0-5658
- "@docusaurus/theme-classic": 0.0.0-5658
- "@docusaurus/theme-common": 0.0.0-5658
- "@docusaurus/theme-search-algolia": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/plugin-content-blog": 3.0.0-beta.0
+ "@docusaurus/plugin-content-docs": 3.0.0-beta.0
+ "@docusaurus/plugin-content-pages": 3.0.0-beta.0
+ "@docusaurus/plugin-debug": 3.0.0-beta.0
+ "@docusaurus/plugin-google-analytics": 3.0.0-beta.0
+ "@docusaurus/plugin-google-gtag": 3.0.0-beta.0
+ "@docusaurus/plugin-google-tag-manager": 3.0.0-beta.0
+ "@docusaurus/plugin-sitemap": 3.0.0-beta.0
+ "@docusaurus/theme-classic": 3.0.0-beta.0
+ "@docusaurus/theme-common": 3.0.0-beta.0
+ "@docusaurus/theme-search-algolia": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 3adf354ce29d803ec86fa98f737b500deb142db5dd3cc96ff24fb429089dbe28bebf56f225fc718d821e267a928942625cb9848c696c8f7b0fb8852ba83ff25e
+ checksum: f6e0751f6e14885e16efc08e6e29fcad0c9dd01d32cad95f327a7279f582c2b4305713fd30fa351adb6bb86ae0684f4c1648f82924bfd3af892a401e48926b5c
languageName: node
linkType: hard
@@ -2426,35 +2426,35 @@ __metadata:
languageName: node
linkType: hard
-"@docusaurus/remark-plugin-npm2yarn@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/remark-plugin-npm2yarn@npm:0.0.0-5658"
+"@docusaurus/remark-plugin-npm2yarn@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/remark-plugin-npm2yarn@npm:3.0.0-beta.0"
dependencies:
mdast-util-mdx: ^2.0.0
npm-to-yarn: ^2.0.0
tslib: ^2.6.0
unified: ^10.1.2
unist-util-visit: ^2.0.3
- checksum: 157c84ce7dc82e338ebf798c4e378937f99f5de4e6ba03cdfba658cf2d6217bed886710cad3ba5a0d0465e1c598eff2be521a08e6e07676e1a4f7ae8fa1b79a6
- languageName: node
- linkType: hard
-
-"@docusaurus/theme-classic@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/theme-classic@npm:0.0.0-5658"
- dependencies:
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/mdx-loader": 0.0.0-5658
- "@docusaurus/module-type-aliases": 0.0.0-5658
- "@docusaurus/plugin-content-blog": 0.0.0-5658
- "@docusaurus/plugin-content-docs": 0.0.0-5658
- "@docusaurus/plugin-content-pages": 0.0.0-5658
- "@docusaurus/theme-common": 0.0.0-5658
- "@docusaurus/theme-translations": 0.0.0-5658
- "@docusaurus/types": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-common": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ checksum: 7a81e7059fcac6188699cc79fd1772af7328a0eb6c35f176973548acb86e7d2c56d0b782051a6fc4a5871a3c15445c01979ab09c9cd26765c87b0a42f6af80f8
+ languageName: node
+ linkType: hard
+
+"@docusaurus/theme-classic@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/theme-classic@npm:3.0.0-beta.0"
+ dependencies:
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/mdx-loader": 3.0.0-beta.0
+ "@docusaurus/module-type-aliases": 3.0.0-beta.0
+ "@docusaurus/plugin-content-blog": 3.0.0-beta.0
+ "@docusaurus/plugin-content-docs": 3.0.0-beta.0
+ "@docusaurus/plugin-content-pages": 3.0.0-beta.0
+ "@docusaurus/theme-common": 3.0.0-beta.0
+ "@docusaurus/theme-translations": 3.0.0-beta.0
+ "@docusaurus/types": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-common": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
"@mdx-js/react": ^2.1.5
clsx: ^1.2.1
copy-text-to-clipboard: ^3.2.0
@@ -2471,21 +2471,21 @@ __metadata:
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: fafab7c32725fb50e70204eb32f716dedc42357a68c69c5915748f94bf2c924d1637a384afd50505568fe4cd90f853ad277b7e7644cea5a3ac8307e4c7dd36cf
+ checksum: 62c834ecc040d4fa7e0c7abd4453f51fa5fab4abf51394c13714f331d9a3c416f3dadbb17f498f5a89cd044aba194ebf3a5f7f936a505cf11e0cace5d9882387
languageName: node
linkType: hard
-"@docusaurus/theme-common@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/theme-common@npm:0.0.0-5658"
+"@docusaurus/theme-common@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/theme-common@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/mdx-loader": 0.0.0-5658
- "@docusaurus/module-type-aliases": 0.0.0-5658
- "@docusaurus/plugin-content-blog": 0.0.0-5658
- "@docusaurus/plugin-content-docs": 0.0.0-5658
- "@docusaurus/plugin-content-pages": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-common": 0.0.0-5658
+ "@docusaurus/mdx-loader": 3.0.0-beta.0
+ "@docusaurus/module-type-aliases": 3.0.0-beta.0
+ "@docusaurus/plugin-content-blog": 3.0.0-beta.0
+ "@docusaurus/plugin-content-docs": 3.0.0-beta.0
+ "@docusaurus/plugin-content-pages": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-common": 3.0.0-beta.0
"@types/history": ^4.7.11
"@types/react": "*"
"@types/react-router-config": "*"
@@ -2493,27 +2493,26 @@ __metadata:
parse-numeric-range: ^1.3.0
prism-react-renderer: ^1.3.5
tslib: ^2.6.0
- use-sync-external-store: ^1.2.0
utility-types: ^3.10.0
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 6f2175b5d53f5788f4ad91c9fd62cefec71167ce0777c93d72d40d9ff5a62040c4cebb5d0f5fb51b65e0d656674e463210434900e532725d5266f0ea61a31bfd
+ checksum: 4e376a825f53364dbdb6823d97e199cf2bab6982df0113041320ca589930381e911c9ec2e0eec48e7d79547d21152271cb33d348b7be4e8030910f8116d8de1c
languageName: node
linkType: hard
-"@docusaurus/theme-search-algolia@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/theme-search-algolia@npm:0.0.0-5658"
+"@docusaurus/theme-search-algolia@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/theme-search-algolia@npm:3.0.0-beta.0"
dependencies:
"@docsearch/react": ~3.3.3
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/logger": 0.0.0-5658
- "@docusaurus/plugin-content-docs": 0.0.0-5658
- "@docusaurus/theme-common": 0.0.0-5658
- "@docusaurus/theme-translations": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
- "@docusaurus/utils-validation": 0.0.0-5658
+ "@docusaurus/core": 3.0.0-beta.0
+ "@docusaurus/logger": 3.0.0-beta.0
+ "@docusaurus/plugin-content-docs": 3.0.0-beta.0
+ "@docusaurus/theme-common": 3.0.0-beta.0
+ "@docusaurus/theme-translations": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
+ "@docusaurus/utils-validation": 3.0.0-beta.0
algoliasearch: ^4.18.0
algoliasearch-helper: ^3.13.3
clsx: ^1.2.1
@@ -2525,30 +2524,30 @@ __metadata:
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 5047e5b445fc53b06fccfdff9698d0afbfd830f8f2cfc3be91017d000c5f60d439df12ebc41f2f1f242638595e78676a06ec9845f7fe068f85d134f61aa729d8
+ checksum: 4230964c0cd102ec5f31c01a5fbdc7b35de21c798c2870846cf4ff9a2f02e8545a534bebe70115d3e390d7746a67843c652c64c23ea7dede10c6e1d71fca3e6c
languageName: node
linkType: hard
-"@docusaurus/theme-translations@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/theme-translations@npm:0.0.0-5658"
+"@docusaurus/theme-translations@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/theme-translations@npm:3.0.0-beta.0"
dependencies:
fs-extra: ^11.1.1
tslib: ^2.6.0
- checksum: 62c50ec102be3008d897e250817d1830d5fff5fbb0182c2dad482dfc4e5163ace9900b380d840b6df8cee9746fa3b5638baf8c12b93d0c56926f99869f0c7dc2
+ checksum: cbedd0c07084646a6e867dfde43fb6b2128c80d4da77b29ced9e72335824ae6994e2f26985fa5d6c6aed578c44f9f42f882426340bfb9ac90feea648e370450e
languageName: node
linkType: hard
-"@docusaurus/tsconfig@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/tsconfig@npm:0.0.0-5658"
- checksum: 86c598e5933ce6b6cc08d5176ea54eb25c8e996a6a7013c2faacc166720632fc65ffc7ed6db9764ed03ce88e4be825abdcd638a14018f4e2e79c7f9d367f4fd7
+"@docusaurus/tsconfig@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/tsconfig@npm:3.0.0-beta.0"
+ checksum: 97410af622c5e4ded86107530b580999dfd59ce2d75b82a22d976db44586c3eea955675769fc4687ef546e7560133cb847d49fef0e8b913916cfde84820578c6
languageName: node
linkType: hard
-"@docusaurus/types@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/types@npm:0.0.0-5658"
+"@docusaurus/types@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/types@npm:3.0.0-beta.0"
dependencies:
"@types/history": ^4.7.11
"@types/react": "*"
@@ -2561,13 +2560,13 @@ __metadata:
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
- checksum: 28341d2366e324419925e5ad40019f81b91a2fa921f8c07d71e7e52eaf8f31c384e1cae45e145bfaf82748256d698a82e32b9f522a4026c9923e707070ca1e9c
+ checksum: 91b8697d95e79829a4596ec18f659d96aa244dc13a1420d43efdb8dfc743597d973e313b7d1c7f7a5e5998933396b21366cf77c7fc42842f8390fd5267aa5ee5
languageName: node
linkType: hard
-"@docusaurus/utils-common@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/utils-common@npm:0.0.0-5658"
+"@docusaurus/utils-common@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/utils-common@npm:3.0.0-beta.0"
dependencies:
tslib: ^2.6.0
peerDependencies:
@@ -2575,28 +2574,28 @@ __metadata:
peerDependenciesMeta:
"@docusaurus/types":
optional: true
- checksum: f92e3680f3526f4dc39e871b3d3d6ea5339e6cc5f66e461bd6a27944b2dcf7f8536e4973129605024c9e86c813b40dbee7c24881a219f32cb65f060be6710153
+ checksum: b4b0c84077b47a9b3949e7c2e1308c702df67f689659f8e3fb55f373d0964a38cf0a16a5cdda5df0a58b17b03d001a82d2798bd7fcce7f3a6e2b4c2c1de0fcb9
languageName: node
linkType: hard
-"@docusaurus/utils-validation@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/utils-validation@npm:0.0.0-5658"
+"@docusaurus/utils-validation@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/utils-validation@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/logger": 0.0.0-5658
- "@docusaurus/utils": 0.0.0-5658
+ "@docusaurus/logger": 3.0.0-beta.0
+ "@docusaurus/utils": 3.0.0-beta.0
joi: ^17.9.2
js-yaml: ^4.1.0
tslib: ^2.6.0
- checksum: e3bfa06d3dcdd755c2598e995eb905f1185a33e2b34bfbbf9530b2950b30c434f7f045c3fde89f5b7b47563081b08e2545f411687cfcc1f7bf2babc8db87ac6f
+ checksum: 2f0544758459850aab2e0ea99610173d60c3e515984c73208b3c2d36a9357ca68c49d25672378bc23373675d3e13f6e26fc324316b2068b762a6f9d2db3158b0
languageName: node
linkType: hard
-"@docusaurus/utils@npm:0.0.0-5658":
- version: 0.0.0-5658
- resolution: "@docusaurus/utils@npm:0.0.0-5658"
+"@docusaurus/utils@npm:3.0.0-beta.0":
+ version: 3.0.0-beta.0
+ resolution: "@docusaurus/utils@npm:3.0.0-beta.0"
dependencies:
- "@docusaurus/logger": 0.0.0-5658
+ "@docusaurus/logger": 3.0.0-beta.0
"@svgr/webpack": ^6.5.1
escape-string-regexp: ^4.0.0
file-loader: ^6.2.0
@@ -2617,22 +2616,22 @@ __metadata:
peerDependenciesMeta:
"@docusaurus/types":
optional: true
- checksum: 2c16dd32723142d04c2f1937a071d758a8fd0c3ab0cdeca4118d6a5f1482a014f76944e32f6bca8e4af44bc4a43c2f280ae3943eccec91f7a4c6c09de6804599
+ checksum: c3117273acf3d25a82a40b4a3ba8ae964178f3ea83827cb1b2fb1c87011641364a34af2de6e5ebc50b4e740a2a8627d9b3a3dcdb28eccdab011f3b0440c9d13a
languageName: node
linkType: hard
-"@es-joy/jsdoccomment@npm:~0.39.4":
- version: 0.39.4
- resolution: "@es-joy/jsdoccomment@npm:0.39.4"
+"@es-joy/jsdoccomment@npm:~0.40.1":
+ version: 0.40.1
+ resolution: "@es-joy/jsdoccomment@npm:0.40.1"
dependencies:
- comment-parser: 1.3.1
+ comment-parser: 1.4.0
esquery: ^1.5.0
jsdoc-type-pratt-parser: ~4.0.0
- checksum: efae229ae998840fdcb4faf44574bcc0a070e4aa6df69c01afedaeaddf6d2ea857a68b463df45f9437231201201f092402968c0c53c34e3c09842fef0da7f2d4
+ checksum: 6098394cd97ad0532dde4f3171980e700e4199c231969311efd2362c2b5a4eefa9d59a0bc1fe513afbb5cc456ef7633491a2984d64252e7bd8ebe22489120610
languageName: node
linkType: hard
-"@eslint-community/eslint-utils@npm:^4.2.0":
+"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0":
version: 4.4.0
resolution: "@eslint-community/eslint-utils@npm:4.4.0"
dependencies:
@@ -2643,16 +2642,16 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/regexpp@npm:^4.4.0":
- version: 4.6.0
- resolution: "@eslint-community/regexpp@npm:4.6.0"
- checksum: 7517bf490970bcc6be4d793b202ec5a8d525078dd817454b832669e79d6cdd3af25068563410b0c3d861891ccbf7e03626a575e6fec6a2eac7ae4fd5b0223e0f
+"@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1":
+ version: 4.8.1
+ resolution: "@eslint-community/regexpp@npm:4.8.1"
+ checksum: 82d62c845ef42b810f268cfdc84d803a2da01735fb52e902fd34bdc09f92464a094fd8e4802839874b000b2f73f67c972859e813ba705233515d3e954f234bf2
languageName: node
linkType: hard
-"@eslint/eslintrc@npm:^2.1.0":
- version: 2.1.0
- resolution: "@eslint/eslintrc@npm:2.1.0"
+"@eslint/eslintrc@npm:^2.1.2":
+ version: 2.1.2
+ resolution: "@eslint/eslintrc@npm:2.1.2"
dependencies:
ajv: ^6.12.4
debug: ^4.3.2
@@ -2663,14 +2662,14 @@ __metadata:
js-yaml: ^4.1.0
minimatch: ^3.1.2
strip-json-comments: ^3.1.1
- checksum: d5ed0adbe23f6571d8c9bb0ca6edf7618dc6aed4046aa56df7139f65ae7b578874e0d9c796df784c25bda648ceb754b6320277d828c8b004876d7443b8dc018c
+ checksum: bc742a1e3b361f06fedb4afb6bf32cbd27171292ef7924f61c62f2aed73048367bcc7ac68f98c06d4245cd3fabc43270f844e3c1699936d4734b3ac5398814a7
languageName: node
linkType: hard
-"@eslint/js@npm:8.44.0":
- version: 8.44.0
- resolution: "@eslint/js@npm:8.44.0"
- checksum: fc539583226a28f5677356e9f00d2789c34253f076643d2e32888250e509a4e13aafe0880cb2425139051de0f3a48d25bfc5afa96b7304f203b706c17340e3cf
+"@eslint/js@npm:8.49.0":
+ version: 8.49.0
+ resolution: "@eslint/js@npm:8.49.0"
+ checksum: a6601807c8aeeefe866926ad92ed98007c034a735af20ff709009e39ad1337474243d47908500a3bde04e37bfba16bcf1d3452417f962e1345bc8756edd6b830
languageName: node
linkType: hard
@@ -2717,14 +2716,14 @@ __metadata:
languageName: node
linkType: hard
-"@humanwhocodes/config-array@npm:^0.11.10":
- version: 0.11.10
- resolution: "@humanwhocodes/config-array@npm:0.11.10"
+"@humanwhocodes/config-array@npm:^0.11.11":
+ version: 0.11.11
+ resolution: "@humanwhocodes/config-array@npm:0.11.11"
dependencies:
"@humanwhocodes/object-schema": ^1.2.1
debug: ^4.1.1
minimatch: ^3.0.5
- checksum: 1b1302e2403d0e35bc43e66d67a2b36b0ad1119efc704b5faff68c41f791a052355b010fb2d27ef022670f550de24cd6d08d5ecf0821c16326b7dcd0ee5d5d8a
+ checksum: db84507375ab77b8ffdd24f498a5b49ad6b64391d30dd2ac56885501d03964d29637e05b1ed5aefa09d57ac667e28028bc22d2da872bfcd619652fbdb5f4ca19
languageName: node
linkType: hard
@@ -2939,7 +2938,7 @@ __metadata:
"@types/babel__core": ^7.1.14
"@types/babel__generator": ^7.0.0
"@types/babel__template": ^7.0.2
- "@types/node": ~14.14.45
+ "@types/node": ^16.10.0
"@types/which": ^3.0.0
"@types/ws": 8.5.1
"@typescript-eslint/eslint-plugin": ^5.14.0
@@ -2961,6 +2960,7 @@ __metadata:
eslint-plugin-local: "link:./.eslintplugin"
eslint-plugin-markdown: ^3.0.0
eslint-plugin-prettier: ^4.0.0
+ eslint-plugin-unicorn: ^46.0.0
execa: ^5.0.0
find-process: ^1.4.1
glob: ^10.0.0
@@ -3886,20 +3886,6 @@ __metadata:
languageName: node
linkType: hard
-"@pkgr/utils@npm:^2.3.1":
- version: 2.4.2
- resolution: "@pkgr/utils@npm:2.4.2"
- dependencies:
- cross-spawn: ^7.0.3
- fast-glob: ^3.3.0
- is-glob: ^4.0.3
- open: ^9.1.0
- picocolors: ^1.0.0
- tslib: ^2.6.0
- checksum: 24e04c121269317d259614cd32beea3af38277151c4002df5883c4be920b8e3490bb897748e844f9d46bf68230f86dabd4e8f093773130e7e60529a769a132fc
- languageName: node
- linkType: hard
-
"@pnpm/config.env-replace@npm:^1.1.0":
version: 1.1.0
resolution: "@pnpm/config.env-replace@npm:1.1.0"
@@ -5125,10 +5111,10 @@ __metadata:
languageName: node
linkType: hard
-"@types/node@npm:~14.14.45":
- version: 14.14.45
- resolution: "@types/node@npm:14.14.45"
- checksum: 3870a0128011b01c6fb6655e0f682b1b660e141f84d76c70fe503f5c7cf38bd06fc7b9a7d3c760601bce0598421f552695de40f095863ede29a6e22a13213b3e
+"@types/node@npm:~16.18.0":
+ version: 16.18.52
+ resolution: "@types/node@npm:16.18.52"
+ checksum: 6b1f27a848a69a70039cb27c2583317b5d051990933955c42bc2a2f299266ffa360f7cc3c7089d04fdf39144c476d475931900f00dabbc4f933eeb2d664f9778
languageName: node
linkType: hard
@@ -5315,9 +5301,9 @@ __metadata:
linkType: hard
"@types/semver@npm:^7.1.0, @types/semver@npm:^7.3.12":
- version: 7.5.0
- resolution: "@types/semver@npm:7.5.0"
- checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2
+ version: 7.5.1
+ resolution: "@types/semver@npm:7.5.1"
+ checksum: 2fffe938c7ac168711f245a16e1856a3578d77161ca17e29a05c3e02c7be3e9c5beefa29a3350f6c1bd982fb70aa28cc52e4845eb7d36246bcdc0377170d584d
languageName: node
linkType: hard
@@ -5405,9 +5391,9 @@ __metadata:
linkType: hard
"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2":
- version: 2.0.7
- resolution: "@types/unist@npm:2.0.7"
- checksum: b97a219554e83431f19a93ff113306bf0512909292815e8f32964e47d041c505af1aaa2a381c23e137c4c0b962fad58d4ce9c5c3256642921a466be43c1fc715
+ version: 2.0.8
+ resolution: "@types/unist@npm:2.0.8"
+ checksum: f4852d10a6752dc70df363917ef74453e5d2fd42824c0f6d09d19d530618e1402193977b1207366af4415aaec81d4e262c64d00345402020c4ca179216e553c7
languageName: node
linkType: hard
@@ -5939,7 +5925,7 @@ __metadata:
languageName: node
linkType: hard
-"ajv@npm:^6.10.0, ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:~6.12.6":
+"ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:~6.12.6":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
@@ -6253,15 +6239,15 @@ __metadata:
linkType: hard
"array-includes@npm:^3.1.6":
- version: 3.1.6
- resolution: "array-includes@npm:3.1.6"
+ version: 3.1.7
+ resolution: "array-includes@npm:3.1.7"
dependencies:
call-bind: ^1.0.2
- define-properties: ^1.1.4
- es-abstract: ^1.20.4
- get-intrinsic: ^1.1.3
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ get-intrinsic: ^1.2.1
is-string: ^1.0.7
- checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5
+ checksum: 06f9e4598fac12a919f7c59a3f04f010ea07f0b7f0585465ed12ef528a60e45f374e79d1bddbb34cdd4338357d00023ddbd0ac18b0be36964f5e726e8965d7fc
languageName: node
linkType: hard
@@ -6272,27 +6258,40 @@ __metadata:
languageName: node
linkType: hard
+"array.prototype.findlastindex@npm:^1.2.2":
+ version: 1.2.3
+ resolution: "array.prototype.findlastindex@npm:1.2.3"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ es-shim-unscopables: ^1.0.0
+ get-intrinsic: ^1.2.1
+ checksum: 31f35d7b370c84db56484618132041a9af401b338f51899c2e78ef7690fbba5909ee7ca3c59a7192085b328cc0c68c6fd1f6d1553db01a689a589ae510f3966e
+ languageName: node
+ linkType: hard
+
"array.prototype.flat@npm:^1.3.1":
- version: 1.3.1
- resolution: "array.prototype.flat@npm:1.3.1"
+ version: 1.3.2
+ resolution: "array.prototype.flat@npm:1.3.2"
dependencies:
call-bind: ^1.0.2
- define-properties: ^1.1.4
- es-abstract: ^1.20.4
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
es-shim-unscopables: ^1.0.0
- checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b
+ checksum: 5d6b4bf102065fb3f43764bfff6feb3295d372ce89591e6005df3d0ce388527a9f03c909af6f2a973969a4d178ab232ffc9236654149173e0e187ec3a1a6b87b
languageName: node
linkType: hard
"array.prototype.flatmap@npm:^1.3.1":
- version: 1.3.1
- resolution: "array.prototype.flatmap@npm:1.3.1"
+ version: 1.3.2
+ resolution: "array.prototype.flatmap@npm:1.3.2"
dependencies:
call-bind: ^1.0.2
- define-properties: ^1.1.4
- es-abstract: ^1.20.4
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
es-shim-unscopables: ^1.0.0
- checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987
+ checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3
languageName: node
linkType: hard
@@ -6692,13 +6691,6 @@ __metadata:
languageName: node
linkType: hard
-"big-integer@npm:^1.6.44":
- version: 1.6.51
- resolution: "big-integer@npm:1.6.51"
- checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518
- languageName: node
- linkType: hard
-
"big.js@npm:^5.2.2":
version: 5.2.2
resolution: "big.js@npm:5.2.2"
@@ -6807,15 +6799,6 @@ __metadata:
languageName: node
linkType: hard
-"bplist-parser@npm:^0.2.0":
- version: 0.2.0
- resolution: "bplist-parser@npm:0.2.0"
- dependencies:
- big-integer: ^1.6.44
- checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd
- languageName: node
- linkType: hard
-
"brace-expansion@npm:^1.1.7":
version: 1.1.11
resolution: "brace-expansion@npm:1.1.11"
@@ -6917,15 +6900,6 @@ __metadata:
languageName: node
linkType: hard
-"bundle-name@npm:^3.0.0":
- version: 3.0.0
- resolution: "bundle-name@npm:3.0.0"
- dependencies:
- run-applescript: ^5.0.0
- checksum: edf2b1fbe6096ed32e7566947ace2ea937ee427391744d7510a2880c4b9a5b3543d3f6c551236a29e5c87d3195f8e2912516290e638c15bcbede7b37cc375615
- languageName: node
- linkType: hard
-
"byte-size@npm:^7.0.1":
version: 7.0.1
resolution: "byte-size@npm:7.0.1"
@@ -7296,6 +7270,15 @@ __metadata:
languageName: node
linkType: hard
+"clean-regexp@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "clean-regexp@npm:1.0.0"
+ dependencies:
+ escape-string-regexp: ^1.0.5
+ checksum: 0b1ce281b07da2463c6882ea2e8409119b6cabbd9f687cdbdcee942c45b2b9049a2084f7b5f228c63ef9f21e722963ae0bfe56a735dbdbdd92512867625a7e40
+ languageName: node
+ linkType: hard
+
"clean-stack@npm:^2.0.0":
version: 2.2.0
resolution: "clean-stack@npm:2.2.0"
@@ -7597,10 +7580,10 @@ __metadata:
languageName: node
linkType: hard
-"comment-parser@npm:1.3.1":
- version: 1.3.1
- resolution: "comment-parser@npm:1.3.1"
- checksum: 421e6a113a3afd548500e7174ab46a2049dccf92e82bbaa3b209031b1bdf97552aabfa1ae2a120c0b62df17e1ba70e0d8b05d68504fee78e1ef974c59bcfe718
+"comment-parser@npm:1.4.0":
+ version: 1.4.0
+ resolution: "comment-parser@npm:1.4.0"
+ checksum: e086da3b14af9455177f1ab801bc54de9139a77fcef55dbfb751ae68d687ac83b0effb83d113ccf8cd217d9d93ce2b472002953cac342092a3fadfb9f5cd8e38
languageName: node
linkType: hard
@@ -8474,28 +8457,6 @@ __metadata:
languageName: node
linkType: hard
-"default-browser-id@npm:^3.0.0":
- version: 3.0.0
- resolution: "default-browser-id@npm:3.0.0"
- dependencies:
- bplist-parser: ^0.2.0
- untildify: ^4.0.0
- checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941
- languageName: node
- linkType: hard
-
-"default-browser@npm:^4.0.0":
- version: 4.0.0
- resolution: "default-browser@npm:4.0.0"
- dependencies:
- bundle-name: ^3.0.0
- default-browser-id: ^3.0.0
- execa: ^7.1.1
- titleize: ^3.0.0
- checksum: 40c5af984799042b140300be5639c9742599bda76dc9eba5ac9ad5943c83dd36cebc4471eafcfddf8e0ec817166d5ba89d56f08e66a126c7c7908a179cead1a7
- languageName: node
- linkType: hard
-
"default-gateway@npm:^6.0.3":
version: 6.0.3
resolution: "default-gateway@npm:6.0.3"
@@ -8528,13 +8489,6 @@ __metadata:
languageName: node
linkType: hard
-"define-lazy-prop@npm:^3.0.0":
- version: 3.0.0
- resolution: "define-lazy-prop@npm:3.0.0"
- checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6
- languageName: node
- linkType: hard
-
"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0":
version: 1.2.0
resolution: "define-properties@npm:1.2.0"
@@ -9064,7 +9018,7 @@ __metadata:
languageName: node
linkType: hard
-"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4":
+"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4, es-abstract@npm:^1.22.1":
version: 1.22.1
resolution: "es-abstract@npm:1.22.1"
dependencies:
@@ -9245,36 +9199,35 @@ __metadata:
linkType: hard
"eslint-import-resolver-node@npm:^0.3.7":
- version: 0.3.7
- resolution: "eslint-import-resolver-node@npm:0.3.7"
+ version: 0.3.9
+ resolution: "eslint-import-resolver-node@npm:0.3.9"
dependencies:
debug: ^3.2.7
- is-core-module: ^2.11.0
- resolve: ^1.22.1
- checksum: 3379aacf1d2c6952c1b9666c6fa5982c3023df695430b0d391c0029f6403a7775414873d90f397e98ba6245372b6c8960e16e74d9e4a3b0c0a4582f3bdbe3d6e
+ is-core-module: ^2.13.0
+ resolve: ^1.22.4
+ checksum: 439b91271236b452d478d0522a44482e8c8540bf9df9bd744062ebb89ab45727a3acd03366a6ba2bdbcde8f9f718bab7fe8db64688aca75acf37e04eafd25e22
languageName: node
linkType: hard
"eslint-import-resolver-typescript@npm:^3.2.5":
- version: 3.5.5
- resolution: "eslint-import-resolver-typescript@npm:3.5.5"
+ version: 3.6.0
+ resolution: "eslint-import-resolver-typescript@npm:3.6.0"
dependencies:
debug: ^4.3.4
enhanced-resolve: ^5.12.0
eslint-module-utils: ^2.7.4
+ fast-glob: ^3.3.1
get-tsconfig: ^4.5.0
- globby: ^13.1.3
is-core-module: ^2.11.0
is-glob: ^4.0.3
- synckit: ^0.8.5
peerDependencies:
eslint: "*"
eslint-plugin-import: "*"
- checksum: 27e6276fdff5d377c9036362ff736ac29852106e883ff589ea9092dc57d4bc2a67a82d75134221124f05045f9a7e2114a159b2c827d1f9f64d091f7afeab0f58
+ checksum: 57b1b3859149f847e0d4174ff979cf35362d60c951df047f01b96f4c3794a7ea0d4e1ec85be25e610d3706902c3acfb964a66b825c1a55e3ce3a124b9a7a13bd
languageName: node
linkType: hard
-"eslint-module-utils@npm:^2.7.4":
+"eslint-module-utils@npm:^2.7.4, eslint-module-utils@npm:^2.8.0":
version: 2.8.0
resolution: "eslint-module-utils@npm:2.8.0"
dependencies:
@@ -9299,27 +9252,29 @@ __metadata:
linkType: hard
"eslint-plugin-import@npm:^2.6.0":
- version: 2.27.5
- resolution: "eslint-plugin-import@npm:2.27.5"
+ version: 2.28.1
+ resolution: "eslint-plugin-import@npm:2.28.1"
dependencies:
array-includes: ^3.1.6
+ array.prototype.findlastindex: ^1.2.2
array.prototype.flat: ^1.3.1
array.prototype.flatmap: ^1.3.1
debug: ^3.2.7
doctrine: ^2.1.0
eslint-import-resolver-node: ^0.3.7
- eslint-module-utils: ^2.7.4
+ eslint-module-utils: ^2.8.0
has: ^1.0.3
- is-core-module: ^2.11.0
+ is-core-module: ^2.13.0
is-glob: ^4.0.3
minimatch: ^3.1.2
+ object.fromentries: ^2.0.6
+ object.groupby: ^1.0.0
object.values: ^1.1.6
- resolve: ^1.22.1
- semver: ^6.3.0
- tsconfig-paths: ^3.14.1
+ semver: ^6.3.1
+ tsconfig-paths: ^3.14.2
peerDependencies:
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
- checksum: f500571a380167e25d72a4d925ef9a7aae8899eada57653e5f3051ec3d3c16d08271fcefe41a30a9a2f4fefc232f066253673ee4ea77b30dba65ae173dade85d
+ checksum: e8ae6dd8f06d8adf685f9c1cfd46ac9e053e344a05c4090767e83b63a85c8421ada389807a39e73c643b9bff156715c122e89778169110ed68d6428e12607edf
languageName: node
linkType: hard
@@ -9342,21 +9297,21 @@ __metadata:
linkType: hard
"eslint-plugin-jsdoc@npm:^46.0.0":
- version: 46.4.4
- resolution: "eslint-plugin-jsdoc@npm:46.4.4"
+ version: 46.6.0
+ resolution: "eslint-plugin-jsdoc@npm:46.6.0"
dependencies:
- "@es-joy/jsdoccomment": ~0.39.4
+ "@es-joy/jsdoccomment": ~0.40.1
are-docs-informative: ^0.0.2
- comment-parser: 1.3.1
+ comment-parser: 1.4.0
debug: ^4.3.4
escape-string-regexp: ^4.0.0
esquery: ^1.5.0
is-builtin-module: ^3.2.1
- semver: ^7.5.1
+ semver: ^7.5.4
spdx-expression-parse: ^3.0.1
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
- checksum: bc97f2f146aedcf43b1610a80eb9623deb365a30ba54eb37e6f82c6f205136aa51f67a65b0625729cb33ec941710bfa08d9d18b59296e2d84c2fd6a57d63c2be
+ checksum: 3e2b46b31c6022773b8d21282b3a95fcc8053c865e4529516f9806860331021db1548a75972cf39eb1615fb5b794340365e4bd90033218aa427693c96d9e7878
languageName: node
linkType: hard
@@ -9367,13 +9322,13 @@ __metadata:
linkType: soft
"eslint-plugin-markdown@npm:^3.0.0":
- version: 3.0.0
- resolution: "eslint-plugin-markdown@npm:3.0.0"
+ version: 3.0.1
+ resolution: "eslint-plugin-markdown@npm:3.0.1"
dependencies:
mdast-util-from-markdown: ^0.8.5
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- checksum: ea9e8613cffcf7decbc2de0c900a83553ccdccfb6d90187e5d461a457a403d2634585a8c165cc4adf52c86f3b910161f33b1f24a46f296c4a577d2547780c997
+ checksum: 91233d35777517a290377233eecbdbbe17d583f40b11b9adf371d051a98012ad6b540967aae59c2786fb8b66aa7c1abb27108947034b1f0f3e0df1c8aae9f2e7
languageName: node
linkType: hard
@@ -9392,6 +9347,32 @@ __metadata:
languageName: node
linkType: hard
+"eslint-plugin-unicorn@npm:^46.0.0":
+ version: 46.0.1
+ resolution: "eslint-plugin-unicorn@npm:46.0.1"
+ dependencies:
+ "@babel/helper-validator-identifier": ^7.19.1
+ "@eslint-community/eslint-utils": ^4.1.2
+ ci-info: ^3.6.1
+ clean-regexp: ^1.0.0
+ esquery: ^1.4.0
+ indent-string: ^4.0.0
+ is-builtin-module: ^3.2.0
+ jsesc: ^3.0.2
+ lodash: ^4.17.21
+ pluralize: ^8.0.0
+ read-pkg-up: ^7.0.1
+ regexp-tree: ^0.1.24
+ regjsparser: ^0.9.1
+ safe-regex: ^2.1.1
+ semver: ^7.3.8
+ strip-indent: ^3.0.0
+ peerDependencies:
+ eslint: ">=8.28.0"
+ checksum: 2059aee095a00eedcda8c5407fdb91075549dd468bc26e1e5ca585c0c5c5daf621bc7eaab6159b56ca6d65653705ac139caf8a2a667f777efb425eae6abae61e
+ languageName: node
+ linkType: hard
+
"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1":
version: 5.1.1
resolution: "eslint-scope@npm:5.1.1"
@@ -9402,43 +9383,43 @@ __metadata:
languageName: node
linkType: hard
-"eslint-scope@npm:^7.2.0":
- version: 7.2.1
- resolution: "eslint-scope@npm:7.2.1"
+"eslint-scope@npm:^7.2.2":
+ version: 7.2.2
+ resolution: "eslint-scope@npm:7.2.2"
dependencies:
esrecurse: ^4.3.0
estraverse: ^5.2.0
- checksum: dccda5c8909216f6261969b72c77b95e385f9086bed4bc09d8a6276df8439d8f986810fd9ac3bd02c94c0572cefc7fdbeae392c69df2e60712ab8263986522c5
+ checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e
languageName: node
linkType: hard
-"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1":
- version: 3.4.1
- resolution: "eslint-visitor-keys@npm:3.4.1"
- checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c
+"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
+ version: 3.4.3
+ resolution: "eslint-visitor-keys@npm:3.4.3"
+ checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60
languageName: node
linkType: hard
"eslint@npm:^8.8.0":
- version: 8.45.0
- resolution: "eslint@npm:8.45.0"
+ version: 8.49.0
+ resolution: "eslint@npm:8.49.0"
dependencies:
"@eslint-community/eslint-utils": ^4.2.0
- "@eslint-community/regexpp": ^4.4.0
- "@eslint/eslintrc": ^2.1.0
- "@eslint/js": 8.44.0
- "@humanwhocodes/config-array": ^0.11.10
+ "@eslint-community/regexpp": ^4.6.1
+ "@eslint/eslintrc": ^2.1.2
+ "@eslint/js": 8.49.0
+ "@humanwhocodes/config-array": ^0.11.11
"@humanwhocodes/module-importer": ^1.0.1
"@nodelib/fs.walk": ^1.2.8
- ajv: ^6.10.0
+ ajv: ^6.12.4
chalk: ^4.0.0
cross-spawn: ^7.0.2
debug: ^4.3.2
doctrine: ^3.0.0
escape-string-regexp: ^4.0.0
- eslint-scope: ^7.2.0
- eslint-visitor-keys: ^3.4.1
- espree: ^9.6.0
+ eslint-scope: ^7.2.2
+ eslint-visitor-keys: ^3.4.3
+ espree: ^9.6.1
esquery: ^1.4.2
esutils: ^2.0.2
fast-deep-equal: ^3.1.3
@@ -9462,11 +9443,11 @@ __metadata:
text-table: ^0.2.0
bin:
eslint: bin/eslint.js
- checksum: 3e6dcce5cc43c5e301662db88ee26d1d188b22c177b9f104d7eefd1191236980bd953b3670fe2fac287114b26d7c5420ab48407d7ea1c3a446d6313c000009da
+ checksum: 4dfe257e1e42da2f9da872b05aaaf99b0f5aa022c1a91eee8f2af1ab72651b596366320c575ccd4e0469f7b4c97aff5bb85ae3323ebd6a293c3faef4028b0d81
languageName: node
linkType: hard
-"espree@npm:^9.6.0":
+"espree@npm:^9.6.0, espree@npm:^9.6.1":
version: 9.6.1
resolution: "espree@npm:9.6.1"
dependencies:
@@ -9487,7 +9468,7 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.4.2, esquery@npm:^1.5.0":
+"esquery@npm:^1.4.0, esquery@npm:^1.4.2, esquery@npm:^1.5.0":
version: 1.5.0
resolution: "esquery@npm:1.5.0"
dependencies:
@@ -9834,23 +9815,6 @@ __metadata:
languageName: node
linkType: hard
-"execa@npm:^7.1.1":
- version: 7.1.1
- resolution: "execa@npm:7.1.1"
- dependencies:
- cross-spawn: ^7.0.3
- get-stream: ^6.0.1
- human-signals: ^4.3.0
- is-stream: ^3.0.0
- merge-stream: ^2.0.0
- npm-run-path: ^5.1.0
- onetime: ^6.0.0
- signal-exit: ^3.0.7
- strip-final-newline: ^3.0.0
- checksum: 21fa46fc69314ace4068cf820142bdde5b643a5d89831c2c9349479c1555bff137a291b8e749e7efca36535e4e0a8c772c11008ca2e84d2cbd6ca141a3c8f937
- languageName: node
- linkType: hard
-
"exit@npm:^0.1.2":
version: 0.1.2
resolution: "exit@npm:0.1.2"
@@ -9972,7 +9936,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0":
+"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.1":
version: 3.3.1
resolution: "fast-glob@npm:3.3.1"
dependencies:
@@ -10263,16 +10227,17 @@ __metadata:
linkType: hard
"flat-cache@npm:^3.0.4":
- version: 3.0.4
- resolution: "flat-cache@npm:3.0.4"
+ version: 3.1.0
+ resolution: "flat-cache@npm:3.1.0"
dependencies:
- flatted: ^3.1.0
+ flatted: ^3.2.7
+ keyv: ^4.5.3
rimraf: ^3.0.2
- checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365
+ checksum: 99312601d5b90f44aef403f17f056dc09be7e437703740b166cdc9386d99e681f74e6b6e8bd7d010bda66904ea643c9527276b1b80308a2119741d94108a4d8f
languageName: node
linkType: hard
-"flatted@npm:^3.1.0":
+"flatted@npm:^3.2.7":
version: 3.2.7
resolution: "flatted@npm:3.2.7"
checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35
@@ -10650,11 +10615,11 @@ __metadata:
linkType: hard
"get-tsconfig@npm:^4.5.0":
- version: 4.6.2
- resolution: "get-tsconfig@npm:4.6.2"
+ version: 4.7.0
+ resolution: "get-tsconfig@npm:4.7.0"
dependencies:
resolve-pkg-maps: ^1.0.0
- checksum: e791e671a9b55e91efea3ca819ecd7a25beae679e31c83234bf3dd62ddd93df070c1b95ae7e29d206358ebb6408f6f79ac6d83a32a3bbd6a6d217babe23de077
+ checksum: 44536925720acc2f133d26301d5626405d8fe33066625484ff309bb6fb7f3310dc0bb202f862805f21a791e38a9870c6dddb013d1443dd5d745d91ad1946254a
languageName: node
linkType: hard
@@ -10828,11 +10793,11 @@ __metadata:
linkType: hard
"globals@npm:^13.19.0":
- version: 13.20.0
- resolution: "globals@npm:13.20.0"
+ version: 13.21.0
+ resolution: "globals@npm:13.21.0"
dependencies:
type-fest: ^0.20.2
- checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a
+ checksum: 86c92ca8a04efd864c10852cd9abb1ebe6d447dcc72936783e66eaba1087d7dba5c9c3421a48d6ca722c319378754dbcc3f3f732dbe47592d7de908edf58a773
languageName: node
linkType: hard
@@ -10859,7 +10824,7 @@ __metadata:
languageName: node
linkType: hard
-"globby@npm:^13.1.1, globby@npm:^13.1.3":
+"globby@npm:^13.1.1":
version: 13.2.2
resolution: "globby@npm:13.2.2"
dependencies:
@@ -11493,13 +11458,6 @@ __metadata:
languageName: node
linkType: hard
-"human-signals@npm:^4.3.0":
- version: 4.3.1
- resolution: "human-signals@npm:4.3.1"
- checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1
- languageName: node
- linkType: hard
-
"humanize-ms@npm:^1.2.1":
version: 1.2.1
resolution: "humanize-ms@npm:1.2.1"
@@ -11871,7 +11829,7 @@ __metadata:
languageName: node
linkType: hard
-"is-builtin-module@npm:^3.2.1":
+"is-builtin-module@npm:^3.2.0, is-builtin-module@npm:^3.2.1":
version: 3.2.1
resolution: "is-builtin-module@npm:3.2.1"
dependencies:
@@ -11909,12 +11867,12 @@ __metadata:
languageName: node
linkType: hard
-"is-core-module@npm:^2.1.0, is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1":
- version: 2.12.1
- resolution: "is-core-module@npm:2.12.1"
+"is-core-module@npm:^2.1.0, is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1":
+ version: 2.13.0
+ resolution: "is-core-module@npm:2.13.0"
dependencies:
has: ^1.0.3
- checksum: f04ea30533b5e62764e7b2e049d3157dc0abd95ef44275b32489ea2081176ac9746ffb1cdb107445cf1ff0e0dfcad522726ca27c27ece64dadf3795428b8e468
+ checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355
languageName: node
linkType: hard
@@ -11957,15 +11915,6 @@ __metadata:
languageName: node
linkType: hard
-"is-docker@npm:^3.0.0":
- version: 3.0.0
- resolution: "is-docker@npm:3.0.0"
- bin:
- is-docker: cli.js
- checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90
- languageName: node
- linkType: hard
-
"is-extendable@npm:^0.1.0":
version: 0.1.1
resolution: "is-extendable@npm:0.1.1"
@@ -12024,17 +11973,6 @@ __metadata:
languageName: node
linkType: hard
-"is-inside-container@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-inside-container@npm:1.0.0"
- dependencies:
- is-docker: ^3.0.0
- bin:
- is-inside-container: cli.js
- checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03
- languageName: node
- linkType: hard
-
"is-installed-globally@npm:^0.4.0":
version: 0.4.0
resolution: "is-installed-globally@npm:0.4.0"
@@ -12247,13 +12185,6 @@ __metadata:
languageName: node
linkType: hard
-"is-stream@npm:^3.0.0":
- version: 3.0.0
- resolution: "is-stream@npm:3.0.0"
- checksum: 172093fe99119ffd07611ab6d1bcccfe8bc4aa80d864b15f43e63e54b7abc71e779acd69afdb854c4e2a67fdc16ae710e370eda40088d1cfc956a50ed82d8f16
- languageName: node
- linkType: hard
-
"is-string@npm:^1.0.5, is-string@npm:^1.0.7":
version: 1.0.7
resolution: "is-string@npm:1.0.7"
@@ -13123,13 +13054,13 @@ __metadata:
dependencies:
"@babel/core": ^7.11.6
"@crowdin/cli": ^3.5.2
- "@docusaurus/core": 0.0.0-5658
- "@docusaurus/module-type-aliases": 0.0.0-5658
- "@docusaurus/plugin-client-redirects": 0.0.0-5658
- "@docusaurus/plugin-pwa": 0.0.0-5658
- "@docusaurus/preset-classic": 0.0.0-5658
- "@docusaurus/remark-plugin-npm2yarn": 0.0.0-5658
- "@docusaurus/tsconfig": 0.0.0-5658
+ "@docusaurus/core": ^3.0.0-beta.0
+ "@docusaurus/module-type-aliases": 3.0.0-beta.0
+ "@docusaurus/plugin-client-redirects": 3.0.0-beta.0
+ "@docusaurus/plugin-pwa": 3.0.0-beta.0
+ "@docusaurus/preset-classic": 3.0.0-beta.0
+ "@docusaurus/remark-plugin-npm2yarn": 3.0.0-beta.0
+ "@docusaurus/tsconfig": 3.0.0-beta.0
"@types/react": ^18.2.21
clsx: ^2.0.0
docusaurus-remark-plugin-tab-blocks: ^2.0.0-beta
@@ -13381,6 +13312,15 @@ __metadata:
languageName: node
linkType: hard
+"jsesc@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "jsesc@npm:3.0.2"
+ bin:
+ jsesc: bin/jsesc
+ checksum: a36d3ca40574a974d9c2063bf68c2b6141c20da8f2a36bd3279fc802563f35f0527a6c828801295bdfb2803952cf2cf387786c2c90ed564f88d5782475abfe3c
+ languageName: node
+ linkType: hard
+
"jsesc@npm:~0.5.0":
version: 0.5.0
resolution: "jsesc@npm:0.5.0"
@@ -15232,13 +15172,6 @@ __metadata:
languageName: node
linkType: hard
-"mimic-fn@npm:^4.0.0":
- version: 4.0.0
- resolution: "mimic-fn@npm:4.0.0"
- checksum: 995dcece15ee29aa16e188de6633d43a3db4611bcf93620e7e62109ec41c79c0f34277165b8ce5e361205049766e371851264c21ac64ca35499acb5421c2ba56
- languageName: node
- linkType: hard
-
"mimic-response@npm:^3.1.0":
version: 3.1.0
resolution: "mimic-response@npm:3.1.0"
@@ -15871,15 +15804,6 @@ __metadata:
languageName: node
linkType: hard
-"npm-run-path@npm:^5.1.0":
- version: 5.1.0
- resolution: "npm-run-path@npm:5.1.0"
- dependencies:
- path-key: ^4.0.0
- checksum: dc184eb5ec239d6a2b990b43236845332ef12f4e0beaa9701de724aa797fe40b6bbd0157fb7639d24d3ab13f5d5cf22d223a19c6300846b8126f335f788bee66
- languageName: node
- linkType: hard
-
"npm-to-yarn@npm:^2.0.0":
version: 2.0.0
resolution: "npm-to-yarn@npm:2.0.0"
@@ -15991,14 +15915,37 @@ __metadata:
languageName: node
linkType: hard
+"object.fromentries@npm:^2.0.6":
+ version: 2.0.7
+ resolution: "object.fromentries@npm:2.0.7"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ checksum: 7341ce246e248b39a431b87a9ddd331ff52a454deb79afebc95609f94b1f8238966cf21f52188f2a353f0fdf83294f32f1ebf1f7826aae915ebad21fd0678065
+ languageName: node
+ linkType: hard
+
+"object.groupby@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "object.groupby@npm:1.0.1"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ get-intrinsic: ^1.2.1
+ checksum: d7959d6eaaba358b1608066fc67ac97f23ce6f573dc8fc661f68c52be165266fcb02937076aedb0e42722fdda0bdc0bbf74778196ac04868178888e9fd3b78b5
+ languageName: node
+ linkType: hard
+
"object.values@npm:^1.1.6":
- version: 1.1.6
- resolution: "object.values@npm:1.1.6"
+ version: 1.1.7
+ resolution: "object.values@npm:1.1.7"
dependencies:
call-bind: ^1.0.2
- define-properties: ^1.1.4
- es-abstract: ^1.20.4
- checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ checksum: f3e4ae4f21eb1cc7cebb6ce036d4c67b36e1c750428d7b7623c56a0db90edced63d08af8a316d81dfb7c41a3a5fa81b05b7cc9426e98d7da986b1682460f0777
languageName: node
linkType: hard
@@ -16052,15 +15999,6 @@ __metadata:
languageName: node
linkType: hard
-"onetime@npm:^6.0.0":
- version: 6.0.0
- resolution: "onetime@npm:6.0.0"
- dependencies:
- mimic-fn: ^4.0.0
- checksum: 0846ce78e440841335d4e9182ef69d5762e9f38aa7499b19f42ea1c4cd40f0b4446094c455c713f9adac3f4ae86f613bb5e30c99e52652764d06a89f709b3788
- languageName: node
- linkType: hard
-
"open@npm:^6.2.0":
version: 6.4.0
resolution: "open@npm:6.4.0"
@@ -16081,18 +16019,6 @@ __metadata:
languageName: node
linkType: hard
-"open@npm:^9.1.0":
- version: 9.1.0
- resolution: "open@npm:9.1.0"
- dependencies:
- default-browser: ^4.0.0
- define-lazy-prop: ^3.0.0
- is-inside-container: ^1.0.0
- is-wsl: ^2.2.0
- checksum: 3993c0f61d51fed8ac290e99c9c3cf45d3b6cfb3e2aa2b74cafd312c3486c22fd81df16ac8f3ab91dd8a4e3e729a16fc2480cfc406c4833416cf908acf1ae7c9
- languageName: node
- linkType: hard
-
"opener@npm:^1.5.2":
version: 1.5.2
resolution: "opener@npm:1.5.2"
@@ -16533,13 +16459,6 @@ __metadata:
languageName: node
linkType: hard
-"path-key@npm:^4.0.0":
- version: 4.0.0
- resolution: "path-key@npm:4.0.0"
- checksum: 8e6c314ae6d16b83e93032c61020129f6f4484590a777eed709c4a01b50e498822b00f76ceaf94bc64dbd90b327df56ceadce27da3d83393790f1219e07721d7
- languageName: node
- linkType: hard
-
"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7":
version: 1.0.7
resolution: "path-parse@npm:1.0.7"
@@ -16725,6 +16644,13 @@ __metadata:
languageName: node
linkType: hard
+"pluralize@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "pluralize@npm:8.0.0"
+ checksum: 08931d4a6a4a5561a7f94f67a31c17e6632cb21e459ab3ff4f6f629d9a822984cf8afef2311d2005fbea5d7ef26016ebb090db008e2d8bce39d0a9a9d218736e
+ languageName: node
+ linkType: hard
+
"postcss-calc@npm:^8.2.3":
version: 8.2.4
resolution: "postcss-calc@npm:8.2.4"
@@ -18142,6 +18068,15 @@ __metadata:
languageName: node
linkType: hard
+"regexp-tree@npm:^0.1.24, regexp-tree@npm:~0.1.1":
+ version: 0.1.27
+ resolution: "regexp-tree@npm:0.1.27"
+ bin:
+ regexp-tree: bin/regexp-tree
+ checksum: 129aebb34dae22d6694ab2ac328be3f99105143737528ab072ef624d599afecbcfae1f5c96a166fa9e5f64fa1ecf30b411c4691e7924c3e11bbaf1712c260c54
+ languageName: node
+ linkType: hard
+
"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0":
version: 1.5.0
resolution: "regexp.prototype.flags@npm:1.5.0"
@@ -18395,16 +18330,16 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:~1.22.1":
- version: 1.22.2
- resolution: "resolve@npm:1.22.2"
+"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4, resolve@npm:~1.22.1":
+ version: 1.22.4
+ resolution: "resolve@npm:1.22.4"
dependencies:
- is-core-module: ^2.11.0
+ is-core-module: ^2.13.0
path-parse: ^1.0.7
supports-preserve-symlinks-flag: ^1.0.0
bin:
resolve: bin/resolve
- checksum: 7e5df75796ebd429445d102d5824482ee7e567f0070b2b45897b29bb4f613dcbc262e0257b8aeedb3089330ccaea0d6a0464df1a77b2992cf331dcda0f4cb549
+ checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124
languageName: node
linkType: hard
@@ -18418,16 +18353,16 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@~1.22.1#~builtin":
- version: 1.22.2
- resolution: "resolve@patch:resolve@npm%3A1.22.2#~builtin::version=1.22.2&hash=c3c19d"
+"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.4#~builtin, resolve@patch:resolve@~1.22.1#~builtin":
+ version: 1.22.4
+ resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=c3c19d"
dependencies:
- is-core-module: ^2.11.0
+ is-core-module: ^2.13.0
path-parse: ^1.0.7
supports-preserve-symlinks-flag: ^1.0.0
bin:
resolve: bin/resolve
- checksum: 66cc788f13b8398de18eb4abb3aed90435c84bb8935953feafcf7231ba4cd191b2c10b4a87b1e9681afc34fb138c705f91f7330ff90bfa36f457e5584076a2b8
+ checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc
languageName: node
linkType: hard
@@ -18563,15 +18498,6 @@ __metadata:
languageName: node
linkType: hard
-"run-applescript@npm:^5.0.0":
- version: 5.0.0
- resolution: "run-applescript@npm:5.0.0"
- dependencies:
- execa: ^5.0.0
- checksum: d00c2dbfa5b2d774de7451194b8b125f40f65fc183de7d9dcae97f57f59433586d3c39b9001e111c38bfa24c3436c99df1bb4066a2a0c90d39a8c4cd6889af77
- languageName: node
- linkType: hard
-
"run-async@npm:^2.4.0":
version: 2.4.1
resolution: "run-async@npm:2.4.1"
@@ -18643,6 +18569,15 @@ __metadata:
languageName: node
linkType: hard
+"safe-regex@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "safe-regex@npm:2.1.1"
+ dependencies:
+ regexp-tree: ~0.1.1
+ checksum: 5d734e2193c63ef0cb00f60c0244e0f8a30ecb31923633cd34636808d6a7c4c206d650017953ae1db8bc33967c2f06af33488dea6f038f4e38212beb7bed77b4
+ languageName: node
+ linkType: hard
+
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
@@ -18781,7 +18716,7 @@ __metadata:
languageName: node
linkType: hard
-"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.1, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.4":
+"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.4":
version: 7.5.4
resolution: "semver@npm:7.5.4"
dependencies:
@@ -19569,13 +19504,6 @@ __metadata:
languageName: node
linkType: hard
-"strip-final-newline@npm:^3.0.0":
- version: 3.0.0
- resolution: "strip-final-newline@npm:3.0.0"
- checksum: 23ee263adfa2070cd0f23d1ac14e2ed2f000c9b44229aec9c799f1367ec001478469560abefd00c5c99ee6f0b31c137d53ec6029c53e9f32a93804e18c201050
- languageName: node
- linkType: hard
-
"strip-indent@npm:^3.0.0":
version: 3.0.0
resolution: "strip-indent@npm:3.0.0"
@@ -19712,16 +19640,6 @@ __metadata:
languageName: node
linkType: hard
-"synckit@npm:^0.8.5":
- version: 0.8.5
- resolution: "synckit@npm:0.8.5"
- dependencies:
- "@pkgr/utils": ^2.3.1
- tslib: ^2.5.0
- checksum: 8a9560e5d8f3d94dc3cf5f7b9c83490ffa30d320093560a37b88f59483040771fd1750e76b9939abfbb1b5a23fd6dfbae77f6b338abffe7cae7329cd9b9bb86b
- languageName: node
- linkType: hard
-
"tapable@npm:^1.0.0":
version: 1.1.3
resolution: "tapable@npm:1.1.3"
@@ -19928,13 +19846,6 @@ __metadata:
languageName: node
linkType: hard
-"titleize@npm:^3.0.0":
- version: 3.0.0
- resolution: "titleize@npm:3.0.0"
- checksum: 71fbbeabbfb36ccd840559f67f21e356e1d03da2915b32d2ae1a60ddcc13a124be2739f696d2feb884983441d159a18649e8d956648d591bdad35c430a6b6d28
- languageName: node
- linkType: hard
-
"tmp@npm:^0.0.33":
version: 0.0.33
resolution: "tmp@npm:0.0.33"
@@ -20122,7 +20033,7 @@ __metadata:
languageName: node
linkType: hard
-"tsconfig-paths@npm:^3.14.1":
+"tsconfig-paths@npm:^3.14.2":
version: 3.14.2
resolution: "tsconfig-paths@npm:3.14.2"
dependencies:
@@ -20150,7 +20061,7 @@ __metadata:
languageName: node
linkType: hard
-"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0":
+"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.6.0":
version: 2.6.0
resolution: "tslib@npm:2.6.0"
checksum: c01066038f950016a18106ddeca4649b4d76caa76ec5a31e2a26e10586a59fceb4ee45e96719bf6c715648e7c14085a81fee5c62f7e9ebee68e77a5396e5538f
@@ -20639,13 +20550,6 @@ __metadata:
languageName: node
linkType: hard
-"untildify@npm:^4.0.0":
- version: 4.0.0
- resolution: "untildify@npm:4.0.0"
- checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9
- languageName: node
- linkType: hard
-
"upath@npm:^1.2.0":
version: 1.2.0
resolution: "upath@npm:1.2.0"
@@ -20760,7 +20664,7 @@ __metadata:
languageName: node
linkType: hard
-"use-sync-external-store@npm:^1.0.0, use-sync-external-store@npm:^1.2.0":
+"use-sync-external-store@npm:^1.0.0":
version: 1.2.0
resolution: "use-sync-external-store@npm:1.2.0"
peerDependencies: