From 5beb6aee826e98491cb86c0447ac1dc8ed096fa2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 13:43:23 +0000 Subject: [PATCH 01/12] Initial plan From 1c10d6931db90bd30c57f3c16d53e6b66c499bd1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 13:47:57 +0000 Subject: [PATCH 02/12] =?UTF-8?q?=F0=9F=92=A5(worker)=20Drop=20CommonJS=20?= =?UTF-8?q?support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: dubzzz <5300235+dubzzz@users.noreply.github.com> --- .changeset/worker-drop-commonjs.md | 5 ++++ .github/workflows/build-status.yml | 8 +++--- packages/worker/README.md | 4 +-- packages/worker/package.cjs-template.json | 3 --- packages/worker/package.json | 27 +++++++++------------ packages/worker/tsconfig.json | 5 +++- packages/worker/tsconfig.publish.json | 3 ++- packages/worker/tsconfig.publish.types.json | 3 ++- 8 files changed, 31 insertions(+), 27 deletions(-) create mode 100644 .changeset/worker-drop-commonjs.md delete mode 100644 packages/worker/package.cjs-template.json diff --git a/.changeset/worker-drop-commonjs.md b/.changeset/worker-drop-commonjs.md new file mode 100644 index 00000000000..8efcdb51ed7 --- /dev/null +++ b/.changeset/worker-drop-commonjs.md @@ -0,0 +1,5 @@ +--- +"@fast-check/worker": major +--- + +💥(worker) Drop CommonJS support diff --git a/.github/workflows/build-status.yml b/.github/workflows/build-status.yml index c3298b706d6..05b0d30ab7f 100644 --- a/.github/workflows/build-status.yml +++ b/.github/workflows/build-status.yml @@ -479,14 +479,14 @@ jobs: - name: Check in CommonJS mode run: | if [ "${{ matrix.ts-version }}" = "5.0" ] || [ "${{ matrix.ts-version }}" = "5.7" ]; then - pnpm --filter {./packages/**} --filter '!@fast-check/ava' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.cts" + pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.cts" else pnpm --filter {./packages/**} --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.cts" fi - name: Check in CommonJS mode with NodeNext run: | if [ "${{ matrix.ts-version }}" = "5.0" ] || [ "${{ matrix.ts-version }}" = "5.7" ]; then - pnpm --filter {./packages/**} --filter '!@fast-check/ava' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.cts" + pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.cts" else pnpm --filter {./packages/**} --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.cts" fi @@ -495,14 +495,14 @@ jobs: - name: Check in ES Modules mode run: | if [ "${{ matrix.ts-version }}" = "5.0" ] || [ "${{ matrix.ts-version }}" = "5.7" ]; then - pnpm --filter {./packages/**} --filter '!@fast-check/ava' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.mts" + pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.mts" else pnpm --filter {./packages/**} --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.mts" fi - name: Check in ES Modules mode with NodeNext run: | if [ "${{ matrix.ts-version }}" = "5.0" ] || [ "${{ matrix.ts-version }}" = "5.7" ]; then - pnpm --filter {./packages/**} --filter '!@fast-check/ava' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.mts" + pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.mts" else pnpm --filter {./packages/**} --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.mts" fi diff --git a/packages/worker/README.md b/packages/worker/README.md index 22dde0d9851..61c86145026 100644 --- a/packages/worker/README.md +++ b/packages/worker/README.md @@ -72,10 +72,10 @@ const property = propertyFor(new URL(import.meta.url), { randomSource: 'worker' ## Minimal requirements -- Node ≥14.18.0(1)(2)(3) +- Node ≥20.19.0(1)(2)(3) - TypeScript ≥4.1 (optional) -_(1): `worker_threads` alone would only require Node ≥10.5.0, but our usage of `require(node:*)` forces us to request at least Node ≥14.18.0_ +_(1): Requires support for `require(esm)`._ _(2): this package targets ES2020 specification which is quite well supported (more than 94%) by any Node ≥14.5.0_ diff --git a/packages/worker/package.cjs-template.json b/packages/worker/package.cjs-template.json deleted file mode 100644 index 5bbefffbabe..00000000000 --- a/packages/worker/package.cjs-template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/packages/worker/package.json b/packages/worker/package.json index adcbae01e44..5d7015bdf38 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -3,31 +3,28 @@ "description": "Provide built-ins to run predicates directly within dedicated workers", "version": "0.5.0", "type": "module", - "main": "lib/main.js", "exports": { "./package.json": "./package.json", ".": { - "require": { - "types": "./lib/cjs/main.d.ts", - "default": "./lib/cjs/main.js" - }, - "import": { - "types": "./lib/main.d.ts", - "default": "./lib/main.js" - } + "types": "./lib/main.d.ts", + "default": "./lib/main.js" + } + }, + "typesVersions": { + "*": { + "index": [ + "./lib/main.d.ts" + ] } }, - "module": "lib/main.js", - "types": "lib/main.d.ts", "files": [ "lib" ], "scripts": { - "build": "pnpm run build:publish-cjs && pnpm run build:publish-esm && pnpm run build:publish-types", + "build": "pnpm run build:publish-esm && pnpm run build:publish-types", "build-ci": "pnpm run build", - "build:publish-types": "tsc -p tsconfig.publish.types.json && tsc -p tsconfig.publish.types.json --outDir lib/cjs", - "build:publish-cjs": "tsc -p tsconfig.publish.json --outDir lib/cjs && cp package.cjs-template.json lib/cjs/package.json", - "build:publish-esm": "tsc -p tsconfig.publish.json --module es2015 --moduleResolution node", + "build:publish-types": "tsc -p tsconfig.publish.types.json", + "build:publish-esm": "tsc -p tsconfig.publish.json", "test-bundle:cjs": "node test-bundle/main.cjs", "test-bundle:mjs": "node test-bundle/main.mjs", "test-bundle": "pnpm run test-bundle:cjs && pnpm run test-bundle:mjs", diff --git a/packages/worker/tsconfig.json b/packages/worker/tsconfig.json index 51bf44c3454..9fed1d09972 100644 --- a/packages/worker/tsconfig.json +++ b/packages/worker/tsconfig.json @@ -1,3 +1,6 @@ { - "extends": "../../tsconfig.common.json" + "extends": "../../tsconfig.common.json", + "compilerOptions": { + "module": "node20" + } } diff --git a/packages/worker/tsconfig.publish.json b/packages/worker/tsconfig.publish.json index ed67654fec7..0ab96c43990 100644 --- a/packages/worker/tsconfig.publish.json +++ b/packages/worker/tsconfig.publish.json @@ -1,7 +1,8 @@ { "extends": "../../tsconfig.publish.json", "compilerOptions": { - "outDir": "lib/" + "outDir": "lib/", + "module": "node20" }, "include": ["src/"] } diff --git a/packages/worker/tsconfig.publish.types.json b/packages/worker/tsconfig.publish.types.json index e54be824c81..5d54fdac44d 100644 --- a/packages/worker/tsconfig.publish.types.json +++ b/packages/worker/tsconfig.publish.types.json @@ -1,7 +1,8 @@ { "extends": "../../tsconfig.publish.types.json", "compilerOptions": { - "outDir": "lib/" + "outDir": "lib/", + "module": "node20" }, "include": ["src/"] } From b6d9682574cc4dc033a1c27bc994937e936f0c5d Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Sat, 24 Jan 2026 18:43:42 +0100 Subject: [PATCH 03/12] Update .changeset/worker-drop-commonjs.md --- .changeset/worker-drop-commonjs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/worker-drop-commonjs.md b/.changeset/worker-drop-commonjs.md index 8efcdb51ed7..a30323221ab 100644 --- a/.changeset/worker-drop-commonjs.md +++ b/.changeset/worker-drop-commonjs.md @@ -1,5 +1,5 @@ --- -"@fast-check/worker": major +"@fast-check/worker": minor --- 💥(worker) Drop CommonJS support From f74c657c8c27d011579f7fb3b32a1529dd5c2f88 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Jan 2026 22:41:50 +0000 Subject: [PATCH 04/12] Merge main into copilot/add-worker-functionality Co-authored-by: dubzzz <5300235+dubzzz@users.noreply.github.com> --- .changeset/drop-poisoning-commonjs.md | 5 ++ .changeset/thirty-beds-relax.md | 5 ++ .changeset/twelve-radios-ring.md | 5 ++ .github/workflows/add-contributor.yml | 2 +- .github/workflows/build-status.yml | 50 +++++++++---------- .github/workflows/codeql-analysis.yml | 6 +-- .github/workflows/generate-changelog.yml | 2 +- .github/workflows/pr-format.yml | 2 +- .github/workflows/pr-pnpm-conflicts.yml | 2 +- .github/workflows/safe-release.yml | 2 +- .github/workflows/scorecard.yml | 4 +- .github/workflows/validate-pr-title.yml | 2 +- .github/workflows/zizmor.yml | 2 +- examples/package.json | 2 +- package.json | 2 +- packages/ava/package.json | 5 +- packages/fast-check/package.json | 6 +-- packages/poisoning/README.md | 2 +- packages/poisoning/package.cjs-template.json | 3 -- packages/poisoning/package.json | 26 ++++------ .../src/internals/FilterNonEligibleDiffs.ts | 2 +- .../internals/FilterNonEligibleDiffs.spec.ts | 6 +-- packages/poisoning/tsconfig.json | 5 +- packages/poisoning/tsconfig.publish.json | 3 +- .../poisoning/tsconfig.publish.types.json | 3 +- pnpm-lock.yaml | 22 ++++---- website/package.json | 2 +- 27 files changed, 93 insertions(+), 85 deletions(-) create mode 100644 .changeset/drop-poisoning-commonjs.md create mode 100644 .changeset/thirty-beds-relax.md create mode 100644 .changeset/twelve-radios-ring.md delete mode 100644 packages/poisoning/package.cjs-template.json diff --git a/.changeset/drop-poisoning-commonjs.md b/.changeset/drop-poisoning-commonjs.md new file mode 100644 index 00000000000..7632df97444 --- /dev/null +++ b/.changeset/drop-poisoning-commonjs.md @@ -0,0 +1,5 @@ +--- +"@fast-check/poisoning": minor +--- + +💥(poisoning) Drop CommonJS support diff --git a/.changeset/thirty-beds-relax.md b/.changeset/thirty-beds-relax.md new file mode 100644 index 00000000000..e8f44f17316 --- /dev/null +++ b/.changeset/thirty-beds-relax.md @@ -0,0 +1,5 @@ +--- +"@fast-check/ava": patch +--- + +🔧(ava) More concise exports diff --git a/.changeset/twelve-radios-ring.md b/.changeset/twelve-radios-ring.md new file mode 100644 index 00000000000..1860ee5efff --- /dev/null +++ b/.changeset/twelve-radios-ring.md @@ -0,0 +1,5 @@ +--- +"fast-check": patch +--- + +📝 Change keywords of the package diff --git a/.github/workflows/add-contributor.yml b/.github/workflows/add-contributor.yml index 7f775f9906e..247d01c2946 100644 --- a/.github/workflows/add-contributor.yml +++ b/.github/workflows/add-contributor.yml @@ -20,7 +20,7 @@ jobs: contents: write pull-requests: write steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 persist-credentials: true diff --git a/.github/workflows/build-status.yml b/.github/workflows/build-status.yml index 05b0d30ab7f..4d91d012ff3 100644 --- a/.github/workflows/build-status.yml +++ b/.github/workflows/build-status.yml @@ -25,7 +25,7 @@ jobs: name: 'Warm up pnpm cache' runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -46,7 +46,7 @@ jobs: matrix: os: ['macos-latest', 'windows-latest'] steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -68,7 +68,7 @@ jobs: needs: warmup_pnpm_cache runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 @@ -86,7 +86,7 @@ jobs: needs: warmup_pnpm_cache runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -105,7 +105,7 @@ jobs: needs: warmup_pnpm_cache runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -126,7 +126,7 @@ jobs: needs: warmup_pnpm_cache runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -158,7 +158,7 @@ jobs: - production_packages runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -186,7 +186,7 @@ jobs: - production_packages runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -254,7 +254,7 @@ jobs: ENABLE_COVERAGE: ${{ matrix.os == 'macos-latest' }} SKIP_EXPENSIVE: ${{ matrix.os == 'windows-latest' }} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -306,7 +306,7 @@ jobs: - test runs-on: 'ubuntu-latest' steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Download coverage @@ -329,7 +329,7 @@ jobs: - production_packages runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 # all history in order to be able to show last-edited-at dates @@ -386,7 +386,7 @@ jobs: - production_packages runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -451,7 +451,7 @@ jobs: - '5.0' # Other release channels for TypeScript steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install pnpm @@ -479,14 +479,14 @@ jobs: - name: Check in CommonJS mode run: | if [ "${{ matrix.ts-version }}" = "5.0" ] || [ "${{ matrix.ts-version }}" = "5.7" ]; then - pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.cts" + pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/poisoning' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.cts" else pnpm --filter {./packages/**} --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.cts" fi - name: Check in CommonJS mode with NodeNext run: | if [ "${{ matrix.ts-version }}" = "5.0" ] || [ "${{ matrix.ts-version }}" = "5.7" ]; then - pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.cts" + pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/poisoning' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.cts" else pnpm --filter {./packages/**} --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.cts" fi @@ -495,14 +495,14 @@ jobs: - name: Check in ES Modules mode run: | if [ "${{ matrix.ts-version }}" = "5.0" ] || [ "${{ matrix.ts-version }}" = "5.7" ]; then - pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.mts" + pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/poisoning' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.mts" else pnpm --filter {./packages/**} --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict *.mts" fi - name: Check in ES Modules mode with NodeNext run: | if [ "${{ matrix.ts-version }}" = "5.0" ] || [ "${{ matrix.ts-version }}" = "5.7" ]; then - pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.mts" + pnpm --filter {./packages/**} --filter '!@fast-check/ava' --filter '!@fast-check/poisoning' --filter '!@fast-check/worker' --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.mts" else pnpm --filter {./packages/**} --parallel -c exec "cd test-types && pnpm --package typescript@${{ matrix.ts-version }} dlx tsc --noEmit --skipLibCheck --strict --module NodeNext --moduleResolution NodeNext *.mts" fi @@ -595,7 +595,7 @@ jobs: outputs: tag_count: ${{steps.tag_count.outputs.count}} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 @@ -613,7 +613,7 @@ jobs: status: ${{steps.check_has_tag.outcome}} tag: ${{steps.check_has_tag.outputs.tag}} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 @@ -687,7 +687,7 @@ jobs: status: ${{steps.check_has_tag.outcome}} tag: ${{steps.check_has_tag.outputs.tag}} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 @@ -761,7 +761,7 @@ jobs: status: ${{steps.check_has_tag.outcome}} tag: ${{steps.check_has_tag.outputs.tag}} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 @@ -835,7 +835,7 @@ jobs: status: ${{steps.check_has_tag.outcome}} tag: ${{steps.check_has_tag.outputs.tag}} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 @@ -909,7 +909,7 @@ jobs: status: ${{steps.check_has_tag.outcome}} tag: ${{steps.check_has_tag.outputs.tag}} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 @@ -983,7 +983,7 @@ jobs: status: ${{steps.check_has_tag.outcome}} tag: ${{steps.check_has_tag.outputs.tag}} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 @@ -1057,7 +1057,7 @@ jobs: status: ${{steps.check_has_tag.outcome}} tag: ${{steps.check_has_tag.outputs.tag}} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 2e462be8671..5fd13f9b5c8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false # We must fetch at least the immediate parents so that if this is @@ -28,9 +28,9 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/init@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11 with: languages: javascript - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/analyze@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11 diff --git a/.github/workflows/generate-changelog.yml b/.github/workflows/generate-changelog.yml index f6c4c01909c..401c0c7e4be 100644 --- a/.github/workflows/generate-changelog.yml +++ b/.github/workflows/generate-changelog.yml @@ -13,7 +13,7 @@ jobs: contents: write pull-requests: write steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: true fetch-depth: 0 diff --git a/.github/workflows/pr-format.yml b/.github/workflows/pr-format.yml index d62e11b1b2f..1c30fb3472f 100644 --- a/.github/workflows/pr-format.yml +++ b/.github/workflows/pr-format.yml @@ -25,7 +25,7 @@ jobs: run: | HEAD_BRANCH=$(gh pr view "$PR_NUMBER" --repo "$REPO" --json headRefName --jq .headRefName) echo "ref=$HEAD_BRANCH" >> $GITHUB_OUTPUT - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ steps.ref.outputs.ref }} fetch-depth: 0 diff --git a/.github/workflows/pr-pnpm-conflicts.yml b/.github/workflows/pr-pnpm-conflicts.yml index 9b807b2b697..0c244479a89 100644 --- a/.github/workflows/pr-pnpm-conflicts.yml +++ b/.github/workflows/pr-pnpm-conflicts.yml @@ -28,7 +28,7 @@ jobs: BASE_BRANCH=$(echo "$PR_INFO" | jq -r '.baseRefName') echo "ref=$HEAD_BRANCH" >> $GITHUB_OUTPUT echo "base=$BASE_BRANCH" >> $GITHUB_OUTPUT - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ steps.ref.outputs.ref }} fetch-depth: 0 diff --git a/.github/workflows/safe-release.yml b/.github/workflows/safe-release.yml index eb5b4711cae..6f827d6e287 100644 --- a/.github/workflows/safe-release.yml +++ b/.github/workflows/safe-release.yml @@ -21,7 +21,7 @@ jobs: name: 'Safe release' runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Check no package from workspace diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0b7535f17cd..013c4f09323 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: 'Checkout code' - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/upload-sarif@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11 with: sarif_file: results.sarif diff --git a/.github/workflows/validate-pr-title.yml b/.github/workflows/validate-pr-title.yml index 0b91df3545a..9e3a2cf166e 100644 --- a/.github/workflows/validate-pr-title.yml +++ b/.github/workflows/validate-pr-title.yml @@ -16,7 +16,7 @@ jobs: contents: read pull-requests: read steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Validate PR title diff --git a/.github/workflows/zizmor.yml b/.github/workflows/zizmor.yml index 2cc696f74be..4d1e766f935 100644 --- a/.github/workflows/zizmor.yml +++ b/.github/workflows/zizmor.yml @@ -30,7 +30,7 @@ jobs: name: 'Audit GitHub Actions workflows' runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install zizmor diff --git a/examples/package.json b/examples/package.json index c2dd01bd8d7..657f0efaaaa 100644 --- a/examples/package.json +++ b/examples/package.json @@ -18,7 +18,7 @@ "express": "^5.2.1", "fast-check": "workspace:*", "happy-dom": "^20.3.4", - "lodash": "^4.17.21", + "lodash": "^4.17.23", "pure-rand": "^7.0.0", "react": "^19.2.3", "react-dom": "^19.2.3", diff --git a/package.json b/package.json index 66ad5cf178b..81a8b32fa2a 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "globals": "^17.0.0", "pkg-pr-new": "^0.0.62", "prettier": "3.7.4", - "publint": "^0.3.16", + "publint": "^0.3.17", "typescript": "~5.9.3", "typescript-eslint": "^8.53.1", "vitest": "^4.0.5" diff --git a/packages/ava/package.json b/packages/ava/package.json index 725204e9799..0daad78484f 100644 --- a/packages/ava/package.json +++ b/packages/ava/package.json @@ -5,10 +5,7 @@ "type": "module", "exports": { "./package.json": "./package.json", - ".": { - "types": "./lib/ava-fast-check.d.ts", - "default": "./lib/ava-fast-check.js" - } + ".": "./lib/ava-fast-check.js" }, "typesVersions": { "*": { diff --git a/packages/fast-check/package.json b/packages/fast-check/package.json index 606f23c1169..067eae55a6f 100644 --- a/packages/fast-check/package.json +++ b/packages/fast-check/package.json @@ -84,12 +84,12 @@ "unit testing", "testing", "quickcheck", - "jscheck", - "jsverify", "faker", "fuzzer", "fuzz", - "jest" + "jest", + "vitest", + "random" ], "tsd": { "directory": "test/type" diff --git a/packages/poisoning/README.md b/packages/poisoning/README.md index 26557aeb232..b45f5416aaa 100644 --- a/packages/poisoning/README.md +++ b/packages/poisoning/README.md @@ -23,4 +23,4 @@ The package comes with: ## Minimal requirements -- Node ≥12.17.0 +- Node ≥20.19.0 diff --git a/packages/poisoning/package.cjs-template.json b/packages/poisoning/package.cjs-template.json deleted file mode 100644 index 5bbefffbabe..00000000000 --- a/packages/poisoning/package.cjs-template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/packages/poisoning/package.json b/packages/poisoning/package.json index c722454bbc9..3b53e4b309c 100644 --- a/packages/poisoning/package.json +++ b/packages/poisoning/package.json @@ -3,31 +3,25 @@ "description": "Set of utilities to ease detection and revert of poisoning", "version": "0.2.3", "type": "module", - "main": "lib/main.js", "exports": { "./package.json": "./package.json", - ".": { - "require": { - "types": "./lib/cjs/main.d.ts", - "default": "./lib/cjs/main.js" - }, - "import": { - "types": "./lib/main.d.ts", - "default": "./lib/main.js" - } + ".": "./lib/main.js" + }, + "typesVersions": { + "*": { + "index": [ + "./lib/main.d.ts" + ] } }, - "module": "lib/main.js", - "types": "lib/main.d.ts", "files": [ "lib" ], "scripts": { - "build": "pnpm run build:publish-cjs && pnpm run build:publish-esm && pnpm run build:publish-types", + "build": "pnpm run build:publish-esm && pnpm run build:publish-types", "build-ci": "pnpm run build", - "build:publish-types": "tsc -p tsconfig.publish.types.json && tsc -p tsconfig.publish.types.json --outDir lib/cjs", - "build:publish-cjs": "tsc -p tsconfig.publish.json --outDir lib/cjs && cp package.cjs-template.json lib/cjs/package.json", - "build:publish-esm": "tsc -p tsconfig.publish.json --module es2015 --moduleResolution node", + "build:publish-types": "tsc -p tsconfig.publish.types.json", + "build:publish-esm": "tsc -p tsconfig.publish.json", "typecheck": "tsc --noEmit" }, "repository": { diff --git a/packages/poisoning/src/internals/FilterNonEligibleDiffs.ts b/packages/poisoning/src/internals/FilterNonEligibleDiffs.ts index 4164c28a3e4..df408611003 100644 --- a/packages/poisoning/src/internals/FilterNonEligibleDiffs.ts +++ b/packages/poisoning/src/internals/FilterNonEligibleDiffs.ts @@ -1,4 +1,4 @@ -import type { GlobalDetails } from './types/AllGlobals'; +import type { GlobalDetails } from './types/AllGlobals.js'; /** Check whether or not a global has to be ignored for diff tracking */ export function shouldIgnoreGlobal( diff --git a/packages/poisoning/test/internals/FilterNonEligibleDiffs.spec.ts b/packages/poisoning/test/internals/FilterNonEligibleDiffs.spec.ts index 1523eb7ac4c..a275f022ec2 100644 --- a/packages/poisoning/test/internals/FilterNonEligibleDiffs.spec.ts +++ b/packages/poisoning/test/internals/FilterNonEligibleDiffs.spec.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest'; -import type { GlobalDetails } from '../../src/internals/types/AllGlobals'; -import { shouldIgnoreGlobal, shouldIgnoreProperty } from '../../src/internals/FilterNonEligibleDiffs'; -import { PoisoningFreeSet } from '../../src/internals/PoisoningFreeSet'; +import type { GlobalDetails } from '../../src/internals/types/AllGlobals.js'; +import { shouldIgnoreGlobal, shouldIgnoreProperty } from '../../src/internals/FilterNonEligibleDiffs.js'; +import { PoisoningFreeSet } from '../../src/internals/PoisoningFreeSet.js'; describe('shouldIgnore{Global,Property}', () => { it('should reject any direct property on globalThis matching the regex', () => { diff --git a/packages/poisoning/tsconfig.json b/packages/poisoning/tsconfig.json index 51bf44c3454..9fed1d09972 100644 --- a/packages/poisoning/tsconfig.json +++ b/packages/poisoning/tsconfig.json @@ -1,3 +1,6 @@ { - "extends": "../../tsconfig.common.json" + "extends": "../../tsconfig.common.json", + "compilerOptions": { + "module": "node20" + } } diff --git a/packages/poisoning/tsconfig.publish.json b/packages/poisoning/tsconfig.publish.json index ed67654fec7..0ab96c43990 100644 --- a/packages/poisoning/tsconfig.publish.json +++ b/packages/poisoning/tsconfig.publish.json @@ -1,7 +1,8 @@ { "extends": "../../tsconfig.publish.json", "compilerOptions": { - "outDir": "lib/" + "outDir": "lib/", + "module": "node20" }, "include": ["src/"] } diff --git a/packages/poisoning/tsconfig.publish.types.json b/packages/poisoning/tsconfig.publish.types.json index e54be824c81..5d54fdac44d 100644 --- a/packages/poisoning/tsconfig.publish.types.json +++ b/packages/poisoning/tsconfig.publish.types.json @@ -1,7 +1,8 @@ { "extends": "../../tsconfig.publish.types.json", "compilerOptions": { - "outDir": "lib/" + "outDir": "lib/", + "module": "node20" }, "include": ["src/"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dfeae4540f0..604dfbb045f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: 3.7.4 version: 3.7.4 publint: - specifier: ^0.3.16 - version: 0.3.16 + specifier: ^0.3.17 + version: 0.3.17 typescript: specifier: ~5.9.3 version: 5.9.3 @@ -90,7 +90,7 @@ importers: specifier: ^20.3.4 version: 20.3.4 lodash: - specifier: ^4.17.21 + specifier: ^4.17.23 version: 4.17.23 pure-rand: specifier: ^7.0.0 @@ -345,7 +345,7 @@ importers: specifier: ^2.1.1 version: 2.1.1 lodash: - specifier: ^4.17.21 + specifier: ^4.17.23 version: 4.17.23 prism-react-renderer: specifier: ^2.4.1 @@ -2587,8 +2587,8 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@publint/pack@0.1.2': - resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} + '@publint/pack@0.1.3': + resolution: {integrity: sha512-dHDWeutAerz+Z2wFYAce7Y51vd4rbLBfUh0BNnyul4xKoVsPUVJBrOAFsJvtvYBwGFJSqKsxyyHf/7evZ8+Q5Q==} engines: {node: '>=18'} '@react-hook/intersection-observer@3.1.2': @@ -8236,8 +8236,8 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - publint@0.3.16: - resolution: {integrity: sha512-MFqyfRLAExPVZdTQFwkAQELzA8idyXzROVOytg6nEJ/GEypXBUmMGrVaID8cTuzRS1U5L8yTOdOJtMXgFUJAeA==} + publint@0.3.17: + resolution: {integrity: sha512-Q3NLegA9XM6usW+dYQRG1g9uEHiYUzcCVBJDJ7yMcWRqVU9LYZUWdqbwMZfmTCFC5PZLQpLAmhvRcQRl3exqkw==} engines: {node: '>=18'} hasBin: true @@ -13480,7 +13480,7 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@publint/pack@0.1.2': {} + '@publint/pack@0.1.3': {} '@react-hook/intersection-observer@3.1.2(react@19.2.3)': dependencies: @@ -20054,9 +20054,9 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - publint@0.3.16: + publint@0.3.17: dependencies: - '@publint/pack': 0.1.2 + '@publint/pack': 0.1.3 package-manager-detector: 1.6.0 picocolors: 1.1.1 sade: 1.8.1 diff --git a/website/package.json b/website/package.json index e20ea7abfd8..fbe864fbf0a 100644 --- a/website/package.json +++ b/website/package.json @@ -24,7 +24,7 @@ "@docusaurus/remark-plugin-npm2yarn": "3.9.2", "@docusaurus/theme-mermaid": "3.9.2", "clsx": "^2.1.1", - "lodash": "^4.17.21", + "lodash": "^4.17.23", "prism-react-renderer": "^2.4.1", "react": "^19.2.3", "react-dom": "^19.2.3" From 6e781d32cc11306ae881bd30d25690c20ea2b00b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:06:18 +0000 Subject: [PATCH 05/12] =?UTF-8?q?=F0=9F=94=A7(jest)=20Add=20Babel=20config?= =?UTF-8?q?uration=20for=20ESM=20worker=20support=20in=20CJS=20mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: dubzzz <5300235+dubzzz@users.noreply.github.com> --- packages/jest/README.md | 39 +++++++++++++++++++++++ packages/jest/babel.config.cjs | 11 +++++++ packages/jest/package.json | 3 ++ packages/jest/test-bundle/jest.config.cjs | 4 +++ packages/jest/test-bundle/resolver.cjs | 4 +++ pnpm-lock.yaml | 9 ++++++ 6 files changed, 70 insertions(+) create mode 100644 packages/jest/babel.config.cjs create mode 100644 packages/jest/test-bundle/resolver.cjs diff --git a/packages/jest/README.md b/packages/jest/README.md index b1ba84eff68..ab0cfc58819 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -83,6 +83,45 @@ describe('with it', () => { **The following feature is experimental!** When used it makes runners able to kill long running synchonous code. Meaning that it will make fast-check able to kill infinite loops blocking the main thread. So far, the feature does not fully support transformations performed via transform steps defined with jest. +#### Configuration for CommonJS with Workers + +**Note:** Starting from version 3.0.0 of `@fast-check/worker`, the package is ESM-only. To use the worker feature in CommonJS mode with Jest, you need to configure Babel to transform the ES modules: + +1. Install the required dependencies: +```bash +npm install --save-dev babel-jest @babel/core @babel/preset-env +``` + +2. Create a `babel.config.cjs` file in your project root: +```js +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { node: 'current' }, + modules: 'commonjs' + } + ] + ] +}; +``` + +3. Update your `jest.config.js` to use Babel for transformation: +```js +module.exports = { + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest' + }, + transformIgnorePatterns: [ + '/node_modules/(?!@fast-check/worker)', + '\\.pnp\\.[^\\/]+$' + ], +}; +``` + +#### Usage Examples + The CommonJS approach would be: ```js diff --git a/packages/jest/babel.config.cjs b/packages/jest/babel.config.cjs new file mode 100644 index 00000000000..e2779a23ad2 --- /dev/null +++ b/packages/jest/babel.config.cjs @@ -0,0 +1,11 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { node: 'current' }, + modules: 'commonjs' + } + ] + ] +}; diff --git a/packages/jest/package.json b/packages/jest/package.json index 8445c5d3d8e..40f81064bb0 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -71,12 +71,15 @@ } }, "devDependencies": { + "@babel/core": "^7.26.0", + "@babel/preset-env": "^7.26.0", "@fast-check/jest": "workspace:*", "@fast-check/worker": "workspace:*", "@jest/expect": "^30.2.0", "@jest/globals": "^30.2.0", "@types/jest": "^30.0.0", "@types/node": "^24.10.7", + "babel-jest": "^30.2.0", "fast-check": "workspace:*", "jest": "^30.2.0", "jest-jasmine2": "^30.2.0", diff --git a/packages/jest/test-bundle/jest.config.cjs b/packages/jest/test-bundle/jest.config.cjs index 7e7b2459dc4..c673ba21d2b 100644 --- a/packages/jest/test-bundle/jest.config.cjs +++ b/packages/jest/test-bundle/jest.config.cjs @@ -1,4 +1,8 @@ module.exports = { testMatch: ['/*.spec.cjs'], testTimeout: 20_000, + transform: { + '^.+\\.(js|jsx|ts|tsx|cjs|mjs)$': 'babel-jest' + }, + transformIgnorePatterns: [], }; diff --git a/packages/jest/test-bundle/resolver.cjs b/packages/jest/test-bundle/resolver.cjs new file mode 100644 index 00000000000..94e9f67daf1 --- /dev/null +++ b/packages/jest/test-bundle/resolver.cjs @@ -0,0 +1,4 @@ +module.exports = (path, options) => { + // Use the default sync resolver from jest-resolve + return options.defaultResolver(path, options); +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 604dfbb045f..20b64746e00 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -191,6 +191,12 @@ importers: specifier: ^3.0.0 || ^4.0.0 version: link:../fast-check devDependencies: + '@babel/core': + specifier: ^7.26.0 + version: 7.28.0 + '@babel/preset-env': + specifier: ^7.26.0 + version: 7.28.0(@babel/core@7.28.0) '@fast-check/jest': specifier: workspace:* version: 'link:' @@ -209,6 +215,9 @@ importers: '@types/node': specifier: ^24.10.7 version: 24.10.7 + babel-jest: + specifier: ^30.2.0 + version: 30.2.0(@babel/core@7.28.0) jest: specifier: ^30.2.0 version: 30.2.0(@types/node@24.10.7) From d4b41b6c3a27a2beae84f704acc9007509c252ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:22:31 +0000 Subject: [PATCH 06/12] Revert Jest Babel configuration changes Co-authored-by: dubzzz <5300235+dubzzz@users.noreply.github.com> --- packages/jest/README.md | 39 ----------------------- packages/jest/babel.config.cjs | 11 ------- packages/jest/package.json | 3 -- packages/jest/test-bundle/jest.config.cjs | 4 --- packages/jest/test-bundle/resolver.cjs | 4 --- pnpm-lock.yaml | 9 ------ 6 files changed, 70 deletions(-) delete mode 100644 packages/jest/babel.config.cjs delete mode 100644 packages/jest/test-bundle/resolver.cjs diff --git a/packages/jest/README.md b/packages/jest/README.md index ab0cfc58819..b1ba84eff68 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -83,45 +83,6 @@ describe('with it', () => { **The following feature is experimental!** When used it makes runners able to kill long running synchonous code. Meaning that it will make fast-check able to kill infinite loops blocking the main thread. So far, the feature does not fully support transformations performed via transform steps defined with jest. -#### Configuration for CommonJS with Workers - -**Note:** Starting from version 3.0.0 of `@fast-check/worker`, the package is ESM-only. To use the worker feature in CommonJS mode with Jest, you need to configure Babel to transform the ES modules: - -1. Install the required dependencies: -```bash -npm install --save-dev babel-jest @babel/core @babel/preset-env -``` - -2. Create a `babel.config.cjs` file in your project root: -```js -module.exports = { - presets: [ - [ - '@babel/preset-env', - { - targets: { node: 'current' }, - modules: 'commonjs' - } - ] - ] -}; -``` - -3. Update your `jest.config.js` to use Babel for transformation: -```js -module.exports = { - transform: { - '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest' - }, - transformIgnorePatterns: [ - '/node_modules/(?!@fast-check/worker)', - '\\.pnp\\.[^\\/]+$' - ], -}; -``` - -#### Usage Examples - The CommonJS approach would be: ```js diff --git a/packages/jest/babel.config.cjs b/packages/jest/babel.config.cjs deleted file mode 100644 index e2779a23ad2..00000000000 --- a/packages/jest/babel.config.cjs +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - presets: [ - [ - '@babel/preset-env', - { - targets: { node: 'current' }, - modules: 'commonjs' - } - ] - ] -}; diff --git a/packages/jest/package.json b/packages/jest/package.json index 40f81064bb0..8445c5d3d8e 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -71,15 +71,12 @@ } }, "devDependencies": { - "@babel/core": "^7.26.0", - "@babel/preset-env": "^7.26.0", "@fast-check/jest": "workspace:*", "@fast-check/worker": "workspace:*", "@jest/expect": "^30.2.0", "@jest/globals": "^30.2.0", "@types/jest": "^30.0.0", "@types/node": "^24.10.7", - "babel-jest": "^30.2.0", "fast-check": "workspace:*", "jest": "^30.2.0", "jest-jasmine2": "^30.2.0", diff --git a/packages/jest/test-bundle/jest.config.cjs b/packages/jest/test-bundle/jest.config.cjs index c673ba21d2b..7e7b2459dc4 100644 --- a/packages/jest/test-bundle/jest.config.cjs +++ b/packages/jest/test-bundle/jest.config.cjs @@ -1,8 +1,4 @@ module.exports = { testMatch: ['/*.spec.cjs'], testTimeout: 20_000, - transform: { - '^.+\\.(js|jsx|ts|tsx|cjs|mjs)$': 'babel-jest' - }, - transformIgnorePatterns: [], }; diff --git a/packages/jest/test-bundle/resolver.cjs b/packages/jest/test-bundle/resolver.cjs deleted file mode 100644 index 94e9f67daf1..00000000000 --- a/packages/jest/test-bundle/resolver.cjs +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = (path, options) => { - // Use the default sync resolver from jest-resolve - return options.defaultResolver(path, options); -}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20b64746e00..604dfbb045f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -191,12 +191,6 @@ importers: specifier: ^3.0.0 || ^4.0.0 version: link:../fast-check devDependencies: - '@babel/core': - specifier: ^7.26.0 - version: 7.28.0 - '@babel/preset-env': - specifier: ^7.26.0 - version: 7.28.0(@babel/core@7.28.0) '@fast-check/jest': specifier: workspace:* version: 'link:' @@ -215,9 +209,6 @@ importers: '@types/node': specifier: ^24.10.7 version: 24.10.7 - babel-jest: - specifier: ^30.2.0 - version: 30.2.0(@babel/core@7.28.0) jest: specifier: ^30.2.0 version: 30.2.0(@types/node@24.10.7) From e4b3b419caf3e66046844bdfe2efe9c169cb0f75 Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Wed, 28 Jan 2026 21:24:24 +0000 Subject: [PATCH 07/12] fix worker runs for test-bundle --- packages/jest/package.json | 3 +- .../{jest.config.cjs => jest.config.main.cjs} | 2 +- .../jest/test-bundle/jest.config.worker.cjs | 5 + pnpm-lock.yaml | 484 ++++++++++-------- 4 files changed, 273 insertions(+), 221 deletions(-) rename packages/jest/test-bundle/{jest.config.cjs => jest.config.main.cjs} (51%) create mode 100644 packages/jest/test-bundle/jest.config.worker.cjs diff --git a/packages/jest/package.json b/packages/jest/package.json index 8445c5d3d8e..e80827563a8 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -38,7 +38,7 @@ "build:publish-types": "tsc -p tsconfig.publish.types.json && tsc -p tsconfig.publish.types.json --outDir lib/cjs", "build:publish-cjs": "tsc -p tsconfig.publish.json --outDir lib/cjs && cp package.cjs-template.json lib/cjs/package.json", "build:publish-esm": "tsc -p tsconfig.publish.json --module es2015 --moduleResolution node", - "test-bundle:cjs": "node --experimental-vm-modules node_modules/jest/bin/jest.js --config test-bundle/jest.config.cjs", + "test-bundle:cjs": "node --experimental-vm-modules node_modules/jest/bin/jest.js --config test-bundle/jest.config.main.cjs && node --experimental-vm-modules node_modules/jest/bin/jest.js --config test-bundle/jest.config.worker.cjs", "test-bundle:mjs": "node --experimental-vm-modules node_modules/jest/bin/jest.js --config test-bundle/jest.config.mjs", "test-bundle": "pnpm run test-bundle:cjs && pnpm run test-bundle:mjs", "typecheck": "tsc --noEmit" @@ -80,6 +80,7 @@ "fast-check": "workspace:*", "jest": "^30.2.0", "jest-jasmine2": "^30.2.0", + "jest-light-runner": "^0.7.11", "typescript": "~5.9.3", "vite": "^7.3.1", "vitest": "^4.0.5" diff --git a/packages/jest/test-bundle/jest.config.cjs b/packages/jest/test-bundle/jest.config.main.cjs similarity index 51% rename from packages/jest/test-bundle/jest.config.cjs rename to packages/jest/test-bundle/jest.config.main.cjs index 7e7b2459dc4..af673ff4291 100644 --- a/packages/jest/test-bundle/jest.config.cjs +++ b/packages/jest/test-bundle/jest.config.main.cjs @@ -1,4 +1,4 @@ module.exports = { - testMatch: ['/*.spec.cjs'], + testMatch: ['/main.spec.cjs'], testTimeout: 20_000, }; diff --git a/packages/jest/test-bundle/jest.config.worker.cjs b/packages/jest/test-bundle/jest.config.worker.cjs new file mode 100644 index 00000000000..7334a50355b --- /dev/null +++ b/packages/jest/test-bundle/jest.config.worker.cjs @@ -0,0 +1,5 @@ +module.exports = { + runner: 'jest-light-runner', + testMatch: ['/worker.spec.cjs'], + testTimeout: 20_000, +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 604dfbb045f..569774955ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -199,10 +199,10 @@ importers: version: link:../worker '@jest/expect': specifier: ^30.2.0 - version: 30.2.0 + version: 30.2.0(supports-color@9.4.0) '@jest/globals': specifier: ^30.2.0 - version: 30.2.0 + version: 30.2.0(supports-color@9.4.0) '@types/jest': specifier: ^30.0.0 version: 30.0.0 @@ -215,6 +215,9 @@ importers: jest-jasmine2: specifier: ^30.2.0 version: 30.2.0 + jest-light-runner: + specifier: ^0.7.11 + version: 0.7.11(jest@30.2.0(@types/node@24.10.7)) typescript: specifier: ~5.9.3 version: 5.9.3 @@ -371,7 +374,7 @@ importers: version: 3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@jest/globals': specifier: ^30.2.0 - version: 30.2.0 + version: 30.2.0(supports-color@9.4.0) '@mdx-js/react': specifier: ^3.1.1 version: 3.1.1(@types/react@19.2.9)(react@19.2.3) @@ -6473,6 +6476,12 @@ packages: resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-light-runner@0.7.11: + resolution: {integrity: sha512-fPJj5Y9LeHcc0tcDDZaRFEVzDh5/F3B2mcZFTaNv8cChYNnemmcLcASPj/phjTnM5K2LGC1BU65GYG+Ori29vw==} + engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} + peerDependencies: + jest: ^27.5.0 || ^28.0.0 || ^29.0.0|| ^30.0.0 + jest-matcher-utils@30.2.0: resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7512,6 +7521,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@6.2.0: + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} + engines: {node: '>=18'} + p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -9055,6 +9068,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -9174,6 +9191,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + tinypool@1.1.1: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -10147,20 +10168,20 @@ snapshots: '@babel/compat-data@7.28.0': {} - '@babel/core@7.28.0': + '@babel/core@7.28.0(supports-color@9.4.0)': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0)(supports-color@9.4.0) '@babel/helpers': 7.28.2 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) '@babel/types': 7.28.2 convert-source-map: 2.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -10189,30 +10210,30 @@ snapshots: '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.2.0 semver: 6.3.1 '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: @@ -10222,24 +10243,24 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.27.1(supports-color@9.4.0)': dependencies: - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)(supports-color@9.4.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.28.0(supports-color@9.4.0) + '@babel/helper-module-imports': 7.27.1(supports-color@9.4.0) '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -10251,25 +10272,25 @@ snapshots: '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -10283,7 +10304,7 @@ snapshots: '@babel/helper-wrap-function@7.27.1': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -10299,25 +10320,25 @@ snapshots: '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) @@ -10326,135 +10347,135 @@ snapshots: '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.28.0(supports-color@9.4.0) + '@babel/helper-module-imports': 7.27.1(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) transitivePeerDependencies: @@ -10462,17 +10483,17 @@ snapshots: '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: @@ -10480,7 +10501,7 @@ snapshots: '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: @@ -10488,55 +10509,55 @@ snapshots: '@babel/plugin-transform-classes@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) transitivePeerDependencies: @@ -10544,17 +10565,17 @@ snapshots: '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: @@ -10562,102 +10583,102 @@ snapshots: '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/core': 7.28.0(supports-color@9.4.0) + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0)(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/core': 7.28.0(supports-color@9.4.0) + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0)(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/core': 7.28.0(supports-color@9.4.0) + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0)(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/core': 7.28.0(supports-color@9.4.0) + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0)(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) transitivePeerDependencies: @@ -10665,12 +10686,12 @@ snapshots: '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: @@ -10678,12 +10699,12 @@ snapshots: '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: @@ -10691,7 +10712,7 @@ snapshots: '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 @@ -10700,31 +10721,31 @@ snapshots: '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.27.1(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) '@babel/types': 7.28.2 @@ -10733,30 +10754,30 @@ snapshots: '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-regenerator@7.28.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-runtime@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.28.0(supports-color@9.4.0) + '@babel/helper-module-imports': 7.27.1(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.0) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.0) @@ -10767,12 +10788,12 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: @@ -10780,22 +10801,22 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 @@ -10806,31 +10827,31 @@ snapshots: '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/preset-env@7.28.0(@babel/core@7.28.0)': dependencies: '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 @@ -10905,14 +10926,14 @@ snapshots: '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/types': 7.28.2 esutils: 2.0.3 '@babel/preset-react@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.0) @@ -10924,7 +10945,7 @@ snapshots: '@babel/preset-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) @@ -10945,7 +10966,7 @@ snapshots: '@babel/parser': 7.28.0 '@babel/types': 7.28.2 - '@babel/traverse@7.28.0': + '@babel/traverse@7.28.0(supports-color@9.4.0)': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.0 @@ -10953,7 +10974,7 @@ snapshots: '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/types': 7.28.2 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -11533,7 +11554,7 @@ snapshots: '@docusaurus/babel@3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/generator': 7.28.0 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.0) '@babel/plugin-transform-runtime': 7.28.0(@babel/core@7.28.0) @@ -11542,7 +11563,7 @@ snapshots: '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) '@babel/runtime': 7.28.6 '@babel/runtime-corejs3': 7.28.2 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.0(supports-color@9.4.0) '@docusaurus/logger': 3.9.2 '@docusaurus/utils': 3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) babel-plugin-dynamic-import-node: 2.3.3 @@ -11560,7 +11581,7 @@ snapshots: '@docusaurus/bundler@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)))(@rspack/core@1.6.0)(@swc/core@1.13.3)(acorn@8.15.0)(lightningcss@1.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@docusaurus/babel': 3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@docusaurus/cssnano-preset': 3.9.2 '@docusaurus/logger': 3.9.2 @@ -12006,7 +12027,7 @@ snapshots: '@docusaurus/plugin-pwa@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)))(@mdx-js/react@3.1.1(@types/react@19.2.9)(react@19.2.3))(@rspack/core@1.6.0)(@swc/core@1.13.3)(acorn@8.15.0)(lightningcss@1.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.9)(react@19.2.3))(@rspack/core@1.6.0)(@swc/core@1.13.3)(@types/babel__core@7.20.5)(acorn@8.15.0)(lightningcss@1.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/preset-env': 7.28.0(@babel/core@7.28.0) '@docusaurus/bundler': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)))(@rspack/core@1.6.0)(@swc/core@1.13.3)(acorn@8.15.0)(lightningcss@1.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.13.3)(acorn@8.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)))(@mdx-js/react@3.1.1(@types/react@19.2.9)(react@19.2.3))(@rspack/core@1.6.0)(@swc/core@1.13.3)(acorn@8.15.0)(lightningcss@1.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) @@ -12515,7 +12536,7 @@ snapshots: '@eslint/config-array@0.21.1': dependencies: '@eslint/object-schema': 2.1.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -12531,7 +12552,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -12641,7 +12662,7 @@ snapshots: '@jest/pattern': 30.0.1 '@jest/reporters': 30.2.0 '@jest/test-result': 30.2.0 - '@jest/transform': 30.2.0 + '@jest/transform': 30.2.0(supports-color@9.4.0) '@jest/types': 30.2.0 '@types/node': 24.10.7 ansi-escapes: 4.3.2 @@ -12657,8 +12678,8 @@ snapshots: jest-resolve: 30.2.0 jest-resolve-dependencies: 30.2.0 jest-runner: 30.2.0 - jest-runtime: 30.2.0 - jest-snapshot: 30.2.0 + jest-runtime: 30.2.0(supports-color@9.4.0) + jest-snapshot: 30.2.0(supports-color@9.4.0) jest-util: 30.2.0 jest-validate: 30.2.0 jest-watcher: 30.2.0 @@ -12684,10 +12705,10 @@ snapshots: dependencies: '@jest/get-type': 30.1.0 - '@jest/expect@30.2.0': + '@jest/expect@30.2.0(supports-color@9.4.0)': dependencies: expect: 30.2.0 - jest-snapshot: 30.2.0 + jest-snapshot: 30.2.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -12702,10 +12723,10 @@ snapshots: '@jest/get-type@30.1.0': {} - '@jest/globals@30.2.0': + '@jest/globals@30.2.0(supports-color@9.4.0)': dependencies: '@jest/environment': 30.2.0 - '@jest/expect': 30.2.0 + '@jest/expect': 30.2.0(supports-color@9.4.0) '@jest/types': 30.2.0 jest-mock: 30.2.0 transitivePeerDependencies: @@ -12721,7 +12742,7 @@ snapshots: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 30.2.0 '@jest/test-result': 30.2.0 - '@jest/transform': 30.2.0 + '@jest/transform': 30.2.0(supports-color@9.4.0) '@jest/types': 30.2.0 '@jridgewell/trace-mapping': 0.3.31 '@types/node': 24.10.7 @@ -12731,7 +12752,7 @@ snapshots: glob: 10.4.5 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 + istanbul-lib-instrument: 6.0.3(supports-color@9.4.0) istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 @@ -12779,12 +12800,12 @@ snapshots: jest-haste-map: 30.2.0 slash: 3.0.0 - '@jest/transform@30.2.0': + '@jest/transform@30.2.0(supports-color@9.4.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@jest/types': 30.2.0 '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 7.0.1 + babel-plugin-istanbul: 7.0.1(supports-color@9.4.0) chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 @@ -13494,8 +13515,8 @@ snapshots: '@rollup/plugin-babel@5.3.1(@babel/core@7.28.0)(@types/babel__core@7.20.5)(rollup@2.79.2)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.28.0(supports-color@9.4.0) + '@babel/helper-module-imports': 7.27.1(supports-color@9.4.0) '@rollup/pluginutils': 3.1.0(rollup@2.79.2) rollup: 2.79.2 optionalDependencies: @@ -13815,39 +13836,39 @@ snapshots: '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-preset@8.1.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.28.0) '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.28.0) '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.28.0) @@ -13859,7 +13880,7 @@ snapshots: '@svgr/core@8.1.0(typescript@5.9.3)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.9.3) @@ -13875,7 +13896,7 @@ snapshots: '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.9.3))': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/hast-util-to-babel-ast': 8.0.0 @@ -13894,7 +13915,7 @@ snapshots: '@svgr/webpack@8.1.0(typescript@5.9.3)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.28.0) '@babel/preset-env': 7.28.0(@babel/core@7.28.0) '@babel/preset-react': 7.27.1(@babel/core@7.28.0) @@ -14495,7 +14516,7 @@ snapshots: '@typescript-eslint/types': 8.53.1 '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.53.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) eslint: 9.39.2(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: @@ -14505,7 +14526,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) '@typescript-eslint/types': 8.53.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -14524,7 +14545,7 @@ snapshots: '@typescript-eslint/types': 8.53.1 '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) eslint: 9.39.2(jiti@1.21.7) ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 @@ -14539,7 +14560,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) '@typescript-eslint/types': 8.53.1 '@typescript-eslint/visitor-keys': 8.53.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 @@ -14651,7 +14672,7 @@ snapshots: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.5 ast-v8-to-istanbul: 0.3.8 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -15042,7 +15063,7 @@ snapshots: common-path-prefix: 3.0.0 concordance: 5.0.4 currently-unhandled: 0.4.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) emittery: 1.2.0 figures: 6.1.0 globby: 14.1.0 @@ -15078,10 +15099,10 @@ snapshots: babel-jest@30.2.0(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.0 - '@jest/transform': 30.2.0 + '@babel/core': 7.28.0(supports-color@9.4.0) + '@jest/transform': 30.2.0(supports-color@9.4.0) '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.1 + babel-plugin-istanbul: 7.0.1(supports-color@9.4.0) babel-preset-jest: 30.2.0(@babel/core@7.28.0) chalk: 4.1.2 graceful-fs: 4.2.11 @@ -15091,7 +15112,7 @@ snapshots: babel-loader@9.2.1(@babel/core@7.28.0)(webpack@5.101.1(@swc/core@1.13.3)): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) find-cache-dir: 4.0.0 schema-utils: 4.3.2 webpack: 5.101.1(@swc/core@1.13.3) @@ -15100,12 +15121,12 @@ snapshots: dependencies: object.assign: 4.1.7 - babel-plugin-istanbul@7.0.1: + babel-plugin-istanbul@7.0.1(supports-color@9.4.0): dependencies: '@babel/helper-plugin-utils': 7.27.1 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 6.0.3 + istanbul-lib-instrument: 6.0.3(supports-color@9.4.0) test-exclude: 6.0.0 transitivePeerDependencies: - supports-color @@ -15117,7 +15138,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.0): dependencies: '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) semver: 6.3.1 transitivePeerDependencies: @@ -15125,7 +15146,7 @@ snapshots: babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) core-js-compat: 3.45.0 transitivePeerDependencies: @@ -15133,14 +15154,14 @@ snapshots: babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) transitivePeerDependencies: - supports-color babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) @@ -15159,7 +15180,7 @@ snapshots: babel-preset-jest@30.2.0(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) babel-plugin-jest-hoist: 30.2.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) @@ -15218,7 +15239,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) http-errors: 2.0.1 iconv-lite: 0.7.0 on-finished: 2.4.1 @@ -16047,9 +16068,11 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.4.3: + debug@4.4.3(supports-color@9.4.0): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 9.4.0 decamelize@1.2.0: {} @@ -16123,7 +16146,7 @@ snapshots: detect-port@1.6.1: dependencies: address: 1.2.2 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -16469,7 +16492,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -16660,7 +16683,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 @@ -16797,7 +16820,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -17315,7 +17338,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -17347,7 +17370,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -17683,9 +17706,9 @@ snapshots: istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@6.0.3: + istanbul-lib-instrument@6.0.3(supports-color@9.4.0): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/parser': 7.28.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -17702,7 +17725,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -17730,10 +17753,10 @@ snapshots: jest-util: 30.2.0 p-limit: 3.1.0 - jest-circus@30.2.0: + jest-circus@30.2.0(supports-color@9.4.0): dependencies: '@jest/environment': 30.2.0 - '@jest/expect': 30.2.0 + '@jest/expect': 30.2.0(supports-color@9.4.0) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 '@types/node': 24.10.7 @@ -17744,8 +17767,8 @@ snapshots: jest-each: 30.2.0 jest-matcher-utils: 30.2.0 jest-message-util: 30.2.0 - jest-runtime: 30.2.0 - jest-snapshot: 30.2.0 + jest-runtime: 30.2.0(supports-color@9.4.0) + jest-snapshot: 30.2.0(supports-color@9.4.0) jest-util: 30.2.0 p-limit: 3.1.0 pretty-format: 30.2.0 @@ -17777,7 +17800,7 @@ snapshots: jest-config@30.2.0(@types/node@24.10.7): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@jest/get-type': 30.1.0 '@jest/pattern': 30.0.1 '@jest/test-sequencer': 30.2.0 @@ -17788,7 +17811,7 @@ snapshots: deepmerge: 4.3.1 glob: 10.4.5 graceful-fs: 4.2.11 - jest-circus: 30.2.0 + jest-circus: 30.2.0(supports-color@9.4.0) jest-docblock: 30.2.0 jest-environment-node: 30.2.0 jest-regex-util: 30.0.1 @@ -17854,7 +17877,7 @@ snapshots: jest-jasmine2@30.2.0: dependencies: '@jest/environment': 30.2.0 - '@jest/expect': 30.2.0 + '@jest/expect': 30.2.0(supports-color@9.4.0) '@jest/source-map': 30.0.1 '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 @@ -17865,8 +17888,8 @@ snapshots: jest-each: 30.2.0 jest-matcher-utils: 30.2.0 jest-message-util: 30.2.0 - jest-runtime: 30.2.0 - jest-snapshot: 30.2.0 + jest-runtime: 30.2.0(supports-color@9.4.0) + jest-snapshot: 30.2.0(supports-color@9.4.0) jest-util: 30.2.0 p-limit: 3.1.0 pretty-format: 30.2.0 @@ -17878,6 +17901,21 @@ snapshots: '@jest/get-type': 30.1.0 pretty-format: 30.2.0 + jest-light-runner@0.7.11(jest@30.2.0(@types/node@24.10.7)): + dependencies: + '@jest/expect': 30.2.0(supports-color@9.4.0) + '@jest/fake-timers': 30.2.0 + jest: 30.2.0(@types/node@24.10.7) + jest-circus: 30.2.0(supports-color@9.4.0) + jest-each: 30.2.0 + jest-mock: 30.2.0 + jest-snapshot: 30.2.0(supports-color@9.4.0) + p-limit: 6.2.0 + supports-color: 9.4.0 + tinypool: 0.8.4 + transitivePeerDependencies: + - babel-plugin-macros + jest-matcher-utils@30.2.0: dependencies: '@jest/get-type': 30.1.0 @@ -17912,7 +17950,7 @@ snapshots: jest-resolve-dependencies@30.2.0: dependencies: jest-regex-util: 30.0.1 - jest-snapshot: 30.2.0 + jest-snapshot: 30.2.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -17932,7 +17970,7 @@ snapshots: '@jest/console': 30.2.0 '@jest/environment': 30.2.0 '@jest/test-result': 30.2.0 - '@jest/transform': 30.2.0 + '@jest/transform': 30.2.0(supports-color@9.4.0) '@jest/types': 30.2.0 '@types/node': 24.10.7 chalk: 4.1.2 @@ -17945,7 +17983,7 @@ snapshots: jest-leak-detector: 30.2.0 jest-message-util: 30.2.0 jest-resolve: 30.2.0 - jest-runtime: 30.2.0 + jest-runtime: 30.2.0(supports-color@9.4.0) jest-util: 30.2.0 jest-watcher: 30.2.0 jest-worker: 30.2.0 @@ -17954,14 +17992,14 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runtime@30.2.0: + jest-runtime@30.2.0(supports-color@9.4.0): dependencies: '@jest/environment': 30.2.0 '@jest/fake-timers': 30.2.0 - '@jest/globals': 30.2.0 + '@jest/globals': 30.2.0(supports-color@9.4.0) '@jest/source-map': 30.0.1 '@jest/test-result': 30.2.0 - '@jest/transform': 30.2.0 + '@jest/transform': 30.2.0(supports-color@9.4.0) '@jest/types': 30.2.0 '@types/node': 24.10.7 chalk: 4.1.2 @@ -17974,16 +18012,16 @@ snapshots: jest-mock: 30.2.0 jest-regex-util: 30.0.1 jest-resolve: 30.2.0 - jest-snapshot: 30.2.0 + jest-snapshot: 30.2.0(supports-color@9.4.0) jest-util: 30.2.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - jest-snapshot@30.2.0: + jest-snapshot@30.2.0(supports-color@9.4.0): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/generator': 7.28.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) @@ -17991,7 +18029,7 @@ snapshots: '@jest/expect-utils': 30.2.0 '@jest/get-type': 30.1.0 '@jest/snapshot-utils': 30.2.0 - '@jest/transform': 30.2.0 + '@jest/transform': 30.2.0(supports-color@9.4.0) '@jest/types': 30.2.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) chalk: 4.1.2 @@ -18934,7 +18972,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -19298,6 +19336,10 @@ snapshots: dependencies: yocto-queue: 1.2.1 + p-limit@6.2.0: + dependencies: + yocto-queue: 1.2.1 + p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -20496,7 +20538,7 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -20623,7 +20665,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -20822,7 +20864,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) socks: 2.8.7 transitivePeerDependencies: - supports-color @@ -20879,7 +20921,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -20890,7 +20932,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -21068,7 +21110,7 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) fast-safe-stringify: 2.1.1 form-data: 4.0.5 formidable: 3.5.4 @@ -21101,6 +21143,8 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@9.4.0: {} + supports-preserve-symlinks-flag@1.0.0: {} svg-parser@2.0.4: {} @@ -21207,6 +21251,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinypool@0.8.4: {} + tinypool@1.1.1: {} tinyrainbow@3.0.3: {} @@ -21259,7 +21305,7 @@ snapshots: tuf-js@4.1.0: dependencies: '@tufjs/models': 4.1.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) make-fetch-happen: 15.0.3 transitivePeerDependencies: - supports-color @@ -21596,7 +21642,7 @@ snapshots: '@vitest/snapshot': 4.0.5 '@vitest/spy': 4.0.5 '@vitest/utils': 4.0.5 - debug: 4.4.3 + debug: 4.4.3(supports-color@9.4.0) es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 @@ -21891,7 +21937,7 @@ snapshots: workbox-build@7.3.0(@types/babel__core@7.20.5): dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@9.4.0) '@babel/preset-env': 7.28.0(@babel/core@7.28.0) '@babel/runtime': 7.28.6 '@rollup/plugin-babel': 5.3.1(@babel/core@7.28.0)(@types/babel__core@7.20.5)(rollup@2.79.2) From 59da88e9d4d0c6466ffb0b2800697d00fcb94ec5 Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Wed, 28 Jan 2026 21:32:26 +0000 Subject: [PATCH 08/12] fix usual jest tests --- packages/jest/test/jest-fast-check.spec.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/jest/test/jest-fast-check.spec.ts b/packages/jest/test/jest-fast-check.spec.ts index d30c6fbf33a..df57e815684 100644 --- a/packages/jest/test/jest-fast-check.spec.ts +++ b/packages/jest/test/jest-fast-check.spec.ts @@ -608,9 +608,17 @@ async function writeToFile( fs.writeFile(specFilePath, specContent), fs.writeFile( jestConfigPath, - `module.exports = { testMatch: ['/${specFileName}'], transform: {}, ${ - options.testTimeoutConfig !== undefined ? `testTimeout: ${options.testTimeoutConfig},` : '' - }${options.testRunner !== undefined ? `testRunner: 'jest-jasmine2',` : ''} };`, + `module.exports = ${JSON.stringify( + { + testMatch: [`/${specFileName}`], + transform: {}, + testTimeout: options.testTimeoutConfig, + testRunner: options.testRunner !== undefined ? 'jest-jasmine2' : undefined, + runner: useWorkers ? 'jest-light-runner' : undefined, + }, + undefined, + 2, + )};`, ), ]); From c27ccef12a695b00fa431dfa643bf58d9ccfaa25 Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Wed, 28 Jan 2026 21:51:38 +0000 Subject: [PATCH 09/12] comment out some tests --- packages/jest/test/jest-fast-check.spec.ts | 170 +++++++++++---------- 1 file changed, 86 insertions(+), 84 deletions(-) diff --git a/packages/jest/test/jest-fast-check.spec.ts b/packages/jest/test/jest-fast-check.spec.ts index df57e815684..b8ca68d652c 100644 --- a/packages/jest/test/jest-fast-check.spec.ts +++ b/packages/jest/test/jest-fast-check.spec.ts @@ -152,7 +152,7 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out); + expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); expect(out).toMatch(/[×✕] property fail sync \(with seed=-?\d+\)/); }); @@ -170,7 +170,7 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out); + expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); expect(out).toMatch(/[×✕] property fail async \(with seed=-?\d+\)/); }); @@ -206,7 +206,7 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out); + expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); expect(out).toMatch(/[×✕] property fail record \(with seed=-?\d+\)/); }); @@ -270,7 +270,7 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out); + expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); expect(out).toMatch(/[×✕] property fail with globally requested seed \(with seed=6969\)/); }); @@ -380,7 +380,7 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out); + expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); expect(out).toMatch(/[×✕] property fail on falsy property \(with seed=-?\d+\)/); }); @@ -462,103 +462,105 @@ describe.each([ expect(out).toMatch(/[×✕] property takes longer than Jest local timeout/); }); - it.concurrent('should fail as test takes longer than Jest config timeout', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, { ...options, testTimeoutConfig: 1000 }, () => { - runner.prop([fc.nat()])('property takes longer than Jest config timeout', async () => { - await new Promise(() => {}); // never resolving + if (!useWorkers) { + it.concurrent('should fail as test takes longer than Jest config timeout', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, { ...options, testTimeoutConfig: 1000 }, () => { + runner.prop([fc.nat()])('property takes longer than Jest config timeout', async () => { + await new Promise(() => {}); // never resolving + }); }); - }); - // Act - const out = await runSpec(specDirectory); - - // Assert - expectFail(out); - expectTimeout(out, 1000); - expect(out).toMatch(/[×✕] property takes longer than Jest config timeout/); - }); + // Act + const out = await runSpec(specDirectory); - it.concurrent('should fail as test takes longer than Jest setTimeout', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, options, () => { - if (typeof jest !== 'undefined') { - jest.setTimeout(1000); - } - runner.prop([fc.nat()])('property takes longer than Jest setTimeout', async () => { - await new Promise(() => {}); // never resolving - }); + // Assert + expectFail(out); + expectTimeout(out, 1000); + expect(out).toMatch(/[×✕] property takes longer than Jest config timeout/); }); - // Act - const out = await runSpec(specDirectory); + it.concurrent('should fail as test takes longer than Jest setTimeout', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, options, () => { + if (typeof jest !== 'undefined') { + jest.setTimeout(1000); + } + runner.prop([fc.nat()])('property takes longer than Jest setTimeout', async () => { + await new Promise(() => {}); // never resolving + }); + }); - // Assert - expectFail(out); - expectTimeout(out, 1000); - expect(out).toMatch(/[×✕] property takes longer than Jest setTimeout/); - }); + // Act + const out = await runSpec(specDirectory); - it.concurrent('should fail as test takes longer than Jest CLI timeout', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, options, () => { - runner.prop([fc.nat()])('property takes longer than Jest CLI timeout', async () => { - await new Promise(() => {}); // never resolving - }); + // Assert + expectFail(out); + expectTimeout(out, 1000); + expect(out).toMatch(/[×✕] property takes longer than Jest setTimeout/); }); - // Act - const out = await runSpec(specDirectory, { testTimeoutCLI: 1000 }); + it.concurrent('should fail as test takes longer than Jest CLI timeout', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, options, () => { + runner.prop([fc.nat()])('property takes longer than Jest CLI timeout', async () => { + await new Promise(() => {}); // never resolving + }); + }); - // Assert - expectFail(out); - expectTimeout(out, 1000); - expect(out).toMatch(/[×✕] property takes longer than Jest CLI timeout/); - }); + // Act + const out = await runSpec(specDirectory, { testTimeoutCLI: 1000 }); - it.concurrent('should fail but favor local Jest timeout over Jest setTimeout', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, options, () => { - if (typeof jest !== 'undefined') { - jest.setTimeout(2000); - } - runner.prop([fc.nat()])( - 'property favor local Jest timeout over Jest setTimeout', - async () => { - await new Promise(() => {}); // never resolving - }, - 1000, - ); + // Assert + expectFail(out); + expectTimeout(out, 1000); + expect(out).toMatch(/[×✕] property takes longer than Jest CLI timeout/); }); - // Act - const out = await runSpec(specDirectory); + it.concurrent('should fail but favor local Jest timeout over Jest setTimeout', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, options, () => { + if (typeof jest !== 'undefined') { + jest.setTimeout(2000); + } + runner.prop([fc.nat()])( + 'property favor local Jest timeout over Jest setTimeout', + async () => { + await new Promise(() => {}); // never resolving + }, + 1000, + ); + }); - // Assert - expectFail(out); - expectTimeout(out, 1000); // neither 2000 (setTimeout), nor 5000 (default) - expect(out).toMatch(/[×✕] property favor local Jest timeout over Jest setTimeout/); - }); + // Act + const out = await runSpec(specDirectory); - it.concurrent('should fail but favor Jest setTimeout over Jest CLI timeout', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, options, () => { - if (typeof jest !== 'undefined') { - jest.setTimeout(1000); - } - runner.prop([fc.nat()])('property favor Jest setTimeout over Jest CLI timeout', async () => { - await new Promise(() => {}); // never resolving - }); + // Assert + expectFail(out); + expectTimeout(out, 1000); // neither 2000 (setTimeout), nor 5000 (default) + expect(out).toMatch(/[×✕] property favor local Jest timeout over Jest setTimeout/); }); - // Act - const out = await runSpec(specDirectory, { testTimeoutCLI: 2000 }); + it.concurrent('should fail but favor Jest setTimeout over Jest CLI timeout', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, options, () => { + if (typeof jest !== 'undefined') { + jest.setTimeout(1000); + } + runner.prop([fc.nat()])('property favor Jest setTimeout over Jest CLI timeout', async () => { + await new Promise(() => {}); // never resolving + }); + }); - // Assert - expectFail(out); - expectTimeout(out, 1000); // neither 2000 (cli), nor 5000 (default) - expect(out).toMatch(/[×✕] property favor Jest setTimeout over Jest CLI timeout/); - }); + // Act + const out = await runSpec(specDirectory, { testTimeoutCLI: 2000 }); + + // Assert + expectFail(out); + expectTimeout(out, 1000); // neither 2000 (cli), nor 5000 (default) + expect(out).toMatch(/[×✕] property favor Jest setTimeout over Jest CLI timeout/); + }); + } }); }); From baca9dd396f253e0b6d9431afdfb7490e94ce249 Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Wed, 28 Jan 2026 22:04:50 +0000 Subject: [PATCH 10/12] comment out test --- packages/jest/test/jest-fast-check.spec.ts | 55 +++++++++++++--------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/packages/jest/test/jest-fast-check.spec.ts b/packages/jest/test/jest-fast-check.spec.ts index b8ca68d652c..c6d348aa77d 100644 --- a/packages/jest/test/jest-fast-check.spec.ts +++ b/packages/jest/test/jest-fast-check.spec.ts @@ -259,38 +259,47 @@ describe.each([ expect(out).toMatch(/[×✕] property fail with globally requested seed \(with seed=4848\)/); }); - it.concurrent('should fail with seed requested at jest level', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, options, () => { - runner.prop([fc.constant(null)])('property fail with globally requested seed', (_unused) => false); - }); - - // Act - const out = await runSpec(specDirectory, { jestSeed: 6969 }); - - // Assert - expectFail(out); - expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); - expect(out).toMatch(/[×✕] property fail with globally requested seed \(with seed=6969\)/); - }); + // NOTE: Actually @fast-check/worker package up to version 0.5.0 should pass this test + // without any concerns. Problems came with 0.6.0 and the drop of the CJS bundle. + // But for now 0.6.0 is not published and we have not found ways to force pnpm to get + // the worker package from npm registry rather than taking the local instance. - describe('.skip', () => { - it.concurrent('should never be executed', async () => { + if (!useWorkers) { + it.concurrent('should fail with seed requested at jest level', async () => { // Arrange const specDirectory = await writeToFile(runnerName, options, () => { - runner.skip.prop([fc.constant(null)])('property never executed', (_unused) => false); + runner.prop([fc.constant(null)])('property fail with globally requested seed', (_unused) => false); }); // Act - const out = await runSpec(specDirectory); + const out = await runSpec(specDirectory, { jestSeed: 6969 }); // Assert - expect(out).toMatch(/Test Suites:\s+1 skipped, 0 of 1 total/); - expect(out).toMatch(/Tests:\s+1 skipped, 1 total/); + expectFail(out); + expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); + expect(out).toMatch(/[×✕] property fail with globally requested seed \(with seed=6969\)/); }); - }); + } + + if (!useWorkers) { + describe('.skip', () => { + it.concurrent('should never be executed', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, options, () => { + runner.skip.prop([fc.constant(null)])('property never executed', (_unused) => false); + }); + + // Act + const out = await runSpec(specDirectory); + + // Assert + expect(out).toMatch(/Test Suites:\s+1 skipped, 0 of 1 total/); + expect(out).toMatch(/Tests:\s+1 skipped, 1 total/); + }); + }); + } - if (testRunner === undefined) { + if (testRunner === undefined && !useWorkers) { describe('.failing', () => { it.concurrent('should fail on successful no prop mode', async () => { // Arrange @@ -384,7 +393,7 @@ describe.each([ expect(out).toMatch(/[×✕] property fail on falsy property \(with seed=-?\d+\)/); }); - if (testRunner === undefined) { + if (testRunner === undefined && !useWorkers) { describe('.failing', () => { it.concurrent('should pass because failing', async () => { // Arrange From a911e1c1846b664bd42fcc1f8829d18cd2196cda Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Thu, 29 Jan 2026 18:17:12 +0100 Subject: [PATCH 11/12] Remove test for blocking main thread Removed test for property blocking the main thread due to potential infinite loop. --- packages/jest/test/jest-fast-check.spec.ts | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/packages/jest/test/jest-fast-check.spec.ts b/packages/jest/test/jest-fast-check.spec.ts index c6d348aa77d..12304827f1d 100644 --- a/packages/jest/test/jest-fast-check.spec.ts +++ b/packages/jest/test/jest-fast-check.spec.ts @@ -88,24 +88,6 @@ describe.each([ expect(out).toMatch(/[×✕] failing no prop/); }); - if (useWorkers) { - it.concurrent('should fail on property blocking the main thread', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, options, () => { - runner.prop([fc.nat()], { timeout: 500 })('property block main thread', () => { - while (true); - }); - }); - - // Act - const out = await runSpec(specDirectory); - - // Assert - expectFail(out); - expect(out).toMatch(/[×✕] property block main thread/); - }); - } - it.concurrent('should pass on truthy synchronous property', async () => { // Arrange const specDirectory = await writeToFile(runnerName, options, () => { From d4f9b4ee467c0babd8a4a144e4b3e47adb34a4c2 Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Thu, 29 Jan 2026 17:21:58 +0000 Subject: [PATCH 12/12] fix --- packages/jest/test/jest-fast-check.spec.ts | 107 ++++++++++++--------- 1 file changed, 63 insertions(+), 44 deletions(-) diff --git a/packages/jest/test/jest-fast-check.spec.ts b/packages/jest/test/jest-fast-check.spec.ts index 12304827f1d..adfdc2ba504 100644 --- a/packages/jest/test/jest-fast-check.spec.ts +++ b/packages/jest/test/jest-fast-check.spec.ts @@ -55,6 +55,7 @@ describe.each([ { specName: 'it', runnerName: 'it', useWorkers: false, testRunner: undefined }, ])('$specName', ({ runnerName, useWorkers, testRunner }) => { const options = { useWorkers, testRunner }; + const useESMOnlyWorkers = useWorkers; it.concurrent('should pass on successful no prop mode', async () => { // Arrange @@ -88,6 +89,24 @@ describe.each([ expect(out).toMatch(/[×✕] failing no prop/); }); + if (useWorkers && !useESMOnlyWorkers) { + it.concurrent('should fail on property blocking the main thread', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, options, () => { + runner.prop([fc.nat()], { timeout: 500 })('property block main thread', () => { + while (true); + }); + }); + + // Act + const out = await runSpec(specDirectory); + + // Assert + expectFail(out); + expect(out).toMatch(/[×✕] property block main thread/); + }); + } + it.concurrent('should pass on truthy synchronous property', async () => { // Arrange const specDirectory = await writeToFile(runnerName, options, () => { @@ -134,7 +153,7 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); + expectAlignedSeeds(out, { noAlignWithJest: useESMOnlyWorkers }); expect(out).toMatch(/[×✕] property fail sync \(with seed=-?\d+\)/); }); @@ -152,7 +171,7 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); + expectAlignedSeeds(out, { noAlignWithJest: useESMOnlyWorkers }); expect(out).toMatch(/[×✕] property fail async \(with seed=-?\d+\)/); }); @@ -188,7 +207,7 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); + expectAlignedSeeds(out, { noAlignWithJest: useESMOnlyWorkers }); expect(out).toMatch(/[×✕] property fail record \(with seed=-?\d+\)/); }); @@ -246,7 +265,7 @@ describe.each([ // But for now 0.6.0 is not published and we have not found ways to force pnpm to get // the worker package from npm registry rather than taking the local instance. - if (!useWorkers) { + if (!useESMOnlyWorkers) { it.concurrent('should fail with seed requested at jest level', async () => { // Arrange const specDirectory = await writeToFile(runnerName, options, () => { @@ -258,12 +277,12 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); + expectAlignedSeeds(out, { noAlignWithJest: useESMOnlyWorkers }); expect(out).toMatch(/[×✕] property fail with globally requested seed \(with seed=6969\)/); }); } - if (!useWorkers) { + if (!useESMOnlyWorkers) { describe('.skip', () => { it.concurrent('should never be executed', async () => { // Arrange @@ -281,7 +300,7 @@ describe.each([ }); } - if (testRunner === undefined && !useWorkers) { + if (testRunner === undefined && !useESMOnlyWorkers) { describe('.failing', () => { it.concurrent('should fail on successful no prop mode', async () => { // Arrange @@ -371,11 +390,11 @@ describe.each([ // Assert expectFail(out); - expectAlignedSeeds(out, { noAlignWithJest: useWorkers }); + expectAlignedSeeds(out, { noAlignWithJest: useESMOnlyWorkers }); expect(out).toMatch(/[×✕] property fail on falsy property \(with seed=-?\d+\)/); }); - if (testRunner === undefined && !useWorkers) { + if (testRunner === undefined && !useESMOnlyWorkers) { describe('.failing', () => { it.concurrent('should pass because failing', async () => { // Arrange @@ -414,46 +433,46 @@ describe.each([ } }); - describe('timeout', () => { - it.concurrent('should fail as test takes longer than global Jest timeout', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, options, () => { - runner.prop([fc.nat()])('property takes longer than global Jest timeout', async () => { - await new Promise(() => {}); // never resolving + if (!useWorkers) { + describe('timeout', () => { + it.concurrent('should fail as test takes longer than global Jest timeout', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, options, () => { + runner.prop([fc.nat()])('property takes longer than global Jest timeout', async () => { + await new Promise(() => {}); // never resolving + }); }); - }); - // Act - const out = await runSpec(specDirectory); - - // Assert - expectFail(out); - expectTimeout(out, 5000); - expect(out).toMatch(/[×✕] property takes longer than global Jest timeout/); - }); + // Act + const out = await runSpec(specDirectory); - it.concurrent('should fail as test takes longer than Jest local timeout', async () => { - // Arrange - const specDirectory = await writeToFile(runnerName, options, () => { - runner.prop([fc.nat()])( - 'property takes longer than Jest local timeout', - async () => { - await new Promise(() => {}); // never resolving - }, - 1000, - ); + // Assert + expectFail(out); + expectTimeout(out, 5000); + expect(out).toMatch(/[×✕] property takes longer than global Jest timeout/); }); - // Act - const out = await runSpec(specDirectory); + it.concurrent('should fail as test takes longer than Jest local timeout', async () => { + // Arrange + const specDirectory = await writeToFile(runnerName, options, () => { + runner.prop([fc.nat()])( + 'property takes longer than Jest local timeout', + async () => { + await new Promise(() => {}); // never resolving + }, + 1000, + ); + }); - // Assert - expectFail(out); - expectTimeout(out, 1000); - expect(out).toMatch(/[×✕] property takes longer than Jest local timeout/); - }); + // Act + const out = await runSpec(specDirectory); + + // Assert + expectFail(out); + expectTimeout(out, 1000); + expect(out).toMatch(/[×✕] property takes longer than Jest local timeout/); + }); - if (!useWorkers) { it.concurrent('should fail as test takes longer than Jest config timeout', async () => { // Arrange const specDirectory = await writeToFile(runnerName, { ...options, testTimeoutConfig: 1000 }, () => { @@ -551,8 +570,8 @@ describe.each([ expectTimeout(out, 1000); // neither 2000 (cli), nor 5000 (default) expect(out).toMatch(/[×✕] property favor Jest setTimeout over Jest CLI timeout/); }); - } - }); + }); + } }); // Helper