From cd7478e0c22c3e250c9540edd37221cbf3b7b786 Mon Sep 17 00:00:00 2001 From: Brian Donovan <1938+eventualbuddha@users.noreply.github.com> Date: Tue, 10 Dec 2024 12:09:33 -0800 Subject: [PATCH] test(ballot-interpreter): switch from `jest` to `vitest` (#5705) --- libs/ballot-interpreter/.eslintignore | 2 +- libs/ballot-interpreter/Cargo.toml | 2 +- libs/ballot-interpreter/README.md | 3 +- .../{benchmarking.ts => benchmarking.mts} | 3 +- ...t_bmd.bench.ts => interpret_bmd.bench.mts} | 9 +- ...hmpb.bench.ts => interpret_hmpb.bench.mts} | 9 +- .../benchmarks/jest.config.js | 13 - .../benchmarks/vitest.config.mts | 9 + libs/ballot-interpreter/bin/diagnostic | 4 +- libs/ballot-interpreter/bin/interpret | 4 +- libs/ballot-interpreter/bin/scoring-report | 4 +- libs/ballot-interpreter/jest.config.js | 23 - libs/ballot-interpreter/package.json | 19 +- ...n-marked-ballot-interpretation-1-snap.png} | Bin ...ap => interpret_bmd_ballots.test.mts.snap} | 12 +- ...s.snap => interpret_nh_hmpb.test.mts.snap} | 156 +-- ....test.ts => adjudication_reasons.test.mts} | 3 +- ...py-path-back-front-upside-down-2-snap.png} | Bin ...py-path-front-upside-down-back-2-snap.png} | Bin ....test.tsx.snap => interpret.test.mts.snap} | 2 +- ...{interpret.test.tsx => interpret.test.mts} | 5 +- .../utils/{qrcode.test.ts => qrcode.test.mts} | 5 +- .../utils/{rotate.test.ts => rotate.test.mts} | 3 +- ...t.test.ts.snap => interpret.test.mts.snap} | 2 +- .../src/hmpb-ts/{rust_addon.d.ts => addon.ts} | 37 +- .../src/hmpb-ts/{cli.test.ts => cli.test.mts} | 5 +- .../hmpb-ts/{debug.test.ts => debug.test.mts} | 12 +- ...diagnostic.test.ts => diagnostic.test.mts} | 3 +- .../src/hmpb-ts/diagnostic.ts | 2 +- ...> find_template_grid_and_bubbles.test.mts} | 5 +- .../hmpb-ts/find_template_grid_and_bubbles.ts | 2 +- .../{interpret.test.ts => interpret.test.mts} | 3 +- .../src/hmpb-ts/interpret.ts | 2 +- .../src/hmpb-ts/rust_addon.node | 1 - .../hmpb-ts/{types.test.ts => types.test.mts} | 3 +- ...s => interpret_all_bubble_ballot.test.mts} | 8 +- ...t.ts => interpret_and_save_files.test.mts} | 7 +- ...=> interpret_bmd_and_hmp_ballots.test.mts} | 5 +- ...test.ts => interpret_bmd_ballots.test.mts} | 13 +- ...mpb.test.ts => interpret_nh_hmpb.test.mts} | 11 +- ...mpb.test.ts => interpret_vx_hmpb.test.mts} | 13 +- ...ve_images.test.ts => save_images.test.mts} | 5 +- libs/ballot-interpreter/src/setupTests.ts | 1 + ...validation.test.ts => validation.test.mts} | 5 +- .../ballot-interpreter/test/fixtures/index.ts | 0 .../{interpretation.ts => interpretation.mts} | 0 .../test/helpers/{tmp.ts => tmp.mts} | 1 + libs/ballot-interpreter/tsconfig.build.json | 8 +- libs/ballot-interpreter/tsconfig.json | 1 + libs/ballot-interpreter/vitest.config.mts | 13 + .../src/configs/recommended.ts | 28 +- libs/test-utils-vitest/.eslintignore | 2 +- libs/test-utils-vitest/package.json | 5 +- .../src/child_process.test.ts | 6 +- libs/test-utils-vitest/src/console.test.ts | 2 +- libs/test-utils-vitest/src/index.ts | 12 +- .../src/mock_function.test.ts | 2 +- .../{vitest.config.ts => vitest.config.mts} | 4 +- package.json | 3 +- pnpm-lock.yaml | 892 +++++++++++------- vitest.config.shared.mts | 49 + 61 files changed, 889 insertions(+), 574 deletions(-) rename libs/ballot-interpreter/benchmarks/{benchmarking.ts => benchmarking.mts} (98%) rename libs/ballot-interpreter/benchmarks/{interpret_bmd.bench.ts => interpret_bmd.bench.mts} (86%) rename libs/ballot-interpreter/benchmarks/{interpret_hmpb.bench.ts => interpret_hmpb.bench.mts} (87%) delete mode 100644 libs/ballot-interpreter/benchmarks/jest.config.js create mode 100644 libs/ballot-interpreter/benchmarks/vitest.config.mts delete mode 100644 libs/ballot-interpreter/jest.config.js rename libs/ballot-interpreter/src/__image_snapshots__/{interpret-vx-hmpb-test-ts-hmpb-general-election-letter-paper-language-en-marked-ballot-interpretation-1-snap.png => interpret-vx-hmpb-test-mts-hmpb-general-election-letter-paper-language-en-marked-ballot-interpretation-1-snap.png} (100%) rename libs/ballot-interpreter/src/__snapshots__/{interpret_bmd_ballots.test.ts.snap => interpret_bmd_ballots.test.mts.snap} (96%) rename libs/ballot-interpreter/src/__snapshots__/{interpret_nh_hmpb.test.ts.snap => interpret_nh_hmpb.test.mts.snap} (96%) rename libs/ballot-interpreter/src/{adjudication_reasons.test.ts => adjudication_reasons.test.mts} (99%) rename libs/ballot-interpreter/src/bmd/__image_snapshots__/{interpret-test-tsx-happy-path-back-front-upside-down-2-snap.png => interpret-test-mts-happy-path-back-front-upside-down-2-snap.png} (100%) rename libs/ballot-interpreter/src/bmd/__image_snapshots__/{interpret-test-tsx-happy-path-front-upside-down-back-2-snap.png => interpret-test-mts-happy-path-front-upside-down-back-2-snap.png} (100%) rename libs/ballot-interpreter/src/bmd/__snapshots__/{interpret.test.tsx.snap => interpret.test.mts.snap} (99%) rename libs/ballot-interpreter/src/bmd/{interpret.test.tsx => interpret.test.mts} (98%) rename libs/ballot-interpreter/src/bmd/utils/{qrcode.test.ts => qrcode.test.mts} (97%) rename libs/ballot-interpreter/src/bmd/utils/{rotate.test.ts => rotate.test.mts} (95%) rename libs/ballot-interpreter/src/hmpb-ts/__snapshots__/{interpret.test.ts.snap => interpret.test.mts.snap} (99%) rename libs/ballot-interpreter/src/hmpb-ts/{rust_addon.d.ts => addon.ts} (55%) rename libs/ballot-interpreter/src/hmpb-ts/{cli.test.ts => cli.test.mts} (92%) rename libs/ballot-interpreter/src/hmpb-ts/{debug.test.ts => debug.test.mts} (92%) rename libs/ballot-interpreter/src/hmpb-ts/{diagnostic.test.ts => diagnostic.test.mts} (84%) rename libs/ballot-interpreter/src/hmpb-ts/{find_template_grid_and_bubbles.test.ts => find_template_grid_and_bubbles.test.mts} (92%) rename libs/ballot-interpreter/src/hmpb-ts/{interpret.test.ts => interpret.test.mts} (99%) delete mode 120000 libs/ballot-interpreter/src/hmpb-ts/rust_addon.node rename libs/ballot-interpreter/src/hmpb-ts/{types.test.ts => types.test.mts} (59%) rename libs/ballot-interpreter/src/{interpret_all_bubble_ballot.test.ts => interpret_all_bubble_ballot.test.mts} (95%) rename libs/ballot-interpreter/src/{interpret_and_save_files.test.ts => interpret_and_save_files.test.mts} (87%) rename libs/ballot-interpreter/src/{interpret_bmd_and_hmp_ballots.test.ts => interpret_bmd_and_hmp_ballots.test.mts} (95%) rename libs/ballot-interpreter/src/{interpret_bmd_ballots.test.ts => interpret_bmd_ballots.test.mts} (98%) rename libs/ballot-interpreter/src/{interpret_nh_hmpb.test.ts => interpret_nh_hmpb.test.mts} (97%) rename libs/ballot-interpreter/src/{interpret_vx_hmpb.test.ts => interpret_vx_hmpb.test.mts} (98%) rename libs/ballot-interpreter/src/{save_images.test.ts => save_images.test.mts} (81%) rename libs/ballot-interpreter/src/{validation.test.ts => validation.test.mts} (96%) delete mode 100644 libs/ballot-interpreter/test/fixtures/index.ts rename libs/ballot-interpreter/test/helpers/{interpretation.ts => interpretation.mts} (100%) rename libs/ballot-interpreter/test/helpers/{tmp.ts => tmp.mts} (90%) create mode 100644 libs/ballot-interpreter/vitest.config.mts rename libs/test-utils-vitest/{vitest.config.ts => vitest.config.mts} (75%) create mode 100644 vitest.config.shared.mts diff --git a/libs/ballot-interpreter/.eslintignore b/libs/ballot-interpreter/.eslintignore index e2c7cf4cc8..93f0e825ef 100644 --- a/libs/ballot-interpreter/.eslintignore +++ b/libs/ballot-interpreter/.eslintignore @@ -1,3 +1,3 @@ build coverage -jest.config.js \ No newline at end of file +vitest.config.mts \ No newline at end of file diff --git a/libs/ballot-interpreter/Cargo.toml b/libs/ballot-interpreter/Cargo.toml index 6a9523fcb1..a5fbc026ae 100644 --- a/libs/ballot-interpreter/Cargo.toml +++ b/libs/ballot-interpreter/Cargo.toml @@ -2,7 +2,7 @@ name = "ballot-interpreter" version = "0.1.0" edition = "2021" -exclude = ["build/rust_addon.node"] +exclude = ["build/addon.node"] [lib] crate-type = ["cdylib", "rlib"] diff --git a/libs/ballot-interpreter/README.md b/libs/ballot-interpreter/README.md index a7d6cead07..0ec9d03d60 100644 --- a/libs/ballot-interpreter/README.md +++ b/libs/ballot-interpreter/README.md @@ -19,8 +19,7 @@ $ pnpm build This command uses the [cargo-cp-artifact](https://github.com/neon-bindings/cargo-cp-artifact) utility -to run the Rust build and copy the built library into -`./build/hmpb-ts/rust_addon.node`. +to run the Rust build and copy the built library into `./build/addon.node`. ## CLI diff --git a/libs/ballot-interpreter/benchmarks/benchmarking.ts b/libs/ballot-interpreter/benchmarks/benchmarking.mts similarity index 98% rename from libs/ballot-interpreter/benchmarks/benchmarking.ts rename to libs/ballot-interpreter/benchmarks/benchmarking.mts index 37369bfb13..2c826eed67 100644 --- a/libs/ballot-interpreter/benchmarks/benchmarking.ts +++ b/libs/ballot-interpreter/benchmarks/benchmarking.mts @@ -1,4 +1,5 @@ -/* eslint-disable vx/gts-safe-number-parse */ +/* eslint-disable import/no-extraneous-dependencies, vx/gts-safe-number-parse */ +import { expect } from 'vitest'; import { assertDefined, iter, range } from '@votingworks/basics'; import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; diff --git a/libs/ballot-interpreter/benchmarks/interpret_bmd.bench.ts b/libs/ballot-interpreter/benchmarks/interpret_bmd.bench.mts similarity index 86% rename from libs/ballot-interpreter/benchmarks/interpret_bmd.bench.ts rename to libs/ballot-interpreter/benchmarks/interpret_bmd.bench.mts index 03fb1fda59..2c734256b9 100644 --- a/libs/ballot-interpreter/benchmarks/interpret_bmd.bench.ts +++ b/libs/ballot-interpreter/benchmarks/interpret_bmd.bench.mts @@ -1,3 +1,4 @@ +import { beforeAll, describe, test } from 'vitest'; import { assertDefined } from '@votingworks/basics'; import { famousNamesFixtures } from '@votingworks/hmpb'; import { asSheet, DEFAULT_MARK_THRESHOLDS } from '@votingworks/types'; @@ -9,11 +10,9 @@ import { renderBmdBallotFixture, } from '@votingworks/bmd-ballot-fixtures'; import { electionFamousNames2021Fixtures } from '@votingworks/fixtures'; -import { interpretSheet } from '../src'; -import { pdfToPageImages } from '../test/helpers/interpretation'; -import { benchmarkRegressionTest } from './benchmarking'; - -jest.setTimeout(60_000); +import { interpretSheet } from '../src/index.js'; +import { pdfToPageImages } from '../test/helpers/interpretation.mjs'; +import { benchmarkRegressionTest } from './benchmarking.mjs'; describe('Interpretation benchmark', () => { const { electionDefinition, precinctId } = famousNamesFixtures; diff --git a/libs/ballot-interpreter/benchmarks/interpret_hmpb.bench.ts b/libs/ballot-interpreter/benchmarks/interpret_hmpb.bench.mts similarity index 87% rename from libs/ballot-interpreter/benchmarks/interpret_hmpb.bench.ts rename to libs/ballot-interpreter/benchmarks/interpret_hmpb.bench.mts index 14ba4d41bc..d84e507fbc 100644 --- a/libs/ballot-interpreter/benchmarks/interpret_hmpb.bench.ts +++ b/libs/ballot-interpreter/benchmarks/interpret_hmpb.bench.mts @@ -1,12 +1,11 @@ +import { beforeAll, describe, test } from 'vitest'; import { assertDefined } from '@votingworks/basics'; import { famousNamesFixtures } from '@votingworks/hmpb'; import { asSheet, DEFAULT_MARK_THRESHOLDS } from '@votingworks/types'; import { singlePrecinctSelectionFor } from '@votingworks/utils'; -import { interpretSheet } from '../src'; -import { pdfToPageImages } from '../test/helpers/interpretation'; -import { benchmarkRegressionTest } from './benchmarking'; - -jest.setTimeout(60_000); +import { interpretSheet } from '../src/index.js'; +import { pdfToPageImages } from '../test/helpers/interpretation.mjs'; +import { benchmarkRegressionTest } from './benchmarking.mjs'; describe('Interpretation benchmark', () => { const { electionDefinition, precinctId, blankBallotPath, markedBallotPath } = diff --git a/libs/ballot-interpreter/benchmarks/jest.config.js b/libs/ballot-interpreter/benchmarks/jest.config.js deleted file mode 100644 index f6861bf2de..0000000000 --- a/libs/ballot-interpreter/benchmarks/jest.config.js +++ /dev/null @@ -1,13 +0,0 @@ -const shared = require('../../../jest.config.shared'); - -/** - * @type {import('@jest/types').Config.InitialOptions} - */ -module.exports = { - ...shared, - testMatch: ['/**/*.bench.ts'], - watchPathIgnorePatterns: [ - ...shared.watchPathIgnorePatterns, - '/results', - ], -}; diff --git a/libs/ballot-interpreter/benchmarks/vitest.config.mts b/libs/ballot-interpreter/benchmarks/vitest.config.mts new file mode 100644 index 0000000000..1fadfd1622 --- /dev/null +++ b/libs/ballot-interpreter/benchmarks/vitest.config.mts @@ -0,0 +1,9 @@ +// @ts-ignore +import { defineConfig } from '../../../vitest.config.shared.mjs'; + +export default defineConfig({ + test: { + include: ['**/*.bench.mts'], + maxConcurrency: 1, + }, +}); diff --git a/libs/ballot-interpreter/bin/diagnostic b/libs/ballot-interpreter/bin/diagnostic index 7889dd3c1e..dde0a869f0 100755 --- a/libs/ballot-interpreter/bin/diagnostic +++ b/libs/ballot-interpreter/bin/diagnostic @@ -5,9 +5,9 @@ const fs = require('fs'); const { join } = require('path'); -if (!fs.existsSync(join(__dirname, '../build/hmpb-ts/rust_addon.node'))) { +if (!fs.existsSync(join(__dirname, '../build/addon.node'))) { process.stderr.write( - 'Error: native rust_addon has not been built. Please run `pnpm build` first.\n' + 'Error: native addon has not been built. Please run `pnpm build` first.\n' ); process.exit(1); } diff --git a/libs/ballot-interpreter/bin/interpret b/libs/ballot-interpreter/bin/interpret index eab94117d8..2b8a444e59 100755 --- a/libs/ballot-interpreter/bin/interpret +++ b/libs/ballot-interpreter/bin/interpret @@ -5,9 +5,9 @@ const fs = require('fs'); const { join } = require('path'); -if (!fs.existsSync(join(__dirname, '../build/hmpb-ts/rust_addon.node'))) { +if (!fs.existsSync(join(__dirname, '../build/addon.node'))) { process.stderr.write( - 'Error: native rust_addon has not been built. Please run `pnpm build` first.\n' + 'Error: native addon has not been built. Please run `pnpm build` first.\n' ); process.exit(1); } diff --git a/libs/ballot-interpreter/bin/scoring-report b/libs/ballot-interpreter/bin/scoring-report index c584b530f6..2d0f3dafb3 100755 --- a/libs/ballot-interpreter/bin/scoring-report +++ b/libs/ballot-interpreter/bin/scoring-report @@ -5,9 +5,9 @@ const fs = require('fs'); const { join } = require('path'); -if (!fs.existsSync(join(__dirname, '../build/hmpb-ts/rust_addon.node'))) { +if (!fs.existsSync(join(__dirname, '../build/addon.node'))) { process.stderr.write( - 'Error: native rust_addon has not been built. Please run `pnpm build` first.\n' + 'Error: native addon has not been built. Please run `pnpm build` first.\n' ); process.exit(1); } diff --git a/libs/ballot-interpreter/jest.config.js b/libs/ballot-interpreter/jest.config.js deleted file mode 100644 index 545cd53b0c..0000000000 --- a/libs/ballot-interpreter/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -const shared = require('../../jest.config.shared'); - -/** - * @type {import('@jest/types').Config.InitialOptions} - */ -module.exports = { - ...shared, - coverageThreshold: { - global: { - branches: -5, - lines: -7, - }, - }, - setupFilesAfterEnv: ['/src/setupTests.ts'], - watchPathIgnorePatterns: [ - ...shared.watchPathIgnorePatterns, - '/benchmarks', - ], - coveragePathIgnorePatterns: [ - '/src/hmpb-ts/cli.ts', - '/src/hmpb-ts/diagnostic_cli.ts', - ], -}; diff --git a/libs/ballot-interpreter/package.json b/libs/ballot-interpreter/package.json index 63f994bda9..e54f636f10 100644 --- a/libs/ballot-interpreter/package.json +++ b/libs/ballot-interpreter/package.json @@ -10,10 +10,10 @@ "build" ], "scripts": { - "benchmark": "jest --runInBand --projects benchmarks", + "benchmark": "cd benchmarks && vitest", "build": "pnpm --filter $npm_package_name... build:self", "build:self": "pnpm install:rust-addon && pnpm build:rust-addon && pnpm build:ts", - "build:rust-addon": "cargo-cp-artifact -nc build/hmpb-ts/rust_addon.node -- cargo build --message-format=json-render-diagnostics --release --offline", + "build:rust-addon": "cargo-cp-artifact -nc build/addon.node -- cargo build --message-format=json-render-diagnostics --release --offline", "build:ts": "tsc --build tsconfig.build.json", "clean": "pnpm --filter $npm_package_name... clean:self", "clean:self": "cargo clean --release --package ballot-interpreter && rm -rf build && tsc --build --clean tsconfig.build.json", @@ -22,11 +22,11 @@ "lint:fix": "pnpm type-check && eslint . --fix", "pre-commit": "lint-staged", "test": "pnpm test:rust-addon && pnpm test:ts", - "test:ci": "pnpm build && pnpm test:ts:coverage --reporters=default --reporters=jest-junit --maxWorkers=6", + "test:ci": "pnpm build && pnpm test:ts:coverage --run", "test:rust-addon": "cargo test", "test:ts": "is-ci test:ci test:ts:watch", - "test:ts:coverage": "jest --coverage", - "test:ts:watch": "jest --watch", + "test:ts:coverage": "vitest --coverage", + "test:ts:watch": "vitest", "type-check": "tsc --build" }, "dependencies": { @@ -34,7 +34,7 @@ "@votingworks/basics": "workspace:*", "@votingworks/image-utils": "workspace:*", "@votingworks/qrdetect": "^1.0.1", - "@votingworks/test-utils": "workspace:*", + "@votingworks/test-utils-vitest": "workspace:*", "@votingworks/types": "workspace:*", "@votingworks/utils": "workspace:*", "better-sqlite3": "8.2.0", @@ -49,11 +49,11 @@ "@types/chalk": "^2.2.0", "@types/debug": "4.1.8", "@types/fs-extra": "11.0.1", - "@types/jest": "^29.5.3", "@types/jest-image-snapshot": "^6.4.0", "@types/node": "20.16.0", "@types/node-quirc": "workspace:*", "@types/tmp": "0.2.4", + "@vitest/coverage-istanbul": "^2.1.8", "@votingworks/bmd-ballot-fixtures": "workspace:*", "@votingworks/fixtures": "workspace:*", "@votingworks/fs": "workspace:*", @@ -64,13 +64,10 @@ "eslint-plugin-vx": "workspace:*", "fs-extra": "11.1.1", "is-ci-cli": "2.2.0", - "jest": "^29.6.2", "jest-image-snapshot": "^6.4.0", - "jest-junit": "^16.0.0", - "jest-watch-typeahead": "^2.2.2", "lint-staged": "11.0.0", "sort-package-json": "^1.50.0", - "ts-jest": "29.1.1" + "vitest": "^2.1.8" }, "packageManager": "pnpm@8.15.5" } diff --git a/libs/ballot-interpreter/src/__image_snapshots__/interpret-vx-hmpb-test-ts-hmpb-general-election-letter-paper-language-en-marked-ballot-interpretation-1-snap.png b/libs/ballot-interpreter/src/__image_snapshots__/interpret-vx-hmpb-test-mts-hmpb-general-election-letter-paper-language-en-marked-ballot-interpretation-1-snap.png similarity index 100% rename from libs/ballot-interpreter/src/__image_snapshots__/interpret-vx-hmpb-test-ts-hmpb-general-election-letter-paper-language-en-marked-ballot-interpretation-1-snap.png rename to libs/ballot-interpreter/src/__image_snapshots__/interpret-vx-hmpb-test-mts-hmpb-general-election-letter-paper-language-en-marked-ballot-interpretation-1-snap.png diff --git a/libs/ballot-interpreter/src/__snapshots__/interpret_bmd_ballots.test.ts.snap b/libs/ballot-interpreter/src/__snapshots__/interpret_bmd_ballots.test.mts.snap similarity index 96% rename from libs/ballot-interpreter/src/__snapshots__/interpret_bmd_ballots.test.ts.snap rename to libs/ballot-interpreter/src/__snapshots__/interpret_bmd_ballots.test.mts.snap index 0aa7370f0d..08f416cab4 100644 --- a/libs/ballot-interpreter/src/__snapshots__/interpret_bmd_ballots.test.ts.snap +++ b/libs/ballot-interpreter/src/__snapshots__/interpret_bmd_ballots.test.mts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`VX BMD interpretation extracts votes encoded in a QR code 1`] = ` +exports[`VX BMD interpretation > extracts votes encoded in a QR code 1`] = ` [ { "adjudicationInfo": { @@ -141,7 +141,7 @@ exports[`VX BMD interpretation extracts votes encoded in a QR code 1`] = ` ] `; -exports[`VX BMD interpretation interpretSimplexBmdBallot 1`] = ` +exports[`VX BMD interpretation > interpretSimplexBmdBallot 1`] = ` [ { "adjudicationInfo": { @@ -282,7 +282,7 @@ exports[`VX BMD interpretation interpretSimplexBmdBallot 1`] = ` ] `; -exports[`adjudication reporting correctly reports blank ballot adjudication flag 1`] = ` +exports[`adjudication reporting > correctly reports blank ballot adjudication flag 1`] = ` { "enabledReasonInfos": [ { @@ -418,7 +418,7 @@ exports[`adjudication reporting correctly reports blank ballot adjudication flag } `; -exports[`adjudication reporting ignores blank ballot adjudication flag when configured to do so 1`] = ` +exports[`adjudication reporting > ignores blank ballot adjudication flag when configured to do so 1`] = ` { "enabledReasonInfos": [ { @@ -554,7 +554,7 @@ exports[`adjudication reporting ignores blank ballot adjudication flag when conf } `; -exports[`adjudication reporting ignores undervote adjudication flag when configured to do so 1`] = ` +exports[`adjudication reporting > ignores undervote adjudication flag when configured to do so 1`] = ` [ { "contestId": "president", diff --git a/libs/ballot-interpreter/src/__snapshots__/interpret_nh_hmpb.test.ts.snap b/libs/ballot-interpreter/src/__snapshots__/interpret_nh_hmpb.test.mts.snap similarity index 96% rename from libs/ballot-interpreter/src/__snapshots__/interpret_nh_hmpb.test.ts.snap rename to libs/ballot-interpreter/src/__snapshots__/interpret_nh_hmpb.test.mts.snap index 07c31e9ccb..fe750f4580 100644 --- a/libs/ballot-interpreter/src/__snapshots__/interpret_nh_hmpb.test.ts.snap +++ b/libs/ballot-interpreter/src/__snapshots__/interpret_nh_hmpb.test.mts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=04e81bd0-1cb6-4030-bc35-2ac549b25437 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=04e81bd0-1cb6-4030-bc35-2ac549b25437 1`] = ` { "04e81bd0-1cb6-4030-bc35-2ac549b25437": [ { @@ -62,7 +62,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=04e81bd0-1 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=05b4f778-4a9c-477f-bb7d-40ca98c280e9 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=05b4f778-4a9c-477f-bb7d-40ca98c280e9 1`] = ` { "05b4f778-4a9c-477f-bb7d-40ca98c280e9": [ { @@ -172,7 +172,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=05b4f778-4 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=060d4aba-9b70-43c3-80e0-1ac38dc129a6 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=060d4aba-9b70-43c3-80e0-1ac38dc129a6 1`] = ` { "060d4aba-9b70-43c3-80e0-1ac38dc129a6": [ { @@ -267,7 +267,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=060d4aba-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=0603e8df-6aa4-413c-b5cc-f2dadad9c441 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=0603e8df-6aa4-413c-b5cc-f2dadad9c441 1`] = ` { "0603e8df-6aa4-413c-b5cc-f2dadad9c441": [ { @@ -348,7 +348,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=0603e8df-6 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=0c802ae3-06f5-431b-8953-6368f93e71b1 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=0c802ae3-06f5-431b-8953-6368f93e71b1 1`] = ` { "0c802ae3-06f5-431b-8953-6368f93e71b1": [ { @@ -499,7 +499,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=0c802ae3-0 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=1d8eb82c-43bb-454d-a85b-1ffaf65c2b72 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=1d8eb82c-43bb-454d-a85b-1ffaf65c2b72 1`] = ` { "1d8eb82c-43bb-454d-a85b-1ffaf65c2b72": [ { @@ -611,7 +611,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=1d8eb82c-4 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=1e44bb3a-dfb3-4f70-9ed5-7da7548af1bd 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=1e44bb3a-dfb3-4f70-9ed5-7da7548af1bd 1`] = ` { "1e44bb3a-dfb3-4f70-9ed5-7da7548af1bd": [ { @@ -690,7 +690,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=1e44bb3a-d } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=3cb39cd0-6357-42ca-841a-b7c750d327b9 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=3cb39cd0-6357-42ca-841a-b7c750d327b9 1`] = ` { "3cb39cd0-6357-42ca-841a-b7c750d327b9": [ { @@ -761,7 +761,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=3cb39cd0-6 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4b12014e-60c5-447c-bfde-98855d1feaea 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=4b12014e-60c5-447c-bfde-98855d1feaea 1`] = ` { "4b12014e-60c5-447c-bfde-98855d1feaea": [ { @@ -906,7 +906,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4b12014e-6 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4c7a63dc-3f16-434d-87bf-7ac31bd6caa0 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=4c7a63dc-3f16-434d-87bf-7ac31bd6caa0 1`] = ` { "4c7a63dc-3f16-434d-87bf-7ac31bd6caa0": [ { @@ -971,7 +971,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4c7a63dc-3 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4f054d5a-f890-4717-ae1e-5ddadf32a16b 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=4f054d5a-f890-4717-ae1e-5ddadf32a16b 1`] = ` { "4f054d5a-f890-4717-ae1e-5ddadf32a16b": [ { @@ -1074,7 +1074,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4f054d5a-f } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=5dc43750-a2aa-4d46-ad1c-7a0e2cb4e2c1 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=5dc43750-a2aa-4d46-ad1c-7a0e2cb4e2c1 1`] = ` { "5dc43750-a2aa-4d46-ad1c-7a0e2cb4e2c1": [ { @@ -1244,7 +1244,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=5dc43750-a } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=6e229f1d-676e-4ced-bb8f-523793391001 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=6e229f1d-676e-4ced-bb8f-523793391001 1`] = ` { "6e229f1d-676e-4ced-bb8f-523793391001": [ { @@ -1333,7 +1333,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=6e229f1d-6 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7a5f1429-a94b-44a8-80fc-c290b217e632 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=7a5f1429-a94b-44a8-80fc-c290b217e632 1`] = ` { "7a5f1429-a94b-44a8-80fc-c290b217e632": [ { @@ -1493,7 +1493,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7a5f1429-a } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7c29afa2-8b91-49c6-8292-db47d2d8a34c 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=7c29afa2-8b91-49c6-8292-db47d2d8a34c 1`] = ` { "7c29afa2-8b91-49c6-8292-db47d2d8a34c": [ { @@ -1617,7 +1617,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7c29afa2-8 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7cd316f5-9775-49a2-a8ac-3da46c30add3 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=7cd316f5-9775-49a2-a8ac-3da46c30add3 1`] = ` { "7cd316f5-9775-49a2-a8ac-3da46c30add3": [ { @@ -1688,7 +1688,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7cd316f5-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7cd12878-7c65-4d81-8cc6-45a4238df0a8 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=7cd12878-7c65-4d81-8cc6-45a4238df0a8 1`] = ` { "7cd12878-7c65-4d81-8cc6-45a4238df0a8": [ { @@ -1777,7 +1777,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7cd12878-7 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7dfff758-2f99-467e-b1d9-b590d871ae0b 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=7dfff758-2f99-467e-b1d9-b590d871ae0b 1`] = ` { "7dfff758-2f99-467e-b1d9-b590d871ae0b": [ { @@ -1872,7 +1872,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7dfff758-2 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8a7625a3-950f-4346-aad2-e904b1a9cba2 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=8a7625a3-950f-4346-aad2-e904b1a9cba2 1`] = ` { "8a7625a3-950f-4346-aad2-e904b1a9cba2": [ { @@ -1991,7 +1991,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8a7625a3-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8c5ea5a3-9d17-4895-96b4-ab803d39bd3f 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=8c5ea5a3-9d17-4895-96b4-ab803d39bd3f 1`] = ` { "8c5ea5a3-9d17-4895-96b4-ab803d39bd3f": [ { @@ -2115,7 +2115,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8c5ea5a3-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8d50bac9-d511-48b3-9e1f-af9c7d85b7a8 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=8d50bac9-d511-48b3-9e1f-af9c7d85b7a8 1`] = ` { "8d50bac9-d511-48b3-9e1f-af9c7d85b7a8": [ { @@ -2188,7 +2188,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8d50bac9-d } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8e6a152e-7986-4ff1-b52d-a89d52d240f6 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=8e6a152e-7986-4ff1-b52d-a89d52d240f6 1`] = ` { "8e6a152e-7986-4ff1-b52d-a89d52d240f6": [ { @@ -2358,7 +2358,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8e6a152e-7 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=9f5ee84a-5da0-4a80-bc1e-5ea0e2cf4e34 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=9f5ee84a-5da0-4a80-bc1e-5ea0e2cf4e34 1`] = ` { "9f5ee84a-5da0-4a80-bc1e-5ea0e2cf4e34": [ { @@ -2532,7 +2532,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=9f5ee84a-5 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=12ee4c7c-fe40-4492-94ca-75bcf6db9f18 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=12ee4c7c-fe40-4492-94ca-75bcf6db9f18 1`] = ` { "12ee4c7c-fe40-4492-94ca-75bcf6db9f18": [ { @@ -2597,7 +2597,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=12ee4c7c-f } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=12effe84-6be5-481b-b70d-5a5df4b049e7 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=12effe84-6be5-481b-b70d-5a5df4b049e7 1`] = ` { "12effe84-6be5-481b-b70d-5a5df4b049e7": [ { @@ -2646,7 +2646,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=12effe84-6 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=21e0d2db-0f44-4a23-ac08-2eec70851df5 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=21e0d2db-0f44-4a23-ac08-2eec70851df5 1`] = ` { "21e0d2db-0f44-4a23-ac08-2eec70851df5": [ { @@ -2797,7 +2797,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=21e0d2db-0 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=22c0ab78-020b-4535-b231-5b5177581265 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=22c0ab78-020b-4535-b231-5b5177581265 1`] = ` { "22c0ab78-020b-4535-b231-5b5177581265": [ { @@ -2870,7 +2870,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=22c0ab78-0 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=32e0764e-e0b1-4275-b5bd-e6e9f1b504fc 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=32e0764e-e0b1-4275-b5bd-e6e9f1b504fc 1`] = ` { "32e0764e-e0b1-4275-b5bd-e6e9f1b504fc": [ { @@ -3026,7 +3026,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=32e0764e-e } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=40ce9cdc-42c3-4932-bb2d-46aa782629e8 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=40ce9cdc-42c3-4932-bb2d-46aa782629e8 1`] = ` { "40ce9cdc-42c3-4932-bb2d-46aa782629e8": [ { @@ -3123,7 +3123,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=40ce9cdc-4 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=46f9490e-5717-4c56-92e5-37c1f1a971c2 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=46f9490e-5717-4c56-92e5-37c1f1a971c2 1`] = ` { "46f9490e-5717-4c56-92e5-37c1f1a971c2": [ { @@ -3266,7 +3266,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=46f9490e-5 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=47cda523-a05a-439d-8519-ce077cf781f3 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=47cda523-a05a-439d-8519-ce077cf781f3 1`] = ` { "47cda523-a05a-439d-8519-ce077cf781f3": [ { @@ -3375,7 +3375,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=47cda523-a } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=50d8aa5e-2a3b-47e3-813d-075be04ebb6e 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=50d8aa5e-2a3b-47e3-813d-075be04ebb6e 1`] = ` { "50d8aa5e-2a3b-47e3-813d-075be04ebb6e": [ { @@ -3439,7 +3439,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=50d8aa5e-2 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=55a65b48-69ce-4b44-a582-736b492bb10c 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=55a65b48-69ce-4b44-a582-736b492bb10c 1`] = ` { "55a65b48-69ce-4b44-a582-736b492bb10c": [ { @@ -3528,7 +3528,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=55a65b48-6 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=85cde9ce-edc4-41eb-b1cd-280c63a46474 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=85cde9ce-edc4-41eb-b1cd-280c63a46474 1`] = ` { "85cde9ce-edc4-41eb-b1cd-280c63a46474": [ { @@ -3599,7 +3599,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=85cde9ce-e } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=97af3ccb-dd18-406f-aea2-e0a7af30c11c 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=97af3ccb-dd18-406f-aea2-e0a7af30c11c 1`] = ` { "97af3ccb-dd18-406f-aea2-e0a7af30c11c": [ { @@ -3707,7 +3707,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=97af3ccb-d } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=97c8dd4a-52ec-4d16-a843-5a5bdf22d6f3 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=97c8dd4a-52ec-4d16-a843-5a5bdf22d6f3 1`] = ` { "97c8dd4a-52ec-4d16-a843-5a5bdf22d6f3": [ { @@ -3763,7 +3763,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=97c8dd4a-5 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=99b486dd-9507-4c82-87c8-67bba43b4e1b 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=99b486dd-9507-4c82-87c8-67bba43b4e1b 1`] = ` { "99b486dd-9507-4c82-87c8-67bba43b4e1b": [ { @@ -3903,7 +3903,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=99b486dd-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=227e070a-53e5-4409-a89d-cec7e8c45c7d 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=227e070a-53e5-4409-a89d-cec7e8c45c7d 1`] = ` { "227e070a-53e5-4409-a89d-cec7e8c45c7d": [ { @@ -3981,7 +3981,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=227e070a-5 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=381da8b3-cb46-4f1e-8511-814d892a05f3 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=381da8b3-cb46-4f1e-8511-814d892a05f3 1`] = ` { "381da8b3-cb46-4f1e-8511-814d892a05f3": [ { @@ -4054,7 +4054,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=381da8b3-c } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=524a09ad-b366-4d3f-8399-763ea31bf357 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=524a09ad-b366-4d3f-8399-763ea31bf357 1`] = ` { "524a09ad-b366-4d3f-8399-763ea31bf357": [ { @@ -4119,7 +4119,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=524a09ad-b } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=759fee43-9f63-4550-ba2d-eec22fa6fb0d 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=759fee43-9f63-4550-ba2d-eec22fa6fb0d 1`] = ` { "759fee43-9f63-4550-ba2d-eec22fa6fb0d": [ { @@ -4192,7 +4192,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=759fee43-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=786f4868-0d0a-45cd-b193-42a9c3553d30 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=786f4868-0d0a-45cd-b193-42a9c3553d30 1`] = ` { "786f4868-0d0a-45cd-b193-42a9c3553d30": [ { @@ -4262,7 +4262,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=786f4868-0 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=913c814b-f170-4427-8049-76d322b3eee3 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=913c814b-f170-4427-8049-76d322b3eee3 1`] = ` { "913c814b-f170-4427-8049-76d322b3eee3": [ { @@ -4430,7 +4430,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=913c814b-f } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4483d72e-ea62-4698-b8f7-e24911a72a5b 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=4483d72e-ea62-4698-b8f7-e24911a72a5b 1`] = ` { "4483d72e-ea62-4698-b8f7-e24911a72a5b": [ { @@ -4598,7 +4598,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4483d72e-e } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4653ca16-0f5c-4968-8390-f6297f2c278c 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=4653ca16-0f5c-4968-8390-f6297f2c278c 1`] = ` { "4653ca16-0f5c-4968-8390-f6297f2c278c": [ { @@ -4674,7 +4674,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=4653ca16-0 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7527d2a4-1cde-4f8f-ae08-7f95de165192 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=7527d2a4-1cde-4f8f-ae08-7f95de165192 1`] = ` { "7527d2a4-1cde-4f8f-ae08-7f95de165192": [ { @@ -4844,7 +4844,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=7527d2a4-1 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=62385dba-db90-442a-b089-fb41d1f42eea 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=62385dba-db90-442a-b089-fb41d1f42eea 1`] = ` { "62385dba-db90-442a-b089-fb41d1f42eea": [ { @@ -4998,7 +4998,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=62385dba-d } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=346698d4-e4fa-4f9f-956d-2e86a0150673 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=346698d4-e4fa-4f9f-956d-2e86a0150673 1`] = ` { "346698d4-e4fa-4f9f-956d-2e86a0150673": [ { @@ -5094,7 +5094,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=346698d4-e } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=672353df-27cb-4e5a-8b6a-de0b90f8a28d 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=672353df-27cb-4e5a-8b6a-de0b90f8a28d 1`] = ` { "672353df-27cb-4e5a-8b6a-de0b90f8a28d": [ { @@ -5183,7 +5183,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=672353df-2 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8978016e-2585-49bc-9bfb-2852a473a11d 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=8978016e-2585-49bc-9bfb-2852a473a11d 1`] = ` { "8978016e-2585-49bc-9bfb-2852a473a11d": [ { @@ -5240,7 +5240,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=8978016e-2 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=30950612-8e0b-4934-a7b9-5e2190724afe 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=30950612-8e0b-4934-a7b9-5e2190724afe 1`] = ` { "30950612-8e0b-4934-a7b9-5e2190724afe": [ { @@ -5327,7 +5327,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=30950612-8 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=53884725-3c74-49ba-86b9-932e1177ec10 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=53884725-3c74-49ba-86b9-932e1177ec10 1`] = ` { "53884725-3c74-49ba-86b9-932e1177ec10": [ { @@ -5451,7 +5451,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=53884725-3 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=72547548-e08e-48fa-a8f9-d36560c43125 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=72547548-e08e-48fa-a8f9-d36560c43125 1`] = ` { "72547548-e08e-48fa-a8f9-d36560c43125": [ { @@ -5618,7 +5618,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=72547548-e } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=a7cbd4bb-9ca8-4001-ab5e-f0f5eb30d360 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=a7cbd4bb-9ca8-4001-ab5e-f0f5eb30d360 1`] = ` { "a7cbd4bb-9ca8-4001-ab5e-f0f5eb30d360": [ { @@ -5778,7 +5778,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=a7cbd4bb-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=adb431f9-4fd9-41f2-8f13-14d198a92dfe 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=adb431f9-4fd9-41f2-8f13-14d198a92dfe 1`] = ` { "adb431f9-4fd9-41f2-8f13-14d198a92dfe": [ { @@ -5872,7 +5872,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=adb431f9-4 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=af6d30a5-958c-4c08-884a-30c1d1a52416 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=af6d30a5-958c-4c08-884a-30c1d1a52416 1`] = ` { "af6d30a5-958c-4c08-884a-30c1d1a52416": [ { @@ -6031,7 +6031,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=af6d30a5-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=b36f2116-5290-4509-b53c-015895333e1a 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=b36f2116-5290-4509-b53c-015895333e1a 1`] = ` { "b36f2116-5290-4509-b53c-015895333e1a": [ { @@ -6095,7 +6095,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=b36f2116-5 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=b57e8748-f761-46c6-9da5-acd4cafd654e 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=b57e8748-f761-46c6-9da5-acd4cafd654e 1`] = ` { "b57e8748-f761-46c6-9da5-acd4cafd654e": [ { @@ -6254,7 +6254,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=b57e8748-f } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=bc1c384d-23ec-4358-b5ba-83ed457feabe 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=bc1c384d-23ec-4358-b5ba-83ed457feabe 1`] = ` { "bc1c384d-23ec-4358-b5ba-83ed457feabe": [ { @@ -6332,7 +6332,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=bc1c384d-2 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=bf365d83-4e7a-4708-92c8-e3b092a4f26a 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=bf365d83-4e7a-4708-92c8-e3b092a4f26a 1`] = ` { "bf365d83-4e7a-4708-92c8-e3b092a4f26a": [ { @@ -6396,7 +6396,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=bf365d83-4 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=c8b3565d-d8e2-4b13-9ada-10aba6e25327 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=c8b3565d-d8e2-4b13-9ada-10aba6e25327 1`] = ` { "c8b3565d-d8e2-4b13-9ada-10aba6e25327": [ { @@ -6501,7 +6501,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=c8b3565d-d } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=c59ef524-893f-4cf8-8678-14103f1286de 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=c59ef524-893f-4cf8-8678-14103f1286de 1`] = ` { "c59ef524-893f-4cf8-8678-14103f1286de": [ { @@ -6663,7 +6663,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=c59ef524-8 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=c336275b-921b-4d25-9463-ddaf6b1f2210 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=c336275b-921b-4d25-9463-ddaf6b1f2210 1`] = ` { "c336275b-921b-4d25-9463-ddaf6b1f2210": [ { @@ -6744,7 +6744,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=c336275b-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=ccdad2d3-ef7c-402d-8b9a-593988722583 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=ccdad2d3-ef7c-402d-8b9a-593988722583 1`] = ` { "ccdad2d3-ef7c-402d-8b9a-593988722583": [ { @@ -6807,7 +6807,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=ccdad2d3-e } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=cd113cfc-2393-4cf1-889d-7bfca2b17cad 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=cd113cfc-2393-4cf1-889d-7bfca2b17cad 1`] = ` { "cd113cfc-2393-4cf1-889d-7bfca2b17cad": [ { @@ -6919,7 +6919,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=cd113cfc-2 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=d5be8dd6-46d1-4ce4-b906-3bfc61bcfad6 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=d5be8dd6-46d1-4ce4-b906-3bfc61bcfad6 1`] = ` { "d5be8dd6-46d1-4ce4-b906-3bfc61bcfad6": [ { @@ -7000,7 +7000,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=d5be8dd6-4 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=d9c7eaae-79f8-4c8a-b2d2-f47b5768fd3a 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=d9c7eaae-79f8-4c8a-b2d2-f47b5768fd3a 1`] = ` { "d9c7eaae-79f8-4c8a-b2d2-f47b5768fd3a": [ { @@ -7049,7 +7049,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=d9c7eaae-7 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=d24bf705-40ef-4da3-a9b0-4d2f21924db6 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=d24bf705-40ef-4da3-a9b0-4d2f21924db6 1`] = ` { "d24bf705-40ef-4da3-a9b0-4d2f21924db6": [ { @@ -7174,7 +7174,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=d24bf705-4 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=e61e3d7a-a060-41a2-b14e-c7bffd0a6960 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=e61e3d7a-a060-41a2-b14e-c7bffd0a6960 1`] = ` { "e61e3d7a-a060-41a2-b14e-c7bffd0a6960": [ { @@ -7292,7 +7292,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=e61e3d7a-a } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=ed1dd8cb-257e-48de-b4bf-95e293fbf57f 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=ed1dd8cb-257e-48de-b4bf-95e293fbf57f 1`] = ` { "ed1dd8cb-257e-48de-b4bf-95e293fbf57f": [ { @@ -7385,7 +7385,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=ed1dd8cb-2 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=edd42fb9-83b6-4df0-96d5-7b193f11e970 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=edd42fb9-83b6-4df0-96d5-7b193f11e970 1`] = ` { "edd42fb9-83b6-4df0-96d5-7b193f11e970": [ { @@ -7449,7 +7449,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=edd42fb9-8 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=ee64f4eb-9ea3-48a3-a50d-6ef5f91251da 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=ee64f4eb-9ea3-48a3-a50d-6ef5f91251da 1`] = ` { "ee64f4eb-9ea3-48a3-a50d-6ef5f91251da": [ { @@ -7498,7 +7498,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=ee64f4eb-9 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=f1a1a561-52ee-4750-82f7-88cef012b451 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=f1a1a561-52ee-4750-82f7-88cef012b451 1`] = ` { "f1a1a561-52ee-4750-82f7-88cef012b451": [ { @@ -7555,7 +7555,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=f1a1a561-5 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=f55cca96-7b2f-47b2-8457-092db1e17e20 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=f55cca96-7b2f-47b2-8457-092db1e17e20 1`] = ` { "f55cca96-7b2f-47b2-8457-092db1e17e20": [ { @@ -7724,7 +7724,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=f55cca96-7 } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=fa5d9338-fd91-4936-88e7-a16b294caa12 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=fa5d9338-fd91-4936-88e7-a16b294caa12 1`] = ` { "fa5d9338-fd91-4936-88e7-a16b294caa12": [ { @@ -7840,7 +7840,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=fa5d9338-f } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=fc7db095-ce91-4d6c-8a05-53b2930ec583 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=fc7db095-ce91-4d6c-8a05-53b2930ec583 1`] = ` { "fc7db095-ce91-4d6c-8a05-53b2930ec583": [ { @@ -7917,7 +7917,7 @@ exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=fc7db095-c } `; -exports[`HMPB - m17 backup Interprets all ballots correctly: ballotId=fda1aa08-52b4-4364-b537-990666219558 1`] = ` +exports[`HMPB - m17 backup > Interprets all ballots correctly: ballotId=fda1aa08-52b4-4364-b537-990666219558 1`] = ` { "fda1aa08-52b4-4364-b537-990666219558": [ { diff --git a/libs/ballot-interpreter/src/adjudication_reasons.test.ts b/libs/ballot-interpreter/src/adjudication_reasons.test.mts similarity index 99% rename from libs/ballot-interpreter/src/adjudication_reasons.test.ts rename to libs/ballot-interpreter/src/adjudication_reasons.test.mts index ce3101bf83..c5549b9f54 100644 --- a/libs/ballot-interpreter/src/adjudication_reasons.test.ts +++ b/libs/ballot-interpreter/src/adjudication_reasons.test.mts @@ -1,3 +1,4 @@ +import { describe, expect, test } from 'vitest'; import { AdjudicationReason, AdjudicationReasonInfo, @@ -14,7 +15,7 @@ import { allContestOptions } from '@votingworks/utils'; import { getAllPossibleAdjudicationReasons, adjudicationReasonDescription, -} from './adjudication_reasons'; +} from './adjudication_reasons.js'; const electionTwoPartyPrimaryDefinition = readElectionTwoPartyPrimaryDefinition(); diff --git a/libs/ballot-interpreter/src/bmd/__image_snapshots__/interpret-test-tsx-happy-path-back-front-upside-down-2-snap.png b/libs/ballot-interpreter/src/bmd/__image_snapshots__/interpret-test-mts-happy-path-back-front-upside-down-2-snap.png similarity index 100% rename from libs/ballot-interpreter/src/bmd/__image_snapshots__/interpret-test-tsx-happy-path-back-front-upside-down-2-snap.png rename to libs/ballot-interpreter/src/bmd/__image_snapshots__/interpret-test-mts-happy-path-back-front-upside-down-2-snap.png diff --git a/libs/ballot-interpreter/src/bmd/__image_snapshots__/interpret-test-tsx-happy-path-front-upside-down-back-2-snap.png b/libs/ballot-interpreter/src/bmd/__image_snapshots__/interpret-test-mts-happy-path-front-upside-down-back-2-snap.png similarity index 100% rename from libs/ballot-interpreter/src/bmd/__image_snapshots__/interpret-test-tsx-happy-path-front-upside-down-back-2-snap.png rename to libs/ballot-interpreter/src/bmd/__image_snapshots__/interpret-test-mts-happy-path-front-upside-down-back-2-snap.png diff --git a/libs/ballot-interpreter/src/bmd/__snapshots__/interpret.test.tsx.snap b/libs/ballot-interpreter/src/bmd/__snapshots__/interpret.test.mts.snap similarity index 99% rename from libs/ballot-interpreter/src/bmd/__snapshots__/interpret.test.tsx.snap rename to libs/ballot-interpreter/src/bmd/__snapshots__/interpret.test.mts.snap index b8afe3c7c7..6afb508faf 100644 --- a/libs/ballot-interpreter/src/bmd/__snapshots__/interpret.test.tsx.snap +++ b/libs/ballot-interpreter/src/bmd/__snapshots__/interpret.test.mts.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`happy path: back, front 1`] = ` { diff --git a/libs/ballot-interpreter/src/bmd/interpret.test.tsx b/libs/ballot-interpreter/src/bmd/interpret.test.mts similarity index 98% rename from libs/ballot-interpreter/src/bmd/interpret.test.tsx rename to libs/ballot-interpreter/src/bmd/interpret.test.mts index beb3723a85..0badcfc361 100644 --- a/libs/ballot-interpreter/src/bmd/interpret.test.tsx +++ b/libs/ballot-interpreter/src/bmd/interpret.test.mts @@ -1,3 +1,4 @@ +import { beforeAll, expect, test } from 'vitest'; import { sliceBallotHashForEncoding } from '@votingworks/ballot-encoder'; import { assert, err } from '@votingworks/basics'; import { @@ -13,8 +14,8 @@ import { DEFAULT_FAMOUS_NAMES_VOTES, } from '@votingworks/bmd-ballot-fixtures'; import { ImageData, createCanvas } from 'canvas'; -import { InterpretResult, interpret } from './interpret'; -import { pdfToPageImages } from '../../test/helpers/interpretation'; +import { InterpretResult, interpret } from './interpret.js'; +import { pdfToPageImages } from '../../test/helpers/interpretation.mjs'; let famousNamesBmdBallot: SheetOf; let famousNamesBmdBallotUpsideDown: SheetOf; diff --git a/libs/ballot-interpreter/src/bmd/utils/qrcode.test.ts b/libs/ballot-interpreter/src/bmd/utils/qrcode.test.mts similarity index 97% rename from libs/ballot-interpreter/src/bmd/utils/qrcode.test.ts rename to libs/ballot-interpreter/src/bmd/utils/qrcode.test.mts index 14e44f17cc..88d8e9a126 100644 --- a/libs/ballot-interpreter/src/bmd/utils/qrcode.test.ts +++ b/libs/ballot-interpreter/src/bmd/utils/qrcode.test.mts @@ -1,3 +1,4 @@ +import { expect, test } from 'vitest'; import { Buffer } from 'node:buffer'; import { err, ok } from '@votingworks/basics'; import { @@ -5,8 +6,8 @@ import { sampleBallotImages, } from '@votingworks/fixtures'; import { renderBmdBallotFixture } from '@votingworks/bmd-ballot-fixtures'; -import { QrCodePageResult, detectInBallot, getSearchAreas } from './qrcode'; -import { pdfToPageImages } from '../../../test/helpers/interpretation'; +import { QrCodePageResult, detectInBallot, getSearchAreas } from './qrcode.js'; +import { pdfToPageImages } from '../../../test/helpers/interpretation.mjs'; test('does not find QR codes when there are none to find', async () => { const detectResult = await detectInBallot( diff --git a/libs/ballot-interpreter/src/bmd/utils/rotate.test.ts b/libs/ballot-interpreter/src/bmd/utils/rotate.test.mts similarity index 95% rename from libs/ballot-interpreter/src/bmd/utils/rotate.test.ts rename to libs/ballot-interpreter/src/bmd/utils/rotate.test.mts index 0fbe297b3e..87be28d846 100644 --- a/libs/ballot-interpreter/src/bmd/utils/rotate.test.ts +++ b/libs/ballot-interpreter/src/bmd/utils/rotate.test.mts @@ -1,7 +1,8 @@ +import { test } from 'vitest'; import { assert } from '@votingworks/basics'; import { sampleBallotImages } from '@votingworks/fixtures'; import { ImageData } from 'canvas'; -import { rotateImageData180 } from './rotate'; +import { rotateImageData180 } from './rotate.js'; test('can rotate real life ImageData as expected', async () => { const rotatedImageData = await sampleBallotImages.notBallot.asImageData(); diff --git a/libs/ballot-interpreter/src/hmpb-ts/__snapshots__/interpret.test.ts.snap b/libs/ballot-interpreter/src/hmpb-ts/__snapshots__/interpret.test.mts.snap similarity index 99% rename from libs/ballot-interpreter/src/hmpb-ts/__snapshots__/interpret.test.ts.snap rename to libs/ballot-interpreter/src/hmpb-ts/__snapshots__/interpret.test.mts.snap index b6a30406ef..a908d02e39 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/__snapshots__/interpret.test.ts.snap +++ b/libs/ballot-interpreter/src/hmpb-ts/__snapshots__/interpret.test.mts.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`interpret \`ImageData\` objects 1`] = ` [ diff --git a/libs/ballot-interpreter/src/hmpb-ts/rust_addon.d.ts b/libs/ballot-interpreter/src/hmpb-ts/addon.ts similarity index 55% rename from libs/ballot-interpreter/src/hmpb-ts/rust_addon.d.ts rename to libs/ballot-interpreter/src/hmpb-ts/addon.ts index 777ce7b164..6619d4fd33 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/rust_addon.d.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/addon.ts @@ -1,7 +1,22 @@ import { Election } from '@votingworks/types'; import { ImageData } from 'canvas'; +import { createRequire } from 'node:module'; +import { join } from 'node:path'; import { type TemplateGridAndBubbles } from './find_template_grid_and_bubbles'; +const addon = (() => { + // NOTE: this only works because the build output can get to the root of the + // project in the same number of `../` as the source input: + // + // src/hmpb-ts/addon.ts -> build/addon.node via `../../build/addon.node` + // build/hmpb-ts/addon.js -> build/addon.node via `../../build/addon.node` + // + const require = createRequire(__filename); + const root = join(__dirname, '../..'); + // eslint-disable-next-line import/no-dynamic-require + return require(join(root, 'build', 'addon.node')); +})(); + /** * The result of calling `interpret`. */ @@ -32,7 +47,16 @@ export function interpret( scoreWriteIns?: boolean; disableVerticalStreakDetection?: boolean; } -): BridgeInterpretResult; +): BridgeInterpretResult { + return addon.interpret( + election, + ballotImageSourceSideA, + ballotImageSourceSideB, + debugBasePathSideA, + debugBasePathSideB, + options + ); +} /** * Type of the Rust `findTemplateGridAndBubbles` implementation. @@ -40,9 +64,16 @@ export function interpret( export function findTemplateGridAndBubbles( ballotImageSourceSideA: string | ImageData, ballotImageSourceSideB: string | ImageData -): TemplateGridAndBubbles; +): TemplateGridAndBubbles { + return addon.findTemplateGridAndBubbles( + ballotImageSourceSideA, + ballotImageSourceSideB + ); +} export function runBlankPaperDiagnostic( image: string | ImageData, debugBasePath?: string -): boolean; +): boolean { + return addon.runBlankPaperDiagnostic(image, debugBasePath); +} diff --git a/libs/ballot-interpreter/src/hmpb-ts/cli.test.ts b/libs/ballot-interpreter/src/hmpb-ts/cli.test.mts similarity index 92% rename from libs/ballot-interpreter/src/hmpb-ts/cli.test.ts rename to libs/ballot-interpreter/src/hmpb-ts/cli.test.mts index 1ec147a2b2..80aece5de6 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/cli.test.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/cli.test.mts @@ -1,3 +1,4 @@ +import { expect, test } from 'vitest'; import { electionGridLayoutNewHampshireTestBallotFixtures } from '@votingworks/fixtures'; import { DEFAULT_SYSTEM_SETTINGS } from '@votingworks/types'; import { dirSync, fileSync } from 'tmp'; @@ -5,8 +6,8 @@ import { mkdir, writeFile } from 'node:fs/promises'; import { integers, iter } from '@votingworks/basics'; import { randomUUID } from 'node:crypto'; import { join } from 'node:path'; -import { mockWritable } from '@votingworks/test-utils'; -import { main } from './cli'; +import { mockWritable } from '@votingworks/test-utils-vitest'; +import { main } from './cli.js'; test('interpret CVRs', async () => { const rootDir = dirSync().name; diff --git a/libs/ballot-interpreter/src/hmpb-ts/debug.test.ts b/libs/ballot-interpreter/src/hmpb-ts/debug.test.mts similarity index 92% rename from libs/ballot-interpreter/src/hmpb-ts/debug.test.ts rename to libs/ballot-interpreter/src/hmpb-ts/debug.test.mts index 8a9a0de0bf..14c49e4727 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/debug.test.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/debug.test.mts @@ -1,17 +1,15 @@ +import { beforeAll, expect, test, vi } from 'vitest'; import { ImageData } from 'canvas'; import { electionGridLayoutNewHampshireTestBallotFixtures } from '@votingworks/fixtures'; -import { interpret as interpretImpl } from './rust_addon'; -import { interpret } from './interpret'; +import * as addon from './addon.js'; +import { interpret } from './interpret.js'; const electionDefinition = electionGridLayoutNewHampshireTestBallotFixtures.readElectionDefinition(); -jest.mock('./rust_addon'); - -const interpretImplMock = interpretImpl as jest.MockedFunction< - typeof interpretImpl ->; +vi.mock('./addon.js'); +const interpretImplMock = vi.mocked(addon.interpret); let frontImageData!: ImageData; let backImageData!: ImageData; diff --git a/libs/ballot-interpreter/src/hmpb-ts/diagnostic.test.ts b/libs/ballot-interpreter/src/hmpb-ts/diagnostic.test.mts similarity index 84% rename from libs/ballot-interpreter/src/hmpb-ts/diagnostic.test.ts rename to libs/ballot-interpreter/src/hmpb-ts/diagnostic.test.mts index 4598dd52e0..e0d10b57a5 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/diagnostic.test.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/diagnostic.test.mts @@ -1,5 +1,6 @@ +import { expect, test } from 'vitest'; import { join } from 'node:path'; -import { runBlankPaperDiagnostic } from './diagnostic'; +import { runBlankPaperDiagnostic } from './diagnostic.js'; test('runBlankPaperDiagnostic can pass', () => { expect( diff --git a/libs/ballot-interpreter/src/hmpb-ts/diagnostic.ts b/libs/ballot-interpreter/src/hmpb-ts/diagnostic.ts index be9737571b..fa00a18ad1 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/diagnostic.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/diagnostic.ts @@ -1,4 +1,4 @@ -import { runBlankPaperDiagnostic as runBlankPaperDiagnosticImpl } from './rust_addon'; +import { runBlankPaperDiagnostic as runBlankPaperDiagnosticImpl } from './addon'; /** * Runs a diagnostic on a blank paper image to determine if it is a valid diff --git a/libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.test.ts b/libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.test.mts similarity index 92% rename from libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.test.ts rename to libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.test.mts index 8ac40d0bba..af47114111 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.test.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.test.mts @@ -1,3 +1,4 @@ +import { expect, test } from 'vitest'; import { ImageData } from 'canvas'; import { err } from '@votingworks/basics'; import { @@ -5,8 +6,8 @@ import { sampleBallotImages, } from '@votingworks/fixtures'; import { SheetOf } from '@votingworks/types'; -import { findTemplateGridAndBubbles } from './find_template_grid_and_bubbles'; -import { TimingMarkGrid } from './types'; +import { findTemplateGridAndBubbles } from './find_template_grid_and_bubbles.js'; +import { TimingMarkGrid } from './types.js'; test('find layout from template images', async () => { const ballotImages: SheetOf = [ diff --git a/libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.ts b/libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.ts index 64fcd55e48..a77618ae0d 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/find_template_grid_and_bubbles.ts @@ -1,7 +1,7 @@ import { ImageData } from 'canvas'; import { Result, err, ok } from '@votingworks/basics'; import { SheetOf } from '@votingworks/types'; -import { findTemplateGridAndBubbles as findTemplateGridAndBubblesImpl } from './rust_addon'; +import { findTemplateGridAndBubbles as findTemplateGridAndBubblesImpl } from './addon'; import { BallotPageTimingMarkMetadata, Point, diff --git a/libs/ballot-interpreter/src/hmpb-ts/interpret.test.ts b/libs/ballot-interpreter/src/hmpb-ts/interpret.test.mts similarity index 99% rename from libs/ballot-interpreter/src/hmpb-ts/interpret.test.ts rename to libs/ballot-interpreter/src/hmpb-ts/interpret.test.mts index e5ce4ea8a3..e111acf8ec 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/interpret.test.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/interpret.test.mts @@ -1,8 +1,9 @@ +import { expect, test } from 'vitest'; import { assertDefined, iter, ok, unique } from '@votingworks/basics'; import { ImageData } from 'canvas'; import { electionGridLayoutNewHampshireTestBallotFixtures } from '@votingworks/fixtures'; import { Election, ElectionDefinition, SheetOf } from '@votingworks/types'; -import { interpret } from './interpret'; +import { interpret } from './interpret.js'; const electionGridLayoutNewHampshireTestBallotDefinition = electionGridLayoutNewHampshireTestBallotFixtures.readElectionDefinition(); diff --git a/libs/ballot-interpreter/src/hmpb-ts/interpret.ts b/libs/ballot-interpreter/src/hmpb-ts/interpret.ts index 6037362972..d70deaa663 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/interpret.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/interpret.ts @@ -1,7 +1,7 @@ import { assert, err, ok } from '@votingworks/basics'; import { ImageData } from 'canvas'; import { ElectionDefinition, safeParseJson, SheetOf } from '@votingworks/types'; -import { interpret as interpretImpl } from './rust_addon'; +import { interpret as interpretImpl } from './addon'; import { InterpretedBallotCard, InterpretError, diff --git a/libs/ballot-interpreter/src/hmpb-ts/rust_addon.node b/libs/ballot-interpreter/src/hmpb-ts/rust_addon.node deleted file mode 120000 index 380e1b7135..0000000000 --- a/libs/ballot-interpreter/src/hmpb-ts/rust_addon.node +++ /dev/null @@ -1 +0,0 @@ -../../build/hmpb-ts/rust_addon.node \ No newline at end of file diff --git a/libs/ballot-interpreter/src/hmpb-ts/types.test.ts b/libs/ballot-interpreter/src/hmpb-ts/types.test.mts similarity index 59% rename from libs/ballot-interpreter/src/hmpb-ts/types.test.ts rename to libs/ballot-interpreter/src/hmpb-ts/types.test.mts index 8c08637e25..dfe02bdb4a 100644 --- a/libs/ballot-interpreter/src/hmpb-ts/types.test.ts +++ b/libs/ballot-interpreter/src/hmpb-ts/types.test.mts @@ -1,4 +1,5 @@ -import { BallotSide } from './types'; +import { expect, test } from 'vitest'; +import { BallotSide } from './types.js'; test('has BallotSide enum', () => { expect(BallotSide).toEqual({ diff --git a/libs/ballot-interpreter/src/interpret_all_bubble_ballot.test.ts b/libs/ballot-interpreter/src/interpret_all_bubble_ballot.test.mts similarity index 95% rename from libs/ballot-interpreter/src/interpret_all_bubble_ballot.test.ts rename to libs/ballot-interpreter/src/interpret_all_bubble_ballot.test.mts index bcab82aac5..591b924b56 100644 --- a/libs/ballot-interpreter/src/interpret_all_bubble_ballot.test.ts +++ b/libs/ballot-interpreter/src/interpret_all_bubble_ballot.test.mts @@ -1,3 +1,4 @@ +import { beforeAll, describe, expect, test } from 'vitest'; import { assert, Optional } from '@votingworks/basics'; import { readElection } from '@votingworks/fs'; import { allBubbleBallotFixtures } from '@votingworks/hmpb'; @@ -10,8 +11,11 @@ import { ElectionDefinition, } from '@votingworks/types'; import { singlePrecinctSelectionFor } from '@votingworks/utils'; -import { pdfToPageImages, sortVotesDict } from '../test/helpers/interpretation'; -import { interpretSheet } from './interpret'; +import { + pdfToPageImages, + sortVotesDict, +} from '../test/helpers/interpretation.mjs'; +import { interpretSheet } from './interpret.js'; describe('Interpret - HMPB - All bubble ballot', () => { const { diff --git a/libs/ballot-interpreter/src/interpret_and_save_files.test.ts b/libs/ballot-interpreter/src/interpret_and_save_files.test.mts similarity index 87% rename from libs/ballot-interpreter/src/interpret_and_save_files.test.ts rename to libs/ballot-interpreter/src/interpret_and_save_files.test.mts index bee10ba1d6..fa39556085 100644 --- a/libs/ballot-interpreter/src/interpret_and_save_files.test.ts +++ b/libs/ballot-interpreter/src/interpret_and_save_files.test.mts @@ -1,3 +1,4 @@ +import { expect, test } from 'vitest'; import { DEFAULT_FAMOUS_NAMES_BALLOT_STYLE_ID, DEFAULT_FAMOUS_NAMES_PRECINCT_ID, @@ -8,9 +9,9 @@ import { electionFamousNames2021Fixtures } from '@votingworks/fixtures'; import { loadImageData } from '@votingworks/image-utils'; import { DEFAULT_MARK_THRESHOLDS, asSheet } from '@votingworks/types'; import { ALL_PRECINCTS_SELECTION } from '@votingworks/utils'; -import { pdfToPageImages } from '../test/helpers/interpretation'; -import { tmpDir } from '../test/helpers/tmp'; -import { interpretSheetAndSaveImages } from './interpret'; +import { pdfToPageImages } from '../test/helpers/interpretation.mjs'; +import { tmpDir } from '../test/helpers/tmp.mjs'; +import { interpretSheetAndSaveImages } from './interpret.js'; test('interprets ballot images and saves images for storage', async () => { const electionDefinition = diff --git a/libs/ballot-interpreter/src/interpret_bmd_and_hmp_ballots.test.ts b/libs/ballot-interpreter/src/interpret_bmd_and_hmp_ballots.test.mts similarity index 95% rename from libs/ballot-interpreter/src/interpret_bmd_and_hmp_ballots.test.ts rename to libs/ballot-interpreter/src/interpret_bmd_and_hmp_ballots.test.mts index f9fd719e13..d46576ca3a 100644 --- a/libs/ballot-interpreter/src/interpret_bmd_and_hmp_ballots.test.ts +++ b/libs/ballot-interpreter/src/interpret_bmd_and_hmp_ballots.test.mts @@ -1,3 +1,4 @@ +import { expect, test } from 'vitest'; import { renderBmdBallotFixture } from '@votingworks/bmd-ballot-fixtures'; import { famousNamesFixtures } from '@votingworks/hmpb'; import { @@ -7,8 +8,8 @@ import { asSheet, } from '@votingworks/types'; import { ALL_PRECINCTS_SELECTION } from '@votingworks/utils'; -import { pdfToPageImages } from '../test/helpers/interpretation'; -import { interpretSheet } from './interpret'; +import { pdfToPageImages } from '../test/helpers/interpretation.mjs'; +import { interpretSheet } from './interpret.js'; test('interpret BMD ballot for an election supporting hand-marked paper ballots', async () => { const { electionDefinition } = famousNamesFixtures; diff --git a/libs/ballot-interpreter/src/interpret_bmd_ballots.test.ts b/libs/ballot-interpreter/src/interpret_bmd_ballots.test.mts similarity index 98% rename from libs/ballot-interpreter/src/interpret_bmd_ballots.test.ts rename to libs/ballot-interpreter/src/interpret_bmd_ballots.test.mts index f897d33a1a..46b0ca1208 100644 --- a/libs/ballot-interpreter/src/interpret_bmd_ballots.test.ts +++ b/libs/ballot-interpreter/src/interpret_bmd_ballots.test.mts @@ -1,3 +1,4 @@ +import { beforeAll, beforeEach, describe, expect, test, vi } from 'vitest'; import { sliceBallotHashForEncoding } from '@votingworks/ballot-encoder'; import { DEFAULT_ELECTION_GENERAL_BALLOT_STYLE_ID, @@ -13,7 +14,7 @@ import { electionPrimaryPrecinctSplitsFixtures, readElectionGeneralDefinition, } from '@votingworks/fixtures'; -import { mockOf } from '@votingworks/test-utils'; +import { mockOf } from '@votingworks/test-utils-vitest'; import { AdjudicationReason, BallotStyleId, @@ -37,14 +38,14 @@ import { import { ImageData } from 'canvas'; import { assert } from 'node:console'; import { assertDefined } from '@votingworks/basics'; -import { pdfToPageImages } from '../test/helpers/interpretation'; -import { interpretSheet, interpretSimplexBmdBallot } from './interpret'; -import { InterpreterOptions } from './types'; -import { normalizeBallotMode } from './validation'; +import { pdfToPageImages } from '../test/helpers/interpretation.mjs'; +import { interpretSheet, interpretSimplexBmdBallot } from './interpret.js'; +import { InterpreterOptions } from './types.js'; +import { normalizeBallotMode } from './validation.js'; const electionGeneralDefinition = readElectionGeneralDefinition(); -jest.mock('./validation'); +vi.mock('./validation'); beforeEach(() => { mockOf(normalizeBallotMode).mockImplementation((input) => input); diff --git a/libs/ballot-interpreter/src/interpret_nh_hmpb.test.ts b/libs/ballot-interpreter/src/interpret_nh_hmpb.test.mts similarity index 97% rename from libs/ballot-interpreter/src/interpret_nh_hmpb.test.ts rename to libs/ballot-interpreter/src/interpret_nh_hmpb.test.mts index d2bc9da89e..63b85e31b6 100644 --- a/libs/ballot-interpreter/src/interpret_nh_hmpb.test.ts +++ b/libs/ballot-interpreter/src/interpret_nh_hmpb.test.mts @@ -1,10 +1,11 @@ +import { beforeEach, describe, expect, test, vi } from 'vitest'; import { assert, unique } from '@votingworks/basics'; import { electionGridLayoutNewHampshireTestBallotFixtures, sampleBallotImages, } from '@votingworks/fixtures'; import { loadImageData } from '@votingworks/image-utils'; -import { mockOf } from '@votingworks/test-utils'; +import { mockOf } from '@votingworks/test-utils-vitest'; import { AdjudicationReason, DEFAULT_MARK_THRESHOLDS, @@ -20,11 +21,11 @@ import { import { ImageData } from 'canvas'; import { readdirSync, readFileSync } from 'node:fs'; import { join } from 'node:path'; -import { interpretSheet } from './interpret'; -import { InterpreterOptions } from './types'; -import { normalizeBallotMode } from './validation'; +import { interpretSheet } from './interpret.js'; +import { InterpreterOptions } from './types.js'; +import { normalizeBallotMode } from './validation.js'; -jest.mock('./validation'); +vi.mock('./validation'); beforeEach(() => { mockOf(normalizeBallotMode).mockImplementation((input) => input); diff --git a/libs/ballot-interpreter/src/interpret_vx_hmpb.test.ts b/libs/ballot-interpreter/src/interpret_vx_hmpb.test.mts similarity index 98% rename from libs/ballot-interpreter/src/interpret_vx_hmpb.test.ts rename to libs/ballot-interpreter/src/interpret_vx_hmpb.test.mts index ac8396375a..02e1147046 100644 --- a/libs/ballot-interpreter/src/interpret_vx_hmpb.test.ts +++ b/libs/ballot-interpreter/src/interpret_vx_hmpb.test.mts @@ -1,3 +1,4 @@ +import { beforeAll, beforeEach, describe, expect, test, vi } from 'vitest'; import { sliceBallotHashForEncoding } from '@votingworks/ballot-encoder'; import { assert, assertDefined, iter } from '@votingworks/basics'; import { readElection } from '@votingworks/fs'; @@ -6,7 +7,7 @@ import { generalElectionFixtures, primaryElectionFixtures, } from '@votingworks/hmpb'; -import { mockOf } from '@votingworks/test-utils'; +import { mockOf } from '@votingworks/test-utils-vitest'; import { AdjudicationReason, asSheet, @@ -26,12 +27,12 @@ import { sortVotesDict, unmarkedWriteInsForSheet, votesForSheet, -} from '../test/helpers/interpretation'; -import { interpretSheet } from './interpret'; -import { InterpreterOptions } from './types'; -import { normalizeBallotMode } from './validation'; +} from '../test/helpers/interpretation.mjs'; +import { interpretSheet } from './interpret.js'; +import { InterpreterOptions } from './types.js'; +import { normalizeBallotMode } from './validation.js'; -jest.mock('./validation'); +vi.mock('./validation'); beforeEach(() => { mockOf(normalizeBallotMode).mockImplementation((input) => input); diff --git a/libs/ballot-interpreter/src/save_images.test.ts b/libs/ballot-interpreter/src/save_images.test.mts similarity index 81% rename from libs/ballot-interpreter/src/save_images.test.ts rename to libs/ballot-interpreter/src/save_images.test.mts index 764af2d8ea..7b5df7b279 100644 --- a/libs/ballot-interpreter/src/save_images.test.ts +++ b/libs/ballot-interpreter/src/save_images.test.mts @@ -1,8 +1,9 @@ +import { expect, test } from 'vitest'; import { createImageData, ImageData } from '@votingworks/image-utils'; import { SheetOf } from '@votingworks/types'; import { join } from 'node:path'; -import { tmpDir } from '../test/helpers/tmp'; -import { saveSheetImages } from './save_images'; +import { tmpDir } from '../test/helpers/tmp.mjs'; +import { saveSheetImages } from './save_images.js'; test('saveSheetImages', async () => { const sheetId = 'sheetId'; diff --git a/libs/ballot-interpreter/src/setupTests.ts b/libs/ballot-interpreter/src/setupTests.ts index 05330d7ecf..8b9fbbea75 100644 --- a/libs/ballot-interpreter/src/setupTests.ts +++ b/libs/ballot-interpreter/src/setupTests.ts @@ -3,6 +3,7 @@ import { setupTemporaryRootDir, } from '@votingworks/fixtures'; import { toMatchImageSnapshot } from 'jest-image-snapshot'; +import { expect } from 'vitest'; expect.extend({ toMatchImageSnapshot }); diff --git a/libs/ballot-interpreter/src/validation.test.ts b/libs/ballot-interpreter/src/validation.test.mts similarity index 96% rename from libs/ballot-interpreter/src/validation.test.ts rename to libs/ballot-interpreter/src/validation.test.mts index b86b1e9664..a8007ad34f 100644 --- a/libs/ballot-interpreter/src/validation.test.ts +++ b/libs/ballot-interpreter/src/validation.test.mts @@ -1,3 +1,4 @@ +import { describe, expect, test } from 'vitest'; import { readElectionGeneralDefinition } from '@votingworks/fixtures'; import { BallotId, @@ -7,8 +8,8 @@ import { PageInterpretation, } from '@votingworks/types'; import { ALL_PRECINCTS_SELECTION } from '@votingworks/utils'; -import { normalizeBallotMode } from './validation'; -import { InterpreterOptions } from './types'; +import { normalizeBallotMode } from './validation.js'; +import { InterpreterOptions } from './types.js'; const BLANK_INTERPRETATION: PageInterpretation = { type: 'BlankPage' }; diff --git a/libs/ballot-interpreter/test/fixtures/index.ts b/libs/ballot-interpreter/test/fixtures/index.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/libs/ballot-interpreter/test/helpers/interpretation.ts b/libs/ballot-interpreter/test/helpers/interpretation.mts similarity index 100% rename from libs/ballot-interpreter/test/helpers/interpretation.ts rename to libs/ballot-interpreter/test/helpers/interpretation.mts diff --git a/libs/ballot-interpreter/test/helpers/tmp.ts b/libs/ballot-interpreter/test/helpers/tmp.mts similarity index 90% rename from libs/ballot-interpreter/test/helpers/tmp.ts rename to libs/ballot-interpreter/test/helpers/tmp.mts index 04e04b0050..0565e0f157 100644 --- a/libs/ballot-interpreter/test/helpers/tmp.ts +++ b/libs/ballot-interpreter/test/helpers/tmp.mts @@ -1,3 +1,4 @@ +import { afterAll } from 'vitest'; import { removeSync } from 'fs-extra'; import { dirSync } from 'tmp'; diff --git a/libs/ballot-interpreter/tsconfig.build.json b/libs/ballot-interpreter/tsconfig.build.json index 02202f3c78..443bd65738 100644 --- a/libs/ballot-interpreter/tsconfig.build.json +++ b/libs/ballot-interpreter/tsconfig.build.json @@ -1,7 +1,12 @@ { "extends": "./tsconfig.json", "include": ["src", "src/data/*.json"], - "exclude": ["**/*.test.ts", "**/*.test.tsx"], + "exclude": [ + "**/*.test.mts", + "**/*.test.mtsx", + "**/*.test.ts", + "**/*.test.tsx" + ], "compilerOptions": { "noEmit": false, "rootDir": "src", @@ -17,6 +22,7 @@ { "path": "../image-utils/tsconfig.build.json" }, { "path": "../printing/tsconfig.build.json" }, { "path": "../types/tsconfig.build.json" }, + { "path": "../test-utils-vitest/tsconfig.build.json" }, { "path": "../ui/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" } ] diff --git a/libs/ballot-interpreter/tsconfig.json b/libs/ballot-interpreter/tsconfig.json index 5e5bd21f5e..49ef977255 100644 --- a/libs/ballot-interpreter/tsconfig.json +++ b/libs/ballot-interpreter/tsconfig.json @@ -26,6 +26,7 @@ { "path": "../image-utils/tsconfig.build.json" }, { "path": "../printing/tsconfig.build.json" }, { "path": "../types/tsconfig.build.json" }, + { "path": "../test-utils-vitest/tsconfig.build.json" }, { "path": "../ui/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" } ] diff --git a/libs/ballot-interpreter/vitest.config.mts b/libs/ballot-interpreter/vitest.config.mts new file mode 100644 index 0000000000..311aa00980 --- /dev/null +++ b/libs/ballot-interpreter/vitest.config.mts @@ -0,0 +1,13 @@ +import { defineConfig } from '../../vitest.config.shared.mjs'; + +export default defineConfig({ + test: { + setupFiles: ['src/setupTests.ts'], + coverage: { + thresholds: { + lines: 51, + branches: 47, + }, + }, + }, +}); diff --git a/libs/eslint-plugin-vx/src/configs/recommended.ts b/libs/eslint-plugin-vx/src/configs/recommended.ts index 33e9758f0c..a27109ded0 100644 --- a/libs/eslint-plugin-vx/src/configs/recommended.ts +++ b/libs/eslint-plugin-vx/src/configs/recommended.ts @@ -1,5 +1,5 @@ -const jsExtensions = ['.js', '.jsx']; -const tsExtensions = ['.ts', '.tsx']; +const jsExtensions = ['.js', '.jsx', '.mjs', '.mjsx']; +const tsExtensions = ['.ts', '.tsx', '.mts', '.mtsx']; const allExtensions = jsExtensions.concat(tsExtensions); export = { @@ -11,6 +11,7 @@ export = { ecmaVersion: 2018, project: ['./tsconfig.json'], sourceType: 'module', + extraExtensions: tsExtensions, }, extends: [ 'airbnb-base', @@ -112,14 +113,23 @@ export = { devDependencies: [ '**/*.test.ts', '**/*.test.tsx', + '**/*.test.mts', + '**/*.test.mtsx', 'test/**/*', 'src/setupTests.ts', 'src/setupTests.tsx', + 'src/setupTests.mts', + 'src/setupTests.mtsx', '**/*.stories.ts', '**/*.stories.tsx', + '**/*.stories.mts', + '**/*.stories.mtsx', '**/test_utils.ts', '**/test_utils.tsx', + '**/test_utils.mts', + '**/test_utils.mtsx', '**/*.bench.ts', + '**/*.bench.mts', ], }, ], @@ -164,7 +174,12 @@ export = { }, overrides: [ { - files: ['**/*.test.ts', '**/*.test.tsx'], + files: [ + '**/*.test.ts', + '**/*.test.tsx', + '**/*.test.mts', + '**/*.test.mtsx', + ], rules: { '@typescript-eslint/no-non-null-assertion': 'off', 'no-loop-func': 'off', @@ -172,7 +187,12 @@ export = { }, }, { - files: ['**/*.test.ts', '**/*.test.tsx'], + files: [ + '**/*.test.ts', + '**/*.test.tsx', + '**/*.test.mts', + '**/*.test.mtsx', + ], plugins: ['jest'], rules: { 'jest/max-nested-describe': ['error', { max: 1 }], diff --git a/libs/test-utils-vitest/.eslintignore b/libs/test-utils-vitest/.eslintignore index ca254321c0..93f0e825ef 100644 --- a/libs/test-utils-vitest/.eslintignore +++ b/libs/test-utils-vitest/.eslintignore @@ -1,3 +1,3 @@ build coverage -vitest.config.ts \ No newline at end of file +vitest.config.mts \ No newline at end of file diff --git a/libs/test-utils-vitest/package.json b/libs/test-utils-vitest/package.json index 8f29f808f5..3a8f6b79f7 100644 --- a/libs/test-utils-vitest/package.json +++ b/libs/test-utils-vitest/package.json @@ -4,6 +4,7 @@ "private": true, "description": "Test utilities for the monorepo using vitest instead of jest", "license": "GPL-3.0-only", + "type": "module", "main": "build/index.js", "types": "build/index.d.ts", "files": [ @@ -18,8 +19,8 @@ "lint:fix": "pnpm type-check && eslint . --fix", "pre-commit": "lint-staged", "test": "is-ci test:ci test:watch", - "test:ci": "vitest --coverage --reporter junit --outputFile reports/junit.xml", - "test:coverage": "vitest run --coverage", + "test:ci": "vitest run --coverage", + "test:coverage": "vitest --coverage", "test:watch": "vitest", "type-check": "tsc --build" }, diff --git a/libs/test-utils-vitest/src/child_process.test.ts b/libs/test-utils-vitest/src/child_process.test.ts index 3acb9c6daf..80e56d131b 100644 --- a/libs/test-utils-vitest/src/child_process.test.ts +++ b/libs/test-utils-vitest/src/child_process.test.ts @@ -1,6 +1,10 @@ import { expect, test, vi } from 'vitest'; import { Buffer } from 'node:buffer'; -import { mockChildProcess, mockReadable, mockWritable } from './child_process'; +import { + mockChildProcess, + mockReadable, + mockWritable, +} from './child_process.js'; test('mockReadable', () => { const onReadable = vi.fn(); diff --git a/libs/test-utils-vitest/src/console.test.ts b/libs/test-utils-vitest/src/console.test.ts index 32240f138b..bae8a649eb 100644 --- a/libs/test-utils-vitest/src/console.test.ts +++ b/libs/test-utils-vitest/src/console.test.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import { expect, test } from 'vitest'; -import { suppressingConsoleOutput } from './console'; +import { suppressingConsoleOutput } from './console.js'; test.each(['log', 'warn', 'error'] as const)( 'suppressingConsoleOutput replaces console.%s with a mock', diff --git a/libs/test-utils-vitest/src/index.ts b/libs/test-utils-vitest/src/index.ts index 1439c75a85..53591e08e1 100644 --- a/libs/test-utils-vitest/src/index.ts +++ b/libs/test-utils-vitest/src/index.ts @@ -1,6 +1,6 @@ -export * from './advance_timers'; -export * from './child_process'; -export * from './console'; -export * from './mock_kiosk'; -export * from './mock_of'; -export * from './mock_use_audio_controls'; +export * from './advance_timers.js'; +export * from './child_process.js'; +export * from './console.js'; +export * from './mock_kiosk.js'; +export * from './mock_of.js'; +export * from './mock_use_audio_controls.js'; diff --git a/libs/test-utils-vitest/src/mock_function.test.ts b/libs/test-utils-vitest/src/mock_function.test.ts index 6b5ac0a742..fb7c1bdaf6 100644 --- a/libs/test-utils-vitest/src/mock_function.test.ts +++ b/libs/test-utils-vitest/src/mock_function.test.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import { describe, expect, it } from 'vitest'; -import { mockFunction } from './mock_function'; +import { mockFunction } from './mock_function.js'; describe('mockFunction', () => { function add(num1: number, num2: number): number { diff --git a/libs/test-utils-vitest/vitest.config.ts b/libs/test-utils-vitest/vitest.config.mts similarity index 75% rename from libs/test-utils-vitest/vitest.config.ts rename to libs/test-utils-vitest/vitest.config.mts index d1ec6cc46f..c1ed93ee1a 100644 --- a/libs/test-utils-vitest/vitest.config.ts +++ b/libs/test-utils-vitest/vitest.config.mts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from '../../vitest.config.shared.mjs'; export default defineConfig({ test: { @@ -7,8 +7,6 @@ export default defineConfig({ lines: 84, branches: 79, }, - provider: 'istanbul', - include: ['src/**/*.ts'], exclude: [ 'src/**/*.test.ts', 'src/advance_timers.ts', diff --git a/package.json b/package.json index 57357ce62f..9b977af422 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,8 @@ "storybook": "^7.2.2", "stylelint": "^15.10.2", "stylelint-config-standard": "^34.0.0", - "typescript": "5.6.2" + "typescript": "5.6.2", + "vitest": "^2.1.8" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 294ba6e6bd..13f671f0a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,7 +107,7 @@ importers: version: 5.2.0 postcss-styled-syntax: specifier: ^0.4.0 - version: 0.4.0(postcss@8.4.38)(typescript@5.6.2) + version: 0.4.0(postcss@8.4.49)(typescript@5.6.2) prettier: specifier: ^3.0.3 version: 3.0.3 @@ -126,6 +126,9 @@ importers: typescript: specifier: 5.6.2 version: 5.6.2 + vitest: + specifier: ^2.1.8 + version: 2.1.8(@types/node@20.16.0) apps/admin/backend: dependencies: @@ -336,7 +339,7 @@ importers: version: 6.1.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) apps/admin/frontend: dependencies: @@ -604,7 +607,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) vite: specifier: 4.5.2 version: 4.5.2(@types/node@20.16.0) @@ -846,7 +849,7 @@ importers: version: 6.1.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) apps/central-scan/frontend: dependencies: @@ -1066,7 +1069,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) type-fest: specifier: ^0.18.0 version: 0.18.1 @@ -1278,7 +1281,7 @@ importers: version: 0.2.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) apps/design/frontend: dependencies: @@ -1513,7 +1516,7 @@ importers: version: 0.2.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) vite: specifier: 4.5.2 version: 4.5.2(@types/node@20.16.0) @@ -1694,7 +1697,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) apps/mark-scan/frontend: dependencies: @@ -1905,7 +1908,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) vite: specifier: 4.5.2 version: 4.5.2(@types/node@20.16.0) @@ -2093,7 +2096,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) apps/mark/frontend: dependencies: @@ -2310,7 +2313,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) vite: specifier: 4.5.2 version: 4.5.2(@types/node@20.16.0) @@ -2558,7 +2561,7 @@ importers: version: 6.1.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) wait-for-expect: specifier: ^3.0.2 version: 3.0.2 @@ -2754,7 +2757,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) vite: specifier: 4.5.2 version: 4.5.2(@types/node@20.16.0) @@ -2805,7 +2808,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/@types/compress-commons: dependencies: @@ -2874,7 +2877,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/auth: dependencies: @@ -2989,7 +2992,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) wait-for-expect: specifier: ^3.0.2 version: 3.0.2 @@ -3158,7 +3161,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/ballot-encoder: dependencies: @@ -3210,7 +3213,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/ballot-interpreter: dependencies: @@ -3226,9 +3229,9 @@ importers: '@votingworks/qrdetect': specifier: ^1.0.1 version: 1.0.1 - '@votingworks/test-utils': + '@votingworks/test-utils-vitest': specifier: workspace:* - version: link:../test-utils + version: link:../test-utils-vitest '@votingworks/types': specifier: workspace:* version: link:../types @@ -3266,9 +3269,6 @@ importers: '@types/fs-extra': specifier: 11.0.1 version: 11.0.1 - '@types/jest': - specifier: ^29.5.3 - version: 29.5.3 '@types/jest-image-snapshot': specifier: ^6.4.0 version: 6.4.0 @@ -3281,6 +3281,9 @@ importers: '@types/tmp': specifier: 0.2.4 version: 0.2.4 + '@vitest/coverage-istanbul': + specifier: ^2.1.8 + version: 2.1.8(vitest@2.1.8) '@votingworks/bmd-ballot-fixtures': specifier: workspace:* version: link:../bmd-ballot-fixtures @@ -3311,27 +3314,18 @@ importers: is-ci-cli: specifier: 2.2.0 version: 2.2.0 - jest: - specifier: ^29.6.2 - version: 29.6.2(@types/node@20.16.0) jest-image-snapshot: specifier: ^6.4.0 version: 6.4.0(jest@29.6.2) - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 - jest-watch-typeahead: - specifier: ^2.2.2 - version: 2.2.2(jest@29.6.2) lint-staged: specifier: 11.0.0 version: 11.0.0 sort-package-json: specifier: ^1.50.0 version: 1.50.0 - ts-jest: - specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + vitest: + specifier: ^2.1.8 + version: 2.1.8(@types/node@20.16.0) libs/basics: dependencies: @@ -3377,7 +3371,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/bmd-ballot-fixtures: dependencies: @@ -3450,7 +3444,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) util: specifier: ^0.12.4 version: 0.12.4 @@ -3505,7 +3499,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/custom-paper-handler: dependencies: @@ -3584,7 +3578,7 @@ importers: version: 2.2.2(jest@29.6.2) ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/custom-scanner: dependencies: @@ -3657,7 +3651,7 @@ importers: version: 2.2.2(jest@29.6.2) ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) vite: specifier: 4.5.2 version: 4.5.2(@types/node@20.16.0) @@ -3715,7 +3709,7 @@ importers: version: 0.2.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/dev-dock/backend: dependencies: @@ -3797,7 +3791,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/dev-dock/frontend: dependencies: @@ -3906,7 +3900,7 @@ importers: version: 5.3.11(react-dom@18.3.1)(react-is@18.2.0)(react@18.3.1) ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/eslint-plugin-vx: dependencies: @@ -3982,7 +3976,7 @@ importers: version: 18.3.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/fixture-generators: dependencies: @@ -4082,7 +4076,7 @@ importers: version: 0.2.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/fixtures: dependencies: @@ -4131,7 +4125,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/fs: dependencies: @@ -4210,7 +4204,7 @@ importers: version: 0.2.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/fujitsu-thermal-printer: dependencies: @@ -4277,7 +4271,7 @@ importers: version: 2.2.2(jest@29.6.2) ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/grout: dependencies: @@ -4338,7 +4332,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/grout/test-utils: dependencies: @@ -4378,7 +4372,7 @@ importers: version: 1.53.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/hmpb: dependencies: @@ -4496,7 +4490,7 @@ importers: version: 0.2.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) vite: specifier: 4.5.2 version: 4.5.2(@types/node@20.16.0) @@ -4587,7 +4581,7 @@ importers: version: 11.0.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/logging: dependencies: @@ -4669,7 +4663,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/mark-flow-ui: dependencies: @@ -4877,7 +4871,7 @@ importers: version: 5.3.11(react-dom@18.3.1)(react-is@18.2.0)(react@18.3.1) ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) util: specifier: ^0.12.4 version: 0.12.4 @@ -4917,7 +4911,7 @@ importers: version: 2.2.2(jest@29.6.2) ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/monorepo-utils: dependencies: @@ -4987,7 +4981,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) typescript: specifier: 5.6.2 version: 5.6.2 @@ -5045,7 +5039,7 @@ importers: version: 2.2.2(jest@29.6.2) ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/printing: dependencies: @@ -5157,7 +5151,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/test-utils: dependencies: @@ -5239,7 +5233,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) libs/test-utils-vitest: dependencies: @@ -5379,7 +5373,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/types-rs: {} @@ -5658,7 +5652,7 @@ importers: version: 0.2.1 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) util: specifier: ^0.12.4 version: 0.12.4 @@ -5731,7 +5725,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2) libs/utils: dependencies: @@ -5846,7 +5840,7 @@ importers: version: 1.50.0 ts-jest: specifier: 29.1.1 - version: 29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) + version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2) script: dependencies: @@ -5931,7 +5925,6 @@ packages: /@babel/compat-data@7.26.3: resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} engines: {node: '>=6.9.0'} - dev: true /@babel/core@7.20.12: resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} @@ -5999,7 +5992,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/generator@7.22.9: resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} @@ -6059,7 +6051,6 @@ packages: browserslist: 4.24.3 lru-cache: 5.1.1 semver: 6.3.1 - dev: true /@babel/helper-create-class-features-plugin@7.22.10(@babel/core@7.22.9): resolution: {integrity: sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA==} @@ -6073,41 +6064,59 @@ packages: '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.20.5(@babel/core@7.22.9): + /@babel/helper-create-class-features-plugin@7.22.10(@babel/core@7.26.0): + resolution: {integrity: sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.20.5(@babel/core@7.26.0): resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.2.2 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.22.9): + /@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.26.0): resolution: {integrity: sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.9): + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.26.0): resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@5.5.0) @@ -6175,7 +6184,6 @@ packages: '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-module-transforms@7.22.9(@babel/core@7.20.12): resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} @@ -6204,6 +6212,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.5 + /@babel/helper-module-transforms@7.22.9(@babel/core@7.26.0): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + dev: true + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} @@ -6216,7 +6238,6 @@ packages: '@babel/traverse': 7.23.2(supports-color@5.5.0) transitivePeerDependencies: - supports-color - dev: true /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -6244,25 +6265,25 @@ packages: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.22.9): + /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.26.0): resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-wrap-function': 7.22.10 dev: true - /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.9): + /@babel/helper-replace-supers@7.22.9(@babel/core@7.26.0): resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 @@ -6310,7 +6331,6 @@ packages: /@babel/helper-validator-option@7.25.9: resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-wrap-function@7.22.10: resolution: {integrity: sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==} @@ -6337,7 +6357,6 @@ packages: dependencies: '@babel/template': 7.25.9 '@babel/types': 7.26.0 - dev: true /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} @@ -6361,26 +6380,26 @@ packages: dependencies: '@babel/types': 7.26.0 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.9): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.9): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.10(@babel/core@7.22.9) + '@babel/plugin-transform-optional-chaining': 7.22.10(@babel/core@7.26.0) dev: true /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.9): @@ -6417,13 +6436,13 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9): @@ -6434,6 +6453,15 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: @@ -6450,31 +6478,40 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.9): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6488,23 +6525,23 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.9): + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.9): + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6516,6 +6553,15 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -6524,6 +6570,15 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} @@ -6561,6 +6616,15 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -6569,6 +6633,15 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -6577,6 +6650,15 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -6585,6 +6667,15 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -6593,6 +6684,15 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -6601,13 +6701,22 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.9): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6620,6 +6729,16 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.9): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} @@ -6629,186 +6748,186 @@ packages: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.9): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.20.5(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.20.5(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.22.10(@babel/core@7.22.9): + /@babel/plugin-transform-async-generator-functions@7.22.10(@babel/core@7.26.0): resolution: {integrity: sha512-eueE8lvKVzq5wIObKK/7dvoeKJ+xc6TvRn6aysIjS6pSCeLy7S/eVi7pEQknZqyqvzaNKdDtem8nUNTBgDVR2g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.26.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.9) + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.22.10(@babel/core@7.22.9): + /@babel/plugin-transform-block-scoping@7.22.10(@babel/core@7.26.0): resolution: {integrity: sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.9): + /@babel/plugin-transform-classes@7.22.6(@babel/core@7.26.0): resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.26.0) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.5 dev: true - /@babel/plugin-transform-destructuring@7.22.10(@babel/core@7.22.9): + /@babel/plugin-transform-destructuring@7.22.10(@babel/core@7.26.0): resolution: {integrity: sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.10 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) dev: true /@babel/plugin-transform-flow-strip-types@7.19.0(@babel/core@7.22.9): @@ -6822,78 +6941,78 @@ packages: '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6904,167 +7023,179 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.26.0): + resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.5 dev: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-optional-chaining@7.22.10(@babel/core@7.22.9): + /@babel/plugin-transform-optional-chaining@7.22.10(@babel/core@7.26.0): resolution: {integrity: sha512-MMkQqZAZ+MGj+jGTG3OTuhKeBpNcO+0oCEbrGNEaOmiEn+1MzRyQlYsruGiU8RTK3zV6XwrVJTmwiDOyYK6J9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.9) + '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) dev: true - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -7146,75 +7277,75 @@ packages: '@babel/types': 7.22.10 dev: true - /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.9): + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.26.0): resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -7230,46 +7361,46 @@ packages: '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.9): + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.26.0): resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -7284,80 +7415,171 @@ packages: '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.9) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-async-generator-functions': 7.22.10(@babel/core@7.22.9) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-block-scoping': 7.22.10(@babel/core@7.22.9) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.9) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-destructuring': 7.22.10(@babel/core@7.22.9) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-optional-chaining': 7.22.10(@babel/core@7.22.9) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.9) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.9) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.9) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + '@babel/types': 7.22.10 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.26.0) + core-js-compat: 3.32.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-env@7.22.10(@babel/core@7.26.0): + resolution: {integrity: sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) '@babel/types': 7.22.10 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.9) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.9) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.9) + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.26.0) core-js-compat: 3.32.0 semver: 6.3.1 transitivePeerDependencies: @@ -7376,12 +7598,12 @@ packages: '@babel/plugin-transform-flow-strip-types': 7.19.0(@babel/core@7.22.9) dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.9): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/types': 7.22.10 esutils: 2.0.3 @@ -8786,11 +9008,11 @@ packages: exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 + istanbul-reports: 3.1.7 jest-message-util: 29.6.2 jest-util: 29.6.2 jest-worker: 29.6.2 @@ -10171,7 +10393,7 @@ packages: hasBin: true dependencies: '@babel/core': 7.22.9 - '@babel/preset-env': 7.22.10(@babel/core@7.22.9) + '@babel/preset-env': 7.22.10(@babel/core@7.26.0) '@babel/types': 7.22.5 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 7.2.2 @@ -12714,38 +12936,38 @@ packages: resolve: 1.22.4 dev: false - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.9): + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.26.0): resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.9): + /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.26.0) core-js-compat: 3.32.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.9): + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.26.0): resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.9) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true @@ -13078,7 +13300,6 @@ packages: electron-to-chromium: 1.5.74 node-releases: 2.0.19 update-browserslist-db: 1.1.1(browserslist@4.24.3) - dev: true /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -13165,9 +13386,9 @@ packages: '@istanbuljs/schema': 0.1.3 find-up: 5.0.0 foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.6 + istanbul-reports: 3.1.7 rimraf: 3.0.2 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 @@ -13260,7 +13481,6 @@ packages: /caniuse-lite@1.0.30001689: resolution: {integrity: sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==} - dev: true /canvas@2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -14396,7 +14616,6 @@ packages: /electron-to-chromium@1.5.74: resolution: {integrity: sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==} - dev: true /elliptic@6.5.7: resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} @@ -14728,7 +14947,6 @@ packages: /escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - dev: true /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -17164,10 +17382,6 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - /istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -17176,10 +17390,10 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@babel/parser': 7.26.2 '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -17210,7 +17424,7 @@ packages: engines: {node: '>=10'} dependencies: debug: 4.3.4(supports-color@5.5.0) - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -17226,20 +17440,12 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - /istanbul-reports@3.1.7: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - dev: true /jackspeak@2.2.3: resolution: {integrity: sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ==} @@ -18295,7 +18501,7 @@ packages: dependencies: '@babel/parser': 7.26.2 '@babel/types': 7.26.0 - source-map-js: 1.2.0 + source-map-js: 1.2.1 dev: true /make-cancellable-promise@1.3.2: @@ -18929,7 +19135,6 @@ packages: /node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - dev: true /nodemon@3.1.7: resolution: {integrity: sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==} @@ -19660,14 +19865,14 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-styled-syntax@0.4.0(postcss@8.4.38)(typescript@5.6.2): + /postcss-styled-syntax@0.4.0(postcss@8.4.49)(typescript@5.6.2): resolution: {integrity: sha512-LvG++K8LtIyX1Q1mNuZVQYmBo+SCwn90cEkMigo4/I0QwXrEiYt8nPeJ5rrI5Uuh+5w7hRfPyJKlvQdhVZBhUg==} peerDependencies: postcss: ^8.4.21 dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.2) estree-walker: 2.0.2 - postcss: 8.4.38 + postcss: 8.4.49 transitivePeerDependencies: - supports-color - typescript @@ -22332,7 +22537,7 @@ packages: typescript: 5.6.2 dev: true - /ts-jest@29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2): + /ts-jest@29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.18.17)(jest@29.6.2)(typescript@5.6.2): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -22353,7 +22558,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@jest/types': 29.6.1 bs-logger: 0.2.6 esbuild: 0.18.17 @@ -22367,7 +22572,7 @@ packages: typescript: 5.6.2 yargs-parser: 21.1.1 - /ts-jest@29.1.1(@babel/core@7.22.9)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2): + /ts-jest@29.1.1(@babel/core@7.26.0)(@jest/types@29.6.1)(esbuild@0.21.2)(jest@29.6.2)(typescript@5.6.2): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -22388,7 +22593,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.26.0 '@jest/types': 29.6.1 bs-logger: 0.2.6 esbuild: 0.21.2 @@ -22701,7 +22906,6 @@ packages: browserslist: 4.24.3 escalade: 3.2.0 picocolors: 1.1.1 - dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} diff --git a/vitest.config.shared.mts b/vitest.config.shared.mts new file mode 100644 index 0000000000..e89ebfe646 --- /dev/null +++ b/vitest.config.shared.mts @@ -0,0 +1,49 @@ +import * as vitest from 'vitest/config'; + +const isCI = process.env['CI'] === 'true'; + +export const base: vitest.ViteUserConfig = { + test: { + coverage: { + thresholds: { + lines: 100, + branches: 100, + }, + provider: 'istanbul', + include: ['src/**/*.ts'], + }, + minWorkers: isCI ? 1 : undefined, + maxWorkers: isCI ? 6 : undefined, + reporters: isCI ? ['verbose', 'junit'] : [], + outputFile: isCI ? 'reports/junit.xml' : undefined, + }, +}; + +/** + * Merge two objects recursively. Merges only objects, not arrays, strings, etc. + * If the two values cannot be merged, then `b` is used. + */ +function merge(a: any, b: any): any { + if ( + typeof a !== 'object' || + typeof b !== 'object' || + !a || + !b || + Array.isArray(a) || + Array.isArray(b) + ) { + return b; + } + + const result: any = { ...a }; + for (const [key, value] of Object.entries(b)) { + result[key] = merge(a[key], value); + } + return result; +} + +export function defineConfig( + config: vitest.ViteUserConfig +): vitest.ViteUserConfig { + return vitest.defineConfig(merge(base, config)); +}