To get started, edit
diff --git a/e2e/transform/multiple-transformers/__tests__/multipleTransformers.test.js b/e2e/transform/multiple-transformers/__tests__/multipleTransformers.test.js
index fe0d6288c56a..680a9155d545 100644
--- a/e2e/transform/multiple-transformers/__tests__/multipleTransformers.test.js
+++ b/e2e/transform/multiple-transformers/__tests__/multipleTransformers.test.js
@@ -1,3 +1,7 @@
+/**
+ * @jest-environment jsdom
+ */
+
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
@@ -6,10 +10,10 @@
*/
import React from 'react';
-import renderer from 'react-test-renderer';
+import {render} from '@testing-library/react';
import App from '../src/App';
it('generates a snapshot with correctly transformed dependencies', () => {
- const tree = renderer.create( ).toJSON();
- expect(tree).toMatchSnapshot();
+ const {container} = render( );
+ expect(container.firstChild).toMatchSnapshot();
});
diff --git a/e2e/transform/multiple-transformers/package.json b/e2e/transform/multiple-transformers/package.json
index 889c6879050a..4b11db5bb2af 100644
--- a/e2e/transform/multiple-transformers/package.json
+++ b/e2e/transform/multiple-transformers/package.json
@@ -17,8 +17,8 @@
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-react": "^7.0.0",
+ "@testing-library/react": "^16.3.0",
"react": "18.2.0",
- "react-dom": "18.2.0",
- "react-test-renderer": "18.2.0"
+ "react-dom": "18.2.0"
}
}
diff --git a/e2e/transform/multiple-transformers/yarn.lock b/e2e/transform/multiple-transformers/yarn.lock
index 93f132eb482e..591f8e1b21a3 100644
--- a/e2e/transform/multiple-transformers/yarn.lock
+++ b/e2e/transform/multiple-transformers/yarn.lock
@@ -1131,6 +1131,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/runtime@npm:^7.12.5":
+ version: 7.28.3
+ resolution: "@babel/runtime@npm:7.28.3"
+ checksum: 10/f2415e4dbface7496f6fc561d640b44be203071fb0dfb63fbe338c7d2d2047419cb054ef13d1ebb8fc11e35d2b55aa3045def4b985e8b82aea5d7e58e1133e52
+ languageName: node
+ linkType: hard
+
"@babel/template@npm:^7.27.1":
version: 7.27.2
resolution: "@babel/template@npm:7.27.2"
@@ -1209,6 +1216,26 @@ __metadata:
languageName: node
linkType: hard
+"@testing-library/react@npm:^16.3.0":
+ version: 16.3.0
+ resolution: "@testing-library/react@npm:16.3.0"
+ dependencies:
+ "@babel/runtime": "npm:^7.12.5"
+ peerDependencies:
+ "@testing-library/dom": ^10.0.0
+ "@types/react": ^18.0.0 || ^19.0.0
+ "@types/react-dom": ^18.0.0 || ^19.0.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 10/0ee9e31dd0d2396a924682d0e61a4ecc6bfab8eaff23dbf8a72c3c2ce22c116fa578148baeb4de75b968ef99d22e6e6aa0a00dba40286f71184918bb6bb5b06a
+ languageName: node
+ linkType: hard
+
"babel-plugin-polyfill-corejs2@npm:^0.4.10":
version: 0.4.13
resolution: "babel-plugin-polyfill-corejs2@npm:0.4.13"
@@ -1429,13 +1456,6 @@ __metadata:
languageName: node
linkType: hard
-"object-assign@npm:^4.1.1":
- version: 4.1.1
- resolution: "object-assign@npm:4.1.1"
- checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
- languageName: node
- linkType: hard
-
"path-parse@npm:^1.0.7":
version: 1.0.7
resolution: "path-parse@npm:1.0.7"
@@ -1462,38 +1482,6 @@ __metadata:
languageName: node
linkType: hard
-"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.2.0":
- version: 18.3.1
- resolution: "react-is@npm:18.3.1"
- checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22
- languageName: node
- linkType: hard
-
-"react-shallow-renderer@npm:^16.15.0":
- version: 16.15.0
- resolution: "react-shallow-renderer@npm:16.15.0"
- dependencies:
- object-assign: "npm:^4.1.1"
- react-is: "npm:^16.12.0 || ^17.0.0 || ^18.0.0"
- peerDependencies:
- react: ^16.0.0 || ^17.0.0 || ^18.0.0
- checksum: 10/06457fe5bcaa44aeca998905b6849304742ea1cc2d3841e4a0964c745ff392bc4dec07f8c779f317faacce3a0bf6f84e15020ac0fa81adb931067dbb0baf707b
- languageName: node
- linkType: hard
-
-"react-test-renderer@npm:18.2.0":
- version: 18.2.0
- resolution: "react-test-renderer@npm:18.2.0"
- dependencies:
- react-is: "npm:^18.2.0"
- react-shallow-renderer: "npm:^16.15.0"
- scheduler: "npm:^0.23.0"
- peerDependencies:
- react: ^18.2.0
- checksum: 10/39473e43f64eec92da35db9d4411f3887b368038670787d49dd23172eb3a29953eb13767d1bfa34cbe2665b6e25632cad146e362e8910ce33755d343537763ae
- languageName: node
- linkType: hard
-
"react@npm:18.2.0":
version: 18.2.0
resolution: "react@npm:18.2.0"
@@ -1584,9 +1572,9 @@ __metadata:
"@babel/core": "npm:^7.0.0"
"@babel/preset-env": "npm:^7.0.0"
"@babel/preset-react": "npm:^7.0.0"
+ "@testing-library/react": "npm:^16.3.0"
react: "npm:18.2.0"
react-dom: "npm:18.2.0"
- react-test-renderer: "npm:18.2.0"
languageName: unknown
linkType: soft
diff --git a/examples/react-native/package.json b/examples/react-native/package.json
index dce040aa525c..4f7dde6944bd 100644
--- a/examples/react-native/package.json
+++ b/examples/react-native/package.json
@@ -7,9 +7,9 @@
"test": "jest"
},
"dependencies": {
- "@react-native/babel-preset": "^0.79.2",
+ "@react-native/babel-preset": "^0.81.1",
"react": "18.3.1",
- "react-native": "0.76.6"
+ "react-native": "0.81.4"
},
"devDependencies": {
"@babel/core": "^7.27.4",
diff --git a/examples/react-testing-library/package.json b/examples/react-testing-library/package.json
index c639b2fd5b91..88b83e179cdf 100644
--- a/examples/react-testing-library/package.json
+++ b/examples/react-testing-library/package.json
@@ -10,7 +10,7 @@
"@babel/core": "^7.27.4",
"@babel/preset-env": "^7.27.2",
"@babel/preset-react": "^7.27.1",
- "@testing-library/react": "^14.0.0",
+ "@testing-library/react": "^16.3.0",
"babel-jest": "workspace:*",
"jest": "workspace:*",
"jest-environment-jsdom": "workspace:*"
diff --git a/examples/snapshot/Link.js b/examples/snapshot/Link.js
index 379ef9c30078..613d6354383a 100644
--- a/examples/snapshot/Link.js
+++ b/examples/snapshot/Link.js
@@ -20,6 +20,7 @@ export default function Link({page, children}) {
return (
Facebook
@@ -13,10 +12,9 @@ exports[`changes the class when hovered 1`] = `
exports[`changes the class when hovered 2`] = `
Facebook
@@ -24,10 +22,9 @@ exports[`changes the class when hovered 2`] = `
exports[`changes the class when hovered 3`] = `
Facebook
@@ -35,10 +32,9 @@ exports[`changes the class when hovered 3`] = `
exports[`properly escapes quotes 1`] = `
"Facebook" \\'is \\ 'awesome'
@@ -46,10 +42,9 @@ exports[`properly escapes quotes 1`] = `
exports[`renders as an anchor when no page is set 1`] = `
Facebook
@@ -57,10 +52,9 @@ exports[`renders as an anchor when no page is set 1`] = `
exports[`renders correctly 1`] = `
Facebook
diff --git a/examples/snapshot/__tests__/clock.test.js b/examples/snapshot/__tests__/clock.test.js
index ef5894f39a55..0f827f7762d1 100644
--- a/examples/snapshot/__tests__/clock.test.js
+++ b/examples/snapshot/__tests__/clock.test.js
@@ -2,17 +2,16 @@
'use strict';
-import renderer from 'react-test-renderer';
+import {cleanup, render} from '@testing-library/react';
import Clock from '../Clock';
jest.useFakeTimers().setSystemTime(1_482_363_367_071);
it('renders correctly', () => {
- const testRenderer = renderer.create( );
-
+ const {container} = render( );
try {
- expect(testRenderer.toJSON()).toMatchSnapshot();
+ expect(container.firstChild).toMatchSnapshot();
} finally {
- testRenderer.unmount();
+ cleanup();
}
});
diff --git a/examples/snapshot/__tests__/link.test.js b/examples/snapshot/__tests__/link.test.js
index 8d51c48bb685..41042f6a1c6a 100644
--- a/examples/snapshot/__tests__/link.test.js
+++ b/examples/snapshot/__tests__/link.test.js
@@ -2,48 +2,41 @@
'use strict';
-import renderer from 'react-test-renderer';
import Link from '../Link';
+import {cleanup, render} from '@testing-library/react';
+import {screen} from '@testing-library/dom';
+import userEvent from '@testing-library/user-event';
+
+afterEach(() => cleanup());
it('renders correctly', () => {
- const tree = renderer
- .create( Facebook)
- .toJSON();
- expect(tree).toMatchSnapshot();
+ const {container} = render(
+ Facebook,
+ );
+ expect(container.firstChild).toMatchSnapshot();
});
it('renders as an anchor when no page is set', () => {
- const tree = renderer.create( Facebook).toJSON();
- expect(tree).toMatchSnapshot();
+ const {container} = render( Facebook);
+ expect(container.firstChild).toMatchSnapshot();
});
it('properly escapes quotes', () => {
- const tree = renderer
- .create( {"\"Facebook\" \\'is \\ 'awesome'"})
- .toJSON();
- expect(tree).toMatchSnapshot();
+ const {container} = render( {"\"Facebook\" \\'is \\ 'awesome'"});
+ expect(container.firstChild).toMatchSnapshot();
});
-it('changes the class when hovered', () => {
- const component = renderer.create(
+it('changes the class when hovered', async () => {
+ const {container, rerender} = render(
Facebook,
);
- let tree = component.toJSON();
- expect(tree).toMatchSnapshot();
-
- // manually trigger the callback
- renderer.act(() => {
- tree.props.onMouseEnter();
- });
- // re-rendering
- tree = component.toJSON();
- expect(tree).toMatchSnapshot();
-
- // manually trigger the callback
- renderer.act(() => {
- tree.props.onMouseLeave();
- });
- // re-rendering
- tree = component.toJSON();
- expect(tree).toMatchSnapshot();
+ expect(container.firstChild).toMatchSnapshot();
+
+ // hover the link
+ userEvent.hover(container.firstChild);
+ expect(await screen.findByLabelText('hovered')).toMatchSnapshot();
+
+ // unhover the link
+ userEvent.unhover(container.firstChild);
+ expect(await screen.findByLabelText('normal')).toMatchSnapshot();
});
diff --git a/examples/snapshot/package.json b/examples/snapshot/package.json
index fbc8271ca288..b0008fe96e02 100644
--- a/examples/snapshot/package.json
+++ b/examples/snapshot/package.json
@@ -9,14 +9,16 @@
"@babel/core": "^7.27.4",
"@babel/preset-env": "^7.27.2",
"@babel/preset-react": "^7.27.1",
+ "@testing-library/dom": "^10.4.1",
+ "@testing-library/react": "^16.3.0",
+ "@testing-library/user-event": "^14.6.1",
"babel-jest": "workspace:*",
- "jest": "workspace:*",
- "react-test-renderer": "18.3.1"
+ "jest": "workspace:*"
},
"scripts": {
"test": "jest"
},
"jest": {
- "testEnvironment": "node"
+ "testEnvironment": "jsdom"
}
}
diff --git a/jest.config.mjs b/jest.config.mjs
index c23c1539e8ae..01ab401df0d4 100644
--- a/jest.config.mjs
+++ b/jest.config.mjs
@@ -68,6 +68,9 @@ export default {
'/packages/jest-snapshot/src/__tests__/fixtures/',
'/e2e/__tests__/iterator-to-null-test.ts',
'/e2e/__tests__/tsIntegration.test.ts', // this test needs types to be build, it runs in a separate CI job through `jest.config.ts.mjs`
+ Number.parseInt(process.versions.node, 10) >= 20
+ ? '/.*\\.nodejs18\\..*'
+ : '/.*\\.nodejs20plus\\..*',
],
testTimeout: 70_000,
transform: {
diff --git a/lerna.json b/lerna.json
index 5832014a881e..f0852b5e9a37 100644
--- a/lerna.json
+++ b/lerna.json
@@ -8,5 +8,5 @@
"syncWorkspaceLock": true
}
},
- "version": "30.1.3"
+ "version": "30.2.0"
}
diff --git a/package.json b/package.json
index 46c1b805e458..ea6c13cf5d28 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"jest-silent-reporter": "^0.6.0",
"jest-snapshot": "workspace:*",
"jest-util": "workspace:*",
- "jest-watch-typeahead": "^2.2.2",
+ "jest-watch-typeahead": "^3.0.1",
"jquery": "^3.2.1",
"js-yaml": "^4.1.0",
"micromatch": "^4.0.8",
diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json
index ed319eaee00e..680637fcbca5 100644
--- a/packages/babel-jest/package.json
+++ b/packages/babel-jest/package.json
@@ -1,7 +1,7 @@
{
"name": "babel-jest",
"description": "Jest plugin to use babel for transformation.",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
@@ -22,19 +22,20 @@
"dependencies": {
"@jest/transform": "workspace:*",
"@types/babel__core": "^7.20.5",
- "babel-plugin-istanbul": "^7.0.0",
+ "babel-plugin-istanbul": "^7.0.1",
"babel-preset-jest": "workspace:*",
"chalk": "^4.1.2",
"graceful-fs": "^4.2.11",
"slash": "^3.0.0"
},
"devDependencies": {
+ "@babel-8/core": "npm:@babel/core@8.0.0-beta.1",
"@babel/core": "^7.27.4",
"@jest/test-utils": "workspace:*",
"@types/graceful-fs": "^4.1.9"
},
"peerDependencies": {
- "@babel/core": "^7.11.0"
+ "@babel/core": "^7.11.0 || ^8.0.0-0"
},
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
diff --git a/packages/babel-jest/src/__tests__/getCacheKey.test.ts b/packages/babel-jest/src/__tests__/getCacheKey.test.ts
index eb9b2da1107b..a3d986e21496 100644
--- a/packages/babel-jest/src/__tests__/getCacheKey.test.ts
+++ b/packages/babel-jest/src/__tests__/getCacheKey.test.ts
@@ -9,6 +9,17 @@ import type {TransformOptions as BabelTransformOptions} from '@babel/core';
import type {SyncTransformer, TransformOptions} from '@jest/transform';
import babelJest from '../index';
+// We need to use the Node.js implementation of `require` to load Babel 8
+// packages, instead of our sandboxed implementation, because Babel 8 is
+// written in ESM and we don't support require(esm) yet.
+import Module from 'node:module';
+import {pathToFileURL} from 'node:url';
+import {onNodeVersions} from '@jest/test-utils';
+const createOriginalNodeRequire = Object.getPrototypeOf(Module).createRequire;
+const originalNodeRequire = createOriginalNodeRequire(
+ pathToFileURL(__filename),
+);
+
const {getCacheKey} =
babelJest.createTransformer() as SyncTransformer;
@@ -33,173 +44,211 @@ afterEach(() => {
}
});
-describe('getCacheKey', () => {
- const sourceText = 'mock source';
- const sourcePath = 'mock-source-path.js';
-
- const transformOptions = {
- config: {rootDir: 'mock-root-dir'},
- configString: 'mock-config-string',
- instrument: true,
- } as TransformOptions;
-
- const oldCacheKey = getCacheKey!(sourceText, sourcePath, transformOptions);
-
- test('returns cache key hash', () => {
- expect(oldCacheKey).toHaveLength(32);
- });
-
- test('if `THIS_FILE` value is changing', async () => {
- jest.doMock('graceful-fs', () => ({
- readFileSync: () => 'new this file',
- }));
-
- const {createTransformer} =
- require('../index') as typeof import('../index');
-
- const newCacheKey = (await createTransformer()).getCacheKey!(
- sourceText,
- sourcePath,
- transformOptions,
- );
+describe('babel 7', () => {
+ defineTests({getBabel: () => require('@babel/core')});
+});
- expect(oldCacheKey).not.toEqual(newCacheKey);
+describe('babel 8', () => {
+ onNodeVersions('>=20', () => {
+ defineTests({
+ getBabel: () => originalNodeRequire('@babel-8/core'),
+ });
});
+});
- test('if `babelOptions.options` value is changing', async () => {
- jest.doMock('../loadBabelConfig', () => {
- const babel = require('@babel/core') as typeof import('@babel/core');
-
- return {
- loadPartialConfig: (options: BabelTransformOptions) => ({
- ...babel.loadPartialConfig(options),
- options: 'new-options',
- }),
- };
+function defineTests({
+ getBabel,
+}: {
+ getBabel: () => typeof import('@babel-8/core');
+}) {
+ describe('getCacheKey', () => {
+ let babel: typeof import('@babel-8/core');
+ beforeAll(() => {
+ babel = getBabel();
});
- const {createTransformer} =
- require('../index') as typeof import('../index');
+ const sourceText = 'mock source';
+ const sourcePath = 'mock-source-path.js';
- const newCacheKey = (await createTransformer()).getCacheKey!(
- sourceText,
- sourcePath,
- transformOptions,
- );
+ const transformOptions = {
+ config: {rootDir: 'mock-root-dir'},
+ configString: 'mock-config-string',
+ instrument: true,
+ } as TransformOptions;
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
+ const oldCacheKey = getCacheKey!(sourceText, sourcePath, transformOptions);
- test('if `sourceText` value is changing', () => {
- const newCacheKey = getCacheKey!(
- 'new source text',
- sourcePath,
- transformOptions,
- );
+ test('returns cache key hash', () => {
+ expect(oldCacheKey).toHaveLength(32);
+ });
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
+ test('if `THIS_FILE` value is changing', async () => {
+ jest.doMock('graceful-fs', () => ({
+ readFileSync: () => 'new this file',
+ }));
- test('if `sourcePath` value is changing', () => {
- const newCacheKey = getCacheKey!(
- sourceText,
- 'new-source-path.js',
- transformOptions,
- );
+ const {createTransformer} =
+ require('../index') as typeof import('../index');
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
+ const newCacheKey = (await createTransformer()).getCacheKey!(
+ sourceText,
+ sourcePath,
+ transformOptions,
+ );
- test('if `configString` value is changing', () => {
- const newCacheKey = getCacheKey!(sourceText, sourcePath, {
- ...transformOptions,
- configString: 'new-config-string',
+ expect(oldCacheKey).not.toEqual(newCacheKey);
});
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
+ test('if `babelOptions.options` value is changing', async () => {
+ jest.doMock('../babel', () => {
+ return {
+ ...babel,
+ loadPartialConfigSync: (
+ options: Parameters[0],
+ ) => ({
+ ...babel.loadPartialConfigSync(options),
+ options: 'new-options',
+ }),
+ };
+ });
+
+ const {createTransformer} =
+ require('../index') as typeof import('../index');
+
+ const newCacheKey = (await createTransformer()).getCacheKey!(
+ sourceText,
+ sourcePath,
+ transformOptions,
+ );
+
+ expect(oldCacheKey).not.toEqual(newCacheKey);
+ });
- test('if `babelOptions.config` value is changing', async () => {
- jest.doMock('../loadBabelConfig', () => {
- const babel = require('@babel/core') as typeof import('@babel/core');
+ test('if `sourceText` value is changing', () => {
+ const newCacheKey = getCacheKey!(
+ 'new source text',
+ sourcePath,
+ transformOptions,
+ );
- return {
- loadPartialConfig: (options: BabelTransformOptions) => ({
- ...babel.loadPartialConfig(options),
- config: 'new-config',
- }),
- };
+ expect(oldCacheKey).not.toEqual(newCacheKey);
});
- const {createTransformer} =
- require('../index') as typeof import('../index');
-
- const newCacheKey = (await createTransformer()).getCacheKey!(
- sourceText,
- sourcePath,
- transformOptions,
- );
+ test('if `sourcePath` value is changing', () => {
+ const newCacheKey = getCacheKey!(
+ sourceText,
+ 'new-source-path.js',
+ transformOptions,
+ );
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
+ expect(oldCacheKey).not.toEqual(newCacheKey);
+ });
- test('if `babelOptions.babelrc` value is changing', async () => {
- jest.doMock('../loadBabelConfig', () => {
- const babel = require('@babel/core') as typeof import('@babel/core');
+ test('if `configString` value is changing', () => {
+ const newCacheKey = getCacheKey!(sourceText, sourcePath, {
+ ...transformOptions,
+ configString: 'new-config-string',
+ });
- return {
- loadPartialConfig: (options: BabelTransformOptions) => ({
- ...babel.loadPartialConfig(options),
- babelrc: 'new-babelrc',
- }),
- };
+ expect(oldCacheKey).not.toEqual(newCacheKey);
});
- const {createTransformer} =
- require('../index') as typeof import('../index');
+ test('if `babelOptions.config` value is changing', async () => {
+ jest.doMock('../babel', () => {
+ return {
+ ...babel,
+ loadPartialConfigSync: (
+ options: Parameters[0],
+ ) => ({
+ ...babel.loadPartialConfigSync(options),
+ config: 'new-config',
+ }),
+ };
+ });
+
+ const {createTransformer} =
+ require('../index') as typeof import('../index');
+
+ const newCacheKey = (await createTransformer()).getCacheKey!(
+ sourceText,
+ sourcePath,
+ transformOptions,
+ );
+
+ expect(oldCacheKey).not.toEqual(newCacheKey);
+ });
- const newCacheKey = (await createTransformer()).getCacheKey!(
- sourceText,
- sourcePath,
- transformOptions,
- );
+ test('if `babelOptions.babelrc` value is changing', async () => {
+ jest.doMock('../babel', () => {
+ return {
+ ...babel,
+ loadPartialConfig: (
+ options: Parameters[0],
+ ) => ({
+ ...babel.loadPartialConfig(options),
+ babelrc: 'new-babelrc',
+ }),
+ };
+ });
+
+ const {createTransformer} =
+ require('../index') as typeof import('../index');
+
+ const newCacheKey = (await createTransformer()).getCacheKey!(
+ sourceText,
+ sourcePath,
+ transformOptions,
+ );
+
+ expect(oldCacheKey).not.toEqual(newCacheKey);
+ });
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
+ test('if `instrument` value is changing', () => {
+ const newCacheKey = getCacheKey!(sourceText, sourcePath, {
+ ...transformOptions,
+ instrument: false,
+ });
- test('if `instrument` value is changing', () => {
- const newCacheKey = getCacheKey!(sourceText, sourcePath, {
- ...transformOptions,
- instrument: false,
+ expect(oldCacheKey).not.toEqual(newCacheKey);
});
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
-
- test('if `process.env.NODE_ENV` value is changing', () => {
- process.env.NODE_ENV = 'NEW_NODE_ENV';
+ test('if `process.env.NODE_ENV` value is changing', () => {
+ process.env.NODE_ENV = 'NEW_NODE_ENV';
- const newCacheKey = getCacheKey!(sourceText, sourcePath, transformOptions);
+ const newCacheKey = getCacheKey!(
+ sourceText,
+ sourcePath,
+ transformOptions,
+ );
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
+ expect(oldCacheKey).not.toEqual(newCacheKey);
+ });
- test('if `process.env.BABEL_ENV` value is changing', () => {
- process.env.BABEL_ENV = 'NEW_BABEL_ENV';
+ test('if `process.env.BABEL_ENV` value is changing', () => {
+ process.env.BABEL_ENV = 'NEW_BABEL_ENV';
- const newCacheKey = getCacheKey!(sourceText, sourcePath, transformOptions);
+ const newCacheKey = getCacheKey!(
+ sourceText,
+ sourcePath,
+ transformOptions,
+ );
- expect(oldCacheKey).not.toEqual(newCacheKey);
- });
+ expect(oldCacheKey).not.toEqual(newCacheKey);
+ });
- test('if node version is changing', () => {
- // @ts-expect-error: Testing purpose
- delete process.version;
- // @ts-expect-error: Testing purpose
- process.version = 'new-node-version';
+ 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);
+ const newCacheKey = getCacheKey!(
+ sourceText,
+ sourcePath,
+ transformOptions,
+ );
- expect(oldCacheKey).not.toEqual(newCacheKey);
+ expect(oldCacheKey).not.toEqual(newCacheKey);
+ });
});
-});
+}
diff --git a/packages/babel-jest/src/__tests__/index.ts b/packages/babel-jest/src/__tests__/index.ts
index b18844220fc7..5b932e33a3b7 100644
--- a/packages/babel-jest/src/__tests__/index.ts
+++ b/packages/babel-jest/src/__tests__/index.ts
@@ -9,23 +9,38 @@ import type {
BabelFileResult,
TransformOptions as BabelTransformOptions,
} from '@babel/core';
-import {makeProjectConfig} from '@jest/test-utils';
+import {makeProjectConfig, onNodeVersions} from '@jest/test-utils';
import type {SyncTransformer, TransformOptions} from '@jest/transform';
import babelJest, {createTransformer} from '../index';
-import {loadPartialConfig} from '../loadBabelConfig';
-
-jest.mock('../loadBabelConfig', () => {
- const actual =
- jest.requireActual('@babel/core');
-
- return {
- loadPartialConfig: jest.fn((...args) =>
- actual.loadPartialConfig(...args),
- ),
- loadPartialConfigAsync: jest.fn(
- (...args) => actual.loadPartialConfigAsync(...args),
- ),
- };
+
+// We need to use the Node.js implementation of `require` to load Babel 8
+// packages, instead of our sandboxed implementation, because Babel 8 is
+// written in ESM and we don't support require(esm) yet.
+import Module from 'node:module';
+import {pathToFileURL} from 'node:url';
+const createOriginalNodeRequire = Object.getPrototypeOf(Module).createRequire;
+const originalNodeRequire = createOriginalNodeRequire(
+ pathToFileURL(__filename),
+);
+
+type BabelCore = typeof import('@babel-8/core');
+
+// We need to use `var` so that it's hoisted and we can set it in `jest.mock`.
+// eslint-disable-next-line no-var
+var mockedBabel!: {
+ transformSync: jest.Mock;
+ transformAsync: jest.Mock;
+ loadPartialConfigSync: jest.Mock;
+ loadPartialConfigAsync: jest.Mock;
+};
+
+jest.mock('../babel', () => {
+ return (mockedBabel = {
+ loadPartialConfigAsync: jest.fn(),
+ loadPartialConfigSync: jest.fn(),
+ transformAsync: jest.fn(),
+ transformSync: jest.fn(),
+ });
});
const defaultBabelJestTransformer =
@@ -44,159 +59,192 @@ const customMultiply = (obj, mul) => {
customMultiply({a: 32, dummy: "test"}, 2);
`;
-beforeEach(() => {
- jest.clearAllMocks();
+describe('babel 7', () => {
+ defineTests({getBabel: () => require('@babel/core')});
});
-test('Returns source string with inline maps when no transformOptions is passed', () => {
- const result = defaultBabelJestTransformer.process(
- sourceString,
- 'dummy_path.js',
- {
- cacheFS: new Map(),
- config: makeProjectConfig(),
- configString: JSON.stringify(makeProjectConfig()),
- instrument: false,
- transformerConfig: {},
- } as TransformOptions,
- );
-
- expect(typeof result).toBe('object');
- expect(result.code).toBeDefined();
- expect(result.map).toBeDefined();
- expect(result.code).toMatch('//# sourceMappingURL');
- expect(result.code).toMatch('customMultiply');
- expect((result as BabelFileResult).map!.sources).toEqual(['dummy_path.js']);
- expect(
- JSON.stringify((result as BabelFileResult).map!.sourcesContent),
- ).toMatch('customMultiply');
+describe('babel 8', () => {
+ onNodeVersions('>=20', () => {
+ defineTests({
+ getBabel: () => originalNodeRequire('@babel-8/core'),
+ });
+ });
});
-test('Returns source string with inline maps when no transformOptions is passed async', async () => {
- const result = await defaultBabelJestTransformer.processAsync!(
- sourceString,
- 'dummy_path.js',
- {
- cacheFS: new Map(),
- config: makeProjectConfig(),
- configString: JSON.stringify(makeProjectConfig()),
- instrument: false,
- transformerConfig: {},
- } as TransformOptions,
- );
+function defineTests({
+ getBabel,
+}: {
+ getBabel: () => typeof import('@babel-8/core');
+}) {
+ let babel: typeof import('@babel-8/core');
+ beforeAll(() => {
+ babel = getBabel();
+ });
- expect(typeof result).toBe('object');
- expect(result.code).toBeDefined();
- expect(result.map).toBeDefined();
- expect(result.code).toMatch('//# sourceMappingURL');
- expect(result.code).toMatch('customMultiply');
+ beforeEach(() => {
+ jest.clearAllMocks();
- const {map} = result;
+ mockedBabel.transformSync.mockImplementation(babel.transformSync);
+ mockedBabel.transformAsync.mockImplementation(babel.transformAsync);
+ mockedBabel.loadPartialConfigSync.mockImplementation(
+ babel.loadPartialConfigSync,
+ );
+ mockedBabel.loadPartialConfigAsync.mockImplementation(
+ babel.loadPartialConfigAsync,
+ );
+ });
+ test('Returns source string with inline maps when no transformOptions is passed', () => {
+ const result = defaultBabelJestTransformer.process(
+ sourceString,
+ 'dummy_path.js',
+ {
+ cacheFS: new Map(),
+ config: makeProjectConfig(),
+ configString: JSON.stringify(makeProjectConfig()),
+ instrument: false,
+ transformerConfig: {},
+ } as TransformOptions,
+ );
- expect(map).toBeTruthy();
- expect(typeof map).not.toBe('string');
+ expect(typeof result).toBe('object');
+ expect(result.code).toBeDefined();
+ expect(result.map).toBeDefined();
+ expect(result.code).toMatch('//# sourceMappingURL');
+ expect(result.code).toMatch('customMultiply');
+ expect((result as BabelFileResult).map!.sources).toEqual(['dummy_path.js']);
+ expect(
+ JSON.stringify((result as BabelFileResult).map!.sourcesContent),
+ ).toMatch('customMultiply');
+ });
- if (map == null || typeof map === 'string') {
- throw new Error('dead code');
- }
+ test('Returns source string with inline maps when no transformOptions is passed async', async () => {
+ const result = await defaultBabelJestTransformer.processAsync!(
+ sourceString,
+ 'dummy_path.js',
+ {
+ cacheFS: new Map(),
+ config: makeProjectConfig(),
+ configString: JSON.stringify(makeProjectConfig()),
+ instrument: false,
+ transformerConfig: {},
+ } as TransformOptions,
+ );
- expect(map.sources).toEqual(['dummy_path.js']);
- expect(JSON.stringify(map.sourcesContent)).toMatch('customMultiply');
-});
+ expect(typeof result).toBe('object');
+ expect(result.code).toBeDefined();
+ expect(result.map).toBeDefined();
+ expect(result.code).toMatch('//# sourceMappingURL');
+ expect(result.code).toMatch('customMultiply');
-describe('caller option correctly merges from defaults and options', () => {
- test.each([
- [
- {supportsDynamicImport: true, supportsStaticESM: true},
- {supportsDynamicImport: true, supportsStaticESM: true},
- ],
- [
- {supportsDynamicImport: false, supportsStaticESM: false},
- {supportsDynamicImport: false, supportsStaticESM: false},
- ],
- [
- {supportsStaticESM: false},
- {supportsDynamicImport: false, supportsStaticESM: false},
- ],
- [
- {supportsDynamicImport: true},
- {supportsDynamicImport: true, supportsStaticESM: false},
- ],
- ])('%j -> %j', (input, output) => {
- defaultBabelJestTransformer.process(sourceString, 'dummy_path.js', {
+ const {map} = result;
+
+ expect(map).toBeTruthy();
+ expect(typeof map).not.toBe('string');
+
+ if (map == null || typeof map === 'string') {
+ throw new Error('dead code');
+ }
+
+ expect(map.sources).toEqual(['dummy_path.js']);
+ expect(JSON.stringify(map.sourcesContent)).toMatch('customMultiply');
+ });
+
+ describe('caller option correctly merges from defaults and options', () => {
+ test.each([
+ [
+ {supportsDynamicImport: true, supportsStaticESM: true},
+ {supportsDynamicImport: true, supportsStaticESM: true},
+ ],
+ [
+ {supportsDynamicImport: false, supportsStaticESM: false},
+ {supportsDynamicImport: false, supportsStaticESM: false},
+ ],
+ [
+ {supportsStaticESM: false},
+ {supportsDynamicImport: false, supportsStaticESM: false},
+ ],
+ [
+ {supportsDynamicImport: true},
+ {supportsDynamicImport: true, supportsStaticESM: false},
+ ],
+ ])('%j -> %j', (input, output) => {
+ defaultBabelJestTransformer.process(sourceString, 'dummy_path.js', {
+ cacheFS: new Map(),
+ config: makeProjectConfig(),
+ configString: JSON.stringify(makeProjectConfig()),
+ instrument: false,
+ transformerConfig: {},
+ ...input,
+ } as TransformOptions);
+
+ expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledTimes(1);
+ expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledWith(
+ expect.objectContaining({
+ caller: {
+ name: 'babel-jest',
+ ...output,
+ supportsExportNamespaceFrom: false,
+ supportsTopLevelAwait: false,
+ },
+ }),
+ );
+ });
+ });
+
+ test('can pass null to createTransformer', async () => {
+ const transformer = await createTransformer();
+ transformer.process(sourceString, 'dummy_path.js', {
cacheFS: new Map(),
config: makeProjectConfig(),
configString: JSON.stringify(makeProjectConfig()),
instrument: false,
transformerConfig: {},
- ...input,
} as TransformOptions);
- expect(loadPartialConfig).toHaveBeenCalledTimes(1);
- expect(loadPartialConfig).toHaveBeenCalledWith(
+ expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledTimes(1);
+ expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledWith(
expect.objectContaining({
caller: {
name: 'babel-jest',
- ...output,
+ supportsDynamicImport: false,
supportsExportNamespaceFrom: false,
+ supportsStaticESM: false,
supportsTopLevelAwait: false,
},
}),
);
});
-});
-test('can pass null to createTransformer', async () => {
- const transformer = await createTransformer();
- transformer.process(sourceString, 'dummy_path.js', {
- cacheFS: new Map(),
- config: makeProjectConfig(),
- configString: JSON.stringify(makeProjectConfig()),
- instrument: false,
- transformerConfig: {},
- } as TransformOptions);
-
- expect(loadPartialConfig).toHaveBeenCalledTimes(1);
- expect(loadPartialConfig).toHaveBeenCalledWith(
- expect.objectContaining({
- caller: {
- name: 'babel-jest',
- supportsDynamicImport: false,
- supportsExportNamespaceFrom: false,
- supportsStaticESM: false,
- supportsTopLevelAwait: false,
- },
- }),
- );
-});
+ test('include babel-preset-jest by default', () => {
+ defaultBabelJestTransformer.process(sourceString, 'dummy_path.js', {
+ cacheFS: new Map(),
+ config: makeProjectConfig(),
+ configString: JSON.stringify(makeProjectConfig()),
+ instrument: false,
+ transformerConfig: {},
+ } as TransformOptions);
-test('include babel-preset-jest by default', () => {
- defaultBabelJestTransformer.process(sourceString, 'dummy_path.js', {
- cacheFS: new Map(),
- config: makeProjectConfig(),
- configString: JSON.stringify(makeProjectConfig()),
- instrument: false,
- transformerConfig: {},
- } as TransformOptions);
-
- expect(loadPartialConfig).toHaveBeenCalledTimes(1);
- expect(loadPartialConfig).toHaveBeenCalledWith(
- expect.objectContaining({presets: [require.resolve('babel-preset-jest')]}),
- );
-});
+ expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledTimes(1);
+ expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledWith(
+ expect.objectContaining({
+ presets: [require.resolve('babel-preset-jest')],
+ }),
+ );
+ });
-test('can opting out of babel-preset-jest by passing excludeJestPreset: true', async () => {
- const transformer = await createTransformer({excludeJestPreset: true});
- transformer.process(sourceString, 'dummy_path.js', {
- cacheFS: new Map(),
- config: makeProjectConfig(),
- configString: JSON.stringify(makeProjectConfig()),
- instrument: false,
- transformerConfig: {},
- } as TransformOptions);
-
- expect(loadPartialConfig).toHaveBeenCalledTimes(1);
- expect(loadPartialConfig).toHaveBeenCalledWith(
- expect.objectContaining({presets: []}),
- );
-});
+ test('can opting out of babel-preset-jest by passing excludeJestPreset: true', async () => {
+ const transformer = await createTransformer({excludeJestPreset: true});
+ transformer.process(sourceString, 'dummy_path.js', {
+ cacheFS: new Map(),
+ config: makeProjectConfig(),
+ configString: JSON.stringify(makeProjectConfig()),
+ instrument: false,
+ transformerConfig: {},
+ } as TransformOptions);
+
+ expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledTimes(1);
+ expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledWith(
+ expect.objectContaining({presets: []}),
+ );
+ });
+}
diff --git a/packages/babel-jest/src/babel.ts b/packages/babel-jest/src/babel.ts
new file mode 100644
index 000000000000..bf42d7231d39
--- /dev/null
+++ b/packages/babel-jest/src/babel.ts
@@ -0,0 +1,24 @@
+/**
+ * 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.
+ */
+
+// this is a separate file so it can be mocked in tests
+export {
+ loadPartialConfigAsync,
+ transformSync,
+ transformAsync,
+} from '@babel/core';
+
+import {
+ loadPartialConfig,
+ // @ts-expect-error -- Wrong @types/babel__core definition
+ loadPartialConfigSync,
+} from '@babel/core';
+
+// Old babel 7 versions didn't have loadPartialConfigSync
+const _loadPartialConfigSync: typeof loadPartialConfig =
+ loadPartialConfigSync ?? loadPartialConfig;
+export {_loadPartialConfigSync as loadPartialConfigSync};
diff --git a/packages/babel-jest/src/index.ts b/packages/babel-jest/src/index.ts
index 71b19dc7eeac..cb67aaf37669 100644
--- a/packages/babel-jest/src/index.ts
+++ b/packages/babel-jest/src/index.ts
@@ -7,11 +7,9 @@
import {createHash} from 'crypto';
import * as path from 'path';
-import {
- type TransformOptions as BabelTransformOptions,
- type PartialConfig,
- transformSync as babelTransform,
- transformAsync as babelTransformAsync,
+import type {
+ TransformOptions as BabelTransformOptions,
+ PartialConfig,
} from '@babel/core';
import chalk from 'chalk';
import * as fs from 'graceful-fs';
@@ -21,9 +19,14 @@ import type {
SyncTransformer,
TransformerCreator,
} from '@jest/transform';
-import {loadPartialConfig, loadPartialConfigAsync} from './loadBabelConfig';
+import {
+ transformSync as babelTransform,
+ transformAsync as babelTransformAsync,
+ loadPartialConfigAsync,
+ loadPartialConfigSync,
+} from './babel';
-interface TransformerConfig extends BabelTransformOptions {
+export interface TransformerConfig extends BabelTransformOptions {
excludeJestPreset?: boolean;
}
@@ -112,7 +115,7 @@ function loadBabelConfig(
filename: string,
transformOptions: BabelTransformOptions,
): PartialConfig {
- const babelConfig = loadPartialConfig(transformOptions);
+ const babelConfig = loadPartialConfigSync(transformOptions);
assertLoadedBabelConfig(babelConfig, cwd, filename);
diff --git a/packages/babel-plugin-jest-hoist/package.json b/packages/babel-plugin-jest-hoist/package.json
index 4696f7892fae..0eaacfd00939 100644
--- a/packages/babel-plugin-jest-hoist/package.json
+++ b/packages/babel-plugin-jest-hoist/package.json
@@ -1,6 +1,6 @@
{
"name": "babel-plugin-jest-hoist",
- "version": "30.0.1",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
@@ -22,14 +22,16 @@
"./package.json": "./package.json"
},
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.27.3",
"@types/babel__core": "^7.20.5"
},
"devDependencies": {
+ "@babel-8/core": "npm:@babel/core@8.0.0-beta.1",
+ "@babel-8/preset-react": "npm:@babel/preset-react@8.0.0-beta.1",
+ "@babel-8/preset-typescript": "npm:@babel/preset-typescript@8.0.0-beta.1",
"@babel/core": "^7.27.4",
"@babel/preset-react": "^7.27.1",
"@babel/preset-typescript": "^7.27.1",
+ "@babel/types": "^7.27.3",
"@prettier/sync": "^0.5.5",
"@types/babel__template": "^7.4.4",
"@types/babel__traverse": "^7.20.7",
diff --git a/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.test.ts.snap b/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.nodejs18.test.ts.snap
similarity index 76%
rename from packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.test.ts.snap
rename to packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.nodejs18.test.ts.snap
index 2f15308e94f8..677f8d7e6951 100644
--- a/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.test.ts.snap
+++ b/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.nodejs18.test.ts.snap
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
-exports[`babel-plugin-jest-hoist 1. automatic react runtime: 1. automatic react runtime 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 1. automatic react runtime: 1. automatic react runtime 1`] = `
jest.mock('./App', () => () => Hello world
);
@@ -35,7 +35,7 @@ function _getJestObj() {
`;
-exports[`babel-plugin-jest-hoist 2. top level mocking: 2. top level mocking 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 2. top level mocking: 2. top level mocking 1`] = `
require('x');
@@ -56,7 +56,7 @@ require('x');
`;
-exports[`babel-plugin-jest-hoist 3. within a block: 3. within a block 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 3. within a block: 3. within a block 1`] = `
beforeEach(() => {
require('x');
@@ -78,7 +78,7 @@ beforeEach(() => {
`;
-exports[`babel-plugin-jest-hoist 4. within a block with no siblings: 4. within a block with no siblings 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 4. within a block with no siblings: 4. within a block with no siblings 1`] = `
beforeEach(() => {
jest.mock('someNode');
@@ -98,7 +98,7 @@ beforeEach(() => {
`;
-exports[`babel-plugin-jest-hoist 5. required \`jest\` within \`jest\`: 5. required \`jest\` within \`jest\` 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 5. required \`jest\` within \`jest\`: 5. required \`jest\` within \`jest\` 1`] = `
const {jest} = require('@jest/globals');
@@ -116,7 +116,7 @@ jest.mock('some-module', () => {
`;
-exports[`babel-plugin-jest-hoist 6. imported jest.mock within jest.mock: 6. imported jest.mock within jest.mock 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 6. imported jest.mock within jest.mock: 6. imported jest.mock within jest.mock 1`] = `
import {jest} from '@jest/globals';
@@ -139,7 +139,7 @@ import {jest} from '@jest/globals';
`;
-exports[`babel-plugin-jest-hoist 7. global jest.mock within jest.mock: 7. global jest.mock within jest.mock 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 7. global jest.mock within jest.mock: 7. global jest.mock within jest.mock 1`] = `
jest.mock('some-module', () => {
jest.mock('some-module');
@@ -159,7 +159,7 @@ function _getJestObj() {
`;
-exports[`babel-plugin-jest-hoist 8. imported jest.requireActual in jest.mock: 8. imported jest.requireActual in jest.mock 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 8. imported jest.requireActual in jest.mock: 8. imported jest.requireActual in jest.mock 1`] = `
import {jest} from '@jest/globals';
@@ -185,7 +185,7 @@ jest.requireActual('some-module');
`;
-exports[`babel-plugin-jest-hoist 9. global jest.requireActual in jest.mock: 9. global jest.requireActual in jest.mock 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 9. global jest.requireActual in jest.mock: 9. global jest.requireActual in jest.mock 1`] = `
jest.mock('some-module', () => {
jest.requireActual('some-module');
@@ -208,7 +208,7 @@ jest.requireActual('some-module');
`;
-exports[`babel-plugin-jest-hoist 10. TS typeof usage in jest.mock: 10. TS typeof usage in jest.mock 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 10. TS typeof usage in jest.mock: 10. TS typeof usage in jest.mock 1`] = `
jest.mock('some-module', () => {
const actual = jest.requireActual('some-module');
@@ -231,7 +231,7 @@ function _getJestObj() {
`;
-exports[`babel-plugin-jest-hoist 11. jest.spyOn call on the imported module: 11. jest.spyOn call on the imported module 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 11. jest.spyOn call on the imported module: 11. jest.spyOn call on the imported module 1`] = `
jest.mock('some-module', () => {
const module = jest.requireActual('some-module');
@@ -255,7 +255,7 @@ function _getJestObj() {
`;
-exports[`babel-plugin-jest-hoist 12. jest.spyOn call in class constructor: 12. jest.spyOn call in class constructor 1`] = `
+exports[`babel 7 babel-plugin-jest-hoist 12. jest.spyOn call in class constructor: 12. jest.spyOn call in class constructor 1`] = `
jest.mock('some-module', () => {
const Actual = jest.requireActual('some-module');
diff --git a/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.nodejs20plus.test.ts.snap b/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.nodejs20plus.test.ts.snap
new file mode 100644
index 000000000000..df0656ba7f69
--- /dev/null
+++ b/packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.nodejs20plus.test.ts.snap
@@ -0,0 +1,575 @@
+// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
+
+exports[`babel 7 babel-plugin-jest-hoist 1. automatic react runtime: 1. automatic react runtime 1`] = `
+
+jest.mock('./App', () => () => Hello world
);
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+var _jsxFileName = '/root/project/src/file.js';
+_getJestObj().mock(
+ './App',
+ () => () =>
+ /*#__PURE__*/ _jsxDEV(
+ 'div',
+ {
+ children: 'Hello world',
+ },
+ void 0,
+ false,
+ {
+ fileName: _jsxFileName,
+ lineNumber: 1,
+ columnNumber: 32,
+ },
+ this,
+ ),
+);
+import {jsxDEV as _jsxDEV} from 'react/jsx-dev-runtime';
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 2. top level mocking: 2. top level mocking 1`] = `
+
+require('x');
+
+jest.enableAutomock();
+jest.disableAutomock();
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().enableAutomock();
+_getJestObj().disableAutomock();
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+require('x');
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 3. within a block: 3. within a block 1`] = `
+
+beforeEach(() => {
+ require('x');
+ jest.mock('someNode');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+beforeEach(() => {
+ _getJestObj().mock('someNode');
+ require('x');
+});
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 4. within a block with no siblings: 4. within a block with no siblings 1`] = `
+
+beforeEach(() => {
+ jest.mock('someNode');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+beforeEach(() => {
+ _getJestObj().mock('someNode');
+});
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 5. required \`jest\` within \`jest\`: 5. required \`jest\` within \`jest\` 1`] = `
+
+const {jest} = require('@jest/globals');
+
+jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+const {jest} = require('@jest/globals');
+jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+});
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 6. imported jest.mock within jest.mock: 6. imported jest.mock within jest.mock 1`] = `
+
+import {jest} from '@jest/globals';
+
+jest.mock('some-module', () => {
+ jest.mock('some-module');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ _getJestObj().mock('some-module');
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+import {jest} from '@jest/globals';
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 7. global jest.mock within jest.mock: 7. global jest.mock within jest.mock 1`] = `
+
+jest.mock('some-module', () => {
+ jest.mock('some-module');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ _getJestObj().mock('some-module');
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 8. imported jest.requireActual in jest.mock: 8. imported jest.requireActual in jest.mock 1`] = `
+
+import {jest} from '@jest/globals';
+
+jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+});
+
+jest.requireActual('some-module');
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ _getJestObj().requireActual('some-module');
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+import {jest} from '@jest/globals';
+jest.requireActual('some-module');
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 9. global jest.requireActual in jest.mock: 9. global jest.requireActual in jest.mock 1`] = `
+
+jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+});
+
+jest.requireActual('some-module');
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ _getJestObj().requireActual('some-module');
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+jest.requireActual('some-module');
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 10. TS typeof usage in jest.mock: 10. TS typeof usage in jest.mock 1`] = `
+
+jest.mock('some-module', () => {
+ const actual = jest.requireActual('some-module');
+
+ return jest.fn();
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ const actual = jest.requireActual('some-module');
+ return jest.fn();
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 11. jest.spyOn call on the imported module: 11. jest.spyOn call on the imported module 1`] = `
+
+jest.mock('some-module', () => {
+ const module = jest.requireActual('some-module');
+ jest.spyOn(module, 'add');
+ return module;
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ const module = jest.requireActual('some-module');
+ _getJestObj().spyOn(module, 'add');
+ return module;
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 7 babel-plugin-jest-hoist 12. jest.spyOn call in class constructor: 12. jest.spyOn call in class constructor 1`] = `
+
+jest.mock('some-module', () => {
+ const Actual = jest.requireActual('some-module');
+ return class Mocked extends Actual {
+ constructor() {
+ super();
+ jest.spyOn(this, 'add');
+ }
+ };
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ const Actual = jest.requireActual('some-module');
+ return class Mocked extends Actual {
+ constructor() {
+ super();
+ _getJestObj().spyOn(this, 'add');
+ }
+ };
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 13. automatic react runtime: 13. automatic react runtime 1`] = `
+
+jest.mock('./App', () => () => Hello world
);
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+var _jsxFileName = '/root/project/src/file.js';
+_getJestObj().mock(
+ './App',
+ () => () =>
+ /*#__PURE__*/ _jsxDEV(
+ 'div',
+ {
+ children: 'Hello world',
+ },
+ void 0,
+ false,
+ {
+ fileName: _jsxFileName,
+ lineNumber: 1,
+ columnNumber: 32,
+ },
+ this,
+ ),
+);
+import {jsxDEV as _jsxDEV} from 'react/jsx-dev-runtime';
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 14. top level mocking: 14. top level mocking 1`] = `
+
+require('x');
+
+jest.enableAutomock();
+jest.disableAutomock();
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().enableAutomock();
+_getJestObj().disableAutomock();
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+require('x');
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 15. within a block: 15. within a block 1`] = `
+
+beforeEach(() => {
+ require('x');
+ jest.mock('someNode');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+beforeEach(() => {
+ _getJestObj().mock('someNode');
+ require('x');
+});
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 16. within a block with no siblings: 16. within a block with no siblings 1`] = `
+
+beforeEach(() => {
+ jest.mock('someNode');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+beforeEach(() => {
+ _getJestObj().mock('someNode');
+});
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 17. required \`jest\` within \`jest\`: 17. required \`jest\` within \`jest\` 1`] = `
+
+const {jest} = require('@jest/globals');
+
+jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+const {jest} = require('@jest/globals');
+jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+});
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 18. imported jest.mock within jest.mock: 18. imported jest.mock within jest.mock 1`] = `
+
+import {jest} from '@jest/globals';
+
+jest.mock('some-module', () => {
+ jest.mock('some-module');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ _getJestObj().mock('some-module');
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+import {jest} from '@jest/globals';
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 19. global jest.mock within jest.mock: 19. global jest.mock within jest.mock 1`] = `
+
+jest.mock('some-module', () => {
+ jest.mock('some-module');
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ _getJestObj().mock('some-module');
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 20. imported jest.requireActual in jest.mock: 20. imported jest.requireActual in jest.mock 1`] = `
+
+import {jest} from '@jest/globals';
+
+jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+});
+
+jest.requireActual('some-module');
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ _getJestObj().requireActual('some-module');
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+import {jest} from '@jest/globals';
+jest.requireActual('some-module');
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 21. global jest.requireActual in jest.mock: 21. global jest.requireActual in jest.mock 1`] = `
+
+jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+});
+
+jest.requireActual('some-module');
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ _getJestObj().requireActual('some-module');
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+jest.requireActual('some-module');
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 22. TS typeof usage in jest.mock: 22. TS typeof usage in jest.mock 1`] = `
+
+jest.mock('some-module', () => {
+ const actual = jest.requireActual('some-module');
+
+ return jest.fn();
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ const actual = jest.requireActual('some-module');
+ return jest.fn();
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 23. jest.spyOn call on the imported module: 23. jest.spyOn call on the imported module 1`] = `
+
+jest.mock('some-module', () => {
+ const module = jest.requireActual('some-module');
+ jest.spyOn(module, 'add');
+ return module;
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ const module = jest.requireActual('some-module');
+ _getJestObj().spyOn(module, 'add');
+ return module;
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
+
+exports[`babel 8 babel-plugin-jest-hoist 24. jest.spyOn call in class constructor: 24. jest.spyOn call in class constructor 1`] = `
+
+jest.mock('some-module', () => {
+ const Actual = jest.requireActual('some-module');
+ return class Mocked extends Actual {
+ constructor() {
+ super();
+ jest.spyOn(this, 'add');
+ }
+ };
+});
+
+
+ ↓ ↓ ↓ ↓ ↓ ↓
+
+_getJestObj().mock('some-module', () => {
+ const Actual = jest.requireActual('some-module');
+ return class Mocked extends Actual {
+ constructor() {
+ super();
+ _getJestObj().spyOn(this, 'add');
+ }
+ };
+});
+function _getJestObj() {
+ const {jest} = require('@jest/globals');
+ _getJestObj = () => jest;
+ return jest;
+}
+
+`;
diff --git a/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.nodejs18.test.ts b/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.nodejs18.test.ts
new file mode 100644
index 000000000000..7f0b6d4472ff
--- /dev/null
+++ b/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.nodejs18.test.ts
@@ -0,0 +1,198 @@
+/**
+ * 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.
+ *
+ */
+
+import * as path from 'path';
+import {format as formatCode, resolveConfig} from '@prettier/sync';
+import pluginTester from 'babel-plugin-tester';
+import type {Options} from 'prettier';
+import babelPluginJestHoist from '..';
+
+const prettierOptions: Options = {
+ ...resolveConfig(__filename),
+ filepath: __filename,
+ parser: 'babel-ts',
+};
+
+const formatResult = (code: string) => formatCode(code, prettierOptions);
+
+describe('babel 7', () => {
+ defineTests({
+ babel: require('@babel/core'),
+ presetReact: require('@babel/preset-react').default,
+ presetTypescript: require('@babel/preset-typescript').default,
+ });
+});
+
+export function defineTests({
+ babel,
+ presetReact,
+ presetTypescript,
+}: {
+ babel: typeof import('@babel/core');
+ presetReact: any;
+ presetTypescript: any;
+}) {
+ pluginTester({
+ babel,
+ plugin: babelPluginJestHoist,
+ pluginName: 'babel-plugin-jest-hoist',
+ tests: {
+ /* eslint-disable sort-keys */
+ 'automatic react runtime': {
+ babelOptions: {
+ babelrc: false,
+ configFile: false,
+ filename: path.resolve(__dirname, '../file.js'),
+ presets: [[presetReact, {development: true, runtime: 'automatic'}]],
+ },
+ code: formatResult(`
+ jest.mock('./App', () => () => Hello world
);
+ `),
+ formatResult(code) {
+ // replace the filename with something that will be the same across OSes and machine
+ const codeWithoutSystemPath = code.replace(
+ /var _jsxFileName = ".*";/,
+ 'var _jsxFileName = "/root/project/src/file.js";',
+ );
+
+ return formatResult(codeWithoutSystemPath);
+ },
+ snapshot: true,
+ },
+ 'top level mocking': {
+ code: formatResult(`
+ require('x');
+
+ jest.enableAutomock();
+ jest.disableAutomock();
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'within a block': {
+ code: formatResult(`
+ beforeEach(() => {
+ require('x')
+ jest.mock('someNode')
+ })
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'within a block with no siblings': {
+ code: formatResult(`
+ beforeEach(() => {
+ jest.mock('someNode')
+ })
+ `),
+ formatResult,
+ snapshot: true,
+ },
+
+ 'required `jest` within `jest`': {
+ code: formatResult(`
+ const {jest} = require('@jest/globals');
+
+ jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+ });
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'imported jest.mock within jest.mock': {
+ code: formatResult(`
+ import {jest} from '@jest/globals';
+
+ jest.mock('some-module', () => {
+ jest.mock('some-module');
+ });
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'global jest.mock within jest.mock': {
+ code: formatResult(`
+ jest.mock('some-module', () => {
+ jest.mock('some-module');
+ });
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'imported jest.requireActual in jest.mock': {
+ code: formatResult(`
+ import {jest} from '@jest/globals';
+
+ jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+ });
+
+ jest.requireActual('some-module');
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'global jest.requireActual in jest.mock': {
+ code: formatResult(`
+ jest.mock('some-module', () => {
+ jest.requireActual('some-module');
+ });
+
+ jest.requireActual('some-module');
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'TS typeof usage in jest.mock': {
+ babelOptions: {
+ babelrc: false,
+ configFile: false,
+ filename: path.resolve(__dirname, '../file.ts'),
+ presets: [presetTypescript],
+ },
+ code: formatResult(`
+ jest.mock('some-module', () => {
+ const actual = jest.requireActual('some-module');
+
+ return jest.fn();
+ });
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'jest.spyOn call on the imported module': {
+ code: formatResult(`
+ jest.mock('some-module', () => {
+ const module = jest.requireActual('some-module');
+ jest.spyOn(module, 'add');
+ return module;
+ });
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ 'jest.spyOn call in class constructor': {
+ code: formatResult(`
+ jest.mock('some-module', () => {
+ const Actual = jest.requireActual('some-module');
+ return class Mocked extends Actual {
+ constructor() {
+ super();
+ jest.spyOn(this, 'add');
+ }
+ };
+ });
+ `),
+ formatResult,
+ snapshot: true,
+ },
+ },
+ /* eslint-enable */
+ });
+}
diff --git a/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.nodejs20plus.test.ts b/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.nodejs20plus.test.ts
new file mode 100644
index 000000000000..1f6520ad41f2
--- /dev/null
+++ b/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.nodejs20plus.test.ts
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ *
+ */
+
+// We need to use the Node.js implementation of `require` to load Babel 8
+// packages, instead of our sandboxed implementation, because Babel 8 is
+// written in ESM and we don't support require(esm) yet.
+import Module from 'node:module';
+import {pathToFileURL} from 'node:url';
+const createOriginalNodeRequire = Object.getPrototypeOf(Module).createRequire;
+const originalNodeRequire = createOriginalNodeRequire(
+ pathToFileURL(__filename),
+);
+
+// This import will also `define()` the Babel 7 tests
+import {defineTests} from './hoistPlugin.nodejs18.test';
+
+describe('babel 8', () => {
+ defineTests({
+ babel: originalNodeRequire('@babel-8/core'),
+ presetReact: originalNodeRequire('@babel-8/preset-react'),
+ presetTypescript: originalNodeRequire('@babel-8/preset-typescript'),
+ });
+});
diff --git a/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts b/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts
deleted file mode 100644
index 642fbd31f885..000000000000
--- a/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
- * 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.
- *
- */
-
-import * as path from 'path';
-import {format as formatCode, resolveConfig} from '@prettier/sync';
-import pluginTester from 'babel-plugin-tester';
-import type {Options} from 'prettier';
-import babelPluginJestHoist from '..';
-
-const prettierOptions: Options = {
- ...resolveConfig(__filename),
- filepath: __filename,
- parser: 'babel-ts',
-};
-
-const formatResult = (code: string) => formatCode(code, prettierOptions);
-
-pluginTester({
- plugin: babelPluginJestHoist,
- pluginName: 'babel-plugin-jest-hoist',
- tests: {
- /* eslint-disable sort-keys */
- 'automatic react runtime': {
- babelOptions: {
- babelrc: false,
- configFile: false,
- filename: path.resolve(__dirname, '../file.js'),
- presets: [
- [
- require.resolve('@babel/preset-react'),
- {development: true, runtime: 'automatic'},
- ],
- ],
- },
- code: formatResult(`
- jest.mock('./App', () => () => Hello world
);
- `),
- formatResult(code) {
- // replace the filename with something that will be the same across OSes and machine
- const codeWithoutSystemPath = code.replace(
- /var _jsxFileName = ".*";/,
- 'var _jsxFileName = "/root/project/src/file.js";',
- );
-
- return formatResult(codeWithoutSystemPath);
- },
- snapshot: true,
- },
- 'top level mocking': {
- code: formatResult(`
- require('x');
-
- jest.enableAutomock();
- jest.disableAutomock();
- `),
- formatResult,
- snapshot: true,
- },
- 'within a block': {
- code: formatResult(`
- beforeEach(() => {
- require('x')
- jest.mock('someNode')
- })
- `),
- formatResult,
- snapshot: true,
- },
- 'within a block with no siblings': {
- code: formatResult(`
- beforeEach(() => {
- jest.mock('someNode')
- })
- `),
- formatResult,
- snapshot: true,
- },
-
- 'required `jest` within `jest`': {
- code: formatResult(`
- const {jest} = require('@jest/globals');
-
- jest.mock('some-module', () => {
- jest.requireActual('some-module');
- });
- `),
- formatResult,
- snapshot: true,
- },
- 'imported jest.mock within jest.mock': {
- code: formatResult(`
- import {jest} from '@jest/globals';
-
- jest.mock('some-module', () => {
- jest.mock('some-module');
- });
- `),
- formatResult,
- snapshot: true,
- },
- 'global jest.mock within jest.mock': {
- code: formatResult(`
- jest.mock('some-module', () => {
- jest.mock('some-module');
- });
- `),
- formatResult,
- snapshot: true,
- },
- 'imported jest.requireActual in jest.mock': {
- code: formatResult(`
- import {jest} from '@jest/globals';
-
- jest.mock('some-module', () => {
- jest.requireActual('some-module');
- });
-
- jest.requireActual('some-module');
- `),
- formatResult,
- snapshot: true,
- },
- 'global jest.requireActual in jest.mock': {
- code: formatResult(`
- jest.mock('some-module', () => {
- jest.requireActual('some-module');
- });
-
- jest.requireActual('some-module');
- `),
- formatResult,
- snapshot: true,
- },
- 'TS typeof usage in jest.mock': {
- babelOptions: {
- babelrc: false,
- configFile: false,
- filename: path.resolve(__dirname, '../file.ts'),
- presets: [[require.resolve('@babel/preset-typescript')]],
- },
- code: formatResult(`
- jest.mock('some-module', () => {
- const actual = jest.requireActual('some-module');
-
- return jest.fn();
- });
- `),
- formatResult,
- snapshot: true,
- },
- 'jest.spyOn call on the imported module': {
- code: formatResult(`
- jest.mock('some-module', () => {
- const module = jest.requireActual('some-module');
- jest.spyOn(module, 'add');
- return module;
- });
- `),
- formatResult,
- snapshot: true,
- },
- 'jest.spyOn call in class constructor': {
- code: formatResult(`
- jest.mock('some-module', () => {
- const Actual = jest.requireActual('some-module');
- return class Mocked extends Actual {
- constructor() {
- super();
- jest.spyOn(this, 'add');
- }
- };
- });
- `),
- formatResult,
- snapshot: true,
- },
- },
- /* eslint-enable */
-});
diff --git a/packages/babel-plugin-jest-hoist/src/index.ts b/packages/babel-plugin-jest-hoist/src/index.ts
index c59632ce9e63..4340b38026bc 100644
--- a/packages/babel-plugin-jest-hoist/src/index.ts
+++ b/packages/babel-plugin-jest-hoist/src/index.ts
@@ -7,22 +7,19 @@
*/
import type {PluginObj} from '@babel/core';
-import {statement} from '@babel/template';
import type {NodePath} from '@babel/traverse';
-import {
- type CallExpression,
- type Expression,
- type Identifier,
- type ImportDeclaration,
- type MemberExpression,
- type Node,
- type Statement,
- type Super,
- type VariableDeclaration,
- type VariableDeclarator,
- callExpression,
- isIdentifier,
- variableDeclaration,
+import type {
+ CallExpression,
+ Expression,
+ Identifier,
+ ImportDeclaration,
+ MemberExpression,
+ Node,
+ Statement,
+ StringLiteral,
+ Super,
+ VariableDeclaration,
+ VariableDeclarator,
} from '@babel/types';
const JEST_GLOBAL_NAME = 'jest';
@@ -170,10 +167,12 @@ FUNCTIONS.mock = args => {
} else if (binding?.path.isImportSpecifier()) {
const importDecl = binding.path
.parentPath as NodePath;
- const imported = binding.path.node.imported;
+ const imported = binding.path.get('imported');
if (
importDecl.node.source.value === JEST_GLOBALS_MODULE_NAME &&
- (isIdentifier(imported) ? imported.name : imported.value) ===
+ (imported.isIdentifier()
+ ? imported.node.name
+ : (imported.node as StringLiteral).value) ===
JEST_GLOBALS_MODULE_JEST_EXPORT_NAME
) {
isAllowedIdentifier = true;
@@ -208,14 +207,6 @@ FUNCTIONS.deepUnmock = args => args.length === 1 && args[0].isStringLiteral();
FUNCTIONS.disableAutomock = FUNCTIONS.enableAutomock = args =>
args.length === 0;
-const createJestObjectGetter = statement`
-function GETTER_NAME() {
- const { JEST_GLOBALS_MODULE_JEST_EXPORT_NAME } = require("JEST_GLOBALS_MODULE_NAME");
- GETTER_NAME = () => JEST_GLOBALS_MODULE_JEST_EXPORT_NAME;
- return JEST_GLOBALS_MODULE_JEST_EXPORT_NAME;
-}
-`;
-
const isJestObject = (
expression: NodePath,
): expression is NodePath => {
@@ -310,10 +301,22 @@ const extractJestObjExprIfHoistable = (expr: NodePath): JestObjInfo | null => {
};
/* eslint-disable sort-keys */
-export default function jestHoist(): PluginObj<{
+export default function jestHoist(
+ babel: typeof import('@babel/core'),
+): PluginObj<{
declareJestObjGetterIdentifier: () => Identifier;
jestObjGetterIdentifier?: Identifier;
}> {
+ const {template, types: t} = babel;
+
+ const createJestObjectGetter = template.statement`
+ function GETTER_NAME() {
+ const { JEST_GLOBALS_MODULE_JEST_EXPORT_NAME } = require("JEST_GLOBALS_MODULE_NAME");
+ GETTER_NAME = () => JEST_GLOBALS_MODULE_JEST_EXPORT_NAME;
+ return JEST_GLOBALS_MODULE_JEST_EXPORT_NAME;
+ }
+ `;
+
return {
pre({path: program}) {
this.declareJestObjGetterIdentifier = () => {
@@ -341,7 +344,7 @@ export default function jestHoist(): PluginObj<{
exprStmt.get('expression'),
);
if (jestObjInfo) {
- const jestCallExpr = callExpression(
+ const jestCallExpr = t.callExpression(
this.declareJestObjGetterIdentifier(),
[],
);
@@ -388,7 +391,9 @@ export default function jestHoist(): PluginObj<{
} else {
varDecl.remove();
}
- stack.at(-1)!.vars.push(variableDeclaration(kind, [varDecl.node]));
+ stack
+ .at(-1)!
+ .vars.push(t.variableDeclaration(kind, [varDecl.node]));
}
},
});
diff --git a/packages/babel-preset-jest/package.json b/packages/babel-preset-jest/package.json
index bcc56adbba63..b38d3f4f25b8 100644
--- a/packages/babel-preset-jest/package.json
+++ b/packages/babel-preset-jest/package.json
@@ -1,6 +1,6 @@
{
"name": "babel-preset-jest",
- "version": "30.0.1",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
@@ -14,10 +14,10 @@
},
"dependencies": {
"babel-plugin-jest-hoist": "workspace:*",
- "babel-preset-current-node-syntax": "^1.1.0"
+ "babel-preset-current-node-syntax": "^1.2.0"
},
"peerDependencies": {
- "@babel/core": "^7.11.0"
+ "@babel/core": "^7.11.0 || ^8.0.0-beta.1"
},
"engines": {
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
diff --git a/packages/create-jest/package.json b/packages/create-jest/package.json
index 4e6fca86a311..a32aaf06e8d5 100644
--- a/packages/create-jest/package.json
+++ b/packages/create-jest/package.json
@@ -1,7 +1,7 @@
{
"name": "create-jest",
"description": "Create a new Jest project",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/expect-utils/package.json b/packages/expect-utils/package.json
index 3ce905d0ecae..c5d8c14b4c05 100644
--- a/packages/expect-utils/package.json
+++ b/packages/expect-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/expect-utils",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/expect/package.json b/packages/expect/package.json
index f7031a336184..16c0187690ad 100644
--- a/packages/expect/package.json
+++ b/packages/expect/package.json
@@ -1,6 +1,6 @@
{
"name": "expect",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-changed-files/package.json b/packages/jest-changed-files/package.json
index aa173657d299..a9a5305a794b 100644
--- a/packages/jest-changed-files/package.json
+++ b/packages/jest-changed-files/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-changed-files",
- "version": "30.0.5",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json
index 5a9ed12f0fe9..271ac46f5859 100644
--- a/packages/jest-circus/package.json
+++ b/packages/jest-circus/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-circus",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-circus/src/__tests__/__snapshots__/baseTest.test.ts.snap b/packages/jest-circus/src/__tests__/__snapshots__/baseTest.test.ts.snap
index 63c2e1e4aa83..3a7d0443751e 100644
--- a/packages/jest-circus/src/__tests__/__snapshots__/baseTest.test.ts.snap
+++ b/packages/jest-circus/src/__tests__/__snapshots__/baseTest.test.ts.snap
@@ -11,6 +11,7 @@ finish_describe_definition: describe
run_start
run_describe_start: ROOT_DESCRIBE_BLOCK
run_describe_start: describe
+concurrent_tests_start
test_start: one
test_start: two
test_start: three
@@ -29,6 +30,7 @@ test_fn_success: three
test_done: one
test_done: two
test_done: three
+concurrent_tests_end
run_describe_finish: describe
run_describe_finish: ROOT_DESCRIBE_BLOCK
run_finish
@@ -47,6 +49,7 @@ finish_describe_definition: describe
run_start
run_describe_start: ROOT_DESCRIBE_BLOCK
run_describe_start: describe
+concurrent_tests_start
test_start: one
test_start: two
test_start: three
@@ -65,6 +68,7 @@ test_fn_success: three
test_done: one
test_done: two
test_done: three
+concurrent_tests_end
run_describe_finish: describe
run_describe_finish: ROOT_DESCRIBE_BLOCK
run_finish
@@ -83,12 +87,14 @@ finish_describe_definition: describe
run_start
run_describe_start: ROOT_DESCRIBE_BLOCK
run_describe_start: describe
+concurrent_tests_start
test_start: one
test_start: two
test_start: three
test_skip
test_skip
test_skip
+concurrent_tests_end
run_describe_finish: describe
run_describe_finish: ROOT_DESCRIBE_BLOCK
run_finish
@@ -107,12 +113,14 @@ finish_describe_definition: describe
run_start
run_describe_start: ROOT_DESCRIBE_BLOCK
run_describe_start: describe
+concurrent_tests_start
test_start: one
test_start: two
test_start: three
test_skip
test_skip
test_skip
+concurrent_tests_end
run_describe_finish: describe
run_describe_finish: ROOT_DESCRIBE_BLOCK
run_finish
@@ -185,13 +193,15 @@ finish_describe_definition: describe
run_start
run_describe_start: ROOT_DESCRIBE_BLOCK
run_describe_start: describe
+run_describe_start: nested
+concurrent_tests_start
test_start: one
test_start: two
test_start: three
-run_describe_start: nested
test_skip
test_skip
test_skip
+concurrent_tests_end
run_describe_finish: nested
run_describe_finish: describe
run_describe_finish: ROOT_DESCRIBE_BLOCK
diff --git a/packages/jest-circus/src/__tests__/__snapshots__/concurrent.test.ts.snap b/packages/jest-circus/src/__tests__/__snapshots__/concurrent.test.ts.snap
new file mode 100644
index 000000000000..1b8896f6207c
--- /dev/null
+++ b/packages/jest-circus/src/__tests__/__snapshots__/concurrent.test.ts.snap
@@ -0,0 +1,277 @@
+// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
+
+exports[`{before,after}All + concurrent 1`] = `
+"add_hook: beforeAll
+add_hook: afterAll
+add_test: one
+run_start
+run_describe_start: ROOT_DESCRIBE_BLOCK
+hook_start: beforeAll
+hook_success: beforeAll
+concurrent_tests_start
+test_start: one
+test_started: one
+test_fn_start: one
+hello one
+test_fn_failure: one
+test_done: one
+concurrent_tests_end
+hook_start: afterAll
+hook_success: afterAll
+run_describe_finish: ROOT_DESCRIBE_BLOCK
+run_finish
+
+unhandledErrors: 0"
+`;
+
+exports[`Execute concurrent as a single sequential unit in each describe 1`] = `
+"start_describe_definition: foo
+add_hook: beforeAll
+add_hook: afterAll
+add_test: A
+add_test: B
+add_test: C
+start_describe_definition: bar
+add_hook: beforeAll
+add_hook: afterAll
+add_test: D
+add_test: E
+add_test: F
+finish_describe_definition: bar
+start_describe_definition: qux
+add_hook: beforeAll
+add_hook: afterAll
+add_test: G
+add_test: H
+add_test: I
+finish_describe_definition: qux
+finish_describe_definition: foo
+run_start
+run_describe_start: ROOT_DESCRIBE_BLOCK
+run_describe_start: foo
+hook_start: beforeAll
+hook_success: beforeAll
+concurrent_tests_start
+test_start: A
+test_start: B
+test_started: A
+test_started: B
+test_fn_start: A
+test_fn_start: B
+test_fn_success: A
+test_fn_success: B
+test_done: A
+test_done: B
+concurrent_tests_end
+test_start: C
+test_started: C
+test_fn_start: C
+test_fn_success: C
+test_done: C
+run_describe_start: bar
+hook_start: beforeAll
+hook_success: beforeAll
+concurrent_tests_start
+test_start: D
+test_start: E
+test_started: D
+test_started: E
+test_fn_start: D
+test_fn_start: E
+test_fn_success: D
+test_fn_success: E
+test_done: D
+test_done: E
+concurrent_tests_end
+test_start: F
+test_started: F
+test_fn_start: F
+test_fn_success: F
+test_done: F
+hook_start: afterAll
+hook_success: afterAll
+run_describe_finish: bar
+run_describe_start: qux
+hook_start: beforeAll
+hook_success: beforeAll
+concurrent_tests_start
+test_start: G
+test_start: H
+test_started: G
+test_started: H
+test_fn_start: G
+test_fn_start: H
+test_fn_success: G
+test_fn_success: H
+test_done: G
+test_done: H
+concurrent_tests_end
+test_start: I
+test_started: I
+test_fn_start: I
+test_fn_success: I
+test_done: I
+hook_start: afterAll
+hook_success: afterAll
+run_describe_finish: qux
+hook_start: afterAll
+hook_success: afterAll
+run_describe_finish: foo
+run_describe_finish: ROOT_DESCRIBE_BLOCK
+run_finish
+
+unhandledErrors: 0"
+`;
+
+exports[`describe + {before,after}All + concurrent 1`] = `
+"start_describe_definition: describe
+add_hook: beforeAll
+add_hook: afterAll
+add_test: one
+add_test: two
+finish_describe_definition: describe
+run_start
+run_describe_start: ROOT_DESCRIBE_BLOCK
+run_describe_start: describe
+hook_start: beforeAll
+hook_success: beforeAll
+concurrent_tests_start
+test_start: one
+test_start: two
+test_started: one
+test_started: two
+test_fn_start: one
+test_fn_start: two
+test_fn_failure: one
+test_fn_failure: two
+test_done: one
+test_done: two
+concurrent_tests_end
+hook_start: afterAll
+hook_success: afterAll
+run_describe_finish: describe
+run_describe_finish: ROOT_DESCRIBE_BLOCK
+run_finish
+
+unhandledErrors: 0"
+`;
+
+exports[`describe + {before,after}All + concurrent multiple times 1`] = `
+"start_describe_definition: describe1
+add_hook: beforeAll
+add_hook: afterAll
+add_test: one
+add_test: two
+finish_describe_definition: describe1
+start_describe_definition: describe2
+add_hook: beforeAll
+add_hook: afterAll
+add_test: one
+add_test: two
+finish_describe_definition: describe2
+run_start
+run_describe_start: ROOT_DESCRIBE_BLOCK
+run_describe_start: describe1
+hook_start: beforeAll
+hook_success: beforeAll
+concurrent_tests_start
+test_start: one
+test_start: two
+test_started: one
+test_started: two
+test_fn_start: one
+test_fn_start: two
+test_fn_failure: one
+test_fn_success: two
+test_done: one
+test_done: two
+concurrent_tests_end
+hook_start: afterAll
+hook_success: afterAll
+run_describe_finish: describe1
+run_describe_start: describe2
+hook_start: beforeAll
+hook_success: beforeAll
+concurrent_tests_start
+test_start: one
+test_start: two
+test_started: one
+test_started: two
+test_fn_start: one
+test_fn_start: two
+test_fn_failure: one
+test_fn_success: two
+test_done: one
+test_done: two
+concurrent_tests_end
+hook_start: afterAll
+hook_success: afterAll
+run_describe_finish: describe2
+run_describe_finish: ROOT_DESCRIBE_BLOCK
+run_finish
+
+unhandledErrors: 0"
+`;
+
+exports[`describe + concurrent & non concurrent 1`] = `
+"start_describe_definition: describe
+add_hook: beforeAll
+add_hook: afterAll
+add_test: one
+add_test: two
+add_test: three
+add_test: four
+add_test: five
+add_test: six
+add_test: seven
+finish_describe_definition: describe
+run_start
+run_describe_start: ROOT_DESCRIBE_BLOCK
+run_describe_start: describe
+hook_start: beforeAll
+hook_success: beforeAll
+concurrent_tests_start
+test_start: one
+test_start: two
+test_start: four
+test_start: six
+test_start: seven
+test_started: one
+test_started: two
+test_started: four
+test_started: six
+test_started: seven
+test_fn_start: one
+test_fn_start: two
+test_fn_start: four
+test_fn_start: six
+test_fn_start: seven
+test_fn_success: one
+test_fn_success: two
+test_fn_success: four
+test_fn_success: six
+test_fn_success: seven
+test_done: one
+test_done: two
+test_done: four
+test_done: six
+test_done: seven
+concurrent_tests_end
+test_start: three
+test_started: three
+test_fn_start: three
+test_fn_success: three
+test_done: three
+test_start: five
+test_started: five
+test_fn_start: five
+test_fn_success: five
+test_done: five
+hook_start: afterAll
+hook_success: afterAll
+run_describe_finish: describe
+run_describe_finish: ROOT_DESCRIBE_BLOCK
+run_finish
+
+unhandledErrors: 0"
+`;
diff --git a/packages/jest-circus/src/__tests__/baseTest.test.ts b/packages/jest-circus/src/__tests__/baseTest.test.ts
index d3c870719c93..54ed4c4a5111 100644
--- a/packages/jest-circus/src/__tests__/baseTest.test.ts
+++ b/packages/jest-circus/src/__tests__/baseTest.test.ts
@@ -48,16 +48,16 @@ test('concurrent', () => {
describe('describe', () => {
beforeEach(() => {});
afterEach(() => { throw new Error('banana')});
- test.concurrent('one', () => {
+ test.concurrent('one', () => {
console.log('hello one');
throw new Error('kentucky')
});
test.concurrent('two', () => {
console.log('hello two');
});
- test.concurrent('three', async () => {
+ test.concurrent('three', async () => {
console.log('hello three');
- await Promise.resolve();
+ await Promise.resolve();
});
})
`);
@@ -76,7 +76,7 @@ test('concurrent.each', () => {
['three'],
])('%s', async (name) => {
console.log('hello %s', name);
- await Promise.resolve();
+ await Promise.resolve();
});
})
`);
diff --git a/packages/jest-circus/src/__tests__/concurrent.test.ts b/packages/jest-circus/src/__tests__/concurrent.test.ts
new file mode 100644
index 000000000000..c44582cdb49b
--- /dev/null
+++ b/packages/jest-circus/src/__tests__/concurrent.test.ts
@@ -0,0 +1,120 @@
+/**
+ * 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.
+ */
+
+import {runTest} from '../__mocks__/testUtils';
+
+test('{before,after}All + concurrent', () => {
+ const {stdout} = runTest(`
+ const {setTimeout} = require('timers/promises')
+
+ beforeAll(async () => await setTimeout(100));
+ afterAll(async () => await setTimeout(100));
+ test.concurrent('one', () => {
+ console.log('hello one');
+ throw new Error('kentucky')
+ });
+ `);
+
+ expect(stdout).toMatchSnapshot();
+});
+
+test('describe + {before,after}All + concurrent', () => {
+ const {stdout} = runTest(`
+ const {setTimeout} = require('timers/promises')
+
+ describe('describe', () => {
+ beforeAll(async () => await setTimeout(100));
+ afterAll(async () => await setTimeout(100));
+ test.concurrent('one', () => {
+ throw new Error('kentucky')
+ });
+ test.concurrent('two', () => {
+ throw new Error('kentucky')
+ });
+ })
+ `);
+
+ expect(stdout).toMatchSnapshot();
+});
+
+test('describe + {before,after}All + concurrent multiple times', () => {
+ const {stdout} = runTest(`
+ const {setTimeout} = require('timers/promises')
+
+ describe('describe1', () => {
+ beforeAll(async () => await setTimeout(100));
+ afterAll(async () => await setTimeout(100));
+ test.concurrent('one', () => {
+ throw new Error('kentucky')
+ });
+ test.concurrent('two', () => {});
+ })
+ describe('describe2', () => {
+ beforeAll(async () => await setTimeout(100));
+ afterAll(async () => await setTimeout(100));
+ test.concurrent('one', () => {
+ throw new Error('kentucky')
+ });
+ test.concurrent('two', () => {});
+ })
+ `);
+
+ expect(stdout).toMatchSnapshot();
+});
+
+test('describe + concurrent & non concurrent', () => {
+ const {stdout} = runTest(`
+ const {setTimeout} = require('timers/promises')
+
+ describe('describe', () => {
+ beforeAll(async () => await setTimeout(100));
+ afterAll(async () => await setTimeout(100));
+
+ test.concurrent('one', () => {});
+ test.concurrent('two', () => {});
+
+ test('three', () => {});
+
+ test.concurrent('four', () => {});
+
+ test('five', () => {});
+
+ test.concurrent('six', () => {});
+ test.concurrent('seven', () => {});
+ })
+ `);
+
+ expect(stdout).toMatchSnapshot();
+});
+
+test('Execute concurrent as a single sequential unit in each describe', () => {
+ const {stdout} = runTest(`
+ describe('foo', () => {
+ beforeAll(() => {});
+ afterAll(() => {});
+ test.concurrent('A', () => {});
+ test.concurrent('B', () => {});
+ test('C', () => {});
+ describe('bar', () => {
+ beforeAll(() => {});
+ afterAll(() => {});
+ test.concurrent('D', () => {});
+ test.concurrent('E', () => {});
+ test('F', () => {});
+ });
+ describe('qux', () => {
+ beforeAll(() => {});
+ afterAll(() => {});
+ test.concurrent('G', () => {});
+ test.concurrent('H', () => {});
+ test('I', () => {});
+ });
+ });
+ `);
+
+ expect(stdout).toMatchSnapshot();
+});
diff --git a/packages/jest-circus/src/run.ts b/packages/jest-circus/src/run.ts
index 00569d511ff5..00d36a4c4815 100644
--- a/packages/jest-circus/src/run.ts
+++ b/packages/jest-circus/src/run.ts
@@ -28,16 +28,16 @@ import {
// the original values in the variables before we require any files.
const {setTimeout} = globalThis;
-type ConcurrentTestEntry = Omit & {
- fn: Circus.ConcurrentTestFn;
- done: Promise;
-};
+const testNameStorage = new AsyncLocalStorage();
const run = async (): Promise => {
const {rootDescribeBlock, seed, randomize} = getState();
+ jestExpect.setState({
+ currentConcurrentTestName: () => testNameStorage.getStore(),
+ });
const rng = randomize ? rngBuilder(seed) : undefined;
await dispatch({name: 'run_start'});
- await _runTestsForDescribeBlock(rootDescribeBlock, rng, true);
+ await _runTestsForDescribeBlock(rootDescribeBlock, rng);
await dispatch({name: 'run_finish'});
return makeRunResult(
getState().rootDescribeBlock,
@@ -45,10 +45,33 @@ const run = async (): Promise => {
);
};
+function* regroupConcurrentChildren(
+ children: Array,
+) {
+ const concurrentTests = children.filter(
+ (child): child is Circus.TestEntry =>
+ child.type === 'test' && child.concurrent,
+ );
+ if (concurrentTests.length === 0) {
+ yield* children;
+ return;
+ }
+ let collectedConcurrent = false;
+ for (const child of children) {
+ if (child.type === 'test' && child.concurrent) {
+ if (!collectedConcurrent) {
+ collectedConcurrent = true;
+ yield {tests: concurrentTests, type: 'test-concurrent' as const};
+ }
+ } else {
+ yield child;
+ }
+ }
+}
+
const _runTestsForDescribeBlock = async (
describeBlock: Circus.DescribeBlock,
rng: RandomNumberGenerator | undefined,
- isRootBlock = false,
) => {
await dispatch({describeBlock, name: 'run_describe_start'});
const {beforeAll, afterAll} = getAllHooksForDescribe(describeBlock);
@@ -61,17 +84,11 @@ const _runTestsForDescribeBlock = async (
}
}
- if (isRootBlock) {
- const concurrentTests = collectConcurrentTests(describeBlock);
- if (concurrentTests.length > 0) {
- startTestsConcurrently(concurrentTests, isSkipped);
- }
- }
-
// Tests that fail and are retried we run after other tests
const retryTimes =
Number.parseInt((globalThis as Global.Global)[RETRY_TIMES] as string, 10) ||
0;
+ const hasRetryTimes = retryTimes > 0;
const waitBeforeRetry =
Number.parseInt(
@@ -87,6 +104,8 @@ const _runTestsForDescribeBlock = async (
if (rng) {
describeBlock.children = shuffleArray(describeBlock.children, rng);
}
+ // Regroup concurrent tests as a single "sequential" unit
+ const children = regroupConcurrentChildren(describeBlock.children);
const rerunTest = async (test: Circus.TestEntry) => {
let numRetriesAvailable = retryTimes;
@@ -122,36 +141,45 @@ const _runTestsForDescribeBlock = async (
// If immediate retry is set, we retry the test immediately after the first run
await rerunTest(test);
};
+ const runTestWithContext = async (child: Circus.TestEntry) => {
+ const hasErrorsBeforeTestRun = child.errors.length > 0;
+ return testNameStorage.run(getTestID(child), async () => {
+ await _runTest(child, isSkipped);
+ await handleRetry(child, hasErrorsBeforeTestRun, hasRetryTimes);
+ });
+ };
- const concurrentTests = [];
-
- for (const child of describeBlock.children) {
+ for (const child of children) {
switch (child.type) {
case 'describeBlock': {
await _runTestsForDescribeBlock(child, rng);
break;
}
case 'test': {
- const hasErrorsBeforeTestRun = child.errors.length > 0;
- const hasRetryTimes = retryTimes > 0;
- if (child.concurrent) {
- concurrentTests.push(
- (child as ConcurrentTestEntry).done.then(() =>
- handleRetry(child, hasErrorsBeforeTestRun, hasRetryTimes),
- ),
- );
- } else {
- await _runTest(child, isSkipped);
- await handleRetry(child, hasErrorsBeforeTestRun, hasRetryTimes);
- }
+ await runTestWithContext(child);
+ break;
+ }
+ case 'test-concurrent': {
+ await dispatch({
+ describeBlock,
+ name: 'concurrent_tests_start',
+ tests: child.tests,
+ });
+ const concurrencyLimiter = pLimit(getState().maxConcurrency);
+ const tasks = child.tests.map(concurrentTest =>
+ concurrencyLimiter(() => runTestWithContext(concurrentTest)),
+ );
+ await Promise.all(tasks);
+ await dispatch({
+ describeBlock,
+ name: 'concurrent_tests_end',
+ tests: child.tests,
+ });
break;
}
}
}
- // wait for concurrent tests to finish
- await Promise.all(concurrentTests);
-
// Re-run failed tests n-times if configured
for (const test of deferredRetryTests) {
await rerunTest(test);
@@ -166,51 +194,6 @@ const _runTestsForDescribeBlock = async (
await dispatch({describeBlock, name: 'run_describe_finish'});
};
-function collectConcurrentTests(
- describeBlock: Circus.DescribeBlock,
-): Array {
- return describeBlock.children.flatMap(child => {
- switch (child.type) {
- case 'describeBlock':
- return collectConcurrentTests(child);
- case 'test':
- if (child.concurrent) {
- return [child as ConcurrentTestEntry];
- }
- return [];
- }
- });
-}
-
-function startTestsConcurrently(
- concurrentTests: Array,
- parentSkipped: boolean,
-) {
- const mutex = pLimit(getState().maxConcurrency);
- const testNameStorage = new AsyncLocalStorage();
- jestExpect.setState({
- currentConcurrentTestName: () => testNameStorage.getStore(),
- });
- for (const test of concurrentTests) {
- try {
- const promise = mutex(() =>
- testNameStorage.run(getTestID(test), () =>
- _runTest(test, parentSkipped),
- ),
- );
- // Avoid triggering the uncaught promise rejection handler in case the
- // test fails before being awaited on.
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- promise.catch(() => {});
- test.done = promise;
- } catch (error) {
- test.fn = () => {
- throw error;
- };
- }
- }
-}
-
const _runTest = async (
test: Circus.TestEntry,
parentSkipped: boolean,
diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json
index 86b12fe2ed09..8d9d684e81f8 100644
--- a/packages/jest-cli/package.json
+++ b/packages/jest-cli/package.json
@@ -1,7 +1,7 @@
{
"name": "jest-cli",
"description": "Delightful JavaScript Testing.",
- "version": "30.1.3",
+ "version": "30.2.0",
"main": "./build/index.js",
"types": "./build/index.d.ts",
"exports": {
diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json
index bfc666d30003..539e7a7675e7 100644
--- a/packages/jest-config/package.json
+++ b/packages/jest-config/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-config",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
@@ -61,6 +61,7 @@
"strip-json-comments": "^3.1.1"
},
"devDependencies": {
+ "@jest/test-utils": "workspace:*",
"@types/graceful-fs": "^4.1.9",
"@types/micromatch": "^4.0.9",
"@types/parse-json": "^4.0.2",
diff --git a/packages/jest-config/src/__tests__/readConfigFileAndSetRootDir.test.ts b/packages/jest-config/src/__tests__/readConfigFileAndSetRootDir.test.ts
index 1c049a94bd68..e83f3b7cdb02 100644
--- a/packages/jest-config/src/__tests__/readConfigFileAndSetRootDir.test.ts
+++ b/packages/jest-config/src/__tests__/readConfigFileAndSetRootDir.test.ts
@@ -9,6 +9,7 @@ import path from 'path';
import * as fs from 'graceful-fs';
import {requireOrImportModule} from 'jest-util';
import readConfigFileAndSetRootDir from '../readConfigFileAndSetRootDir';
+import {onNodeVersions} from '@jest/test-utils';
jest.mock('graceful-fs').mock('jest-util');
@@ -167,3 +168,23 @@ describe('readConfigFileAndSetRootDir', () => {
});
});
});
+
+onNodeVersions('^24', () => {
+ describe('TypeScript file', () => {
+ test('reaches into 2nd loadout by TS loader if specified in docblock', async () => {
+ jest
+ .mocked(requireOrImportModule)
+ .mockRejectedValueOnce(new Error('Module not found'));
+ jest.mocked(fs.readFileSync).mockReturnValue(`
+ /** @jest-config-loader tsx */
+ export { testTimeout: 1_000 }
+ `);
+ const rootDir = path.resolve('some', 'path', 'to');
+ await expect(
+ readConfigFileAndSetRootDir(path.join(rootDir, 'jest.config.ts')),
+ ).rejects.toThrow(
+ /Module not found\n.*'tsx' is not a valid TypeScript configuration loader./,
+ );
+ });
+ });
+});
diff --git a/packages/jest-config/src/__tests__/tsconfig.json b/packages/jest-config/src/__tests__/tsconfig.json
index dd1bca103251..d603a17f8dfe 100644
--- a/packages/jest-config/src/__tests__/tsconfig.json
+++ b/packages/jest-config/src/__tests__/tsconfig.json
@@ -1,5 +1,5 @@
{
"extends": "../../../../tsconfig.test.json",
"include": ["./**/*"],
- "references": [{"path": "../../"}]
+ "references": [{"path": "../../"}, {"path": "../../../test-utils"}]
}
diff --git a/packages/jest-config/src/readConfigFileAndSetRootDir.ts b/packages/jest-config/src/readConfigFileAndSetRootDir.ts
index f71d1af715ba..1648afa1843e 100644
--- a/packages/jest-config/src/readConfigFileAndSetRootDir.ts
+++ b/packages/jest-config/src/readConfigFileAndSetRootDir.ts
@@ -11,7 +11,7 @@ import * as fs from 'graceful-fs';
import parseJson from 'parse-json';
import stripJsonComments from 'strip-json-comments';
import type {Config} from '@jest/types';
-import {extract, parse} from 'jest-docblock';
+import {type Pragmas, extract, parse} from 'jest-docblock';
import {interopRequireDefault, requireOrImportModule} from 'jest-util';
import {
JEST_CONFIG_EXT_CTS,
@@ -47,10 +47,15 @@ export default async function readConfigFileAndSetRootDir(
configObject = await requireOrImportModule(configPath);
} catch (requireOrImportModuleError) {
if (!(requireOrImportModuleError instanceof SyntaxError)) {
- throw requireOrImportModuleError;
+ if (!hasTsLoaderExplicitlyConfigured(configPath)) {
+ throw requireOrImportModuleError;
+ }
}
try {
- // Likely ESM in a file interpreted as CJS, which means it needs to be
+ // There are various reasons of failed loadout of Jest config in Typescript:
+ // 1. User has specified a TypeScript loader in the docblock and
+ // desire non-native compilation (https://github.com/jestjs/jest/issues/15837)
+ // 2. Likely ESM in a file interpreted as CJS, which means it needs to be
// compiled. We ignore the error and try to load it with a loader.
configObject = await loadTSConfigFile(configPath);
} catch (loadTSConfigFileError) {
@@ -120,11 +125,22 @@ export default async function readConfigFileAndSetRootDir(
// Load the TypeScript configuration
let extraTSLoaderOptions: Record;
+const hasTsLoaderExplicitlyConfigured = (configPath: string): boolean => {
+ const docblockPragmas = loadDocblockPragmasInConfig(configPath);
+ const tsLoader = docblockPragmas['jest-config-loader'];
+ return !Array.isArray(tsLoader) && (tsLoader ?? '').trim() !== '';
+};
+
+const loadDocblockPragmasInConfig = (configPath: string): Pragmas => {
+ const docblockPragmas = parse(extract(fs.readFileSync(configPath, 'utf8')));
+ return docblockPragmas;
+};
+
const loadTSConfigFile = async (
configPath: string,
): Promise => {
// Get registered TypeScript compiler instance
- const docblockPragmas = parse(extract(fs.readFileSync(configPath, 'utf8')));
+ const docblockPragmas = loadDocblockPragmasInConfig(configPath);
const tsLoader = docblockPragmas['jest-config-loader'] || 'ts-node';
const docblockTSLoaderOptions = docblockPragmas['jest-config-loader-options'];
diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json
index 2d31b72e326b..c063333ec393 100644
--- a/packages/jest-console/package.json
+++ b/packages/jest-console/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/console",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-console/src/__tests__/CustomConsole.test.ts b/packages/jest-console/src/__tests__/CustomConsole.test.ts
index de9e934e8332..6f71cddeb858 100644
--- a/packages/jest-console/src/__tests__/CustomConsole.test.ts
+++ b/packages/jest-console/src/__tests__/CustomConsole.test.ts
@@ -79,7 +79,7 @@ describe('CustomConsole', () => {
expect(_stderr).toMatch('AssertionError');
expect(_stderr).toMatch(
// The message may differ across Node versions
- /(false == true)|(The expression evaluated to a falsy value:)/,
+ /(false == true)|(The expression evaluated to a falsy value)/,
);
});
diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json
index e07f0e8cac68..ef741723353a 100644
--- a/packages/jest-core/package.json
+++ b/packages/jest-core/package.json
@@ -1,7 +1,7 @@
{
"name": "@jest/core",
"description": "Delightful JavaScript Testing.",
- "version": "30.1.3",
+ "version": "30.2.0",
"main": "./build/index.js",
"types": "./build/index.d.ts",
"exports": {
diff --git a/packages/jest-core/src/TestScheduler.ts b/packages/jest-core/src/TestScheduler.ts
index 0b3fa990ddd4..9f92641c3228 100644
--- a/packages/jest-core/src/TestScheduler.ts
+++ b/packages/jest-core/src/TestScheduler.ts
@@ -41,6 +41,7 @@ import {
import {ErrorWithStack, invariant, requireOrImportModule} from 'jest-util';
import type {TestWatcher} from 'jest-watcher';
import ReporterDispatcher from './ReporterDispatcher';
+import runGlobalHook from './runGlobalHook';
import {shouldRunInBand} from './testSchedulerHelper';
export type ReporterConstructor = new (
@@ -150,7 +151,12 @@ class TestScheduler {
testResult,
aggregatedResults,
);
- return this._bailIfNeeded(testContexts, aggregatedResults, watcher);
+ return this._bailIfNeeded(
+ testContexts,
+ aggregatedResults,
+ watcher,
+ tests,
+ );
};
const onFailure = async (test: Test, error: SerializableError) => {
@@ -408,6 +414,7 @@ class TestScheduler {
testContexts: Set,
aggregatedResults: AggregatedResult,
watcher: TestWatcher,
+ allTests: Array,
): Promise {
if (
this._globalConfig.bail !== 0 &&
@@ -421,8 +428,17 @@ class TestScheduler {
try {
await this._dispatcher.onRunComplete(testContexts, aggregatedResults);
} finally {
- const exitCode = this._globalConfig.testFailureExitCode;
- exit(exitCode);
+ // Perform global teardown if client configures `bail`
+ if (allTests.length > 0) {
+ performance.mark('jest/globalTeardown:start');
+ await runGlobalHook({
+ allTests,
+ globalConfig: this._globalConfig,
+ moduleName: 'globalTeardown',
+ });
+ performance.mark('jest/globalTeardown:end');
+ exit(this._globalConfig.testFailureExitCode);
+ }
}
}
}
diff --git a/packages/jest-core/src/__tests__/TestScheduler.test.js b/packages/jest-core/src/__tests__/TestScheduler.test.js
index 6f8c3977aefe..11030572d774 100644
--- a/packages/jest-core/src/__tests__/TestScheduler.test.js
+++ b/packages/jest-core/src/__tests__/TestScheduler.test.js
@@ -18,6 +18,7 @@ import {makeGlobalConfig, makeProjectConfig} from '@jest/test-utils';
import * as transform from '@jest/transform';
import {createTestScheduler} from '../TestScheduler';
import * as testSchedulerHelper from '../testSchedulerHelper';
+import * as runGlobalHook from '../runGlobalHook';
jest
.mock('ci-info', () => ({GITHUB_ACTIONS: true}))
@@ -35,7 +36,8 @@ jest
__esModule: true,
...jest.requireActual('@jest/transform'),
};
- });
+ })
+ .mock('exit-x', () => ({__esModule: true, default: jest.fn()}));
const mockSerialRunner = {
isSerial: true,
runTests: jest.fn(),
@@ -53,10 +55,13 @@ jest.mock('jest-runner-parallel', () => jest.fn(() => mockParallelRunner), {
const spyShouldRunInBand = jest.spyOn(testSchedulerHelper, 'shouldRunInBand');
+const spyRunGlobalHook = jest.spyOn(runGlobalHook, 'default');
+
beforeEach(() => {
mockSerialRunner.runTests.mockClear();
mockParallelRunner.runTests.mockClear();
spyShouldRunInBand.mockClear();
+ spyRunGlobalHook.mockClear();
});
describe('reporters', () => {
@@ -449,6 +454,42 @@ test('should bail after `n` failures', async () => {
expect(setState).toHaveBeenCalledWith({interrupted: true});
});
+test('should bail after `n` failures and perform global teardown', async () => {
+ const scheduler = await createTestScheduler(
+ makeGlobalConfig({bail: 3}),
+ {},
+ {},
+ );
+ const test = {
+ context: {
+ config: makeProjectConfig({
+ moduleFileExtensions: ['.js'],
+ rootDir: './',
+ runner: 'jest-runner-serial',
+ transform: [],
+ }),
+ hasteFS: {
+ matchFiles: jest.fn(() => []),
+ },
+ },
+ path: './test/path.js',
+ };
+
+ const tests = [test];
+ const setState = jest.fn();
+ await scheduler.scheduleTests(tests, {
+ isInterrupted: jest.fn(),
+ isWatchMode: () => false,
+ setState,
+ });
+ await mockSerialRunner.runTests.mock.calls[0][3](test, {
+ numFailingTests: 3,
+ snapshot: {},
+ testResults: [{}],
+ });
+ expect(spyRunGlobalHook.mock.calls[0][0].moduleName).toBe('globalTeardown');
+});
+
test('should not bail if less than `n` failures', async () => {
const scheduler = await createTestScheduler(
makeGlobalConfig({bail: 2}),
diff --git a/packages/jest-create-cache-key-function/package.json b/packages/jest-create-cache-key-function/package.json
index 2ad0ce4c8e5f..442d6a2af7bc 100644
--- a/packages/jest-create-cache-key-function/package.json
+++ b/packages/jest-create-cache-key-function/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/create-cache-key-function",
- "version": "30.0.5",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-diff/package.json b/packages/jest-diff/package.json
index c34b35e23e28..846d375aac12 100644
--- a/packages/jest-diff/package.json
+++ b/packages/jest-diff/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-diff",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-docblock/package.json b/packages/jest-docblock/package.json
index 03065680eb74..cc11833d873f 100644
--- a/packages/jest-docblock/package.json
+++ b/packages/jest-docblock/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-docblock",
- "version": "30.0.1",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-docblock/src/index.ts b/packages/jest-docblock/src/index.ts
index 87928ccacfed..da5518f5f887 100644
--- a/packages/jest-docblock/src/index.ts
+++ b/packages/jest-docblock/src/index.ts
@@ -8,7 +8,7 @@
import {EOL} from 'os';
import detectNewline from 'detect-newline';
-type Pragmas = Record>;
+export type Pragmas = Record>;
const commentEndRe = /\*\/$/;
const commentStartRe = /^\/\*\*?/;
diff --git a/packages/jest-each/package.json b/packages/jest-each/package.json
index 843319ed90df..1068ea0baa97 100644
--- a/packages/jest-each/package.json
+++ b/packages/jest-each/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-each",
- "version": "30.1.0",
+ "version": "30.2.0",
"description": "Parameterised tests for Jest",
"main": "./build/index.js",
"types": "./build/index.d.ts",
diff --git a/packages/jest-environment-jsdom-abstract/package.json b/packages/jest-environment-jsdom-abstract/package.json
index 5a80fff99a9f..1dd90074dcc2 100644
--- a/packages/jest-environment-jsdom-abstract/package.json
+++ b/packages/jest-environment-jsdom-abstract/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/environment-jsdom-abstract",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
@@ -28,6 +28,7 @@
"jest-util": "workspace:*"
},
"devDependencies": {
+ "@jest/test-utils": "workspace:*",
"jsdom": "^26.1.0"
},
"peerDependencies": {
diff --git a/packages/jest-environment-jsdom-abstract/src/__tests__/index.test.ts b/packages/jest-environment-jsdom-abstract/src/__tests__/index.test.ts
new file mode 100644
index 000000000000..572379fdabe3
--- /dev/null
+++ b/packages/jest-environment-jsdom-abstract/src/__tests__/index.test.ts
@@ -0,0 +1,65 @@
+/**
+ * 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.
+ */
+
+import BaseJSDOMEnvironment from '..';
+import type {
+ EnvironmentContext,
+ JestEnvironmentConfig,
+} from '@jest/environment';
+import * as jsdomModule from 'jsdom';
+import {makeGlobalConfig, makeProjectConfig} from '@jest/test-utils';
+
+class CustomJSDOMEnvironment extends BaseJSDOMEnvironment {
+ constructor(
+ public config: JestEnvironmentConfig,
+ public context: EnvironmentContext,
+ ) {
+ super(config, context, jsdomModule);
+ }
+}
+
+describe('JSDomEnvironment abstract', () => {
+ it('should work with custom jsdom version <= 26', () => {
+ Object.defineProperty(jsdomModule.VirtualConsole.prototype, 'sendTo', {
+ value: jest.fn(),
+ writable: true,
+ });
+ Object.defineProperty(jsdomModule.VirtualConsole.prototype, 'forwardTo', {
+ value: undefined,
+ writable: true,
+ });
+ const env = new CustomJSDOMEnvironment(
+ {
+ globalConfig: makeGlobalConfig(),
+ projectConfig: makeProjectConfig(),
+ },
+ {console, docblockPragmas: {}, testPath: __filename},
+ );
+
+ expect(env.dom).toBeDefined();
+ });
+
+ it('should work with custom jsdom version >= 27', () => {
+ Object.defineProperty(jsdomModule.VirtualConsole.prototype, 'sendTo', {
+ value: undefined,
+ writable: true,
+ });
+ Object.defineProperty(jsdomModule.VirtualConsole.prototype, 'forwardTo', {
+ value: jest.fn(),
+ writable: true,
+ });
+ const env = new CustomJSDOMEnvironment(
+ {
+ globalConfig: makeGlobalConfig(),
+ projectConfig: makeProjectConfig(),
+ },
+ {console, docblockPragmas: {}, testPath: __filename},
+ );
+
+ expect(env.dom).toBeDefined();
+ });
+});
diff --git a/packages/jest-environment-jsdom-abstract/src/__tests__/tsconfig.json b/packages/jest-environment-jsdom-abstract/src/__tests__/tsconfig.json
new file mode 100644
index 000000000000..d603a17f8dfe
--- /dev/null
+++ b/packages/jest-environment-jsdom-abstract/src/__tests__/tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "extends": "../../../../tsconfig.test.json",
+ "include": ["./**/*"],
+ "references": [{"path": "../../"}, {"path": "../../../test-utils"}]
+}
diff --git a/packages/jest-environment-jsdom-abstract/src/index.ts b/packages/jest-environment-jsdom-abstract/src/index.ts
index 17164455c8d5..9d5ef98575e5 100644
--- a/packages/jest-environment-jsdom-abstract/src/index.ts
+++ b/packages/jest-environment-jsdom-abstract/src/index.ts
@@ -52,7 +52,26 @@ export default abstract class BaseJSDOMEnvironment
const {JSDOM, ResourceLoader, VirtualConsole} = jsdomModule;
const virtualConsole = new VirtualConsole();
- virtualConsole.sendTo(context.console, {omitJSDOMErrors: true});
+
+ if (
+ 'forwardTo' in virtualConsole &&
+ typeof virtualConsole.forwardTo === 'function'
+ ) {
+ // JSDOM 27+ uses `forwardTo`
+ virtualConsole.forwardTo(context.console);
+ } else if (
+ 'sendTo' in virtualConsole &&
+ typeof virtualConsole.sendTo === 'function'
+ ) {
+ // JSDOM 26 uses `sendTo`
+ virtualConsole.sendTo(context.console, {omitJSDOMErrors: true});
+ } else {
+ // Fallback for unexpected API changes
+ throw new TypeError(
+ 'Unable to forward JSDOM console output - neither sendTo nor forwardTo methods are available',
+ );
+ }
+
virtualConsole.on('jsdomError', error => {
context.console.error(error);
});
diff --git a/packages/jest-environment-jsdom/package.json b/packages/jest-environment-jsdom/package.json
index ed21351523a5..ea97231ff0fc 100644
--- a/packages/jest-environment-jsdom/package.json
+++ b/packages/jest-environment-jsdom/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-environment-jsdom",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-environment-node/package.json b/packages/jest-environment-node/package.json
index d5b36433454f..474afb2aa28b 100644
--- a/packages/jest-environment-node/package.json
+++ b/packages/jest-environment-node/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-environment-node",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-environment/package.json b/packages/jest-environment/package.json
index d564e4de81db..ed8d08e366ee 100644
--- a/packages/jest-environment/package.json
+++ b/packages/jest-environment/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/environment",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-expect/package.json b/packages/jest-expect/package.json
index 3792f3d47896..7ca95c4e3756 100644
--- a/packages/jest-expect/package.json
+++ b/packages/jest-expect/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/expect",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-fake-timers/package.json b/packages/jest-fake-timers/package.json
index 52e0ceb32f99..0d6436e31f43 100644
--- a/packages/jest-fake-timers/package.json
+++ b/packages/jest-fake-timers/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/fake-timers",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-globals/package.json b/packages/jest-globals/package.json
index 019d73aa5b32..705750787eda 100644
--- a/packages/jest-globals/package.json
+++ b/packages/jest-globals/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/globals",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json
index bf06891f18b4..08fc20872a51 100644
--- a/packages/jest-haste-map/package.json
+++ b/packages/jest-haste-map/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-haste-map",
- "version": "30.1.0",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-jasmine2/package.json b/packages/jest-jasmine2/package.json
index e76c448a9720..13724d915ff3 100644
--- a/packages/jest-jasmine2/package.json
+++ b/packages/jest-jasmine2/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-jasmine2",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json
index 41717d998469..1cc1a2f1bcc7 100644
--- a/packages/jest-leak-detector/package.json
+++ b/packages/jest-leak-detector/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-leak-detector",
- "version": "30.1.0",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-matcher-utils/package.json b/packages/jest-matcher-utils/package.json
index 6343998b0495..38f829da9b0b 100644
--- a/packages/jest-matcher-utils/package.json
+++ b/packages/jest-matcher-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "jest-matcher-utils",
"description": "A set of utility functions for expect and related packages",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json
index b4b7aff1bda7..01f02767e0b2 100644
--- a/packages/jest-message-util/package.json
+++ b/packages/jest-message-util/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-message-util",
- "version": "30.1.0",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-mock/package.json b/packages/jest-mock/package.json
index 7d2e3d9bb1cb..e94281cafac0 100644
--- a/packages/jest-mock/package.json
+++ b/packages/jest-mock/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-mock",
- "version": "30.0.5",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-phabricator/package.json b/packages/jest-phabricator/package.json
index 7f7e171f7a77..cd29b9b53562 100644
--- a/packages/jest-phabricator/package.json
+++ b/packages/jest-phabricator/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-phabricator",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json
index 1e461a2cc2b3..03541540f434 100644
--- a/packages/jest-reporters/package.json
+++ b/packages/jest-reporters/package.json
@@ -1,7 +1,7 @@
{
"name": "@jest/reporters",
"description": "Jest's reporters",
- "version": "30.1.3",
+ "version": "30.2.0",
"main": "./build/index.js",
"types": "./build/index.d.ts",
"exports": {
diff --git a/packages/jest-resolve-dependencies/package.json b/packages/jest-resolve-dependencies/package.json
index 2490882915c5..b0c5e1b30c6b 100644
--- a/packages/jest-resolve-dependencies/package.json
+++ b/packages/jest-resolve-dependencies/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-resolve-dependencies",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json
index ecfa18163934..cd26d192d758 100644
--- a/packages/jest-resolve/package.json
+++ b/packages/jest-resolve/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-resolve",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json
index ce30c94ed2c2..0676b0452ee9 100644
--- a/packages/jest-runner/package.json
+++ b/packages/jest-runner/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-runner",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json
index eae2a6a8b89c..7aa064cb59d4 100644
--- a/packages/jest-runtime/package.json
+++ b/packages/jest-runtime/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-runtime",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-snapshot-utils/package.json b/packages/jest-snapshot-utils/package.json
index e95a1b98762f..fdbee8ceb73d 100644
--- a/packages/jest-snapshot-utils/package.json
+++ b/packages/jest-snapshot-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/snapshot-utils",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-snapshot-utils/src/__tests__/utils.test.ts b/packages/jest-snapshot-utils/src/__tests__/utils.test.ts
index b3712ee17fc9..4c3b7c4d3090 100644
--- a/packages/jest-snapshot-utils/src/__tests__/utils.test.ts
+++ b/packages/jest-snapshot-utils/src/__tests__/utils.test.ts
@@ -178,8 +178,8 @@ test('getSnapshotData() throws for deprecated snapshot guide link', () => {
`${chalk.red(
`${chalk.red.bold(
'Outdated guide link',
- )}: The snapshot guide link is outdated.` +
- 'Please update all snapshots while upgrading of Jest',
+ )}: The snapshot guide link at the top of this snapshot is outdated. ` +
+ 'Please update all snapshots during this upgrade of Jest.',
)}\n\nExpected: ${SNAPSHOT_GUIDE_LINK}\n` +
`Received: ${deprecatedGuideLink}`,
);
diff --git a/packages/jest-snapshot-utils/src/utils.ts b/packages/jest-snapshot-utils/src/utils.ts
index ad1c0f18db34..9fab6d9c6e4a 100644
--- a/packages/jest-snapshot-utils/src/utils.ts
+++ b/packages/jest-snapshot-utils/src/utils.ts
@@ -79,8 +79,8 @@ const validateSnapshotHeader = (snapshotContents: string) => {
chalk.red(
`${chalk.red.bold(
'Outdated guide link',
- )}: The snapshot guide link is outdated.` +
- 'Please update all snapshots while upgrading of Jest',
+ )}: The snapshot guide link at the top of this snapshot is outdated. ` +
+ 'Please update all snapshots during this upgrade of Jest.',
) +
'\n\n' +
`Expected: ${SNAPSHOT_GUIDE_LINK}\n` +
diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json
index 4edb78c22ecf..06a06b6b66cc 100644
--- a/packages/jest-snapshot/package.json
+++ b/packages/jest-snapshot/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-snapshot",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
@@ -29,7 +29,7 @@
"@jest/snapshot-utils": "workspace:*",
"@jest/transform": "workspace:*",
"@jest/types": "workspace:*",
- "babel-preset-current-node-syntax": "^1.1.0",
+ "babel-preset-current-node-syntax": "^1.2.0",
"chalk": "^4.1.2",
"expect": "workspace:*",
"graceful-fs": "^4.2.11",
diff --git a/packages/jest-test-result/package.json b/packages/jest-test-result/package.json
index 9b46793bdfac..1e636937977c 100644
--- a/packages/jest-test-result/package.json
+++ b/packages/jest-test-result/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/test-result",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json
index cc30623cde75..66b73c9bb176 100644
--- a/packages/jest-test-sequencer/package.json
+++ b/packages/jest-test-sequencer/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/test-sequencer",
- "version": "30.1.3",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json
index 95e148810e41..7e42959cee6e 100644
--- a/packages/jest-transform/package.json
+++ b/packages/jest-transform/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/transform",
- "version": "30.1.2",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
@@ -22,7 +22,7 @@
"@babel/core": "^7.27.4",
"@jest/types": "workspace:*",
"@jridgewell/trace-mapping": "^0.3.25",
- "babel-plugin-istanbul": "^7.0.0",
+ "babel-plugin-istanbul": "^7.0.1",
"chalk": "^4.1.2",
"convert-source-map": "^2.0.0",
"fast-json-stable-stringify": "^2.1.0",
diff --git a/packages/jest-types/package.json b/packages/jest-types/package.json
index 3c42b84add20..4835c90e0f4c 100644
--- a/packages/jest-types/package.json
+++ b/packages/jest-types/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/types",
- "version": "30.0.5",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-types/src/Circus.ts b/packages/jest-types/src/Circus.ts
index 46c86aef9eec..f796e118e237 100644
--- a/packages/jest-types/src/Circus.ts
+++ b/packages/jest-types/src/Circus.ts
@@ -160,6 +160,16 @@ export type AsyncEvent =
name: 'test_done';
test: TestEntry;
}
+ | {
+ name: 'concurrent_tests_start';
+ tests: Array;
+ describeBlock: DescribeBlock;
+ }
+ | {
+ name: 'concurrent_tests_end';
+ tests: Array;
+ describeBlock: DescribeBlock;
+ }
| {
name: 'run_describe_start';
describeBlock: DescribeBlock;
diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json
index a85c9bb76f43..070a43251d34 100644
--- a/packages/jest-util/package.json
+++ b/packages/jest-util/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-util",
- "version": "30.0.5",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-validate/package.json b/packages/jest-validate/package.json
index d3bf10169899..54ad88e0506f 100644
--- a/packages/jest-validate/package.json
+++ b/packages/jest-validate/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-validate",
- "version": "30.1.0",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json
index f00fdb707923..2d15c4423672 100644
--- a/packages/jest-watcher/package.json
+++ b/packages/jest-watcher/package.json
@@ -1,7 +1,7 @@
{
"name": "jest-watcher",
"description": "Delightful JavaScript Testing.",
- "version": "30.1.3",
+ "version": "30.2.0",
"main": "./build/index.js",
"types": "./build/index.d.ts",
"exports": {
diff --git a/packages/jest-worker/package.json b/packages/jest-worker/package.json
index 874f97f35b82..6905b349bcf3 100644
--- a/packages/jest-worker/package.json
+++ b/packages/jest-worker/package.json
@@ -1,6 +1,6 @@
{
"name": "jest-worker",
- "version": "30.1.0",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/jest/package.json b/packages/jest/package.json
index 800d8c1cc3a0..e34932ae1c4e 100644
--- a/packages/jest/package.json
+++ b/packages/jest/package.json
@@ -1,7 +1,7 @@
{
"name": "jest",
"description": "Delightful JavaScript Testing.",
- "version": "30.1.3",
+ "version": "30.2.0",
"main": "./build/index.js",
"types": "./build/index.d.ts",
"exports": {
diff --git a/packages/pretty-format/package.json b/packages/pretty-format/package.json
index 10f7898a519c..22341c8fdd6e 100644
--- a/packages/pretty-format/package.json
+++ b/packages/pretty-format/package.json
@@ -1,6 +1,6 @@
{
"name": "pretty-format",
- "version": "30.0.5",
+ "version": "30.2.0",
"repository": {
"type": "git",
"url": "https://github.com/jestjs/jest.git",
diff --git a/packages/pretty-format/src/__tests__/prettyFormat.test.ts b/packages/pretty-format/src/__tests__/prettyFormat.test.ts
index 22f9119341ee..8e0430cabe35 100644
--- a/packages/pretty-format/src/__tests__/prettyFormat.test.ts
+++ b/packages/pretty-format/src/__tests__/prettyFormat.test.ts
@@ -482,6 +482,11 @@ describe('prettyFormat()', () => {
expect(prettyFormat(val)).toBe('WeakSet {}');
});
+ it('prints a Promise', () => {
+ const val = Promise.resolve();
+ expect(prettyFormat(val)).toBe('Promise {}');
+ });
+
it('prints deeply nested objects', () => {
const val = {prop: {prop: {prop: 'value'}}};
expect(prettyFormat(val)).toBe(
diff --git a/packages/pretty-format/src/index.ts b/packages/pretty-format/src/index.ts
index 0a7dd6084272..f7469a20d55c 100644
--- a/packages/pretty-format/src/index.ts
+++ b/packages/pretty-format/src/index.ts
@@ -158,6 +158,9 @@ function printBasicValue(
const toStringed = toString.call(val);
+ if (toStringed === '[object Promise]') {
+ return 'Promise {}';
+ }
if (toStringed === '[object WeakMap]') {
return 'WeakMap {}';
}
diff --git a/packages/test-globals/package.json b/packages/test-globals/package.json
index a6fa9dffeda1..897b2753d6b0 100644
--- a/packages/test-globals/package.json
+++ b/packages/test-globals/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/test-globals",
- "version": "30.1.2",
+ "version": "30.2.0",
"private": true,
"main": "./build/index.js",
"types": "./build/index.d.ts",
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index ef920941b4f3..4dfe58d1acf9 100644
--- a/packages/test-utils/package.json
+++ b/packages/test-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@jest/test-utils",
- "version": "30.1.2",
+ "version": "30.2.0",
"private": true,
"main": "./build/index.js",
"types": "./build/index.d.ts",
diff --git a/website/static/img/content/failedSnapshotTest.png b/website/static/img/content/failedSnapshotTest.png
index edf5d6bebb0b..09653e48f385 100644
Binary files a/website/static/img/content/failedSnapshotTest.png and b/website/static/img/content/failedSnapshotTest.png differ
diff --git a/yarn.lock b/yarn.lock
index e2c6694fb4c5..345126a2d7a4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -363,7 +363,66 @@ __metadata:
languageName: node
linkType: hard
-"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.8.3":
+"@babel-8/core@npm:@babel/core@8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/core@npm:8.0.0-beta.1"
+ dependencies:
+ "@ampproject/remapping": "npm:^2.2.0"
+ "@babel/code-frame": "npm:^8.0.0-beta.1"
+ "@babel/generator": "npm:^8.0.0-beta.1"
+ "@babel/helper-compilation-targets": "npm:^8.0.0-beta.1"
+ "@babel/helpers": "npm:^8.0.0-beta.1"
+ "@babel/parser": "npm:^8.0.0-beta.1"
+ "@babel/template": "npm:^8.0.0-beta.1"
+ "@babel/traverse": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ "@types/gensync": "npm:^1.0.0"
+ convert-source-map: "npm:^2.0.0"
+ debug: "npm:^4.1.0"
+ gensync: "npm:^1.0.0-beta.2"
+ json5: "npm:^2.2.3"
+ semver: "npm:^7.3.4"
+ peerDependencies:
+ "@babel/preset-typescript": ^7.21.4 || ^8.0.0-0
+ peerDependenciesMeta:
+ "@babel/preset-typescript":
+ optional: true
+ checksum: 10/c486f9eeedf92903dcf73b68e5589f8086a01c46780688fad47a090e0b015908b01f8a507804bb6a32b87cd48ae3cc664cdcb12f7ee8f31e8b2dc40d87b1da44
+ languageName: node
+ linkType: hard
+
+"@babel-8/preset-react@npm:@babel/preset-react@8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/preset-react@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ "@babel/helper-validator-option": "npm:^8.0.0-beta.1"
+ "@babel/plugin-transform-react-display-name": "npm:^8.0.0-beta.1"
+ "@babel/plugin-transform-react-jsx": "npm:^8.0.0-beta.1"
+ "@babel/plugin-transform-react-jsx-development": "npm:^8.0.0-beta.1"
+ "@babel/plugin-transform-react-pure-annotations": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/53cabfd5c8b96e77438b0270ebf40c6a33626da888ddbd2969dd6348408dce8e35c42d793e807da68eef815e485daaf5d0a1587108f6203c680bcf524452fd2c
+ languageName: node
+ linkType: hard
+
+"@babel-8/preset-typescript@npm:@babel/preset-typescript@8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/preset-typescript@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ "@babel/helper-validator-option": "npm:^8.0.0-beta.1"
+ "@babel/plugin-syntax-jsx": "npm:^8.0.0-beta.1"
+ "@babel/plugin-transform-modules-commonjs": "npm:^8.0.0-beta.1"
+ "@babel/plugin-transform-typescript": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/4fbca261c45acc43cc07ab81b09acd10c161d75d260066b5f41859a20245453340aac25b35ac4fadede8f8fcfd42acc2052362347ade59bf9c831c89448a5a78
+ languageName: node
+ linkType: hard
+
+"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.8.3":
version: 7.27.1
resolution: "@babel/code-frame@npm:7.27.1"
dependencies:
@@ -374,6 +433,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/code-frame@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/code-frame@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-validator-identifier": "npm:^8.0.0-beta.1"
+ js-tokens: "npm:^8.0.0"
+ picocolors: "npm:^1.1.1"
+ checksum: 10/3d60a5514b6dce15332c5b5256b609fdfc0c5bd205147a6c97e1d683c53fdaf27a506f7207cc19aa80d750119398abc851886bb413e5e3bee225c048946434ca
+ languageName: node
+ linkType: hard
+
"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2":
version: 7.27.2
resolution: "@babel/compat-data@npm:7.27.2"
@@ -381,7 +451,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/core@npm:^7.13.16, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.2, @babel/core@npm:^7.25.9, @babel/core@npm:^7.27.4":
+"@babel/compat-data@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/compat-data@npm:8.0.0-beta.1"
+ checksum: 10/10d5bae7048cfdcd6914412a71ffd406d08001405f9da5b302009e4272913d61458609dcfb1bb2becff81010c6aa08bc3b1e5db35863847fb4b8c29a8fb776ef
+ languageName: node
+ linkType: hard
+
+"@babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.2, @babel/core@npm:^7.25.9, @babel/core@npm:^7.27.4":
version: 7.27.4
resolution: "@babel/core@npm:7.27.4"
dependencies:
@@ -417,6 +494,19 @@ __metadata:
languageName: node
linkType: hard
+"@babel/generator@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/generator@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/parser": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ "@jridgewell/gen-mapping": "npm:^0.3.12"
+ "@jridgewell/trace-mapping": "npm:^0.3.28"
+ jsesc: "npm:^3.0.2"
+ checksum: 10/ca377af327d996f31b86639241414b0cb96cc3c41de698a998dcd64a0bbb14297afc68bfe106ef60465e2e29c33491b180c6ef3a325bd4ca7ee1c7fd442bee75
+ languageName: node
+ linkType: hard
+
"@babel/helper-annotate-as-pure@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-annotate-as-pure@npm:7.27.1"
@@ -426,6 +516,15 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-annotate-as-pure@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-annotate-as-pure@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/types": "npm:^8.0.0-beta.1"
+ checksum: 10/d200ef2ad21d39d692e1e5e84e9158505d4b902a7e721c7ac6875b2125bd9ea1356a89e244fd44c83d2292c358b8b3053dc1d060f2e59d5a475535ded1dfaebe
+ languageName: node
+ linkType: hard
+
"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2":
version: 7.27.2
resolution: "@babel/helper-compilation-targets@npm:7.27.2"
@@ -439,7 +538,20 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1":
+"@babel/helper-compilation-targets@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-compilation-targets@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/compat-data": "npm:^8.0.0-beta.1"
+ "@babel/helper-validator-option": "npm:^8.0.0-beta.1"
+ browserslist: "npm:^4.24.0"
+ lru-cache: "npm:^7.14.1"
+ semver: "npm:^7.3.4"
+ checksum: 10/abc86605e31ba07ee6eecc592b47d6569a0658507bdd60a435a0f1264e8b2af43d27e04f1699e87ada800e04bb716d2503800d7f61f05765f440db694bf1140a
+ languageName: node
+ linkType: hard
+
+"@babel/helper-create-class-features-plugin@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-create-class-features-plugin@npm:7.27.1"
dependencies:
@@ -456,6 +568,23 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-create-class-features-plugin@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-create-class-features-plugin@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-annotate-as-pure": "npm:^8.0.0-beta.1"
+ "@babel/helper-member-expression-to-functions": "npm:^8.0.0-beta.1"
+ "@babel/helper-optimise-call-expression": "npm:^8.0.0-beta.1"
+ "@babel/helper-replace-supers": "npm:^8.0.0-beta.1"
+ "@babel/helper-skip-transparent-expression-wrappers": "npm:^8.0.0-beta.1"
+ "@babel/traverse": "npm:^8.0.0-beta.1"
+ semver: "npm:^7.3.4"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/0b9aa2e8c52ae4141e9fa179e887daaa2dc2c8bb9677e6ba3b678f4bad08556e0ce58816c2704a6e74c77e23e12ab39f18f2dc5975b76037002c1585375cb8cf
+ languageName: node
+ linkType: hard
+
"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1"
@@ -484,6 +613,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-globals@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-globals@npm:8.0.0-beta.1"
+ checksum: 10/414e0358f1d74b177c5031378b655be40aa0b4f1b58ac990e1bf11b3cdfec461827104ff83bdc604309b06fdda972dac97b0ba2cd27d39beb17e85847f5b6b7b
+ languageName: node
+ linkType: hard
+
"@babel/helper-member-expression-to-functions@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1"
@@ -494,6 +630,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-member-expression-to-functions@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-member-expression-to-functions@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/traverse": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ checksum: 10/523897dd0bf91dbeca9cedeca04d4e3f82478cb73cb797412cfd407e7d06693d414b1e99c9da8bc084b1191f6cc71b86f8f039aa448ca7ea0bc81661f1054f2c
+ languageName: node
+ linkType: hard
+
"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-module-imports@npm:7.27.1"
@@ -504,6 +650,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-module-imports@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-module-imports@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/traverse": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ checksum: 10/7ce7a80ab8cd35c015fc3880118ab4402aa6d26b87fe8cae2226eddd25c13fe34603485ea1ba7dda0bd85f0b23e1bc265c1cdaaba85f5dfcda31fda3c300e74d
+ languageName: node
+ linkType: hard
+
"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.27.3":
version: 7.27.3
resolution: "@babel/helper-module-transforms@npm:7.27.3"
@@ -517,6 +673,19 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-module-transforms@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-module-transforms@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-module-imports": "npm:^8.0.0-beta.1"
+ "@babel/helper-validator-identifier": "npm:^8.0.0-beta.1"
+ "@babel/traverse": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/9d24e9e7af9ef42b05c7dd00625aad929637630a6628fe5e5a3f91c1f3a33a8ff901c78e216b7963ec87c462eb3abfc610d7695348fd4c23996f8adda3ae8005
+ languageName: node
+ linkType: hard
+
"@babel/helper-optimise-call-expression@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-optimise-call-expression@npm:7.27.1"
@@ -526,13 +695,31 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0":
+"@babel/helper-optimise-call-expression@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-optimise-call-expression@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/types": "npm:^8.0.0-beta.1"
+ checksum: 10/1ce45306f1335ca5f1e78d2b19ae74ddc341c264664381b9df04e0a0b965caa10388ccaabb8707b75fab5694b07ba2fff0632220109e6c973f9e4b9ec818e28e
+ languageName: node
+ linkType: hard
+
+"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0":
version: 7.27.1
resolution: "@babel/helper-plugin-utils@npm:7.27.1"
checksum: 10/96136c2428888e620e2ec493c25888f9ceb4a21099dcf3dd4508ea64b58cdedbd5a9fb6c7b352546de84d6c24edafe482318646932a22c449ebd16d16c22d864
languageName: node
linkType: hard
+"@babel/helper-plugin-utils@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-plugin-utils@npm:8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/66aee91a5fe32adf8cc39bb47bcceda2fc9893839bb891a8c502916f1aafd5350be8c08d2313abffb43f9c9bc94ed25b65c07e6f586dbd26a9bb829d4ebbec54
+ languageName: node
+ linkType: hard
+
"@babel/helper-remap-async-to-generator@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1"
@@ -559,7 +746,20 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1":
+"@babel/helper-replace-supers@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-replace-supers@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-member-expression-to-functions": "npm:^8.0.0-beta.1"
+ "@babel/helper-optimise-call-expression": "npm:^8.0.0-beta.1"
+ "@babel/traverse": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/a3b5b33322ef1299bc1e65e2718f5762753f1d611c77d88dc219bb3bf2b900b44ec047f6abc6873aabbc1df7f9b0e1c40d4d88ec4e38ba7d0233d6d76ed9e717
+ languageName: node
+ linkType: hard
+
+"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1"
dependencies:
@@ -569,6 +769,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-skip-transparent-expression-wrappers@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/traverse": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ checksum: 10/1af15f949a93205fd3b7c19ad3fa0d61a9261d7cfdd605129f1569adf8bdb9dca0b0b5547f40fa5c03841c2a38b5b7de01b0a8632f889014495a3867533b7c8d
+ languageName: node
+ linkType: hard
+
"@babel/helper-string-parser@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-string-parser@npm:7.27.1"
@@ -576,6 +786,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-string-parser@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-string-parser@npm:8.0.0-beta.1"
+ checksum: 10/73f4d84ff62197e8e83ed493c475771ad44b43f0c86d29317b19188a5d3f635d0b6d22d44d52a701d4d1a0c600d8921bd199af71110321c5bf2ff7d543067d84
+ languageName: node
+ linkType: hard
+
"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-validator-identifier@npm:7.27.1"
@@ -583,6 +800,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-validator-identifier@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-validator-identifier@npm:8.0.0-beta.1"
+ checksum: 10/03764d83050e638a0f609512d676048e6474601c5dc43ab341ca3a88b7f47bcd83e75f448f6d969a5a560a9a32dc8d8143aca1d3905d01d642b9f0b6a419f6b0
+ languageName: node
+ linkType: hard
+
"@babel/helper-validator-option@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-validator-option@npm:7.27.1"
@@ -590,6 +814,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-validator-option@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helper-validator-option@npm:8.0.0-beta.1"
+ checksum: 10/bd1119a305d15dabe6a10689113163cfbfcba7651f5bcf7e44d29ebec32d320c1512268d8011cbfc23c3d5d28084894bfc5a2aab67e29e096b3d7cb2f957f8f8
+ languageName: node
+ linkType: hard
+
"@babel/helper-wrap-function@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-wrap-function@npm:7.27.1"
@@ -611,7 +842,17 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.4, @babel/parser@npm:^7.27.5":
+"@babel/helpers@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/helpers@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/template": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ checksum: 10/99d88bdb97a5dc8ab4aa8884b72afbbe1566d57bb0c09fb078013b509a5702e7cb112efd390e51834b03a4f1dee9389663e72c58c542f53fb6b0bd5775127904
+ languageName: node
+ linkType: hard
+
+"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.4, @babel/parser@npm:^7.27.5":
version: 7.27.5
resolution: "@babel/parser@npm:7.27.5"
dependencies:
@@ -622,6 +863,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/parser@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/parser@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/types": "npm:^8.0.0-beta.1"
+ bin:
+ parser: ./bin/babel-parser.js
+ checksum: 10/35863d2c3d2c2806bfce87c212299ff09ca72e96f445e69c49a9f6dc205ee3a61805e7a9a071b25d0fc1c26b7b3f63b45dc3080caee0b0847cce11695f1428f6
+ languageName: node
+ linkType: hard
+
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1"
@@ -681,18 +933,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-proposal-class-properties@npm:^7.13.0":
- version: 7.18.6
- resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6"
- dependencies:
- "@babel/helper-create-class-features-plugin": "npm:^7.18.6"
- "@babel/helper-plugin-utils": "npm:^7.18.6"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10/49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422
- languageName: node
- linkType: hard
-
"@babel/plugin-proposal-decorators@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-proposal-decorators@npm:7.27.1"
@@ -717,31 +957,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8":
- version: 7.18.6
- resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.18.6"
- "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10/949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d
- languageName: node
- linkType: hard
-
-"@babel/plugin-proposal-optional-chaining@npm:^7.13.12":
- version: 7.21.0
- resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.20.2"
- "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0"
- "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10/522cd133aff5c94c0ef36ff83c64f03deee183815da68b65b6950e81972ace3b514e032df07ea76d0f9ec8cc7a49578092907adfa17fccb4612117557c04a882
- languageName: node
- linkType: hard
-
"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2":
version: 7.21.0-placeholder-for-preset-env.2
resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2"
@@ -894,6 +1109,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-syntax-jsx@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/plugin-syntax-jsx@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/208489f482b3420b8e1e39092fe4ee0f697cb7704c4602b2e95a507b7bb6fb02b205dc42c20b658a84221f33d50957fefa818cca2a7c096a124cf368ac77832d
+ languageName: node
+ linkType: hard
+
"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4":
version: 7.10.4
resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4"
@@ -993,6 +1219,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-syntax-typescript@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/plugin-syntax-typescript@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/038b3950561c71daf5eab6fa47c3cbf6e373dc587aadb7805290287141c138826ed166136cf646d2e11c2166b8d4eeefc04ee11fa13192db54dd435606f9011f
+ languageName: node
+ linkType: hard
+
"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6":
version: 7.18.6
resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6"
@@ -1288,7 +1525,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1":
+"@babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1"
dependencies:
@@ -1300,6 +1537,18 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-transform-modules-commonjs@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/plugin-transform-modules-commonjs@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-module-transforms": "npm:^8.0.0-beta.1"
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/1906ce306fd57047503a7dcb728cd55b465c71b2a383b2f0503073a5063673716ba415b7576cc5bf280b880149588b4ec91ed76910d6cd4194d3d3f2294a125c
+ languageName: node
+ linkType: hard
+
"@babel/plugin-transform-modules-systemjs@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1"
@@ -1489,6 +1738,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-transform-react-display-name@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/plugin-transform-react-display-name@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/43b3004a2a90d0d63f145e5f7d31d751c0208bb9eb75b16b611f53f6b2fe48f6ef343fd6787d1668147dda75224ad07e9d5e869b9d104ea1e8b805e5f2625a48
+ languageName: node
+ linkType: hard
+
"@babel/plugin-transform-react-jsx-development@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-react-jsx-development@npm:7.27.1"
@@ -1500,6 +1760,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-transform-react-jsx-development@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/plugin-transform-react-jsx-development@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/plugin-transform-react-jsx": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/09053e6319af5d3a1f231ff8705a590b26a70a3f57b516dc0fa6f2199f2bc220244218270a3ac43441d1a64e0d6bba1023f8fd57843e164780b5093a24b46f3c
+ languageName: node
+ linkType: hard
+
"@babel/plugin-transform-react-jsx-self@npm:^7.24.7":
version: 7.27.1
resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1"
@@ -1537,6 +1808,21 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-transform-react-jsx@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/plugin-transform-react-jsx@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-annotate-as-pure": "npm:^8.0.0-beta.1"
+ "@babel/helper-module-imports": "npm:^8.0.0-beta.1"
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ "@babel/plugin-syntax-jsx": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/8cca4a4d0f9cee7f30751fe125bf32e2d8c794d6a7c1f92dd209877757540ca03f99e604ec92731382afc04b0f50a6d9e763246d8822f07be746029d28aa7cff
+ languageName: node
+ linkType: hard
+
"@babel/plugin-transform-react-pure-annotations@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.27.1"
@@ -1549,6 +1835,18 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-transform-react-pure-annotations@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/plugin-transform-react-pure-annotations@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-annotate-as-pure": "npm:^8.0.0-beta.1"
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/cfe1a8a1eeca765ab3f852b3d45753dea284657f45ad49115021b11200abdfcff915dd735f22e3e33907eda0e1dcb0b904c883d44525a669d68d4fed460a6dd5
+ languageName: node
+ linkType: hard
+
"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-regenerator@npm:7.27.1"
@@ -1670,6 +1968,21 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-transform-typescript@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/plugin-transform-typescript@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-annotate-as-pure": "npm:^8.0.0-beta.1"
+ "@babel/helper-create-class-features-plugin": "npm:^8.0.0-beta.1"
+ "@babel/helper-plugin-utils": "npm:^8.0.0-beta.1"
+ "@babel/helper-skip-transparent-expression-wrappers": "npm:^8.0.0-beta.1"
+ "@babel/plugin-syntax-typescript": "npm:^8.0.0-beta.1"
+ peerDependencies:
+ "@babel/core": ^8.0.0-beta.1
+ checksum: 10/5d818fe5ee87bb00ef12d86dcf84cb8c05dc6051b0e4f416cc38e0a148e9b03fe64e35d8c67f107e12bf0906bf23b5e668b0b2f008ec66adb909bcea7278d41b
+ languageName: node
+ linkType: hard
+
"@babel/plugin-transform-unicode-escapes@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1"
@@ -1796,7 +2109,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.27.1":
+"@babel/preset-flow@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/preset-flow@npm:7.27.1"
dependencies:
@@ -1838,7 +2151,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.25.9, @babel/preset-typescript@npm:^7.27.1":
+"@babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.25.9, @babel/preset-typescript@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/preset-typescript@npm:7.27.1"
dependencies:
@@ -1853,7 +2166,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/register@npm:^7.13.16, @babel/register@npm:^7.27.1":
+"@babel/register@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/register@npm:7.27.1"
dependencies:
@@ -1895,6 +2208,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/template@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/template@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/code-frame": "npm:^8.0.0-beta.1"
+ "@babel/parser": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ checksum: 10/ac267409100661293088563fc5eb18a033acabc66babaa441b2e5c6d85db9b880d0ede8943ced3eddc4353b31dba2911f0c1cb15cd30fbf0d4b94fd1406825c9
+ languageName: node
+ linkType: hard
+
"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3":
version: 7.27.1
resolution: "@babel/traverse@npm:7.27.1"
@@ -1925,6 +2249,21 @@ __metadata:
languageName: node
linkType: hard
+"@babel/traverse@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/traverse@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/code-frame": "npm:^8.0.0-beta.1"
+ "@babel/generator": "npm:^8.0.0-beta.1"
+ "@babel/helper-globals": "npm:^8.0.0-beta.1"
+ "@babel/parser": "npm:^8.0.0-beta.1"
+ "@babel/template": "npm:^8.0.0-beta.1"
+ "@babel/types": "npm:^8.0.0-beta.1"
+ debug: "npm:^4.3.1"
+ checksum: 10/8a2ba75ae46ab97a88ba54cf235c2c828cc165191cd680501ad378497d6d4fe93cd7d99dfdfea49cca6617fbc34dae8525392dbc2a42b1f4dcffb0f6602292d0
+ languageName: node
+ linkType: hard
+
"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.25.2, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.4.4":
version: 7.27.3
resolution: "@babel/types@npm:7.27.3"
@@ -1935,6 +2274,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/types@npm:^8.0.0-beta.1":
+ version: 8.0.0-beta.1
+ resolution: "@babel/types@npm:8.0.0-beta.1"
+ dependencies:
+ "@babel/helper-string-parser": "npm:^8.0.0-beta.1"
+ "@babel/helper-validator-identifier": "npm:^8.0.0-beta.1"
+ checksum: 10/387992998c93cec8f89218af092ec54ea9efdc349b20f1b1b4a4c8f78411f26d307b899688e893a3c90ec8aec2bffe53aec2bf8ba90be75d75839c4856c71dcb
+ languageName: node
+ linkType: hard
+
"@bcoe/v8-coverage@npm:^0.2.3":
version: 0.2.3
resolution: "@bcoe/v8-coverage@npm:0.2.3"
@@ -3744,20 +4093,6 @@ __metadata:
languageName: node
linkType: hard
-"@jest/console@npm:^29.7.0":
- version: 29.7.0
- resolution: "@jest/console@npm:29.7.0"
- dependencies:
- "@jest/types": "npm:^29.6.3"
- "@types/node": "npm:*"
- chalk: "npm:^4.0.0"
- jest-message-util: "npm:^29.7.0"
- jest-util: "npm:^29.7.0"
- slash: "npm:^3.0.0"
- checksum: 10/4a80c750e8a31f344233cb9951dee9b77bf6b89377cb131f8b3cde07ff218f504370133a5963f6a786af4d2ce7f85642db206ff7a15f99fe58df4c38ac04899e
- languageName: node
- linkType: hard
-
"@jest/console@workspace:*, @jest/console@workspace:packages/jest-console":
version: 0.0.0-use.local
resolution: "@jest/console@workspace:packages/jest-console"
@@ -3816,7 +4151,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@jest/create-cache-key-function@npm:^29.6.3":
+"@jest/create-cache-key-function@npm:^29.7.0":
version: 29.7.0
resolution: "@jest/create-cache-key-function@npm:29.7.0"
dependencies:
@@ -3851,6 +4186,7 @@ __metadata:
dependencies:
"@jest/environment": "workspace:*"
"@jest/fake-timers": "workspace:*"
+ "@jest/test-utils": "workspace:*"
"@jest/types": "workspace:*"
"@types/jsdom": "npm:^21.1.7"
"@types/node": "npm:*"
@@ -3988,7 +4324,7 @@ __metadata:
jest-silent-reporter: "npm:^0.6.0"
jest-snapshot: "workspace:*"
jest-util: "workspace:*"
- jest-watch-typeahead: "npm:^2.2.2"
+ jest-watch-typeahead: "npm:^3.0.1"
jquery: "npm:^3.2.1"
js-yaml: "npm:^4.1.0"
micromatch: "npm:^4.0.8"
@@ -4124,18 +4460,6 @@ __metadata:
languageName: unknown
linkType: soft
-"@jest/test-result@npm:^29.7.0":
- version: 29.7.0
- resolution: "@jest/test-result@npm:29.7.0"
- dependencies:
- "@jest/console": "npm:^29.7.0"
- "@jest/types": "npm:^29.6.3"
- "@types/istanbul-lib-coverage": "npm:^2.0.0"
- collect-v8-coverage: "npm:^1.0.0"
- checksum: 10/c073ab7dfe3c562bff2b8fee6cc724ccc20aa96bcd8ab48ccb2aa309b4c0c1923a9e703cea386bd6ae9b71133e92810475bb9c7c22328fc63f797ad3324ed189
- languageName: node
- linkType: hard
-
"@jest/test-result@workspace:*, @jest/test-result@workspace:packages/jest-test-result":
version: 0.0.0-use.local
resolution: "@jest/test-result@workspace:packages/jest-test-result"
@@ -4191,7 +4515,7 @@ __metadata:
"@types/graceful-fs": "npm:^4.1.9"
"@types/micromatch": "npm:^4.0.9"
"@types/write-file-atomic": "npm:^4.0.3"
- babel-plugin-istanbul: "npm:^7.0.0"
+ babel-plugin-istanbul: "npm:^7.0.1"
chalk: "npm:^4.1.2"
convert-source-map: "npm:^2.0.0"
dedent: "npm:^1.6.0"
@@ -4248,14 +4572,13 @@ __metadata:
languageName: unknown
linkType: soft
-"@jridgewell/gen-mapping@npm:^0.3.5":
- version: 0.3.8
- resolution: "@jridgewell/gen-mapping@npm:0.3.8"
+"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5":
+ version: 0.3.12
+ resolution: "@jridgewell/gen-mapping@npm:0.3.12"
dependencies:
- "@jridgewell/set-array": "npm:^1.2.1"
- "@jridgewell/sourcemap-codec": "npm:^1.4.10"
+ "@jridgewell/sourcemap-codec": "npm:^1.5.0"
"@jridgewell/trace-mapping": "npm:^0.3.24"
- checksum: 10/9d3a56ab3612ab9b85d38b2a93b87f3324f11c5130859957f6500e4ac8ce35f299d5ccc3ecd1ae87597601ecf83cee29e9afd04c18777c24011073992ff946df
+ checksum: 10/151667531566417a940d4dd0a319724979f7a90b9deb9f1617344e1183887d78c835bc1a9209c1ee10fc8a669cdd7ac8120a43a2b6bc8d0d5dd18a173059ff4b
languageName: node
linkType: hard
@@ -4266,13 +4589,6 @@ __metadata:
languageName: node
linkType: hard
-"@jridgewell/set-array@npm:^1.2.1":
- version: 1.2.1
- resolution: "@jridgewell/set-array@npm:1.2.1"
- checksum: 10/832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10
- languageName: node
- linkType: hard
-
"@jridgewell/source-map@npm:^0.3.3":
version: 0.3.6
resolution: "@jridgewell/source-map@npm:0.3.6"
@@ -4283,10 +4599,10 @@ __metadata:
languageName: node
linkType: hard
-"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14":
- version: 1.5.0
- resolution: "@jridgewell/sourcemap-codec@npm:1.5.0"
- checksum: 10/4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd
+"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0":
+ version: 1.5.4
+ resolution: "@jridgewell/sourcemap-codec@npm:1.5.4"
+ checksum: 10/f677787f52224c6c971a7a41b7a074243240a6917fa75eceb9f7a442866f374fb0522b505e0496ee10a650c5936727e76d11bf36a6d0ae9e6c3b726c9e284cc7
languageName: node
linkType: hard
@@ -4300,13 +4616,13 @@ __metadata:
languageName: node
linkType: hard
-"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25":
- version: 0.3.25
- resolution: "@jridgewell/trace-mapping@npm:0.3.25"
+"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28":
+ version: 0.3.29
+ resolution: "@jridgewell/trace-mapping@npm:0.3.29"
dependencies:
"@jridgewell/resolve-uri": "npm:^3.1.0"
"@jridgewell/sourcemap-codec": "npm:^1.4.14"
- checksum: 10/dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc
+ checksum: 10/64e1ce0dc3a9e56b0118eaf1b2f50746fd59a36de37516cc6855b5370d5f367aa8229e1237536d738262e252c70ee229619cb04e3f3b822146ee3eb1b7ab297f
languageName: node
linkType: hard
@@ -5022,35 +5338,26 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/assets-registry@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/assets-registry@npm:0.76.6"
- checksum: 10/2eb3a7f9ad5de9b5f136cb123dbb9f31669cc39415d9cb42a1024fb9f7c73abcac82db12356d742ae14c6b053c852816460e68d8c32c2ffbe7e996d8bff1d66d
- languageName: node
- linkType: hard
-
-"@react-native/babel-plugin-codegen@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/babel-plugin-codegen@npm:0.76.6"
- dependencies:
- "@react-native/codegen": "npm:0.76.6"
- checksum: 10/866a3036f3a801d71d5215b1f67eae464544cb7027c0ab7387c5cb9f1f335d1716183a39a36909323a27a9421f2ce19a4d6dc628b24ae9dee48c3974e472f6db
+"@react-native/assets-registry@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/assets-registry@npm:0.81.4"
+ checksum: 10/d9e786df3ec2fb78bde627daab2f12f3f96a2d53f8f0f0bd315b6df4770ac5da5085999e8ca243ad52d0d4e316296c626c865d8675639003c8cdd6a22e9ea732
languageName: node
linkType: hard
-"@react-native/babel-plugin-codegen@npm:0.79.2":
- version: 0.79.2
- resolution: "@react-native/babel-plugin-codegen@npm:0.79.2"
+"@react-native/babel-plugin-codegen@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/babel-plugin-codegen@npm:0.81.4"
dependencies:
"@babel/traverse": "npm:^7.25.3"
- "@react-native/codegen": "npm:0.79.2"
- checksum: 10/57fad0dbba59282b25a80a1e720c6e6a208b39913f76c2254d71b8615354ede55188772261d5d536f8534bd80d032ba5860cb2be91dcd4728c6977c081dea0c8
+ "@react-native/codegen": "npm:0.81.4"
+ checksum: 10/4fd6d096e2c52059e9d163d1f60e3d4a3977ca37e20d7c50dbd3a3a25509319b243c1cb2f1f07074425559cb9532beca06cf3f8193524c065090e0665bbbe982
languageName: node
linkType: hard
-"@react-native/babel-preset@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/babel-preset@npm:0.76.6"
+"@react-native/babel-preset@npm:^0.81.1":
+ version: 0.81.4
+ resolution: "@react-native/babel-preset@npm:0.81.4"
dependencies:
"@babel/core": "npm:^7.25.2"
"@babel/plugin-proposal-export-default-from": "npm:^7.24.7"
@@ -5093,203 +5400,117 @@ __metadata:
"@babel/plugin-transform-typescript": "npm:^7.25.2"
"@babel/plugin-transform-unicode-regex": "npm:^7.24.7"
"@babel/template": "npm:^7.25.0"
- "@react-native/babel-plugin-codegen": "npm:0.76.6"
- babel-plugin-syntax-hermes-parser: "npm:^0.25.1"
+ "@react-native/babel-plugin-codegen": "npm:0.81.4"
+ babel-plugin-syntax-hermes-parser: "npm:0.29.1"
babel-plugin-transform-flow-enums: "npm:^0.0.2"
react-refresh: "npm:^0.14.0"
peerDependencies:
"@babel/core": "*"
- checksum: 10/fc320d9f02775c194c791b3602d2ff2b6f72387494fdd58d1c80fbfa9a2f9333af03273e9cf8b97856f892ba7cd47e9272a664207fc8e8accdfc82d695ad0578
+ checksum: 10/8ccd8a8f4fc91cc088778448987045f23fb4c281247ed81da9b9d69de4344f2f643295c704c3c888bd603aec6dfc58c639c420f9fc375406c9758c49312d115d
languageName: node
linkType: hard
-"@react-native/babel-preset@npm:^0.79.2":
- version: 0.79.2
- resolution: "@react-native/babel-preset@npm:0.79.2"
+"@react-native/codegen@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/codegen@npm:0.81.4"
dependencies:
"@babel/core": "npm:^7.25.2"
- "@babel/plugin-proposal-export-default-from": "npm:^7.24.7"
- "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3"
- "@babel/plugin-syntax-export-default-from": "npm:^7.24.7"
- "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3"
- "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
- "@babel/plugin-transform-arrow-functions": "npm:^7.24.7"
- "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4"
- "@babel/plugin-transform-async-to-generator": "npm:^7.24.7"
- "@babel/plugin-transform-block-scoping": "npm:^7.25.0"
- "@babel/plugin-transform-class-properties": "npm:^7.25.4"
- "@babel/plugin-transform-classes": "npm:^7.25.4"
- "@babel/plugin-transform-computed-properties": "npm:^7.24.7"
- "@babel/plugin-transform-destructuring": "npm:^7.24.8"
- "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2"
- "@babel/plugin-transform-for-of": "npm:^7.24.7"
- "@babel/plugin-transform-function-name": "npm:^7.25.1"
- "@babel/plugin-transform-literals": "npm:^7.25.2"
- "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7"
- "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8"
- "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7"
- "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7"
- "@babel/plugin-transform-numeric-separator": "npm:^7.24.7"
- "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7"
- "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7"
- "@babel/plugin-transform-optional-chaining": "npm:^7.24.8"
- "@babel/plugin-transform-parameters": "npm:^7.24.7"
- "@babel/plugin-transform-private-methods": "npm:^7.24.7"
- "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7"
- "@babel/plugin-transform-react-display-name": "npm:^7.24.7"
- "@babel/plugin-transform-react-jsx": "npm:^7.25.2"
- "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7"
- "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7"
- "@babel/plugin-transform-regenerator": "npm:^7.24.7"
- "@babel/plugin-transform-runtime": "npm:^7.24.7"
- "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7"
- "@babel/plugin-transform-spread": "npm:^7.24.7"
- "@babel/plugin-transform-sticky-regex": "npm:^7.24.7"
- "@babel/plugin-transform-typescript": "npm:^7.25.2"
- "@babel/plugin-transform-unicode-regex": "npm:^7.24.7"
- "@babel/template": "npm:^7.25.0"
- "@react-native/babel-plugin-codegen": "npm:0.79.2"
- babel-plugin-syntax-hermes-parser: "npm:0.25.1"
- babel-plugin-transform-flow-enums: "npm:^0.0.2"
- react-refresh: "npm:^0.14.0"
- peerDependencies:
- "@babel/core": "*"
- checksum: 10/4cd8c2095489fe90a83e720f5c4e67f74b736d05d66ae9c5de73d6abb048fdab262eaea6416d99430601d8699bcaad68ff75890195af47298b427f29ad9f029b
- languageName: node
- linkType: hard
-
-"@react-native/codegen@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/codegen@npm:0.76.6"
- dependencies:
"@babel/parser": "npm:^7.25.3"
glob: "npm:^7.1.1"
- hermes-parser: "npm:0.23.1"
- invariant: "npm:^2.2.4"
- jscodeshift: "npm:^0.14.0"
- mkdirp: "npm:^0.5.1"
- nullthrows: "npm:^1.1.1"
- yargs: "npm:^17.6.2"
- peerDependencies:
- "@babel/preset-env": ^7.1.6
- checksum: 10/d414ebe4e89af8309351ad9d077bb73d337aed39257b6b4c62cfd8ddb4251a182f53dbf93815cb52724e650832c26ca91db7c595a915fb4cc8d5971b8f01c8f3
- languageName: node
- linkType: hard
-
-"@react-native/codegen@npm:0.79.2":
- version: 0.79.2
- resolution: "@react-native/codegen@npm:0.79.2"
- dependencies:
- glob: "npm:^7.1.1"
- hermes-parser: "npm:0.25.1"
+ hermes-parser: "npm:0.29.1"
invariant: "npm:^2.2.4"
nullthrows: "npm:^1.1.1"
yargs: "npm:^17.6.2"
peerDependencies:
"@babel/core": "*"
- checksum: 10/1bb9f50f71fdc4cc32a19191715ed1bdd3e5c2c926da523e7850d79701c974c869bd6e3c815339f6a09e112d78c8a0c10ae2da7dfc5b4271775df160ff812ed7
+ checksum: 10/a278aed7bcacacfe697b1341991cf3003ce4f1c10db3f4c91e23c3af1abfbfde558003f65d765e768dc5e8675e8f0c0328b8c1188a5ab3ad6975d0e98b7d335b
languageName: node
linkType: hard
-"@react-native/community-cli-plugin@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/community-cli-plugin@npm:0.76.6"
+"@react-native/community-cli-plugin@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/community-cli-plugin@npm:0.81.4"
dependencies:
- "@react-native/dev-middleware": "npm:0.76.6"
- "@react-native/metro-babel-transformer": "npm:0.76.6"
- chalk: "npm:^4.0.0"
- execa: "npm:^5.1.1"
+ "@react-native/dev-middleware": "npm:0.81.4"
+ debug: "npm:^4.4.0"
invariant: "npm:^2.2.4"
- metro: "npm:^0.81.0"
- metro-config: "npm:^0.81.0"
- metro-core: "npm:^0.81.0"
- node-fetch: "npm:^2.2.0"
- readline: "npm:^1.3.0"
+ metro: "npm:^0.83.1"
+ metro-config: "npm:^0.83.1"
+ metro-core: "npm:^0.83.1"
semver: "npm:^7.1.3"
peerDependencies:
- "@react-native-community/cli-server-api": "*"
+ "@react-native-community/cli": "*"
+ "@react-native/metro-config": "*"
peerDependenciesMeta:
- "@react-native-community/cli-server-api":
+ "@react-native-community/cli":
+ optional: true
+ "@react-native/metro-config":
optional: true
- checksum: 10/56e0729410712bd712daf55a72d23aeafa5ff465d1ba0d5935dac35c42fc472a23eba5a9545d506089dd6f7fe4937bf12f1b7fac5aa7350c43997d897124e3a9
+ checksum: 10/0f7ab58002f7eea115b3397306d5f5005d7fc1b90b5e1e1adb0c5bc336c9334f82adfe795e97104bcfb7c8bfd20b1d886710b4a01f6b9a43af2e5f7a7324dc1a
languageName: node
linkType: hard
-"@react-native/debugger-frontend@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/debugger-frontend@npm:0.76.6"
- checksum: 10/f57da89d0443850ac323bbed59987b227bec5b6b4b4509348f4d0c80d59c8d9399335edbaee3a7283273ff52896d2cede465d0d9882c1dadd2c5808ee392e588
+"@react-native/debugger-frontend@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/debugger-frontend@npm:0.81.4"
+ checksum: 10/07a1c8250ddb470a184aa3820f76d956df4d9f6300aae0b51b42bd4d539ffd8cdcda627f8b27e92a9956631cf9be11f9d773fdd8215784444536ee1a9a7178b1
languageName: node
linkType: hard
-"@react-native/dev-middleware@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/dev-middleware@npm:0.76.6"
+"@react-native/dev-middleware@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/dev-middleware@npm:0.81.4"
dependencies:
"@isaacs/ttlcache": "npm:^1.4.1"
- "@react-native/debugger-frontend": "npm:0.76.6"
+ "@react-native/debugger-frontend": "npm:0.81.4"
chrome-launcher: "npm:^0.15.2"
chromium-edge-launcher: "npm:^0.2.0"
connect: "npm:^3.6.5"
- debug: "npm:^2.2.0"
+ debug: "npm:^4.4.0"
+ invariant: "npm:^2.2.4"
nullthrows: "npm:^1.1.1"
open: "npm:^7.0.3"
- selfsigned: "npm:^2.4.1"
- serve-static: "npm:^1.13.1"
+ serve-static: "npm:^1.16.2"
ws: "npm:^6.2.3"
- checksum: 10/a3788c0e2cc6938e44803162923b69ef9951efc9cc75b751d1823db07115731a4132ab70604da98821e34210f07d3adc7b42fa15b870a6ed08d04e88ebe107ad
- languageName: node
- linkType: hard
-
-"@react-native/gradle-plugin@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/gradle-plugin@npm:0.76.6"
- checksum: 10/7d9bea6bd913c356cc40e03c8b3388a0dc86c87b3a60c0281ea10ef1451022165c783f25a523b4d199ca5ae259f25dd10f60eb462200c4ee93e692c3089833af
+ checksum: 10/255f87d75f08c666eda81e6c2f60444b120fc94f7b9623a981cce3c29f4dc7cbf6316001be1f85826ca4e0f30fe9c71e0977084c82c5c6dcb3d9434f4626249a
languageName: node
linkType: hard
-"@react-native/js-polyfills@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/js-polyfills@npm:0.76.6"
- checksum: 10/5c8029a43da9fc091f348235c1ee326f5c67f06d11ea70cb763d35c8692c361f47f2ec49bee605c844c79b218662686f22ef547d1a6393dd135ede44ea6e566d
+"@react-native/gradle-plugin@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/gradle-plugin@npm:0.81.4"
+ checksum: 10/0fa41c1004dc5d0059c216754346a6ef4e90de3c57eddb63264b08dc38467f46f3ac95867c997d1ff72efe16af829ac23ee90e8395d90d3a91f1a3f0065be754
languageName: node
linkType: hard
-"@react-native/metro-babel-transformer@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/metro-babel-transformer@npm:0.76.6"
- dependencies:
- "@babel/core": "npm:^7.25.2"
- "@react-native/babel-preset": "npm:0.76.6"
- hermes-parser: "npm:0.23.1"
- nullthrows: "npm:^1.1.1"
- peerDependencies:
- "@babel/core": "*"
- checksum: 10/f9323e745c01a4caf83b7f888784173fcecaecf7b2b6c253d70c349a7391ab7dd04bbdfc534c3e9bdfb2999730b84f209c6fc469b6301c1d4ce2cf1360e69602
+"@react-native/js-polyfills@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/js-polyfills@npm:0.81.4"
+ checksum: 10/32d98478a609fdd3fdf8264718fb1465b16b4337d6a22ff06b158bd7172f777950fb22669ff7f1c94da5f60100ed3ac9fcfc03fc9f1154acd4df092e858f8a39
languageName: node
linkType: hard
-"@react-native/normalize-colors@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/normalize-colors@npm:0.76.6"
- checksum: 10/0e28cbdecbba96bd3e26a537623f68b77a77fda481b60dfa11d2a6e532aaae414d07e422d61465e40261d92a835d2f8342780cbe904a19c57e1fe223e4dc4a24
+"@react-native/normalize-colors@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/normalize-colors@npm:0.81.4"
+ checksum: 10/0c6255e094f019435a9a33af1727d8b5ce89332dd0b02d3096e0350a0f44c6669afe38a5d67900ea6f0e07745be8240bec6e9250b4beb2d8b780957fdb838eca
languageName: node
linkType: hard
-"@react-native/virtualized-lists@npm:0.76.6":
- version: 0.76.6
- resolution: "@react-native/virtualized-lists@npm:0.76.6"
+"@react-native/virtualized-lists@npm:0.81.4":
+ version: 0.81.4
+ resolution: "@react-native/virtualized-lists@npm:0.81.4"
dependencies:
invariant: "npm:^2.2.4"
nullthrows: "npm:^1.1.1"
peerDependencies:
- "@types/react": ^18.2.6
+ "@types/react": ^19.1.0
react: "*"
react-native: "*"
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: 10/2af9f55d7a1d1fc87f9f83c96b82aab8aafe920cd7afe808578893f33842c70a607c5d1ce35c81d20879017f8ebd50511ca4970b777c96f4456961befb29670a
+ checksum: 10/c28764433b18eceb6e1a5c651a5df354f592e04a867e9a0352c7addd9b4c7851a585e9bc01a8e7595d4a77d0992e88221b4d6363770e850889787ce5c6d41073
languageName: node
linkType: hard
@@ -5791,33 +6012,48 @@ __metadata:
languageName: node
linkType: hard
-"@testing-library/dom@npm:^9.0.0":
- version: 9.3.4
- resolution: "@testing-library/dom@npm:9.3.4"
+"@testing-library/dom@npm:^10.4.1":
+ version: 10.4.1
+ resolution: "@testing-library/dom@npm:10.4.1"
dependencies:
"@babel/code-frame": "npm:^7.10.4"
"@babel/runtime": "npm:^7.12.5"
"@types/aria-query": "npm:^5.0.1"
- aria-query: "npm:5.1.3"
- chalk: "npm:^4.1.0"
+ aria-query: "npm:5.3.0"
dom-accessibility-api: "npm:^0.5.9"
lz-string: "npm:^1.5.0"
+ picocolors: "npm:1.1.1"
pretty-format: "npm:^27.0.2"
- checksum: 10/510da752ea76f4a10a0a4e3a77917b0302cf03effe576cd3534cab7e796533ee2b0e9fb6fb11b911a1ebd7c70a0bb6f235bf4f816c9b82b95b8fe0cddfd10975
+ checksum: 10/7f93e09ea015f151f8b8f42cbab0b2b858999b5445f15239a72a612ef7716e672b14c40c421218194cf191cbecbde0afa6f3dc2cc83dda93ff6a4fb0237df6e6
languageName: node
linkType: hard
-"@testing-library/react@npm:^14.0.0":
- version: 14.3.1
- resolution: "@testing-library/react@npm:14.3.1"
+"@testing-library/react@npm:^16.3.0":
+ version: 16.3.0
+ resolution: "@testing-library/react@npm:16.3.0"
dependencies:
"@babel/runtime": "npm:^7.12.5"
- "@testing-library/dom": "npm:^9.0.0"
- "@types/react-dom": "npm:^18.0.0"
peerDependencies:
- react: ^18.0.0
- react-dom: ^18.0.0
- checksum: 10/83359dcdf9eaf067839f34604e1a181cbc14fc09f3a07672403700fcc6a900c4b8054ad1114fc24b4b9f89d84e2a09e1b7c9afce2306b1d4b4c9e30eb1cb12de
+ "@testing-library/dom": ^10.0.0
+ "@types/react": ^18.0.0 || ^19.0.0
+ "@types/react-dom": ^18.0.0 || ^19.0.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 10/0ee9e31dd0d2396a924682d0e61a4ecc6bfab8eaff23dbf8a72c3c2ce22c116fa578148baeb4de75b968ef99d22e6e6aa0a00dba40286f71184918bb6bb5b06a
+ languageName: node
+ linkType: hard
+
+"@testing-library/user-event@npm:^14.6.1":
+ version: 14.6.1
+ resolution: "@testing-library/user-event@npm:14.6.1"
+ peerDependencies:
+ "@testing-library/dom": ">=7.21.4"
+ checksum: 10/34b74fff56a0447731a94b40d4cf246deb8dbc1c1e3aec93acd1c3377a760bb062e979f1572bb34ec164ad28ee2a391744b42d0d6d6cc16c4ce527e5e09610e1
languageName: node
linkType: hard
@@ -6102,6 +6338,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/gensync@npm:^1.0.0":
+ version: 1.0.4
+ resolution: "@types/gensync@npm:1.0.4"
+ checksum: 10/99c3aa0d3f1198973c7e51bea5947b815f3338ce89ce09a39ac8abb41cd844c5b95189da254ea45e50a395fe25fd215664d8ca76c5438814963597afb01f686e
+ languageName: node
+ linkType: hard
+
"@types/graceful-fs@npm:^4.1.9":
version: 4.1.9
resolution: "@types/graceful-fs@npm:4.1.9"
@@ -6381,15 +6624,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/react-dom@npm:^18.0.0":
- version: 18.3.7
- resolution: "@types/react-dom@npm:18.3.7"
- peerDependencies:
- "@types/react": ^18.0.0
- checksum: 10/317569219366d487a3103ba1e5e47154e95a002915fdcf73a44162c48fe49c3a57fcf7f57fc6979e70d447112681e6b13c6c3c1df289db8b544df4aab2d318f3
- languageName: node
- linkType: hard
-
"@types/react-is@npm:^18.3.1":
version: 18.3.1
resolution: "@types/react-is@npm:18.3.1"
@@ -6535,7 +6769,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/stack-utils@npm:^2.0.0, @types/stack-utils@npm:^2.0.3":
+"@types/stack-utils@npm:^2.0.3":
version: 2.0.3
resolution: "@types/stack-utils@npm:2.0.3"
checksum: 10/72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5
@@ -7322,7 +7556,7 @@ __metadata:
languageName: node
linkType: hard
-"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.2":
+"ansi-escapes@npm:^4.3.2":
version: 4.3.2
resolution: "ansi-escapes@npm:4.3.2"
dependencies:
@@ -7331,10 +7565,12 @@ __metadata:
languageName: node
linkType: hard
-"ansi-escapes@npm:^6.0.0":
- version: 6.2.1
- resolution: "ansi-escapes@npm:6.2.1"
- checksum: 10/3b064937dc8a0645ed8094bc8b09483ee718f3aa3139746280e6c2ea80e28c0a3ce66973d0f33e88e60021abbf67e5f877deabfc810e75edf8a19dfa128850be
+"ansi-escapes@npm:^7.0.0":
+ version: 7.1.0
+ resolution: "ansi-escapes@npm:7.1.0"
+ dependencies:
+ environment: "npm:^1.0.0"
+ checksum: 10/bf0d36c2b350f4fb5759742f83000fa1bae35b610f05aa528db65f626620b34100a048906308d98ea385e1447997417f3f594456c45c3aa30f52f3f450a30ed3
languageName: node
linkType: hard
@@ -7438,16 +7674,16 @@ __metadata:
languageName: node
linkType: hard
-"aria-query@npm:5.1.3":
- version: 5.1.3
- resolution: "aria-query@npm:5.1.3"
+"aria-query@npm:5.3.0":
+ version: 5.3.0
+ resolution: "aria-query@npm:5.3.0"
dependencies:
- deep-equal: "npm:^2.0.5"
- checksum: 10/e5da608a7c4954bfece2d879342b6c218b6b207e2d9e5af270b5e38ef8418f02d122afdc948b68e32649b849a38377785252059090d66fa8081da95d1609c0d2
+ dequal: "npm:^2.0.3"
+ checksum: 10/c3e1ed127cc6886fea4732e97dd6d3c3938e64180803acfb9df8955517c4943760746ffaf4020ce8f7ffaa7556a3b5f85c3769a1f5ca74a1288e02d042f9ae4e
languageName: node
linkType: hard
-"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2":
+"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2":
version: 1.0.2
resolution: "array-buffer-byte-length@npm:1.0.2"
dependencies:
@@ -7514,15 +7750,6 @@ __metadata:
languageName: node
linkType: hard
-"ast-types@npm:0.15.2":
- version: 0.15.2
- resolution: "ast-types@npm:0.15.2"
- dependencies:
- tslib: "npm:^2.0.1"
- checksum: 10/81680bd5829cdec33524e9aa3434e23f3919c0c388927068a0ff2e8466f55b0f34eae53e0007b3668742910c289481ab4e1d486a5318f618ae2fc93b5e7e863b
- languageName: node
- linkType: hard
-
"astring@npm:^1.8.0":
version: 1.9.0
resolution: "astring@npm:1.9.0"
@@ -7587,31 +7814,23 @@ __metadata:
languageName: node
linkType: hard
-"babel-core@npm:^7.0.0-bridge.0":
- version: 7.0.0-bridge.0
- resolution: "babel-core@npm:7.0.0-bridge.0"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10/2a1cb879019dffb08d17bec36e13c3a6d74c94773f41c1fd8b14de13f149cc34b705b0a1e07b42fcf35917b49d78db6ff0c5c3b00b202a5235013d517b5c6bbb
- languageName: node
- linkType: hard
-
"babel-jest@workspace:*, babel-jest@workspace:packages/babel-jest":
version: 0.0.0-use.local
resolution: "babel-jest@workspace:packages/babel-jest"
dependencies:
+ "@babel-8/core": "npm:@babel/core@8.0.0-beta.1"
"@babel/core": "npm:^7.27.4"
"@jest/test-utils": "workspace:*"
"@jest/transform": "workspace:*"
"@types/babel__core": "npm:^7.20.5"
"@types/graceful-fs": "npm:^4.1.9"
- babel-plugin-istanbul: "npm:^7.0.0"
+ babel-plugin-istanbul: "npm:^7.0.1"
babel-preset-jest: "workspace:*"
chalk: "npm:^4.1.2"
graceful-fs: "npm:^4.2.11"
slash: "npm:^3.0.0"
peerDependencies:
- "@babel/core": ^7.11.0
+ "@babel/core": ^7.11.0 || ^8.0.0-0
languageName: unknown
linkType: soft
@@ -7637,16 +7856,16 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-istanbul@npm:^7.0.0":
- version: 7.0.0
- resolution: "babel-plugin-istanbul@npm:7.0.0"
+"babel-plugin-istanbul@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "babel-plugin-istanbul@npm:7.0.1"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.0.0"
"@istanbuljs/load-nyc-config": "npm:^1.0.0"
"@istanbuljs/schema": "npm:^0.1.3"
istanbul-lib-instrument: "npm:^6.0.2"
test-exclude: "npm:^6.0.0"
- checksum: 10/4df567f29161c7f50737ed1884c7f08203f4d0cb1684c499fca374fcf5059396eacb02f8f727bf7a82bbf3e50b9f4a24bcb026a1678f63940d8f0f78546e3774
+ checksum: 10/fe9f865f975aaa7a033de9ccb2b63fdcca7817266c5e98d3e02ac7ffd774c695093d215302796cb3770a71ef4574e7a9b298504c3c0c104cf4b48c8eda67b2a6
languageName: node
linkType: hard
@@ -7654,10 +7873,12 @@ __metadata:
version: 0.0.0-use.local
resolution: "babel-plugin-jest-hoist@workspace:packages/babel-plugin-jest-hoist"
dependencies:
+ "@babel-8/core": "npm:@babel/core@8.0.0-beta.1"
+ "@babel-8/preset-react": "npm:@babel/preset-react@8.0.0-beta.1"
+ "@babel-8/preset-typescript": "npm:@babel/preset-typescript@8.0.0-beta.1"
"@babel/core": "npm:^7.27.4"
"@babel/preset-react": "npm:^7.27.1"
"@babel/preset-typescript": "npm:^7.27.1"
- "@babel/template": "npm:^7.27.2"
"@babel/types": "npm:^7.27.3"
"@prettier/sync": "npm:^0.5.5"
"@types/babel__core": "npm:^7.20.5"
@@ -7705,21 +7926,12 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-syntax-hermes-parser@npm:0.25.1, babel-plugin-syntax-hermes-parser@npm:^0.25.1":
- version: 0.25.1
- resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1"
- dependencies:
- hermes-parser: "npm:0.25.1"
- checksum: 10/dc80fafde1aed8e60cf86ecd2e9920e7f35ffe02b33bd4e772daaa786167bcf508aac3fc1aea425ff4c7a0be94d82528f3fe8619b7f41dac853264272d640c04
- languageName: node
- linkType: hard
-
-"babel-plugin-syntax-hermes-parser@npm:^0.23.1":
- version: 0.23.1
- resolution: "babel-plugin-syntax-hermes-parser@npm:0.23.1"
+"babel-plugin-syntax-hermes-parser@npm:0.29.1":
+ version: 0.29.1
+ resolution: "babel-plugin-syntax-hermes-parser@npm:0.29.1"
dependencies:
- hermes-parser: "npm:0.23.1"
- checksum: 10/5412008e8e85b08cd0d78168f746ade68b8ed69c0068831ce5e3d028f01c644f546ca0e2b7c9a4a8c6b9d5f14aff84c2453ab44b19cbec55e4366b20bbba9040
+ hermes-parser: "npm:0.29.1"
+ checksum: 10/bbb1eed253b4255f8c572e1cb2664868d9aa2238363e48a2d1e95e952b2c1d59e86a7051f44956407484df2c9bc6623608740eec10e2095946d241b795262cec
languageName: node
linkType: hard
@@ -7756,9 +7968,9 @@ __metadata:
languageName: node
linkType: hard
-"babel-preset-current-node-syntax@npm:^1.1.0":
- version: 1.1.0
- resolution: "babel-preset-current-node-syntax@npm:1.1.0"
+"babel-preset-current-node-syntax@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "babel-preset-current-node-syntax@npm:1.2.0"
dependencies:
"@babel/plugin-syntax-async-generators": "npm:^7.8.4"
"@babel/plugin-syntax-bigint": "npm:^7.8.3"
@@ -7776,8 +7988,8 @@ __metadata:
"@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5"
"@babel/plugin-syntax-top-level-await": "npm:^7.14.5"
peerDependencies:
- "@babel/core": ^7.0.0
- checksum: 10/46331111ae72b7121172fd9e6a4a7830f651ad44bf26dbbf77b3c8a60a18009411a3eacb5e72274004290c110371230272109957d5224d155436b4794ead2f1b
+ "@babel/core": ^7.0.0 || ^8.0.0-0
+ checksum: 10/3608fa671cfa46364ea6ec704b8fcdd7514b7b70e6ec09b1199e13ae73ed346c51d5ce2cb6d4d5b295f6a3f2cad1fdeec2308aa9e037002dd7c929194cc838ea
languageName: node
linkType: hard
@@ -7786,9 +7998,9 @@ __metadata:
resolution: "babel-preset-jest@workspace:packages/babel-preset-jest"
dependencies:
babel-plugin-jest-hoist: "workspace:*"
- babel-preset-current-node-syntax: "npm:^1.1.0"
+ babel-preset-current-node-syntax: "npm:^1.2.0"
peerDependencies:
- "@babel/core": ^7.11.0
+ "@babel/core": ^7.11.0 || ^8.0.0-beta.1
languageName: unknown
linkType: soft
@@ -8083,7 +8295,7 @@ __metadata:
languageName: node
linkType: hard
-"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8":
+"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8":
version: 1.0.8
resolution: "call-bind@npm:1.0.8"
dependencies:
@@ -8105,31 +8317,6 @@ __metadata:
languageName: node
linkType: hard
-"caller-callsite@npm:^2.0.0":
- version: 2.0.0
- resolution: "caller-callsite@npm:2.0.0"
- dependencies:
- callsites: "npm:^2.0.0"
- checksum: 10/b685e9d126d9247b320cfdfeb3bc8da0c4be28d8fb98c471a96bc51aab3130099898a2fe3bf0308f0fe048d64c37d6d09f563958b9afce1a1e5e63d879c128a2
- languageName: node
- linkType: hard
-
-"caller-path@npm:^2.0.0":
- version: 2.0.0
- resolution: "caller-path@npm:2.0.0"
- dependencies:
- caller-callsite: "npm:^2.0.0"
- checksum: 10/3e12ccd0c71ec10a057aac69e3ec175b721ca858c640df021ef0d25999e22f7c1d864934b596b7d47038e9b56b7ec315add042abbd15caac882998b50102fb12
- languageName: node
- linkType: hard
-
-"callsites@npm:^2.0.0":
- version: 2.0.0
- resolution: "callsites@npm:2.0.0"
- checksum: 10/be2f67b247df913732b7dec1ec0bbfcdbaea263e5a95968b19ec7965affae9496b970e3024317e6d4baa8e28dc6ba0cec03f46fdddc2fdcc51396600e53c2623
- languageName: node
- linkType: hard
-
"callsites@npm:^3.0.0, callsites@npm:^3.1.0":
version: 3.1.0
resolution: "callsites@npm:3.1.0"
@@ -8218,13 +8405,6 @@ __metadata:
languageName: node
linkType: hard
-"char-regex@npm:^2.0.0":
- version: 2.0.2
- resolution: "char-regex@npm:2.0.2"
- checksum: 10/7d6dc918d215761ab389e799b9b119778722f384c8265ccb3c3025c9b219aea942f497fc7922d3470fc270987927719c5fa78d6337a5ebe9a9dc4c5a49099eb2
- languageName: node
- linkType: hard
-
"character-entities-html4@npm:^2.0.0":
version: 2.1.0
resolution: "character-entities-html4@npm:2.1.0"
@@ -8498,7 +8678,7 @@ __metadata:
languageName: node
linkType: hard
-"collect-v8-coverage@npm:^1.0.0, collect-v8-coverage@npm:^1.0.2":
+"collect-v8-coverage@npm:^1.0.2":
version: 1.0.2
resolution: "collect-v8-coverage@npm:1.0.2"
checksum: 10/30ea7d5c9ee51f2fdba4901d4186c5b7114a088ef98fd53eda3979da77eed96758a2cae81cc6d97e239aaea6065868cf908b24980663f7b7e96aa291b3e12fa4
@@ -8672,17 +8852,17 @@ __metadata:
linkType: hard
"compression@npm:^1.7.4":
- version: 1.8.0
- resolution: "compression@npm:1.8.0"
+ version: 1.8.1
+ resolution: "compression@npm:1.8.1"
dependencies:
bytes: "npm:3.1.2"
compressible: "npm:~2.0.18"
debug: "npm:2.6.9"
negotiator: "npm:~0.6.4"
- on-headers: "npm:~1.0.2"
+ on-headers: "npm:~1.1.0"
safe-buffer: "npm:5.2.1"
vary: "npm:~1.1.2"
- checksum: 10/ca213b9bd03e56c7c3596399d846237b5f0b31ca4cdeaa76a9547cd3c1465fbcfcb0fe93a5d7ff64eff28383fc65b53f1ef8bb2720d11bb48ad8c0836c502506
+ checksum: 10/e7552bfbd780f2003c6fe8decb44561f5cc6bc82f0c61e81122caff5ec656f37824084f52155b1e8ef31d7656cecbec9a2499b7a68e92e20780ffb39b479abb7
languageName: node
linkType: hard
@@ -8927,18 +9107,6 @@ __metadata:
languageName: node
linkType: hard
-"cosmiconfig@npm:^5.0.5":
- version: 5.2.1
- resolution: "cosmiconfig@npm:5.2.1"
- dependencies:
- import-fresh: "npm:^2.0.0"
- is-directory: "npm:^0.3.1"
- js-yaml: "npm:^3.13.1"
- parse-json: "npm:^4.0.0"
- checksum: 10/1d617668e1367b8d66617fb8a1bd8c13e9598534959ac0cc86195b1b0cbe7afbba2b9faa300c60b9d9d35409cf4f064b0f6e377f4ea036434e5250c69c76932f
- languageName: node
- linkType: hard
-
"cosmiconfig@npm:^6.0.0":
version: 6.0.0
resolution: "cosmiconfig@npm:6.0.0"
@@ -9365,7 +9533,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.6.0, debug@npm:^2.6.9":
+"debug@npm:2.6.9, debug@npm:^2.6.0, debug@npm:^2.6.9":
version: 2.6.9
resolution: "debug@npm:2.6.9"
dependencies:
@@ -9374,15 +9542,15 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.4.1":
- version: 4.4.1
- resolution: "debug@npm:4.4.1"
+"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.4.0, debug@npm:^4.4.1":
+ version: 4.4.3
+ resolution: "debug@npm:4.4.3"
dependencies:
ms: "npm:^2.1.3"
peerDependenciesMeta:
supports-color:
optional: true
- checksum: 10/8e2709b2144f03c7950f8804d01ccb3786373df01e406a0f66928e47001cf2d336cbed9ee137261d4f90d68d8679468c755e3548ed83ddacdc82b194d2468afe
+ checksum: 10/9ada3434ea2993800bd9a1e320bd4aa7af69659fb51cca685d390949434bc0a8873c21ed7c9b852af6f2455a55c6d050aa3937d52b3c69f796dab666f762acad
languageName: node
linkType: hard
@@ -9423,32 +9591,6 @@ __metadata:
languageName: node
linkType: hard
-"deep-equal@npm:^2.0.5":
- version: 2.2.3
- resolution: "deep-equal@npm:2.2.3"
- dependencies:
- array-buffer-byte-length: "npm:^1.0.0"
- call-bind: "npm:^1.0.5"
- es-get-iterator: "npm:^1.1.3"
- get-intrinsic: "npm:^1.2.2"
- is-arguments: "npm:^1.1.1"
- is-array-buffer: "npm:^3.0.2"
- is-date-object: "npm:^1.0.5"
- is-regex: "npm:^1.1.4"
- is-shared-array-buffer: "npm:^1.0.2"
- isarray: "npm:^2.0.5"
- object-is: "npm:^1.1.5"
- object-keys: "npm:^1.1.1"
- object.assign: "npm:^4.1.4"
- regexp.prototype.flags: "npm:^1.5.1"
- side-channel: "npm:^1.0.4"
- which-boxed-primitive: "npm:^1.0.2"
- which-collection: "npm:^1.0.1"
- which-typed-array: "npm:^1.1.13"
- checksum: 10/1ce49d0b71d0f14d8ef991a742665eccd488dfc9b3cada069d4d7a86291e591c92d2589c832811dea182b4015736b210acaaebce6184be356c1060d176f5a05f
- languageName: node
- linkType: hard
-
"deep-extend@npm:^0.6.0":
version: 0.6.0
resolution: "deep-extend@npm:0.6.0"
@@ -9561,7 +9703,7 @@ __metadata:
languageName: node
linkType: hard
-"dequal@npm:^2.0.0":
+"dequal@npm:^2.0.0, dequal@npm:^2.0.3":
version: 2.0.3
resolution: "dequal@npm:2.0.3"
checksum: 10/6ff05a7561f33603df87c45e389c9ac0a95e3c056be3da1a0c4702149e3a7f6fe5ffbb294478687ba51a9e95f3a60e8b6b9005993acd79c292c7d15f71964b6b
@@ -9953,6 +10095,13 @@ __metadata:
languageName: node
linkType: hard
+"environment@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "environment@npm:1.1.0"
+ checksum: 10/dd3c1b9825e7f71f1e72b03c2344799ac73f2e9ef81b78ea8b373e55db021786c6b9f3858ea43a436a2c4611052670ec0afe85bc029c384cc71165feee2f4ba6
+ languageName: node
+ linkType: hard
+
"err-code@npm:^2.0.2":
version: 2.0.3
resolution: "err-code@npm:2.0.3"
@@ -10062,23 +10211,6 @@ __metadata:
languageName: node
linkType: hard
-"es-get-iterator@npm:^1.1.3":
- version: 1.1.3
- resolution: "es-get-iterator@npm:1.1.3"
- dependencies:
- call-bind: "npm:^1.0.2"
- get-intrinsic: "npm:^1.1.3"
- has-symbols: "npm:^1.0.3"
- is-arguments: "npm:^1.1.1"
- is-map: "npm:^2.0.2"
- is-set: "npm:^2.0.2"
- is-string: "npm:^1.0.7"
- isarray: "npm:^2.0.5"
- stop-iteration-iterator: "npm:^1.0.0"
- checksum: 10/bc2194befbe55725f9489098626479deee3c801eda7e83ce0dff2eb266a28dc808edb9b623ff01d31ebc1328f09d661333d86b601036692c2e3c1a6942319433
- languageName: node
- linkType: hard
-
"es-module-lexer@npm:^1.2.1":
version: 1.7.0
resolution: "es-module-lexer@npm:1.7.0"
@@ -10555,7 +10687,7 @@ __metadata:
languageName: node
linkType: hard
-"esprima@npm:^4.0.0, esprima@npm:~4.0.0":
+"esprima@npm:^4.0.0":
version: 4.0.1
resolution: "esprima@npm:4.0.1"
bin:
@@ -10719,7 +10851,7 @@ __metadata:
languageName: node
linkType: hard
-"event-target-shim@npm:^5.0.0, event-target-shim@npm:^5.0.1":
+"event-target-shim@npm:^5.0.0":
version: 5.0.1
resolution: "event-target-shim@npm:5.0.1"
checksum: 10/49ff46c3a7facbad3decb31f597063e761785d7fdb3920d4989d7b08c97a61c2f51183e2f3a03130c9088df88d4b489b1b79ab632219901f184f85158508f4c8
@@ -10837,11 +10969,11 @@ __metadata:
dependencies:
"@babel/core": "npm:^7.27.4"
"@babel/preset-env": "npm:^7.27.2"
- "@react-native/babel-preset": "npm:^0.79.2"
+ "@react-native/babel-preset": "npm:^0.81.1"
babel-jest: "workspace:*"
jest: "workspace:*"
react: "npm:18.3.1"
- react-native: "npm:0.76.6"
+ react-native: "npm:0.81.4"
react-test-renderer: "npm:18.3.1"
languageName: unknown
linkType: soft
@@ -10853,7 +10985,7 @@ __metadata:
"@babel/core": "npm:^7.27.4"
"@babel/preset-env": "npm:^7.27.2"
"@babel/preset-react": "npm:^7.27.1"
- "@testing-library/react": "npm:^14.0.0"
+ "@testing-library/react": "npm:^16.3.0"
babel-jest: "workspace:*"
jest: "workspace:*"
jest-environment-jsdom: "workspace:*"
@@ -10884,10 +11016,12 @@ __metadata:
"@babel/core": "npm:^7.27.4"
"@babel/preset-env": "npm:^7.27.2"
"@babel/preset-react": "npm:^7.27.1"
+ "@testing-library/dom": "npm:^10.4.1"
+ "@testing-library/react": "npm:^16.3.0"
+ "@testing-library/user-event": "npm:^14.6.1"
babel-jest: "workspace:*"
jest: "workspace:*"
react: "npm:18.3.1"
- react-test-renderer: "npm:18.3.1"
languageName: unknown
linkType: soft
@@ -11373,13 +11507,6 @@ __metadata:
languageName: node
linkType: hard
-"flow-parser@npm:0.*":
- version: 0.272.1
- resolution: "flow-parser@npm:0.272.1"
- checksum: 10/0bf6c92ab651d1a65af4a20801d602695c6b7f11550dbcee3f470f35572d56108091b558c8c1451055463e7ae3213c79b5a26a4028ef734958ecfd4733c9dfbd
- languageName: node
- linkType: hard
-
"follow-redirects@npm:^1.0.0":
version: 1.15.9
resolution: "follow-redirects@npm:1.15.9"
@@ -11598,7 +11725,7 @@ __metadata:
languageName: node
linkType: hard
-"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0":
+"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0":
version: 1.3.0
resolution: "get-intrinsic@npm:1.3.0"
dependencies:
@@ -11885,7 +12012,7 @@ __metadata:
languageName: node
linkType: hard
-"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9":
+"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9":
version: 4.2.11
resolution: "graceful-fs@npm:4.2.11"
checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2
@@ -12181,35 +12308,35 @@ __metadata:
languageName: node
linkType: hard
-"hermes-estree@npm:0.23.1":
- version: 0.23.1
- resolution: "hermes-estree@npm:0.23.1"
- checksum: 10/b7ad78f53044d53ec1c77e93036c16e34f6f0985c895540876301e4791d4db08da828870977140f5cf1ae34532bbb9d9d013a0a1a4a5a0da05177225648d5295
+"hermes-estree@npm:0.29.1":
+ version: 0.29.1
+ resolution: "hermes-estree@npm:0.29.1"
+ checksum: 10/8989fc224fcd2bb3356d7d330461c9f32303904824891ae4befafc08f13c871013b18d5d4cd4b20bf6f59e9d26afdbb10d33440c6e646de770db4b9543c39db4
languageName: node
linkType: hard
-"hermes-estree@npm:0.25.1":
- version: 0.25.1
- resolution: "hermes-estree@npm:0.25.1"
- checksum: 10/7b1eca98b264a25632064cffa5771360d30cf452e77db1e191f9913ee45cf78c292b2dbca707e92fb71b0870abb97e94b506a5ab80abd96ba237fee169b601fe
+"hermes-estree@npm:0.32.0":
+ version: 0.32.0
+ resolution: "hermes-estree@npm:0.32.0"
+ checksum: 10/65a30a86a5a560152a2de1842c7bc7ecdadebd62e9cdd7d1809a824de7bc19e8d6a42907d3caff91d9f823862405d4b200447aa0bc25ba16072937e93d0acbd5
languageName: node
linkType: hard
-"hermes-parser@npm:0.23.1":
- version: 0.23.1
- resolution: "hermes-parser@npm:0.23.1"
+"hermes-parser@npm:0.29.1":
+ version: 0.29.1
+ resolution: "hermes-parser@npm:0.29.1"
dependencies:
- hermes-estree: "npm:0.23.1"
- checksum: 10/de88df4f23bd8dc2ffa89c8a317445320af8c7705a2aeeb05c4dd171f037a747982be153a0a237b1c9c7337b79bceaeb5052934cb8a25fe2e2473294a5343334
+ hermes-estree: "npm:0.29.1"
+ checksum: 10/2d1ada9d48817668bf12b31deef7c5a4a7d88419448c7e07ad67197a7992462dea3f5e536aea2c6f7e2222940f96bb7cd7a7dc5a101c9b4b2d7a84e1a1272670
languageName: node
linkType: hard
-"hermes-parser@npm:0.25.1":
- version: 0.25.1
- resolution: "hermes-parser@npm:0.25.1"
+"hermes-parser@npm:0.32.0":
+ version: 0.32.0
+ resolution: "hermes-parser@npm:0.32.0"
dependencies:
- hermes-estree: "npm:0.25.1"
- checksum: 10/805efc05691420f236654349872c70731121791fa54de521c7ee51059eae34f84dd19f22ee846741dcb60372f8fb5335719b96b4ecb010d2aed7d872f2eff9cc
+ hermes-estree: "npm:0.32.0"
+ checksum: 10/496210490cb45e97df14796d94aec6c817c4cefa20f1dbe3ba1df323cc58c930033cfec93f3ecfad6b90e09166fc9ffc4f665843d25b4862523aa70dacbae81f
languageName: node
linkType: hard
@@ -12491,7 +12618,7 @@ __metadata:
languageName: node
linkType: hard
-"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.6":
+"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5, https-proxy-agent@npm:^7.0.6":
version: 7.0.6
resolution: "https-proxy-agent@npm:7.0.6"
dependencies:
@@ -12597,16 +12724,6 @@ __metadata:
languageName: node
linkType: hard
-"import-fresh@npm:^2.0.0":
- version: 2.0.0
- resolution: "import-fresh@npm:2.0.0"
- dependencies:
- caller-path: "npm:^2.0.0"
- resolve-from: "npm:^3.0.0"
- checksum: 10/610255f9753cc6775df00be08e9f43691aa39f7703e3636c45afe22346b8b545e600ccfe100c554607546fc8e861fa149a0d1da078c8adedeea30fff326eef79
- languageName: node
- linkType: hard
-
"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
version: 3.3.1
resolution: "import-fresh@npm:3.3.1"
@@ -12791,17 +12908,7 @@ __metadata:
languageName: node
linkType: hard
-"is-arguments@npm:^1.1.1":
- version: 1.2.0
- resolution: "is-arguments@npm:1.2.0"
- dependencies:
- call-bound: "npm:^1.0.2"
- has-tostringtag: "npm:^1.0.2"
- checksum: 10/471a8ef631b8ee8829c43a8ab05c081700c0e25180c73d19f3bf819c1a8448c426a9e8e601f278973eca68966384b16ceb78b8c63af795b099cd199ea5afc457
- languageName: node
- linkType: hard
-
-"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5":
+"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5":
version: 3.0.5
resolution: "is-array-buffer@npm:3.0.5"
dependencies:
@@ -12944,13 +13051,6 @@ __metadata:
languageName: node
linkType: hard
-"is-directory@npm:^0.3.1":
- version: 0.3.1
- resolution: "is-directory@npm:0.3.1"
- checksum: 10/dce9a9d3981e38f2ded2a80848734824c50ee8680cd09aa477bef617949715cfc987197a2ca0176c58a9fb192a1a0d69b535c397140d241996a609d5906ae524
- languageName: node
- linkType: hard
-
"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1":
version: 2.2.1
resolution: "is-docker@npm:2.2.1"
@@ -13035,7 +13135,7 @@ __metadata:
languageName: node
linkType: hard
-"is-map@npm:^2.0.2, is-map@npm:^2.0.3":
+"is-map@npm:^2.0.3":
version: 2.0.3
resolution: "is-map@npm:2.0.3"
checksum: 10/8de7b41715b08bcb0e5edb0fb9384b80d2d5bcd10e142188f33247d19ff078abaf8e9b6f858e2302d8d05376a26a55cd23a3c9f8ab93292b02fcd2cc9e4e92bb
@@ -13131,7 +13231,7 @@ __metadata:
languageName: node
linkType: hard
-"is-regex@npm:^1.1.4, is-regex@npm:^1.2.1":
+"is-regex@npm:^1.2.1":
version: 1.2.1
resolution: "is-regex@npm:1.2.1"
dependencies:
@@ -13157,14 +13257,14 @@ __metadata:
languageName: node
linkType: hard
-"is-set@npm:^2.0.2, is-set@npm:^2.0.3":
+"is-set@npm:^2.0.3":
version: 2.0.3
resolution: "is-set@npm:2.0.3"
checksum: 10/5685df33f0a4a6098a98c72d94d67cad81b2bc72f1fb2091f3d9283c4a1c582123cd709145b02a9745f0ce6b41e3e43f1c944496d1d74d4ea43358be61308669
languageName: node
linkType: hard
-"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.4":
+"is-shared-array-buffer@npm:^1.0.4":
version: 1.0.4
resolution: "is-shared-array-buffer@npm:1.0.4"
dependencies:
@@ -13196,7 +13296,7 @@ __metadata:
languageName: node
linkType: hard
-"is-string@npm:^1.0.7, is-string@npm:^1.1.1":
+"is-string@npm:^1.1.1":
version: 1.1.1
resolution: "is-string@npm:1.1.1"
dependencies:
@@ -13488,6 +13588,7 @@ __metadata:
"@jest/get-type": "workspace:*"
"@jest/pattern": "workspace:*"
"@jest/test-sequencer": "workspace:*"
+ "@jest/test-utils": "workspace:*"
"@jest/types": "workspace:*"
"@types/graceful-fs": "npm:^4.1.9"
"@types/micromatch": "npm:^4.0.9"
@@ -13689,23 +13790,6 @@ __metadata:
languageName: unknown
linkType: soft
-"jest-message-util@npm:^29.7.0":
- version: 29.7.0
- resolution: "jest-message-util@npm:29.7.0"
- dependencies:
- "@babel/code-frame": "npm:^7.12.13"
- "@jest/types": "npm:^29.6.3"
- "@types/stack-utils": "npm:^2.0.0"
- chalk: "npm:^4.0.0"
- graceful-fs: "npm:^4.2.9"
- micromatch: "npm:^4.0.4"
- pretty-format: "npm:^29.7.0"
- slash: "npm:^3.0.0"
- stack-utils: "npm:^2.0.3"
- checksum: 10/31d53c6ed22095d86bab9d14c0fa70c4a92c749ea6ceece82cf30c22c9c0e26407acdfbdb0231435dc85a98d6d65ca0d9cbcd25cd1abb377fe945e843fb770b9
- languageName: node
- linkType: hard
-
"jest-message-util@workspace:*, jest-message-util@workspace:packages/jest-message-util":
version: 0.0.0-use.local
resolution: "jest-message-util@workspace:packages/jest-message-util"
@@ -13756,14 +13840,7 @@ __metadata:
languageName: node
linkType: hard
-"jest-regex-util@npm:^29.0.0":
- version: 29.6.3
- resolution: "jest-regex-util@npm:29.6.3"
- checksum: 10/0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a
- languageName: node
- linkType: hard
-
-"jest-regex-util@workspace:*, jest-regex-util@workspace:packages/jest-regex-util":
+"jest-regex-util@npm:^30.0.0, jest-regex-util@workspace:*, jest-regex-util@workspace:packages/jest-regex-util":
version: 0.0.0-use.local
resolution: "jest-regex-util@workspace:packages/jest-regex-util"
dependencies:
@@ -13909,7 +13986,7 @@ __metadata:
"@types/semver": "npm:^7.7.0"
ansi-regex: "npm:^5.0.1"
ansi-styles: "npm:^5.2.0"
- babel-preset-current-node-syntax: "npm:^1.1.0"
+ babel-preset-current-node-syntax: "npm:^1.2.0"
chalk: "npm:^4.1.2"
expect: "workspace:*"
graceful-fs: "npm:^4.2.11"
@@ -13997,40 +14074,24 @@ __metadata:
languageName: unknown
linkType: soft
-"jest-watch-typeahead@npm:^2.2.2":
- version: 2.2.2
- resolution: "jest-watch-typeahead@npm:2.2.2"
+"jest-watch-typeahead@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "jest-watch-typeahead@npm:3.0.1"
dependencies:
- ansi-escapes: "npm:^6.0.0"
+ ansi-escapes: "npm:^7.0.0"
chalk: "npm:^5.2.0"
- jest-regex-util: "npm:^29.0.0"
- jest-watcher: "npm:^29.0.0"
+ jest-regex-util: "npm:^30.0.0"
+ jest-watcher: "npm:^30.0.0"
slash: "npm:^5.0.0"
- string-length: "npm:^5.0.1"
+ string-length: "npm:^6.0.0"
strip-ansi: "npm:^7.0.1"
peerDependencies:
- jest: ^27.0.0 || ^28.0.0 || ^29.0.0
- checksum: 10/8685277ce1b96ec775882111ec55ce90a862cc57acb21ce94f8ac44a25f6fb34c7a7ce119e07b2d8ff5353a8d9e4f981cf96fa35532f71ddba6ca8fedc05bd8e
- languageName: node
- linkType: hard
-
-"jest-watcher@npm:^29.0.0":
- version: 29.7.0
- resolution: "jest-watcher@npm:29.7.0"
- dependencies:
- "@jest/test-result": "npm:^29.7.0"
- "@jest/types": "npm:^29.6.3"
- "@types/node": "npm:*"
- ansi-escapes: "npm:^4.2.1"
- chalk: "npm:^4.0.0"
- emittery: "npm:^0.13.1"
- jest-util: "npm:^29.7.0"
- string-length: "npm:^4.0.1"
- checksum: 10/4f616e0345676631a7034b1d94971aaa719f0cd4a6041be2aa299be437ea047afd4fe05c48873b7963f5687a2f6c7cbf51244be8b14e313b97bfe32b1e127e55
+ jest: ^30.0.0
+ checksum: 10/dbaaa6d9929079482655c05af9f9c8491fa04aa5a24460b540b8383e78bb6bc6580cddbf8e2b15cfc34d68e610c19f5ccb8f0b0a5aea7f00affb3d976ec152ed
languageName: node
linkType: hard
-"jest-watcher@workspace:*, jest-watcher@workspace:packages/jest-watcher":
+"jest-watcher@npm:^30.0.0, jest-watcher@workspace:*, jest-watcher@workspace:packages/jest-watcher":
version: 0.0.0-use.local
resolution: "jest-watcher@workspace:packages/jest-watcher"
dependencies:
@@ -14186,6 +14247,13 @@ __metadata:
languageName: node
linkType: hard
+"js-tokens@npm:^8.0.0":
+ version: 8.0.3
+ resolution: "js-tokens@npm:8.0.3"
+ checksum: 10/af5ed8ddbc446a868c026599214f4a482ab52461edb82e547949255f98910a14bd81ddab88a8d570d74bd7dc96c6d4df7f963794ec5aaf13c53918cc46b9caa6
+ languageName: node
+ linkType: hard
+
"js-yaml@npm:^3.13.1":
version: 3.14.1
resolution: "js-yaml@npm:3.14.1"
@@ -14216,13 +14284,6 @@ __metadata:
languageName: node
linkType: hard
-"jsc-android@npm:^250231.0.0":
- version: 250231.0.0
- resolution: "jsc-android@npm:250231.0.0"
- checksum: 10/aa5cf773f5d6c4c6ecec42bfd9958b5bd5ec33db7ec87f66152fae96f142220b91b84e54b409ca643a9493dd1b0f273819d46aad8c0d7519c444280815ffb68e
- languageName: node
- linkType: hard
-
"jsc-safe-url@npm:^0.2.2":
version: 0.2.4
resolution: "jsc-safe-url@npm:0.2.4"
@@ -14230,37 +14291,6 @@ __metadata:
languageName: node
linkType: hard
-"jscodeshift@npm:^0.14.0":
- version: 0.14.0
- resolution: "jscodeshift@npm:0.14.0"
- dependencies:
- "@babel/core": "npm:^7.13.16"
- "@babel/parser": "npm:^7.13.16"
- "@babel/plugin-proposal-class-properties": "npm:^7.13.0"
- "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.13.8"
- "@babel/plugin-proposal-optional-chaining": "npm:^7.13.12"
- "@babel/plugin-transform-modules-commonjs": "npm:^7.13.8"
- "@babel/preset-flow": "npm:^7.13.13"
- "@babel/preset-typescript": "npm:^7.13.0"
- "@babel/register": "npm:^7.13.16"
- babel-core: "npm:^7.0.0-bridge.0"
- chalk: "npm:^4.1.2"
- flow-parser: "npm:0.*"
- graceful-fs: "npm:^4.2.4"
- micromatch: "npm:^4.0.4"
- neo-async: "npm:^2.5.0"
- node-dir: "npm:^0.1.17"
- recast: "npm:^0.21.0"
- temp: "npm:^0.8.4"
- write-file-atomic: "npm:^2.3.0"
- peerDependencies:
- "@babel/preset-env": ^7.1.6
- bin:
- jscodeshift: bin/jscodeshift.js
- checksum: 10/fc355dde2287c026a682e8b38df5d8d1ff5c9ca044dfd558f2b6d17bb28f9257063bd0e47690814612e572804caa5383733c9d8ca8bc18e70bcee43e0458df59
- languageName: node
- linkType: hard
-
"jsdoc-type-pratt-parser@npm:~4.1.0":
version: 4.1.0
resolution: "jsdoc-type-pratt-parser@npm:4.1.0"
@@ -14326,13 +14356,6 @@ __metadata:
languageName: node
linkType: hard
-"json-parse-better-errors@npm:^1.0.1":
- version: 1.0.2
- resolution: "json-parse-better-errors@npm:1.0.2"
- checksum: 10/5553232045359b767b0f2039a6777fede1a8d7dca1a0ffb1f9ef73a7519489ae7f566b2e040f2b4c38edb8e35e37ae07af7f0a52420902f869ee0dbf5dc6c784
- languageName: node
- linkType: hard
-
"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1":
version: 2.3.1
resolution: "json-parse-even-better-errors@npm:2.3.1"
@@ -14732,6 +14755,13 @@ __metadata:
languageName: node
linkType: hard
+"lru-cache@npm:^7.14.1":
+ version: 7.18.3
+ resolution: "lru-cache@npm:7.18.3"
+ checksum: 10/6029ca5aba3aacb554e919d7ef804fffd4adfc4c83db00fac8248c7c78811fb6d4b6f70f7fd9d55032b3823446546a007edaa66ad1f2377ae833bd983fac5d98
+ languageName: node
+ linkType: hard
+
"lru-cache@patch:lru-cache@npm:10.4.3#./.yarn/patches/lru-cache-npm-10.4.3-30c10b861a.patch::locator=%40jest%2Fmonorepo%40workspace%3A.":
version: 10.4.3
resolution: "lru-cache@patch:lru-cache@npm%3A10.4.3#./.yarn/patches/lru-cache-npm-10.4.3-30c10b861a.patch::version=10.4.3&hash=e5e8aa&locator=%40jest%2Fmonorepo%40workspace%3A."
@@ -15181,70 +15211,71 @@ __metadata:
languageName: node
linkType: hard
-"metro-babel-transformer@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-babel-transformer@npm:0.81.5"
+"metro-babel-transformer@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-babel-transformer@npm:0.83.2"
dependencies:
"@babel/core": "npm:^7.25.2"
flow-enums-runtime: "npm:^0.0.6"
- hermes-parser: "npm:0.25.1"
+ hermes-parser: "npm:0.32.0"
nullthrows: "npm:^1.1.1"
- checksum: 10/331c079508418378294534e6a7da228dc6b271827c8622a148c1e0dfdd18729f16eeea84e96541e95e7eee126d49180f92540cd39b37a2f96bf5c015456f49a1
+ checksum: 10/8ca98216c3fc32757cbb445d2e42042617b5a2399d3d409759b168fbd3d52aadf8bb2b8471e4b204ddf5c654b7b146397edb7693f48a0582e7e4e169cf3bbfbb
languageName: node
linkType: hard
-"metro-cache-key@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-cache-key@npm:0.81.5"
+"metro-cache-key@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-cache-key@npm:0.83.2"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
- checksum: 10/d5656bc8906ff4366d8093d19304d6ac386c59429e3e7e24050f4bc9f93ca4e04d8062af6bdd28874a5e4b9bcc84f248855933ffa80af56aeed8be5ff02c85bf
+ checksum: 10/ad60492b1db35b7d4eb1f9ed6f8aa79a051dcb1be3183fcd5b0a810e7c4ba5dba5e9f02e131ccd271d6db2efaa9893ef0e316ef26ebb3ab49cb074fada4de1b5
languageName: node
linkType: hard
-"metro-cache@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-cache@npm:0.81.5"
+"metro-cache@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-cache@npm:0.83.2"
dependencies:
exponential-backoff: "npm:^3.1.1"
flow-enums-runtime: "npm:^0.0.6"
- metro-core: "npm:0.81.5"
- checksum: 10/6ffc8283ca9002c2a99a9e787e59c764399218459f9db352b9cb7543bf0f38de973130dfc9587997b6fd206c0b87b7c33def754814505c282286f12938c606d0
+ https-proxy-agent: "npm:^7.0.5"
+ metro-core: "npm:0.83.2"
+ checksum: 10/3183bcd8e0590ab4630f344f9dd4daa3b2371450e7f4546f2b1128b1386ecece204a74a7e3df49a8f3776b5a4a746fe4aa05f952a97e6f4f61deda80be5c55cf
languageName: node
linkType: hard
-"metro-config@npm:0.81.5, metro-config@npm:^0.81.0":
- version: 0.81.5
- resolution: "metro-config@npm:0.81.5"
+"metro-config@npm:0.83.2, metro-config@npm:^0.83.1":
+ version: 0.83.2
+ resolution: "metro-config@npm:0.83.2"
dependencies:
connect: "npm:^3.6.5"
- cosmiconfig: "npm:^5.0.5"
flow-enums-runtime: "npm:^0.0.6"
jest-validate: "npm:^29.7.0"
- metro: "npm:0.81.5"
- metro-cache: "npm:0.81.5"
- metro-core: "npm:0.81.5"
- metro-runtime: "npm:0.81.5"
- checksum: 10/181775bdb3676f9ecd81387a31ca5ceda42f982f7871029e3f606d21aa2d62416bbd61df5e2fd0f13a7242a0144bbf10c7fd4af65839058271a1f823f2970c9b
+ metro: "npm:0.83.2"
+ metro-cache: "npm:0.83.2"
+ metro-core: "npm:0.83.2"
+ metro-runtime: "npm:0.83.2"
+ yaml: "npm:^2.6.1"
+ checksum: 10/830696bb515ad421f1a25003d64c01bca580b2485c69266e03faf0c8f36f55283388fda5505f53ae400f8298502f712aab6c76655e45996907588288d2586c6b
languageName: node
linkType: hard
-"metro-core@npm:0.81.5, metro-core@npm:^0.81.0":
- version: 0.81.5
- resolution: "metro-core@npm:0.81.5"
+"metro-core@npm:0.83.2, metro-core@npm:^0.83.1":
+ version: 0.83.2
+ resolution: "metro-core@npm:0.83.2"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
lodash.throttle: "npm:^4.1.1"
- metro-resolver: "npm:0.81.5"
- checksum: 10/9ecf5b646ec7cc3d5de7d2ebd21e37713d7b86b68a6e94ec911b2c73a20d7abd972406e2ffa2084f2d156ed5f767fe5658c5c2cc3343f3ed10fc276fe385aa84
+ metro-resolver: "npm:0.83.2"
+ checksum: 10/dbbef6b6d0cdb76ff808928cda59086aa4fc04a50ff76be8e19bd181d9cf270f4fe0a6b60883d0230aeeba2ba65a68875af549c83c2cfee5a1f0988ed1b4fccd
languageName: node
linkType: hard
-"metro-file-map@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-file-map@npm:0.81.5"
+"metro-file-map@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-file-map@npm:0.83.2"
dependencies:
- debug: "npm:^2.2.0"
+ debug: "npm:^4.4.0"
fb-watchman: "npm:^2.0.0"
flow-enums-runtime: "npm:^0.0.6"
graceful-fs: "npm:^4.2.4"
@@ -15253,76 +15284,76 @@ __metadata:
micromatch: "npm:^4.0.4"
nullthrows: "npm:^1.1.1"
walker: "npm:^1.0.7"
- checksum: 10/70ce4447c9eae21a7f06081e3999241f21476817f0dd242fcb9591696cf93b0aabbf30dd5542b9b3fd9bfbdf5a7c02d863e0e0a4206175fd621cd7e476f8b16d
+ checksum: 10/349a52c74cd02a1db75d0677c82e31750098e74a67bd1e10b2241e296897bfb20de2d8a2f27d7c292e2b3f492a36a191eb3c1bd5d09d5758b8febd36db86e58f
languageName: node
linkType: hard
-"metro-minify-terser@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-minify-terser@npm:0.81.5"
+"metro-minify-terser@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-minify-terser@npm:0.83.2"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
terser: "npm:^5.15.0"
- checksum: 10/4623743676e2bb8bb74b99bd2b2c26feb2509a8db5596f265e21042b43e84611f9025977ae298b8271644cb27e8da8a60b8dff791f57517b4bd2f5ae366f2945
+ checksum: 10/ee164bdd3ddf797e1b0f9fd71960b662b40fc3abead77521b1e1435291d38cc151442348362d6afee0596d52fcff48cc6a055a04a7928905e9557968e05293ac
languageName: node
linkType: hard
-"metro-resolver@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-resolver@npm:0.81.5"
+"metro-resolver@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-resolver@npm:0.83.2"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
- checksum: 10/3f20592755ac52db973a8c111adddad7430322b0b27c5d3d2cf2e2ff73e0693922f98b32a9a46941abc97b604cfb116b0e42c64f005e5c002460fe141a4e5847
+ checksum: 10/2ba0cdda5c5a3ddac72fd486a310892638ba7d67a736246ec128674dfa6217d6169bdd0f811874435eae37f0201d72735fe7dddfc0c83a9e1439f05994bc293a
languageName: node
linkType: hard
-"metro-runtime@npm:0.81.5, metro-runtime@npm:^0.81.0":
- version: 0.81.5
- resolution: "metro-runtime@npm:0.81.5"
+"metro-runtime@npm:0.83.2, metro-runtime@npm:^0.83.1":
+ version: 0.83.2
+ resolution: "metro-runtime@npm:0.83.2"
dependencies:
"@babel/runtime": "npm:^7.25.0"
flow-enums-runtime: "npm:^0.0.6"
- checksum: 10/86523a8fb5e1016d886f13f470e2aa0c3cd8f69ccab7094fb07676c05a7115f6e9af1f5fa377e80f426023816afcbf31468fb6a483181b054868358a25e4e59c
+ checksum: 10/1666e0e5c51d39f916642ed3918cf1996f76e82366ba9ca3132d6c11c5c62a1ab1115e4aa325f0fc9b8cefbe62d6ca8d1948cfde2ee78963491deafcbc79adba
languageName: node
linkType: hard
-"metro-source-map@npm:0.81.5, metro-source-map@npm:^0.81.0":
- version: 0.81.5
- resolution: "metro-source-map@npm:0.81.5"
+"metro-source-map@npm:0.83.2, metro-source-map@npm:^0.83.1":
+ version: 0.83.2
+ resolution: "metro-source-map@npm:0.83.2"
dependencies:
"@babel/traverse": "npm:^7.25.3"
"@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3"
"@babel/types": "npm:^7.25.2"
flow-enums-runtime: "npm:^0.0.6"
invariant: "npm:^2.2.4"
- metro-symbolicate: "npm:0.81.5"
+ metro-symbolicate: "npm:0.83.2"
nullthrows: "npm:^1.1.1"
- ob1: "npm:0.81.5"
+ ob1: "npm:0.83.2"
source-map: "npm:^0.5.6"
vlq: "npm:^1.0.0"
- checksum: 10/6c77706ac5720a18dc7e25fc8b209de6fa386fcd2b9f79e3d88dbf360f5a0f4d4684950ee2243b1418b8e048a0aeb33c257875d1502a5813c1b330331c5b0eba
+ checksum: 10/6253f6aa9a19ff35d70a08e1a434b9641874392e3cccec6abc8dcbac1c3e9289e348fa37960f16581c386e8f9ba743631ecc8ed5bf42817a5d5c54b6784c63b5
languageName: node
linkType: hard
-"metro-symbolicate@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-symbolicate@npm:0.81.5"
+"metro-symbolicate@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-symbolicate@npm:0.83.2"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
invariant: "npm:^2.2.4"
- metro-source-map: "npm:0.81.5"
+ metro-source-map: "npm:0.83.2"
nullthrows: "npm:^1.1.1"
source-map: "npm:^0.5.6"
vlq: "npm:^1.0.0"
bin:
metro-symbolicate: src/index.js
- checksum: 10/184290f49eaa605e84157bc5d3befef219806bd13d14c5bcd4eeaac4e360fc880331b6af5a500980e93db274be1bc550439734849c5d20f384f1e12f3ce4aa28
+ checksum: 10/1ddd82d0f1e236f4eb69c49b319a5446f364aaa421b4301554898abe86d23a452a5fb5113bfef6b6c68c2a697ad3a68fb00919a2f7b9b73a040c92689002a8d4
languageName: node
linkType: hard
-"metro-transform-plugins@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-transform-plugins@npm:0.81.5"
+"metro-transform-plugins@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-transform-plugins@npm:0.83.2"
dependencies:
"@babel/core": "npm:^7.25.2"
"@babel/generator": "npm:^7.25.0"
@@ -15330,34 +15361,34 @@ __metadata:
"@babel/traverse": "npm:^7.25.3"
flow-enums-runtime: "npm:^0.0.6"
nullthrows: "npm:^1.1.1"
- checksum: 10/e5108548b5b3cdffb775f929a26df0c6bb804565bda35d1c2221b3ebf4d857002af47969c9b0a08c085f494986832b9f4c8851ab4bce842e7ab99464a5dfa1ca
+ checksum: 10/e3ebef11d64e5e568fde3fe2edc5d7f1e9508b28c7607c14dd711bc29058cbfc97e53edbfee79bd60f58c189e4d74869d87a30488534024fe88503296a7d095a
languageName: node
linkType: hard
-"metro-transform-worker@npm:0.81.5":
- version: 0.81.5
- resolution: "metro-transform-worker@npm:0.81.5"
+"metro-transform-worker@npm:0.83.2":
+ version: 0.83.2
+ resolution: "metro-transform-worker@npm:0.83.2"
dependencies:
"@babel/core": "npm:^7.25.2"
"@babel/generator": "npm:^7.25.0"
"@babel/parser": "npm:^7.25.3"
"@babel/types": "npm:^7.25.2"
flow-enums-runtime: "npm:^0.0.6"
- metro: "npm:0.81.5"
- metro-babel-transformer: "npm:0.81.5"
- metro-cache: "npm:0.81.5"
- metro-cache-key: "npm:0.81.5"
- metro-minify-terser: "npm:0.81.5"
- metro-source-map: "npm:0.81.5"
- metro-transform-plugins: "npm:0.81.5"
+ metro: "npm:0.83.2"
+ metro-babel-transformer: "npm:0.83.2"
+ metro-cache: "npm:0.83.2"
+ metro-cache-key: "npm:0.83.2"
+ metro-minify-terser: "npm:0.83.2"
+ metro-source-map: "npm:0.83.2"
+ metro-transform-plugins: "npm:0.83.2"
nullthrows: "npm:^1.1.1"
- checksum: 10/70159c833192afa0c458b566801991034a171c5bc4ce7a0e2aed7a73614689a1a76738597e64d777cb00c9dbb3b21b59ea09473762eaa7a524681698242e8805
+ checksum: 10/b4286b1b0511e46e2ec265e24138d03d8a794687260beae297de3d378285cce0e06132280dac62d447dfaf55627432c28463939a63136f3a84c2cf6b880d3865
languageName: node
linkType: hard
-"metro@npm:0.81.5, metro@npm:^0.81.0":
- version: 0.81.5
- resolution: "metro@npm:0.81.5"
+"metro@npm:0.83.2, metro@npm:^0.83.1":
+ version: 0.83.2
+ resolution: "metro@npm:0.83.2"
dependencies:
"@babel/code-frame": "npm:^7.24.7"
"@babel/core": "npm:^7.25.2"
@@ -15370,28 +15401,28 @@ __metadata:
chalk: "npm:^4.0.0"
ci-info: "npm:^2.0.0"
connect: "npm:^3.6.5"
- debug: "npm:^2.2.0"
+ debug: "npm:^4.4.0"
error-stack-parser: "npm:^2.0.6"
flow-enums-runtime: "npm:^0.0.6"
graceful-fs: "npm:^4.2.4"
- hermes-parser: "npm:0.25.1"
+ hermes-parser: "npm:0.32.0"
image-size: "npm:^1.0.2"
invariant: "npm:^2.2.4"
jest-worker: "npm:^29.7.0"
jsc-safe-url: "npm:^0.2.2"
lodash.throttle: "npm:^4.1.1"
- metro-babel-transformer: "npm:0.81.5"
- metro-cache: "npm:0.81.5"
- metro-cache-key: "npm:0.81.5"
- metro-config: "npm:0.81.5"
- metro-core: "npm:0.81.5"
- metro-file-map: "npm:0.81.5"
- metro-resolver: "npm:0.81.5"
- metro-runtime: "npm:0.81.5"
- metro-source-map: "npm:0.81.5"
- metro-symbolicate: "npm:0.81.5"
- metro-transform-plugins: "npm:0.81.5"
- metro-transform-worker: "npm:0.81.5"
+ metro-babel-transformer: "npm:0.83.2"
+ metro-cache: "npm:0.83.2"
+ metro-cache-key: "npm:0.83.2"
+ metro-config: "npm:0.83.2"
+ metro-core: "npm:0.83.2"
+ metro-file-map: "npm:0.83.2"
+ metro-resolver: "npm:0.83.2"
+ metro-runtime: "npm:0.83.2"
+ metro-source-map: "npm:0.83.2"
+ metro-symbolicate: "npm:0.83.2"
+ metro-transform-plugins: "npm:0.83.2"
+ metro-transform-worker: "npm:0.83.2"
mime-types: "npm:^2.1.27"
nullthrows: "npm:^1.1.1"
serialize-error: "npm:^2.1.0"
@@ -15401,7 +15432,7 @@ __metadata:
yargs: "npm:^17.6.2"
bin:
metro: src/cli.js
- checksum: 10/c0f44bf151e1a9f7be7946047e638d03f9e42a67b6707a49ba4d737678c91fbca980732033ff0c6f0636e7fd7f127ad4bb22b62283c71ea6c2a3bb6f5d7545e9
+ checksum: 10/524c0f98ce8be619a345f58c39d19e6d0e5745dfd156c9b0a06201e6d9ad59e4405922f09f56fe92a86df9e06b0e89b173a3136640f1ec69c395b9ca34c1b042
languageName: node
linkType: hard
@@ -16001,7 +16032,7 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:3.1.2, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
+"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@@ -16046,7 +16077,7 @@ __metadata:
languageName: node
linkType: hard
-"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6":
+"minimist@npm:^1.2.0, minimist@npm:^1.2.5":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f
@@ -16146,17 +16177,6 @@ __metadata:
languageName: node
linkType: hard
-"mkdirp@npm:^0.5.1":
- version: 0.5.6
- resolution: "mkdirp@npm:0.5.6"
- dependencies:
- minimist: "npm:^1.2.6"
- bin:
- mkdirp: bin/cmd.js
- checksum: 10/0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2
- languageName: node
- linkType: hard
-
"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4":
version: 1.0.4
resolution: "mkdirp@npm:1.0.4"
@@ -16279,7 +16299,7 @@ __metadata:
languageName: node
linkType: hard
-"neo-async@npm:^2.5.0, neo-async@npm:^2.6.2":
+"neo-async@npm:^2.6.2":
version: 2.6.2
resolution: "neo-async@npm:2.6.2"
checksum: 10/1a7948fea86f2b33ec766bc899c88796a51ba76a4afc9026764aedc6e7cde692a09067031e4a1bf6db4f978ccd99e7f5b6c03fe47ad9865c3d4f99050d67e002
@@ -16312,15 +16332,6 @@ __metadata:
languageName: node
linkType: hard
-"node-dir@npm:^0.1.17":
- version: 0.1.17
- resolution: "node-dir@npm:0.1.17"
- dependencies:
- minimatch: "npm:^3.0.2"
- checksum: 10/281fdea12d9c080a7250e5b5afefa3ab39426d40753ec8126a2d1e67f189b8824723abfed74f5d8549c5d78352d8c489fe08d0b067d7684c87c07283d38374a5
- languageName: node
- linkType: hard
-
"node-emoji@npm:^2.1.0":
version: 2.2.0
resolution: "node-emoji@npm:2.2.0"
@@ -16333,7 +16344,7 @@ __metadata:
languageName: node
linkType: hard
-"node-fetch@npm:2.7.0, node-fetch@npm:^2.2.0, node-fetch@npm:^2.7.0":
+"node-fetch@npm:2.7.0, node-fetch@npm:^2.7.0":
version: 2.7.0
resolution: "node-fetch@npm:2.7.0"
dependencies:
@@ -16610,12 +16621,12 @@ __metadata:
languageName: node
linkType: hard
-"ob1@npm:0.81.5":
- version: 0.81.5
- resolution: "ob1@npm:0.81.5"
+"ob1@npm:0.83.2":
+ version: 0.83.2
+ resolution: "ob1@npm:0.83.2"
dependencies:
flow-enums-runtime: "npm:^0.0.6"
- checksum: 10/249ad576be69151a3099207b35b2f6da5c6bb39dfacb9295028ebdc182c2f61f6544d1f6f167af759a77174ab19d8997d1ae6aecdbd9bdc293b2826067e66c5b
+ checksum: 10/8eb482589b66cf46600d1231c2ea50a365f47ee5db0274795d1d3f5c43112e255b931a41ce1ef8a220f31b4fb985fb269c6a54bf7e9719f90dac3f4001a89a6c
languageName: node
linkType: hard
@@ -16633,16 +16644,6 @@ __metadata:
languageName: node
linkType: hard
-"object-is@npm:^1.1.5":
- version: 1.1.6
- resolution: "object-is@npm:1.1.6"
- dependencies:
- call-bind: "npm:^1.0.7"
- define-properties: "npm:^1.2.1"
- checksum: 10/4f6f544773a595da21c69a7531e0e1d6250670f4e09c55f47eb02c516035cfcb1b46ceb744edfd3ecb362309dbccb6d7f88e43bf42e4d4595ac10a329061053a
- languageName: node
- linkType: hard
-
"object-keys@npm:^1.1.1":
version: 1.1.1
resolution: "object-keys@npm:1.1.1"
@@ -16650,7 +16651,7 @@ __metadata:
languageName: node
linkType: hard
-"object.assign@npm:^4.1.0, object.assign@npm:^4.1.4, object.assign@npm:^4.1.7":
+"object.assign@npm:^4.1.0, object.assign@npm:^4.1.7":
version: 4.1.7
resolution: "object.assign@npm:4.1.7"
dependencies:
@@ -16689,10 +16690,10 @@ __metadata:
languageName: node
linkType: hard
-"on-headers@npm:~1.0.2":
- version: 1.0.2
- resolution: "on-headers@npm:1.0.2"
- checksum: 10/870766c16345855e2012e9422ba1ab110c7e44ad5891a67790f84610bd70a72b67fdd71baf497295f1d1bf38dd4c92248f825d48729c53c0eae5262fb69fa171
+"on-headers@npm:~1.1.0":
+ version: 1.1.0
+ resolution: "on-headers@npm:1.1.0"
+ checksum: 10/98aa64629f986fb8cc4517dd8bede73c980e31208cba97f4442c330959f60ced3dc6214b83420491f5111fc7c4f4343abe2ea62c85f505cf041d67850f238776
languageName: node
linkType: hard
@@ -17012,16 +17013,6 @@ __metadata:
languageName: node
linkType: hard
-"parse-json@npm:^4.0.0":
- version: 4.0.0
- resolution: "parse-json@npm:4.0.0"
- dependencies:
- error-ex: "npm:^1.3.1"
- json-parse-better-errors: "npm:^1.0.1"
- checksum: 10/0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5
- languageName: node
- linkType: hard
-
"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0":
version: 5.2.0
resolution: "parse-json@npm:5.2.0"
@@ -17224,7 +17215,7 @@ __metadata:
languageName: node
linkType: hard
-"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1":
+"picocolors@npm:1.1.1, picocolors@npm:^1.0.0, picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045
@@ -18554,13 +18545,13 @@ __metadata:
languageName: node
linkType: hard
-"react-devtools-core@npm:^5.3.1":
- version: 5.3.2
- resolution: "react-devtools-core@npm:5.3.2"
+"react-devtools-core@npm:^6.1.5":
+ version: 6.1.5
+ resolution: "react-devtools-core@npm:6.1.5"
dependencies:
shell-quote: "npm:^1.6.1"
ws: "npm:^7"
- checksum: 10/640123f775daeb2176ebc9caf85b1cb9dbb147cbb607f221254ac4967530ddf96332a582d5b169c840984220596a23780ed6f9b37c37461160e9b623f5f4caee
+ checksum: 10/0323f1d006979374b79ac83fced5bb10c04f2817d7bd4338074ead815ff441b943290d563d7796233767dd973787116a4b3c62040de4d770e0ae5b207fc8d480
languageName: node
linkType: hard
@@ -18702,57 +18693,53 @@ __metadata:
languageName: node
linkType: hard
-"react-native@npm:0.76.6":
- version: 0.76.6
- resolution: "react-native@npm:0.76.6"
+"react-native@npm:0.81.4":
+ version: 0.81.4
+ resolution: "react-native@npm:0.81.4"
dependencies:
- "@jest/create-cache-key-function": "npm:^29.6.3"
- "@react-native/assets-registry": "npm:0.76.6"
- "@react-native/codegen": "npm:0.76.6"
- "@react-native/community-cli-plugin": "npm:0.76.6"
- "@react-native/gradle-plugin": "npm:0.76.6"
- "@react-native/js-polyfills": "npm:0.76.6"
- "@react-native/normalize-colors": "npm:0.76.6"
- "@react-native/virtualized-lists": "npm:0.76.6"
+ "@jest/create-cache-key-function": "npm:^29.7.0"
+ "@react-native/assets-registry": "npm:0.81.4"
+ "@react-native/codegen": "npm:0.81.4"
+ "@react-native/community-cli-plugin": "npm:0.81.4"
+ "@react-native/gradle-plugin": "npm:0.81.4"
+ "@react-native/js-polyfills": "npm:0.81.4"
+ "@react-native/normalize-colors": "npm:0.81.4"
+ "@react-native/virtualized-lists": "npm:0.81.4"
abort-controller: "npm:^3.0.0"
anser: "npm:^1.4.9"
ansi-regex: "npm:^5.0.0"
babel-jest: "npm:^29.7.0"
- babel-plugin-syntax-hermes-parser: "npm:^0.23.1"
+ babel-plugin-syntax-hermes-parser: "npm:0.29.1"
base64-js: "npm:^1.5.1"
- chalk: "npm:^4.0.0"
commander: "npm:^12.0.0"
- event-target-shim: "npm:^5.0.1"
flow-enums-runtime: "npm:^0.0.6"
glob: "npm:^7.1.1"
invariant: "npm:^2.2.4"
- jest-environment-node: "npm:^29.6.3"
- jsc-android: "npm:^250231.0.0"
+ jest-environment-node: "npm:^29.7.0"
memoize-one: "npm:^5.0.0"
- metro-runtime: "npm:^0.81.0"
- metro-source-map: "npm:^0.81.0"
- mkdirp: "npm:^0.5.1"
+ metro-runtime: "npm:^0.83.1"
+ metro-source-map: "npm:^0.83.1"
nullthrows: "npm:^1.1.1"
pretty-format: "npm:^29.7.0"
promise: "npm:^8.3.0"
- react-devtools-core: "npm:^5.3.1"
+ react-devtools-core: "npm:^6.1.5"
react-refresh: "npm:^0.14.0"
regenerator-runtime: "npm:^0.13.2"
- scheduler: "npm:0.24.0-canary-efb381bbf-20230505"
+ scheduler: "npm:0.26.0"
semver: "npm:^7.1.3"
stacktrace-parser: "npm:^0.1.10"
whatwg-fetch: "npm:^3.0.0"
ws: "npm:^6.2.3"
yargs: "npm:^17.6.2"
peerDependencies:
- "@types/react": ^18.2.6
- react: ^18.2.0
+ "@types/react": ^19.1.0
+ react: ^19.1.0
peerDependenciesMeta:
"@types/react":
optional: true
bin:
react-native: cli.js
- checksum: 10/81a613fb10e5277d1a780dc6dd6b43ebb1bb6a5e576b3334a844b57fa80f8cc45fec35b47e05d168786345def0a9f31b953a151bd79d0e9af1651beb9e7ab9ee
+ checksum: 10/a4e27ffecd7c8acd59ae957f79818173c02057e75352fc39ec5271a27c2a9301e55160bf01bbf87b312034a1427dd5e56d2fa2f3d38c0a7f605a8f1941e0456a
languageName: node
linkType: hard
@@ -18929,25 +18916,6 @@ __metadata:
languageName: node
linkType: hard
-"readline@npm:^1.3.0":
- version: 1.3.0
- resolution: "readline@npm:1.3.0"
- checksum: 10/2cb7c274333fe1ed55e1bd06c670a32bd9eae5324d8e1fafb9af5c128dfde85601d59defe47947788b0682d5e9efeae6b88ea5fe233d5236a02f382a0b0ad4c3
- languageName: node
- linkType: hard
-
-"recast@npm:^0.21.0":
- version: 0.21.5
- resolution: "recast@npm:0.21.5"
- dependencies:
- ast-types: "npm:0.15.2"
- esprima: "npm:~4.0.0"
- source-map: "npm:~0.6.1"
- tslib: "npm:^2.0.1"
- checksum: 10/b41da2bcf7e705511db2f27d17420ace027de8dd167de9f19190d4988a1f80d112f60c095101ac2f145c8657ddde0c5133eb71df20504efaf3fd9d76ad07e15d
- languageName: node
- linkType: hard
-
"rechoir@npm:^0.6.2":
version: 0.6.2
resolution: "rechoir@npm:0.6.2"
@@ -19062,7 +19030,7 @@ __metadata:
languageName: node
linkType: hard
-"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4":
+"regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4":
version: 1.5.4
resolution: "regexp.prototype.flags@npm:1.5.4"
dependencies:
@@ -19316,13 +19284,6 @@ __metadata:
languageName: node
linkType: hard
-"resolve-from@npm:^3.0.0":
- version: 3.0.0
- resolution: "resolve-from@npm:3.0.0"
- checksum: 10/c4189f1592a777f7d51c1ff6153df18b5d062c831fb0c623b4b87736c8a73c08e4eaab19e807399287040791f3e7aa0877f05f9d86739d3ef1ef0c727e9fe06c
- languageName: node
- linkType: hard
-
"resolve-from@npm:^4.0.0":
version: 4.0.0
resolution: "resolve-from@npm:4.0.0"
@@ -19429,17 +19390,6 @@ __metadata:
languageName: node
linkType: hard
-"rimraf@npm:~2.6.2":
- version: 2.6.3
- resolution: "rimraf@npm:2.6.3"
- dependencies:
- glob: "npm:^7.1.3"
- bin:
- rimraf: ./bin.js
- checksum: 10/756419f2fa99aa119c46a9fc03e09d84ecf5421a80a72d1944c5088c9e4671e77128527a900a313ed9d3fdbdd37e2ae05486cd7e9116d5812d8c31f2399d7c86
- languageName: node
- linkType: hard
-
"rollup@npm:^2.43.1":
version: 2.79.2
resolution: "rollup@npm:2.79.2"
@@ -19564,12 +19514,10 @@ __metadata:
languageName: node
linkType: hard
-"scheduler@npm:0.24.0-canary-efb381bbf-20230505":
- version: 0.24.0-canary-efb381bbf-20230505
- resolution: "scheduler@npm:0.24.0-canary-efb381bbf-20230505"
- dependencies:
- loose-envify: "npm:^1.1.0"
- checksum: 10/862881c8d3ece854331516cc048e26a86af461e896ab412506a5b1ffcc82990a08445e0127545ab524df15f88c2a691d8505fc2226a9bddf99bf8a8425bdcc0e
+"scheduler@npm:0.26.0":
+ version: 0.26.0
+ resolution: "scheduler@npm:0.26.0"
+ checksum: 10/1ecf2e5d7de1a7a132796834afe14a2d589ba7e437615bd8c06f3e0786a3ac3434655e67aac8755d9b14e05754c177e49c064261de2673aaa3c926bc98caa002
languageName: node
linkType: hard
@@ -19633,7 +19581,7 @@ __metadata:
languageName: node
linkType: hard
-"selfsigned@npm:^2.1.1, selfsigned@npm:^2.4.1":
+"selfsigned@npm:^2.1.1":
version: 2.4.1
resolution: "selfsigned@npm:2.4.1"
dependencies:
@@ -19670,7 +19618,7 @@ __metadata:
languageName: node
linkType: hard
-"semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1, semver@npm:^7.7.2":
+"semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1, semver@npm:^7.7.2":
version: 7.7.2
resolution: "semver@npm:7.7.2"
bin:
@@ -19757,7 +19705,7 @@ __metadata:
languageName: node
linkType: hard
-"serve-static@npm:1.16.2, serve-static@npm:^1.13.1":
+"serve-static@npm:1.16.2, serve-static@npm:^1.16.2":
version: 1.16.2
resolution: "serve-static@npm:1.16.2"
dependencies:
@@ -19921,7 +19869,7 @@ __metadata:
languageName: node
linkType: hard
-"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6, side-channel@npm:^1.1.0":
+"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0":
version: 1.1.0
resolution: "side-channel@npm:1.1.0"
dependencies:
@@ -20275,7 +20223,7 @@ __metadata:
languageName: node
linkType: hard
-"stack-utils@npm:^2.0.3, stack-utils@npm:^2.0.6":
+"stack-utils@npm:^2.0.6":
version: 2.0.6
resolution: "stack-utils@npm:2.0.6"
dependencies:
@@ -20321,16 +20269,6 @@ __metadata:
languageName: node
linkType: hard
-"stop-iteration-iterator@npm:^1.0.0":
- version: 1.1.0
- resolution: "stop-iteration-iterator@npm:1.1.0"
- dependencies:
- es-errors: "npm:^1.3.0"
- internal-slot: "npm:^1.1.0"
- checksum: 10/ff36c4db171ee76c936ccfe9541946b77017f12703d4c446652017356816862d3aa029a64e7d4c4ceb484e00ed4a81789333896390d808458638f3a216aa1f41
- languageName: node
- linkType: hard
-
"string-argv@npm:~0.3.1":
version: 0.3.2
resolution: "string-argv@npm:0.3.2"
@@ -20338,7 +20276,7 @@ __metadata:
languageName: node
linkType: hard
-"string-length@npm:^4.0.1, string-length@npm:^4.0.2":
+"string-length@npm:^4.0.2":
version: 4.0.2
resolution: "string-length@npm:4.0.2"
dependencies:
@@ -20348,13 +20286,12 @@ __metadata:
languageName: node
linkType: hard
-"string-length@npm:^5.0.1":
- version: 5.0.1
- resolution: "string-length@npm:5.0.1"
+"string-length@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "string-length@npm:6.0.0"
dependencies:
- char-regex: "npm:^2.0.0"
- strip-ansi: "npm:^7.0.1"
- checksum: 10/71f73b8c8a743e01dcd001bcf1b197db78d5e5e53b12bd898cddaf0961be09f947dfd8c429783db3694b55b05cb5a51de6406c5085ff1aaa10c4771440c8396d
+ strip-ansi: "npm:^7.1.0"
+ checksum: 10/b171e9e193ec292ad71f8b2a36e20478bf1bac8cd5beec062fb126942d627dfd9311959e271e9ab7b0a383d16b85b9e25a183d15786e30f22104d152e7627f99
languageName: node
linkType: hard
@@ -20722,15 +20659,6 @@ __metadata:
languageName: node
linkType: hard
-"temp@npm:^0.8.4":
- version: 0.8.4
- resolution: "temp@npm:0.8.4"
- dependencies:
- rimraf: "npm:~2.6.2"
- checksum: 10/0a7f76b49637415bc391c3f6e69377cc4c38afac95132b4158fa711e77b70b082fe56fd886f9d11ffab9d148df181a105a93c8b618fb72266eeaa5e5ddbfe37f
- languageName: node
- linkType: hard
-
"tempy@npm:^0.6.0":
version: 0.6.0
resolution: "tempy@npm:0.6.0"
@@ -21050,7 +20978,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.4.0, tslib@npm:^2.6.0":
+"tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.6.0":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7
@@ -22063,7 +21991,7 @@ __metadata:
languageName: node
linkType: hard
-"which-boxed-primitive@npm:^1.0.2, which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1":
+"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1":
version: 1.1.1
resolution: "which-boxed-primitive@npm:1.1.1"
dependencies:
@@ -22097,7 +22025,7 @@ __metadata:
languageName: node
linkType: hard
-"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2":
+"which-collection@npm:^1.0.2":
version: 1.0.2
resolution: "which-collection@npm:1.0.2"
dependencies:
@@ -22109,7 +22037,7 @@ __metadata:
languageName: node
linkType: hard
-"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19":
+"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19":
version: 1.1.19
resolution: "which-typed-array@npm:1.1.19"
dependencies:
@@ -22457,17 +22385,6 @@ __metadata:
languageName: node
linkType: hard
-"write-file-atomic@npm:^2.3.0":
- version: 2.4.3
- resolution: "write-file-atomic@npm:2.4.3"
- dependencies:
- graceful-fs: "npm:^4.1.11"
- imurmurhash: "npm:^0.1.4"
- signal-exit: "npm:^3.0.2"
- checksum: 10/15ce863dce07075d0decedd7c9094f4461e46139d28a758c53162f24c0791c16cd2e7a76baa5b47b1a851fbb51e16f2fab739afb156929b22628f3225437135c
- languageName: node
- linkType: hard
-
"write-file-atomic@npm:^3.0.3":
version: 3.0.3
resolution: "write-file-atomic@npm:3.0.3"
@@ -22647,6 +22564,15 @@ __metadata:
languageName: node
linkType: hard
+"yaml@npm:^2.6.1":
+ version: 2.8.1
+ resolution: "yaml@npm:2.8.1"
+ bin:
+ yaml: bin.mjs
+ checksum: 10/eae07b3947d405012672ec17ce27348aea7d1fa0534143355d24a43a58f5e05652157ea2182c4fe0604f0540be71f99f1173f9d61018379404507790dff17665
+ languageName: node
+ linkType: hard
+
"yargs-parser@npm:^21.1.1":
version: 21.1.1
resolution: "yargs-parser@npm:21.1.1"